summaryrefslogtreecommitdiff
path: root/macosx/plugins/PeopsXgl/macsrc
diff options
context:
space:
mode:
authorSND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-07-23 23:34:13 +0000
committerSND\MaddTheSane_cp <SND\MaddTheSane_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-07-23 23:34:13 +0000
commit356b1facf0618adca0b1e7a3f54fb8be06f4fedb (patch)
treefab8ee739f5dd85c5f4a64a5d003fbeb22b28653 /macosx/plugins/PeopsXgl/macsrc
parent5ddc3b2286806068bbf63e048a177a121eaa99b5 (diff)
downloadpcsxr-356b1facf0618adca0b1e7a3f54fb8be06f4fedb.tar.gz
Change the plug-in implementation on OS X's PeopsXGL plug-in.
Properly implement hacks on OS X's implementation of PeopsXGL. git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@86215 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'macosx/plugins/PeopsXgl/macsrc')
-rwxr-xr-xmacosx/plugins/PeopsXgl/macsrc/NetSfPeopsOpenGLPluginConfigController.h14
-rwxr-xr-xmacosx/plugins/PeopsXgl/macsrc/NetSfPeopsOpenGLPluginConfigController.m212
2 files changed, 154 insertions, 72 deletions
diff --git a/macosx/plugins/PeopsXgl/macsrc/NetSfPeopsOpenGLPluginConfigController.h b/macosx/plugins/PeopsXgl/macsrc/NetSfPeopsOpenGLPluginConfigController.h
index 0487006e..6039cb34 100755
--- a/macosx/plugins/PeopsXgl/macsrc/NetSfPeopsOpenGLPluginConfigController.h
+++ b/macosx/plugins/PeopsXgl/macsrc/NetSfPeopsOpenGLPluginConfigController.h
@@ -18,8 +18,6 @@
IBOutlet NSPopUpButton *ditherMode;
IBOutlet NSControl *fpsCounter;
IBOutlet NSControl *frameSkipping;
- IBOutlet NSControl *hackEnable;
- IBOutlet NSView *hacksView;
IBOutlet NSControl *vSync;
IBOutlet NSControl *proportionalResize;
@@ -42,14 +40,24 @@
IBOutlet NSControl *mjpegDecoder;
IBOutlet NSControl *mjpegDecoder15bit;
IBOutlet NSControl *gteAccuracy;
+ IBOutlet NSColorWell *scanlineColorWell;
-
+ IBOutlet NSMatrix *hacksMatrix;
+ IBOutlet NSControl *hackEnable;
+ IBOutlet NSWindow *hacksWindow;
+
NSMutableDictionary *keyValues;
}
+@property (readwrite, retain) NSMutableDictionary *keyValues;
+
- (IBAction)cancel:(id)sender;
- (IBAction)ok:(id)sender;
- (IBAction)reset:(id)sender;
+- (IBAction)toggleCheck:(id)sender;
+
- (IBAction)hackToggle:(id)sender;
+- (IBAction)showHacks:(id)sender;
+- (IBAction)closeHacks:(id)sender;
- (void)loadValues;
diff --git a/macosx/plugins/PeopsXgl/macsrc/NetSfPeopsOpenGLPluginConfigController.m b/macosx/plugins/PeopsXgl/macsrc/NetSfPeopsOpenGLPluginConfigController.m
index f5f5e7c3..a84c2e0f 100755
--- a/macosx/plugins/PeopsXgl/macsrc/NetSfPeopsOpenGLPluginConfigController.m
+++ b/macosx/plugins/PeopsXgl/macsrc/NetSfPeopsOpenGLPluginConfigController.m
@@ -102,6 +102,14 @@ void DlgProc()
[window makeKeyAndOrderFront:nil];
}
+#define kFPSCounter @"FPS Counter"
+#define kHacks @"Hacks"
+#define kAutoFullScreen @"Auto Full Screen"
+#define kFrameSkipping @"Frame Skipping"
+#define kFrameLimit @"Frame Limit"
+#define kVSync @"VSync"
+#define kHacksEnable @"Enable Hacks"
+
void PrepFactoryDefaultPreferences(void)
{
// THE place to find the names of settings.
@@ -116,14 +124,14 @@ void PrepFactoryDefaultPreferences(void)
[defaults registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:
[NSDictionary dictionaryWithObjectsAndKeys:
- @NO, @"FPS Counter",
- @NO, @"Auto Full Screen",
- @NO, @"Frame Skipping",
- @YES, @"Frame Limit",
- @NO, @"VSync",
- @NO, @"Enable Hacks",
+ @NO, kFPSCounter,
+ @NO, kAutoFullScreen,
+ @NO, kFrameSkipping,
+ @YES, kFrameLimit,
+ @NO, kVSync,
+ @NO, kHacksEnable,
@0, @"Dither Mode",
- @((unsigned int)0), @"Hacks",
+ @((unsigned int)0), kHacks,
@YES, @"Proportional Resize",
//[NSSize stringWithCString: @"default"], @"Fullscreen Resolution",
@@ -132,6 +140,7 @@ void PrepFactoryDefaultPreferences(void)
@0, @"Texture Enhancement Level",
@0, @"Texture Filter Level",
@0, @"Frame Buffer Level",
+ @0, @"Window Size",
@NO, @"Draw Scanlines",
// nasty:
[NSArchiver archivedDataWithRootObject: [NSColor colorWithCalibratedRed:0 green:0 blue:0 alpha:0.25]], @"Scanline Color",
@@ -142,6 +151,7 @@ void PrepFactoryDefaultPreferences(void)
@NO, @"Wireframe Mode",
@YES, @"Emulate mjpeg decoder", // helps remove unsightly vertical line in movies
@NO, @"Fast mjpeg decoder",
+ @YES, @"GteAccuracy",
nil], PrefsKey, nil]];
}
@@ -157,14 +167,13 @@ void ReadConfig(void)
PrepFactoryDefaultPreferences(); // in case user deletes, or on new startup
- //NOTE this is NOT the "keyValues" member of the controller. Just sayin.
NSDictionary* keyValues = [[NSUserDefaults standardUserDefaults] dictionaryForKey:PrefsKey];
// bind all prefs settings to their PCSXR counterparts
// with a little finagling to make it work as expected
- iShowFPS = [[keyValues objectForKey:@"FPS Counter"] boolValue];
+ iShowFPS = [[keyValues objectForKey:kFPSCounter] boolValue];
- if ([[keyValues objectForKey:@"Frame Limit"] boolValue]){
+ if ([[keyValues objectForKey:kFrameLimit] boolValue]){
bUseFrameLimit = 1;
iFrameLimit = 2; // required
fFrameRate = 60; // required (some number, 60 seems ok)
@@ -173,11 +182,11 @@ void ReadConfig(void)
// Dithering is either on or off in OpenGL plug, but hey
bDrawDither = [[keyValues objectForKey:@"Dither Mode"] intValue];
- bChangeWinMode = [[keyValues objectForKey:@"Auto Full Screen"] boolValue] ? 2 : 1;
- bUseFrameSkip = [[keyValues objectForKey:@"Frame Skipping"] boolValue];
+ bChangeWinMode = [[keyValues objectForKey:kAutoFullScreen] boolValue] ? 2 : 1;
+ bUseFrameSkip = [[keyValues objectForKey:kFrameSkipping] boolValue];
- bUseFixes = [[keyValues objectForKey:@"Enable Hacks"] boolValue];
- dwCfgFixes = [[keyValues objectForKey:@"Hacks"] unsignedIntValue];
+ bUseFixes = [[keyValues objectForKey:kHacksEnable] boolValue];
+ dwCfgFixes = [[keyValues objectForKey:kHacks] unsignedIntValue];
// we always start out at 800x600 (at least until resizing the window is implemented)
@@ -187,6 +196,7 @@ void ReadConfig(void)
iBlurBuffer = [[keyValues objectForKey:@"Blur"] boolValue]; // not noticeable, but doesn't harm
iUseScanLines = [[keyValues objectForKey:@"Draw Scanlines"] boolValue]; // works
NSColor* scanColor = [NSUnarchiver unarchiveObjectWithData: [keyValues objectForKey:@"Scanline Color"]];
+ scanColor = [scanColor colorUsingColorSpace:[NSColorSpace deviceRGBColorSpace]];
iScanlineColor[0] = [scanColor redComponent];
iScanlineColor[1] = [scanColor greenComponent];
iScanlineColor[2] = [scanColor blueComponent];
@@ -236,13 +246,14 @@ void ReadConfig(void)
ulKeybits &=~ KEY_SHOWFPS;
// additional checks
- if(!iColDepth) iColDepth=32;
-#if 0 // was in SoftGPU, not in OpenGL
- if(iUseFixes) dwActFixes=dwCfgFixes;
- else dwActFixes=0;
-#else
- dwActFixes = 0; // for now... TODO
-#endif
+ if(!iColDepth)
+ iColDepth=32;
+ if(bUseFixes)
+ {
+ dwActFixes = dwCfgFixes;
+ } else {
+ dwActFixes = 0;
+ }
SetFixes();
@@ -254,47 +265,58 @@ void ReadConfig(void)
BuildDispMenu(0);
}
-@implementation PluginConfigController
+@implementation NetSfPeopsOpenGLPluginConfigController
+
+@synthesize keyValues;
- (IBAction)cancel:(id)sender
{
- //TODO: the IB bindings have already changed everything to what the
- // user clicked on.
- // Therefore, "backup" settings should be stored before interaction,
- // then restored here.
- // IMO, 'cancel' is not needed since the config dialog doesn't launch
- // an action when "ok" is clicked.
[self close];
}
- (IBAction)ok:(id)sender
{
-// most everything is taken care of through bindings in Interface Builder.
-// note that the IB interface uses NSObjectController (a dict controller) as a proxy to
-// NSUserDefaultsController because NSUserDefaultsController can't
-// handle dictionaries. Yup, that's what I said. </snark>.
-
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- [defaults synchronize];
-
-// treat hacks specially:
unsigned int hackValues = 0;
- NSArray *views = [hacksView subviews];
+ NSArray *views = [hacksMatrix cells];
- for (NSView *control in views) {
- if ([control isKindOfClass:[NSButton class]]) {
- hackValues |= [(NSControl *)control intValue] << ([control tag] - 1);
- }
+ for (NSControl *control in views) {
+ hackValues |= [control intValue] << ([control tag] - 1);
}
- keyValues = [NSMutableDictionary dictionaryWithDictionary: [[NSUserDefaults standardUserDefaults] dictionaryForKey:PrefsKey]];
+ self.keyValues = [NSMutableDictionary dictionaryWithDictionary: [[NSUserDefaults standardUserDefaults] dictionaryForKey:PrefsKey]];
NSMutableDictionary *writeDic = [NSMutableDictionary dictionaryWithDictionary:keyValues];
- [writeDic setObject:@((unsigned int)hackValues) forKey:@"Hacks"];
+ [writeDic setObject:@((unsigned int)hackValues) forKey:kHacks];
+ [writeDic setObject:@((BOOL)[hackEnable integerValue]) forKey:kHacksEnable];
+ [writeDic setObject:@((BOOL)[fpsCounter integerValue]) forKey:kFPSCounter];
+ [writeDic setObject:[NSArchiver archivedDataWithRootObject:[scanlineColorWell color]] forKey:@"Scanline Color"];
+ [writeDic setObject:@((BOOL)[frameSkipping integerValue]) forKey:kFrameSkipping];
+ [writeDic setObject:@((BOOL)[autoFullScreen integerValue]) forKey:kAutoFullScreen];
+ //[writeDic setObject:@((BOOL)[frameLimit integerValue]) forKey:kFrameLimit];
+ [writeDic setObject:@((BOOL)[proportionalResize integerValue]) forKey:@"Proportional Resize"];
+ [writeDic setObject:@([ditherMode integerValue]) forKey:@"Dither Mode"];
+ [writeDic setObject:@([offscreenDrawing integerValue]) forKey:@"Offscreen Drawing Level"];
+ [writeDic setObject:@([texColorDepth indexOfItem:[texColorDepth selectedItem]]) forKey:@"Texture Color Depth Level"];
+ [writeDic setObject:@([texEnhancment integerValue]) forKey:@"Texture Enhancement Level"];
+ [writeDic setObject:@([texFiltering integerValue]) forKey:@"Texture Filter Level"];
+ [writeDic setObject:@([frameBufferEffects indexOfItem:[frameBufferEffects selectedItem]]) forKey:@"Frame Buffer Level"];
+ [writeDic setObject:@((BOOL)[drawScanlines integerValue]) forKey:@"Draw Scanlines"];
+ [writeDic setObject:@((BOOL)[advancedBlending integerValue]) forKey:@"Advanced Blending"];
+ [writeDic setObject:@((BOOL)[opaquePass integerValue]) forKey:@"Opaque Pass"];
+ [writeDic setObject:@((BOOL)[blurEffect integerValue]) forKey:@"Blur"];
+ [writeDic setObject:@((BOOL)[zMaskClipping integerValue]) forKey:@"Z Mask Clipping"];
+ [writeDic setObject:@((BOOL)[wireframeOnly integerValue]) forKey:@"Wireframe Mode"];
+ [writeDic setObject:@((BOOL)[mjpegDecoder integerValue]) forKey:@"Emulate mjpeg decoder"];
+ [writeDic setObject:@((BOOL)[mjpegDecoder15bit integerValue]) forKey:@"Fast mjpeg decoder"];
+ [writeDic setObject:@((BOOL)[gteAccuracy integerValue]) forKey:@"GteAccuracy"];
+ [writeDic setObject:@((BOOL)[vSync integerValue]) forKey:kVSync];
- // write the preferences with Hacks adjustments
+ //[writeDic setObject:@([windowSize indexOfItem:[windowSize selectedItem]]) forKey:@"Window Size"];
+
+
[defaults setObject:writeDic forKey:PrefsKey];
[defaults synchronize];
@@ -312,54 +334,106 @@ void ReadConfig(void)
{
// enable the "hacks" checkboxes
BOOL enable = [sender intValue] ? YES : NO;
- NSArray *views = [hacksView subviews];
+ NSArray *views = [hacksMatrix cells];
- for (NSView *control in views) {
- if ([control isKindOfClass:[NSButton class]]) {
- [(NSControl *)control setEnabled:enable];
- }
+ for (NSControl *control in views) {
+ [control setEnabled:enable];
}
}
-- (void)loadValues
+- (void)loadHacksValues
{
-// set up the window with the values in the .plist
+ unsigned int hackValues = [[self.keyValues objectForKey:kHacks] unsignedIntValue];
+ [hackEnable setIntegerValue:[[self.keyValues objectForKey:kHacksEnable] boolValue]];
-// all preferences are bound in Interface Builder.
-// Though the "hacks settings" is controlled here because it disables/enables the list
-// and uses a bit mask
+ // build refs to hacks checkboxes
+ NSArray *views = [hacksMatrix cells];
+ for (NSControl *control in views) {
+ [control setIntValue:(hackValues >> ([control tag] - 1)) & 1];
+ }
+
+ [self hackToggle:hackEnable];
+}
-// Note that in the .nib, an NSObjectController (aka "dict controller")
-// is used as a proxy to NSUserDefaults
-// because NSUserDefaults is slightly retarded about nested dictionaries
-// OK, "Completely" retarded.
+- (void)loadValues
+{
+// set up the window with the values in the .plist
PrepFactoryDefaultPreferences(); // in case we're starting anew
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
/* load from preferences */
- keyValues = [NSMutableDictionary dictionaryWithDictionary: [defaults dictionaryForKey:PrefsKey]];
+ self.keyValues = [NSMutableDictionary dictionaryWithDictionary: [defaults dictionaryForKey:PrefsKey]];
- unsigned int hackValues = [[keyValues objectForKey:@"Hacks"] unsignedIntValue];
+ [self loadHacksValues];
+
+ [autoFullScreen setIntegerValue:[[keyValues objectForKey:kAutoFullScreen] boolValue]];
+ [ditherMode selectItemAtIndex:[[keyValues objectForKey:@"Dither Mode"] integerValue]];
+ [fpsCounter setIntegerValue:[[keyValues objectForKey:kFPSCounter] boolValue]];
+ [scanlineColorWell setColor:[NSUnarchiver unarchiveObjectWithData: [keyValues objectForKey:@"Scanline Color"]]];
+ [frameSkipping setIntegerValue:[[keyValues objectForKey:kFrameSkipping] boolValue]];
+ [advancedBlending setIntegerValue:[[keyValues objectForKey:@"Advanced Blending"] boolValue]];
+ [texFiltering setIntegerValue:[[keyValues objectForKey:@"Texture Filter Level"] integerValue]];
+ [texEnhancment setIntegerValue:[[keyValues objectForKey:@"Texture Enhancement Level"] integerValue]];
+ [zMaskClipping setIntegerValue:[[keyValues objectForKey:@"Z Mask Clipping"] integerValue]];
+ [mjpegDecoder setIntegerValue:[[keyValues objectForKey:@"Emulate mjpeg decoder"] boolValue]];
+ [mjpegDecoder15bit setIntegerValue:[[keyValues objectForKey:@"Fast mjpeg decoder"] boolValue]];
+ [drawScanlines setIntegerValue:[[keyValues objectForKey:@"Draw Scanlines"] boolValue]];
+ [offscreenDrawing selectItemAtIndex:[[keyValues objectForKey:@"Offscreen Drawing Level"] integerValue]];
+ [advancedBlending setIntegerValue:[[keyValues objectForKey:@"Advanced Blending"] boolValue]];
+ [opaquePass setIntegerValue:[[keyValues objectForKey:@"Opaque Pass"] boolValue]];
+ [wireframeOnly setIntegerValue:[[keyValues objectForKey:@"Wireframe Mode"] boolValue]];
+ [blurEffect setIntegerValue:[[keyValues objectForKey:@"Blur"] boolValue]];
+ [texColorDepth selectItemAtIndex:[[keyValues objectForKey:@"Texture Color Depth Level"] integerValue]];
+ [gteAccuracy setIntegerValue:[[keyValues objectForKey:@"GteAccuracy"] boolValue]];
+ [scanlineColorWell setEnabled:[[keyValues objectForKey:@"Draw Scanlines"] boolValue]];
+ [frameBufferEffects selectItemAtIndex:[[keyValues objectForKey:@"Frame Buffer Level"] integerValue]];
+ [vSync setIntegerValue:[[keyValues objectForKey:kVSync] boolValue]];
+ [proportionalResize setIntegerValue:[[keyValues objectForKey:@"Proportional Resize"] boolValue]];
- // build refs to hacks checkboxes
- NSArray *views = [hacksView subviews];
- for (NSView *control in views) {
- if ([control isKindOfClass:[NSButton class]]) {
- [(NSControl *)control setIntValue:(hackValues >> ([control tag] - 1)) & 1];
- }
- }
- [self hackToggle:hackEnable];
+ //[windowSize selectItemAtIndex:[[keyValues objectForKey:@"Window Size"] integerValue]];
}
- (void)awakeFromNib
{
- hacksView = [[hacksView subviews] objectAtIndex:0];
+ //hacksView = [[hacksView subviews] objectAtIndex:0];
[[NSColorPanel sharedColorPanel] setShowsAlpha:YES]; // eliminate dumb behavior!
}
+- (void)hacksSheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo
+{
+ NSParameterAssert(sheet == hacksWindow);
+ if (returnCode == NSCancelButton) {
+ //Reset hack preferences.
+ [self loadHacksValues];
+ }
+ [sheet orderOut:nil];
+}
+
+- (IBAction)closeHacks:(id)sender
+{
+ if ([sender tag] == 1) {
+ [NSApp endSheet:hacksWindow returnCode:NSOKButton];
+ } else {
+ [NSApp endSheet:hacksWindow returnCode:NSCancelButton];
+ }
+}
+
+- (IBAction)showHacks:(id)sender
+{
+ [NSApp beginSheet:hacksWindow modalForWindow:[self window] modalDelegate:self
+ didEndSelector:@selector(hacksSheetDidEnd:returnCode:contextInfo:) contextInfo:NULL];
+}
+
+- (IBAction)toggleCheck:(id)sender
+{
+ if([sender tag] == 1) {
+ [scanlineColorWell setEnabled: [sender intValue] ? YES : NO];
+ }
+}
+
@end
#import "OSXPlugLocalization.h"