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; 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; 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(); gpuEvent->ApplyRender3DSettingsLock();
GPU->Set3DRendererByID(rendererID); GPU->Set3DRendererByID(rendererID);
gpuEvent->ApplyRender3DSettingsUnlock(); gpuEvent->ApplyRender3DSettingsUnlock();

View File

@ -53121,22 +53121,6 @@ xcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ
</object> </object>
<int key="connectionID">9143</int> <int key="connectionID">9143</int>
</object> </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="IBConnectionRecord">
<object class="IBBindingConnection" key="connection"> <object class="IBBindingConnection" key="connection">
<string key="label">value: selection.cdsGPU.render3DTextures</string> <string key="label">value: selection.cdsGPU.render3DTextures</string>
@ -60838,6 +60822,186 @@ xcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ
</object> </object>
<int key="connectionID">12254</int> <int key="connectionID">12254</int>
</object> </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> </array>
<object class="IBMutableOrderedSet" key="objectRecords"> <object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects"> <array key="orderedObjects">
@ -86860,7 +87024,7 @@ xcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ
<object class="IBToolTipAttribute" key="NS.object.0"> <object class="IBToolTipAttribute" key="NS.object.0">
<string key="name">ToolTip</string> <string key="name">ToolTip</string>
<reference key="object" ref="321130061"/> <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>
</object> </object>
<string key="6129.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="6129.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -86881,7 +87045,7 @@ xcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ
<object class="IBToolTipAttribute" key="NS.object.0"> <object class="IBToolTipAttribute" key="NS.object.0">
<string key="name">ToolTip</string> <string key="name">ToolTip</string>
<reference key="object" ref="388438651"/> <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>
</object> </object>
<string key="6134.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="6134.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -86905,7 +87069,7 @@ xcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ
<object class="IBToolTipAttribute" key="NS.object.0"> <object class="IBToolTipAttribute" key="NS.object.0">
<string key="name">ToolTip</string> <string key="name">ToolTip</string>
<reference key="object" ref="621082995"/> <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>
</object> </object>
<string key="6233.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="6233.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -86914,7 +87078,7 @@ xcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ
<object class="IBToolTipAttribute" key="NS.object.0"> <object class="IBToolTipAttribute" key="NS.object.0">
<string key="name">ToolTip</string> <string key="name">ToolTip</string>
<reference key="object" ref="313780696"/> <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>
</object> </object>
<string key="6234.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string> <string key="6234.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -88548,7 +88712,7 @@ xcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ
<nil key="activeLocalization"/> <nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/> <dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/> <nil key="sourceID"/>
<int key="maxID">12254</int> <int key="maxID">12275</int>
</object> </object>
<object class="IBClassDescriber" key="IBDocument.Classes"> <object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptionsV3.1+"> <array class="NSMutableArray" key="referencedPartialClassDescriptionsV3.1+">

View File

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

View File

@ -54,7 +54,9 @@
@synthesize wifiSettingsPanelDelegate; @synthesize wifiSettingsPanelDelegate;
@synthesize migrationDelegate; @synthesize migrationDelegate;
@synthesize isAppRunningOnPowerPC;
@synthesize isAppRunningOnIntel; @synthesize isAppRunningOnIntel;
@synthesize isAppRunningOnARM64;
@synthesize isDeveloperPlusBuild; @synthesize isDeveloperPlusBuild;
@synthesize didApplicationFinishLaunching; @synthesize didApplicationFinishLaunching;
@synthesize delayedROMFileName; @synthesize delayedROMFileName;
@ -67,6 +69,12 @@
return nil; 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). // Determine if we're running on Intel or non-Intel (PowerPC or ARM64).
#if defined(__i386__) || defined(__x86_64__) #if defined(__i386__) || defined(__x86_64__)
isAppRunningOnIntel = YES; isAppRunningOnIntel = YES;
@ -74,6 +82,12 @@
isAppRunningOnIntel = NO; isAppRunningOnIntel = NO;
#endif #endif
#if defined(__aarch64__)
isAppRunningOnARM64 = YES;
#else
isAppRunningOnARM64 = NO;
#endif
#if defined(GDB_STUB) #if defined(GDB_STUB)
isDeveloperPlusBuild = YES; isDeveloperPlusBuild = YES;
#else #else
@ -557,12 +571,6 @@
[cdsCore setEmuFlagEmulateEnsata:[[NSUserDefaults standardUserDefaults] boolForKey:@"Emulation_EmulateEnsata"]]; [cdsCore setEmuFlagEmulateEnsata:[[NSUserDefaults standardUserDefaults] boolForKey:@"Emulation_EmulateEnsata"]];
[cdsCore setEmuFlagDebugConsole:[[NSUserDefaults standardUserDefaults] boolForKey:@"Emulation_UseDebugConsole"]]; [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. // Set the CPU emulation engine per user preferences.
[cdsCore setCpuEmulationEngine:[[NSUserDefaults standardUserDefaults] integerForKey:@"Emulation_CPUEmulationEngine"]]; [cdsCore setCpuEmulationEngine:[[NSUserDefaults standardUserDefaults] integerForKey:@"Emulation_CPUEmulationEngine"]];
[cdsCore setMaxJITBlockSize:[[NSUserDefaults standardUserDefaults] integerForKey:@"Emulation_MaxJITBlockSize"]]; [cdsCore setMaxJITBlockSize:[[NSUserDefaults standardUserDefaults] integerForKey:@"Emulation_MaxJITBlockSize"]];