99 lines
2.6 KiB
Objective-C
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
|