summaryrefslogtreecommitdiff
path: root/macosx/Source
diff options
context:
space:
mode:
authoriCatButler <i.am.catbutler@gmail.com>2016-03-30 15:07:35 +0100
committeriCatButler <i.am.catbutler@gmail.com>2016-03-30 15:07:35 +0100
commit8b4350fee747708ffd376744ef5dc1e239a87ba6 (patch)
treea9ab6e2f25e06edc7c668353f8000856704f7fa3 /macosx/Source
parente3df273095a5800e3dcdcb63bd66e269c0c2d3a8 (diff)
downloadpcsxr-8b4350fee747708ffd376744ef5dc1e239a87ba6.tar.gz
Bring up to date with PCSX-R master (97809)
Diffstat (limited to 'macosx/Source')
-rw-r--r--macosx/Source/CheatController.m2
-rw-r--r--macosx/Source/PcsxrMemCardArray.m14
-rw-r--r--macosx/Source/PcsxrMemCardController.m4
-rw-r--r--macosx/Source/PcsxrMemoryObject.h10
-rw-r--r--macosx/Source/PcsxrMemoryObject.m81
-rw-r--r--macosx/Source/PcsxrPlugin.m43
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