Cocoa Port (OpenEmu Plug-in): Add OpenGL as an option for the emulated GPU rendering engine.
- Now that we can use OpenGL, we can increase the 3D render scaling to up to 8x for machines that can handle it. - Also add the Fragment Sampling Hack option for SoftRasterizer for certain games that need it to 'fix' texture rendering. - Also add the Smooth Textures option for OpenGL for games that can benefit from it.
This commit is contained in:
parent
e90ac6cc43
commit
3c04e8f4c7
|
@ -172,7 +172,6 @@ GPU3DInterface *core3DList[GPU_3D_RENDERER_COUNT+1] = {
|
|||
bool isTempContextCreated = OSXOpenGLRendererInit();
|
||||
if (isTempContextCreated)
|
||||
{
|
||||
CGLContextObj prevContext = CGLGetCurrentContext();
|
||||
OSXOpenGLRendererBegin();
|
||||
|
||||
GLint maxSamplesOGL = 0;
|
||||
|
@ -187,7 +186,6 @@ GPU3DInterface *core3DList[GPU_3D_RENDERER_COUNT+1] = {
|
|||
|
||||
OSXOpenGLRendererEnd();
|
||||
DestroyOpenGLRenderer();
|
||||
CGLSetCurrentContext(prevContext);
|
||||
}
|
||||
|
||||
return self;
|
||||
|
@ -1817,6 +1815,7 @@ bool GPUEventHandlerAsync::GetRender3DNeedsFinish()
|
|||
#pragma mark -
|
||||
|
||||
CGLContextObj OSXOpenGLRendererContext = NULL;
|
||||
CGLContextObj OSXOpenGLRendererContextPrev = NULL;
|
||||
SILENCE_DEPRECATION_MACOS_10_7( CGLPBufferObj OSXOpenGLRendererPBuffer = NULL );
|
||||
|
||||
bool OSXOpenGLRendererInit()
|
||||
|
@ -1832,6 +1831,7 @@ bool OSXOpenGLRendererInit()
|
|||
|
||||
bool OSXOpenGLRendererBegin()
|
||||
{
|
||||
OSXOpenGLRendererContextPrev = CGLGetCurrentContext();
|
||||
CGLSetCurrentContext(OSXOpenGLRendererContext);
|
||||
|
||||
return true;
|
||||
|
@ -1839,7 +1839,7 @@ bool OSXOpenGLRendererBegin()
|
|||
|
||||
void OSXOpenGLRendererEnd()
|
||||
{
|
||||
|
||||
CGLSetCurrentContext(OSXOpenGLRendererContextPrev);
|
||||
}
|
||||
|
||||
bool OSXOpenGLRendererFramebufferDidResize(const bool isFBOSupported, size_t w, size_t h)
|
||||
|
@ -1944,11 +1944,14 @@ void DestroyOpenGLRenderer()
|
|||
return;
|
||||
}
|
||||
|
||||
OSXOpenGLRendererEnd();
|
||||
|
||||
SILENCE_DEPRECATION_MACOS_10_7( CGLReleasePBuffer(OSXOpenGLRendererPBuffer) );
|
||||
OSXOpenGLRendererPBuffer = NULL;
|
||||
|
||||
CGLReleaseContext(OSXOpenGLRendererContext);
|
||||
OSXOpenGLRendererContext = NULL;
|
||||
OSXOpenGLRendererContextPrev = NULL;
|
||||
}
|
||||
|
||||
void RequestOpenGLRenderer_3_2(bool request_3_2)
|
||||
|
|
|
@ -88,14 +88,24 @@ class OE_OGLDisplayPresenter;
|
|||
#define NDSDISPLAYMODE_NAMEKEY_HUD_REALTIMECLOCK "Real-Time Clock"
|
||||
#define NDSDISPLAYMODE_NAMEKEY_HUD_INPUT "Input"
|
||||
|
||||
#define NDSDISPLAYMODE_NAMEKEY_GPU_ENGINE_SOFTWARE "Use SoftRasterizer Engine"
|
||||
#define NDSDISPLAYMODE_NAMEKEY_GPU_ENGINE_OPENGL "Use OpenGL Engine"
|
||||
|
||||
#define NDSDISPLAYMODE_NAMEKEY_3D_RENDERSCALING_1X "1x Native Resolution"
|
||||
#define NDSDISPLAYMODE_NAMEKEY_3D_RENDERSCALING_2X "2x Resolution"
|
||||
#define NDSDISPLAYMODE_NAMEKEY_3D_RENDERSCALING_3X "3x Resolution"
|
||||
#define NDSDISPLAYMODE_NAMEKEY_3D_RENDERSCALING_4X "4x Resolution"
|
||||
#define NDSDISPLAYMODE_NAMEKEY_3D_RENDERSCALING_5X "5x Resolution"
|
||||
#define NDSDISPLAYMODE_NAMEKEY_3D_RENDERSCALING_6X "6x Resolution"
|
||||
#define NDSDISPLAYMODE_NAMEKEY_3D_RENDERSCALING_7X "7x Resolution"
|
||||
#define NDSDISPLAYMODE_NAMEKEY_3D_RENDERSCALING_8X "8x Resolution"
|
||||
|
||||
#define NDSDISPLAYMODE_NAMEKEY_3D_TEXTURESCALING_1X "1x Native Texture"
|
||||
#define NDSDISPLAYMODE_NAMEKEY_3D_TEXTURESCALING_2X "2x Texture Upscaling"
|
||||
#define NDSDISPLAYMODE_NAMEKEY_3D_TEXTURESCALING_4X "4x Texture Upscaling"
|
||||
|
||||
#define NDSDISPLAYMODE_NAMEKEY_GPU_SOFTWARE_FRAGMENTSAMPLINGHACK "Fragment Sampling Hack"
|
||||
#define NDSDISPLAYMODE_NAMEKEY_GPU_OPENGL_SMOOTHTEXTURES "Smooth Textures"
|
||||
|
||||
#define NDSDISPLAYMODE_PREFKEY_DISPLAYMODE "displayMode"
|
||||
#define NDSDISPLAYMODE_PREFKEY_LAYOUT "layout"
|
||||
|
@ -113,6 +123,9 @@ class OE_OGLDisplayPresenter;
|
|||
#define NDSDISPLAYMODE_PREFKEY_HUD_CPULOADAVERAGE "hud_cpuloadaverage"
|
||||
#define NDSDISPLAYMODE_PREFKEY_HUD_REALTIMECLOCK "hud_realtimeclock"
|
||||
#define NDSDISPLAYMODE_PREFKEY_HUD_INPUT "hud_input"
|
||||
#define NDSDISPLAYMODE_PREFKEY_GPU_ENGINE "gpu_engine"
|
||||
#define NDSDISPLAYMODE_PREFKEY_GPU_SOFTWARE_FRAGMENTSAMPLINGHACK "gpu_software_fragmentsamplinghack"
|
||||
#define NDSDISPLAYMODE_PREFKEY_GPU_OPENGL_SMOOTHTEXTURES "gpu_opengl_smoothtextures"
|
||||
#define NDSDISPLAYMODE_PREFKEY_3D_RENDERSCALING "3D_renderscaling"
|
||||
#define NDSDISPLAYMODE_PREFKEY_3D_TEXTURESCALING "3D_texturescaling"
|
||||
|
||||
|
@ -164,10 +177,20 @@ enum NDSDisplayOptionID
|
|||
NDSDisplayOptionID_HUD_RealTimeClock,
|
||||
NDSDisplayOptionID_HUD_Input,
|
||||
|
||||
NDSDisplayOptionID_GPU_Engine_Software,
|
||||
NDSDisplayOptionID_GPU_Engine_OpenGL,
|
||||
|
||||
NDSDisplayOptionID_GPU_Software_FragmentSamplingHack,
|
||||
NDSDisplayOptionID_GPU_OpenGL_SmoothTextures,
|
||||
|
||||
NDSDisplayOptionID_3D_RenderScaling_1x,
|
||||
NDSDisplayOptionID_3D_RenderScaling_2x,
|
||||
NDSDisplayOptionID_3D_RenderScaling_3x,
|
||||
NDSDisplayOptionID_3D_RenderScaling_4x,
|
||||
NDSDisplayOptionID_3D_RenderScaling_5x,
|
||||
NDSDisplayOptionID_3D_RenderScaling_6x,
|
||||
NDSDisplayOptionID_3D_RenderScaling_7x,
|
||||
NDSDisplayOptionID_3D_RenderScaling_8x,
|
||||
|
||||
NDSDisplayOptionID_3D_TextureScaling_1x,
|
||||
NDSDisplayOptionID_3D_TextureScaling_2x,
|
||||
|
@ -211,10 +234,17 @@ enum NDSDisplayOptionID
|
|||
(1ULL << NDSDisplayOptionID_VideoSourceTouch_ForceMain) | \
|
||||
(1ULL << NDSDisplayOptionID_VideoSourceTouch_ForceSub))
|
||||
|
||||
#define NDSDISPLAYMODE_GROUPBITMASK_GPUENGINE ((1ULL << NDSDisplayOptionID_GPU_Engine_Software) | \
|
||||
(1ULL << NDSDisplayOptionID_GPU_Engine_OpenGL))
|
||||
|
||||
#define NDSDISPLAYMODE_GROUPBITMASK_RENDERSCALING ((1ULL << NDSDisplayOptionID_3D_RenderScaling_1x) | \
|
||||
(1ULL << NDSDisplayOptionID_3D_RenderScaling_2x) | \
|
||||
(1ULL << NDSDisplayOptionID_3D_RenderScaling_3x) | \
|
||||
(1ULL << NDSDisplayOptionID_3D_RenderScaling_4x))
|
||||
(1ULL << NDSDisplayOptionID_3D_RenderScaling_4x) | \
|
||||
(1ULL << NDSDisplayOptionID_3D_RenderScaling_5x) | \
|
||||
(1ULL << NDSDisplayOptionID_3D_RenderScaling_6x) | \
|
||||
(1ULL << NDSDisplayOptionID_3D_RenderScaling_7x) | \
|
||||
(1ULL << NDSDisplayOptionID_3D_RenderScaling_8x))
|
||||
|
||||
#define NDSDISPLAYMODE_GROUPBITMASK_TEXTURESCALING ((1ULL << NDSDisplayOptionID_3D_TextureScaling_1x) | \
|
||||
(1ULL << NDSDisplayOptionID_3D_TextureScaling_2x) | \
|
||||
|
|
|
@ -85,10 +85,20 @@ static const OEMenuItemDesc kDisplayModeItem[NDSDisplayOptionID_Count] = {
|
|||
{ @NDSDISPLAYMODE_NAMEKEY_HUD_REALTIMECLOCK, @NDSDISPLAYMODE_PREFKEY_HUD_REALTIMECLOCK, 0, nil },
|
||||
{ @NDSDISPLAYMODE_NAMEKEY_HUD_INPUT, @NDSDISPLAYMODE_PREFKEY_HUD_INPUT, 0, nil },
|
||||
|
||||
{ @NDSDISPLAYMODE_NAMEKEY_GPU_ENGINE_SOFTWARE, @NDSDISPLAYMODE_PREFKEY_GPU_ENGINE, NDSDISPLAYMODE_GROUPBITMASK_GPUENGINE, nil },
|
||||
{ @NDSDISPLAYMODE_NAMEKEY_GPU_ENGINE_OPENGL, @NDSDISPLAYMODE_PREFKEY_GPU_ENGINE, NDSDISPLAYMODE_GROUPBITMASK_GPUENGINE, nil },
|
||||
|
||||
{ @NDSDISPLAYMODE_NAMEKEY_GPU_SOFTWARE_FRAGMENTSAMPLINGHACK, @NDSDISPLAYMODE_PREFKEY_GPU_SOFTWARE_FRAGMENTSAMPLINGHACK, 0, nil },
|
||||
{ @NDSDISPLAYMODE_NAMEKEY_GPU_OPENGL_SMOOTHTEXTURES, @NDSDISPLAYMODE_PREFKEY_GPU_OPENGL_SMOOTHTEXTURES, 0, nil },
|
||||
|
||||
{ @NDSDISPLAYMODE_NAMEKEY_3D_RENDERSCALING_1X, @NDSDISPLAYMODE_PREFKEY_3D_RENDERSCALING, NDSDISPLAYMODE_GROUPBITMASK_RENDERSCALING, nil },
|
||||
{ @NDSDISPLAYMODE_NAMEKEY_3D_RENDERSCALING_2X, @NDSDISPLAYMODE_PREFKEY_3D_RENDERSCALING, NDSDISPLAYMODE_GROUPBITMASK_RENDERSCALING, nil },
|
||||
{ @NDSDISPLAYMODE_NAMEKEY_3D_RENDERSCALING_3X, @NDSDISPLAYMODE_PREFKEY_3D_RENDERSCALING, NDSDISPLAYMODE_GROUPBITMASK_RENDERSCALING, nil },
|
||||
{ @NDSDISPLAYMODE_NAMEKEY_3D_RENDERSCALING_4X, @NDSDISPLAYMODE_PREFKEY_3D_RENDERSCALING, NDSDISPLAYMODE_GROUPBITMASK_RENDERSCALING, nil },
|
||||
{ @NDSDISPLAYMODE_NAMEKEY_3D_RENDERSCALING_5X, @NDSDISPLAYMODE_PREFKEY_3D_RENDERSCALING, NDSDISPLAYMODE_GROUPBITMASK_RENDERSCALING, nil },
|
||||
{ @NDSDISPLAYMODE_NAMEKEY_3D_RENDERSCALING_6X, @NDSDISPLAYMODE_PREFKEY_3D_RENDERSCALING, NDSDISPLAYMODE_GROUPBITMASK_RENDERSCALING, nil },
|
||||
{ @NDSDISPLAYMODE_NAMEKEY_3D_RENDERSCALING_7X, @NDSDISPLAYMODE_PREFKEY_3D_RENDERSCALING, NDSDISPLAYMODE_GROUPBITMASK_RENDERSCALING, nil },
|
||||
{ @NDSDISPLAYMODE_NAMEKEY_3D_RENDERSCALING_8X, @NDSDISPLAYMODE_PREFKEY_3D_RENDERSCALING, NDSDISPLAYMODE_GROUPBITMASK_RENDERSCALING, nil },
|
||||
|
||||
{ @NDSDISPLAYMODE_NAMEKEY_3D_TEXTURESCALING_1X, @NDSDISPLAYMODE_PREFKEY_3D_TEXTURESCALING, NDSDISPLAYMODE_GROUPBITMASK_TEXTURESCALING, nil },
|
||||
{ @NDSDISPLAYMODE_NAMEKEY_3D_TEXTURESCALING_2X, @NDSDISPLAYMODE_PREFKEY_3D_TEXTURESCALING, NDSDISPLAYMODE_GROUPBITMASK_TEXTURESCALING, nil },
|
||||
|
@ -104,6 +114,7 @@ static const uint64_t kDisplayModeStatesDefault = (1LLU << NDSDisplayOptionID_Mo
|
|||
(1LLU << NDSDisplayOptionID_VideoSourceTouch_NDS) |
|
||||
(1LLU << NDSDisplayOptionID_HUD_ExecutionSpeed) |
|
||||
(1LLU << NDSDisplayOptionID_HUD_VideoFPS) |
|
||||
(1LLU << NDSDisplayOptionID_GPU_Engine_Software) |
|
||||
(1LLU << NDSDisplayOptionID_3D_RenderScaling_1x) |
|
||||
(1LLU << NDSDisplayOptionID_3D_TextureScaling_1x);
|
||||
|
||||
|
@ -272,10 +283,20 @@ volatile bool execute = true;
|
|||
[NSNumber numberWithInteger:NDSDisplayOptionID_HUD_RealTimeClock], kDisplayModeItem[NDSDisplayOptionID_HUD_RealTimeClock].nameKey,
|
||||
[NSNumber numberWithInteger:NDSDisplayOptionID_HUD_Input], kDisplayModeItem[NDSDisplayOptionID_HUD_Input].nameKey,
|
||||
|
||||
[NSNumber numberWithInteger:NDSDisplayOptionID_GPU_Engine_Software], kDisplayModeItem[NDSDisplayOptionID_GPU_Engine_Software].nameKey,
|
||||
[NSNumber numberWithInteger:NDSDisplayOptionID_GPU_Engine_OpenGL], kDisplayModeItem[NDSDisplayOptionID_GPU_Engine_OpenGL].nameKey,
|
||||
|
||||
[NSNumber numberWithInteger:NDSDisplayOptionID_GPU_Software_FragmentSamplingHack], kDisplayModeItem[NDSDisplayOptionID_GPU_Software_FragmentSamplingHack].nameKey,
|
||||
[NSNumber numberWithInteger:NDSDisplayOptionID_GPU_OpenGL_SmoothTextures], kDisplayModeItem[NDSDisplayOptionID_GPU_OpenGL_SmoothTextures].nameKey,
|
||||
|
||||
[NSNumber numberWithInteger:NDSDisplayOptionID_3D_RenderScaling_1x], kDisplayModeItem[NDSDisplayOptionID_3D_RenderScaling_1x].nameKey,
|
||||
[NSNumber numberWithInteger:NDSDisplayOptionID_3D_RenderScaling_2x], kDisplayModeItem[NDSDisplayOptionID_3D_RenderScaling_2x].nameKey,
|
||||
[NSNumber numberWithInteger:NDSDisplayOptionID_3D_RenderScaling_3x], kDisplayModeItem[NDSDisplayOptionID_3D_RenderScaling_3x].nameKey,
|
||||
[NSNumber numberWithInteger:NDSDisplayOptionID_3D_RenderScaling_4x], kDisplayModeItem[NDSDisplayOptionID_3D_RenderScaling_4x].nameKey,
|
||||
[NSNumber numberWithInteger:NDSDisplayOptionID_3D_RenderScaling_5x], kDisplayModeItem[NDSDisplayOptionID_3D_RenderScaling_5x].nameKey,
|
||||
[NSNumber numberWithInteger:NDSDisplayOptionID_3D_RenderScaling_6x], kDisplayModeItem[NDSDisplayOptionID_3D_RenderScaling_6x].nameKey,
|
||||
[NSNumber numberWithInteger:NDSDisplayOptionID_3D_RenderScaling_7x], kDisplayModeItem[NDSDisplayOptionID_3D_RenderScaling_7x].nameKey,
|
||||
[NSNumber numberWithInteger:NDSDisplayOptionID_3D_RenderScaling_8x], kDisplayModeItem[NDSDisplayOptionID_3D_RenderScaling_8x].nameKey,
|
||||
|
||||
[NSNumber numberWithInteger:NDSDisplayOptionID_3D_TextureScaling_1x], kDisplayModeItem[NDSDisplayOptionID_3D_TextureScaling_1x].nameKey,
|
||||
[NSNumber numberWithInteger:NDSDisplayOptionID_3D_TextureScaling_2x], kDisplayModeItem[NDSDisplayOptionID_3D_TextureScaling_2x].nameKey,
|
||||
|
@ -328,6 +349,8 @@ volatile bool execute = true;
|
|||
cdsGPU = [[CocoaDSGPU alloc] init];
|
||||
[cdsGPU setRender3DThreads:0]; // Pass 0 to automatically set the number of rendering threads
|
||||
[cdsGPU setRender3DRenderingEngine:CORE3DLIST_SWRASTERIZE];
|
||||
[cdsGPU setRender3DFragmentSamplingHack:NO];
|
||||
[cdsGPU setRender3DTextureSmoothing:NO];
|
||||
[cdsGPU setRender3DTextureScalingFactor:1];
|
||||
[cdsGPU setGpuScale:1];
|
||||
[cdsGPU setGpuColorFormat:NDSColorFormat_BGR666_Rev];
|
||||
|
@ -471,6 +494,10 @@ void UpdateDisplayPropertiesFromStates(uint64_t displayModeStates, ClientDisplay
|
|||
else if ( DISPLAYMODE_STATEBIT_CHECK(displayModeStates, NDSDisplayOptionID_3D_RenderScaling_2x) ) _selectedRenderScaling = 2;
|
||||
else if ( DISPLAYMODE_STATEBIT_CHECK(displayModeStates, NDSDisplayOptionID_3D_RenderScaling_3x) ) _selectedRenderScaling = 3;
|
||||
else if ( DISPLAYMODE_STATEBIT_CHECK(displayModeStates, NDSDisplayOptionID_3D_RenderScaling_4x) ) _selectedRenderScaling = 4;
|
||||
else if ( DISPLAYMODE_STATEBIT_CHECK(displayModeStates, NDSDisplayOptionID_3D_RenderScaling_5x) ) _selectedRenderScaling = 5;
|
||||
else if ( DISPLAYMODE_STATEBIT_CHECK(displayModeStates, NDSDisplayOptionID_3D_RenderScaling_6x) ) _selectedRenderScaling = 6;
|
||||
else if ( DISPLAYMODE_STATEBIT_CHECK(displayModeStates, NDSDisplayOptionID_3D_RenderScaling_7x) ) _selectedRenderScaling = 7;
|
||||
else if ( DISPLAYMODE_STATEBIT_CHECK(displayModeStates, NDSDisplayOptionID_3D_RenderScaling_8x) ) _selectedRenderScaling = 8;
|
||||
|
||||
if ( DISPLAYMODE_STATEBIT_CHECK(displayModeStates, NDSDisplayOptionID_3D_TextureScaling_1x) ) _selectedTextureScaling = 1;
|
||||
else if ( DISPLAYMODE_STATEBIT_CHECK(displayModeStates, NDSDisplayOptionID_3D_TextureScaling_2x) ) _selectedTextureScaling = 2;
|
||||
|
@ -611,6 +638,19 @@ void UpdateDisplayPropertiesFromStates(uint64_t displayModeStates, ClientDisplay
|
|||
_cdp->CommitPresenterProperties(newProps);
|
||||
_cdp->SetupPresenterProperties();
|
||||
|
||||
if ( DISPLAYMODE_STATEBIT_CHECK(appliedState, NDSDisplayOptionID_GPU_Engine_Software) )
|
||||
{
|
||||
[cdsGPU setRender3DRenderingEngine:CORE3DLIST_SWRASTERIZE];
|
||||
[cdsGPU setGpuColorFormat:NDSColorFormat_BGR666_Rev];
|
||||
}
|
||||
else if ( DISPLAYMODE_STATEBIT_CHECK(appliedState, NDSDisplayOptionID_GPU_Engine_OpenGL) )
|
||||
{
|
||||
[cdsGPU setRender3DRenderingEngine:CORE3DLIST_OPENGL];
|
||||
[cdsGPU setGpuColorFormat:NDSColorFormat_BGR888_Rev];
|
||||
}
|
||||
|
||||
[cdsGPU setRender3DFragmentSamplingHack:(DISPLAYMODE_STATEBIT_CHECK(appliedState, NDSDisplayOptionID_GPU_Software_FragmentSamplingHack)) ? YES : NO];
|
||||
[cdsGPU setRender3DTextureSmoothing:(DISPLAYMODE_STATEBIT_CHECK(appliedState, NDSDisplayOptionID_GPU_OpenGL_SmoothTextures)) ? YES : NO];
|
||||
[cdsGPU setGpuScale:_selectedRenderScaling];
|
||||
[cdsGPU setRender3DTextureScalingFactor:_selectedTextureScaling];
|
||||
|
||||
|
@ -682,6 +722,7 @@ void UpdateDisplayPropertiesFromStates(uint64_t displayModeStates, ClientDisplay
|
|||
s = [self switchDisplayModeState:s nameKey:[userDefaultsDisplayMode objectForKey:@NDSDISPLAYMODE_PREFKEY_SEPARATION]];
|
||||
s = [self switchDisplayModeState:s nameKey:[userDefaultsDisplayMode objectForKey:@NDSDISPLAYMODE_PREFKEY_VIDEOSOURCE_MAIN]];
|
||||
s = [self switchDisplayModeState:s nameKey:[userDefaultsDisplayMode objectForKey:@NDSDISPLAYMODE_PREFKEY_VIDEOSOURCE_TOUCH]];
|
||||
s = [self switchDisplayModeState:s nameKey:[userDefaultsDisplayMode objectForKey:@NDSDISPLAYMODE_PREFKEY_GPU_ENGINE]];
|
||||
s = [self switchDisplayModeState:s nameKey:[userDefaultsDisplayMode objectForKey:@NDSDISPLAYMODE_PREFKEY_3D_RENDERSCALING]];
|
||||
s = [self switchDisplayModeState:s nameKey:[userDefaultsDisplayMode objectForKey:@NDSDISPLAYMODE_PREFKEY_3D_TEXTURESCALING]];
|
||||
|
||||
|
@ -695,6 +736,9 @@ void UpdateDisplayPropertiesFromStates(uint64_t displayModeStates, ClientDisplay
|
|||
s = [self setDisplayModeState:s optionID:NDSDisplayOptionID_HUD_RealTimeClock state:[userDefaultsDisplayMode objectForKey:@NDSDISPLAYMODE_PREFKEY_HUD_REALTIMECLOCK]];
|
||||
s = [self setDisplayModeState:s optionID:NDSDisplayOptionID_HUD_Input state:[userDefaultsDisplayMode objectForKey:@NDSDISPLAYMODE_PREFKEY_HUD_INPUT]];
|
||||
|
||||
s = [self setDisplayModeState:s optionID:NDSDisplayOptionID_GPU_Software_FragmentSamplingHack state:[userDefaultsDisplayMode objectForKey:@NDSDISPLAYMODE_PREFKEY_GPU_SOFTWARE_FRAGMENTSAMPLINGHACK]];
|
||||
s = [self setDisplayModeState:s optionID:NDSDisplayOptionID_GPU_OpenGL_SmoothTextures state:[userDefaultsDisplayMode objectForKey:@NDSDISPLAYMODE_PREFKEY_GPU_OPENGL_SMOOTHTEXTURES]];
|
||||
|
||||
[self setNdsDisplayMode:s];
|
||||
_displayModeStatesApplied = _displayModeStatesPending;
|
||||
|
||||
|
@ -1192,85 +1236,98 @@ void UpdateDisplayPropertiesFromStates(uint64_t displayModeStates, ClientDisplay
|
|||
|
||||
- (NSArray<NSDictionary<NSString *, id> *> *) displayModes
|
||||
{
|
||||
const uint64_t currentDisplayMode = _displayModeStatesPending;
|
||||
const uint64_t s = _displayModeStatesPending;
|
||||
|
||||
// Generate each display option submenu.
|
||||
NSArray< NSDictionary<NSString *, id> *> *displayModeMenu =
|
||||
[NSArray arrayWithObjects:
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Mode_DualScreen states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Mode_Main states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Mode_Touch states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Mode_DualScreen states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Mode_Main states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Mode_Touch states:s],
|
||||
nil];
|
||||
|
||||
NSArray< NSDictionary<NSString *, id> *> *displayRotationMenu =
|
||||
[NSArray arrayWithObjects:
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Rotation_0 states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Rotation_90 states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Rotation_180 states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Rotation_270 states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Rotation_0 states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Rotation_90 states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Rotation_180 states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Rotation_270 states:s],
|
||||
nil];
|
||||
|
||||
NSArray< NSDictionary<NSString *, id> *> *displayLayoutMenu =
|
||||
[NSArray arrayWithObjects:
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Layout_Vertical states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Layout_Horizontal states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Layout_Hybrid_2_1 states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Layout_Hybrid_16_9 states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Layout_Hybrid_16_10 states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Layout_Vertical states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Layout_Horizontal states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Layout_Hybrid_2_1 states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Layout_Hybrid_16_9 states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Layout_Hybrid_16_10 states:s],
|
||||
nil];
|
||||
|
||||
NSArray< NSDictionary<NSString *, id> *> *displayOrderMenu =
|
||||
[NSArray arrayWithObjects:
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Order_MainFirst states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Order_TouchFirst states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Order_MainFirst states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Order_TouchFirst states:s],
|
||||
nil];
|
||||
|
||||
NSArray< NSDictionary<NSString *, id> *> *displaySeparationMenu =
|
||||
[NSArray arrayWithObjects:
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Separation_0 states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Separation_50 states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Separation_100 states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Separation_150 states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Separation_200 states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Separation_0 states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Separation_50 states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Separation_100 states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Separation_150 states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_Separation_200 states:s],
|
||||
nil];
|
||||
|
||||
NSArray< NSDictionary<NSString *, id> *> *displayVideoSourceMenu =
|
||||
[NSArray arrayWithObjects:
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_VideoSourceMain_None states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_VideoSourceMain_NDS states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_VideoSourceMain_ForceMain states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_VideoSourceMain_ForceSub states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_VideoSourceMain_None states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_VideoSourceMain_NDS states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_VideoSourceMain_ForceMain states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_VideoSourceMain_ForceSub states:s],
|
||||
[NSDictionary dictionaryWithObjectsAndKeys:@"---", OEGameCoreDisplayModeSeparatorItemKey, nil],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_VideoSourceTouch_None states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_VideoSourceTouch_NDS states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_VideoSourceTouch_ForceMain states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_VideoSourceTouch_ForceSub states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_VideoSourceTouch_None states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_VideoSourceTouch_NDS states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_VideoSourceTouch_ForceMain states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_VideoSourceTouch_ForceSub states:s],
|
||||
nil];
|
||||
|
||||
NSArray< NSDictionary<NSString *, id> *> *displayHUDMenu =
|
||||
[NSArray arrayWithObjects:
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_Enable states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_Enable states:s],
|
||||
[NSDictionary dictionaryWithObjectsAndKeys:@"---", OEGameCoreDisplayModeSeparatorItemKey, nil],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_ExecutionSpeed states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_VideoFPS states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_3DRendererFPS states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_FrameIndex states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_LagFrameCounter states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_CPULoadAverage states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_RealTimeClock states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_Input states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_ExecutionSpeed states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_VideoFPS states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_3DRendererFPS states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_FrameIndex states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_LagFrameCounter states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_CPULoadAverage states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_RealTimeClock states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_HUD_Input states:s],
|
||||
nil];
|
||||
|
||||
NSArray< NSDictionary<NSString *, id> *> *displayGPUEmulationMenu =
|
||||
[NSArray arrayWithObjects:
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_GPU_Engine_Software states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_GPU_Software_FragmentSamplingHack states:s],
|
||||
[NSDictionary dictionaryWithObjectsAndKeys:@"---", OEGameCoreDisplayModeSeparatorItemKey, nil],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_GPU_Engine_OpenGL states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_GPU_OpenGL_SmoothTextures states:s],
|
||||
nil];
|
||||
|
||||
NSArray< NSDictionary<NSString *, id> *> *display3DRenderingMenu =
|
||||
[NSArray arrayWithObjects:
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_RenderScaling_1x states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_RenderScaling_2x states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_RenderScaling_3x states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_RenderScaling_4x states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_RenderScaling_1x states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_RenderScaling_2x states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_RenderScaling_3x states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_RenderScaling_4x states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_RenderScaling_5x states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_RenderScaling_6x states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_RenderScaling_7x states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_RenderScaling_8x states:s],
|
||||
[NSDictionary dictionaryWithObjectsAndKeys:@"---", OEGameCoreDisplayModeSeparatorItemKey, nil],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_TextureScaling_1x states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_TextureScaling_2x states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_TextureScaling_4x states:currentDisplayMode],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_TextureScaling_1x states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_TextureScaling_2x states:s],
|
||||
[self generateDisplayModeItemByID:NDSDisplayOptionID_3D_TextureScaling_4x states:s],
|
||||
nil];
|
||||
|
||||
// Add each submenu to the menu descriptor.
|
||||
|
@ -1300,6 +1357,7 @@ void UpdateDisplayPropertiesFromStates(uint64_t displayModeStates, ClientDisplay
|
|||
[NSDictionary dictionaryWithObjectsAndKeys:@"---", OEGameCoreDisplayModeSeparatorItemKey, nil],
|
||||
[NSDictionary dictionaryWithObjectsAndKeys: @"Heads-Up Display", OEGameCoreDisplayModeGroupNameKey, displayHUDMenu, OEGameCoreDisplayModeGroupItemsKey, nil],
|
||||
[NSDictionary dictionaryWithObjectsAndKeys:@"---", OEGameCoreDisplayModeSeparatorItemKey, nil],
|
||||
[NSDictionary dictionaryWithObjectsAndKeys: @"GPU Emulation", OEGameCoreDisplayModeGroupNameKey, displayGPUEmulationMenu, OEGameCoreDisplayModeGroupItemsKey, nil],
|
||||
[NSDictionary dictionaryWithObjectsAndKeys: @"3D Rendering", OEGameCoreDisplayModeGroupNameKey, display3DRenderingMenu, OEGameCoreDisplayModeGroupItemsKey, nil],
|
||||
nil];
|
||||
|
||||
|
|
Loading…
Reference in New Issue