pcsxr/macosx/Source/PgxpController.m

99 lines
2.6 KiB
Objective-C

//
// PgxpController.m
// Pcsxr
//
// Created by MrLavender on 29/06/2017.
//
#import "PgxpController.h"
#include "psxcommon.h"
#define kPGXP_GTE 0
#define kPGXP_Cache 1
#define kPGXP_Texture 2
NSString* kPGXP_GTE_Key = @"PGXP_GTE";
NSString* kPGXP_Cache_Key = @"PGXP_Cache";
NSString* kPGXP_Texture_Key = @"PGXP_Texture";
NSString* kPGXP_Mode_Key = @"PGXP_Mode";
NSString* infoText[] = {
@"Disabled\n\nPGXP is no longer mirroring any functions.",
@"Memory operations only\n\nPGXP is mirroring load, store and processor transfer operations of the CPU and GTE.",
@"Memory and CPU arithmetic operations\n\nPGXP is mirroring load, store and transfer operations of the CPU and GTE and arithmetic/logic functions of the PSX CPU.\n\n(WARNING: This mode is currently unfinished and may cause incorrect behaviour in some games)"
};
@interface PgxpController ()
@end
@implementation PgxpController
- (void)awakeFromNib
{
self.vertexCreation.state = Config.PGXP_GTE;
self.vertexCaching.state = Config.PGXP_Cache;
self.perspectiveCorrect.state = Config.PGXP_Texture;
[self.pgxpModeButton selectItemAtIndex:Config.PGXP_Mode];
[self setInfoTextForPgxpMode];
}
- (IBAction)onOptionChange:(NSButton*)sender
{
switch (sender.tag) {
case kPGXP_GTE:
Config.PGXP_GTE = sender.state;
break;
case kPGXP_Cache:
Config.PGXP_Cache = sender.state;
break;
case kPGXP_Texture:
Config.PGXP_Texture = sender.state;
break;
default:
break;
}
[PgxpController savePgxpSettings];
}
- (IBAction)onModeChange:(NSPopUpButton*)sender
{
Config.PGXP_Mode = (u32)sender.indexOfSelectedItem;
[self setInfoTextForPgxpMode];
[PgxpController savePgxpSettings];
}
- (void)setInfoTextForPgxpMode
{
self.pgxpModeLabel.stringValue = infoText[Config.PGXP_Mode];
}
+ (void)loadPgxpSettings
{
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults registerDefaults:@{
kPGXP_GTE_Key: @YES,
kPGXP_Cache_Key: @YES,
kPGXP_Texture_Key: @YES,
kPGXP_Mode_Key: @0
}];
Config.PGXP_GTE = [userDefaults boolForKey:kPGXP_GTE_Key];
Config.PGXP_Cache = [userDefaults boolForKey:kPGXP_Cache_Key];
Config.PGXP_Texture = [userDefaults boolForKey:kPGXP_Texture_Key];
Config.PGXP_Mode = (u32)[userDefaults integerForKey:kPGXP_Mode_Key];
}
+ (void)savePgxpSettings
{
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setBool:Config.PGXP_GTE forKey:kPGXP_GTE_Key];
[userDefaults setBool:Config.PGXP_Cache forKey:kPGXP_Cache_Key];
[userDefaults setBool:Config.PGXP_Texture forKey:kPGXP_Texture_Key];
[userDefaults setInteger:Config.PGXP_Mode forKey:kPGXP_Mode_Key];
}
@end