Cocoa Port: Disable OpenGL 3D renderer for PowerPC Macs. Also update some tooltips to reflect new app behavior based on previous commits.

This commit is contained in:
rogerman 2022-04-20 22:34:25 -07:00
parent 53dd630ea5
commit 4708404734
5 changed files with 219 additions and 30 deletions

View File

@ -412,11 +412,20 @@ public:
{
rendererID = CORE3DLIST_NULL;
}
else if (rendererID > GPU_3D_RENDERER_COUNT)
else if (rendererID >= GPU_3D_RENDERER_COUNT)
{
puts("DeSmuME: Invalid 3D renderer chosen; falling back to SoftRasterizer.");
rendererID = CORE3DLIST_SWRASTERIZE;
}
#if defined(__ppc__) || defined(__ppc64__)
if ( (rendererID != CORE3DLIST_NULL) && (rendererID != CORE3DLIST_SWRASTERIZE) )
{
puts("DeSmuME: PowerPC Macs only support SoftRasterizer; falling back to SoftRasterizer.");
rendererID = CORE3DLIST_SWRASTERIZE;
}
#endif
gpuEvent->ApplyRender3DSettingsLock();
GPU->Set3DRendererByID(rendererID);
gpuEvent->ApplyRender3DSettingsUnlock();

View File

@ -53121,22 +53121,6 @@ xcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ
</object>
<int key="connectionID">9143</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">selectedTag: selection.cdsGPU.render3DRenderingEngine</string>
<reference key="source" ref="229881229"/>
<reference key="destination" ref="582168938"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="229881229"/>
<reference key="NSDestination" ref="582168938"/>
<string key="NSLabel">selectedTag: selection.cdsGPU.render3DRenderingEngine</string>
<string key="NSBinding">selectedTag</string>
<string key="NSKeyPath">selection.cdsGPU.render3DRenderingEngine</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">9160</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: selection.cdsGPU.render3DTextures</string>
@ -60838,6 +60822,186 @@ xcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ
</object>
<int key="connectionID">12254</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">enabled: isAppRunningOnPowerPC</string>
<reference key="source" ref="930365646"/>
<reference key="destination" ref="976324537"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="930365646"/>
<reference key="NSDestination" ref="976324537"/>
<string key="NSLabel">enabled: isAppRunningOnPowerPC</string>
<string key="NSBinding">enabled</string>
<string key="NSKeyPath">isAppRunningOnPowerPC</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSValueTransformerName</string>
<string key="NS.object.0">NSNegateBoolean</string>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">12258</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">enabled: isAppRunningOnPowerPC</string>
<reference key="source" ref="463246284"/>
<reference key="destination" ref="976324537"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="463246284"/>
<reference key="NSDestination" ref="976324537"/>
<string key="NSLabel">enabled: isAppRunningOnPowerPC</string>
<string key="NSBinding">enabled</string>
<string key="NSKeyPath">isAppRunningOnPowerPC</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSValueTransformerName</string>
<string key="NS.object.0">NSNegateBoolean</string>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">12260</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">enabled: isAppRunningOnPowerPC</string>
<reference key="source" ref="460016330"/>
<reference key="destination" ref="976324537"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="460016330"/>
<reference key="NSDestination" ref="976324537"/>
<string key="NSLabel">enabled: isAppRunningOnPowerPC</string>
<string key="NSBinding">enabled</string>
<string key="NSKeyPath">isAppRunningOnPowerPC</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSValueTransformerName</string>
<string key="NS.object.0">NSNegateBoolean</string>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">12262</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">enabled: isAppRunningOnPowerPC</string>
<reference key="source" ref="621082995"/>
<reference key="destination" ref="976324537"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="621082995"/>
<reference key="NSDestination" ref="976324537"/>
<string key="NSLabel">enabled: isAppRunningOnPowerPC</string>
<string key="NSBinding">enabled</string>
<string key="NSKeyPath">isAppRunningOnPowerPC</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSValueTransformerName</string>
<string key="NS.object.0">NSNegateBoolean</string>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">12264</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">enabled: isAppRunningOnPowerPC</string>
<reference key="source" ref="1032624659"/>
<reference key="destination" ref="976324537"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="1032624659"/>
<reference key="NSDestination" ref="976324537"/>
<string key="NSLabel">enabled: isAppRunningOnPowerPC</string>
<string key="NSBinding">enabled</string>
<string key="NSKeyPath">isAppRunningOnPowerPC</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSValueTransformerName</string>
<string key="NS.object.0">NSNegateBoolean</string>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">12266</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">enabled: isAppRunningOnPowerPC</string>
<reference key="source" ref="631132302"/>
<reference key="destination" ref="976324537"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="631132302"/>
<reference key="NSDestination" ref="976324537"/>
<string key="NSLabel">enabled: isAppRunningOnPowerPC</string>
<string key="NSBinding">enabled</string>
<string key="NSKeyPath">isAppRunningOnPowerPC</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSValueTransformerName</string>
<string key="NS.object.0">NSNegateBoolean</string>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">12268</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">enabled: isAppRunningOnPowerPC</string>
<reference key="source" ref="647662249"/>
<reference key="destination" ref="976324537"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="647662249"/>
<reference key="NSDestination" ref="976324537"/>
<string key="NSLabel">enabled: isAppRunningOnPowerPC</string>
<string key="NSBinding">enabled</string>
<string key="NSKeyPath">isAppRunningOnPowerPC</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSValueTransformerName</string>
<string key="NS.object.0">NSNegateBoolean</string>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">12270</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">selectedTag: selection.cdsGPU.render3DRenderingEngine</string>
<reference key="source" ref="229881229"/>
<reference key="destination" ref="582168938"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="229881229"/>
<reference key="NSDestination" ref="582168938"/>
<string key="NSLabel">selectedTag: selection.cdsGPU.render3DRenderingEngine</string>
<string key="NSBinding">selectedTag</string>
<string key="NSKeyPath">selection.cdsGPU.render3DRenderingEngine</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSConditionallySetsEnabled</string>
<boolean value="NO" key="NS.object.0"/>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">12273</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">enabled: isAppRunningOnPowerPC</string>
<reference key="source" ref="313780696"/>
<reference key="destination" ref="976324537"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="313780696"/>
<reference key="NSDestination" ref="976324537"/>
<string key="NSLabel">enabled: isAppRunningOnPowerPC</string>
<string key="NSBinding">enabled</string>
<string key="NSKeyPath">isAppRunningOnPowerPC</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSValueTransformerName</string>
<string key="NS.object.0">NSNegateBoolean</string>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">12275</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@ -86860,7 +87024,7 @@ xcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ
<object class="IBToolTipAttribute" key="NS.object.0">
<string key="name">ToolTip</string>
<reference key="object" ref="321130061"/>
<string key="toolTip">Sets the dynarec engine to emulate the ARM7 and ARM9 CPUs by default. It features far superior performance to the Interpreter engine, but is not compatible with all configurations. Also, some ROMs may not work or may show erratic behavior when using this engine. (This feature is not available on a PowerPC-based Mac.)</string>
<string key="toolTip">Sets the dynarec engine to emulate the ARM7 and ARM9 CPUs by default. It features far superior performance to the Interpreter engine, but is not compatible with all configurations. Also, some ROMs may not work or may show erratic behavior when using this engine. (Requires a Mac with an Intel processor.)</string>
</object>
</object>
<string key="6129.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -86881,7 +87045,7 @@ xcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ
<object class="IBToolTipAttribute" key="NS.object.0">
<string key="name">ToolTip</string>
<reference key="object" ref="388438651"/>
<string key="toolTip">Uses the dynarec engine to emulate the ARM7 and ARM9 CPUs. It features far superior performance to the interpreter engine, but is not compatible with all configurations. Also, some ROMs may not work or may show erratic behavior when using this engine. (This feature is not available on a PowerPC-based Mac.) [Changes to the CPU emulation engine will only take effect after a ROM is loaded or after the emulator is reset.]</string>
<string key="toolTip">Uses the dynarec engine to emulate the ARM7 and ARM9 CPUs. It features far superior performance to the interpreter engine, but is not compatible with all configurations. Also, some ROMs may not work or may show erratic behavior when using this engine. (Requires a Mac with an Intel processor.) [Changes to the CPU emulation engine will only take effect after a ROM is loaded or after the emulator is reset.]</string>
</object>
</object>
<string key="6134.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -86905,7 +87069,7 @@ xcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ
<object class="IBToolTipAttribute" key="NS.object.0">
<string key="name">ToolTip</string>
<reference key="object" ref="621082995"/>
<string key="toolTip">OpenGL-based 3D rendering engine. Some 3D objects may have better looking texturing, but 3D emulation is less accurate overall. Low CPU usage. However, it requires the usage of your GPU.</string>
<string key="toolTip">OpenGL-based 3D rendering engine. Some 3D objects may have better looking texturing, but 3D emulation is less accurate overall. Low CPU usage. However, it requires the usage of your GPU. (Not available for PowerPC Macs.)</string>
</object>
</object>
<string key="6233.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -86914,7 +87078,7 @@ xcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ
<object class="IBToolTipAttribute" key="NS.object.0">
<string key="name">ToolTip</string>
<reference key="object" ref="313780696"/>
<string key="toolTip">OpenGL-based 3D rendering engine. Some 3D objects may have better looking texturing, but 3D emulation is less accurate overall. Low CPU usage. However, it requires the usage of your GPU.</string>
<string key="toolTip">OpenGL-based 3D rendering engine. Some 3D objects may have better looking texturing, but 3D emulation is less accurate overall. Low CPU usage. However, it requires the usage of your GPU. (Not available for PowerPC Macs.)</string>
</object>
</object>
<string key="6234.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -88548,7 +88712,7 @@ xcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">12254</int>
<int key="maxID">12275</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptionsV3.1+">

View File

@ -47,8 +47,12 @@
NSMenu *mLoadStateSlot;
NSMenu *mSaveStateSlot;
BOOL isAppRunningOnPowerPC;
BOOL isAppRunningOnIntel;
BOOL isAppRunningOnARM64;
BOOL isDeveloperPlusBuild;
BOOL didApplicationFinishLaunching;
NSString *delayedROMFileName;
}
@ -68,8 +72,12 @@
@property (readonly) IBOutlet NSMenu *mSaveStateSlot;
@property (readonly) IBOutlet InputPrefsView *inputPrefsView;
@property (assign) BOOL isAppRunningOnIntel;
@property (assign) BOOL isDeveloperPlusBuild;
@property (readonly) BOOL isAppRunningOnPowerPC;
@property (readonly) BOOL isAppRunningOnIntel;
@property (readonly) BOOL isAppRunningOnARM64;
@property (readonly) BOOL isDeveloperPlusBuild;
@property (assign) BOOL didApplicationFinishLaunching;
@property (copy) NSString *delayedROMFileName;

View File

@ -54,7 +54,9 @@
@synthesize wifiSettingsPanelDelegate;
@synthesize migrationDelegate;
@synthesize isAppRunningOnPowerPC;
@synthesize isAppRunningOnIntel;
@synthesize isAppRunningOnARM64;
@synthesize isDeveloperPlusBuild;
@synthesize didApplicationFinishLaunching;
@synthesize delayedROMFileName;
@ -67,12 +69,24 @@
return nil;
}
#if defined(__ppc__) || defined(__ppc64__)
isAppRunningOnPowerPC = YES;
#else
isAppRunningOnPowerPC = NO;
#endif
// Determine if we're running on Intel or non-Intel (PowerPC or ARM64).
#if defined(__i386__) || defined(__x86_64__)
isAppRunningOnIntel = YES;
#else
isAppRunningOnIntel = NO;
#endif
#if defined(__aarch64__)
isAppRunningOnARM64 = YES;
#else
isAppRunningOnARM64 = NO;
#endif
#if defined(GDB_STUB)
isDeveloperPlusBuild = YES;
@ -557,12 +571,6 @@
[cdsCore setEmuFlagEmulateEnsata:[[NSUserDefaults standardUserDefaults] boolForKey:@"Emulation_EmulateEnsata"]];
[cdsCore setEmuFlagDebugConsole:[[NSUserDefaults standardUserDefaults] boolForKey:@"Emulation_UseDebugConsole"]];
// If we're not running on Intel, force the CPU emulation engine to use the interpreter engine.
if (!isAppRunningOnIntel)
{
[[NSUserDefaults standardUserDefaults] setInteger:CPUEmulationEngineID_Interpreter forKey:@"Emulation_CPUEmulationEngine"];
}
// Set the CPU emulation engine per user preferences.
[cdsCore setCpuEmulationEngine:[[NSUserDefaults standardUserDefaults] integerForKey:@"Emulation_CPUEmulationEngine"]];
[cdsCore setMaxJITBlockSize:[[NSUserDefaults standardUserDefaults] integerForKey:@"Emulation_MaxJITBlockSize"]];