diff --git a/desmume/src/frontend/cocoa/DefaultUserPrefs.plist b/desmume/src/frontend/cocoa/DefaultUserPrefs.plist
index dc4de77d9..5294cfda3 100644
--- a/desmume/src/frontend/cocoa/DefaultUserPrefs.plist
+++ b/desmume/src/frontend/cocoa/DefaultUserPrefs.plist
@@ -708,6 +708,8 @@
Render3D_ScalingFactor
1
+ Render3D_ColorFormat
+ 536895878
Render3D_HighPrecisionColorInterpolation
Render3D_LineHack
diff --git a/desmume/src/frontend/cocoa/cocoa_GPU.mm b/desmume/src/frontend/cocoa/cocoa_GPU.mm
index 266294582..843e52a4c 100644
--- a/desmume/src/frontend/cocoa/cocoa_GPU.mm
+++ b/desmume/src/frontend/cocoa/cocoa_GPU.mm
@@ -271,6 +271,19 @@ public:
- (void) setGpuColorFormat:(NSUInteger)colorFormat
{
+ // First check for a valid color format. Abort if the color format is invalid.
+ switch ((NDSColorFormat)colorFormat)
+ {
+ case NDSColorFormat_BGR555_Rev:
+ case NDSColorFormat_BGR666_Rev:
+ case NDSColorFormat_BGR888_Rev:
+ break;
+
+ default:
+ return;
+ }
+
+ // Change the color format.
[[self sharedData] finishAllDisplayViewsAtIndex:0];
[[self sharedData] finishAllDisplayViewsAtIndex:1];
diff --git a/desmume/src/frontend/cocoa/translations/English.lproj/MainMenu.strings b/desmume/src/frontend/cocoa/translations/English.lproj/MainMenu.strings
index 99d0dc868..09c73506a 100644
Binary files a/desmume/src/frontend/cocoa/translations/English.lproj/MainMenu.strings and b/desmume/src/frontend/cocoa/translations/English.lproj/MainMenu.strings differ
diff --git a/desmume/src/frontend/cocoa/translations/English.lproj/MainMenu.xib b/desmume/src/frontend/cocoa/translations/English.lproj/MainMenu.xib
index 3c20c4dc1..799a253f6 100644
--- a/desmume/src/frontend/cocoa/translations/English.lproj/MainMenu.xib
+++ b/desmume/src/frontend/cocoa/translations/English.lproj/MainMenu.xib
@@ -2059,7 +2059,7 @@
General Settings
@@ -8637,7 +8665,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
- {{6, 113}, {496, 122}}
+ {{6, 89}, {496, 122}}
{0, 0}
@@ -8658,7 +8686,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
@@ -14111,7 +14231,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
134217728
33554432
-
+
0
3
0
@@ -16535,7 +16655,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
134217728
33554432
-
+
0
3
0
@@ -17667,7 +17787,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
134217728
33554432
-
+
0
3
0
@@ -22307,7 +22427,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
279
2
- {{149, 180}, {301, 514}}
+ {{149, 153}, {301, 542}}
-461896704
3D Rendering Settings
NSPanel
@@ -22334,7 +22454,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
268
{{15, 77}, {206, 18}}
-
YES
-2080374784
@@ -22358,7 +22477,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
268
{{15, 15}, {109, 14}}
-
YES
68157504
@@ -22377,7 +22495,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
268
{{15, 57}, {115, 18}}
-
YES
-2080374784
@@ -22424,7 +22541,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
268
{{126, 10}, {124, 22}}
-
_NS:791
YES
{{1, 1}, {265, 102}}
-
- {{17, 110}, {267, 118}}
+ {{17, 109}, {267, 118}}
-
{0, 0}
67108864
@@ -22559,7 +22673,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
268
- {{69, 9}, {162, 19}}
+ {{69, 8}, {162, 19}}
YES
@@ -22592,7 +22706,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
268
{{18, 14}, {107, 58}}
-
YES
NO
3
@@ -22851,12 +22964,10 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
{{1, 1}, {265, 82}}
-
- {{17, 396}, {267, 98}}
+ {{17, 424}, {267, 98}}
-
{0, 0}
67108864
@@ -22887,7 +22998,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
268
{{15, 52}, {108, 18}}
-
YES
-2080374784
@@ -22911,7 +23021,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
268
{{15, 32}, {135, 18}}
-
YES
-2080374784
@@ -22935,7 +23044,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
268
{{15, 12}, {82, 18}}
-
YES
-2080374784
@@ -22957,15 +23065,14 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
268
- {{16, 119}, {112, 14}}
+ {{32, 148}, {113, 14}}
-
_NS:526
{251, 750}
YES
68157504
- 272761856
+ 71435264
GPU Scaling Factor:
_NS:526
@@ -22979,9 +23086,8 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
268
- {{134, 117}, {48, 19}}
+ {{150, 146}, {48, 19}}
-
_NS:9
YES
@@ -23057,9 +23163,8 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
268
- {{187, 113}, {19, 27}}
+ {{203, 142}, {19, 27}}
-
_NS:1592
YES
@@ -23100,12 +23205,12 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
268
- {{16, 96}, {127, 14}}
+ {{6, 96}, {139, 14}}
YES
68157504
- 4326400
+ 71435264
Texture Scaling Factor:
@@ -23118,7 +23223,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
268
- {{187, 89}, {19, 27}}
+ {{189, 89}, {19, 27}}
YES
@@ -23137,7 +23242,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
268
- {{161, 96}, {19, 14}}
+ {{163, 96}, {19, 14}}
_NS:4068
YES
@@ -23208,15 +23313,103 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
NO
1
+
+
+ 268
+ {{41, 122}, {104, 14}}
+
+ _NS:4068
+ YES
+
+ 68157504
+ 71435264
+ GPU Color Depth:
+
+ _NS:4068
+
+
+
+
+ NO
+ 1
+
+
- {{1, 1}, {265, 144}}
+ {{1, 1}, {265, 173}}
-
- {{17, 232}, {267, 160}}
+ {{17, 231}, {267, 189}}
-
{0, 0}
67108864
@@ -23247,7 +23440,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
268
{{16, 32}, {192, 18}}
-
YES
67108864
@@ -23292,12 +23484,10 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
{{1, 1}, {265, 58}}
-
- {{17, 32}, {267, 74}}
+ {{17, 31}, {267, 74}}
-
{0, 0}
67108864
@@ -23314,8 +23504,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
NO
- {301, 514}
-
+ {301, 542}
{{0, 0}, {1920, 1177}}
{1.7976931348623157e+308, 1.7976931348623157e+308}
@@ -26942,7 +27131,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
134217728
33554432
-
+
0
3
0
@@ -28422,7 +28611,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
134217728
33554432
-
+
0
3
0
@@ -28928,7 +29117,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
134217728
33554432
-
+
0
3
0
@@ -29842,6 +30031,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
cdsGPU.render3DTextureScalingFactor
cdsGPU.render3DTextureSmoothing
emuFlagUseGameSpecificHacks
+ cdsGPU.gpuColorFormat
CocoaDSCore
@@ -30174,6 +30364,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
YES
+
+ YES
+ Render3D_ColorDepth
+ Render3D_ColorFormat
+
YES
@@ -42955,6 +43150,38 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
10278
+
+
+ selectedTag: selection.cdsGPU.gpuColorFormat
+
+
+
+
+
+ selectedTag: selection.cdsGPU.gpuColorFormat
+ selectedTag
+ selection.cdsGPU.gpuColorFormat
+ 2
+
+
+ 10296
+
+
+
+ selectedTag: values.Render3D_ColorFormat
+
+
+
+
+
+ selectedTag: values.Render3D_ColorFormat
+ selectedTag
+ values.Render3D_ColorFormat
+ 2
+
+
+ 10297
+
@@ -45341,6 +45568,8 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
+
+
@@ -56860,6 +57089,8 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
+
+
@@ -58165,6 +58396,122 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
+
+ 10279
+
+
+ YES
+
+
+
+
+
+ 10280
+
+
+
+
+ 10281
+
+
+ YES
+
+
+
+
+
+ 10282
+
+
+ YES
+
+
+
+
+
+ 10283
+
+
+ YES
+
+
+
+
+
+
+
+ 10284
+
+
+
+
+ 10285
+
+
+
+
+ 10286
+
+
+
+
+ 10287
+
+
+ YES
+
+
+
+
+
+ 10288
+
+
+
+
+ 10289
+
+
+ YES
+
+
+
+
+
+ 10290
+
+
+ YES
+
+
+
+
+
+ 10291
+
+
+ YES
+
+
+
+
+
+
+
+ 10292
+
+
+
+
+ 10293
+
+
+
+
+ 10294
+
+
+
@@ -58362,6 +58709,26 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
10265.IBPluginDependency
10267.IBPluginDependency
10268.IBPluginDependency
+ 10279.IBPluginDependency
+ 10280.IBPluginDependency
+ 10281.IBAttributePlaceholdersKey
+ 10281.IBPluginDependency
+ 10282.IBPluginDependency
+ 10283.IBEditorWindowLastContentRect
+ 10283.IBPluginDependency
+ 10284.IBPluginDependency
+ 10285.IBPluginDependency
+ 10286.IBPluginDependency
+ 10287.IBPluginDependency
+ 10288.IBPluginDependency
+ 10289.IBAttributePlaceholdersKey
+ 10289.IBPluginDependency
+ 10290.IBPluginDependency
+ 10291.IBEditorWindowLastContentRect
+ 10291.IBPluginDependency
+ 10292.IBPluginDependency
+ 10293.IBPluginDependency
+ 10294.IBPluginDependency
1034.IBPluginDependency
1035.IBPluginDependency
1036.IBPluginDependency
@@ -59330,6 +59697,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
5702.IBPluginDependency
5713.IBPluginDependency
575.IBPluginDependency
+ 576.IBEditorWindowLastContentRect
576.IBPluginDependency
58.IBPluginDependency
5933.IBPluginDependency
@@ -60911,7 +61279,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
- {{340, 512}, {129, 63}}
+ {{788, 467}, {77, 63}}
com.apple.InterfaceBuilder.CocoaPlugin
YES
@@ -61035,6 +61403,40 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
+
+ ToolTip
+
+ ToolTip
+
+ The GPU will output video at this color depth. Supported color depths are RGB555 (15-bit), RGB666 (18-bit), and RGB888 (24-bit).
+
+
+ com.apple.InterfaceBuilder.CocoaPlugin
+ com.apple.InterfaceBuilder.CocoaPlugin
+ {{468, 485}, {95, 54}}
+ com.apple.InterfaceBuilder.CocoaPlugin
+ com.apple.InterfaceBuilder.CocoaPlugin
+ com.apple.InterfaceBuilder.CocoaPlugin
+ com.apple.InterfaceBuilder.CocoaPlugin
+ com.apple.InterfaceBuilder.CocoaPlugin
+ com.apple.InterfaceBuilder.CocoaPlugin
+
+ ToolTip
+
+ ToolTip
+
+ By default, the GPU will output video at this color depth. Supported color depths are RGB555 (15-bit), RGB666 (18-bit), and RGB888 (24-bit).
+
+
+ com.apple.InterfaceBuilder.CocoaPlugin
+ com.apple.InterfaceBuilder.CocoaPlugin
+ {{788, 492}, {110, 63}}
+ com.apple.InterfaceBuilder.CocoaPlugin
+ com.apple.InterfaceBuilder.CocoaPlugin
+ com.apple.InterfaceBuilder.CocoaPlugin
+ com.apple.InterfaceBuilder.CocoaPlugin
+ com.apple.InterfaceBuilder.CocoaPlugin
+ com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
@@ -61296,7 +61698,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
com.apple.InterfaceBuilder.CocoaPlugin
- {{592, 88}, {554, 465}}
+ {{600, 233}, {554, 465}}
{686, 460.5}
com.apple.InterfaceBuilder.CocoaPlugin
@@ -61771,10 +62173,10 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
- {{809, 348}, {301, 514}}
+ {{301, 161}, {301, 542}}
{193.5, 488.5}
com.apple.InterfaceBuilder.CocoaPlugin
- {{809, 348}, {301, 514}}
+ {{301, 161}, {301, 542}}
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
@@ -62641,6 +63043,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
+ {{599, 423}, {257, 413}}
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
@@ -64444,7 +64847,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
- 10278
+ 10297
diff --git a/desmume/src/frontend/cocoa/userinterface/EmuControllerDelegate.mm b/desmume/src/frontend/cocoa/userinterface/EmuControllerDelegate.mm
index 9e5d82ad6..40082e879 100644
--- a/desmume/src/frontend/cocoa/userinterface/EmuControllerDelegate.mm
+++ b/desmume/src/frontend/cocoa/userinterface/EmuControllerDelegate.mm
@@ -977,6 +977,7 @@
[[NSUserDefaults standardUserDefaults] setBool:[[cdsCore cdsGPU] render3DTextureSmoothing] forKey:@"Render3D_TextureSmoothing"];
[[NSUserDefaults standardUserDefaults] setBool:[[cdsCore cdsGPU] render3DFragmentSamplingHack] forKey:@"Render3D_FragmentSamplingHack"];
[[NSUserDefaults standardUserDefaults] setInteger:[[cdsCore cdsGPU] gpuScale] forKey:@"Render3D_ScalingFactor"];
+ [[NSUserDefaults standardUserDefaults] setInteger:[[cdsCore cdsGPU] gpuColorFormat] forKey:@"Render3D_ColorFormat"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
@@ -2235,6 +2236,7 @@
[[cdsCore cdsGPU] setRender3DTextureSmoothing:[[NSUserDefaults standardUserDefaults] boolForKey:@"Render3D_TextureSmoothing"]];
[[cdsCore cdsGPU] setRender3DFragmentSamplingHack:[[NSUserDefaults standardUserDefaults] boolForKey:@"Render3D_FragmentSamplingHack"]];
[[cdsCore cdsGPU] setGpuScale:(NSUInteger)[[NSUserDefaults standardUserDefaults] integerForKey:@"Render3D_ScalingFactor"]];
+ [[cdsCore cdsGPU] setGpuColorFormat:(NSUInteger)[[NSUserDefaults standardUserDefaults] integerForKey:@"Render3D_ColorFormat"]];
// Set the stylus options per user preferences.
[[cdsCore cdsController] setStylusPressure:[[NSUserDefaults standardUserDefaults] integerForKey:@"Emulation_StylusPressure"]];