diff options
| author | iCatButler <i.am.catbutler@gmail.com> | 2016-03-30 15:07:35 +0100 |
|---|---|---|
| committer | iCatButler <i.am.catbutler@gmail.com> | 2016-03-30 15:07:35 +0100 |
| commit | 8b4350fee747708ffd376744ef5dc1e239a87ba6 (patch) | |
| tree | a9ab6e2f25e06edc7c668353f8000856704f7fa3 /macosx/Source | |
| parent | e3df273095a5800e3dcdcb63bd66e269c0c2d3a8 (diff) | |
| download | pcsxr-8b4350fee747708ffd376744ef5dc1e239a87ba6.tar.gz | |
Bring up to date with PCSX-R master (97809)
Diffstat (limited to 'macosx/Source')
| -rw-r--r-- | macosx/Source/CheatController.m | 2 | ||||
| -rw-r--r-- | macosx/Source/PcsxrMemCardArray.m | 14 | ||||
| -rw-r--r-- | macosx/Source/PcsxrMemCardController.m | 4 | ||||
| -rw-r--r-- | macosx/Source/PcsxrMemoryObject.h | 10 | ||||
| -rw-r--r-- | macosx/Source/PcsxrMemoryObject.m | 81 | ||||
| -rw-r--r-- | macosx/Source/PcsxrPlugin.m | 43 |
6 files changed, 76 insertions, 78 deletions
diff --git a/macosx/Source/CheatController.m b/macosx/Source/CheatController.m index ebe73137..79dfb2c5 100644 --- a/macosx/Source/CheatController.m +++ b/macosx/Source/CheatController.m @@ -192,7 +192,7 @@ - (IBAction)closeCheatEdit:(id)sender { - [NSApp endSheet:editCheatWindow returnCode:[sender tag] == 1 ? NSCancelButton : NSOKButton]; + [[self window] endSheet:editCheatWindow returnCode:[sender tag] == 1 ? NSCancelButton : NSOKButton]; } - (IBAction)changeCheat:(id)sender diff --git a/macosx/Source/PcsxrMemCardArray.m b/macosx/Source/PcsxrMemCardArray.m index b7429f20..cf01e15b 100644 --- a/macosx/Source/PcsxrMemCardArray.m +++ b/macosx/Source/PcsxrMemCardArray.m @@ -103,7 +103,7 @@ static inline void ClearMemcardData(char *to, int dsti, char *str) McdBlock memBlock; GetMcdBlockInfo(carNum, i + 1, &memBlock); - if ([PcsxrMemoryObject memFlagsFromBlockFlags:memBlock.Flags] == memFlagFree) { + if ([PcsxrMemoryObject memFlagsFromBlockFlags:memBlock.Flags] == PCSXRMemFlagFree) { //Free space: ignore i++; continue; @@ -220,7 +220,7 @@ static inline void ClearMemcardData(char *to, int dsti, char *str) { int memSize = MAX_MEMCARD_BLOCKS; for (PcsxrMemoryObject *memObj in rawArray) { - if (memObj.flag != memFlagDeleted) { + if (memObj.flag != PCSXRMemFlagDeleted) { memSize -= memObj.blockSize; } } @@ -272,9 +272,9 @@ static inline void ClearMemcardData(char *to, int dsti, char *str) GetMcdBlockInfo(cardNumber, i+1, &baseBlock); PCSXRMemFlag theFlags = [PcsxrMemoryObject memFlagsFromBlockFlags:baseBlock.Flags]; - if (theFlags == memFlagDeleted || theFlags == memFlagFree) { + if (theFlags == PCSXRMemFlagDeleted || theFlags == PCSXRMemFlagFree) { PCSXRMemFlag up1Flags = theFlags; - while ((up1Flags == memFlagDeleted || up1Flags == memFlagFree) && x < MAX_MEMCARD_BLOCKS) { + while ((up1Flags == PCSXRMemFlagDeleted || up1Flags == PCSXRMemFlagFree) && x < MAX_MEMCARD_BLOCKS) { x++; McdBlock up1Block; GetMcdBlockInfo(cardNumber, x+1, &up1Block); @@ -300,7 +300,6 @@ static inline void ClearMemcardData(char *to, int dsti, char *str) - (void)deleteMemoryBlocksAtIndex:(int)slotnum { - int xor = 0, i, j; char *data, *ptr, *filename; if (cardNumber == 1) { filename = Config.Mcd1; @@ -321,8 +320,9 @@ static inline void ClearMemcardData(char *to, int dsti, char *str) McdBlock flagBlock; - for(i = theObj.startingIndex + 1; i < (theObj.startingIndex + theObj.blockSize + 1); i++) + for(int i = theObj.startingIndex + 1; i < (theObj.startingIndex + theObj.blockSize + 1); i++) { + char xor = 0; GetMcdBlockInfo(cardNumber, i, &flagBlock); ptr = data + i * 128; @@ -335,7 +335,7 @@ static inline void ClearMemcardData(char *to, int dsti, char *str) *ptr = 0xA0 | (flagBlock.Flags & 0xF); } else { continue; } - for (j = 0; j < 127; j++) xor ^= *ptr++; + for (unsigned char j = 0; j < 127; j++) xor ^= *ptr++; *ptr = xor; SaveMcd(filename, data, i * 128, 128); diff --git a/macosx/Source/PcsxrMemCardController.m b/macosx/Source/PcsxrMemCardController.m index 8f7bccd6..873303d8 100644 --- a/macosx/Source/PcsxrMemCardController.m +++ b/macosx/Source/PcsxrMemCardController.m @@ -115,7 +115,7 @@ int cardSize, freeConsBlocks, availBlocks; - if ([[fromCard memoryArray][selectedIndex] flag] == memFlagFree) { + if ([[fromCard memoryArray][selectedIndex] flag] == PCSXRMemFlagFree) { NSBeep(); return; } @@ -193,7 +193,7 @@ PcsxrMemoryObject *tmpObj = [curCard memoryArray][selectedIndex]; - if (tmpObj.flag == memFlagFree) { + if (tmpObj.flag == PCSXRMemFlagFree) { NSBeep(); return; } diff --git a/macosx/Source/PcsxrMemoryObject.h b/macosx/Source/PcsxrMemoryObject.h index 1223cd24..fd568199 100644 --- a/macosx/Source/PcsxrMemoryObject.h +++ b/macosx/Source/PcsxrMemoryObject.h @@ -10,11 +10,11 @@ #include "sio.h" typedef NS_ENUM(char, PCSXRMemFlag) { - memFlagDeleted, - memFlagFree, - memFlagUsed, - memFlagLink, - memFlagEndLink + PCSXRMemFlagDeleted, + PCSXRMemFlagFree, + PCSXRMemFlagUsed, + PCSXRMemFlagLink, + PCSXRMemFlagEndLink }; @interface PcsxrMemoryObject : NSObject diff --git a/macosx/Source/PcsxrMemoryObject.m b/macosx/Source/PcsxrMemoryObject.m index 9860e7fa..e8393608 100644 --- a/macosx/Source/PcsxrMemoryObject.m +++ b/macosx/Source/PcsxrMemoryObject.m @@ -22,32 +22,37 @@ @property (readwrite) BOOL hasImages; @end +#pragma pack(push,2) +struct PSXRGBColor { + UInt8 r; + UInt8 g; + UInt8 b; +}; +#pragma pack(pop) + @implementation PcsxrMemoryObject + (NSArray *)imagesFromMcd:(McdBlock *)block { NSMutableArray *imagesArray = [[NSMutableArray alloc] initWithCapacity:block->IconCount]; for (int i = 0; i < block->IconCount; i++) { - NSImage *memImage; - @autoreleasepool { - NSBitmapImageRep *imageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:16 pixelsHigh:16 bitsPerSample:8 samplesPerPixel:3 hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedRGBColorSpace bytesPerRow:0 bitsPerPixel:0]; - - short *icon = block->Icon; - - int x, y, c, v, r, g, b; - for (v = 0; v < 256; v++) { - x = (v % 16); - y = (v / 16); - c = icon[(i * 256) + v]; - r = (c & 0x001f) << 3; - g = ((c & 0x03e0) >> 5) << 3; - b = ((c & 0x7c00) >> 10) << 3; - [imageRep setColor:[NSColor colorWithCalibratedRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1.0] atX:x y:y]; - } - memImage = [[NSImage alloc] init]; - [memImage addRepresentation:imageRep]; - [memImage setSize:NSMakeSize(32, 32)]; + NSBitmapImageRep *imageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:16 pixelsHigh:16 bitsPerSample:8 samplesPerPixel:3 hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedRGBColorSpace bytesPerRow:16*3 bitsPerPixel:24]; + struct PSXRGBColor *cocoaImageData = (struct PSXRGBColor *)imageRep.bitmapData; + short *icon = block->Icon; + + for (int v = 0; v < 256; v++) { + int c = icon[(i * 256) + v]; + int r = (c & 0x001f) << 3; + int g = ((c & 0x03e0) >> 5) << 3; + int b = ((c & 0x7c00) >> 10) << 3; + struct PSXRGBColor *colorItem = &cocoaImageData[v]; + colorItem->r = r; + colorItem->g = g; + colorItem->b = b; } + NSImage *memImage = [[NSImage alloc] init]; + [memImage addRepresentation:imageRep]; + [memImage setSize:NSMakeSize(32, 32)]; [imagesArray addObject:memImage]; } return [NSArray arrayWithArray:imagesArray]; @@ -86,23 +91,23 @@ static NSString *MemLabelMultiSave; { switch (flagNameIndex) { default: - case memFlagFree: + case PCSXRMemFlagFree: return MemLabelFree; break; - case memFlagEndLink: + case PCSXRMemFlagEndLink: return MemLabelEndLink; break; - case memFlagLink: + case PCSXRMemFlagLink: return MemLabelLink; break; - case memFlagUsed: + case PCSXRMemFlagUsed: return MemLabelUsed; break; - case memFlagDeleted: + case PCSXRMemFlagDeleted: return MemLabelDeleted; break; } @@ -126,22 +131,22 @@ static NSString *MemLabelMultiSave; { if ((blockFlags & 0xF0) == 0xA0) { if ((blockFlags & 0xF) >= 1 && (blockFlags & 0xF) <= 3) - return memFlagDeleted; + return PCSXRMemFlagDeleted; else - return memFlagFree; + return PCSXRMemFlagFree; } else if ((blockFlags & 0xF0) == 0x50) { if ((blockFlags & 0xF) == 0x1) - return memFlagUsed; + return PCSXRMemFlagUsed; else if ((blockFlags & 0xF) == 0x2) - return memFlagLink; + return PCSXRMemFlagLink; else if ((blockFlags & 0xF) == 0x3) - return memFlagEndLink; + return PCSXRMemFlagEndLink; } else - return memFlagFree; + return PCSXRMemFlagFree; //Xcode complains unless we do this... NSLog(@"Unknown flag %x", blockFlags); - return memFlagFree; + return PCSXRMemFlagFree; } - (instancetype)initWithMcdBlock:(McdBlock *)infoBlock startingIndex:(uint8_t)startIdx size:(uint8_t)memSize @@ -150,7 +155,7 @@ static NSString *MemLabelMultiSave; self.startingIndex = startIdx; self.blockSize = memSize; self.flag = [PcsxrMemoryObject memFlagsFromBlockFlags:infoBlock->Flags]; - if (self.flag == memFlagFree) { + if (self.flag == PCSXRMemFlagFree) { self.imageArray = @[]; self.hasImages = NO; self.title = @"Free block"; @@ -279,23 +284,23 @@ static inline void SetupAttrStr(NSMutableAttributedString *mutStr, NSColor *txtc switch (flag) { default: - case memFlagFree: + case PCSXRMemFlagFree: return attribMemLabelFree; break; - case memFlagEndLink: + case PCSXRMemFlagEndLink: return attribMemLabelEndLink; break; - case memFlagLink: + case PCSXRMemFlagLink: return attribMemLabelLink; break; - case memFlagUsed: + case PCSXRMemFlagUsed: return attribMemLabelUsed; break; - case memFlagDeleted: + case PCSXRMemFlagDeleted: return attribMemLabelDeleted; break; } @@ -303,7 +308,7 @@ static inline void SetupAttrStr(NSMutableAttributedString *mutStr, NSColor *txtc - (BOOL)showCount { - if (flag == memFlagFree) { + if (flag == PCSXRMemFlagFree) { //Always show the size of the free blocks return YES; } else { diff --git a/macosx/Source/PcsxrPlugin.m b/macosx/Source/PcsxrPlugin.m index 09e3eecf..016aefff 100644 --- a/macosx/Source/PcsxrPlugin.m +++ b/macosx/Source/PcsxrPlugin.m @@ -242,20 +242,15 @@ #define PluginSymbolNameConfigure(type) PluginSymbolName(type, @"configure") #define PluginSymbolNameAbout(type) PluginSymbolName(type, @"about") -- (void)runCommand:(id)arg +- (void)runCommandNamed:(NSString*)arg { - @autoreleasepool { - NSString *funcName = arg[0]; - long (*func)(void); - - func = SysLoadSym(pluginRef, [funcName cStringUsingEncoding:NSASCIIStringEncoding]); - if (SysLibError() == NULL) { - func(); - } else { - NSBeep(); - } - - return; + long (*func)(void); + + func = SysLoadSym(pluginRef, [arg cStringUsingEncoding:NSASCIIStringEncoding]); + if (SysLibError() == NULL) { + func(); + } else { + NSBeep(); } } @@ -336,26 +331,24 @@ - (void)aboutAs:(int)aType { - NSArray *arg; - NSString *aboutSym = PluginSymbolNameAbout(aType); - arg = @[aboutSym, @0]; + //NSArray *arg = @[aboutSym, @0]; // detach a new thread - [NSThread detachNewThreadSelector:@selector(runCommand:) toTarget:self - withObject:arg]; + dispatch_async(dispatch_get_global_queue(0, 0), ^{ + [self runCommandNamed:aboutSym]; + }); } - (void)configureAs:(int)aType { - NSArray *arg; - NSString *configSym = PluginSymbolNameConfigure(aType); - arg = @[configSym, @1]; + //NSArray *arg = @[configSym, @1]; // detach a new thread - [NSThread detachNewThreadSelector:@selector(runCommand:) toTarget:self - withObject:arg]; + dispatch_async(dispatch_get_global_queue(0, 0), ^{ + [self runCommandNamed:configSym]; + }); } - (NSString *)displayVersion @@ -376,7 +369,7 @@ if (_name == nil) return [path lastPathComponent]; - return [NSString stringWithFormat:@"%@ %@ [%@]", self.name, [self displayVersion], [path lastPathComponent]]; + return [NSString stringWithFormat:@"%@ %@ [%@]", self.name, self.displayVersion, path.lastPathComponent]; } - (NSString*)debugDescription @@ -384,7 +377,7 @@ if (_name == nil) { return fullPlugPath; } - return [NSString stringWithFormat:@"%@, %@ [%@]", self.name, [self displayVersion], fullPlugPath]; + return [NSString stringWithFormat:@"%@, %@ [%@]", self.name, self.displayVersion, fullPlugPath]; } // the plugin will check if it's still valid and return the status |
