diff options
| author | SND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2011-12-09 23:06:12 +0000 |
|---|---|---|
| committer | SND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2011-12-09 23:06:12 +0000 |
| commit | ec0822b8f00cd09591c5deafa78a382131186859 (patch) | |
| tree | 6b55a6aca6e6d8e82175dce69b93b7424eff25b0 /macosx/PcsxrMemoryObject.m | |
| parent | 7bbdf20d981c5fc8691e95bf0da2f71158058c97 (diff) | |
| download | pcsxr-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.m | 74 |
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 |
