diff --git a/desmume/src/cocoa/translations/English.lproj/DisplayWindow.xib b/desmume/src/cocoa/translations/English.lproj/DisplayWindow.xib
index 4456390a9..7ef3891d9 100644
--- a/desmume/src/cocoa/translations/English.lproj/DisplayWindow.xib
+++ b/desmume/src/cocoa/translations/English.lproj/DisplayWindow.xib
@@ -315,6 +315,7 @@
{{2, 3}, {16, 16}}
+
28938
100
@@ -336,6 +337,7 @@
{{160, 1}, {20, 20}}
+
YES
{{0, 0}, {1920, 1178}}
{256, 477}
@@ -566,14 +571,6 @@
YES
-
-
- window
-
-
-
- 22
-
changeCoreSpeed:
@@ -646,6 +643,14 @@
108
+
+
+ window
+
+
+
+ 109
+
delegate
@@ -1170,7 +1175,7 @@
- 108
+ 109
@@ -1191,7 +1196,13 @@
YES
changeCoreSpeed:
+ changeDisplayGap:
+ changeDisplayMode:
+ changeDisplayOrder:
+ changeDisplayOrientation:
+ changeRotation:
changeRotationRelative:
+ changeScale:
changeVolume:
copy:
openRom:
@@ -1200,6 +1211,10 @@
toggleExecutePause:
toggleKeepMinDisplaySizeAtNormal:
toggleStatusBar:
+ writeDefaultsDisplayGap:
+ writeDefaultsDisplayRotation:
+ writeDefaultsDisplayVideoSettings:
+ writeDefaultsHUDSettings:
YES
@@ -1213,6 +1228,16 @@
id
id
id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
@@ -1220,7 +1245,13 @@
YES
changeCoreSpeed:
+ changeDisplayGap:
+ changeDisplayMode:
+ changeDisplayOrder:
+ changeDisplayOrientation:
+ changeRotation:
changeRotationRelative:
+ changeScale:
changeVolume:
copy:
openRom:
@@ -1229,6 +1260,10 @@
toggleExecutePause:
toggleKeepMinDisplaySizeAtNormal:
toggleStatusBar:
+ writeDefaultsDisplayGap:
+ writeDefaultsDisplayRotation:
+ writeDefaultsDisplayVideoSettings:
+ writeDefaultsHUDSettings:
YES
@@ -1236,10 +1271,34 @@
changeCoreSpeed:
id
+
+ changeDisplayGap:
+ id
+
+
+ changeDisplayMode:
+ id
+
+
+ changeDisplayOrder:
+ id
+
+
+ changeDisplayOrientation:
+ id
+
+
+ changeRotation:
+ id
+
changeRotationRelative:
id
+
+ changeScale:
+ id
+
changeVolume:
id
@@ -1272,6 +1331,22 @@
toggleStatusBar:
id
+
+ writeDefaultsDisplayGap:
+ id
+
+
+ writeDefaultsDisplayRotation:
+ id
+
+
+ writeDefaultsDisplayVideoSettings:
+ id
+
+
+ writeDefaultsHUDSettings:
+ id
+
diff --git a/desmume/src/cocoa/translations/English.lproj/MainMenu.strings b/desmume/src/cocoa/translations/English.lproj/MainMenu.strings
index 11fa4d3e0..1a12bc4d6 100644
Binary files a/desmume/src/cocoa/translations/English.lproj/MainMenu.strings and b/desmume/src/cocoa/translations/English.lproj/MainMenu.strings differ
diff --git a/desmume/src/cocoa/translations/English.lproj/MainMenu.xib b/desmume/src/cocoa/translations/English.lproj/MainMenu.xib
index 6d307e6e6..eedc07eaa 100644
--- a/desmume/src/cocoa/translations/English.lproj/MainMenu.xib
+++ b/desmume/src/cocoa/translations/English.lproj/MainMenu.xib
@@ -2490,9 +2490,11 @@
-
+
256
{400, 100}
+
+
{{0, 0}, {1920, 1178}}
{10000000000000, 10000000000000}
@@ -15729,7 +15731,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
-
+
256
YES
@@ -15962,6 +15964,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
{194, 241}
+
{{0, 0}, {1920, 1178}}
{10000000000000, 10000000000000}
@@ -15977,7 +15980,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
-
+
256
YES
@@ -16585,6 +16588,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
{204, 521}
+
{{0, 0}, {1920, 1178}}
{10000000000000, 10000000000000}
@@ -19789,7 +19793,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
-
+
256
YES
@@ -19798,6 +19802,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
268
{{30, 43}, {411, 26}}
+
+
YES
-2080112384
@@ -19820,6 +19826,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
268
{{20, 70}, {38, 17}}
+
+
YES
68157504
@@ -19837,6 +19845,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
268
{{412, 70}, {38, 17}}
+
+
YES
68157504
@@ -19854,6 +19864,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
268
{{98, 70}, {38, 17}}
+
+
YES
68157504
@@ -19871,6 +19883,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
268
{{177, 70}, {38, 17}}
+
+
YES
68157504
@@ -19888,6 +19902,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
268
{{255, 70}, {38, 17}}
+
+
YES
68157504
@@ -19905,6 +19921,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
268
{{335, 70}, {38, 17}}
+
+
YES
68157504
@@ -19922,6 +19940,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
268
{{32, 18}, {133, 19}}
+
+
100
YES
@@ -19944,6 +19964,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
268
{{203, 21}, {156, 17}}
+
+
YES
68157504
@@ -19961,6 +19983,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
268
{{361, 21}, {81, 17}}
+
+
YES
68157504
@@ -20042,6 +20066,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
268
{{158, 93}, {154, 18}}
+
+
YES
-2080374784
@@ -20062,6 +20088,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
{467, 128}
+
+
+
{{0, 0}, {1920, 1178}}
{10000000000000, 10000000000000}
@@ -20072,13 +20101,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
279
2
{{162, 281}, {213, 198}}
- -461897728
+ -461896704
Set Rotation
NSPanel
-
+
256
YES
@@ -20317,6 +20346,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
{213, 198}
+
{{0, 0}, {1920, 1178}}
{10000000000000, 10000000000000}
@@ -20333,7 +20363,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
-
+
256
YES
@@ -20605,6 +20635,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
{441, 133}
+
{{0, 0}, {1920, 1178}}
{10000000000000, 10000000000000}
@@ -22969,6 +23000,302 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
7999
+
+
+ changeDisplayMode:
+
+
+
+ 8204
+
+
+
+ changeDisplayMode:
+
+
+
+ 8205
+
+
+
+ changeDisplayMode:
+
+
+
+ 8206
+
+
+
+ runToolbarCustomizationPalette:
+
+
+
+ 8208
+
+
+
+ toggleToolbarShown:
+
+
+
+ 8209
+
+
+
+ changeDisplayGap:
+
+
+
+ 8210
+
+
+
+ changeDisplayGap:
+
+
+
+ 8211
+
+
+
+ changeDisplayGap:
+
+
+
+ 8212
+
+
+
+ changeDisplayGap:
+
+
+
+ 8213
+
+
+
+ changeDisplayGap:
+
+
+
+ 8214
+
+
+
+ changeDisplayGap:
+
+
+
+ 8215
+
+
+
+ changeDisplayGap:
+
+
+
+ 8216
+
+
+
+ changeDisplayOrder:
+
+
+
+ 8217
+
+
+
+ changeDisplayOrder:
+
+
+
+ 8218
+
+
+
+ changeDisplayOrientation:
+
+
+
+ 8219
+
+
+
+ changeDisplayOrientation:
+
+
+
+ 8220
+
+
+
+ changeScale:
+
+
+
+ 8221
+
+
+
+ changeScale:
+
+
+
+ 8222
+
+
+
+ changeScale:
+
+
+
+ 8223
+
+
+
+ changeScale:
+
+
+
+ 8224
+
+
+
+ changeScale:
+
+
+
+ 8225
+
+
+
+ changeRotation:
+
+
+
+ 8226
+
+
+
+ changeRotation:
+
+
+
+ 8227
+
+
+
+ changeRotation:
+
+
+
+ 8228
+
+
+
+ changeRotation:
+
+
+
+ 8229
+
+
+
+ changeRotationRelative:
+
+
+
+ 8230
+
+
+
+ changeRotationRelative:
+
+
+
+ 8231
+
+
+
+ changeRotation:
+
+
+
+ 8232
+
+
+
+ changeRotation:
+
+
+
+ 8233
+
+
+
+ toggleStatusBar:
+
+
+
+ 8234
+
+
+
+ toggleKeepMinDisplaySizeAtNormal:
+
+
+
+ 8235
+
+
+
+ writeDefaultsDisplayGap:
+
+
+
+ 8236
+
+
+
+ writeDefaultsDisplayRotation:
+
+
+
+ 8237
+
+
+
+ writeDefaultsDisplayVideoSettings:
+
+
+
+ 8238
+
+
+
+ writeDefaultsHUDSettings:
+
+
+
+ 8239
+
+
+
+ performClose:
+
+
+
+ 8240
+
+
+
+ saveScreenshotAs:
+
+
+
+ 8241
+
launchWebsite:
@@ -30105,238 +30432,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
6940
-
-
- changeScale:
-
-
-
- 6941
-
-
-
- changeScale:
-
-
-
- 6942
-
-
-
- changeScale:
-
-
-
- 6943
-
-
-
- changeScale:
-
-
-
- 6944
-
-
-
- changeScale:
-
-
-
- 6945
-
-
-
- toggleKeepMinDisplaySizeAtNormal:
-
-
-
- 6946
-
-
-
- toggleStatusBar:
-
-
-
- 6947
-
-
-
- runToolbarCustomizationPalette:
-
-
-
- 6948
-
-
-
- toggleToolbarShown:
-
-
-
- 6949
-
-
-
- changeDisplayMode:
-
-
-
- 6950
-
-
-
- changeDisplayMode:
-
-
-
- 6951
-
-
-
- changeDisplayMode:
-
-
-
- 6952
-
-
-
- changeDisplayOrientation:
-
-
-
- 6953
-
-
-
- changeDisplayOrientation:
-
-
-
- 6954
-
-
-
- changeDisplayOrder:
-
-
-
- 6955
-
-
-
- changeDisplayOrder:
-
-
-
- 6956
-
-
-
- changeRotationRelative:
-
-
-
- 6957
-
-
-
- changeRotationRelative:
-
-
-
- 6958
-
-
-
- changeRotation:
-
-
-
- 6959
-
-
-
- changeRotation:
-
-
-
- 6960
-
-
-
- changeRotation:
-
-
-
- 6961
-
-
-
- changeRotation:
-
-
-
- 6962
-
-
-
- changeRotation:
-
-
-
- 6963
-
-
-
- changeRotation:
-
-
-
- 6964
-
-
-
- writeDefaultsDisplayRotation:
-
-
-
- 6992
-
-
-
- writeDefaultsHUDSettings:
-
-
-
- 6993
-
-
-
- writeDefaultsDisplayVideoSettings:
-
-
-
- 6994
-
-
-
- saveScreenshotAs:
-
-
-
- 6997
-
-
-
- closeWindow:
-
-
-
- 7000
-
inputManager
@@ -30377,70 +30472,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
7013
-
-
- changeDisplayGap:
-
-
-
- 7797
-
-
-
- changeDisplayGap:
-
-
-
- 7798
-
-
-
- changeDisplayGap:
-
-
-
- 7799
-
-
-
- changeDisplayGap:
-
-
-
- 7800
-
-
-
- changeDisplayGap:
-
-
-
- 7801
-
-
-
- changeDisplayGap:
-
-
-
- 7851
-
-
-
- changeDisplayGap:
-
-
-
- 7852
-
-
-
- writeDefaultsDisplayGap:
-
-
-
- 7854
-
slot1Eject:
@@ -30521,6 +30552,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
8168
+
+
+ changeCoreSpeed:
+
+
+
+ 8242
+
content
@@ -48745,9 +48784,1965 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
- 8200
+ 8242
+
+
+
+ YES
+
+ AppDelegate
+ NSObject
+
+ YES
+
+ YES
+ bugReport:
+ launchForums:
+ launchWebsite:
+ supportRequest:
+
+
+ YES
+ id
+ id
+ id
+ id
+
+
+
+ YES
+
+ YES
+ bugReport:
+ launchForums:
+ launchWebsite:
+ supportRequest:
+
+
+ YES
+
+ bugReport:
+ id
+
+
+ launchForums:
+ id
+
+
+ launchWebsite:
+ id
+
+
+ supportRequest:
+ id
+
+
+
+
+ YES
+
+ YES
+ aboutWindowController
+ boxARMBinaries
+ boxFileSystem
+ boxGeneralInfo
+ boxMisc
+ boxTitles
+ cdsCoreController
+ cdsSoundController
+ cheatListWindow
+ cheatWindowController
+ emuControlController
+ inputManager
+ inputPrefsView
+ mLoadStateSlot
+ mSaveStateSlot
+ migrationDelegate
+ prefGeneralView
+ prefWindow
+ prefWindowController
+ romInfoPanelController
+ troubleshootingWindow
+
+
+ YES
+ NSObjectController
+ NSBox
+ NSBox
+ NSBox
+ NSBox
+ NSBox
+ NSObjectController
+ NSObjectController
+ NSWindow
+ NSObjectController
+ NSObjectController
+ InputManager
+ InputPrefsView
+ NSMenu
+ NSMenu
+ FileMigrationDelegate
+ NSView
+ NSWindow
+ NSObjectController
+ NSObjectController
+ NSWindow
+
+
+
+ YES
+
+ YES
+ aboutWindowController
+ boxARMBinaries
+ boxFileSystem
+ boxGeneralInfo
+ boxMisc
+ boxTitles
+ cdsCoreController
+ cdsSoundController
+ cheatListWindow
+ cheatWindowController
+ emuControlController
+ inputManager
+ inputPrefsView
+ mLoadStateSlot
+ mSaveStateSlot
+ migrationDelegate
+ prefGeneralView
+ prefWindow
+ prefWindowController
+ romInfoPanelController
+ troubleshootingWindow
+
+
+ YES
+
+ aboutWindowController
+ NSObjectController
+
+
+ boxARMBinaries
+ NSBox
+
+
+ boxFileSystem
+ NSBox
+
+
+ boxGeneralInfo
+ NSBox
+
+
+ boxMisc
+ NSBox
+
+
+ boxTitles
+ NSBox
+
+
+ cdsCoreController
+ NSObjectController
+
+
+ cdsSoundController
+ NSObjectController
+
+
+ cheatListWindow
+ NSWindow
+
+
+ cheatWindowController
+ NSObjectController
+
+
+ emuControlController
+ NSObjectController
+
+
+ inputManager
+ InputManager
+
+
+ inputPrefsView
+ InputPrefsView
+
+
+ mLoadStateSlot
+ NSMenu
+
+
+ mSaveStateSlot
+ NSMenu
+
+
+ migrationDelegate
+ FileMigrationDelegate
+
+
+ prefGeneralView
+ NSView
+
+
+ prefWindow
+ NSWindow
+
+
+ prefWindowController
+ NSObjectController
+
+
+ romInfoPanelController
+ NSObjectController
+
+
+ troubleshootingWindow
+ NSWindow
+
+
+
+
+ IBProjectSource
+ ./Classes/AppDelegate.h
+
+
+
+ CheatWindowDelegate
+ NSObject
+
+ YES
+
+ YES
+ addToList:
+ applyConfiguration:
+ closeCheatDatabaseSheet:
+ removeFromList:
+ resetSearch:
+ runComparativeSearch:
+ runExactValueSearch:
+ selectAllCheatsInDatabase:
+ selectCheatSearchStyle:
+ selectCheatType:
+ selectNoneCheatsInDatabase:
+ setInternalCheatValue:
+ viewDatabase:
+
+
+ YES
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+
+
+
+ YES
+
+ YES
+ addToList:
+ applyConfiguration:
+ closeCheatDatabaseSheet:
+ removeFromList:
+ resetSearch:
+ runComparativeSearch:
+ runExactValueSearch:
+ selectAllCheatsInDatabase:
+ selectCheatSearchStyle:
+ selectCheatType:
+ selectNoneCheatsInDatabase:
+ setInternalCheatValue:
+ viewDatabase:
+
+
+ YES
+
+ addToList:
+ id
+
+
+ applyConfiguration:
+ id
+
+
+ closeCheatDatabaseSheet:
+ id
+
+
+ removeFromList:
+ id
+
+
+ resetSearch:
+ id
+
+
+ runComparativeSearch:
+ id
+
+
+ runExactValueSearch:
+ id
+
+
+ selectAllCheatsInDatabase:
+ id
+
+
+ selectCheatSearchStyle:
+ id
+
+
+ selectCheatType:
+ id
+
+
+ selectNoneCheatsInDatabase:
+ id
+
+
+ setInternalCheatValue:
+ id
+
+
+ viewDatabase:
+ id
+
+
+
+
+ YES
+
+ YES
+ cheatConfigBox
+ cheatDatabaseController
+ cheatDatabaseSheet
+ cheatListController
+ cheatListTable
+ cheatSearchListController
+ cheatSearchListTable
+ cheatSearchView
+ cheatSelectedItemController
+ cheatWindowController
+ searchField
+ viewConfigureActionReplayCheat
+ viewConfigureCodeBreakerCheat
+ viewConfigureInternalCheat
+ viewConfigureNoSelection
+ viewSearchComparativeContinue
+ viewSearchComparativeStart
+ viewSearchExactValue
+ viewSearchNoSelection
+ window
+
+
+ YES
+ NSBox
+ NSArrayController
+ NSWindow
+ NSArrayController
+ NSTableView
+ NSArrayController
+ NSTableView
+ NSView
+ NSObjectController
+ NSObjectController
+ NSSearchField
+ NSView
+ NSView
+ NSView
+ NSView
+ NSView
+ NSView
+ NSView
+ NSView
+ NSWindow
+
+
+
+ YES
+
+ YES
+ cheatConfigBox
+ cheatDatabaseController
+ cheatDatabaseSheet
+ cheatListController
+ cheatListTable
+ cheatSearchListController
+ cheatSearchListTable
+ cheatSearchView
+ cheatSelectedItemController
+ cheatWindowController
+ searchField
+ viewConfigureActionReplayCheat
+ viewConfigureCodeBreakerCheat
+ viewConfigureInternalCheat
+ viewConfigureNoSelection
+ viewSearchComparativeContinue
+ viewSearchComparativeStart
+ viewSearchExactValue
+ viewSearchNoSelection
+ window
+
+
+ YES
+
+ cheatConfigBox
+ NSBox
+
+
+ cheatDatabaseController
+ NSArrayController
+
+
+ cheatDatabaseSheet
+ NSWindow
+
+
+ cheatListController
+ NSArrayController
+
+
+ cheatListTable
+ NSTableView
+
+
+ cheatSearchListController
+ NSArrayController
+
+
+ cheatSearchListTable
+ NSTableView
+
+
+ cheatSearchView
+ NSView
+
+
+ cheatSelectedItemController
+ NSObjectController
+
+
+ cheatWindowController
+ NSObjectController
+
+
+ searchField
+ NSSearchField
+
+
+ viewConfigureActionReplayCheat
+ NSView
+
+
+ viewConfigureCodeBreakerCheat
+ NSView
+
+
+ viewConfigureInternalCheat
+ NSView
+
+
+ viewConfigureNoSelection
+ NSView
+
+
+ viewSearchComparativeContinue
+ NSView
+
+
+ viewSearchComparativeStart
+ NSView
+
+
+ viewSearchExactValue
+ NSView
+
+
+ viewSearchNoSelection
+ NSView
+
+
+ window
+ NSWindow
+
+
+
+
+ IBProjectSource
+ ./Classes/CheatWindowDelegate.h
+
+
+
+ DisplayView
+ NSView
+
+ IBProjectSource
+ ./Classes/DisplayView.h
+
+
+
+ DisplayWindowController
+ NSWindowController
+
+ YES
+
+ YES
+ changeCoreSpeed:
+ changeDisplayGap:
+ changeDisplayMode:
+ changeDisplayOrder:
+ changeDisplayOrientation:
+ changeRotation:
+ changeRotationRelative:
+ changeScale:
+ changeVolume:
+ copy:
+ openRom:
+ reset:
+ saveScreenshotAs:
+ toggleExecutePause:
+ toggleKeepMinDisplaySizeAtNormal:
+ toggleStatusBar:
+ writeDefaultsDisplayGap:
+ writeDefaultsDisplayRotation:
+ writeDefaultsDisplayVideoSettings:
+ writeDefaultsHUDSettings:
+
+
+ YES
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+
+
+
+ YES
+
+ YES
+ changeCoreSpeed:
+ changeDisplayGap:
+ changeDisplayMode:
+ changeDisplayOrder:
+ changeDisplayOrientation:
+ changeRotation:
+ changeRotationRelative:
+ changeScale:
+ changeVolume:
+ copy:
+ openRom:
+ reset:
+ saveScreenshotAs:
+ toggleExecutePause:
+ toggleKeepMinDisplaySizeAtNormal:
+ toggleStatusBar:
+ writeDefaultsDisplayGap:
+ writeDefaultsDisplayRotation:
+ writeDefaultsDisplayVideoSettings:
+ writeDefaultsHUDSettings:
+
+
+ YES
+
+ changeCoreSpeed:
+ id
+
+
+ changeDisplayGap:
+ id
+
+
+ changeDisplayMode:
+ id
+
+
+ changeDisplayOrder:
+ id
+
+
+ changeDisplayOrientation:
+ id
+
+
+ changeRotation:
+ id
+
+
+ changeRotationRelative:
+ id
+
+
+ changeScale:
+ id
+
+
+ changeVolume:
+ id
+
+
+ copy:
+ id
+
+
+ openRom:
+ id
+
+
+ reset:
+ id
+
+
+ saveScreenshotAs:
+ id
+
+
+ toggleExecutePause:
+ id
+
+
+ toggleKeepMinDisplaySizeAtNormal:
+ id
+
+
+ toggleStatusBar:
+ id
+
+
+ writeDefaultsDisplayGap:
+ id
+
+
+ writeDefaultsDisplayRotation:
+ id
+
+
+ writeDefaultsDisplayVideoSettings:
+ id
+
+
+ writeDefaultsHUDSettings:
+ id
+
+
+
+
+ YES
+
+ YES
+ saveScreenshotPanelAccessoryView
+ view
+
+
+ YES
+ NSView
+ DisplayView
+
+
+
+ YES
+
+ YES
+ saveScreenshotPanelAccessoryView
+ view
+
+
+ YES
+
+ saveScreenshotPanelAccessoryView
+ NSView
+
+
+ view
+ DisplayView
+
+
+
+
+ IBProjectSource
+ ./Classes/DisplayWindowController.h
+
+
+
+ EmuControllerDelegate
+ NSObject
+
+ YES
+
+ YES
+ changeAudioEngine:
+ changeCoreEmuFlags:
+ changeCoreSpeed:
+ changeFirmwareSettings:
+ changeRomSaveType:
+ changeSpuAdvancedLogic:
+ changeSpuInterpolationMode:
+ changeSpuSyncMethod:
+ changeSpuSyncMode:
+ changeVolume:
+ chooseSlot1R4Directory:
+ closeRom:
+ closeSheet:
+ exportRomSave:
+ importRomSave:
+ loadEmuSaveStateSlot:
+ loadRecentRom:
+ newDisplayWindow:
+ openEmuSaveState:
+ openRom:
+ reset:
+ revealGameDataFolderInFinder:
+ revealRomInFinder:
+ revertEmuSaveState:
+ saveEmuSaveState:
+ saveEmuSaveStateAs:
+ saveEmuSaveStateSlot:
+ slot1Eject:
+ toggleAutoFrameSkip:
+ toggleCheats:
+ toggleExecutePause:
+ toggleGPUState:
+ toggleSpeedLimiter:
+ writeDefaults3DRenderingSettings:
+ writeDefaultsEmulationSettings:
+ writeDefaultsSlot1Settings:
+ writeDefaultsSoundSettings:
+
+
+ YES
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+
+
+
+ YES
+
+ YES
+ changeAudioEngine:
+ changeCoreEmuFlags:
+ changeCoreSpeed:
+ changeFirmwareSettings:
+ changeRomSaveType:
+ changeSpuAdvancedLogic:
+ changeSpuInterpolationMode:
+ changeSpuSyncMethod:
+ changeSpuSyncMode:
+ changeVolume:
+ chooseSlot1R4Directory:
+ closeRom:
+ closeSheet:
+ exportRomSave:
+ importRomSave:
+ loadEmuSaveStateSlot:
+ loadRecentRom:
+ newDisplayWindow:
+ openEmuSaveState:
+ openRom:
+ reset:
+ revealGameDataFolderInFinder:
+ revealRomInFinder:
+ revertEmuSaveState:
+ saveEmuSaveState:
+ saveEmuSaveStateAs:
+ saveEmuSaveStateSlot:
+ slot1Eject:
+ toggleAutoFrameSkip:
+ toggleCheats:
+ toggleExecutePause:
+ toggleGPUState:
+ toggleSpeedLimiter:
+ writeDefaults3DRenderingSettings:
+ writeDefaultsEmulationSettings:
+ writeDefaultsSlot1Settings:
+ writeDefaultsSoundSettings:
+
+
+ YES
+
+ changeAudioEngine:
+ id
+
+
+ changeCoreEmuFlags:
+ id
+
+
+ changeCoreSpeed:
+ id
+
+
+ changeFirmwareSettings:
+ id
+
+
+ changeRomSaveType:
+ id
+
+
+ changeSpuAdvancedLogic:
+ id
+
+
+ changeSpuInterpolationMode:
+ id
+
+
+ changeSpuSyncMethod:
+ id
+
+
+ changeSpuSyncMode:
+ id
+
+
+ changeVolume:
+ id
+
+
+ chooseSlot1R4Directory:
+ id
+
+
+ closeRom:
+ id
+
+
+ closeSheet:
+ id
+
+
+ exportRomSave:
+ id
+
+
+ importRomSave:
+ id
+
+
+ loadEmuSaveStateSlot:
+ id
+
+
+ loadRecentRom:
+ id
+
+
+ newDisplayWindow:
+ id
+
+
+ openEmuSaveState:
+ id
+
+
+ openRom:
+ id
+
+
+ reset:
+ id
+
+
+ revealGameDataFolderInFinder:
+ id
+
+
+ revealRomInFinder:
+ id
+
+
+ revertEmuSaveState:
+ id
+
+
+ saveEmuSaveState:
+ id
+
+
+ saveEmuSaveStateAs:
+ id
+
+
+ saveEmuSaveStateSlot:
+ id
+
+
+ slot1Eject:
+ id
+
+
+ toggleAutoFrameSkip:
+ id
+
+
+ toggleCheats:
+ id
+
+
+ toggleExecutePause:
+ id
+
+
+ toggleGPUState:
+ id
+
+
+ toggleSpeedLimiter:
+ id
+
+
+ writeDefaults3DRenderingSettings:
+ id
+
+
+ writeDefaultsEmulationSettings:
+ id
+
+
+ writeDefaultsSlot1Settings:
+ id
+
+
+ writeDefaultsSoundSettings:
+ id
+
+
+
+
+ YES
+
+ YES
+ cdsCoreController
+ cdsSoundController
+ cheatDatabaseController
+ cheatListController
+ cheatWindowController
+ cheatWindowDelegate
+ exportRomSavePanelAccessoryView
+ firmwarePanelController
+ inputManager
+ romInfoPanelController
+ saveFileMigrationSheet
+ saveStatePrecloseSheet
+ slot1ManagerWindow
+
+
+ YES
+ NSObjectController
+ NSObjectController
+ NSArrayController
+ NSArrayController
+ NSObjectController
+ CheatWindowDelegate
+ NSView
+ NSObjectController
+ InputManager
+ NSObjectController
+ NSWindow
+ NSWindow
+ NSWindow
+
+
+
+ YES
+
+ YES
+ cdsCoreController
+ cdsSoundController
+ cheatDatabaseController
+ cheatListController
+ cheatWindowController
+ cheatWindowDelegate
+ exportRomSavePanelAccessoryView
+ firmwarePanelController
+ inputManager
+ romInfoPanelController
+ saveFileMigrationSheet
+ saveStatePrecloseSheet
+ slot1ManagerWindow
+
+
+ YES
+
+ cdsCoreController
+ NSObjectController
+
+
+ cdsSoundController
+ NSObjectController
+
+
+ cheatDatabaseController
+ NSArrayController
+
+
+ cheatListController
+ NSArrayController
+
+
+ cheatWindowController
+ NSObjectController
+
+
+ cheatWindowDelegate
+ CheatWindowDelegate
+
+
+ exportRomSavePanelAccessoryView
+ NSView
+
+
+ firmwarePanelController
+ NSObjectController
+
+
+ inputManager
+ InputManager
+
+
+ romInfoPanelController
+ NSObjectController
+
+
+ saveFileMigrationSheet
+ NSWindow
+
+
+ saveStatePrecloseSheet
+ NSWindow
+
+
+ slot1ManagerWindow
+ NSWindow
+
+
+
+
+ IBProjectSource
+ ./Classes/EmuControllerDelegate.h
+
+
+
+ FileMigrationDelegate
+ NSObject
+
+ YES
+
+ YES
+ handleChoice:
+ selectAll:
+ selectNone:
+ updateAndShowWindow:
+
+
+ YES
+ id
+ id
+ id
+ id
+
+
+
+ YES
+
+ YES
+ handleChoice:
+ selectAll:
+ selectNone:
+ updateAndShowWindow:
+
+
+ YES
+
+ handleChoice:
+ id
+
+
+ selectAll:
+ id
+
+
+ selectNone:
+ id
+
+
+ updateAndShowWindow:
+ id
+
+
+
+
+ YES
+
+ YES
+ dummyObject
+ fileListController
+ window
+
+
+ YES
+ NSObject
+ NSArrayController
+ NSWindow
+
+
+
+ YES
+
+ YES
+ dummyObject
+ fileListController
+ window
+
+
+ YES
+
+ dummyObject
+ NSObject
+
+
+ fileListController
+ NSArrayController
+
+
+ window
+ NSWindow
+
+
+
+
+ IBProjectSource
+ ./Classes/FileMigrationDelegate.h
+
+
+
+ InputManager
+ NSObject
+
+ emuControl
+ EmuControllerDelegate
+
+
+ emuControl
+
+ emuControl
+ EmuControllerDelegate
+
+
+
+ IBProjectSource
+ ./Classes/InputManager.h
+
+
+
+ InputPrefsView
+ NSView
+
+ YES
+
+ YES
+ audioFileChoose:
+ audioFileChooseNone:
+ changeSpeed:
+ closeProfileRenameSheet:
+ closeProfileSheet:
+ closeSettingsSheet:
+ profileApply:
+ profileDelete:
+ profileNew:
+ profileRename:
+ profileSave:
+ profileSelect:
+ profileView:
+ removeInput:
+ setInputAdd:
+ showSettingsSheet:
+
+
+ YES
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+
+
+
+ YES
+
+ YES
+ audioFileChoose:
+ audioFileChooseNone:
+ changeSpeed:
+ closeProfileRenameSheet:
+ closeProfileSheet:
+ closeSettingsSheet:
+ profileApply:
+ profileDelete:
+ profileNew:
+ profileRename:
+ profileSave:
+ profileSelect:
+ profileView:
+ removeInput:
+ setInputAdd:
+ showSettingsSheet:
+
+
+ YES
+
+ audioFileChoose:
+ id
+
+
+ audioFileChooseNone:
+ id
+
+
+ changeSpeed:
+ id
+
+
+ closeProfileRenameSheet:
+ id
+
+
+ closeProfileSheet:
+ id
+
+
+ closeSettingsSheet:
+ id
+
+
+ profileApply:
+ id
+
+
+ profileDelete:
+ id
+
+
+ profileNew:
+ id
+
+
+ profileRename:
+ id
+
+
+ profileSave:
+ id
+
+
+ profileSelect:
+ id
+
+
+ profileView:
+ id
+
+
+ removeInput:
+ id
+
+
+ setInputAdd:
+ id
+
+
+ showSettingsSheet:
+ id
+
+
+
+
+ YES
+
+ YES
+ inputManager
+ inputPrefOutlineView
+ inputProfileController
+ inputProfileMenu
+ inputProfileNextButton
+ inputProfilePreviousButton
+ inputProfileRenameSheet
+ inputProfileSheet
+ inputSettingsController
+ inputSettingsGPUState
+ inputSettingsLoadStateSlot
+ inputSettingsMicrophone
+ inputSettingsSaveStateSlot
+ inputSettingsSetSpeedLimit
+ inputSettingsTouch
+ prefWindow
+
+
+ YES
+ InputManager
+ NSOutlineView
+ InputProfileController
+ NSPopUpButton
+ NSButton
+ NSButton
+ NSWindow
+ NSWindow
+ NSObjectController
+ NSWindow
+ NSWindow
+ NSWindow
+ NSWindow
+ NSWindow
+ NSWindow
+ NSWindow
+
+
+
+ YES
+
+ YES
+ inputManager
+ inputPrefOutlineView
+ inputProfileController
+ inputProfileMenu
+ inputProfileNextButton
+ inputProfilePreviousButton
+ inputProfileRenameSheet
+ inputProfileSheet
+ inputSettingsController
+ inputSettingsGPUState
+ inputSettingsLoadStateSlot
+ inputSettingsMicrophone
+ inputSettingsSaveStateSlot
+ inputSettingsSetSpeedLimit
+ inputSettingsTouch
+ prefWindow
+
+
+ YES
+
+ inputManager
+ InputManager
+
+
+ inputPrefOutlineView
+ NSOutlineView
+
+
+ inputProfileController
+ InputProfileController
+
+
+ inputProfileMenu
+ NSPopUpButton
+
+
+ inputProfileNextButton
+ NSButton
+
+
+ inputProfilePreviousButton
+ NSButton
+
+
+ inputProfileRenameSheet
+ NSWindow
+
+
+ inputProfileSheet
+ NSWindow
+
+
+ inputSettingsController
+ NSObjectController
+
+
+ inputSettingsGPUState
+ NSWindow
+
+
+ inputSettingsLoadStateSlot
+ NSWindow
+
+
+ inputSettingsMicrophone
+ NSWindow
+
+
+ inputSettingsSaveStateSlot
+ NSWindow
+
+
+ inputSettingsSetSpeedLimit
+ NSWindow
+
+
+ inputSettingsTouch
+ NSWindow
+
+
+ prefWindow
+ NSWindow
+
+
+
+
+ IBProjectSource
+ ./Classes/InputPrefsView.h
+
+
+
+ InputProfileController
+ NSObjectController
+
+ YES
+
+ YES
+ inputManager
+ profileOutlineView
+
+
+ YES
+ InputManager
+ NSOutlineView
+
+
+
+ YES
+
+ YES
+ inputManager
+ profileOutlineView
+
+
+ YES
+
+ inputManager
+ InputManager
+
+
+ profileOutlineView
+ NSOutlineView
+
+
+
+
+ IBProjectSource
+ ./Classes/InputProfileController.h
+
+
+
+ PreferencesWindowDelegate
+ NSObject
+
+ YES
+
+ YES
+ chooseARM7BiosImage:
+ chooseARM9BiosImage:
+ chooseAdvansceneDatabase:
+ chooseCheatDatabase:
+ chooseFirmwareImage:
+ chooseRomForAutoload:
+ closeFirmwareConfigSheet:
+ configureInternalFirmware:
+ selectAutoloadRomOption:
+ selectDisplayMode:
+ selectDisplayRotation:
+ selectDisplaySize:
+ selectSPUSyncMethod:
+ selectSPUSyncMode:
+ selectVideoFilterType:
+ setUseBilinear:
+ showDisplayView:
+ showEmulationView:
+ showGeneralView:
+ showInputView:
+ showSoundView:
+ updateVolumeIcon:
+
+
+ YES
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+ id
+
+
+
+ YES
+
+ YES
+ chooseARM7BiosImage:
+ chooseARM9BiosImage:
+ chooseAdvansceneDatabase:
+ chooseCheatDatabase:
+ chooseFirmwareImage:
+ chooseRomForAutoload:
+ closeFirmwareConfigSheet:
+ configureInternalFirmware:
+ selectAutoloadRomOption:
+ selectDisplayMode:
+ selectDisplayRotation:
+ selectDisplaySize:
+ selectSPUSyncMethod:
+ selectSPUSyncMode:
+ selectVideoFilterType:
+ setUseBilinear:
+ showDisplayView:
+ showEmulationView:
+ showGeneralView:
+ showInputView:
+ showSoundView:
+ updateVolumeIcon:
+
+
+ YES
+
+ chooseARM7BiosImage:
+ id
+
+
+ chooseARM9BiosImage:
+ id
+
+
+ chooseAdvansceneDatabase:
+ id
+
+
+ chooseCheatDatabase:
+ id
+
+
+ chooseFirmwareImage:
+ id
+
+
+ chooseRomForAutoload:
+ id
+
+
+ closeFirmwareConfigSheet:
+ id
+
+
+ configureInternalFirmware:
+ id
+
+
+ selectAutoloadRomOption:
+ id
+
+
+ selectDisplayMode:
+ id
+
+
+ selectDisplayRotation:
+ id
+
+
+ selectDisplaySize:
+ id
+
+
+ selectSPUSyncMethod:
+ id
+
+
+ selectSPUSyncMode:
+ id
+
+
+ selectVideoFilterType:
+ id
+
+
+ setUseBilinear:
+ id
+
+
+ showDisplayView:
+ id
+
+
+ showEmulationView:
+ id
+
+
+ showGeneralView:
+ id
+
+
+ showInputView:
+ id
+
+
+ showSoundView:
+ id
+
+
+ updateVolumeIcon:
+ id
+
+
+
+
+ YES
+
+ YES
+ cdsCoreController
+ cheatDatabaseController
+ cheatWindowController
+ displayRotationField
+ displayRotationMenu
+ displayRotationMenuCustomItem
+ emuController
+ firmwareConfigSheet
+ prefWindowController
+ previewImageView
+ spuSyncMethodMenu
+ viewDisplay
+ viewEmulation
+ viewGeneral
+ viewInput
+ viewSound
+ window
+
+
+ YES
+ NSObjectController
+ NSArrayController
+ NSObjectController
+ NSTextField
+ NSPopUpButton
+ NSMenuItem
+ NSObjectController
+ NSWindow
+ NSObjectController
+ NSImageView
+ NSPopUpButton
+ NSView
+ NSView
+ NSView
+ InputPrefsView
+ NSView
+ NSWindow
+
+
+
+ YES
+
+ YES
+ cdsCoreController
+ cheatDatabaseController
+ cheatWindowController
+ displayRotationField
+ displayRotationMenu
+ displayRotationMenuCustomItem
+ emuController
+ firmwareConfigSheet
+ prefWindowController
+ previewImageView
+ spuSyncMethodMenu
+ viewDisplay
+ viewEmulation
+ viewGeneral
+ viewInput
+ viewSound
+ window
+
+
+ YES
+
+ cdsCoreController
+ NSObjectController
+
+
+ cheatDatabaseController
+ NSArrayController
+
+
+ cheatWindowController
+ NSObjectController
+
+
+ displayRotationField
+ NSTextField
+
+
+ displayRotationMenu
+ NSPopUpButton
+
+
+ displayRotationMenuCustomItem
+ NSMenuItem
+
+
+ emuController
+ NSObjectController
+
+
+ firmwareConfigSheet
+ NSWindow
+
+
+ prefWindowController
+ NSObjectController
+
+
+ previewImageView
+ NSImageView
+
+
+ spuSyncMethodMenu
+ NSPopUpButton
+
+
+ viewDisplay
+ NSView
+
+
+ viewEmulation
+ NSView
+
+
+ viewGeneral
+ NSView
+
+
+ viewInput
+ InputPrefsView
+
+
+ viewSound
+ NSView
+
+
+ window
+ NSWindow
+
+
+
+
+ IBProjectSource
+ ./Classes/PreferencesWindowDelegate.h
+
+
+
+ TroubleshootingWindowDelegate
+ NSObject
+
+ YES
+
+ YES
+ backForm:
+ continueToFinalForm:
+ copyInfoToPasteboard:
+ copyRomInfoToTextFields:
+ goToWebpage:
+
+
+ YES
+ id
+ id
+ id
+ id
+ id
+
+
+
+ YES
+
+ YES
+ backForm:
+ continueToFinalForm:
+ copyInfoToPasteboard:
+ copyRomInfoToTextFields:
+ goToWebpage:
+
+
+ YES
+
+ backForm:
+ id
+
+
+ continueToFinalForm:
+ id
+
+
+ copyInfoToPasteboard:
+ id
+
+
+ copyRomInfoToTextFields:
+ id
+
+
+ goToWebpage:
+ id
+
+
+
+
+ YES
+
+ YES
+ romInfoController
+ troubleshootingWindowController
+ viewBugReport
+ viewFinishedForm
+ viewSupportRequest
+ window
+
+
+ YES
+ NSObjectController
+ NSObjectController
+ NSView
+ NSView
+ NSView
+ NSWindow
+
+
+
+ YES
+
+ YES
+ romInfoController
+ troubleshootingWindowController
+ viewBugReport
+ viewFinishedForm
+ viewSupportRequest
+ window
+
+
+ YES
+
+ romInfoController
+ NSObjectController
+
+
+ troubleshootingWindowController
+ NSObjectController
+
+
+ viewBugReport
+ NSView
+
+
+ viewFinishedForm
+ NSView
+
+
+ viewSupportRequest
+ NSView
+
+
+ window
+ NSWindow
+
+
+
+
+ IBProjectSource
+ ./Classes/TroubleshootingWindowDelegate.h
+
+
+
-
0
IBCocoaFramework
diff --git a/desmume/src/cocoa/userinterface/DisplayWindowController.h b/desmume/src/cocoa/userinterface/DisplayWindowController.h
index 4d166a24c..3be12eb00 100644
--- a/desmume/src/cocoa/userinterface/DisplayWindowController.h
+++ b/desmume/src/cocoa/userinterface/DisplayWindowController.h
@@ -161,7 +161,20 @@
- (IBAction) reset:(id)sender;
- (IBAction) changeCoreSpeed:(id)sender;
- (IBAction) openRom:(id)sender;
-- (IBAction) changeRotationRelative:(id)sender;
- (IBAction) saveScreenshotAs:(id)sender;
+// View Menu
+- (IBAction) changeScale:(id)sender;
+- (IBAction) changeRotation:(id)sender;
+- (IBAction) changeRotationRelative:(id)sender;
+- (IBAction) changeDisplayMode:(id)sender;
+- (IBAction) changeDisplayOrientation:(id)sender;
+- (IBAction) changeDisplayOrder:(id)sender;
+- (IBAction) changeDisplayGap:(id)sender;
+
+- (IBAction) writeDefaultsDisplayRotation:(id)sender;
+- (IBAction) writeDefaultsDisplayGap:(id)sender;
+- (IBAction) writeDefaultsHUDSettings:(id)sender;
+- (IBAction) writeDefaultsDisplayVideoSettings:(id)sender;
+
@end
diff --git a/desmume/src/cocoa/userinterface/DisplayWindowController.mm b/desmume/src/cocoa/userinterface/DisplayWindowController.mm
index 5ba69bd22..8878ed7e8 100644
--- a/desmume/src/cocoa/userinterface/DisplayWindowController.mm
+++ b/desmume/src/cocoa/userinterface/DisplayWindowController.mm
@@ -704,12 +704,6 @@ enum OGLVertexAttributeID
[emuControl openRom:sender];
}
-- (IBAction) changeRotationRelative:(id)sender
-{
- const double angleDegrees = [self displayRotation] + (double)[CocoaDSUtil getIBActionSenderTag:sender];
- [self setDisplayRotation:angleDegrees];
-}
-
- (IBAction) saveScreenshotAs:(id)sender
{
[emuControl pauseCore];
@@ -730,6 +724,211 @@ enum OGLVertexAttributeID
}
}
+- (IBAction) changeScale:(id)sender
+{
+ [self setDisplayScale:(double)[CocoaDSUtil getIBActionSenderTag:sender] / 100.0];
+}
+
+- (IBAction) changeRotation:(id)sender
+{
+ // Get the rotation value from the sender.
+ if ([sender isMemberOfClass:[NSSlider class]])
+ {
+ [self setDisplayRotation:[(NSSlider *)sender doubleValue]];
+ }
+ else
+ {
+ [self setDisplayRotation:(double)[CocoaDSUtil getIBActionSenderTag:sender]];
+ }
+}
+
+- (IBAction) changeRotationRelative:(id)sender
+{
+ const double angleDegrees = [self displayRotation] + (double)[CocoaDSUtil getIBActionSenderTag:sender];
+ [self setDisplayRotation:angleDegrees];
+}
+
+- (IBAction) changeDisplayMode:(id)sender
+{
+ const NSInteger newDisplayModeID = [CocoaDSUtil getIBActionSenderTag:sender];
+
+ if (newDisplayModeID == [self displayMode])
+ {
+ return;
+ }
+
+ [self setDisplayMode:newDisplayModeID];
+}
+
+- (IBAction) changeDisplayOrientation:(id)sender
+{
+ const NSInteger newDisplayOrientation = [CocoaDSUtil getIBActionSenderTag:sender];
+
+ if (newDisplayOrientation == [self displayOrientation])
+ {
+ return;
+ }
+
+ [self setDisplayOrientation:newDisplayOrientation];
+}
+
+- (IBAction) changeDisplayOrder:(id)sender
+{
+ [self setDisplayOrder:[CocoaDSUtil getIBActionSenderTag:sender]];
+}
+
+- (IBAction) changeDisplayGap:(id)sender
+{
+ [self setDisplayGap:(double)[CocoaDSUtil getIBActionSenderTag:sender] / 100.0];
+}
+
+- (IBAction) writeDefaultsDisplayRotation:(id)sender
+{
+ [[NSUserDefaults standardUserDefaults] setDouble:[self displayRotation] forKey:@"DisplayView_Rotation"];
+}
+
+- (IBAction) writeDefaultsDisplayGap:(id)sender
+{
+ [[NSUserDefaults standardUserDefaults] setDouble:([self displayGap] * 100.0) forKey:@"DisplayViewCombo_Gap"];
+}
+
+- (IBAction) writeDefaultsHUDSettings:(id)sender
+{
+ // TODO: Not implemented.
+}
+
+- (IBAction) writeDefaultsDisplayVideoSettings:(id)sender
+{
+ [[NSUserDefaults standardUserDefaults] setInteger:[self videoFilterType] forKey:@"DisplayView_VideoFilter"];
+ [[NSUserDefaults standardUserDefaults] setBool:[self useBilinearOutput] forKey:@"DisplayView_UseBilinearOutput"];
+ [[NSUserDefaults standardUserDefaults] setBool:[self useVerticalSync] forKey:@"DisplayView_UseVerticalSync"];
+}
+
+#pragma mark NSUserInterfaceValidations Protocol
+
+- (BOOL)validateUserInterfaceItem:(id )theItem
+{
+ BOOL enable = YES;
+ const SEL theAction = [theItem action];
+
+ if (theAction == @selector(changeScale:))
+ {
+ const NSInteger viewScale = (NSInteger)([self displayScale] * 100.0);
+
+ if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
+ {
+ [(NSMenuItem*)theItem setState:(viewScale == [theItem tag]) ? NSOnState : NSOffState];
+ }
+ }
+ else if (theAction == @selector(changeRotation:))
+ {
+ const NSInteger viewRotation = (NSInteger)[self displayRotation];
+
+ if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
+ {
+ if ([theItem tag] == -1)
+ {
+ if (viewRotation == 0 ||
+ viewRotation == 90 ||
+ viewRotation == 180 ||
+ viewRotation == 270)
+ {
+ [(NSMenuItem*)theItem setState:NSOffState];
+ }
+ else
+ {
+ [(NSMenuItem*)theItem setState:NSOnState];
+ }
+ }
+ else
+ {
+ [(NSMenuItem*)theItem setState:(viewRotation == [theItem tag]) ? NSOnState : NSOffState];
+ }
+ }
+ }
+ else if (theAction == @selector(changeDisplayMode:))
+ {
+ if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
+ {
+ [(NSMenuItem*)theItem setState:([self displayMode] == [theItem tag]) ? NSOnState : NSOffState];
+ }
+ }
+ else if (theAction == @selector(changeDisplayOrientation:))
+ {
+ if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
+ {
+ [(NSMenuItem*)theItem setState:([self displayOrientation] == [theItem tag]) ? NSOnState : NSOffState];
+ }
+ }
+ else if (theAction == @selector(changeDisplayOrder:))
+ {
+ if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
+ {
+ [(NSMenuItem*)theItem setState:([self displayOrder] == [theItem tag]) ? NSOnState : NSOffState];
+ }
+ }
+ else if (theAction == @selector(changeDisplayGap:))
+ {
+ if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
+ {
+ const NSInteger gapScalar = (NSInteger)([self displayGap] * 100.0);
+
+ if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
+ {
+ if ([theItem tag] == -1)
+ {
+ if (gapScalar == 0 ||
+ gapScalar == 50 ||
+ gapScalar == 100 ||
+ gapScalar == 150 ||
+ gapScalar == 200)
+ {
+ [(NSMenuItem*)theItem setState:NSOffState];
+ }
+ else
+ {
+ [(NSMenuItem*)theItem setState:NSOnState];
+ }
+ }
+ else
+ {
+ [(NSMenuItem*)theItem setState:(gapScalar == [theItem tag]) ? NSOnState : NSOffState];
+ }
+ }
+ }
+ }
+ else if (theAction == @selector(hudDisable:))
+ {
+ if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
+ {
+ [(NSMenuItem*)theItem setTitle:([[self view] isHudEnabled]) ? NSSTRING_TITLE_DISABLE_HUD : NSSTRING_TITLE_ENABLE_HUD];
+ }
+ }
+ else if (theAction == @selector(toggleStatusBar:))
+ {
+ if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
+ {
+ [(NSMenuItem*)theItem setTitle:([self isShowingStatusBar]) ? NSSTRING_TITLE_HIDE_STATUS_BAR : NSSTRING_TITLE_SHOW_STATUS_BAR];
+ }
+ }
+ else if (theAction == @selector(toggleKeepMinDisplaySizeAtNormal:))
+ {
+ if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
+ {
+ [(NSMenuItem*)theItem setState:([self isMinSizeNormal]) ? NSOnState : NSOffState];
+ }
+ }
+ else if (theAction == @selector(toggleToolbarShown:))
+ {
+ if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
+ {
+ [(NSMenuItem*)theItem setTitle:([[[self window] toolbar] isVisible]) ? NSSTRING_TITLE_HIDE_TOOLBAR : NSSTRING_TITLE_SHOW_TOOLBAR];
+ }
+ }
+
+ return enable;
+}
+
#pragma mark NSWindowDelegate Protocol
- (void)windowDidLoad
diff --git a/desmume/src/cocoa/userinterface/EmuControllerDelegate.h b/desmume/src/cocoa/userinterface/EmuControllerDelegate.h
index e97d76cfd..1d90183b2 100644
--- a/desmume/src/cocoa/userinterface/EmuControllerDelegate.h
+++ b/desmume/src/cocoa/userinterface/EmuControllerDelegate.h
@@ -145,7 +145,6 @@ class AudioSampleBlockGenerator;
- (IBAction) newDisplayWindow:(id)sender;
- (IBAction) openRom:(id)sender;
- (IBAction) loadRecentRom:(id)sender;
-- (IBAction) closeWindow:(id)sender;
- (IBAction) closeRom:(id)sender;
- (IBAction) revealRomInFinder:(id)sender;
- (IBAction) revealGameDataFolderInFinder:(id)sender;
@@ -166,22 +165,8 @@ class AudioSampleBlockGenerator;
- (IBAction) reset:(id)sender;
- (IBAction) changeRomSaveType:(id)sender;
-// View Menu
-- (IBAction) changeScale:(id)sender;
-- (IBAction) changeRotation:(id)sender;
-- (IBAction) changeRotationRelative:(id)sender;
-- (IBAction) changeDisplayMode:(id)sender;
-- (IBAction) changeDisplayOrientation:(id)sender;
-- (IBAction) changeDisplayOrder:(id)sender;
-- (IBAction) changeDisplayGap:(id)sender;
-- (IBAction) toggleKeepMinDisplaySizeAtNormal:(id)sender;
-- (IBAction) toggleStatusBar:(id)sender;
-- (IBAction) toggleToolbarShown:(id)sender;
-- (IBAction) runToolbarCustomizationPalette:(id)sender;
-
// Tools Menu
- (IBAction) toggleGPUState:(id)sender;
-- (IBAction) saveScreenshotAs:(id)sender;
- (IBAction) changeCoreSpeed:(id)sender;
- (IBAction) changeCoreEmuFlags:(id)sender;
@@ -197,10 +182,6 @@ class AudioSampleBlockGenerator;
- (IBAction) chooseSlot1R4Directory:(id)sender;
- (IBAction) slot1Eject:(id)sender;
-- (IBAction) writeDefaultsDisplayRotation:(id)sender;
-- (IBAction) writeDefaultsDisplayGap:(id)sender;
-- (IBAction) writeDefaultsHUDSettings:(id)sender;
-- (IBAction) writeDefaultsDisplayVideoSettings:(id)sender;
- (IBAction) writeDefaults3DRenderingSettings:(id)sender;
- (IBAction) writeDefaultsEmulationSettings:(id)sender;
- (IBAction) writeDefaultsSlot1Settings:(id)sender;
diff --git a/desmume/src/cocoa/userinterface/EmuControllerDelegate.mm b/desmume/src/cocoa/userinterface/EmuControllerDelegate.mm
index e47697d69..71feb4218 100644
--- a/desmume/src/cocoa/userinterface/EmuControllerDelegate.mm
+++ b/desmume/src/cocoa/userinterface/EmuControllerDelegate.mm
@@ -491,11 +491,6 @@
// Dummy selector, used for UI validation only.
}
-- (IBAction) closeWindow:(id)sender
-{
- [[mainWindow window] performClose:sender];
-}
-
- (IBAction) closeRom:(id)sender
{
[self handleUnloadRom:REASONFORCLOSE_NORMAL romToLoad:nil];
@@ -756,31 +751,6 @@
[inputManager dispatchCommandUsingIBAction:_cmd sender:sender];
}
-- (IBAction) toggleKeepMinDisplaySizeAtNormal:(id)sender
-{
- [mainWindow toggleKeepMinDisplaySizeAtNormal:sender];
-}
-
-- (IBAction) toggleStatusBar:(id)sender
-{
- [mainWindow toggleStatusBar:sender];
-}
-
-- (IBAction) toggleToolbarShown:(id)sender
-{
- [[mainWindow window] toggleToolbarShown:sender];
-}
-
-- (IBAction) runToolbarCustomizationPalette:(id)sender
-{
- [[mainWindow window] runToolbarCustomizationPalette:sender];
-}
-
-- (IBAction) saveScreenshotAs:(id)sender
-{
- [mainWindow saveScreenshotAs:sender];
-}
-
- (IBAction) toggleGPUState:(id)sender
{
[inputManager dispatchCommandUsingIBAction:_cmd sender:sender];
@@ -802,10 +772,17 @@
- (IBAction) changeCoreSpeed:(id)sender
{
- CGFloat newSpeedScalar = (CGFloat)[CocoaDSUtil getIBActionSenderTag:sender] / 100.0f;
- CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
- [cdsCore setSpeedScalar:newSpeedScalar];
- lastSetSpeedScalar = newSpeedScalar;
+ if ([sender isKindOfClass:[NSSlider class]])
+ {
+ lastSetSpeedScalar = [(NSSlider *)sender floatValue];
+ }
+ else
+ {
+ const CGFloat newSpeedScalar = (CGFloat)[CocoaDSUtil getIBActionSenderTag:sender] / 100.0f;
+ CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
+ [cdsCore setSpeedScalar:newSpeedScalar];
+ lastSetSpeedScalar = newSpeedScalar;
+ }
}
- (IBAction) changeCoreEmuFlags:(id)sender
@@ -874,63 +851,6 @@
[CocoaDSUtil messageSendOneWayWithInteger:[cdsSpeaker receivePort] msgID:MESSAGE_SET_SPU_SYNC_METHOD integerValue:[CocoaDSUtil getIBActionSenderTag:sender]];
}
-- (IBAction) changeScale:(id)sender
-{
- [mainWindow setDisplayScale:(double)[CocoaDSUtil getIBActionSenderTag:sender] / 100.0];
-}
-
-- (IBAction) changeRotation:(id)sender
-{
- // Get the rotation value from the sender.
- if ([sender isMemberOfClass:[NSSlider class]])
- {
- [mainWindow setDisplayRotation:[(NSSlider *)sender doubleValue]];
- }
- else
- {
- [mainWindow setDisplayRotation:(double)[CocoaDSUtil getIBActionSenderTag:sender]];
- }
-}
-
-- (IBAction) changeRotationRelative:(id)sender
-{
- [inputManager dispatchCommandUsingIBAction:_cmd sender:sender];
-}
-
-- (IBAction) changeDisplayMode:(id)sender
-{
- const NSInteger newDisplayModeID = [CocoaDSUtil getIBActionSenderTag:sender];
-
- if (newDisplayModeID == [mainWindow displayMode])
- {
- return;
- }
-
- [mainWindow setDisplayMode:newDisplayModeID];
-}
-
-- (IBAction) changeDisplayOrientation:(id)sender
-{
- const NSInteger newDisplayOrientation = [CocoaDSUtil getIBActionSenderTag:sender];
-
- if (newDisplayOrientation == [mainWindow displayOrientation])
- {
- return;
- }
-
- [mainWindow setDisplayOrientation:newDisplayOrientation];
-}
-
-- (IBAction) changeDisplayOrder:(id)sender
-{
- [mainWindow setDisplayOrder:[CocoaDSUtil getIBActionSenderTag:sender]];
-}
-
-- (IBAction) changeDisplayGap:(id)sender
-{
- [mainWindow setDisplayGap:(double)[CocoaDSUtil getIBActionSenderTag:sender] / 100.0];
-}
-
- (IBAction) chooseSlot1R4Directory:(id)sender
{
NSOpenPanel *panel = [NSOpenPanel openPanel];
@@ -964,28 +884,6 @@
[cdsCore slot1Eject];
}
-- (IBAction) writeDefaultsDisplayRotation:(id)sender
-{
- [[NSUserDefaults standardUserDefaults] setDouble:[mainWindow displayRotation] forKey:@"DisplayView_Rotation"];
-}
-
-- (IBAction) writeDefaultsDisplayGap:(id)sender
-{
- [[NSUserDefaults standardUserDefaults] setDouble:([mainWindow displayGap] * 100.0) forKey:@"DisplayViewCombo_Gap"];
-}
-
-- (IBAction) writeDefaultsHUDSettings:(id)sender
-{
- // TODO: Not implemented.
-}
-
-- (IBAction) writeDefaultsDisplayVideoSettings:(id)sender
-{
- [[NSUserDefaults standardUserDefaults] setInteger:[mainWindow videoFilterType] forKey:@"DisplayView_VideoFilter"];
- [[NSUserDefaults standardUserDefaults] setBool:[mainWindow useBilinearOutput] forKey:@"DisplayView_UseBilinearOutput"];
- [[NSUserDefaults standardUserDefaults] setBool:[mainWindow useVerticalSync] forKey:@"DisplayView_UseVerticalSync"];
-}
-
- (IBAction) writeDefaults3DRenderingSettings:(id)sender
{
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
@@ -2149,120 +2047,6 @@
[(NSMenuItem*)theItem setState:([cdsCore.cdsGPU gpuStateByBit:[theItem tag]]) ? NSOnState : NSOffState];
}
}
- else if (theAction == @selector(changeScale:))
- {
- const NSInteger viewScale = (NSInteger)([mainWindow displayScale] * 100.0);
-
- if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
- {
- [(NSMenuItem*)theItem setState:(viewScale == [theItem tag]) ? NSOnState : NSOffState];
- }
- }
- else if (theAction == @selector(changeRotation:))
- {
- const NSInteger viewRotation = (NSInteger)[mainWindow displayRotation];
-
- if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
- {
- if ([theItem tag] == -1)
- {
- if (viewRotation == 0 ||
- viewRotation == 90 ||
- viewRotation == 180 ||
- viewRotation == 270)
- {
- [(NSMenuItem*)theItem setState:NSOffState];
- }
- else
- {
- [(NSMenuItem*)theItem setState:NSOnState];
- }
- }
- else
- {
- [(NSMenuItem*)theItem setState:(viewRotation == [theItem tag]) ? NSOnState : NSOffState];
- }
- }
- }
- else if (theAction == @selector(changeDisplayMode:))
- {
- if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
- {
- [(NSMenuItem*)theItem setState:([mainWindow displayMode] == [theItem tag]) ? NSOnState : NSOffState];
- }
- }
- else if (theAction == @selector(changeDisplayOrientation:))
- {
- if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
- {
- [(NSMenuItem*)theItem setState:([mainWindow displayOrientation] == [theItem tag]) ? NSOnState : NSOffState];
- }
- }
- else if (theAction == @selector(changeDisplayOrder:))
- {
- if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
- {
- [(NSMenuItem*)theItem setState:([mainWindow displayOrder] == [theItem tag]) ? NSOnState : NSOffState];
- }
- }
- else if (theAction == @selector(changeDisplayGap:))
- {
- if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
- {
- const NSInteger gapScalar = (NSInteger)([mainWindow displayGap] * 100.0);
-
- if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
- {
- if ([theItem tag] == -1)
- {
- if (gapScalar == 0 ||
- gapScalar == 50 ||
- gapScalar == 100 ||
- gapScalar == 150 ||
- gapScalar == 200)
- {
- [(NSMenuItem*)theItem setState:NSOffState];
- }
- else
- {
- [(NSMenuItem*)theItem setState:NSOnState];
- }
- }
- else
- {
- [(NSMenuItem*)theItem setState:(gapScalar == [theItem tag]) ? NSOnState : NSOffState];
- }
- }
- }
- }
- else if (theAction == @selector(hudDisable:))
- {
- if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
- {
- [(NSMenuItem*)theItem setTitle:([[mainWindow view] isHudEnabled]) ? NSSTRING_TITLE_DISABLE_HUD : NSSTRING_TITLE_ENABLE_HUD];
- }
- }
- else if (theAction == @selector(toggleStatusBar:))
- {
- if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
- {
- [(NSMenuItem*)theItem setTitle:([mainWindow isShowingStatusBar]) ? NSSTRING_TITLE_HIDE_STATUS_BAR : NSSTRING_TITLE_SHOW_STATUS_BAR];
- }
- }
- else if (theAction == @selector(toggleKeepMinDisplaySizeAtNormal:))
- {
- if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
- {
- [(NSMenuItem*)theItem setState:([mainWindow isMinSizeNormal]) ? NSOnState : NSOffState];
- }
- }
- else if (theAction == @selector(toggleToolbarShown:))
- {
- if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
- {
- [(NSMenuItem*)theItem setTitle:([[[mainWindow window] toolbar] isVisible]) ? NSSTRING_TITLE_HIDE_TOOLBAR : NSSTRING_TITLE_SHOW_TOOLBAR];
- }
- }
return enable;
}