summaryrefslogtreecommitdiff
path: root/macosx/PcsxrMemoryObject.m
diff options
context:
space:
mode:
authorSND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2011-12-09 23:06:12 +0000
committerSND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2011-12-09 23:06:12 +0000
commitec0822b8f00cd09591c5deafa78a382131186859 (patch)
tree6b55a6aca6e6d8e82175dce69b93b7424eff25b0 /macosx/PcsxrMemoryObject.m
parent7bbdf20d981c5fc8691e95bf0da2f71158058c97 (diff)
downloadpcsxr-ec0822b8f00cd09591c5deafa78a382131186859.tar.gz
Moving things around in the Memory manager for Mac OS X.
Fixed a bug in the OS X memory manager that would prevent the change in memory card to be reflected in the window. git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@73112 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'macosx/PcsxrMemoryObject.m')
-rw-r--r--macosx/PcsxrMemoryObject.m74
1 files changed, 73 insertions, 1 deletions
diff --git a/macosx/PcsxrMemoryObject.m b/macosx/PcsxrMemoryObject.m
index 297029a2..aa5c7b44 100644
--- a/macosx/PcsxrMemoryObject.m
+++ b/macosx/PcsxrMemoryObject.m
@@ -7,23 +7,95 @@
//
#import "PcsxrMemoryObject.h"
+#import <AppKit/NSColor.h>
@implementation PcsxrMemoryObject
++ (NSImage *)imageFromMcd:(short *)icon
+{
+ NSBitmapImageRep *imageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:16 pixelsHigh:16 bitsPerSample:8 samplesPerPixel:3 hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedRGBColorSpace bytesPerRow:0 bitsPerPixel:0];
+
+#if 0
+ int x, y, c;
+ for (y = 0; y < 32; y++) {
+ for (x = 0; x < 32; x++) {
+ c = icon[(y>>1) * 16 + (x>>1)];
+ c = ((c & 0x001f) << 10) | ((c & 0x7c00) >> 10) | (c & 0x03e0);
+ c = ((c & 0x001f) << 3) | ((c & 0x03e0) << 6) | ((c & 0x7c00) << 9);
+
+ NSUInteger NSc = c;
+
+ [imageRep setPixel:&NSc atX:x y:y];
+ }
+ }
+#else
+ int x, y, c, i, r, g, b;
+ for (i = 0; i < 256; i++) {
+ x = (i % 16);
+ y = (i / 16);
+ c = icon[i];
+ 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];
+ }
+#endif
+ NSImage *theImage = [[NSImage alloc] init];
+ [theImage addRepresentation:imageRep];
+ [imageRep release];
+ [theImage setScalesWhenResized:YES];
+ [theImage setSize:NSMakeSize(32, 32)];
+ return [theImage autorelease];
+}
+
+- (id)initWithMcdBlock:(McdBlock *)infoBlock
+{
+ if (self = [super init]) {
+ self.englishName = [NSString stringWithCString:infoBlock->Title encoding:NSASCIIStringEncoding];
+ self.sjisName = [NSString stringWithCString:infoBlock->sTitle encoding:NSShiftJISStringEncoding];
+ self.memImage = [PcsxrMemoryObject imageFromMcd:infoBlock->Icon];
+ self.memName = [NSString stringWithCString:infoBlock->Name encoding:NSASCIIStringEncoding];
+ self.memID = [NSString stringWithCString:infoBlock->ID encoding:NSASCIIStringEncoding];
+ self.memIconCount = infoBlock->IconCount;
+ self.memFlags = infoBlock->Flags;
+ if ((infoBlock->Flags & 0xF0) == 0xA0) {
+ if ((infoBlock->Flags & 0xF) >= 1 &&
+ (infoBlock->Flags & 0xF) <= 3) {
+ self.notDeleted = NO;
+ } else
+ self.notDeleted = NO;
+ } else if ((infoBlock->Flags & 0xF0) == 0x50)
+ self.notDeleted = YES;
+ else
+ self.notDeleted = NO;
+
+ }
+ return self;
+}
+
@synthesize englishName;
@synthesize sjisName;
@synthesize memImage;
@synthesize notDeleted;
-@synthesize memNumber;
@synthesize memFlags;
+@synthesize memName;
+@synthesize memID;
+@synthesize memIconCount;
- (void)dealloc
{
[englishName release];
[sjisName release];
+ [memName release];
+ [memID release];
[memImage release];
[super dealloc];
}
+- (NSString *)description
+{
+ return [NSString stringWithFormat:@"%@ (%@): Name: %@ ID: %@ Flags: %d", englishName, sjisName, memName, memID, memFlags];
+}
+
@end