Cocoa Port:

- Fix regression from r4533 where the UI elements in the Cheat Manager window wouldn't update in sync with ROM loading/unloading.
- Do a bunch of code cleanup.
This commit is contained in:
rogerman 2013-02-15 02:37:14 +00:00
parent 4dd70a0120
commit 1055a9235f
6 changed files with 1199 additions and 1394 deletions

File diff suppressed because it is too large Load Diff

View File

@ -243,9 +243,8 @@
} }
NSURL *selectedFile = nil; NSURL *selectedFile = nil;
NSInteger buttonClicked = NSFileHandlingPanelCancelButton;
NSOpenPanel *panel = [NSOpenPanel openPanel];
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setCanChooseDirectories:NO]; [panel setCanChooseDirectories:NO];
[panel setCanChooseFiles:YES]; [panel setCanChooseFiles:YES];
[panel setResolvesAliases:YES]; [panel setResolvesAliases:YES];
@ -257,9 +256,9 @@
// is deprecated in Mac OS X v10.6. // is deprecated in Mac OS X v10.6.
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_5 #if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_5
[panel setAllowedFileTypes:fileTypes]; [panel setAllowedFileTypes:fileTypes];
buttonClicked = [panel runModal]; const NSInteger buttonClicked = [panel runModal];
#else #else
buttonClicked = [panel runModalForDirectory:nil file:nil types:fileTypes]; const NSInteger buttonClicked = [panel runModalForDirectory:nil file:nil types:fileTypes];
#endif #endif
if (buttonClicked == NSFileHandlingPanelOKButton) if (buttonClicked == NSFileHandlingPanelOKButton)
@ -269,13 +268,9 @@
{ {
return; return;
} }
[self handleLoadRom:selectedFile];
} }
else
{
return;
}
[self handleLoadRom:selectedFile];
} }
- (IBAction) closeRom:(id)sender - (IBAction) closeRom:(id)sender
@ -285,11 +280,9 @@
- (IBAction) openEmuSaveState:(id)sender - (IBAction) openEmuSaveState:(id)sender
{ {
BOOL result = NO;
NSURL *selectedFile = nil; NSURL *selectedFile = nil;
NSInteger buttonClicked = NSFileHandlingPanelCancelButton;
NSOpenPanel *panel = [NSOpenPanel openPanel];
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setCanChooseDirectories:NO]; [panel setCanChooseDirectories:NO];
[panel setCanChooseFiles:YES]; [panel setCanChooseFiles:YES];
[panel setResolvesAliases:YES]; [panel setResolvesAliases:YES];
@ -301,9 +294,9 @@
// is deprecated in Mac OS X v10.6. // is deprecated in Mac OS X v10.6.
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_5 #if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_5
[panel setAllowedFileTypes:fileTypes]; [panel setAllowedFileTypes:fileTypes];
buttonClicked = [panel runModal]; const NSInteger buttonClicked = [panel runModal];
#else #else
buttonClicked = [panel runModalForDirectory:nil file:nil types:fileTypes]; const NSInteger buttonClicked = [panel runModalForDirectory:nil file:nil types:fileTypes];
#endif #endif
if (buttonClicked == NSFileHandlingPanelOKButton) if (buttonClicked == NSFileHandlingPanelOKButton)
@ -321,35 +314,34 @@
[self pauseCore]; [self pauseCore];
result = [CocoaDSFile loadState:selectedFile]; const BOOL isStateLoaded = [CocoaDSFile loadState:selectedFile];
if (result == NO) if (!isStateLoaded)
{ {
[self setStatusText:NSSTRING_STATUS_SAVESTATE_LOADING_FAILED]; [self setStatusText:NSSTRING_STATUS_SAVESTATE_LOADING_FAILED];
[self restoreCoreState]; [self restoreCoreState];
return; return;
} }
[self setCurrentSaveStateURL:selectedFile];
[self restoreCoreState];
[self setStatusText:NSSTRING_STATUS_SAVESTATE_LOADED];
isSaveStateEdited = YES; isSaveStateEdited = YES;
for (NSWindow *theWindow in windowList) for (NSWindow *theWindow in windowList)
{ {
[theWindow setDocumentEdited:isSaveStateEdited]; [theWindow setDocumentEdited:isSaveStateEdited];
} }
[self setStatusText:NSSTRING_STATUS_SAVESTATE_LOADED];
[self restoreCoreState];
[self setCurrentSaveStateURL:selectedFile];
} }
- (IBAction) saveEmuSaveState:(id)sender - (IBAction) saveEmuSaveState:(id)sender
{ {
BOOL result = NO;
if (isSaveStateEdited && [self currentSaveStateURL] != nil) if (isSaveStateEdited && [self currentSaveStateURL] != nil)
{ {
[self pauseCore]; [self pauseCore];
result = [CocoaDSFile saveState:[self currentSaveStateURL]]; const BOOL isStateSaved = [CocoaDSFile saveState:[self currentSaveStateURL]];
if (result == NO) if (!isStateSaved)
{ {
[self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVING_FAILED]; [self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVING_FAILED];
return; return;
@ -361,8 +353,8 @@
[theWindow setDocumentEdited:isSaveStateEdited]; [theWindow setDocumentEdited:isSaveStateEdited];
} }
[self restoreCoreState];
[self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVED]; [self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVED];
[self restoreCoreState];
} }
else else
{ {
@ -372,10 +364,7 @@
- (IBAction) saveEmuSaveStateAs:(id)sender - (IBAction) saveEmuSaveStateAs:(id)sender
{ {
BOOL result = NO;
NSInteger buttonClicked = NSFileHandlingPanelCancelButton;
NSSavePanel *panel = [NSSavePanel savePanel]; NSSavePanel *panel = [NSSavePanel savePanel];
[panel setCanCreateDirectories:YES]; [panel setCanCreateDirectories:YES];
[panel setTitle:NSSTRING_TITLE_SAVE_STATE_FILE_PANEL]; [panel setTitle:NSSTRING_TITLE_SAVE_STATE_FILE_PANEL];
@ -388,63 +377,61 @@
[panel setRequiredFileType:@FILE_EXT_SAVE_STATE]; [panel setRequiredFileType:@FILE_EXT_SAVE_STATE];
#endif #endif
buttonClicked = [panel runModal]; const NSInteger buttonClicked = [panel runModal];
if(buttonClicked == NSOKButton) if(buttonClicked == NSOKButton)
{ {
[self pauseCore];
NSURL *saveFileURL = [panel URL]; NSURL *saveFileURL = [panel URL];
result = [CocoaDSFile saveState:saveFileURL]; [self pauseCore];
if (result == NO)
const BOOL isStateSaved = [CocoaDSFile saveState:saveFileURL];
if (!isStateSaved)
{ {
[self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVING_FAILED]; [self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVING_FAILED];
return; return;
} }
[self setCurrentSaveStateURL:saveFileURL];
[self restoreCoreState];
[self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVED];
isSaveStateEdited = YES; isSaveStateEdited = YES;
for (NSWindow *theWindow in windowList) for (NSWindow *theWindow in windowList)
{ {
[theWindow setDocumentEdited:isSaveStateEdited]; [theWindow setDocumentEdited:isSaveStateEdited];
} }
[self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVED];
[self restoreCoreState];
[self setCurrentSaveStateURL:saveFileURL];
} }
} }
- (IBAction) revertEmuSaveState:(id)sender - (IBAction) revertEmuSaveState:(id)sender
{ {
BOOL result = NO; if (!isSaveStateEdited || [self currentSaveStateURL] == nil)
if (isSaveStateEdited && [self currentSaveStateURL] != nil)
{ {
[self pauseCore]; return;
result = [CocoaDSFile loadState:[self currentSaveStateURL]];
if (result == NO)
{
[self setStatusText:NSSTRING_STATUS_SAVESTATE_REVERTING_FAILED];
return;
}
isSaveStateEdited = YES;
for (NSWindow *theWindow in windowList)
{
[theWindow setDocumentEdited:isSaveStateEdited];
}
[self restoreCoreState];
[self setStatusText:NSSTRING_STATUS_SAVESTATE_REVERTED];
} }
[self pauseCore];
const BOOL isStateLoaded = [CocoaDSFile loadState:[self currentSaveStateURL]];
if (!isStateLoaded)
{
[self setStatusText:NSSTRING_STATUS_SAVESTATE_REVERTING_FAILED];
return;
}
isSaveStateEdited = YES;
for (NSWindow *theWindow in windowList)
{
[theWindow setDocumentEdited:isSaveStateEdited];
}
[self setStatusText:NSSTRING_STATUS_SAVESTATE_REVERTED];
[self restoreCoreState];
} }
- (IBAction) loadEmuSaveStateSlot:(id)sender - (IBAction) loadEmuSaveStateSlot:(id)sender
{ {
BOOL result = NO;
NSInteger i = [CocoaDSUtil getIBActionSenderTag:sender];
NSString *saveStatePath = [[CocoaDSFile saveStateURL] path]; NSString *saveStatePath = [[CocoaDSFile saveStateURL] path];
if (saveStatePath == nil) if (saveStatePath == nil)
{ {
@ -452,13 +439,14 @@
return; return;
} }
if (i < 0 || i > MAX_SAVESTATE_SLOTS) const NSInteger slotNumber = [CocoaDSUtil getIBActionSenderTag:sender];
if (slotNumber < 0 || slotNumber > MAX_SAVESTATE_SLOTS)
{ {
return; return;
} }
NSURL *currentRomURL = [[self currentRom] fileURL]; NSURL *currentRomURL = [[self currentRom] fileURL];
NSString *fileName = [CocoaDSFile saveSlotFileName:currentRomURL slotNumber:(NSUInteger)(i + 1)]; NSString *fileName = [CocoaDSFile saveSlotFileName:currentRomURL slotNumber:(NSUInteger)(slotNumber + 1)];
if (fileName == nil) if (fileName == nil)
{ {
return; return;
@ -466,21 +454,14 @@
[self pauseCore]; [self pauseCore];
result = [CocoaDSFile loadState:[NSURL fileURLWithPath:[saveStatePath stringByAppendingPathComponent:fileName]]]; const BOOL isStateLoaded = [CocoaDSFile loadState:[NSURL fileURLWithPath:[saveStatePath stringByAppendingPathComponent:fileName]]];
if (result == NO) [self setStatusText:(isStateLoaded) ? NSSTRING_STATUS_SAVESTATE_LOADED : NSSTRING_STATUS_SAVESTATE_LOADING_FAILED];
{
[self setStatusText:NSSTRING_STATUS_SAVESTATE_LOADING_FAILED];
}
[self restoreCoreState]; [self restoreCoreState];
[self setStatusText:NSSTRING_STATUS_SAVESTATE_LOADED];
} }
- (IBAction) saveEmuSaveStateSlot:(id)sender - (IBAction) saveEmuSaveStateSlot:(id)sender
{ {
BOOL result = NO;
NSInteger i = [CocoaDSUtil getIBActionSenderTag:sender];
NSString *saveStatePath = [[CocoaDSFile saveStateURL] path]; NSString *saveStatePath = [[CocoaDSFile saveStateURL] path];
if (saveStatePath == nil) if (saveStatePath == nil)
{ {
@ -488,20 +469,21 @@
return; return;
} }
result = [CocoaDSFile createUserAppSupportDirectory:@"States"]; const BOOL isDirectoryCreated = [CocoaDSFile createUserAppSupportDirectory:@"States"];
if (result == NO) if (!isDirectoryCreated)
{ {
[self setStatusText:NSSTRING_STATUS_CANNOT_CREATE_SAVE_DIRECTORY]; [self setStatusText:NSSTRING_STATUS_CANNOT_CREATE_SAVE_DIRECTORY];
return; return;
} }
if (i < 0 || i > MAX_SAVESTATE_SLOTS) const NSInteger slotNumber = [CocoaDSUtil getIBActionSenderTag:sender];
if (slotNumber < 0 || slotNumber > MAX_SAVESTATE_SLOTS)
{ {
return; return;
} }
NSURL *currentRomURL = [[self currentRom] fileURL]; NSURL *currentRomURL = [[self currentRom] fileURL];
NSString *fileName = [CocoaDSFile saveSlotFileName:currentRomURL slotNumber:(NSUInteger)(i + 1)]; NSString *fileName = [CocoaDSFile saveSlotFileName:currentRomURL slotNumber:(NSUInteger)(slotNumber + 1)];
if (fileName == nil) if (fileName == nil)
{ {
return; return;
@ -509,23 +491,17 @@
[self pauseCore]; [self pauseCore];
result = [CocoaDSFile saveState:[NSURL fileURLWithPath:[saveStatePath stringByAppendingPathComponent:fileName]]]; const BOOL isStateSaved = [CocoaDSFile saveState:[NSURL fileURLWithPath:[saveStatePath stringByAppendingPathComponent:fileName]]];
if (result == NO) [self setStatusText:(isStateSaved) ? NSSTRING_STATUS_SAVESTATE_SAVED : NSSTRING_STATUS_SAVESTATE_SAVING_FAILED];
{
[self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVING_FAILED];
return;
}
[self restoreCoreState]; [self restoreCoreState];
[self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVED];
} }
- (IBAction) importRomSave:(id)sender - (IBAction) importRomSave:(id)sender
{ {
NSURL *selectedFile = nil; NSURL *selectedFile = nil;
NSInteger buttonClicked = NSFileHandlingPanelCancelButton;
NSOpenPanel *panel = [NSOpenPanel openPanel];
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setCanChooseDirectories:NO]; [panel setCanChooseDirectories:NO];
[panel setCanChooseFiles:YES]; [panel setCanChooseFiles:YES];
[panel setResolvesAliases:YES]; [panel setResolvesAliases:YES];
@ -537,9 +513,9 @@
// is deprecated in Mac OS X v10.6. // is deprecated in Mac OS X v10.6.
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_5 #if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_5
[panel setAllowedFileTypes:fileTypes]; [panel setAllowedFileTypes:fileTypes];
buttonClicked = [panel runModal]; const NSInteger buttonClicked = [panel runModal];
#else #else
buttonClicked = [panel runModalForDirectory:nil file:nil types:fileTypes]; const NSInteger buttonClicked = [panel runModalForDirectory:nil file:nil types:fileTypes];
#endif #endif
if (buttonClicked == NSFileHandlingPanelOKButton) if (buttonClicked == NSFileHandlingPanelOKButton)
@ -549,47 +525,29 @@
{ {
return; return;
} }
const BOOL isRomSaveImported = [CocoaDSFile importRomSave:selectedFile];
[self setStatusText:(isRomSaveImported) ? NSSTRING_STATUS_ROM_SAVE_IMPORTED : NSSTRING_STATUS_ROM_SAVE_IMPORT_FAILED];
} }
else
{
return;
}
BOOL result = [CocoaDSFile importRomSave:selectedFile];
if (!result)
{
[self setStatusText:NSSTRING_STATUS_ROM_SAVE_IMPORT_FAILED];
return;
}
[self setStatusText:NSSTRING_STATUS_ROM_SAVE_IMPORTED];
} }
- (IBAction) exportRomSave:(id)sender - (IBAction) exportRomSave:(id)sender
{ {
[self pauseCore]; [self pauseCore];
BOOL result = NO;
NSInteger buttonClicked;
NSSavePanel *panel = [NSSavePanel savePanel]; NSSavePanel *panel = [NSSavePanel savePanel];
[panel setTitle:NSSTRING_TITLE_EXPORT_ROM_SAVE_PANEL]; [panel setTitle:NSSTRING_TITLE_EXPORT_ROM_SAVE_PANEL];
[panel setCanCreateDirectories:YES]; [panel setCanCreateDirectories:YES];
[panel setAccessoryView:exportRomSavePanelAccessoryView]; [panel setAccessoryView:exportRomSavePanelAccessoryView];
buttonClicked = [panel runModal]; const NSInteger buttonClicked = [panel runModal];
if(buttonClicked == NSOKButton) if(buttonClicked == NSOKButton)
{ {
NSURL *romSaveURL = [CocoaDSFile fileURLFromRomURL:[[self currentRom] fileURL] toKind:@"ROM Save"]; NSURL *romSaveURL = [CocoaDSFile fileURLFromRomURL:[[self currentRom] fileURL] toKind:@"ROM Save"];
if (romSaveURL != nil) if (romSaveURL != nil)
{ {
result = [CocoaDSFile exportRomSaveToURL:[panel URL] romSaveURL:romSaveURL fileType:selectedExportRomSaveID]; const BOOL isRomSaveExported = [CocoaDSFile exportRomSaveToURL:[panel URL] romSaveURL:romSaveURL fileType:selectedExportRomSaveID];
if (result == NO) [self setStatusText:(isRomSaveExported) ? NSSTRING_STATUS_ROM_SAVE_EXPORTED : NSSTRING_STATUS_ROM_SAVE_EXPORT_FAILED];
{
[self setStatusText:NSSTRING_STATUS_ROM_SAVE_EXPORT_FAILED];
return;
}
[self setStatusText:NSSTRING_STATUS_ROM_SAVE_EXPORTED];
} }
} }
@ -620,35 +578,37 @@
- (IBAction) resetCore:(id)sender - (IBAction) resetCore:(id)sender
{ {
if ([self currentRom] == nil)
{
return;
}
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content]; CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
if ([self currentRom] != nil) [self setStatusText:NSSTRING_STATUS_EMULATOR_RESETTING];
[self setIsWorking:YES];
for (NSWindow *theWindow in windowList)
{
[theWindow displayIfNeeded];
}
[cdsCore reset];
if ([cdsCore coreState] == CORESTATE_PAUSE)
{ {
[self setStatusText:NSSTRING_STATUS_EMULATOR_RESETTING];
[self setIsWorking:YES];
for (NSWindow *theWindow in windowList) for (NSWindow *theWindow in windowList)
{ {
[theWindow displayIfNeeded]; [[(EmuWindowDelegate *)[theWindow delegate] dispViewDelegate] setViewToWhite];
}
[cdsCore reset];
if ([cdsCore coreState] == CORESTATE_PAUSE)
{
for (NSWindow *theWindow in windowList)
{
[[(EmuWindowDelegate *)[theWindow delegate] dispViewDelegate] setViewToWhite];
}
}
[self setStatusText:NSSTRING_STATUS_EMULATOR_RESET];
[self setIsWorking:NO];
for (NSWindow *theWindow in windowList)
{
[theWindow displayIfNeeded];
} }
} }
[self setStatusText:NSSTRING_STATUS_EMULATOR_RESET];
[self setIsWorking:NO];
for (NSWindow *theWindow in windowList)
{
[theWindow displayIfNeeded];
}
} }
- (IBAction) speedLimitDisable:(id)sender - (IBAction) speedLimitDisable:(id)sender
@ -711,7 +671,6 @@
- (IBAction) changeCoreSpeed:(id)sender - (IBAction) changeCoreSpeed:(id)sender
{ {
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content]; CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
[cdsCore setSpeedScalar:(CGFloat)[CocoaDSUtil getIBActionSenderTag:sender] / 100.0f]; [cdsCore setSpeedScalar:(CGFloat)[CocoaDSUtil getIBActionSenderTag:sender] / 100.0f];
} }
@ -750,7 +709,7 @@
- (IBAction) changeVolume:(id)sender - (IBAction) changeVolume:(id)sender
{ {
float vol = [self currentVolumeValue]; const float vol = [self currentVolumeValue];
[self setCurrentVolumeValue:vol]; [self setCurrentVolumeValue:vol];
[self setStatusText:[NSString stringWithFormat:NSSTRING_STATUS_VOLUME, vol]]; [self setStatusText:[NSString stringWithFormat:NSSTRING_STATUS_VOLUME, vol]];
[CocoaDSUtil messageSendOneWayWithFloat:[cdsSpeaker receivePort] msgID:MESSAGE_SET_VOLUME floatValue:vol]; [CocoaDSUtil messageSendOneWayWithFloat:[cdsSpeaker receivePort] msgID:MESSAGE_SET_VOLUME floatValue:vol];
@ -924,13 +883,13 @@
if ([self currentRom] != nil) if ([self currentRom] != nil)
{ {
BOOL closeResult = [self handleUnloadRom:REASONFORCLOSE_OPEN romToLoad:fileURL]; const BOOL closeResult = [self handleUnloadRom:REASONFORCLOSE_OPEN romToLoad:fileURL];
if ([self isShowingSaveStateDialog]) if ([self isShowingSaveStateDialog])
{ {
return result; return result;
} }
if (![self isShowingFileMigrationDialog] && closeResult == NO) if (![self isShowingFileMigrationDialog] && !closeResult)
{ {
return result; return result;
} }
@ -987,7 +946,6 @@
break; break;
} }
[currentSaveStateURL retain];
[self setIsUserInterfaceBlockingExecution:YES]; [self setIsUserInterfaceBlockingExecution:YES];
[self setIsShowingSaveStateDialog:YES]; [self setIsShowingSaveStateDialog:YES];
@ -1047,7 +1005,7 @@
{ {
CocoaDSRom *theRom = [aNotification object]; CocoaDSRom *theRom = [aNotification object];
NSDictionary *userInfo = [aNotification userInfo]; NSDictionary *userInfo = [aNotification userInfo];
BOOL didLoad = [(NSNumber *)[userInfo valueForKey:@"DidLoad"] boolValue]; const BOOL didLoad = [(NSNumber *)[userInfo valueForKey:@"DidLoad"] boolValue];
if (theRom == nil || ![theRom isDataLoaded] || !didLoad) if (theRom == nil || ![theRom isDataLoaded] || !didLoad)
{ {
@ -1174,8 +1132,7 @@
{ {
BOOL result = NO; BOOL result = NO;
[currentSaveStateURL release]; [self setCurrentSaveStateURL:nil];
currentSaveStateURL = nil;
isSaveStateEdited = NO; isSaveStateEdited = NO;
for (NSWindow *theWindow in windowList) for (NSWindow *theWindow in windowList)
@ -1341,7 +1298,7 @@
- (IBAction) closeSheet:(id)sender - (IBAction) closeSheet:(id)sender
{ {
NSWindow *sheet = [(NSControl *)sender window]; NSWindow *sheet = [(NSControl *)sender window];
NSInteger code = [(NSControl *)sender tag]; const NSInteger code = [(NSControl *)sender tag];
[NSApp endSheet:sheet returnCode:code]; [NSApp endSheet:sheet returnCode:code];
} }
@ -1373,8 +1330,6 @@
- (void) didEndSaveStateSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo - (void) didEndSaveStateSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo
{ {
BOOL result = NO;
[sheet orderOut:self]; [sheet orderOut:self];
switch (returnCode) switch (returnCode)
@ -1387,13 +1342,16 @@
break; break;
case COCOA_DIALOG_DEFAULT: // Save case COCOA_DIALOG_DEFAULT: // Save
result = [CocoaDSFile saveState:[self currentSaveStateURL]]; {
if (result == NO) const BOOL isStateSaved = [CocoaDSFile saveState:[self currentSaveStateURL]];
if (!isStateSaved)
{ {
// Throw an error here... // Throw an error here...
[self setStatusText:NSSTRING_STATUS_SAVESTATE_SAVING_FAILED];
return; return;
} }
break; break;
}
case COCOA_DIALOG_OPTION: // Don't Save case COCOA_DIALOG_OPTION: // Don't Save
break; break;
@ -1405,9 +1363,6 @@
[self unloadRom]; [self unloadRom];
[self setIsUserInterfaceBlockingExecution:NO]; [self setIsUserInterfaceBlockingExecution:NO];
[self setIsShowingSaveStateDialog:NO]; [self setIsShowingSaveStateDialog:NO];
// We retained this when we initially put up the sheet, so we need to release it now.
[self setCurrentSaveStateURL:nil];
} }
- (void) didEndSaveStateSheetOpen:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo - (void) didEndSaveStateSheetOpen:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo
@ -1439,7 +1394,7 @@
- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)theItem - (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)theItem
{ {
BOOL enable = YES; BOOL enable = YES;
SEL theAction = [theItem action]; const SEL theAction = [theItem action];
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content]; CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
if (theAction == @selector(importRomSave:) || if (theAction == @selector(importRomSave:) ||
@ -1452,8 +1407,8 @@
} }
else if (theAction == @selector(executeCoreToggle:)) else if (theAction == @selector(executeCoreToggle:))
{ {
if ([self currentRom] == nil || if (![cdsCore masterExecute] ||
![cdsCore masterExecute] || [self currentRom] == nil ||
[self isUserInterfaceBlockingExecution]) [self isUserInterfaceBlockingExecution])
{ {
enable = NO; enable = NO;
@ -1487,8 +1442,8 @@
else if (theAction == @selector(executeCore) || else if (theAction == @selector(executeCore) ||
theAction == @selector(pauseCore)) theAction == @selector(pauseCore))
{ {
if ([self currentRom] == nil || if (![cdsCore masterExecute] ||
![cdsCore masterExecute] || [self currentRom] == nil ||
[self isShowingSaveStateDialog]) [self isShowingSaveStateDialog])
{ {
enable = NO; enable = NO;
@ -1524,11 +1479,7 @@
} }
else if (theAction == @selector(loadEmuSaveStateSlot:)) else if (theAction == @selector(loadEmuSaveStateSlot:))
{ {
if ([self currentRom] == nil || [self isShowingSaveStateDialog]) if ([self currentRom] == nil || [self isShowingSaveStateDialog] || ![CocoaDSFile saveStateExistsForSlot:[[self currentRom] fileURL] slotNumber:[theItem tag] + 1])
{
enable = NO;
}
else if (![CocoaDSFile saveStateExistsForSlot:[[self currentRom] fileURL] slotNumber:[theItem tag] + 1])
{ {
enable = NO; enable = NO;
} }

View File

@ -68,7 +68,6 @@ enum OGLVertexAttributeID
NSMutableDictionary *bindings; NSMutableDictionary *bindings;
OSSpinLock spinlockNormalSize; OSSpinLock spinlockNormalSize;
OSSpinLock spinlockGpuStateFlags;
OSSpinLock spinlockScale; OSSpinLock spinlockScale;
OSSpinLock spinlockRotation; OSSpinLock spinlockRotation;
OSSpinLock spinlockUseBilinearOutput; OSSpinLock spinlockUseBilinearOutput;

View File

@ -107,7 +107,6 @@ const char *fragmentProgram_100 = {"\
view = nil; view = nil;
spinlockNormalSize = OS_SPINLOCK_INIT; spinlockNormalSize = OS_SPINLOCK_INIT;
spinlockGpuStateFlags = OS_SPINLOCK_INIT;
spinlockScale = OS_SPINLOCK_INIT; spinlockScale = OS_SPINLOCK_INIT;
spinlockRotation = OS_SPINLOCK_INIT; spinlockRotation = OS_SPINLOCK_INIT;
spinlockUseBilinearOutput = OS_SPINLOCK_INIT; spinlockUseBilinearOutput = OS_SPINLOCK_INIT;

View File

@ -234,7 +234,7 @@
- (IBAction) changeRotationRelative:(id)sender - (IBAction) changeRotationRelative:(id)sender
{ {
double angleDegrees = [dispViewDelegate rotation] + (double)[CocoaDSUtil getIBActionSenderTag:sender]; const double angleDegrees = [dispViewDelegate rotation] + (double)[CocoaDSUtil getIBActionSenderTag:sender];
[self setContentRotation:angleDegrees]; [self setContentRotation:angleDegrees];
} }
@ -250,7 +250,7 @@
- (IBAction) changeDisplayMode:(id)sender - (IBAction) changeDisplayMode:(id)sender
{ {
NSInteger newDisplayModeID = [CocoaDSUtil getIBActionSenderTag:sender]; const NSInteger newDisplayModeID = [CocoaDSUtil getIBActionSenderTag:sender];
if (newDisplayModeID == [dispViewDelegate displayMode]) if (newDisplayModeID == [dispViewDelegate displayMode])
{ {
@ -263,7 +263,7 @@
- (IBAction) changeDisplayOrientation:(id)sender - (IBAction) changeDisplayOrientation:(id)sender
{ {
NSInteger newDisplayOrientation = [CocoaDSUtil getIBActionSenderTag:sender]; const NSInteger newDisplayOrientation = [CocoaDSUtil getIBActionSenderTag:sender];
if (newDisplayOrientation == [dispViewDelegate displayOrientation]) if (newDisplayOrientation == [dispViewDelegate displayOrientation])
{ {
@ -336,14 +336,7 @@
- (IBAction) toggleStatusBar:(id)sender - (IBAction) toggleStatusBar:(id)sender
{ {
if (isShowingStatusBar) [self setShowStatusBar:(isShowingStatusBar) ? NO : YES];
{
[self setShowStatusBar:NO];
}
else
{
[self setShowStatusBar:YES];
}
} }
- (void) setShowStatusBar:(BOOL)showStatusBar - (void) setShowStatusBar:(BOOL)showStatusBar
@ -395,14 +388,12 @@
[emuControl pauseCore]; [emuControl pauseCore];
NSInteger buttonClicked = NSFileHandlingPanelCancelButton;
NSSavePanel *panel = [NSSavePanel savePanel]; NSSavePanel *panel = [NSSavePanel savePanel];
[panel setCanCreateDirectories:YES]; [panel setCanCreateDirectories:YES];
[panel setTitle:NSSTRING_TITLE_SAVE_SCREENSHOT_PANEL]; [panel setTitle:NSSTRING_TITLE_SAVE_SCREENSHOT_PANEL];
[panel setAccessoryView:saveScreenshotPanelAccessoryView]; [panel setAccessoryView:saveScreenshotPanelAccessoryView];
buttonClicked = [panel runModal]; const NSInteger buttonClicked = [panel runModal];
if(buttonClicked == NSOKButton) if(buttonClicked == NSOKButton)
{ {
[dispViewDelegate requestScreenshot:[panel URL] fileType:screenshotFileFormat]; [dispViewDelegate requestScreenshot:[panel URL] fileType:screenshotFileFormat];
@ -420,7 +411,7 @@
NSBitmapImageFileType fileType = (NSBitmapImageFileType)[(NSNumber *)[[aNotification userInfo] valueForKey:@"fileType"] integerValue]; NSBitmapImageFileType fileType = (NSBitmapImageFileType)[(NSNumber *)[[aNotification userInfo] valueForKey:@"fileType"] integerValue];
NSImage *screenshotImage = (NSImage *)[[aNotification userInfo] valueForKey:@"screenshotImage"]; NSImage *screenshotImage = (NSImage *)[[aNotification userInfo] valueForKey:@"screenshotImage"];
BOOL fileSaved = [CocoaDSFile saveScreenshot:fileURL bitmapData:[[screenshotImage representations] objectAtIndex:0] fileType:fileType]; const BOOL fileSaved = [CocoaDSFile saveScreenshot:fileURL bitmapData:[[screenshotImage representations] objectAtIndex:0] fileType:fileType];
if (!fileSaved) if (!fileSaved)
{ {
[CocoaDSUtil quickDialogUsingTitle:NSSTRING_ERROR_TITLE_LEGACY message:NSSTRING_ERROR_SCREENSHOT_FAILED_LEGACY]; [CocoaDSUtil quickDialogUsingTitle:NSSTRING_ERROR_TITLE_LEGACY message:NSSTRING_ERROR_SCREENSHOT_FAILED_LEGACY];
@ -432,22 +423,15 @@
- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)theItem - (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)theItem
{ {
BOOL enable = YES; BOOL enable = YES;
SEL theAction = [theItem action]; const SEL theAction = [theItem action];
if (theAction == @selector(changeScale:)) if (theAction == @selector(changeScale:))
{ {
NSInteger viewScale = (NSInteger)([dispViewDelegate scale] * 100.0); const NSInteger viewScale = (NSInteger)([dispViewDelegate scale] * 100.0);
if ([(id)theItem isMemberOfClass:[NSMenuItem class]]) if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
{ {
if (viewScale == [theItem tag]) [(NSMenuItem*)theItem setState:(viewScale == [theItem tag]) ? NSOnState : NSOffState];
{
[(NSMenuItem*)theItem setState:NSOnState];
}
else
{
[(NSMenuItem*)theItem setState:NSOffState];
}
} }
} }
else if (theAction == @selector(changeRotation:)) else if (theAction == @selector(changeRotation:))
@ -484,84 +468,42 @@
{ {
if ([(id)theItem isMemberOfClass:[NSMenuItem class]]) if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
{ {
if ([dispViewDelegate displayMode] == [theItem tag]) [(NSMenuItem*)theItem setState:([dispViewDelegate displayMode] == [theItem tag]) ? NSOnState : NSOffState];
{
[(NSMenuItem*)theItem setState:NSOnState];
}
else
{
[(NSMenuItem*)theItem setState:NSOffState];
}
} }
} }
else if (theAction == @selector(changeDisplayOrientation:)) else if (theAction == @selector(changeDisplayOrientation:))
{ {
if ([(id)theItem isMemberOfClass:[NSMenuItem class]]) if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
{ {
if ([dispViewDelegate displayOrientation] == [theItem tag]) [(NSMenuItem*)theItem setState:([dispViewDelegate displayOrientation] == [theItem tag]) ? NSOnState : NSOffState];
{
[(NSMenuItem*)theItem setState:NSOnState];
}
else
{
[(NSMenuItem*)theItem setState:NSOffState];
}
} }
} }
else if (theAction == @selector(changeDisplayOrder:)) else if (theAction == @selector(changeDisplayOrder:))
{ {
if ([(id)theItem isMemberOfClass:[NSMenuItem class]]) if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
{ {
if ([dispViewDelegate displayOrder] == [theItem tag]) [(NSMenuItem*)theItem setState:([dispViewDelegate displayOrder] == [theItem tag]) ? NSOnState : NSOffState];
{
[(NSMenuItem*)theItem setState:NSOnState];
}
else
{
[(NSMenuItem*)theItem setState:NSOffState];
}
} }
} }
else if (theAction == @selector(hudDisable:)) else if (theAction == @selector(hudDisable:))
{ {
if ([(id)theItem isMemberOfClass:[NSMenuItem class]]) if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
{ {
if ([dispViewDelegate isHudEnabled]) [(NSMenuItem*)theItem setTitle:([dispViewDelegate isHudEnabled]) ? NSSTRING_TITLE_DISABLE_HUD : NSSTRING_TITLE_ENABLE_HUD];
{
[(NSMenuItem*)theItem setTitle:NSSTRING_TITLE_DISABLE_HUD];
}
else
{
[(NSMenuItem*)theItem setTitle:NSSTRING_TITLE_ENABLE_HUD];
}
} }
} }
else if (theAction == @selector(toggleStatusBar:)) else if (theAction == @selector(toggleStatusBar:))
{ {
if ([(id)theItem isMemberOfClass:[NSMenuItem class]]) if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
{ {
if (isShowingStatusBar) [(NSMenuItem*)theItem setTitle:(isShowingStatusBar) ? NSSTRING_TITLE_HIDE_STATUS_BAR : NSSTRING_TITLE_SHOW_STATUS_BAR];
{
[(NSMenuItem*)theItem setTitle:NSSTRING_TITLE_HIDE_STATUS_BAR];
}
else
{
[(NSMenuItem*)theItem setTitle:NSSTRING_TITLE_SHOW_STATUS_BAR];
}
} }
} }
else if (theAction == @selector(toggleKeepMinDisplaySizeAtNormal:)) else if (theAction == @selector(toggleKeepMinDisplaySizeAtNormal:))
{ {
if ([(id)theItem isMemberOfClass:[NSMenuItem class]]) if ([(id)theItem isMemberOfClass:[NSMenuItem class]])
{ {
if (isMinSizeNormal) [(NSMenuItem*)theItem setState:(isMinSizeNormal) ? NSOnState : NSOffState];
{
[(NSMenuItem*)theItem setState:NSOnState];
}
else
{
[(NSMenuItem*)theItem setState:NSOffState];
}
} }
} }
@ -576,9 +518,6 @@
- (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)frameSize - (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)frameSize
{ {
NSSize finalSize = frameSize;
const NSSize normalBounds = [dispViewDelegate normalSize];
// Get a content Rect so that we can make our comparison. // Get a content Rect so that we can make our comparison.
// This will be based on the proposed frameSize. // This will be based on the proposed frameSize.
const NSRect frameRect = NSMakeRect(0.0f, 0.0f, frameSize.width, frameSize.height); const NSRect frameRect = NSMakeRect(0.0f, 0.0f, frameSize.width, frameSize.height);
@ -586,17 +525,16 @@
// Find the maximum scalar we can use for the display view, bounded by the // Find the maximum scalar we can use for the display view, bounded by the
// content Rect. // content Rect.
const NSSize checkSize = GetTransformedBounds(normalBounds, 1.0, [dispViewDelegate rotation]); const NSSize checkSize = GetTransformedBounds([dispViewDelegate normalSize], 1.0, [dispViewDelegate rotation]);
const NSSize contentBounds = NSMakeSize(contentRect.size.width, contentRect.size.height - statusBarHeight); const NSSize contentBounds = NSMakeSize(contentRect.size.width, contentRect.size.height - statusBarHeight);
const double maxS = GetMaxScalarInBounds(checkSize.width, checkSize.height, contentBounds.width, contentBounds.height); const double maxS = GetMaxScalarInBounds(checkSize.width, checkSize.height, contentBounds.width, contentBounds.height);
// Make a new content Rect with our max scalar, and convert it back to a frame Rect. // Make a new content Rect with our max scalar, and convert it back to a frame Rect.
const NSRect finalContentRect = NSMakeRect(0.0f, 0.0f, checkSize.width * maxS, (checkSize.height * maxS) + statusBarHeight); const NSRect finalContentRect = NSMakeRect(0.0f, 0.0f, checkSize.width * maxS, (checkSize.height * maxS) + statusBarHeight);
NSRect finalFrameRect = [sender frameRectForContentRect:finalContentRect]; const NSRect finalFrameRect = [sender frameRectForContentRect:finalContentRect];
// Set the final size based on our new frame Rect. // Set the final size based on our new frame Rect.
finalSize.width = finalFrameRect.size.width; const NSSize finalSize = {finalFrameRect.size.width, finalFrameRect.size.height};
finalSize.height = finalFrameRect.size.height;
return finalSize; return finalSize;
} }
@ -608,11 +546,8 @@
return; return;
} }
const NSSize normalBounds = [dispViewDelegate normalSize];
const double r = [dispViewDelegate rotation];
// Get the max scalar within the window's current content bounds. // Get the max scalar within the window's current content bounds.
const NSSize checkSize = GetTransformedBounds(normalBounds, 1.0, r); const NSSize checkSize = GetTransformedBounds([dispViewDelegate normalSize], 1.0, [dispViewDelegate rotation]);
NSSize contentBounds = [[window contentView] bounds].size; NSSize contentBounds = [[window contentView] bounds].size;
contentBounds.height -= statusBarHeight; contentBounds.height -= statusBarHeight;
const double maxS = GetMaxScalarInBounds(checkSize.width, checkSize.height, contentBounds.width, contentBounds.height); const double maxS = GetMaxScalarInBounds(checkSize.width, checkSize.height, contentBounds.width, contentBounds.height);
@ -653,8 +588,8 @@
[self setShowStatusBar:[[NSUserDefaults standardUserDefaults] boolForKey:@"DisplayView_ShowStatusBar"]]; [self setShowStatusBar:[[NSUserDefaults standardUserDefaults] boolForKey:@"DisplayView_ShowStatusBar"]];
// Set the display settings per user preferences. // Set the display settings per user preferences.
double displayScalar = (double)([[NSUserDefaults standardUserDefaults] floatForKey:@"DisplayView_Size"] / 100.0); const double displayScalar = (double)([[NSUserDefaults standardUserDefaults] floatForKey:@"DisplayView_Size"] / 100.0);
double displayRotation = (double)[[NSUserDefaults standardUserDefaults] floatForKey:@"DisplayView_Rotation"]; const double displayRotation = (double)[[NSUserDefaults standardUserDefaults] floatForKey:@"DisplayView_Rotation"];
[dispViewDelegate setDisplayMode:[[NSUserDefaults standardUserDefaults] integerForKey:@"DisplayView_Mode"]]; [dispViewDelegate setDisplayMode:[[NSUserDefaults standardUserDefaults] integerForKey:@"DisplayView_Mode"]];
[dispViewDelegate setDisplayOrientation:[[NSUserDefaults standardUserDefaults] integerForKey:@"DisplayViewCombo_Orientation"]]; [dispViewDelegate setDisplayOrientation:[[NSUserDefaults standardUserDefaults] integerForKey:@"DisplayViewCombo_Orientation"]];
[dispViewDelegate setDisplayOrder:[[NSUserDefaults standardUserDefaults] integerForKey:@"DisplayViewCombo_Order"]]; [dispViewDelegate setDisplayOrder:[[NSUserDefaults standardUserDefaults] integerForKey:@"DisplayViewCombo_Order"]];

View File

@ -93,14 +93,7 @@
vfWidth = (NSUInteger)vfDestSize.width; vfWidth = (NSUInteger)vfDestSize.width;
vfHeight = (NSUInteger)vfDestSize.height; vfHeight = (NSUInteger)vfDestSize.height;
if (useBilinear) bilinearVideoFilter = [[CocoaVideoFilter alloc] initWithSize:vfDestSize typeID:(useBilinear) ? VideoFilterTypeID_Bilinear : VideoFilterTypeID_Nearest2X];
{
bilinearVideoFilter = [[CocoaVideoFilter alloc] initWithSize:vfDestSize typeID:VideoFilterTypeID_Bilinear];
}
else
{
bilinearVideoFilter = [[CocoaVideoFilter alloc] initWithSize:vfDestSize typeID:VideoFilterTypeID_Nearest2X];
}
} }
else if (vfWidth >= 256 || vfHeight >= 256) else if (vfWidth >= 256 || vfHeight >= 256)
{ {
@ -108,14 +101,7 @@
} }
else else
{ {
if (useBilinear) bilinearVideoFilter = [[CocoaVideoFilter alloc] initWithSize:vfDestSize typeID:(useBilinear) ? VideoFilterTypeID_Bilinear : VideoFilterTypeID_Nearest2X];
{
bilinearVideoFilter = [[CocoaVideoFilter alloc] initWithSize:vfDestSize typeID:VideoFilterTypeID_Bilinear];
}
else
{
bilinearVideoFilter = [[CocoaVideoFilter alloc] initWithSize:vfDestSize typeID:VideoFilterTypeID_Nearest2X];
}
} }
RGBA8888ForceOpaqueBuffer((const uint32_t *)[videoFilter runFilter], (uint32_t *)[bilinearVideoFilter srcBufferPtr], (vfWidth * vfHeight)); RGBA8888ForceOpaqueBuffer((const uint32_t *)[videoFilter runFilter], (uint32_t *)[bilinearVideoFilter srcBufferPtr], (vfWidth * vfHeight));
@ -171,7 +157,7 @@
- (IBAction) selectAutoloadRomOption:(id)sender - (IBAction) selectAutoloadRomOption:(id)sender
{ {
NSInteger option = [(NSMenuItem *)sender tag]; const NSInteger option = [(NSMenuItem *)sender tag];
[[NSUserDefaults standardUserDefaults] setInteger:option forKey:@"General_AutoloadROMOption"]; [[NSUserDefaults standardUserDefaults] setInteger:option forKey:@"General_AutoloadROMOption"];
@ -334,7 +320,7 @@
[[NSUserDefaults standardUserDefaults] setObject:selectedFile forKey:@"R4Cheat_DatabasePath"]; [[NSUserDefaults standardUserDefaults] setObject:selectedFile forKey:@"R4Cheat_DatabasePath"];
[bindings setValue:[selectedFile lastPathComponent] forKey:@"R4CheatDatabaseName"]; [bindings setValue:[selectedFile lastPathComponent] forKey:@"R4CheatDatabaseName"];
BOOL isRomLoaded = [(NSNumber *)[(NSMutableDictionary *)[emuWindowController content] valueForKey:@"isRomLoaded"] boolValue]; const BOOL isRomLoaded = [(NSNumber *)[(NSMutableDictionary *)[emuWindowController content] valueForKey:@"isRomLoaded"] boolValue];
NSMutableDictionary *cheatWindowBindings = (NSMutableDictionary *)[cheatWindowController content]; NSMutableDictionary *cheatWindowBindings = (NSMutableDictionary *)[cheatWindowController content];
CocoaDSCheatManager *cdsCheats = (CocoaDSCheatManager *)[cheatWindowBindings valueForKey:@"cheatList"]; CocoaDSCheatManager *cdsCheats = (CocoaDSCheatManager *)[cheatWindowBindings valueForKey:@"cheatList"];
@ -394,30 +380,24 @@
- (IBAction) selectSoundInputMode:(id)sender - (IBAction) selectSoundInputMode:(id)sender
{ {
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content]; CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
if (cdsCore != nil) [cdsCore.cdsController setSoundInputMode:[[NSUserDefaults standardUserDefaults] integerForKey:@"Input_AudioInputMode"]];
{
[cdsCore.cdsController setSoundInputMode:[[NSUserDefaults standardUserDefaults] integerForKey:@"Input_AudioInputMode"]];
}
} }
- (IBAction) selectDisplayMode:(id)sender - (IBAction) selectDisplayMode:(id)sender
{ {
NSInteger displayMode = [(NSMenuItem *)sender tag]; const NSInteger displayMode = [(NSMenuItem *)sender tag];
[[NSUserDefaults standardUserDefaults] setInteger:displayMode forKey:@"DisplayView_Mode"]; [[NSUserDefaults standardUserDefaults] setInteger:displayMode forKey:@"DisplayView_Mode"];
} }
- (IBAction) selectDisplaySize:(id)sender - (IBAction) selectDisplaySize:(id)sender
{ {
NSInteger displaySize = [(NSMenuItem *)sender tag]; const NSInteger displaySize = [(NSMenuItem *)sender tag];
[[NSUserDefaults standardUserDefaults] setInteger:displaySize forKey:@"DisplayView_Size"]; [[NSUserDefaults standardUserDefaults] setInteger:displaySize forKey:@"DisplayView_Size"];
} }
- (IBAction) selectDisplayRotation:(id)sender - (IBAction) selectDisplayRotation:(id)sender
{ {
NSInteger displayRotation = [(NSMenuItem *)sender tag]; const NSInteger displayRotation = [(NSMenuItem *)sender tag];
if (displayRotation != -1) if (displayRotation != -1)
{ {
[[NSUserDefaults standardUserDefaults] setDouble:displayRotation forKey:@"DisplayView_Rotation"]; [[NSUserDefaults standardUserDefaults] setDouble:displayRotation forKey:@"DisplayView_Rotation"];
@ -426,20 +406,13 @@
- (IBAction) setUseBilinear:(id)sender - (IBAction) setUseBilinear:(id)sender
{ {
BOOL useBilinear = [CocoaDSUtil getIBActionSenderButtonStateBool:sender]; const BOOL useBilinear = [CocoaDSUtil getIBActionSenderButtonStateBool:sender];
NSUInteger previewSrcWidth = (NSUInteger)[bilinearVideoFilter srcSize].width; const NSUInteger previewSrcWidth = (NSUInteger)[bilinearVideoFilter srcSize].width;
NSUInteger previewSrcHeight = (NSUInteger)[bilinearVideoFilter srcSize].height; const NSUInteger previewSrcHeight = (NSUInteger)[bilinearVideoFilter srcSize].height;
if (previewSrcWidth <= 128 || previewSrcHeight <= 128) if (previewSrcWidth <= 128 || previewSrcHeight <= 128)
{ {
if (useBilinear) [bilinearVideoFilter changeFilter:(useBilinear) ? VideoFilterTypeID_Bilinear : VideoFilterTypeID_Nearest2X];
{
[bilinearVideoFilter changeFilter:VideoFilterTypeID_Bilinear];
}
else
{
[bilinearVideoFilter changeFilter:VideoFilterTypeID_Nearest2X];
}
} }
NSBitmapImageRep *newPreviewImageRep = [bilinearVideoFilter bitmapImageRep]; NSBitmapImageRep *newPreviewImageRep = [bilinearVideoFilter bitmapImageRep];
@ -455,8 +428,8 @@
- (IBAction) selectVideoFilterType:(id)sender - (IBAction) selectVideoFilterType:(id)sender
{ {
VideoFilterTypeID vfType = (VideoFilterTypeID)[CocoaDSUtil getIBActionSenderTag:sender]; const VideoFilterTypeID vfType = (VideoFilterTypeID)[CocoaDSUtil getIBActionSenderTag:sender];
BOOL useBilinear = [[NSUserDefaults standardUserDefaults] boolForKey:@"DisplayView_UseBilinearOutput"]; const BOOL useBilinear = [[NSUserDefaults standardUserDefaults] boolForKey:@"DisplayView_UseBilinearOutput"];
[[NSUserDefaults standardUserDefaults] setInteger:vfType forKey:@"DisplayView_VideoFilter"]; [[NSUserDefaults standardUserDefaults] setInteger:vfType forKey:@"DisplayView_VideoFilter"];
@ -471,16 +444,9 @@
vfDestSize = [videoFilter destSize]; vfDestSize = [videoFilter destSize];
vfWidth = (NSUInteger)vfDestSize.width; vfWidth = (NSUInteger)vfDestSize.width;
vfHeight = (NSUInteger)vfDestSize.height; vfHeight = (NSUInteger)vfDestSize.height;
[bilinearVideoFilter setSourceSize:vfDestSize];
if (useBilinear) [bilinearVideoFilter setSourceSize:vfDestSize];
{ [bilinearVideoFilter changeFilter:(useBilinear) ? VideoFilterTypeID_Bilinear : VideoFilterTypeID_Nearest2X];
[bilinearVideoFilter changeFilter:VideoFilterTypeID_Bilinear];
}
else
{
[bilinearVideoFilter changeFilter:VideoFilterTypeID_Nearest2X];
}
} }
else if (vfWidth >= 256 || vfHeight >= 256) else if (vfWidth >= 256 || vfHeight >= 256)
{ {
@ -490,15 +456,7 @@
else else
{ {
[bilinearVideoFilter setSourceSize:vfDestSize]; [bilinearVideoFilter setSourceSize:vfDestSize];
[bilinearVideoFilter changeFilter:(useBilinear) ? VideoFilterTypeID_Bilinear : VideoFilterTypeID_Nearest2X];
if (useBilinear)
{
[bilinearVideoFilter changeFilter:VideoFilterTypeID_Bilinear];
}
else
{
[bilinearVideoFilter changeFilter:VideoFilterTypeID_Nearest2X];
}
} }
RGBA8888ForceOpaqueBuffer((const uint32_t *)[videoFilter runFilter], (uint32_t *)[bilinearVideoFilter srcBufferPtr], (vfWidth * vfHeight)); RGBA8888ForceOpaqueBuffer((const uint32_t *)[videoFilter runFilter], (uint32_t *)[bilinearVideoFilter srcBufferPtr], (vfWidth * vfHeight));
@ -516,7 +474,7 @@
- (IBAction) updateVolumeIcon:(id)sender - (IBAction) updateVolumeIcon:(id)sender
{ {
NSImage *iconImage = (NSImage *)[bindings objectForKey:@"volumeIconImage"]; NSImage *iconImage = (NSImage *)[bindings objectForKey:@"volumeIconImage"];
float vol = [[NSUserDefaults standardUserDefaults] floatForKey:@"Sound_Volume"]; const float vol = [[NSUserDefaults standardUserDefaults] floatForKey:@"Sound_Volume"];
if (vol <= 0.0f) if (vol <= 0.0f)
{ {
@ -560,20 +518,13 @@
- (IBAction) selectSPUSyncMode:(id)sender - (IBAction) selectSPUSyncMode:(id)sender
{ {
NSInteger spuSyncMode = [[NSUserDefaults standardUserDefaults] integerForKey:@"SPU_SyncMode"]; const NSInteger spuSyncMode = [[NSUserDefaults standardUserDefaults] integerForKey:@"SPU_SyncMode"];
if (spuSyncMode == SPU_SYNC_MODE_DUAL_SYNC_ASYNC) [spuSyncMethodMenu setEnabled:(spuSyncMode == SPU_SYNC_MODE_DUAL_SYNC_ASYNC) ? NO : YES];
{
[spuSyncMethodMenu setEnabled:NO];
}
else
{
[spuSyncMethodMenu setEnabled:YES];
}
} }
- (IBAction) selectSPUSyncMethod:(id)sender - (IBAction) selectSPUSyncMethod:(id)sender
{ {
NSInteger spuSyncMethod = [(NSMenuItem *)sender tag]; const NSInteger spuSyncMethod = [(NSMenuItem *)sender tag];
[[NSUserDefaults standardUserDefaults] setInteger:spuSyncMethod forKey:@"SPU_SyncMethod"]; [[NSUserDefaults standardUserDefaults] setInteger:spuSyncMethod forKey:@"SPU_SyncMethod"];
} }
@ -706,10 +657,7 @@
[bindings setValue:[selectedFile lastPathComponent] forKey:@"Arm9BiosImageName"]; [bindings setValue:[selectedFile lastPathComponent] forKey:@"Arm9BiosImageName"];
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content]; CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
if (cdsCore != nil) [cdsCore setArm9ImageURL:selectedFileURL];
{
[cdsCore setArm9ImageURL:selectedFileURL];
}
} }
- (void) chooseArm7BiosImageDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo - (void) chooseArm7BiosImageDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo
@ -733,10 +681,7 @@
[bindings setValue:[selectedFile lastPathComponent] forKey:@"Arm7BiosImageName"]; [bindings setValue:[selectedFile lastPathComponent] forKey:@"Arm7BiosImageName"];
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content]; CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
if (cdsCore != nil) [cdsCore setArm7ImageURL:selectedFileURL];
{
[cdsCore setArm7ImageURL:selectedFileURL];
}
} }
- (void) chooseFirmwareImageDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo - (void) chooseFirmwareImageDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo
@ -760,10 +705,7 @@
[bindings setValue:[selectedFile lastPathComponent] forKey:@"FirmwareImageName"]; [bindings setValue:[selectedFile lastPathComponent] forKey:@"FirmwareImageName"];
CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content]; CocoaDSCore *cdsCore = (CocoaDSCore *)[cdsCoreController content];
if (cdsCore != nil) [cdsCore setFirmwareImageURL:selectedFileURL];
{
[cdsCore setFirmwareImageURL:selectedFileURL];
}
} }
- (IBAction) configureInternalFirmware:(id)sender - (IBAction) configureInternalFirmware:(id)sender
@ -778,7 +720,7 @@
- (IBAction) closeFirmwareConfigSheet:(id)sender - (IBAction) closeFirmwareConfigSheet:(id)sender
{ {
NSWindow *sheet = [(NSControl *)sender window]; NSWindow *sheet = [(NSControl *)sender window];
NSInteger code = [CocoaDSUtil getIBActionSenderTag:sender]; const NSInteger code = [CocoaDSUtil getIBActionSenderTag:sender];
// Force end of editing of any text fields. // Force end of editing of any text fields.
[sheet makeFirstResponder:nil]; [sheet makeFirstResponder:nil];