diff --git a/desmume/src/cocoa/DefaultUserPrefs.plist b/desmume/src/cocoa/DefaultUserPrefs.plist index 8f9d802fd..5e0a1c8fb 100644 Binary files a/desmume/src/cocoa/DefaultUserPrefs.plist and b/desmume/src/cocoa/DefaultUserPrefs.plist differ diff --git a/desmume/src/cocoa/cocoa_core.h b/desmume/src/cocoa/cocoa_core.h index 6d0f6047a..727efc4df 100644 --- a/desmume/src/cocoa/cocoa_core.h +++ b/desmume/src/cocoa/cocoa_core.h @@ -19,6 +19,7 @@ #import #include #include +#include #import "cocoa_util.h" @@ -56,6 +57,7 @@ typedef struct NSInteger prevCoreState; BOOL isSpeedLimitEnabled; CGFloat speedScalar; + std::string _slot1R4Path; NSUInteger emulationFlags; BOOL emuFlagAdvancedBusLevelTiming; @@ -68,6 +70,10 @@ typedef struct BOOL emuFlagDebugConsole; BOOL emuFlagEmulateEnsata; NSInteger cpuEmulationEngine; + NSInteger slot1DeviceType; + NSString *slot1StatusText; + + NSURL *slot1R4URL; OSSpinLock spinlockCdsController; OSSpinLock spinlockMasterExecute; @@ -101,10 +107,13 @@ typedef struct @property (assign) BOOL emuFlagDebugConsole; @property (assign) BOOL emuFlagEmulateEnsata; @property (assign) NSInteger cpuEmulationEngine; +@property (assign) NSInteger slot1DeviceType; +@property (assign) NSString *slot1StatusText; @property (copy) NSURL *arm9ImageURL; @property (copy) NSURL *arm7ImageURL; @property (copy) NSURL *firmwareImageURL; +@property (retain) NSURL *slot1R4URL; @property (readonly) pthread_mutex_t *mutexCoreExecute; @@ -114,10 +123,12 @@ typedef struct - (BOOL) ejectCardFlag; - (void) setEjectCardFlag; +- (void) slot1Eject; - (void) changeRomSaveType:(NSInteger)saveTypeID; - (void) changeExecutionSpeed; -- (void) setDynaRec; +- (void) applyDynaRec; +- (BOOL) applySlot1Device; - (void) restoreCoreState; - (void) reset; diff --git a/desmume/src/cocoa/cocoa_core.mm b/desmume/src/cocoa/cocoa_core.mm index 7bbf12d6a..d919d6a3e 100644 --- a/desmume/src/cocoa/cocoa_core.mm +++ b/desmume/src/cocoa/cocoa_core.mm @@ -30,6 +30,7 @@ #include "../addons.h" #include "../NDSSystem.h" +#include "../slot1.h" #undef BOOL @@ -61,10 +62,13 @@ volatile bool execute = true; @synthesize emuFlagDebugConsole; @synthesize emuFlagEmulateEnsata; @dynamic cpuEmulationEngine; +@synthesize slot1DeviceType; +@synthesize slot1StatusText; @dynamic arm9ImageURL; @dynamic arm7ImageURL; @dynamic firmwareImageURL; +@synthesize slot1R4URL; @dynamic mutexCoreExecute; @@ -94,6 +98,9 @@ static BOOL isCoreStarted = NO; emuFlagDebugConsole = NO; emuFlagEmulateEnsata = NO; + slot1DeviceType = NDS_SLOT1_RETAIL; + slot1StatusText = NSSTRING_STATUS_EMULATION_NOT_RUNNING; + spinlockMasterExecute = OS_SPINLOCK_INIT; spinlockCdsController = OS_SPINLOCK_INIT; spinlockExecutionChange = OS_SPINLOCK_INIT; @@ -105,6 +112,9 @@ static BOOL isCoreStarted = NO; speedScalar = SPEED_SCALAR_NORMAL; prevCoreState = CORESTATE_PAUSE; + slot1R4URL = nil; + _slot1R4Path = ""; + threadParam.cdsCore = self; threadParam.cdsController = cdsController; threadParam.state = CORESTATE_PAUSE; @@ -573,6 +583,15 @@ static BOOL isCoreStarted = NO; return NO; } +- (void) slot1Eject +{ + pthread_mutex_lock(&threadParam.mutexCoreExecute); + NDS_TriggerCardEjectIRQ(); + pthread_mutex_unlock(&threadParam.mutexCoreExecute); + + [self setSlot1StatusText:NSSTRING_STATUS_SLOT1_NO_DEVICE]; +} + - (void) changeRomSaveType:(NSInteger)saveTypeID { pthread_mutex_lock(&threadParam.mutexCoreExecute); @@ -605,7 +624,7 @@ static BOOL isCoreStarted = NO; } /******************************************************************************************** - setDynaRec + applyDynaRec Sets the use_jit variable for CommonSettings. @@ -622,7 +641,7 @@ static BOOL isCoreStarted = NO; method to set the engine at a later time, using the last cpuEmulationEngine value from the user. ********************************************************************************************/ -- (void) setDynaRec +- (void) applyDynaRec { const NSInteger engineID = [self cpuEmulationEngine]; @@ -631,6 +650,46 @@ static BOOL isCoreStarted = NO; pthread_mutex_unlock(&threadParam.mutexThreadExecute); } +- (BOOL) applySlot1Device +{ + const NSInteger deviceTypeID = [self slot1DeviceType]; + NSString *r4Path = [[self slot1R4URL] path]; + + pthread_mutex_lock(&threadParam.mutexThreadExecute); + + _slot1R4Path = (r4Path != nil) ? std::string([r4Path cStringUsingEncoding:NSUTF8StringEncoding]) : ""; + slot1SetFatDir(_slot1R4Path); + + BOOL result = slot1Change((NDS_SLOT1_TYPE)deviceTypeID); + + pthread_mutex_unlock(&threadParam.mutexThreadExecute); + + switch (deviceTypeID) + { + case NDS_SLOT1_NONE: + [self setSlot1StatusText:NSSTRING_STATUS_SLOT1_NO_DEVICE]; + break; + + case NDS_SLOT1_RETAIL: + [self setSlot1StatusText:NSSTRING_STATUS_SLOT1_RETAIL_INSERTED]; + break; + + case NDS_SLOT1_RETAIL_NAND: + [self setSlot1StatusText:NSSTRING_STATUS_SLOT1_RETAIL_NAND_INSERTED]; + break; + + case NDS_SLOT1_R4: + [self setSlot1StatusText:NSSTRING_STATUS_SLOT1_R4_INSERTED]; + break; + + default: + [self setSlot1StatusText:NSSTRING_STATUS_SLOT1_UNKNOWN_STATE]; + break; + } + + return result; +} + - (void) restoreCoreState { [self setCoreState:prevCoreState]; @@ -639,7 +698,8 @@ static BOOL isCoreStarted = NO; - (void) reset { [self setCoreState:CORESTATE_PAUSE]; - [self setDynaRec]; + [self applyDynaRec]; + [self applySlot1Device]; pthread_mutex_lock(&threadParam.mutexThreadExecute); NDS_Reset(); @@ -673,7 +733,6 @@ static BOOL isCoreStarted = NO; - (void) runThread:(id)object { - [self setDynaRec]; [CocoaDSCore startupCore]; [super runThread:object]; [CocoaDSCore shutdownCore]; diff --git a/desmume/src/cocoa/cocoa_globals.h b/desmume/src/cocoa/cocoa_globals.h index eb726b470..966843267 100644 --- a/desmume/src/cocoa/cocoa_globals.h +++ b/desmume/src/cocoa/cocoa_globals.h @@ -97,6 +97,13 @@ #define NSSTRING_STATUS_NO_ROM_LOADED NSLocalizedString(@"No ROM loaded.", nil) #define NSSTRING_STATUS_SIZE_BYTES NSLocalizedString(@"%i bytes", nil) +#define NSSTRING_STATUS_EMULATION_NOT_RUNNING NSLocalizedString(@"Emulation is not running.", nil) +#define NSSTRING_STATUS_SLOT1_UNKNOWN_STATE NSLocalizedString(@"Unknown state.", nil) +#define NSSTRING_STATUS_SLOT1_NO_DEVICE NSLocalizedString(@"No device inserted.", nil) +#define NSSTRING_STATUS_SLOT1_RETAIL_INSERTED NSLocalizedString(@"Retail cartridge inserted.", nil) +#define NSSTRING_STATUS_SLOT1_RETAIL_NAND_INSERTED NSLocalizedString(@"Retail cartridge (with NAND flash) inserted.", nil) +#define NSSTRING_STATUS_SLOT1_R4_INSERTED NSLocalizedString(@"R4 cartridge interface inserted.", nil) + #define NSSTRING_DISPLAYMODE_MAIN NSLocalizedString(@"Main", nil) #define NSSTRING_DISPLAYMODE_TOUCH NSLocalizedString(@"Touch", nil) #define NSSTRING_DISPLAYMODE_COMBO NSLocalizedString(@"Combo", nil) diff --git a/desmume/src/cocoa/translations/English.lproj/MainMenu.strings b/desmume/src/cocoa/translations/English.lproj/MainMenu.strings index c23323ec8..694d170eb 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 cff595185..772b0d61c 100644 --- a/desmume/src/cocoa/translations/English.lproj/MainMenu.xib +++ b/desmume/src/cocoa/translations/English.lproj/MainMenu.xib @@ -12,7 +12,8 @@ YES - + + YES @@ -652,6 +653,14 @@ + + + Show SLOT-1 Manager... + + 2147483647 + + + ROM Save Type @@ -3537,7 +3546,7 @@ aGVhdHMuZ2JhdGVtcC5uZXQvA InputPrefsView - + 268 YES @@ -3546,7 +3555,6 @@ aGVhdHMuZ2JhdGVtcC5uZXQvA 12 {{13, 10}, {463, 401}} - YES @@ -3571,7 +3579,6 @@ aGVhdHMuZ2JhdGVtcC5uZXQvA 268 {{72, 44}, {84, 17}} - YES 68288064 @@ -3588,7 +3595,6 @@ aGVhdHMuZ2JhdGVtcC5uZXQvA 268 {{44, 16}, {112, 17}} - YES 68288064 @@ -3605,7 +3611,6 @@ aGVhdHMuZ2JhdGVtcC5uZXQvA 268 {{158, 38}, {126, 26}} - YES -2076049856 @@ -3686,7 +3691,6 @@ aGVhdHMuZ2JhdGVtcC5uZXQvA 268 {{289, 14}, {72, 22}} - YES -1804468671 @@ -3777,7 +3781,6 @@ aGVhdHMuZ2JhdGVtcC5uZXQvA 268 {{63, 72}, {93, 17}} - YES 68288064 @@ -3794,7 +3797,6 @@ aGVhdHMuZ2JhdGVtcC5uZXQvA 268 {{158, 66}, {126, 26}} - YES -2076049856 @@ -3862,7 +3864,6 @@ aGVhdHMuZ2JhdGVtcC5uZXQvA 268 {{158, 11}, {126, 26}} - YES -2076049856 @@ -3964,12 +3965,10 @@ aGVhdHMuZ2JhdGVtcC5uZXQvA {{1, 1}, {429, 100}} - {{6, 206}, {431, 116}} - {0, 0} 67239424 @@ -4013,7 +4012,6 @@ aGVhdHMuZ2JhdGVtcC5uZXQvA 268 {{18, 14}, {100, 38}} - YES 2 1 @@ -4209,12 +4207,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{1, 1}, {194, 62}} - {{15, 53}, {196, 78}} - {0, 0} 67239424 @@ -4248,7 +4244,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{18, 14}, {150, 38}} - YES 2 1 @@ -4439,12 +4434,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{1, 1}, {194, 62}} - {{218, 53}, {196, 78}} - {0, 0} 67239424 @@ -4468,7 +4461,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{15, 18}, {126, 17}} - YES 68288064 @@ -4485,7 +4477,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{339, 16}, {72, 22}} - YES -1804468671 @@ -4567,7 +4558,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{144, 12}, {189, 26}} - YES -2079981824 @@ -4589,7 +4579,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{305, 38}, {38, 11}} - YES 68288064 @@ -4610,7 +4599,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{263, 38}, {38, 11}} - YES 68288064 @@ -4627,7 +4615,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{220, 38}, {38, 11}} - YES 68288064 @@ -4644,7 +4631,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{178, 38}, {38, 11}} - YES 68288064 @@ -4661,7 +4647,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{137, 38}, {38, 11}} - YES 68288064 @@ -4676,12 +4661,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{1, 1}, {429, 141}} - {{6, 45}, {431, 157}} - {0, 0} 67239424 @@ -4703,7 +4686,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{10, 33}, {443, 355}} - Display Views @@ -5665,8 +5647,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {489, 425} - - NSView @@ -10984,7 +10964,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 256 - {270, 321} + {270, 335} YES @@ -11110,7 +11090,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 0 - {{1, 17}, {270, 321}} + {{1, 17}, {270, 335}} @@ -11152,7 +11132,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - {{20, 49}, {272, 339}} + {{20, 49}, {272, 353}} 562 @@ -11450,80 +11430,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 2 NO - - - 268 - {{89, 446}, {70, 14}} - - YES - - 68288064 - 4326400 - ROM Name: - - LucidaGrande-Bold - 11 - 16 - - - - - - - - - 268 - {{89, 421}, {69, 14}} - - YES - - 68288064 - 4326400 - ROM Serial: - - - - - - - - - 268 - {{160, 421}, {135, 14}} - - YES - - 70385217 - 272761856 - - - ? - - - - - - - - 268 - {{161, 446}, {134, 14}} - - YES - - 70385217 - 272761856 - - - ? - - - - - 268 - {{90, 394}, {190, 18}} + {{76, 408}, {190, 18}} YES @@ -11542,9 +11452,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 25 - + - 268 + 265 YES @@ -11557,10 +11467,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA NeXT TIFF v4.0 pasteboard type - {{20, 396}, {64, 64}} + {{20, 410}, {50, 50}} YES - + 130560 33554432 @@ -11571,6 +11481,31 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES + + + 265 + {{75, 432}, {168, 28}} + + YES + + 69336577 + 272764928 + TmFtZToKU2VyaWFsOg + + + + + + + + + 1292 + + {{29, 419}, {32, 32}} + + 28682 + 100 + {640, 480} @@ -11595,7 +11530,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 68288064 138548224 This list only shows the first 100 search results. - + + LucidaGrande-Bold + 11 + 16 + @@ -13363,6 +13302,628 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {320, 290} NSView + + 7 + 2 + {{235, 230}, {640, 329}} + 1685586944 + SLOT-1 Manager + NSWindow + + {1.79769e+308, 1.79769e+308} + + + 256 + + YES + + + 268 + {{14, 12}, {168, 32}} + + YES + + 67239424 + 134217728 + Eject SLOT-1 Device + + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{181, 22}, {105, 17}} + + YES + + 68288064 + 272630784 + SLOT-1 Status: + + + + + + + + + 12 + {{12, 51}, {616, 5}} + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + 3 + 2 + 0 + NO + + + + 268 + {{288, 22}, {330, 17}} + + YES + + 70385217 + 272634880 + + + slot1StatusText + + + + + + + + 12 + + YES + + + 256 + + YES + + + 268 + {{18, 14}, {180, 102}} + + YES + 4 + 1 + + YES + + -2080244224 + 0 + None + + + 1211912703 + 0 + + + + 200 + 25 + + + 67239424 + 0 + Retail + + + 1 + 1211912703 + 0 + + 549453824 + {18, 18} + + YES + + YES + + + + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw +IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ +29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 +dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA +AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG +AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ +0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ +7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ +5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ +3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD +AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns +AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ +6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ +/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ +///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl +YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA +AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD +AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu +AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgEAAAMAAAABABIAAAEB +AAMAAAABABIAAAECAAMAAAAEAAAFxgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAFTAAMAAAAEAAAFzodzAAcAAAwYAAAF1gAAAAAACAAIAAgACAABAAEAAQABAAAMGGFw +cGwCAAAAbW50clJHQiBYWVogB9YABAADABMALAASYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA +AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAMSbmRpbgAA +BOwAAAY+ZGVzYwAACywAAABkZHNjbQAAC5AAAAAubW1vZAAAC8AAAAAoY3BydAAAC+gAAAAtWFlaIAAA +AAAAAF1KAAA0kQAACCVYWVogAAAAAAAAdCAAALRgAAAjPVhZWiAAAAAAAAAlbAAAFyoAAKfDWFlaIAAA +AAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1 +cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAAD +AQAAAQACBAUGBwkKCw0ODxASExQWFxgaGxweHyAiIyQmJygpKywtLzAxMjM1Njc4OTs8PT5AQUJDREZH +SElKS0xOT1BRUlNUVVZXWFlaW1xdXl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SF +hoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnZ6foKGio6SlpqanqKmqq6ytra6vsLGysrO0tba3uLi5uru8 +vL2+v8DBwcLDxMXGxsfIycrKy8zNzs7P0NHS0tPU1dbW19jZ2drb3Nzd3t/g4eLi4+Tl5ufo6enq6+zt +7u/w8fHy8/T19vf4+fr7/P3+/v8AAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR8gISIjJCUnKCkq +Ky0uLzAxMzQ1Njc4OTo7PD0/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaWltcXV5fYGFiY2RlZmdo +aWprbG1ub3BxcnN0dXZ3d3h5ent8fH1+f4CBgoKDhIWGh4iIiYqLjI2Oj5CRkpOUlJWWl5iZmpucnZ2e +n6ChoqOkpaamp6ipqqusra6vsLCxsrO0tba3uLm5uru8vb6/wMHCw8TFx8jJysvMzc7P0NDR0tPU1dbX +2Nna29ze3+Dh4uPk5ebn6err7O3u7/Hy8/T19vf5+vv8/f7/AAIDAwQFBgcICQoKCwwNDg8QERITFBUW +FxgZGhscHR4fICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODg5Ojs8PT4+P0BBQkNDREVGR0hJSUpLTE1O +Tk9QUVJSU1RVVVZXWFhZWltbXF1eXl9gYWFiY2RkZWZnZ2hpaWprbGxtbm5vcHFxcnNzdHV1dnd4eHl6 +ent8fH1+fn+AgYGCg4SEhYaHiImJiouMjY6Oj5CRkpOTlJWWl5iZmZqbnJ2en6ChoqOkpaanqKmqq6yt +rq+xsrO0tba3uLq7vL2+wMHDxMbHycrMzs/R0tTW19nb3d7g4uTm6Ors7vDy9Pb4+vz+/wAAbmRpbgAA +AAAAAAY2AACXGgAAVjoAAFPKAACJ3gAAJ8IAABaoAABQDQAAVDkAAiuFAAIZmQABeFEAAwEAAAIAAAAA +AAEABgANABcAIwAxAEAAUgBlAHsAkwCrAMUA4gD/AR8BPwFhAYUBqgHQAfgCIAJLAncCpQLSAwIDMwNl +A5gDzgQFBD0EdQSvBOsFKQVnBacF6AYqBm4GtQb8B0UHkgfkCDkIkAjnCT4JmAn0ClAKrQsLC2sLygwq +DIwM8Q1XDcAOKA6SDv4PbA/bEE0QxBE7EbQSMRKwEzITuRREFNAVYBXxFocXHhfAGGIZBBmsGlQa+RuU +HC4czh1yHhQeux9jIA0gvCFoIhkizyOJJEEk+SW6JnknOygFKMspkypiKzIsASzXLawuhy9gMD4xGzH8 +MtszvzSgNYY2cjdcOEw5OTorOxs8CD0EPfU+6z/nQOFB2ELUQ9VE00XcRttH5EjxSgBLCUwdTTFOUE9v +UI9Rt1LdVAVVNlZsV6VY4FohW21ct135X09goGH0Y0tkqGYFZ19oxGova5ptCG54b/BxbnLsdG119Xd/ +eQh6knwqfcV/W4D4gpSEO4Xih4CJKorYjIqOOY/jkZuTWJUOlsyYiZpSnB6d4Z+soX+jWqUvpxOo+6rj +rMuuwLC4sra0rra0uL+60LzfvwDBHcLdxLXGhchYyi7MCs3lz7rRmtOA1WPXR9kq2xPc/97s4M/iveSn +5o3obupT7ELuLPAM8fLz0PW396H5f/tZ/T3//wAAAAEAAwALABYAJQA3AE0AZQCBAJ8AwQDlAQsBNQFh +AZABwQH1AisCZAKfAtwDHANfA6MD6gQ0BH8EzQT1BR0FcAXEBhsGdAbPBy0HXAeMB+4IUgi4CSAJVAmK +CfYKZArVC0cLgQu8DDIMqw0mDaIOIQ6hDyQPqRAvELgQ/RFDEc8SXRLuE4AUFRSrFUMV3RZ5FxcXthhY +GPwZoRpIGvEbnBxJHPgdqB5bHw8fxSB9ITch8iKwJDAk8yW3Jn4nRigQKNwpqSp5K0osHCzxLccuoC95 +MFUxMzISMvMz1TS5NaA2hzdxOFw5STo4Oyg8Gj4DPvs/9EDuQepD6ETpRexG8Uf3SP9LFEwhTTBOQE9S +UGZSklOrVMVV4Vb/WB5ZP1phW4Vcq13SXvthUmJ/Y69k4GYSZ0dofGm0au1tZG6ib+FxInJlc6l073Y2 +d396FXtjfLJ+A39VgKmB/4NWhK+GCYjCiiGLgYzjjkePrJESknuT5Ja8mCuZm5sMnH+d9J9qoOGiWqPV +pVGmz6eOqE6pzqtRrNSuWq/gsWmy8rR+tgu5Kbq6vE294b93wQ7Cp8RBxd3He8kZyrrLisxbzf/Po9FK +0vHUm9ZF1/HZn9tO3Cbc/96x4GTiGePQ5YjnQegf6Pzquex27jbv9/G583z0X/VC9wj40Pqa/GX+Mf// +AAAAAQADAAsAJQA3AE0AZQCBAJ8AwQELATUBYQGQAcEB9QIrAmQCnwLcAxwDXwOjA+oENAR/BM0FHQVw +BcQGGwZ0Bs8HLQeMB+4IUgi4CSAJign2CmQK1QtHC7wMMgyrDSYNog4hDqEPJA+pEC8QuBFDEl0S7hOA +FBUUqxVDFnkXFxe2GFgY/BpIGvEbnBxJHPgdqB8PH8UgfSE3IfIjbyQwJPMltydGKBAo3Cp5K0osHC3H +LqAveTEzMhIy8zS5NaA2hzhcOUk6ODwaPQ4+Az/0QO5C6EPoROlG8Uf3SglLFEwhTkBPUlF7UpJUxVXh +Vv9ZP1phXKtd0mAlYVJjr2TgZhJofGm0au1tZG6ib+FxInJldO92Nnd/eMl6FXyyfgN/VYCpgf+Er4YJ +h2WIwoohi4GOR4+skRKSe5PklVCWvJgrmZubDJx/nfSfaqDholqj1aVRps+oTqnOq1Gs1K2Xrlqv4LFp +svK0frYLt5m5Kbnxurq8Tb3hv3fBDsHawqfEQcUPxd3He8hKyRnKusuKzFvN/87Rz6PQdtFK0vHTxtSb +1kXXG9fx2MjZn9tO3Cbc/93Y3rHfiuBk4hni9ePQ5KzliOZk50HoH+j86drqueuX7HbtVu427xbv9/DX +8bnymvN89F/1QvYl9wj37PjQ+bX6mvt//GX9S/4x//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAABIAAAAcAEMAbwBsAG8AcgAgAEwAQwBE +AABtbW9kAAAAAAAABhAAAJxOAAAAAL5zkQAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5cmlnaHQg +QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA + + + + + + + + 400 + 75 + + + 67239424 + 0 + Retail with NAND Flash + + + 3 + 1211912703 + 0 + + 400 + 75 + + + 67239424 + 0 + R4 + + + 2 + 1211912703 + 0 + + 400 + 75 + + + {180, 24} + {4, 2} + 1151868928 + NSActionCell + + 67239424 + 0 + Radio + + 1211912703 + 0 + + 549453824 + {18, 18} + + YES + + YES + + + + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw +IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ +29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 +dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA +AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG +AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ +0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ +7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ +5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ +3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD +AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns +AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ +6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ +/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ +///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl +YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA +AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD +AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu +AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB +AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + + + + + + + 400 + 75 + + + + + + + + + 268 + {{85, 15}, {409, 21}} + + YES + + 78773825 + 272635136 + + + Directory Path + + YES + + + + + + + 268 + {{496, 8}, {96, 32}} + + YES + + 67239424 + 134217728 + Choose... + + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{15, 124}, {482, 28}} + + YES + + 67239424 + 4325376 + Note: Changes to the SLOT-1 device will only take effect after a ROM is loaded or after the emulator is reset. + + + + + 1 + MCAwIDAAA + + + + + + 268 + {{496, 120}, {96, 32}} + + YES + + 67239424 + 134217728 + Reset + + + -2034876161 + 129 + + + 200 + 25 + + + + {{1, 1}, {604, 162}} + + + + {{17, 140}, {606, 178}} + + {0, 0} + + 67239424 + 0 + SLOT-1 Device Type + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 2 + NO + + + + 12 + + YES + + + 256 + + YES + + + 265 + + YES + + YES + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + + + {{18, 16}, {30, 30}} + + YES + + 130560 + 33554432 + + 0 + 3 + 0 + NO + + YES + + + + 265 + {{50, 18}, {168, 28}} + + YES + + 69336577 + 272764928 + TmFtZToKU2VyaWFsOg + + + + + + + + + 1292 + + {{18, 14}, {32, 32}} + + 28682 + 100 + + + + 268 + {{220, 17}, {201, 26}} + + YES + + -2076049856 + 2048 + + + 109199615 + 129 + + + 400 + 75 + + + YES + Actions + + 1048576 + 2147483647 + 1 + + + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + Load ROM… + + 2147483647 + + + _popUpItemAction: + + + + + Load Recent ROM + + 1048576 + 2147483647 + + + submenuAction: + + Load Recent ROM + + YES + + + Clear Menu + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 2147483647 + + + _popUpItemAction: + + + + + Unload ROM + + 2147483647 + + + _popUpItemAction: + + + + + + YES + 1 + YES + YES + 2 + + + + {{1, 1}, {604, 56}} + + + + {{17, 64}, {606, 72}} + + {0, 0} + + 67239424 + 0 + Current ROM + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 2 + NO + + + {640, 329} + + + {{0, 0}, {1920, 1178}} + {1.79769e+308, 1.79769e+308} + 279 2 @@ -16313,7 +16874,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {1.79769e+308, 1.79769e+308} - + 256 YES @@ -16332,7 +16893,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{18, 14}, {61, 58}} - YES 3 1 @@ -16537,12 +17097,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{1, 1}, {253, 82}} - {{16, 189}, {255, 98}} - {0, 0} 67239424 @@ -16576,7 +17134,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{18, 80}, {154, 38}} - YES 2 1 @@ -16770,7 +17327,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{53, 14}, {100, 58}} - YES 3 1 @@ -16975,12 +17531,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{1, 1}, {253, 128}} - {{16, 41}, {255, 144}} - {0, 0} 67239424 @@ -17014,7 +17568,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{15, 12}, {129, 18}} - YES -2080244224 @@ -17035,12 +17588,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{1, 1}, {253, 38}} - {{16, 291}, {255, 54}} - {0, 0} 67239424 @@ -17074,7 +17625,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{47, 13}, {136, 21}} - YES 67501824 @@ -17096,7 +17646,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{186, 17}, {52, 17}} - YES 68288064 @@ -17187,7 +17736,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{18, 14}, {20, 20}} - YES 130560 @@ -17203,12 +17751,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{1, 1}, {253, 44}} - {{16, 349}, {255, 60}} - {0, 0} 67239424 @@ -17232,7 +17778,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{66, 18}, {154, 19}} - YES -2080244224 @@ -17263,7 +17808,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{18, 14}, {116, 38}} - YES 2 1 @@ -17455,12 +17999,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{1, 1}, {253, 62}} - {{16, 413}, {255, 78}} - {0, 0} 67239424 @@ -17481,8 +18023,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {288, 511} - - {{0, 0}, {1920, 1178}} {1.79769e+308, 1.79769e+308} @@ -19032,8 +19572,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA Set Separation NSPanel + {1.79769e+308, 1.79769e+308} - + 256 YES @@ -19042,7 +19583,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{30, 73}, {385, 26}} - YES -2079981824 @@ -19064,7 +19604,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{389, 99}, {38, 14}} - YES 68288064 @@ -19081,7 +19620,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{298, 99}, {38, 14}} - YES 68288064 @@ -19098,7 +19636,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{205, 99}, {38, 14}} - YES 68288064 @@ -19115,7 +19652,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{113, 99}, {38, 14}} - YES 68288064 @@ -19132,7 +19668,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{22, 99}, {38, 14}} - YES 68288064 @@ -19149,7 +19684,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{249, 51}, {107, 17}} - YES 68288064 @@ -19166,7 +19700,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{358, 51}, {66, 17}} - YES 68288064 @@ -19244,7 +19777,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{20, 48}, {100, 19}} - YES -2080244224 @@ -19265,7 +19797,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{128, 48}, {100, 19}} - 100 YES @@ -19287,7 +19818,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{147, 18}, {154, 19}} - YES -2080244224 @@ -19305,8 +19835,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {441, 133} - - {{0, 0}, {1920, 1178}} {1.79769e+308, 1.79769e+308} @@ -19425,6 +19953,60 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 YES + + + 1292 + + {{364, 339}, {32, 32}} + + 28682 + 100 + + + + 265 + {{396, 343}, {168, 28}} + + YES + + 69336577 + 272764928 + TmFtZToKU2VyaWFsOg + + + + + + + + + 265 + + YES + + YES + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + + + {{364, 341}, {30, 30}} + + YES + + 130560 + 33554432 + + 0 + 3 + 0 + NO + + YES + 256 @@ -19561,51 +20143,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - - 265 - {{397, 342}, {166, 28}} - - YES - - 69336577 - 272764928 - TmFtZToKU2VyaWFsOg - - - - - - - - - 265 - - YES - - YES - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple PNG pasteboard type - NSFilenamesPboardType - NeXT Encapsulated PostScript v1.2 pasteboard type - NeXT TIFF v4.0 pasteboard type - - - {{365, 340}, {30, 30}} - - YES - - 130560 - 33554432 - - 0 - 0 - 0 - NO - - YES - 288 @@ -19899,6 +20436,60 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 YES + + + 1292 + + {{363, 339}, {32, 32}} + + 28682 + 100 + + + + 265 + {{396, 343}, {168, 28}} + + YES + + 69336577 + 272764928 + TmFtZToKU2VyaWFsOg + + + + + + + + + 265 + + YES + + YES + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + + + {{364, 341}, {30, 30}} + + YES + + 130560 + 33554432 + + 0 + 3 + 0 + NO + + YES + 256 @@ -20171,51 +20762,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - - 265 - {{397, 342}, {166, 28}} - - YES - - 69336577 - 272764928 - TmFtZToKU2VyaWFsOg - - - - - - - - - 265 - - YES - - YES - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple PNG pasteboard type - NSFilenamesPboardType - NeXT Encapsulated PostScript v1.2 pasteboard type - NeXT TIFF v4.0 pasteboard type - - - {{365, 340}, {30, 30}} - - YES - - 130560 - 33554432 - - 0 - 0 - 0 - NO - - YES - 288 @@ -20769,6 +21315,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA emuFlagEmulateEnsata cpuEmulationEngine emuFlagRigorousTiming + slot1StatusText + slot1DeviceType CocoaDSCore @@ -24087,54 +24635,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 5604 - - - value: selection.iconImage - - - - - - value: selection.iconImage - value - selection.iconImage - 2 - - - 5605 - - - - value: selection.romInternalName - - - - - - value: selection.romInternalName - value - selection.romInternalName - 2 - - - 5606 - - - - value: selection.romSerial - - - - - - value: selection.romSerial - value - selection.romSerial - 2 - - - 5607 - selectedTag: selection.audioOutputEngine @@ -26061,70 +26561,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 6452 - - - value: selection.iconImage - - - - - - value: selection.iconImage - value - selection.iconImage - 2 - - - 6453 - - - - value: selection.iconImage - - - - - - value: selection.iconImage - value - selection.iconImage - 2 - - - 6454 - - - - value: selection.romNameAndSerialInfo - - - - - - value: selection.romNameAndSerialInfo - value - selection.romNameAndSerialInfo - 2 - - - 6455 - - - - value: selection.romNameAndSerialInfo - - - - - - value: selection.romNameAndSerialInfo - value - selection.romNameAndSerialInfo - 2 - - - 6456 - title: selection.goWebpageButtonTitle @@ -29997,6 +30433,462 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 7854 + + + enabled: selection.currentRom + + + + + + enabled: selection.currentRom + enabled + selection.currentRom + + NSValueTransformerName + NSIsNotNil + + 2 + + + 7885 + + + + makeKeyAndOrderFront: + + + + 7887 + + + + slot1Eject: + + + + 7888 + + + + reset: + + + + 7889 + + + + value: values.EmulationSLOT1_R4StoragePath + + + + + + value: values.EmulationSLOT1_R4StoragePath + value + values.EmulationSLOT1_R4StoragePath + 2 + + + 7891 + + + + value: selection.slot1StatusText + + + + + + value: selection.slot1StatusText + value + selection.slot1StatusText + 2 + + + 7892 + + + + selectedTag: selection.slot1DeviceType + + + + + + selectedTag: selection.slot1DeviceType + selectedTag + selection.slot1DeviceType + 2 + + + 7896 + + + + chooseSlot1R4Directory: + + + + 7897 + + + + slot1ManagerWindow + + + + 7898 + + + + value: selection.romNameAndSerialInfo + + + + + + value: selection.romNameAndSerialInfo + value + selection.romNameAndSerialInfo + 2 + + + 7975 + + + + value: selection.iconImage + + + + + + value: selection.iconImage + value + selection.iconImage + 2 + + + 7976 + + + + toolTip: values.EmulationSLOT1_R4StoragePath + + + + + + toolTip: values.EmulationSLOT1_R4StoragePath + toolTip + values.EmulationSLOT1_R4StoragePath + 2 + + + 7977 + + + + animate: selection.isRomLoading + + + + + + animate: selection.isRomLoading + animate + selection.isRomLoading + 2 + + + 7979 + + + + loadRecentRom: + + + + 7983 + + + + clearRecentDocuments: + + + + 7999 + + + + loadRecentRom: + + + + 8000 + + + + closeRom: + + + + 8001 + + + + openRom: + + + + 8002 + + + + enabled: selection.isRomLoading + + + + + + enabled: selection.isRomLoading + enabled + selection.isRomLoading + + NSValueTransformerName + NSNegateBoolean + + 2 + + + 8011 + + + + value: selection.iconImage + + + + + + value: selection.iconImage + value + selection.iconImage + 2 + + + 8017 + + + + value: selection.romNameAndSerialInfo + + + + + + value: selection.romNameAndSerialInfo + value + selection.romNameAndSerialInfo + 2 + + + 8018 + + + + animate: selection.isRomLoading + + + + + + animate: selection.isRomLoading + animate + selection.isRomLoading + 2 + + + 8019 + + + + enabled: selection.isRomLoading + + + + + + enabled: selection.isRomLoading + enabled + selection.isRomLoading + + NSValueTransformerName + NSNegateBoolean + + 2 + + + 8020 + + + + enabled: selection.isRomLoading + + + + + + enabled: selection.isRomLoading + enabled + selection.isRomLoading + + NSValueTransformerName + NSNegateBoolean + + 2 + + + 8026 + + + + value: selection.romNameAndSerialInfo + + + + + + value: selection.romNameAndSerialInfo + value + selection.romNameAndSerialInfo + 2 + + + 8027 + + + + animate: selection.isRomLoading + + + + + + animate: selection.isRomLoading + animate + selection.isRomLoading + 2 + + + 8028 + + + + value: selection.iconImage + + + + + + value: selection.iconImage + value + selection.iconImage + 2 + + + 8029 + + + + value: selection.iconImage + + + + + + value: selection.iconImage + value + selection.iconImage + 2 + + + 8035 + + + + value: selection.romNameAndSerialInfo + + + + + + value: selection.romNameAndSerialInfo + value + selection.romNameAndSerialInfo + 2 + + + 8036 + + + + animate: selection.isRomLoading + + + + + + animate: selection.isRomLoading + animate + selection.isRomLoading + 2 + + + 8037 + + + + enabled: selection.isRomLoading + + + + + + enabled: selection.isRomLoading + enabled + selection.isRomLoading + + NSValueTransformerName + NSNegateBoolean + + 2 + + + 8038 + + + + enabled: selection.currentRom + + + + + + enabled: selection.currentRom + enabled + selection.currentRom + + NSValueTransformerName + NSIsNotNil + + 2 + + + 8042 + @@ -30135,20 +31027,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - 125 - - - YES - - - - - - 126 - - - 57 @@ -30352,6 +31230,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + @@ -33662,17 +34541,15 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES - - - - - + + + @@ -35747,62 +36624,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - 4566 - - - YES - - - - - - 4567 - - - - - 4568 - - - YES - - - - - - 4569 - - - - - 4570 - - - YES - - - - - - 4571 - - - - - 4572 - - - YES - - - - - - 4573 - - - 4574 @@ -36084,20 +36905,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - 4651 - - - YES - - - - - - 4652 - - - 4656 @@ -38287,10 +39094,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - + + + Support Request Form View @@ -38427,34 +39235,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - 6370 - - - YES - - - - - - 6371 - - - YES - - - - - - 6372 - - - - - 6373 - - - 6374 @@ -38541,12 +39321,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - + + + Bug Report Form View @@ -38701,34 +39482,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - 6409 - - - YES - - - - - - 6410 - - - YES - - - - - - 6411 - - - - - 6412 - - - 6413 @@ -41116,6 +41869,420 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + 7855 + + + YES + + + + + + 7856 + + + YES + + + + + + + + + + + 7871 + + + YES + + + + + + 7872 + + + + + 7877 + + + YES + + + + + + 7878 + + + + + 7880 + + + YES + + + + + + 7881 + + + + + 7886 + + + + + 7899 + + + YES + + + + + + + + + + 7857 + + + YES + + + + + + + + + + 7862 + + + + + 7861 + + + + + 7860 + + + + + 7859 + + + + + 7858 + + + + + 7863 + + + YES + + + + + + 7864 + + + + + 7866 + + + YES + + + + + + 7867 + + + + + 7875 + + + YES + + + + + + 7876 + + + + + 125 + + + YES + + + + + + 126 + + + + + 7873 + + + YES + + + + + + 7874 + + + + + 8009 + + + YES + + + + + + + + + 7971 + + + YES + + + + + + 7974 + + + + + 7972 + + + YES + + + + + + 7973 + + + + + 7978 + + + + + 7987 + + + YES + + + + + + 7988 + + + YES + + + + + + 7989 + + + YES + + + + + + + + + + 8003 + + + + + 7996 + + + + + 7995 + + + YES + + + + + + 7994 + + + + + 7993 + + + + + 7997 + + + YES + + + + + + 7998 + + + + + 7879 + + + + + 8012 + + + YES + + + + + + 8013 + + + YES + + + + + + 8014 + + + + + 8015 + + + + + 8016 + + + + + 8021 + + + YES + + + + + + 8022 + + + YES + + + + + + 8023 + + + + + 8024 + + + + + 8025 + + + + + 8030 + + + YES + + + + + + 8031 + + + YES + + + + + + 8032 + + + + + 8033 + + + + + 8034 + + + @@ -42130,16 +43297,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 4562.IBPluginDependency 4565.IBPluginDependency 4565.IBViewBoundsToFrameTransform - 4566.IBPluginDependency - 4567.IBPluginDependency - 4568.IBPluginDependency - 4569.IBPluginDependency - 4570.IBPluginDependency - 4570.IBViewBoundsToFrameTransform - 4571.IBPluginDependency - 4572.IBPluginDependency - 4572.IBViewBoundsToFrameTransform - 4573.IBPluginDependency 4574.IBPluginDependency 4574.IBViewBoundsToFrameTransform 4575.IBPluginDependency @@ -42197,9 +43354,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 4639.IBViewBoundsToFrameTransform 4640.IBPluginDependency 4647.IBPluginDependency - 4651.IBPluginDependency - 4651.IBViewBoundsToFrameTransform - 4652.IBPluginDependency 4656.IBPluginDependency 4660.IBPluginDependency 4660.IBViewBoundsToFrameTransform @@ -42631,12 +43785,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 6368.IBViewBoundsToFrameTransform 6369.IBPluginDependency 6369.IBViewBoundsToFrameTransform - 6370.IBPluginDependency - 6370.IBViewBoundsToFrameTransform - 6371.IBPluginDependency - 6371.IBViewBoundsToFrameTransform - 6372.IBPluginDependency - 6373.IBPluginDependency 6374.IBPluginDependency 6376.IBPluginDependency 6377.IBPluginDependency @@ -42689,12 +43837,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 6407.IBViewBoundsToFrameTransform 6408.IBPluginDependency 6408.IBViewBoundsToFrameTransform - 6409.IBPluginDependency - 6409.IBViewBoundsToFrameTransform - 6410.IBPluginDependency - 6410.IBViewBoundsToFrameTransform - 6411.IBPluginDependency - 6412.IBPluginDependency 6413.IBPluginDependency 6414.IBPluginDependency 6415.IBPluginDependency @@ -43181,10 +44323,49 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 7847.IBViewBoundsToFrameTransform 7848.IBPluginDependency 785.IBPluginDependency + 7855.IBEditorWindowLastContentRect + 7855.IBPluginDependency + 7855.IBWindowTemplateEditedContentRect + 7855.NSWindowTemplate.visibleAtLaunch + 7856.IBPluginDependency + 7857.IBPluginDependency + 7857.IBViewBoundsToFrameTransform + 7858.IBPluginDependency + 7859.IBPluginDependency + 7860.IBPluginDependency + 7863.IBPluginDependency + 7863.IBViewBoundsToFrameTransform + 7864.IBPluginDependency + 7866.IBAttributePlaceholdersKey + 7866.IBPluginDependency + 7866.IBViewBoundsToFrameTransform + 7867.IBPluginDependency 787.IBPluginDependency + 7871.IBAttributePlaceholdersKey + 7871.IBPluginDependency + 7871.IBViewBoundsToFrameTransform + 7872.IBPluginDependency + 7873.IBAttributePlaceholdersKey + 7873.IBPluginDependency + 7873.IBViewBoundsToFrameTransform + 7874.IBPluginDependency + 7875.IBPluginDependency + 7875.IBViewBoundsToFrameTransform + 7876.IBPluginDependency + 7877.IBPluginDependency + 7877.IBViewBoundsToFrameTransform + 7878.IBPluginDependency + 7879.IBPluginDependency + 7879.IBViewBoundsToFrameTransform 788.IBEditorWindowLastContentRect 788.IBPluginDependency + 7880.IBPluginDependency + 7880.IBViewBoundsToFrameTransform + 7881.IBPluginDependency + 7886.IBPluginDependency 789.IBPluginDependency + 7899.IBPluginDependency + 7899.IBViewBoundsToFrameTransform 79.IBPluginDependency 79.ImportedFromIB2 794.IBEditorWindowLastContentRect @@ -43198,8 +44379,60 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 796.IBWindowTemplateEditedContentRect 796.NSWindowTemplate.visibleAtLaunch 797.IBPluginDependency + 7971.IBPluginDependency + 7971.IBViewBoundsToFrameTransform + 7972.IBPluginDependency + 7972.IBViewBoundsToFrameTransform + 7973.IBPluginDependency + 7974.IBPluginDependency + 7978.IBPluginDependency + 7978.IBViewBoundsToFrameTransform + 7987.IBPluginDependency + 7987.IBViewBoundsToFrameTransform + 7988.IBPluginDependency + 7989.IBEditorWindowLastContentRect + 7989.IBPluginDependency + 7993.IBPluginDependency + 7994.IBPluginDependency + 7994.ImportedFromIB2 + 7995.IBPluginDependency + 7995.ImportedFromIB2 + 7996.IBPluginDependency + 7997.IBEditorWindowLastContentRect + 7997.IBPluginDependency + 7997.ImportedFromIB2 + 7997.editorWindowContentRectSynchronizationRect + 7998.IBPluginDependency + 7998.ImportedFromIB2 80.IBPluginDependency 80.ImportedFromIB2 + 8003.IBPluginDependency + 8009.IBPluginDependency + 8009.IBViewBoundsToFrameTransform + 8012.IBPluginDependency + 8012.IBViewBoundsToFrameTransform + 8013.IBPluginDependency + 8013.IBViewBoundsToFrameTransform + 8014.IBPluginDependency + 8014.IBViewBoundsToFrameTransform + 8015.IBPluginDependency + 8016.IBPluginDependency + 8021.IBPluginDependency + 8021.IBViewBoundsToFrameTransform + 8022.IBPluginDependency + 8022.IBViewBoundsToFrameTransform + 8023.IBPluginDependency + 8023.IBViewBoundsToFrameTransform + 8024.IBPluginDependency + 8025.IBPluginDependency + 8030.IBPluginDependency + 8030.IBViewBoundsToFrameTransform + 8031.IBPluginDependency + 8031.IBViewBoundsToFrameTransform + 8032.IBPluginDependency + 8032.IBViewBoundsToFrameTransform + 8033.IBPluginDependency + 8034.IBPluginDependency 81.IBEditorWindowLastContentRect 81.IBPluginDependency 81.ImportedFromIB2 @@ -43469,7 +44702,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{1009, 1073}, {143, 23}} + {{971, 1073}, {143, 23}} com.apple.InterfaceBuilder.CocoaPlugin {{522, 812}, {146, 23}} @@ -44326,9 +45559,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA AUGoAABDXwAAA - {{967, 130}, {640, 480}} + {{144, 442}, {640, 480}} com.apple.InterfaceBuilder.CocoaPlugin - {{967, 130}, {640, 480}} + {{144, 442}, {640, 480}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -45338,20 +46571,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA AUOxAABCKAAAA com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABCwAAAw7iAAA - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABCwAAAw+UAAA - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin P4AAAL+AAABC3gAAw9EAAA @@ -45456,11 +46675,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - AcFAAABDxAAAA - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin P4AAAL+AAABDHAAAw7gAAA @@ -45934,7 +47148,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{795, 933}, {218, 203}} + {{795, 913}, {220, 223}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -46138,9 +47352,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin {{832, 932}, {616, 0}} com.apple.InterfaceBuilder.CocoaPlugin - {{930, 321}, {580, 592}} + {{962, 321}, {580, 592}} com.apple.InterfaceBuilder.CocoaPlugin - {{930, 321}, {580, 592}} + {{962, 321}, {580, 592}} @@ -46149,7 +47363,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{540, 177}, {580, 567}} + {{999, 589}, {580, 567}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -46216,13 +47430,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA P4AAAL+AAABB0AAAwmgAAA com.apple.InterfaceBuilder.CocoaPlugin - - AUO5gABDnAAAA - - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABDyYAAw6oAAA - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -46235,10 +47442,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{522, 353}, {580, 567}} + {{423, 222}, {580, 567}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -46314,13 +47518,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA P4AAAL+AAABDQgAAwjgAAA com.apple.InterfaceBuilder.CocoaPlugin - - AUMaAABC4AAAA - - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABDOgAAwwwAAA - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -46335,10 +47532,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{341, 498}, {580, 567}} + {{28, 498}, {580, 567}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -46497,9 +47691,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {{1202, 1031}, {350, 125}} com.apple.InterfaceBuilder.CocoaPlugin - {{1003, 212}, {620, 267}} + {{1001, 214}, {620, 267}} com.apple.InterfaceBuilder.CocoaPlugin - {{1003, 212}, {620, 267}} + {{1001, 214}, {620, 267}} com.apple.InterfaceBuilder.CocoaPlugin {{632, 301}, {516, 283}} @@ -46513,11 +47707,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin - P4AAAL+AAABD5AAAwgwAAA + P4AAAL+AAABD7gAAwiQAAA com.apple.InterfaceBuilder.CocoaPlugin - P4AAAL+AAABDAgAAwfgAAA + P4AAAL+AAABDAgAAwhQAAA com.apple.InterfaceBuilder.CocoaPlugin @@ -46866,7 +48060,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA P4AAAL+AAABD5wAAw/CAAA com.apple.InterfaceBuilder.CocoaPlugin - {{1435, 432}, {136, 143}} + {{1433, 434}, {136, 143}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -46921,7 +48115,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA P4AAAL+AAABDQwAAw/CAAA com.apple.InterfaceBuilder.CocoaPlugin - {{1168, 542}, {265, 33}} + {{1166, 544}, {265, 33}} com.apple.InterfaceBuilder.CocoaPlugin ToolTip @@ -47129,10 +48323,90 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + {{966, 232}, {640, 329}} com.apple.InterfaceBuilder.CocoaPlugin + {{966, 232}, {640, 329}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBoAAAwzkAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCZAAAwggAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Choose a directory where the R4 device stores its data. + + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABD9QAAwhgAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Sends a SLOT-1 eject IRQ. The emulator will then detect that no device is inserted into SLOT-1. + + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBYAAAwyQAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Resets the emulation. + + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABD+AAAwxYAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABC3gAAwxYAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDNQAAwx8AAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + AUGgAABDEgAAA + {{1196, 1013}, {70, 103}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDkAAAwx8AAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + AUGIAABCfAAAA + com.apple.InterfaceBuilder.CocoaPlugin {{1299, 599}, {194, 241}} @@ -47153,7 +48427,87 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + AUGQAABBgAAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCSAAAwjAAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBkAAAwjAAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDrYAAw2wAAA + + com.apple.InterfaceBuilder.CocoaPlugin + {{1196, 402}, {201, 93}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + {{1163, 392}, {143, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{522, 812}, {146, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + AUQCQABDZgAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + AUO2AABDqoAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDxgAAw7iAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDtgAAw7iAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + AUO5AABDp4AAA + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDyQAAw7WAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDuQAAw7WAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + AUHIAABD1IAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCZAAAw+KAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDggAAw+8AAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin {{709, 783}, {262, 353}} com.apple.InterfaceBuilder.CocoaPlugin @@ -47463,7 +48817,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - 7854 + 8042 @@ -48147,12 +49501,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA changeSpuSyncMethod: changeSpuSyncMode: changeVolume: + chooseSlot1R4Directory: closeRom: closeSheet: closeWindow: exportRomSave: importRomSave: loadEmuSaveStateSlot: + loadRecentRom: newDisplayWindow: openEmuSaveState: openRom: @@ -48163,6 +49519,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA saveEmuSaveStateAs: saveEmuSaveStateSlot: saveScreenshotAs: + slot1Eject: toggleAutoFrameSkip: toggleCheats: toggleExecutePause: @@ -48177,6 +49534,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA writeDefaultsDisplayVideoSettings: writeDefaultsEmulationSettings: writeDefaultsHUDSettings: + writeDefaultsSlot1Settings: writeDefaultsSoundSettings: @@ -48229,6 +49587,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA id id id + id + id + id + id @@ -48252,12 +49614,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA changeSpuSyncMethod: changeSpuSyncMode: changeVolume: + chooseSlot1R4Directory: closeRom: closeSheet: closeWindow: exportRomSave: importRomSave: loadEmuSaveStateSlot: + loadRecentRom: newDisplayWindow: openEmuSaveState: openRom: @@ -48268,6 +49632,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA saveEmuSaveStateAs: saveEmuSaveStateSlot: saveScreenshotAs: + slot1Eject: toggleAutoFrameSkip: toggleCheats: toggleExecutePause: @@ -48282,6 +49647,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA writeDefaultsDisplayVideoSettings: writeDefaultsEmulationSettings: writeDefaultsHUDSettings: + writeDefaultsSlot1Settings: writeDefaultsSoundSettings: @@ -48354,6 +49720,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA changeVolume: id + + chooseSlot1R4Directory: + id + closeRom: id @@ -48378,6 +49748,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA loadEmuSaveStateSlot: id + + loadRecentRom: + id + newDisplayWindow: id @@ -48418,6 +49792,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA saveScreenshotAs: id + + slot1Eject: + id + toggleAutoFrameSkip: id @@ -48474,6 +49852,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA writeDefaultsHUDSettings: id + + writeDefaultsSlot1Settings: + id + writeDefaultsSoundSettings: id @@ -48496,6 +49878,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA romInfoPanelController saveFileMigrationSheet saveStatePrecloseSheet + slot1ManagerWindow YES @@ -48511,6 +49894,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA NSObjectController NSWindow NSWindow + NSWindow @@ -48529,6 +49913,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA romInfoPanelController saveFileMigrationSheet saveStatePrecloseSheet + slot1ManagerWindow YES @@ -48580,6 +49965,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA saveStatePrecloseSheet NSWindow + + slot1ManagerWindow + NSWindow + diff --git a/desmume/src/cocoa/userinterface/EmuControllerDelegate.h b/desmume/src/cocoa/userinterface/EmuControllerDelegate.h index ea11c8fcb..4b4edc9bc 100644 --- a/desmume/src/cocoa/userinterface/EmuControllerDelegate.h +++ b/desmume/src/cocoa/userinterface/EmuControllerDelegate.h @@ -47,6 +47,7 @@ class AudioSampleBlockGenerator; NSArrayController *cheatListController; NSArrayController *cheatDatabaseController; + NSWindow *slot1ManagerWindow; NSWindow *saveFileMigrationSheet; NSWindow *saveStatePrecloseSheet; NSView *exportRomSavePanelAccessoryView; @@ -101,6 +102,7 @@ class AudioSampleBlockGenerator; @property (readonly) IBOutlet NSArrayController *cheatListController; @property (readonly) IBOutlet NSArrayController *cheatDatabaseController; +@property (readonly) IBOutlet NSWindow *slot1ManagerWindow; @property (readonly) IBOutlet NSWindow *saveFileMigrationSheet; @property (readonly) IBOutlet NSWindow *saveStatePrecloseSheet; @property (readonly) IBOutlet NSView *exportRomSavePanelAccessoryView; @@ -142,6 +144,7 @@ class AudioSampleBlockGenerator; // File Menu - (IBAction) newDisplayWindow:(id)sender; - (IBAction) openRom:(id)sender; +- (IBAction) loadRecentRom:(id)sender; - (IBAction) closeWindow:(id)sender; - (IBAction) closeRom:(id)sender; - (IBAction) openEmuSaveState:(id)sender; @@ -189,12 +192,16 @@ class AudioSampleBlockGenerator; - (IBAction) changeSpuSyncMethod:(id)sender; // Misc IBActions +- (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; - (IBAction) writeDefaultsSoundSettings:(id)sender; - (IBAction) closeSheet:(id)sender; @@ -233,9 +240,9 @@ class AudioSampleBlockGenerator; - (void) didEndSaveStateSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo; - (void) didEndSaveStateSheetOpen:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo; - (void) didEndSaveStateSheetTerminate:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo; +- (void) didEndChooseSlot1R4Directory:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo; - (void) updateAllWindowTitles; - (void) setupUserDefaults; - @end diff --git a/desmume/src/cocoa/userinterface/EmuControllerDelegate.mm b/desmume/src/cocoa/userinterface/EmuControllerDelegate.mm index 306e5f083..712215263 100644 --- a/desmume/src/cocoa/userinterface/EmuControllerDelegate.mm +++ b/desmume/src/cocoa/userinterface/EmuControllerDelegate.mm @@ -49,6 +49,7 @@ @synthesize cheatListController; @synthesize cheatDatabaseController; +@synthesize slot1ManagerWindow; @synthesize saveFileMigrationSheet; @synthesize saveStatePrecloseSheet; @synthesize exportRomSavePanelAccessoryView; @@ -485,6 +486,11 @@ } } +- (IBAction) loadRecentRom:(id)sender +{ + // Dummy selector, used for UI validation only. +} + - (IBAction) closeWindow:(id)sender { [[mainWindow window] performClose:sender]; @@ -910,6 +916,41 @@ [mainWindow setDisplayGap:(double)[CocoaDSUtil getIBActionSenderTag:sender] / 100.0]; } +- (IBAction) chooseSlot1R4Directory:(id)sender +{ + NSOpenPanel *panel = [NSOpenPanel openPanel]; + [panel setCanChooseDirectories:YES]; + [panel setCanChooseFiles:NO]; + [panel setResolvesAliases:YES]; + [panel setAllowsMultipleSelection:NO]; + [panel setTitle:@"Select R4 Directory"]; + NSArray *fileTypes = [NSArray arrayWithObjects:nil]; + + // The NSOpenPanel/NSSavePanel method -(void)beginSheetForDirectory:file:types:modalForWindow:modalDelegate:didEndSelector:contextInfo + // is deprecated in Mac OS X v10.6. +#if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_X_VERSION_10_5 + [panel setAllowedFileTypes:fileTypes]; + [panel beginSheetModalForWindow:slot1ManagerWindow + completionHandler:^(NSInteger result) { + [self didEndChooseSlot1R4Directory:panel returnCode:result contextInfo:nil]; + } ]; +#else + [panel beginSheetForDirectory:nil + file:nil + types:fileTypes + modalForWindow:slot1ManagerWindow + modalDelegate:self + didEndSelector:@selector(didEndChooseSlot1R4Directory:returnCode:contextInfo:) + contextInfo:nil]; +#endif +} + +- (IBAction) slot1Eject:(id)sender +{ + CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content]; + [cdsCore slot1Eject]; +} + - (IBAction) writeDefaultsDisplayRotation:(id)sender { [[NSUserDefaults standardUserDefaults] setDouble:[mainWindow displayRotation] forKey:@"DisplayView_Rotation"]; @@ -976,6 +1017,14 @@ [[NSUserDefaults standardUserDefaults] setObject:[firmwareDict valueForKey:@"Language"] forKey:@"FirmwareConfig_Language"]; } +- (IBAction) writeDefaultsSlot1Settings:(id)sender +{ + CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content]; + + [[NSUserDefaults standardUserDefaults] setInteger:[cdsCore slot1DeviceType] forKey:@"EmulationSLOT1_DeviceType"]; + [[NSUserDefaults standardUserDefaults] setObject:[[cdsCore slot1R4URL] path] forKey:@"EmulationSLOT1_R4StoragePath"]; +} + - (IBAction) writeDefaultsSoundSettings:(id)sender { NSMutableDictionary *speakerBindings = (NSMutableDictionary *)[cdsSoundController content]; @@ -1252,6 +1301,7 @@ [self setStatusText:NSSTRING_STATUS_EMULATOR_RESET]; [self setIsWorking:NO]; + [self writeDefaultsSlot1Settings:nil]; for (DisplayWindowController *windowController in windowList) { @@ -1416,7 +1466,9 @@ [self pauseCore]; CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content]; - [cdsCore setDynaRec]; + [cdsCore applyDynaRec]; + [cdsCore applySlot1Device]; + [self writeDefaultsSlot1Settings:nil]; CocoaDSRom *newRom = [[CocoaDSRom alloc] init]; if (newRom != nil) @@ -1621,6 +1673,9 @@ [[windowController window] displayIfNeeded]; } + CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content]; + [cdsCore setSlot1StatusText:NSSTRING_STATUS_EMULATION_NOT_RUNNING]; + result = YES; return result; @@ -1756,6 +1811,27 @@ } } +- (void) didEndChooseSlot1R4Directory:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo +{ + [sheet orderOut:self]; + + if (returnCode == NSCancelButton) + { + return; + } + + NSURL *selectedDirURL = [[sheet URLs] lastObject]; //hopefully also the first object + if(selectedDirURL == nil) + { + return; + } + + [[NSUserDefaults standardUserDefaults] setObject:[selectedDirURL path] forKey:@"EmulationSLOT1_R4StoragePath"]; + + CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content]; + [cdsCore setSlot1R4URL:selectedDirURL]; +} + - (void) updateAllWindowTitles { if ([windowList count] < 1) @@ -1888,9 +1964,9 @@ enable = NO; } } - else if (theAction == @selector(_openRecentDocument:)) + else if (theAction == @selector(loadRecentRom:)) { - if ([self isShowingSaveStateDialog]) + if ([self isRomLoading] || [self isShowingSaveStateDialog]) { enable = NO; } diff --git a/desmume/src/cocoa/userinterface/appDelegate.mm b/desmume/src/cocoa/userinterface/appDelegate.mm index 9462c895c..0fb7ef46b 100644 --- a/desmume/src/cocoa/userinterface/appDelegate.mm +++ b/desmume/src/cocoa/userinterface/appDelegate.mm @@ -411,6 +411,11 @@ // Set the CPU emulation engine per user preferences. [cdsCore setCpuEmulationEngine:[[NSUserDefaults standardUserDefaults] integerForKey:@"Emulation_CPUEmulationEngine"]]; + // Set the SLOT-1 device settings per user preferences. + NSString *slot1R4Path = (NSString *)[[NSUserDefaults standardUserDefaults] objectForKey:@"EmulationSLOT1_R4StoragePath"]; + [cdsCore setSlot1DeviceType:[[NSUserDefaults standardUserDefaults] integerForKey:@"EmulationSLOT1_DeviceType"]]; + [cdsCore setSlot1R4URL:(slot1R4Path != nil) ? [NSURL fileURLWithPath:slot1R4Path] : nil]; + // Set up the firmware per user preferences. NSMutableDictionary *newFWDict = [NSMutableDictionary dictionaryWithObjectsAndKeys: [[NSUserDefaults standardUserDefaults] objectForKey:@"FirmwareConfig_Nickname"], @"Nickname",