Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added CRT shader and enabled 4K resolution for Apple TV 4K. #608

Merged
merged 127 commits into from
Dec 17, 2017

Conversation

braindx
Copy link
Contributor

@braindx braindx commented Nov 9, 2017

The CRT shader used is one that I just wrote but I am releasing it into the public domain. It's heavily inspired by Timothy Lottes' shader, but that one is expensive to perform in a single pass and doesn't scale down well. I wanted something that was going to be performant on my Apple TV 4K and still look decent on my phone. Of course, now that it's hooked up, the shader can be replaced with whatever shader you want by replacing the contents of shader_crt_fragment.glsl. There are also a number of settings that can be tweaked at the top of the file.

CRT Filter can be enabled/disabled from the settings menu. It's off by default.

4K was enabled simply by adding a 2x launch image, not a big deal.

This pull request satisfies issue #54. Ideally, one could select from a list of shaders rather than just a single toggle, but it's a start.

JoeMatt and others added 30 commits August 22, 2016 03:04
# Conflicts:
#	PVGB/PVGB.xcodeproj/xcshareddata/xcschemes/PVGB.xcscheme
#	PVGB/PVGB.xcodeproj/xcshareddata/xcschemes/PVGBTV.xcscheme
#	PVGBA/PVGBA.xcodeproj/xcshareddata/xcschemes/PVGBA.xcscheme
#	PVGBA/PVGBA.xcodeproj/xcshareddata/xcschemes/PVGBATV.xcscheme
#	PVGenesis/PVGenesis.xcodeproj/xcshareddata/xcschemes/PVGenesis.xcscheme
#	PVGenesis/PVGenesis.xcodeproj/xcshareddata/xcschemes/PVGenesisTV.xcscheme
#	PVNES/PVNES.xcodeproj/xcshareddata/xcschemes/PVNES.xcscheme
#	PVNES/PVNES.xcodeproj/xcshareddata/xcschemes/PVNESTV.xcscheme
#	PVSNES/PVSNES.xcodeproj/xcshareddata/xcschemes/PVSNES.xcscheme
#	PVSNES/PVSNES.xcodeproj/xcshareddata/xcschemes/PVSNESTV.xcscheme
#	PVSupport/PVSupport.xcodeproj/project.pbxproj
#	PVSupport/PVSupport.xcodeproj/xcshareddata/xcschemes/PVSupport.xcscheme
#	PVSupport/PVSupport.xcodeproj/xcshareddata/xcschemes/PVSupportTV.xcscheme
#	Provenance.xcodeproj/xcshareddata/xcschemes/Provenance-Release.xcscheme
#	Provenance.xcodeproj/xcshareddata/xcschemes/Provenance.xcscheme
#	Provenance.xcodeproj/xcshareddata/xcschemes/ProvenanceTV-Release.xcscheme
#	Provenance.xcodeproj/xcshareddata/xcschemes/ProvenanceTV.xcscheme
#	Provenance/Provenance-Info.plist
#	ProvenanceTV/Info.plist
# Conflicts:
#	PVGB/PVGB.xcodeproj/xcshareddata/xcschemes/PVGB.xcscheme
#	PVGB/PVGB.xcodeproj/xcshareddata/xcschemes/PVGBTV.xcscheme
#	PVGBA/PVGBA.xcodeproj/xcshareddata/xcschemes/PVGBA.xcscheme
#	PVGBA/PVGBA.xcodeproj/xcshareddata/xcschemes/PVGBATV.xcscheme
#	PVGenesis/PVGenesis.xcodeproj/xcshareddata/xcschemes/PVGenesis.xcscheme
#	PVGenesis/PVGenesis.xcodeproj/xcshareddata/xcschemes/PVGenesisTV.xcscheme
#	PVNES/PVNES.xcodeproj/xcshareddata/xcschemes/PVNES.xcscheme
#	PVNES/PVNES.xcodeproj/xcshareddata/xcschemes/PVNESTV.xcscheme
#	PVSNES/PVSNES.xcodeproj/xcshareddata/xcschemes/PVSNES.xcscheme
#	PVSNES/PVSNES.xcodeproj/xcshareddata/xcschemes/PVSNESTV.xcscheme
#	PVSupport/PVSupport.xcodeproj/project.pbxproj
#	PVSupport/PVSupport.xcodeproj/xcshareddata/xcschemes/PVSupport tvOS.xcscheme
#	PVSupport/PVSupport.xcodeproj/xcshareddata/xcschemes/PVSupport.xcscheme
#	PVSupport/PVSupport/PVSupport.h
#	Provenance.xcodeproj/xcshareddata/xcschemes/ProvenanceTV-Release.xcscheme
#	Provenance.xcodeproj/xcshareddata/xcschemes/ProvenanceTV.xcscheme
#	Provenance.xcworkspace/contents.xcworkspacedata
#	Provenance/Provenance-Info.plist
#	Provenance/Resources/systems.plist
#	ProvenanceTV/Info.plist
# Conflicts:
#	Provenance.xcworkspace/contents.xcworkspacedata
#	Provenance/Provenance-Info.plist
These changes will require a way for a core to specfify these overrides
# Conflicts:
#	Provenance.xcodeproj/project.pbxproj
#	Provenance/Emulator/PVEmulatorConfiguration.m
#	Provenance/Emulator/PVEmulatorConstants.h
#	Provenance/Emulator/PVEmulatorConstants.m
#	Provenance/Emulator/PVGLViewController.m
Removed CDAFReader_SF.cpp which was causing link issue for missing libsnd binary for arm. It built fine with static lib, perhaps the linker doesn’t care about missing symbols when making static libs since it’s possible they’ll be combined with other static libs which resolve the missing symbols?
Also threw in the controller methods for the NEC’s
For PSX controller, extended gamepad:
Assigned Select key assignment to trigger L2
Reassigned Start key to trigger R2
These tests fail after the first game is loaded, unloaded, and another game loaded. There are static values here that should be reset between loads since we’re destroying and making new instancse of the mednafen core. Whatever reason that’s not working right, and these tests don’t pre-init, so they fail. Screw em.
Fix for game stutter. mednafenCoreTiming flutters on init before settling and we only read it after the first frame wot set the current->gameInterval in the super class. This work around resets the value after a few frames.
…mednafen

# Conflicts:
#	Provenance.xcodeproj/project.pbxproj
JoeMatt and others added 11 commits April 18, 2017 01:49
unzip status shows filename
if bios path isnt’ existing, create it
# Conflicts:
#	PVGB/PVGB.xcodeproj/xcshareddata/xcschemes/PVGB.xcscheme
#	PVGB/PVGB.xcodeproj/xcshareddata/xcschemes/PVGBTV.xcscheme
#	PVGBA/PVGBA.xcodeproj/project.pbxproj
#	PVGBA/PVGBA.xcodeproj/xcshareddata/xcschemes/PVGBA.xcscheme
#	PVGBA/PVGBA.xcodeproj/xcshareddata/xcschemes/PVGBATV.xcscheme
#	PVPicoDrive/PVPicoDrive.xcodeproj/project.pbxproj
#	PVProSystem/PVProSystem.xcodeproj/project.pbxproj
#	PVSNES/PVSNES.xcodeproj/project.pbxproj
#	PVSNES/PVSNES.xcodeproj/xcshareddata/xcschemes/PVSNES.xcscheme
#	PVSNES/PVSNES.xcodeproj/xcshareddata/xcschemes/PVSNESTV.xcscheme
#	PVStella/PVStella.xcodeproj/project.pbxproj
#	PVStella/PVStella.xcodeproj/xcshareddata/xcschemes/Stella tvOS.xcscheme
#	PVStella/PVStella.xcodeproj/xcshareddata/xcschemes/Stella.xcscheme
#	PVSupport/PVSupport.xcodeproj/xcshareddata/xcschemes/PVSupport tvOS.xcscheme
#	PVSupport/PVSupport.xcodeproj/xcshareddata/xcschemes/PVSupport.xcscheme
#	Provenance.xcodeproj/xcshareddata/xcschemes/Provenance-Release.xcscheme
#	Provenance.xcodeproj/xcshareddata/xcschemes/Provenance.xcscheme
#	Provenance.xcodeproj/xcshareddata/xcschemes/ProvenanceTV-Release.xcscheme
#	Provenance.xcodeproj/xcshareddata/xcschemes/ProvenanceTV.xcscheme
#	Provenance/Controller/PVControllerViewController.m
#	Provenance/Emulator/PVEmulatorViewController.m
#	Provenance/Provenance-Info.plist
Only trigger a library refresh if a rom lookup was triggered.
@appletv4
Copy link

Been waiting 2 years for this , thanks
@jasarien release the kraken

@appletv4
Copy link

Testing this now
Btw they changed the way you choose a branch in Xcode 9 very confusing

The crt filter looks and works great , is better with it on

@DanFessler
Copy link

just tested this locally myself and it runs and looks great. Definitely think this should be merged in

JoeMatt and others added 9 commits December 7, 2017 01:32
It was leaving the ‘.’ as part of the match case on the file. Fixed extension deletion on the cue
The 800 core initilaizes the var Sound_enabled to true on it’s static, but then sets to false on deinit. On the next init, unless you set ‘-sound’ argv that static is still false on reinit. Which cuaes it to not initialize it’s sound buffers. When we go to reneder sound it crashes on the second time the core is used. Why they init a static to 1 and later reset it to 0 I have no fucking clue.
Speed up app launch (specially on large libraries)
@JoeMatt
Copy link
Member

JoeMatt commented Dec 7, 2017

hm, I merged this branch into a testing branch on my fork and now it's showing my forks commits on this PR for some reason. I've done this method before, not sure what went wrong here.

@JoeMatt
Copy link
Member

JoeMatt commented Dec 7, 2017

Did the same steps on #604 into my testing branch and that PR isn't showing my merge history. Not sure what happened here.

@JoeMatt JoeMatt mentioned this pull request Dec 17, 2017
@jasarien
Copy link
Member

jasarien commented Dec 17, 2017

@joe I’m a bit confused as to whether or not the mednafen PR included the CRT shader code or not. It’s not showing up in the list of commits here: https://github.com/jasarien/Provenance/pull/566/commits

It looks to me like you merged the mednafen branch into this one, rather than the other way around.

@jasarien jasarien merged commit 283f315 into Provenance-Emu:master Dec 17, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants