Merge branch 'master' into fix-linux-build
This commit is contained in:
commit
2d0b10f982
|
@ -286,7 +286,7 @@ void gteSWC2() {
|
|||
psxMemWrite32(_oB_, val);
|
||||
}
|
||||
|
||||
inline s64 gte_shift(s64 a, int sf) {
|
||||
static inline s64 gte_shift(s64 a, int sf) {
|
||||
if(sf > 0)
|
||||
return a >> 12;
|
||||
else if(sf < 0)
|
||||
|
|
|
@ -1,6 +1,24 @@
|
|||
#ifndef _I_PGXP_H_
|
||||
#define _I_PGXP_H_
|
||||
|
||||
// Microsoft Windows uses a different x86_64 calling convention than everyone
|
||||
// else. I have not yet bothered implementing it here because;
|
||||
//
|
||||
// 1. Nobody cares about a Windows 64-bit build of PCSXR since that would mean
|
||||
// dropping popular closed source 32-bit plugins like Pete's OpenGL2
|
||||
// 2. The Windows convention is annoying (only 4 register params, caller must
|
||||
// reserve stack space for register spilling) and would require more
|
||||
// extensive code changes (e.g. the PGXP_DBG_OP_E() macro would have to
|
||||
// handle cases where the arg needs to go on the stack instead of in a
|
||||
// register, and cleanup afterwards).
|
||||
//
|
||||
// See https://msdn.microsoft.com/en-us/library/ms235286.aspx
|
||||
// and https://en.wikipedia.org/wiki/X86_calling_conventions#x86-64_calling_conventions
|
||||
//
|
||||
// MrLavender
|
||||
#ifdef _MSC_VER
|
||||
#error PGXP dynarec support is not implemented for Windows 64-bit
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////
|
||||
// PGXP wrapper functions
|
||||
|
@ -8,13 +26,32 @@
|
|||
|
||||
void pgxpRecNULL() {}
|
||||
|
||||
// Debug wrappers for x86_64 (because eOp will be last)
|
||||
#ifdef PGXP_CPU_DEBUG
|
||||
static void PGXP64_psxTraceOp(u32 code, u32 eOp) {
|
||||
PGXP_psxTraceOp(eOp, code);
|
||||
}
|
||||
static void PGXP64_psxTraceOp1(u32 code, u32 op1, u32 eOp) {
|
||||
PGXP_psxTraceOp1(eOp, code, op1);
|
||||
}
|
||||
static void PGXP64_psxTraceOp2(u32 code, u32 op1, u32 op2, u32 eOp) {
|
||||
PGXP_psxTraceOp2(eOp, code, op1, op2);
|
||||
}
|
||||
static void PGXP64_psxTraceOp3(u32 code, u32 op1, u32 op2, u32 op3, u32 eOp) {
|
||||
PGXP_psxTraceOp3(eOp, code, op1, op2, op3);
|
||||
}
|
||||
static void PGXP64_psxTraceOp4(u32 code, u32 op1, u32 op2, u32 op3, u32 op4, u32 eOp) {
|
||||
PGXP_psxTraceOp4(eOp, code, op1, op2, op3, op4);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Choose between debug and direct function
|
||||
#ifdef PGXP_CPU_DEBUG
|
||||
#define PGXP_REC_FUNC_OP(pu, op, nReg) PGXP_psxTraceOp##nReg
|
||||
#define PGXP_DBG_OP_E(op) PUSH32I(DBG_E_##op); resp+=4;
|
||||
#define PGXP_REC_FUNC_OP(pu, op, nReg) PGXP64_psxTraceOp##nReg
|
||||
#define PGXP_DBG_OP_E(op, arg) MOV32ItoR(arg, DBG_E_##op);
|
||||
#else
|
||||
#define PGXP_REC_FUNC_OP(pu, op, nReg) PGXP_##pu##_##op
|
||||
#define PGXP_DBG_OP_E(op)
|
||||
#define PGXP_DBG_OP_E(op, arg)
|
||||
#endif
|
||||
|
||||
#define PGXP_REC_FUNC_PASS(pu, op) \
|
||||
|
@ -24,45 +61,45 @@ static void pgxpRec##op() { \
|
|||
|
||||
#define PGXP_REC_FUNC(pu, op) \
|
||||
static void pgxpRec##op() { \
|
||||
PUSH32I(psxRegs.code); \
|
||||
PGXP_DBG_OP_E(op) \
|
||||
CALLFunc((u32)PGXP_REC_FUNC_OP(pu, op, )); \
|
||||
resp += 4; \
|
||||
MOV32ItoR(X86ARG1, psxRegs.code); \
|
||||
PGXP_DBG_OP_E(op, X86ARG2) \
|
||||
CALLFunc((uptr)PGXP_REC_FUNC_OP(pu, op, )); \
|
||||
rec##op();\
|
||||
}
|
||||
|
||||
#define PGXP_REC_FUNC_1(pu, op, reg1) \
|
||||
static void pgxpRec##op() { \
|
||||
reg1;\
|
||||
PUSH32I(psxRegs.code); \
|
||||
PGXP_DBG_OP_E(op) \
|
||||
CALLFunc((u32)PGXP_REC_FUNC_OP(pu, op, 1)); \
|
||||
resp += 8; \
|
||||
MOV32ItoR(X86ARG1, psxRegs.code); \
|
||||
POP64R(X86ARG2); \
|
||||
PGXP_DBG_OP_E(op, X86ARG3) \
|
||||
CALLFunc((uptr)PGXP_REC_FUNC_OP(pu, op, 1)); \
|
||||
rec##op();\
|
||||
}
|
||||
|
||||
#define PGXP_REC_FUNC_2_2(pu, op, test, nReg, reg1, reg2, reg3, reg4) \
|
||||
static void pgxpRec##op() { \
|
||||
if(test) { rec##op(); return; }\
|
||||
reg1;\
|
||||
reg2;\
|
||||
rec##op();\
|
||||
reg3;\
|
||||
reg4;\
|
||||
PUSH32I(psxRegs.code); \
|
||||
PGXP_DBG_OP_E(op) \
|
||||
CALLFunc((u32)PGXP_REC_FUNC_OP(pu, op, nReg)); \
|
||||
resp += (4 * nReg) + 4; \
|
||||
}
|
||||
//#define PGXP_REC_FUNC_2_2(pu, op, test, nReg, reg1, reg2, reg3, reg4) \
|
||||
//static void pgxpRec##op() { \
|
||||
// if(test) { rec##op(); return; }\
|
||||
// reg1;\
|
||||
// reg2;\
|
||||
// rec##op();\
|
||||
// reg3;\
|
||||
// reg4;\
|
||||
// PUSH32I(psxRegs.code); \
|
||||
// PGXP_DBG_OP_E(op) \
|
||||
// CALLFunc((uptr)PGXP_REC_FUNC_OP(pu, op, nReg)); \
|
||||
// resp += (4 * nReg) + 4; \
|
||||
//}
|
||||
|
||||
#define PGXP_REC_FUNC_2(pu, op, reg1, reg2) \
|
||||
static void pgxpRec##op() { \
|
||||
reg1;\
|
||||
reg2;\
|
||||
PUSH32I(psxRegs.code); \
|
||||
PGXP_DBG_OP_E(op) \
|
||||
CALLFunc((u32)PGXP_REC_FUNC_OP(pu, op, 2)); \
|
||||
resp += 12; \
|
||||
MOV32ItoR(X86ARG1, psxRegs.code); \
|
||||
POP64R(X86ARG2); \
|
||||
POP64R(X86ARG3); \
|
||||
PGXP_DBG_OP_E(op, X86ARG4) \
|
||||
CALLFunc((uptr)PGXP_REC_FUNC_OP(pu, op, 2)); \
|
||||
rec##op();\
|
||||
}
|
||||
|
||||
|
@ -76,34 +113,34 @@ static void pgxpRec##op() \
|
|||
} \
|
||||
else\
|
||||
{\
|
||||
MOV32MtoR(EAX, (u32)&psxRegs.GPR.r[_Rs_]);\
|
||||
MOV32MtoR(EAX, (uptr)&psxRegs.GPR.r[_Rs_]);\
|
||||
if (_Imm_)\
|
||||
{\
|
||||
ADD32ItoR(EAX, _Imm_);\
|
||||
}\
|
||||
}\
|
||||
MOV32RtoM((u32)&gTempAddr, EAX);\
|
||||
MOV32RtoM((uptr)&gTempAddr, EAX);\
|
||||
rec##op();\
|
||||
PUSH64M((u32)&gTempAddr);\
|
||||
reg1;\
|
||||
PUSH32I(psxRegs.code); \
|
||||
PGXP_DBG_OP_E(op) \
|
||||
CALLFunc((u32)PGXP_REC_FUNC_OP(pu, op, 2)); \
|
||||
resp += 12; \
|
||||
MOV32ItoR(X86ARG1, psxRegs.code); \
|
||||
POP64R(X86ARG2); \
|
||||
MOV32MtoR(X86ARG3, (uptr)&gTempAddr); \
|
||||
PGXP_DBG_OP_E(op, X86ARG4) \
|
||||
CALLFunc((uptr)PGXP_REC_FUNC_OP(pu, op, 2)); \
|
||||
}
|
||||
|
||||
|
||||
#define CPU_REG_NC(idx) MOV32MtoR(EAX,(u32)&psxRegs.GPR.r[idx])
|
||||
#define CPU_REG_NC(idx) MOV32MtoR(EAX,(uptr)&psxRegs.GPR.r[idx])
|
||||
|
||||
#define CPU_REG(idx) \
|
||||
if (IsConst(idx)) \
|
||||
MOV32ItoR(EAX, iRegs[idx].k); \
|
||||
else\
|
||||
MOV32MtoR(EAX, (u32)&psxRegs.GPR.r[idx]);
|
||||
MOV32MtoR(EAX, (uptr)&psxRegs.GPR.r[idx]);
|
||||
|
||||
#define CP0_REG(idx) MOV32MtoR(EAX,(u32)&psxRegs.CP0.r[idx])
|
||||
#define GTE_DATA_REG(idx) MOV32MtoR(EAX,(u32)&psxRegs.CP2D.r[idx])
|
||||
#define GTE_CTRL_REG(idx) MOV32MtoR(EAX,(u32)&psxRegs.CP2C.r[idx])
|
||||
#define CP0_REG(idx) MOV32MtoR(EAX,(uptr)&psxRegs.CP0.r[idx])
|
||||
#define GTE_DATA_REG(idx) MOV32MtoR(EAX,(uptr)&psxRegs.CP2D.r[idx])
|
||||
#define GTE_CTRL_REG(idx) MOV32MtoR(EAX,(uptr)&psxRegs.CP2C.r[idx])
|
||||
|
||||
static u32 gTempInstr = 0;
|
||||
static u32 gTempReg1 = 0;
|
||||
|
@ -113,14 +150,14 @@ static void pgxpRec##op() \
|
|||
{ \
|
||||
if(test) { rec##op(); return; }\
|
||||
reg1;\
|
||||
MOV32RtoM((u32)&gTempReg1, EAX);\
|
||||
MOV32RtoM((uptr)&gTempReg1, EAX);\
|
||||
rec##op();\
|
||||
PUSH64M((u32)&gTempReg1);\
|
||||
reg2;\
|
||||
PUSH32I(psxRegs.code); \
|
||||
PGXP_DBG_OP_E(op) \
|
||||
CALLFunc((u32)PGXP_REC_FUNC_OP(pu, op, 2)); \
|
||||
resp += 12; \
|
||||
MOV32ItoR(X86ARG1, psxRegs.code); \
|
||||
POP64R(X86ARG2); \
|
||||
MOV32MtoR(X86ARG3, (uptr)&gTempReg1); \
|
||||
PGXP_DBG_OP_E(op, X86ARG4) \
|
||||
CALLFunc((uptr)PGXP_REC_FUNC_OP(pu, op, 2)); \
|
||||
}
|
||||
|
||||
#define PGXP_REC_FUNC_R2_1(pu, op, test, reg1, reg2, reg3) \
|
||||
|
@ -128,17 +165,17 @@ static void pgxpRec##op() \
|
|||
{ \
|
||||
if(test) { rec##op(); return; }\
|
||||
reg1;\
|
||||
MOV32RtoM((u32)&gTempReg1, EAX);\
|
||||
MOV32RtoM((uptr)&gTempReg1, EAX);\
|
||||
reg2;\
|
||||
MOV32RtoM((u32)&gTempReg2, EAX);\
|
||||
MOV32RtoM((uptr)&gTempReg2, EAX);\
|
||||
rec##op();\
|
||||
PUSH64M((u32)&gTempReg1);\
|
||||
PUSH64M((u32)&gTempReg2);\
|
||||
reg3;\
|
||||
PUSH32I(psxRegs.code); \
|
||||
PGXP_DBG_OP_E(op) \
|
||||
CALLFunc((u32)PGXP_REC_FUNC_OP(pu, op, 3)); \
|
||||
resp += 16; \
|
||||
MOV32ItoR(X86ARG1, psxRegs.code); \
|
||||
POP64R(X86ARG2); \
|
||||
MOV32MtoR(X86ARG3, (uptr)&gTempReg2); \
|
||||
MOV32MtoR(X86ARG4, (uptr)&gTempReg1); \
|
||||
PGXP_DBG_OP_E(op, X86ARG5) \
|
||||
CALLFunc((uptr)PGXP_REC_FUNC_OP(pu, op, 3)); \
|
||||
}
|
||||
|
||||
#define PGXP_REC_FUNC_R2_2(pu, op, test, reg1, reg2, reg3, reg4) \
|
||||
|
@ -146,18 +183,19 @@ static void pgxpRec##op() \
|
|||
{ \
|
||||
if(test) { rec##op(); return; }\
|
||||
reg1;\
|
||||
MOV32RtoM((u32)&gTempReg1, EAX);\
|
||||
MOV32RtoM((uptr)&gTempReg1, EAX);\
|
||||
reg2;\
|
||||
MOV32RtoM((u32)&gTempReg2, EAX);\
|
||||
MOV32RtoM((uptr)&gTempReg2, EAX);\
|
||||
rec##op();\
|
||||
PUSH64M((u32)&gTempReg1);\
|
||||
PUSH64M((u32)&gTempReg2);\
|
||||
reg3;\
|
||||
reg4;\
|
||||
PUSH32I(psxRegs.code); \
|
||||
PGXP_DBG_OP_E(op) \
|
||||
CALLFunc((u32)PGXP_REC_FUNC_OP(pu, op, 4)); \
|
||||
resp += 20; \
|
||||
MOV32ItoR(X86ARG1, psxRegs.code); \
|
||||
POP64R(X86ARG2); \
|
||||
POP64R(X86ARG3); \
|
||||
MOV32MtoR(X86ARG4, (uptr)&gTempReg2); \
|
||||
MOV32MtoR(X86ARG5, (uptr)&gTempReg1); \
|
||||
PGXP_DBG_OP_E(op, X86ARG6) \
|
||||
CALLFunc((uptr)PGXP_REC_FUNC_OP(pu, op, 4)); \
|
||||
}
|
||||
|
||||
//#define PGXP_REC_FUNC_R1i_1(pu, op, test, reg1, reg2) \
|
||||
|
@ -167,16 +205,29 @@ static void pgxpRec##op() \
|
|||
// if (IsConst(reg1)) \
|
||||
// MOV32ItoR(EAX, iRegs[reg1].k); \
|
||||
// else\
|
||||
// MOV32MtoR(EAX, (u32)&psxRegs.GPR.r[reg1]);\
|
||||
// MOV32RtoM((u32)&gTempReg, EAX);\
|
||||
// MOV32MtoR(EAX, (uptr)&psxRegs.GPR.r[reg1]);\
|
||||
// MOV32RtoM((uptr)&gTempReg, EAX);\
|
||||
// rec##op();\
|
||||
// PUSH64M((u32)&gTempReg);\
|
||||
// PUSH64M((uptr)&gTempReg);\
|
||||
// reg2;\
|
||||
// PUSH32I(psxRegs.code); \
|
||||
// CALLFunc((u32)PGXP_REC_FUNC_OP(pu, op, 2)); \
|
||||
// CALLFunc((uptr)PGXP_REC_FUNC_OP(pu, op, 2)); \
|
||||
// resp += 12; \
|
||||
//}
|
||||
|
||||
// Push m32
|
||||
#define PUSH32M(from) MOV32MtoR(EAX, from); PUSH64R(RAX);
|
||||
|
||||
static void iPushReg(int reg)
|
||||
{
|
||||
if (IsConst(reg)) {
|
||||
PUSH32I(iRegs[reg].k);
|
||||
}
|
||||
else {
|
||||
PUSH32M((uptr)&psxRegs.GPR.r[reg]);
|
||||
}
|
||||
}
|
||||
|
||||
// Rt = Rs op imm
|
||||
PGXP_REC_FUNC_R1_1(CPU, ADDI, !_Rt_, CPU_REG(_Rs_), iPushReg(_Rt_))
|
||||
PGXP_REC_FUNC_R1_1(CPU, ADDIU, !_Rt_, CPU_REG(_Rs_), iPushReg(_Rt_))
|
||||
|
@ -187,7 +238,18 @@ PGXP_REC_FUNC_R1_1(CPU, SLTI, !_Rt_, CPU_REG(_Rs_), iPushReg(_Rt_))
|
|||
PGXP_REC_FUNC_R1_1(CPU, SLTIU, !_Rt_, CPU_REG(_Rs_), iPushReg(_Rt_))
|
||||
|
||||
// Rt = imm
|
||||
PGXP_REC_FUNC_2_2(CPU, LUI, !_Rt_, 1, , , iPushReg(_Rt_), )
|
||||
//PGXP_REC_FUNC_2_2(CPU, LUI, !_Rt_, 1, , , iPushReg(_Rt_), )
|
||||
//This macro is harder to implement for x86_64, and only used once, so... :) MrL
|
||||
static void pgxpRecLUI()
|
||||
{
|
||||
if (!_Rt_) { recLUI(); return; }
|
||||
recLUI();
|
||||
iPushReg(_Rt_);
|
||||
MOV32ItoR(X86ARG1, psxRegs.code);
|
||||
POP64R(X86ARG2);
|
||||
PGXP_DBG_OP_E(LUI, X86ARG3)
|
||||
CALLFunc((uptr)PGXP_REC_FUNC_OP(CPU, LUI, 1));
|
||||
}
|
||||
|
||||
// Rd = Rs op Rt
|
||||
PGXP_REC_FUNC_R2_1(CPU, ADD, !_Rd_, CPU_REG(_Rt_), CPU_REG(_Rs_), iPushReg(_Rd_))
|
||||
|
@ -202,10 +264,10 @@ PGXP_REC_FUNC_R2_1(CPU, SLT, !_Rd_, CPU_REG(_Rt_), CPU_REG(_Rs_), iPushReg(_Rd_)
|
|||
PGXP_REC_FUNC_R2_1(CPU, SLTU, !_Rd_, CPU_REG(_Rt_), CPU_REG(_Rs_), iPushReg(_Rd_))
|
||||
|
||||
// Hi/Lo = Rs op Rt
|
||||
PGXP_REC_FUNC_R2_2(CPU, MULT, 0, CPU_REG(_Rt_), CPU_REG(_Rs_), PUSH64M((u32)&psxRegs.GPR.n.lo), PUSH64M((u32)&psxRegs.GPR.n.hi))
|
||||
PGXP_REC_FUNC_R2_2(CPU, MULTU, 0, CPU_REG(_Rt_), CPU_REG(_Rs_), PUSH64M((u32)&psxRegs.GPR.n.lo), PUSH64M((u32)&psxRegs.GPR.n.hi))
|
||||
PGXP_REC_FUNC_R2_2(CPU, DIV, 0, CPU_REG(_Rt_), CPU_REG(_Rs_), PUSH64M((u32)&psxRegs.GPR.n.lo), PUSH64M((u32)&psxRegs.GPR.n.hi))
|
||||
PGXP_REC_FUNC_R2_2(CPU, DIVU, 0, CPU_REG(_Rt_), CPU_REG(_Rs_), PUSH64M((u32)&psxRegs.GPR.n.lo), PUSH64M((u32)&psxRegs.GPR.n.hi))
|
||||
PGXP_REC_FUNC_R2_2(CPU, MULT, 0, CPU_REG(_Rt_), CPU_REG(_Rs_), PUSH32M((uptr)&psxRegs.GPR.n.lo), PUSH32M((uptr)&psxRegs.GPR.n.hi))
|
||||
PGXP_REC_FUNC_R2_2(CPU, MULTU, 0, CPU_REG(_Rt_), CPU_REG(_Rs_), PUSH32M((uptr)&psxRegs.GPR.n.lo), PUSH32M((uptr)&psxRegs.GPR.n.hi))
|
||||
PGXP_REC_FUNC_R2_2(CPU, DIV, 0, CPU_REG(_Rt_), CPU_REG(_Rs_), PUSH32M((uptr)&psxRegs.GPR.n.lo), PUSH32M((uptr)&psxRegs.GPR.n.hi))
|
||||
PGXP_REC_FUNC_R2_2(CPU, DIVU, 0, CPU_REG(_Rt_), CPU_REG(_Rs_), PUSH32M((uptr)&psxRegs.GPR.n.lo), PUSH32M((uptr)&psxRegs.GPR.n.hi))
|
||||
|
||||
PGXP_REC_FUNC_ADDR_1(CPU, SB, iPushReg(_Rt_))
|
||||
PGXP_REC_FUNC_ADDR_1(CPU, SH, iPushReg(_Rt_))
|
||||
|
@ -232,24 +294,24 @@ PGXP_REC_FUNC_R2_1(CPU, SRLV, !_Rd_, CPU_REG(_Rs_), CPU_REG(_Rt_), iPushReg(_Rd_
|
|||
PGXP_REC_FUNC_R2_1(CPU, SRAV, !_Rd_, CPU_REG(_Rs_), CPU_REG(_Rt_), iPushReg(_Rd_))
|
||||
|
||||
PGXP_REC_FUNC_R1_1(CPU, MFHI, !_Rd_, CPU_REG_NC(33), iPushReg(_Rd_))
|
||||
PGXP_REC_FUNC_R1_1(CPU, MTHI, 0, CPU_REG(_Rd_), PUSH64M((u32)&psxRegs.GPR.n.hi))
|
||||
PGXP_REC_FUNC_R1_1(CPU, MTHI, 0, CPU_REG(_Rd_), PUSH32M((uptr)&psxRegs.GPR.n.hi))
|
||||
PGXP_REC_FUNC_R1_1(CPU, MFLO, !_Rd_, CPU_REG_NC(32), iPushReg(_Rd_))
|
||||
PGXP_REC_FUNC_R1_1(CPU, MTLO, 0, CPU_REG(_Rd_), PUSH64M((u32)&psxRegs.GPR.n.lo))
|
||||
PGXP_REC_FUNC_R1_1(CPU, MTLO, 0, CPU_REG(_Rd_), PUSH32M((uptr)&psxRegs.GPR.n.lo))
|
||||
|
||||
// COP2 (GTE)
|
||||
PGXP_REC_FUNC_R1_1(GTE, MFC2, !_Rt_, GTE_DATA_REG(_Rd_), iPushReg(_Rt_))
|
||||
PGXP_REC_FUNC_R1_1(GTE, CFC2, !_Rt_, GTE_CTRL_REG(_Rd_), iPushReg(_Rt_))
|
||||
PGXP_REC_FUNC_R1_1(GTE, MTC2, 0, CPU_REG(_Rt_), PUSH64M((u32)&psxRegs.CP2D.r[_Rd_]))
|
||||
PGXP_REC_FUNC_R1_1(GTE, CTC2, 0, CPU_REG(_Rt_), PUSH64M((u32)&psxRegs.CP2C.r[_Rd_]))
|
||||
PGXP_REC_FUNC_R1_1(GTE, MTC2, 0, CPU_REG(_Rt_), PUSH32M((uptr)&psxRegs.CP2D.r[_Rd_]))
|
||||
PGXP_REC_FUNC_R1_1(GTE, CTC2, 0, CPU_REG(_Rt_), PUSH32M((uptr)&psxRegs.CP2C.r[_Rd_]))
|
||||
|
||||
PGXP_REC_FUNC_ADDR_1(GTE, LWC2, PUSH64M((u32)&psxRegs.CP2D.r[_Rt_]))
|
||||
PGXP_REC_FUNC_ADDR_1(GTE, SWC2, PUSH64M((u32)&psxRegs.CP2D.r[_Rt_]))
|
||||
PGXP_REC_FUNC_ADDR_1(GTE, LWC2, PUSH32M((uptr)&psxRegs.CP2D.r[_Rt_]))
|
||||
PGXP_REC_FUNC_ADDR_1(GTE, SWC2, PUSH32M((uptr)&psxRegs.CP2D.r[_Rt_]))
|
||||
|
||||
// COP0
|
||||
PGXP_REC_FUNC_R1_1(CP0, MFC0, !_Rd_, CP0_REG(_Rd_), iPushReg(_Rt_))
|
||||
PGXP_REC_FUNC_R1_1(CP0, CFC0, !_Rd_, CP0_REG(_Rd_), iPushReg(_Rt_))
|
||||
PGXP_REC_FUNC_R1_1(CP0, MTC0, !_Rt_, CPU_REG(_Rt_), PUSH64M((u32)&psxRegs.CP0.r[_Rd_]))
|
||||
PGXP_REC_FUNC_R1_1(CP0, CTC0, !_Rt_, CPU_REG(_Rt_), PUSH64M((u32)&psxRegs.CP0.r[_Rd_]))
|
||||
PGXP_REC_FUNC_R1_1(CP0, MTC0, !_Rt_, CPU_REG(_Rt_), PUSH32M((uptr)&psxRegs.CP0.r[_Rd_]))
|
||||
PGXP_REC_FUNC_R1_1(CP0, CTC0, !_Rt_, CPU_REG(_Rt_), PUSH32M((uptr)&psxRegs.CP0.r[_Rd_]))
|
||||
PGXP_REC_FUNC(CP0, RFE)
|
||||
|
||||
#endif//_I_PGXP_H_
|
||||
|
|
|
@ -191,16 +191,6 @@ static void iFlushRegs() {
|
|||
}
|
||||
}
|
||||
|
||||
static void iPushReg(int reg)
|
||||
{
|
||||
if (IsConst(reg)) {
|
||||
PUSH32I(iRegs[reg].k);
|
||||
}
|
||||
else {
|
||||
PUSH64M((uptr)&psxRegs.GPR.r[reg]);
|
||||
}
|
||||
}
|
||||
|
||||
static void iStoreCycle() {
|
||||
count = ((pc - pcold) / 4) * BIAS;
|
||||
ADD32ItoM((uptr)&psxRegs.cycle, count);
|
||||
|
|
|
@ -90,6 +90,8 @@ extern x86IntRegType g_x86non8bitregs[3];
|
|||
#define X86ARG2 RSI
|
||||
#define X86ARG3 RDX
|
||||
#define X86ARG4 RCX
|
||||
#define X86ARG5 R8
|
||||
#define X86ARG6 R9
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
|
|
@ -218,10 +218,8 @@
|
|||
55E0ACE0178B69620005C945 /* LaunchArg.m in Sources */ = {isa = PBXBuildFile; fileRef = 55E0ACDF178B69600005C945 /* LaunchArg.m */; };
|
||||
55EC05FB1788B1230053AC23 /* PcsxrMemCardArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 55EC05FA1788B1230053AC23 /* PcsxrMemCardArray.m */; };
|
||||
55EC05FE178916E80053AC23 /* MemBadgeView.m in Sources */ = {isa = PBXBuildFile; fileRef = 55EC05FD178916E70053AC23 /* MemBadgeView.m */; };
|
||||
6F5FF7191CE4D1D5005D8636 /* pgxp_gpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 6F5FF7171CE4D1D5005D8636 /* pgxp_gpu.c */; };
|
||||
662A3D691F05E8D500232572 /* PgxpController.m in Sources */ = {isa = PBXBuildFile; fileRef = 662A3D681F05E8D500232572 /* PgxpController.m */; };
|
||||
6F5FF71A1CE4D3B2005D8636 /* pgxp_gpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 6F5FF7171CE4D1D5005D8636 /* pgxp_gpu.c */; };
|
||||
6F5FF71B1CE4D3B2005D8636 /* pgxp_gpu.h in Sources */ = {isa = PBXBuildFile; fileRef = 6F5FF7181CE4D1D5005D8636 /* pgxp_gpu.h */; };
|
||||
6F5FF71E1CE4D791005D8636 /* cfg.c in Sources */ = {isa = PBXBuildFile; fileRef = 6F5FF71C1CE4D791005D8636 /* cfg.c */; };
|
||||
6F5FF7211CE4DE68005D8636 /* pgxp_gte.c in Sources */ = {isa = PBXBuildFile; fileRef = 6F5FF71F1CE4DE68005D8636 /* pgxp_gte.c */; };
|
||||
6FAC15EB1D4CCA6C0028E89C /* pgxp_value.c in Sources */ = {isa = PBXBuildFile; fileRef = 6FAC15E91D4CCA6C0028E89C /* pgxp_value.c */; };
|
||||
6FDBDA711D0DB58300313918 /* pgxp_cpu.c in Sources */ = {isa = PBXBuildFile; fileRef = 6FDBDA6A1D0DB58300313918 /* pgxp_cpu.c */; };
|
||||
|
@ -817,6 +815,8 @@
|
|||
55EE2D9017E2323400FED42A /* ecm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ecm.h; sourceTree = "<group>"; };
|
||||
55F41A2017EF774500605DF8 /* version.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = version.sh; sourceTree = "<group>"; };
|
||||
55F41A2117EF7A3300605DF8 /* Info.plistvers.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plistvers.plist; path = ../Info.plistvers.plist; sourceTree = "<group>"; };
|
||||
662A3D671F05E8D500232572 /* PgxpController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PgxpController.h; sourceTree = "<group>"; };
|
||||
662A3D681F05E8D500232572 /* PgxpController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PgxpController.m; sourceTree = "<group>"; };
|
||||
6F4B24AB1D54D67E000B7071 /* iPGXP-64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "iPGXP-64.h"; sourceTree = "<group>"; };
|
||||
6F5FF7171CE4D1D5005D8636 /* pgxp_gpu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pgxp_gpu.c; sourceTree = "<group>"; };
|
||||
6F5FF7181CE4D1D5005D8636 /* pgxp_gpu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pgxp_gpu.h; sourceTree = "<group>"; };
|
||||
|
@ -826,7 +826,6 @@
|
|||
6F5FF7201CE4DE68005D8636 /* pgxp_gte.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pgxp_gte.h; sourceTree = "<group>"; };
|
||||
6FAC15E91D4CCA6C0028E89C /* pgxp_value.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pgxp_value.c; sourceTree = "<group>"; };
|
||||
6FAC15EA1D4CCA6C0028E89C /* psxinterpreter_pgxp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = psxinterpreter_pgxp.h; sourceTree = "<group>"; };
|
||||
6FAC15EC1D4CCAC00028E89C /* pgxp_value.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pgxp_value.c; sourceTree = "<group>"; };
|
||||
6FDBDA6A1D0DB58300313918 /* pgxp_cpu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pgxp_cpu.c; sourceTree = "<group>"; };
|
||||
6FDBDA6B1D0DB58300313918 /* pgxp_cpu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pgxp_cpu.h; sourceTree = "<group>"; };
|
||||
6FDBDA6C1D0DB58300313918 /* pgxp_debug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pgxp_debug.c; sourceTree = "<group>"; };
|
||||
|
@ -834,9 +833,6 @@
|
|||
6FDBDA6E1D0DB58300313918 /* pgxp_mem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pgxp_mem.c; sourceTree = "<group>"; };
|
||||
6FDBDA6F1D0DB58300313918 /* pgxp_mem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pgxp_mem.h; sourceTree = "<group>"; };
|
||||
6FDBDA701D0DB58300313918 /* pgxp_value.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pgxp_value.h; sourceTree = "<group>"; };
|
||||
6FDBDA741D0DB63800313918 /* pgxp_cpu.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pgxp_cpu.c; sourceTree = "<group>"; };
|
||||
6FDBDA751D0DB63800313918 /* pgxp_debug.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pgxp_debug.c; sourceTree = "<group>"; };
|
||||
6FDBDA761D0DB63800313918 /* pgxp_mem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pgxp_mem.c; sourceTree = "<group>"; };
|
||||
712FD1E51093096F00575A92 /* debug.c */ = {isa = PBXFileReference; fileEncoding = 0; lastKnownFileType = sourcecode.c.c; path = debug.c; sourceTree = "<group>"; };
|
||||
712FD1E61093096F00575A92 /* socket.c */ = {isa = PBXFileReference; fileEncoding = 0; lastKnownFileType = sourcecode.c.c; path = socket.c; sourceTree = "<group>"; };
|
||||
712FD1E71093096F00575A92 /* socket.h */ = {isa = PBXFileReference; fileEncoding = 0; lastKnownFileType = sourcecode.c.h; path = socket.h; sourceTree = "<group>"; };
|
||||
|
@ -1119,11 +1115,6 @@
|
|||
2BCE23B204C6B52C007C2DA3 /* libpcsxcore */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6FAC15EC1D4CCAC00028E89C /* pgxp_value.c */,
|
||||
6FDBDA741D0DB63800313918 /* pgxp_cpu.c */,
|
||||
6FDBDA751D0DB63800313918 /* pgxp_debug.c */,
|
||||
6FDBDA761D0DB63800313918 /* pgxp_mem.c */,
|
||||
6FAC15E91D4CCA6C0028E89C /* pgxp_value.c */,
|
||||
6FAC15EA1D4CCA6C0028E89C /* psxinterpreter_pgxp.h */,
|
||||
6FDBDA6A1D0DB58300313918 /* pgxp_cpu.c */,
|
||||
6FDBDA6B1D0DB58300313918 /* pgxp_cpu.h */,
|
||||
|
@ -1131,6 +1122,7 @@
|
|||
6FDBDA6D1D0DB58300313918 /* pgxp_debug.h */,
|
||||
6FDBDA6E1D0DB58300313918 /* pgxp_mem.c */,
|
||||
6FDBDA6F1D0DB58300313918 /* pgxp_mem.h */,
|
||||
6FAC15E91D4CCA6C0028E89C /* pgxp_value.c */,
|
||||
6FDBDA701D0DB58300313918 /* pgxp_value.h */,
|
||||
6F5FF71F1CE4DE68005D8636 /* pgxp_gte.c */,
|
||||
6F5FF7201CE4DE68005D8636 /* pgxp_gte.h */,
|
||||
|
@ -1781,6 +1773,8 @@
|
|||
D422E67916DC495800526DCF /* CheatController.m */,
|
||||
0280B7AB16764CC3007B8001 /* HotkeyController.h */,
|
||||
0280B7AC16764CC3007B8001 /* HotkeyController.m */,
|
||||
662A3D671F05E8D500232572 /* PgxpController.h */,
|
||||
662A3D681F05E8D500232572 /* PgxpController.m */,
|
||||
);
|
||||
name = Controllers;
|
||||
sourceTree = "<group>";
|
||||
|
@ -2301,7 +2295,6 @@
|
|||
6FDBDA731D0DB58300313918 /* pgxp_mem.c in Sources */,
|
||||
2BB3D6BE05427FE200831ACB /* main.m in Sources */,
|
||||
6F5FF7211CE4DE68005D8636 /* pgxp_gte.c in Sources */,
|
||||
6F5FF7191CE4D1D5005D8636 /* pgxp_gpu.c in Sources */,
|
||||
2BB3D6BF05427FE200831ACB /* PcsxrController.m in Sources */,
|
||||
2BB3D6C005427FE200831ACB /* ConfigurationController.m in Sources */,
|
||||
2BB3D6C105427FE200831ACB /* PluginList.m in Sources */,
|
||||
|
@ -2344,11 +2337,11 @@
|
|||
55BBA693149455E1003B2CEC /* PcsxrMemCardHandler.m in Sources */,
|
||||
55BBA69614945628003B2CEC /* PcsxrPluginHandler.m in Sources */,
|
||||
55BBA69914953887003B2CEC /* PcsxrDiscHandler.m in Sources */,
|
||||
6F5FF71E1CE4D791005D8636 /* cfg.c in Sources */,
|
||||
55BBA69C1495839A003B2CEC /* PcsxrFreezeStateHandler.m in Sources */,
|
||||
0280B7AD16764CC5007B8001 /* HotkeyController.m in Sources */,
|
||||
02717968167884C9004AED62 /* hotkeys.m in Sources */,
|
||||
5529EA11169CBE3400BAA2A5 /* RecentItemsMenu.m in Sources */,
|
||||
662A3D691F05E8D500232572 /* PgxpController.m in Sources */,
|
||||
D422E67A16DC495800526DCF /* CheatController.m in Sources */,
|
||||
55EC05FB1788B1230053AC23 /* PcsxrMemCardArray.m in Sources */,
|
||||
55EC05FE178916E80053AC23 /* MemBadgeView.m in Sources */,
|
||||
|
@ -2478,7 +2471,6 @@
|
|||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6F5FF71A1CE4D3B2005D8636 /* pgxp_gpu.c in Sources */,
|
||||
6F5FF71B1CE4D3B2005D8636 /* pgxp_gpu.h in Sources */,
|
||||
551A775217869C8B0052D185 /* draw.c in Sources */,
|
||||
551A775317869C8D0052D185 /* fps.c in Sources */,
|
||||
551A775417869C900052D185 /* gpu.c in Sources */,
|
||||
|
|
|
@ -23,10 +23,10 @@
|
|||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
buildConfiguration = "Debug">
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
|
@ -38,17 +38,21 @@
|
|||
ReferencedContainer = "container:Pcsxr.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Debug"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "NO"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable>
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "2BB3D68205427FE200831ACB"
|
||||
|
@ -67,12 +71,13 @@
|
|||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Instrument"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Instrument"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable>
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "2BB3D68205427FE200831ACB"
|
||||
|
|
|
@ -1,14 +1,17 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6250" systemVersion="14A389" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9532" systemVersion="14F2411" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6250"/>
|
||||
<development version="6300" identifier="xcode"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9532"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="ConfigurationController">
|
||||
<connections>
|
||||
<outlet property="cdromPlugin" destination="397" id="401"/>
|
||||
<outlet property="consoleOutputCell" destination="1278" id="1281"/>
|
||||
<outlet property="cpuOverclocking" destination="03L-mr-xTn" id="lVg-X9-WHd"/>
|
||||
<outlet property="cpuOverclockingValue" destination="vyM-WJ-sZf" id="5Sf-Nn-E1N"/>
|
||||
<outlet property="enableNetPlayCell" destination="640" id="651"/>
|
||||
<outlet property="graphicsPlugin" destination="384" id="402"/>
|
||||
<outlet property="hkController" destination="656" id="832"/>
|
||||
|
@ -30,6 +33,7 @@
|
|||
<outlet property="vTypePALCell" destination="560" id="569"/>
|
||||
<outlet property="widescreen" destination="652" id="653"/>
|
||||
<outlet property="window" destination="21" id="345"/>
|
||||
<outlet property="wipeoutMemHack" destination="Qij-Wg-2W0" id="Iyu-pP-Pk8"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
|
@ -37,7 +41,7 @@
|
|||
<window title="PCSXR Preferences" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" visibleAtLaunch="NO" animationBehavior="documentWindow" id="21">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
|
||||
<rect key="contentRect" x="55" y="345" width="513" height="473"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1920" height="1057"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
|
||||
<view key="contentView" id="2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="513" height="473"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
|
@ -249,6 +253,63 @@
|
|||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</box>
|
||||
<box fixedFrame="YES" title="CPU Overclocking" borderType="line" translatesAutoresizingMaskIntoConstraints="NO" id="8gb-HW-f3X">
|
||||
<rect key="frame" x="194" y="234" width="256" height="73"/>
|
||||
<view key="contentView">
|
||||
<rect key="frame" x="1" y="1" width="254" height="57"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<matrix verticalHuggingPriority="750" fixedFrame="YES" mode="highlight" allowsEmptySelection="NO" autosizesCells="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Uwn-ba-l80">
|
||||
<rect key="frame" x="18" y="10" width="145" height="40"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
<size key="cellSize" width="145" height="18"/>
|
||||
<size key="intercellSpacing" width="4" height="4"/>
|
||||
<buttonCell key="prototype" type="check" title="Switch" bezelStyle="regularSquare" imagePosition="left" inset="2" id="opj-md-u7G">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<cells>
|
||||
<column>
|
||||
<buttonCell type="check" title="CPU Overclocking" bezelStyle="regularSquare" imagePosition="left" inset="2" id="03L-mr-xTn">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<buttonCell type="check" title="WipeOut MemHack" bezelStyle="regularSquare" imagePosition="left" inset="2" id="Qij-Wg-2W0">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</column>
|
||||
</cells>
|
||||
<connections>
|
||||
<action selector="setCheckbox:" target="-2" id="mb4-BQ-gqt"/>
|
||||
</connections>
|
||||
</matrix>
|
||||
<comboBox focusRingType="none" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="vyM-WJ-sZf">
|
||||
<rect key="frame" x="170" y="26" width="69" height="26"/>
|
||||
<comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" focusRingType="none" title="1.50" drawsBackground="YES" completes="NO" numberOfVisibleItems="8" id="9wB-0E-Yoz">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<objectValues>
|
||||
<string>0.50</string>
|
||||
<string>0.75</string>
|
||||
<string>1.25</string>
|
||||
<string>1.50</string>
|
||||
<string>2.00</string>
|
||||
<string>3.00</string>
|
||||
<string>4.00</string>
|
||||
<string>5.00</string>
|
||||
</objectValues>
|
||||
</comboBoxCell>
|
||||
<connections>
|
||||
<action selector="setOverclockValue:" target="-2" id="UxU-V7-Zr2"/>
|
||||
</connections>
|
||||
</comboBox>
|
||||
</subviews>
|
||||
</view>
|
||||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</box>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="502" firstAttribute="leading" secondItem="239" secondAttribute="leading" constant="20" symbolic="YES" id="2H1-We-aph"/>
|
||||
|
@ -1120,6 +1181,96 @@
|
|||
</connections>
|
||||
</view>
|
||||
</tabViewItem>
|
||||
<tabViewItem label="PGXP" identifier="5" id="ItE-eF-wNU">
|
||||
<view key="view" id="uj1-Je-S5K">
|
||||
<rect key="frame" x="10" y="33" width="467" height="411"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<box fixedFrame="YES" title="Options" borderType="line" translatesAutoresizingMaskIntoConstraints="NO" id="Rt6-IS-wqH">
|
||||
<rect key="frame" x="6" y="271" width="455" height="120"/>
|
||||
<view key="contentView">
|
||||
<rect key="frame" x="1" y="1" width="453" height="104"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tsJ-kM-vyh">
|
||||
<rect key="frame" x="16" y="78" width="421" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Enable PGXP GTE Vertex Creation" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="UNI-6T-hmi">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="onOptionChange:" target="UdY-FQ-YOS" id="15S-hO-egW"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button fixedFrame="YES" tag="1" translatesAutoresizingMaskIntoConstraints="NO" id="Wdx-wr-geL">
|
||||
<rect key="frame" x="16" y="45" width="421" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Enable Vertex Caching" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="kLH-VO-dOD">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="onOptionChange:" target="UdY-FQ-YOS" id="VDM-Oe-3Dk"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button fixedFrame="YES" tag="2" translatesAutoresizingMaskIntoConstraints="NO" id="Tkd-qg-5M6">
|
||||
<rect key="frame" x="16" y="12" width="421" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Enable Perspective Correct Texturing" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="IvO-v3-jAg">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="onOptionChange:" target="UdY-FQ-YOS" id="azW-yM-Zed"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
</view>
|
||||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</box>
|
||||
<box fixedFrame="YES" title="PGXP Mode" borderType="line" translatesAutoresizingMaskIntoConstraints="NO" id="7QK-TQ-CUh">
|
||||
<rect key="frame" x="6" y="65" width="455" height="192"/>
|
||||
<view key="contentView">
|
||||
<rect key="frame" x="1" y="1" width="453" height="176"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="2dk-sa-eo0">
|
||||
<rect key="frame" x="127" y="142" width="200" height="26"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Memory + CPU Logic" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="TUy-0G-7uN" id="kbY-zW-v7U">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="nNG-em-hU1">
|
||||
<items>
|
||||
<menuItem title="Disabled" id="fAx-O9-gEO"/>
|
||||
<menuItem title="Memory only" id="sgV-aX-jWN"/>
|
||||
<menuItem title="Memory + CPU Logic" state="on" id="TUy-0G-7uN"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="onModeChange:" target="UdY-FQ-YOS" id="H4c-zg-rOQ"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="0.0" translatesAutoresizingMaskIntoConstraints="NO" id="hf8-BH-ZfI">
|
||||
<rect key="frame" x="18" y="14" width="419" height="119"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="EFJ-3O-jnA">
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="title">Memory and CPU arithmetic operations
|
||||
|
||||
PGXP is mirroring load, store and transfer operations of the CPU and GTE and arithmetic/logic functions of the PSX CPU.
|
||||
|
||||
(WARNING: This mode is currently unfinished and may cause incorrect behaviour in some games)</string>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
</view>
|
||||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</box>
|
||||
</subviews>
|
||||
</view>
|
||||
</tabViewItem>
|
||||
</tabViewItems>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="780"/>
|
||||
|
@ -1136,6 +1287,7 @@
|
|||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="478"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="232.5" y="363.5"/>
|
||||
</window>
|
||||
<view id="957" userLabel="MemCardObjectView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="180" height="107"/>
|
||||
|
@ -1329,6 +1481,15 @@
|
|||
<outlet property="view" destination="580" id="993"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<viewController id="UdY-FQ-YOS" customClass="PgxpController">
|
||||
<connections>
|
||||
<outlet property="perspectiveCorrect" destination="Tkd-qg-5M6" id="4nW-Sp-e4F"/>
|
||||
<outlet property="pgxpModeButton" destination="2dk-sa-eo0" id="JXH-gN-MI4"/>
|
||||
<outlet property="pgxpModeLabel" destination="hf8-BH-ZfI" id="EFr-NH-bnq"/>
|
||||
<outlet property="vertexCaching" destination="Wdx-wr-geL" id="NFe-s6-ajV"/>
|
||||
<outlet property="vertexCreation" destination="tsJ-kM-vyh" id="WPB-EW-N0e"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSAdvanced" width="32" height="32"/>
|
||||
|
|
|
@ -39,10 +39,14 @@ extern NSString *const memCardChangeNumberKey;
|
|||
@property (weak) IBOutlet NSButtonCell *noFastBootCell;
|
||||
@property (weak) IBOutlet NSButtonCell *enableNetPlayCell;
|
||||
@property (weak) IBOutlet NSButtonCell *widescreen;
|
||||
@property (weak) IBOutlet NSButtonCell *cpuOverclocking;
|
||||
@property (weak) IBOutlet NSButtonCell *wipeoutMemHack;
|
||||
@property (weak) IBOutlet NSComboBox *cpuOverclockingValue;
|
||||
|
||||
- (IBAction)setCheckbox:(id)sender;
|
||||
- (IBAction)setCheckboxInverse:(id)sender;
|
||||
- (IBAction)setVideoType:(id)sender;
|
||||
- (IBAction)setOverclockValue:(NSComboBox *)sender;
|
||||
|
||||
+ (void)setMemoryCard:(NSInteger)theCard toPath:(NSString *)theFile;
|
||||
+ (void)setMemoryCard:(NSInteger)theCard toURL:(NSURL *)theURL;
|
||||
|
|
|
@ -41,6 +41,9 @@ NSString *const memCardChangeNumberKey = @"PcsxrMemoryCardThatChangedKey";
|
|||
@synthesize memCardEdit;
|
||||
@synthesize hkController;
|
||||
@synthesize hkTab;
|
||||
@synthesize cpuOverclocking;
|
||||
@synthesize wipeoutMemHack;
|
||||
@synthesize cpuOverclockingValue;
|
||||
|
||||
+ (void)setMemoryCard:(NSInteger)theCard toURL:(NSURL *)theURL;
|
||||
{
|
||||
|
@ -178,6 +181,26 @@ NSString *const memCardChangeNumberKey = @"PcsxrMemoryCardThatChangedKey";
|
|||
}
|
||||
}
|
||||
|
||||
- (IBAction)setOverclockValue:(NSComboBox *)sender
|
||||
{
|
||||
float value = sender.floatValue;
|
||||
if (value < 0.5) value = 0.5;
|
||||
if (value > 5.0) value = 5.0;
|
||||
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
[defaults setFloat:value forKey:@"CpuOverclockingValue"];
|
||||
[PcsxrController setConfigFromDefaults];
|
||||
|
||||
[self setOverclockValueText];
|
||||
}
|
||||
|
||||
- (void)setOverclockValueText
|
||||
{
|
||||
NSString *value = [NSString stringWithFormat:@"%.2f", Config.PsxClock];
|
||||
[cpuOverclockingValue setStringValue:value];
|
||||
[cpuOverclockingValue selectItemWithObjectValue:value];
|
||||
}
|
||||
|
||||
- (void)awakeFromNib
|
||||
{
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
|
@ -218,6 +241,10 @@ NSString *const memCardChangeNumberKey = @"PcsxrMemoryCardThatChangedKey";
|
|||
_checkBoxDefaults[@"NoFastBoot"] = noFastBootCell;
|
||||
if (widescreen)
|
||||
_checkBoxDefaults[@"Widescreen"] = widescreen;
|
||||
if (cpuOverclocking)
|
||||
_checkBoxDefaults[@"CpuOverclocking"] = cpuOverclocking;
|
||||
if (wipeoutMemHack)
|
||||
_checkBoxDefaults[@"WipeoutMemHack"] = wipeoutMemHack;
|
||||
|
||||
// make the visuals match the defaults
|
||||
|
||||
|
@ -234,6 +261,7 @@ NSString *const memCardChangeNumberKey = @"PcsxrMemoryCardThatChangedKey";
|
|||
[usesHleCell setEnabled:NO];
|
||||
}
|
||||
|
||||
[self setOverclockValueText];
|
||||
|
||||
// setup labels
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#import <Cocoa/Cocoa.h>
|
||||
#import "PcsxrController.h"
|
||||
#import "ConfigurationController.h"
|
||||
#import "PgxpController.h"
|
||||
#import "CheatController.h"
|
||||
#import "EmuThread.h"
|
||||
#import "PcsxrMemCardHandler.h"
|
||||
|
@ -690,6 +691,7 @@ otherblock();\
|
|||
// special cases
|
||||
//str = [[defaults stringForKey:@"PluginPAD"] fileSystemRepresentation];
|
||||
//if (str != nil) strncpy(Config.Pad2, str, 255);
|
||||
Config.PsxClock = [defaults floatForKey:@"CpuOverclockingValue"];
|
||||
|
||||
str = [[defaults stringForKey:@"Bios"] fileSystemRepresentation];
|
||||
if (str) {
|
||||
|
@ -767,6 +769,9 @@ otherblock();\
|
|||
else {
|
||||
strcpy(Config.Net, "Disabled");
|
||||
}
|
||||
|
||||
// PGXP settings
|
||||
[PgxpController loadPgxpSettings];
|
||||
}
|
||||
|
||||
+ (void)setDefaultFromConfig:(NSString *)defaultKey
|
||||
|
@ -819,7 +824,10 @@ otherblock();\
|
|||
@"Widescreen": @NO,
|
||||
@"NetPlay": @NO,
|
||||
@"DidMoveMemoryObjects": @NO,
|
||||
@"NoFastBoot": @NO};
|
||||
@"NoFastBoot": @NO,
|
||||
@"CpuOverclocking": @NO,
|
||||
@"CpuOverclockingValue": @1.5f,
|
||||
@"WipeoutMemHack": @NO};
|
||||
|
||||
[defaults registerDefaults:appDefaults];
|
||||
|
||||
|
@ -845,7 +853,9 @@ otherblock();\
|
|||
@"RootCounterFix": [NSValue valueWithPointer:&Config.RCntFix],
|
||||
@"VideoSyncWAFix": [NSValue valueWithPointer:&Config.VSyncWA],
|
||||
@"Widescreen": [NSValue valueWithPointer:&Config.Widescreen],
|
||||
@"NoFastBoot": [NSValue valueWithPointer:&Config.SlowBoot]};
|
||||
@"NoFastBoot": [NSValue valueWithPointer:&Config.SlowBoot],
|
||||
@"CpuOverclocking": [NSValue valueWithPointer:&Config.OverClock],
|
||||
@"WipeoutMemHack": [NSValue valueWithPointer:&Config.MemHack]};
|
||||
|
||||
// setup application support paths
|
||||
NSFileManager *manager = [NSFileManager defaultManager];
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
//
|
||||
// PgxpController.h
|
||||
// Pcsxr
|
||||
//
|
||||
// Created by MrLavender on 29/06/2017.
|
||||
//
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@interface PgxpController : NSViewController
|
||||
|
||||
@property (weak) IBOutlet NSButton *vertexCreation;
|
||||
@property (weak) IBOutlet NSButton *vertexCaching;
|
||||
@property (weak) IBOutlet NSButton *perspectiveCorrect;
|
||||
@property (weak) IBOutlet NSPopUpButton *pgxpModeButton;
|
||||
@property (weak) IBOutlet NSTextField *pgxpModeLabel;
|
||||
|
||||
- (IBAction)onOptionChange:(NSButton*)sender;
|
||||
- (IBAction)onModeChange:(NSPopUpButton*)sender;
|
||||
|
||||
+ (void)loadPgxpSettings;
|
||||
+ (void)savePgxpSettings;
|
||||
|
||||
@end
|
|
@ -0,0 +1,98 @@
|
|||
//
|
||||
// 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
|
|
@ -127,7 +127,11 @@ void attachHotkeys() {
|
|||
// GPU key presses
|
||||
NSEvent* (^gpuKeypress)(NSEvent*) = ^(NSEvent *event) {
|
||||
if (event.modifierFlags & NSControlKeyMask) {
|
||||
GPU_keypressed([event keyCode]);
|
||||
if ([event keyCode] == 0x67) { // F11
|
||||
GPU_toggleDebug();
|
||||
} else {
|
||||
GPU_keypressed([event keyCode]);
|
||||
}
|
||||
return (NSEvent*)nil;
|
||||
} else {
|
||||
return event;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6249" systemVersion="14A386b" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9532" systemVersion="14F2411" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6249"/>
|
||||
<development version="6300" identifier="xcode"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9532"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NetSfPeopsOpenGLPluginConfigController">
|
||||
|
@ -10,16 +11,18 @@
|
|||
<outlet property="advancedBlending" destination="386" id="963"/>
|
||||
<outlet property="autoFullScreen" destination="377" id="967"/>
|
||||
<outlet property="blurEffect" destination="392" id="959"/>
|
||||
<outlet property="ditherMode" destination="116" id="143"/>
|
||||
<outlet property="colorDithering" destination="274-uW-DSV" id="84K-3K-lC4"/>
|
||||
<outlet property="drawScanlines" destination="391" id="964"/>
|
||||
<outlet property="fpsCounter" destination="376" id="968"/>
|
||||
<outlet property="frameBufferEffects" destination="215" id="233"/>
|
||||
<outlet property="frameBufferAccess" destination="5Yk-qp-3SL" id="vrD-Sd-5md"/>
|
||||
<outlet property="frameBufferEffects" destination="fV7-ow-636" id="JLu-ME-fwK"/>
|
||||
<outlet property="frameSkipping" destination="375" id="974"/>
|
||||
<outlet property="fullscreenSize" destination="908" id="970"/>
|
||||
<outlet property="gteAccuracy" destination="406" id="956"/>
|
||||
<outlet property="hackEnable" destination="476" id="506"/>
|
||||
<outlet property="hacksMatrix" destination="479" id="509"/>
|
||||
<outlet property="hacksWindow" destination="472" id="505"/>
|
||||
<outlet property="limitFrameRate" destination="380" id="gQZ-8B-g9B"/>
|
||||
<outlet property="mjpegDecoder" destination="389" id="958"/>
|
||||
<outlet property="mjpegDecoder15bit" destination="390" id="957"/>
|
||||
<outlet property="offscreenDrawing" destination="202" id="232"/>
|
||||
|
@ -42,19 +45,19 @@
|
|||
<window title="GPU Configuration" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" animationBehavior="alertPanel" id="5" userLabel="Window">
|
||||
<windowStyleMask key="styleMask" titled="YES"/>
|
||||
<rect key="contentRect" x="2" y="373" width="611" height="501"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1920" height="1057"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
|
||||
<view key="contentView" id="6">
|
||||
<rect key="frame" x="0.0" y="0.0" width="611" height="501"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<box title="Display Settings" translatesAutoresizingMaskIntoConstraints="NO" id="89">
|
||||
<rect key="frame" x="17" y="325" width="577" height="156"/>
|
||||
<box fixedFrame="YES" title="Display Settings" translatesAutoresizingMaskIntoConstraints="NO" id="89">
|
||||
<rect key="frame" x="17" y="338" width="577" height="143"/>
|
||||
<view key="contentView">
|
||||
<rect key="frame" x="2" y="2" width="573" height="139"/>
|
||||
<rect key="frame" x="2" y="2" width="573" height="126"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<matrix verticalHuggingPriority="750" mode="highlight" allowsEmptySelection="NO" autosizesCells="NO" translatesAutoresizingMaskIntoConstraints="NO" id="785">
|
||||
<rect key="frame" x="367" y="26" width="189" height="103"/>
|
||||
<matrix verticalHuggingPriority="750" fixedFrame="YES" mode="highlight" allowsEmptySelection="NO" autosizesCells="NO" translatesAutoresizingMaskIntoConstraints="NO" id="785">
|
||||
<rect key="frame" x="367" y="13" width="189" height="103"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
<size key="cellSize" width="189" height="19"/>
|
||||
<size key="intercellSpacing" width="0.0" height="2"/>
|
||||
|
@ -102,11 +105,8 @@
|
|||
</column>
|
||||
</cells>
|
||||
</matrix>
|
||||
<popUpButton toolTip="Change resolution to this when going full screen" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="908">
|
||||
<rect key="frame" x="148" y="105" width="135" height="26"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="130" id="923"/>
|
||||
</constraints>
|
||||
<popUpButton toolTip="Change resolution to this when going full screen" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="908">
|
||||
<rect key="frame" x="148" y="92" width="135" height="26"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Current" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="926" id="924">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
|
@ -123,27 +123,23 @@
|
|||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<textField toolTip="Change resolution to this when going full screen" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="909">
|
||||
<rect key="frame" x="15" y="111" width="134" height="18"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="18" id="920"/>
|
||||
<constraint firstAttribute="width" constant="130" id="921"/>
|
||||
</constraints>
|
||||
<textField toolTip="Change resolution to this when going full screen" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" preferredMaxLayoutWidth="130" translatesAutoresizingMaskIntoConstraints="NO" id="909">
|
||||
<rect key="frame" x="15" y="98" width="134" height="18"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" title="Fullscreen size" id="922">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button toolTip="When checked, will keep the PSX display at natural aspect ratio" translatesAutoresizingMaskIntoConstraints="NO" id="910">
|
||||
<rect key="frame" x="15" y="87" width="153" height="18"/>
|
||||
<button toolTip="When checked, will keep the PSX display at natural aspect ratio" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="910">
|
||||
<rect key="frame" x="15" y="74" width="153" height="18"/>
|
||||
<buttonCell key="cell" type="check" title="Resize Proportionally" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="919">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="911">
|
||||
<rect key="frame" x="194" y="22" width="92" height="32"/>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="911">
|
||||
<rect key="frame" x="194" y="9" width="92" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Hacks…" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="918">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
|
@ -152,8 +148,8 @@
|
|||
<action selector="showHacks:" target="-2" id="933"/>
|
||||
</connections>
|
||||
</button>
|
||||
<form verticalHuggingPriority="750" mode="track" allowsEmptySelection="NO" translatesAutoresizingMaskIntoConstraints="NO" id="912">
|
||||
<rect key="frame" x="17" y="29" width="126" height="52"/>
|
||||
<form verticalHuggingPriority="750" fixedFrame="YES" mode="track" allowsEmptySelection="NO" translatesAutoresizingMaskIntoConstraints="NO" id="912">
|
||||
<rect key="frame" x="17" y="16" width="126" height="52"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
<size key="cellSize" width="126" height="22"/>
|
||||
<size key="intercellSpacing" width="1" height="8"/>
|
||||
|
@ -182,211 +178,17 @@
|
|||
</form>
|
||||
</subviews>
|
||||
</view>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="785" secondAttribute="trailing" constant="16" id="799"/>
|
||||
<constraint firstItem="785" firstAttribute="top" secondItem="89" secondAttribute="top" constant="25" id="814"/>
|
||||
<constraint firstItem="912" firstAttribute="top" secondItem="910" secondAttribute="bottom" constant="8" symbolic="YES" id="936"/>
|
||||
<constraint firstItem="910" firstAttribute="top" secondItem="909" secondAttribute="bottom" constant="8" symbolic="YES" id="939"/>
|
||||
<constraint firstItem="909" firstAttribute="baseline" secondItem="908" secondAttribute="baseline" id="940"/>
|
||||
<constraint firstItem="912" firstAttribute="bottom" secondItem="911" secondAttribute="bottom" id="943"/>
|
||||
<constraint firstItem="909" firstAttribute="leading" secondItem="89" secondAttribute="leading" constant="16" id="944"/>
|
||||
<constraint firstItem="912" firstAttribute="leading" secondItem="89" secondAttribute="leading" constant="16" id="945"/>
|
||||
<constraint firstItem="908" firstAttribute="top" secondItem="89" secondAttribute="top" constant="25" id="946"/>
|
||||
<constraint firstItem="908" firstAttribute="leading" secondItem="89" secondAttribute="leading" constant="149" id="947"/>
|
||||
<constraint firstItem="910" firstAttribute="leading" secondItem="89" secondAttribute="leading" constant="16" id="948"/>
|
||||
<constraint firstItem="785" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="911" secondAttribute="trailing" constant="8" symbolic="YES" id="GwH-kn-rLW"/>
|
||||
<constraint firstItem="911" firstAttribute="trailing" secondItem="908" secondAttribute="trailing" id="Kvw-mi-0pm"/>
|
||||
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="912" secondAttribute="bottom" constant="11" id="YZu-mL-ucP"/>
|
||||
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="785" secondAttribute="bottom" constant="11" id="slk-vo-UJi"/>
|
||||
</constraints>
|
||||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</box>
|
||||
<box toolTip="If your card supports it, will mix textures more accurately" title="Rendering" translatesAutoresizingMaskIntoConstraints="NO" id="107">
|
||||
<rect key="frame" x="17" y="57" width="577" height="264"/>
|
||||
<box toolTip="If your card supports it, will mix textures more accurately" fixedFrame="YES" title="Rendering" translatesAutoresizingMaskIntoConstraints="NO" id="107">
|
||||
<rect key="frame" x="17" y="57" width="577" height="277"/>
|
||||
<view key="contentView">
|
||||
<rect key="frame" x="2" y="2" width="573" height="247"/>
|
||||
<rect key="frame" x="2" y="2" width="573" height="260"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField toolTip="Specify when to use dithering to render colors" horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="671" translatesAutoresizingMaskIntoConstraints="NO" id="112">
|
||||
<rect key="frame" x="15" y="219" width="122" height="17"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" title="Dither Graphics:" id="383">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton toolTip="Specify when to use dithering to render colors" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="116">
|
||||
<rect key="frame" x="141" y="213" width="174" height="26"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="169" id="624"/>
|
||||
</constraints>
|
||||
<popUpButtonCell key="cell" type="push" title="When Hinted" bezelStyle="rounded" alignment="left" lineBreakMode="clipping" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="115" id="384">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="113">
|
||||
<items>
|
||||
<menuItem title="Never" id="111"/>
|
||||
<menuItem title="When Hinted" state="on" id="115"/>
|
||||
<menuItem title="Always" id="114"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<popUpButton toolTip="Use offscreen drawing to remove some graphics glitches" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="202">
|
||||
<rect key="frame" x="141" y="182" width="174" height="26"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Default" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="206" id="393">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="203">
|
||||
<items>
|
||||
<menuItem title="None" id="205"/>
|
||||
<menuItem title="Some" id="204"/>
|
||||
<menuItem title="Default" state="on" id="206"/>
|
||||
<menuItem title="More" id="254"/>
|
||||
<menuItem title="Aggressive" id="255"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<textField toolTip="Use offscreen drawing to remove some graphics glitches" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="207">
|
||||
<rect key="frame" x="15" y="188" width="122" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="17" id="Frr-gU-j9s"/>
|
||||
</constraints>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Offscreen Drawing:" usesSingleLineMode="YES" id="394">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<box title="Textures" translatesAutoresizingMaskIntoConstraints="NO" id="212">
|
||||
<rect key="frame" x="14" y="51" width="318" height="126"/>
|
||||
<view key="contentView">
|
||||
<rect key="frame" x="2" y="2" width="314" height="109"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<popUpButton toolTip="The color depth of stored textures." verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="169">
|
||||
<rect key="frame" x="112" y="75" width="188" height="26"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="183" id="1030"/>
|
||||
</constraints>
|
||||
<popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" id="395">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="170">
|
||||
<items>
|
||||
<menuItem title="default" id="172"/>
|
||||
<menuItem title="RGBA 16" id="171"/>
|
||||
<menuItem title="R5 G5 B5 A1" id="173"/>
|
||||
<menuItem title="RGBA 32" id="250"/>
|
||||
<menuItem title="BGRA 32" id="251"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<textField toolTip="Select a quality level of texture scaling" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="201">
|
||||
<rect key="frame" x="15" y="46" width="93" height="17"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Enhancement:" id="398">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField toolTip="Filter textures when scaled. Higher values filter more kinds of textures, i.e. sprites." verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="193">
|
||||
<rect key="frame" x="15" y="18" width="93" height="17"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Filtering:" id="397">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField toolTip="The color depth of stored textures." horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="174">
|
||||
<rect key="frame" x="15" y="81" width="93" height="17"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Color Depth:" id="396">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<slider toolTip="Filter textures when scaled. Higher values filter more kinds of textures, i.e. sprites." verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="252">
|
||||
<rect key="frame" x="112" y="12" width="187" height="26"/>
|
||||
<sliderCell key="cell" alignment="left" maxValue="6" tickMarkPosition="above" numberOfTickMarks="7" allowsTickMarkValuesOnly="YES" sliderType="linear" id="399">
|
||||
<font key="font" size="12" name="Helvetica"/>
|
||||
</sliderCell>
|
||||
</slider>
|
||||
<slider toolTip="Select a quality level of texture scaling" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="253">
|
||||
<rect key="frame" x="112" y="44" width="187" height="26"/>
|
||||
<sliderCell key="cell" alignment="left" maxValue="2" tickMarkPosition="above" numberOfTickMarks="3" allowsTickMarkValuesOnly="YES" sliderType="linear" id="400">
|
||||
<font key="font" size="12" name="Helvetica"/>
|
||||
</sliderCell>
|
||||
</slider>
|
||||
</subviews>
|
||||
</view>
|
||||
<constraints>
|
||||
<constraint firstItem="174" firstAttribute="leading" secondItem="212" secondAttribute="leading" constant="16" id="736"/>
|
||||
<constraint firstItem="169" firstAttribute="baseline" secondItem="174" secondAttribute="baseline" id="739"/>
|
||||
<constraint firstAttribute="trailing" secondItem="169" secondAttribute="trailing" constant="16" id="741"/>
|
||||
<constraint firstAttribute="trailing" secondItem="253" secondAttribute="trailing" constant="16" id="748"/>
|
||||
<constraint firstItem="201" firstAttribute="baseline" secondItem="253" secondAttribute="baseline" id="749"/>
|
||||
<constraint firstItem="169" firstAttribute="top" secondItem="212" secondAttribute="top" constant="25" id="767"/>
|
||||
<constraint firstItem="252" firstAttribute="top" secondItem="253" secondAttribute="bottom" constant="8" symbolic="YES" id="1025"/>
|
||||
<constraint firstItem="193" firstAttribute="centerY" secondItem="252" secondAttribute="centerY" id="1028"/>
|
||||
<constraint firstAttribute="trailing" secondItem="252" secondAttribute="trailing" constant="16" id="1029"/>
|
||||
<constraint firstItem="169" firstAttribute="leading" secondItem="253" secondAttribute="leading" id="1031"/>
|
||||
<constraint firstItem="252" firstAttribute="leading" secondItem="253" secondAttribute="leading" id="1032"/>
|
||||
<constraint firstItem="253" firstAttribute="leading" secondItem="169" secondAttribute="leading" id="8nJ-Q1-ZKd"/>
|
||||
<constraint firstItem="174" firstAttribute="trailing" secondItem="193" secondAttribute="trailing" id="9Iq-aC-OEr"/>
|
||||
<constraint firstItem="174" firstAttribute="trailing" secondItem="201" secondAttribute="trailing" id="9LB-1k-ECC"/>
|
||||
<constraint firstItem="174" firstAttribute="leading" secondItem="193" secondAttribute="leading" id="CPg-9c-dty"/>
|
||||
<constraint firstItem="169" firstAttribute="leading" secondItem="174" secondAttribute="trailing" constant="8" symbolic="YES" id="SbF-7f-Bnq"/>
|
||||
<constraint firstItem="252" firstAttribute="leading" secondItem="193" secondAttribute="trailing" constant="8" symbolic="YES" id="Tqx-Cn-OVc"/>
|
||||
<constraint firstItem="253" firstAttribute="top" secondItem="169" secondAttribute="bottom" constant="8" symbolic="YES" id="Uxd-Wa-luh"/>
|
||||
<constraint firstItem="174" firstAttribute="leading" secondItem="201" secondAttribute="leading" id="aIR-BW-D9z"/>
|
||||
<constraint firstItem="253" firstAttribute="trailing" secondItem="169" secondAttribute="trailing" id="eXl-E8-pL6"/>
|
||||
<constraint firstItem="253" firstAttribute="trailing" secondItem="252" secondAttribute="trailing" id="skt-z8-TVZ"/>
|
||||
<constraint firstItem="253" firstAttribute="leading" secondItem="252" secondAttribute="leading" id="u9D-yy-haW"/>
|
||||
<constraint firstItem="253" firstAttribute="leading" secondItem="201" secondAttribute="trailing" constant="8" symbolic="YES" id="uGh-ua-ROW"/>
|
||||
<constraint firstAttribute="bottom" secondItem="252" secondAttribute="bottom" constant="12" id="woL-if-MOn"/>
|
||||
</constraints>
|
||||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</box>
|
||||
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="215">
|
||||
<rect key="frame" x="398" y="182" width="130" height="26"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="125" id="623"/>
|
||||
</constraints>
|
||||
<popUpButtonCell key="cell" type="push" title="Item1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="218" id="401">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="216">
|
||||
<items>
|
||||
<menuItem title="Item1" state="on" id="218"/>
|
||||
<menuItem title="Item2" id="217"/>
|
||||
<menuItem title="Item3" id="219"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<textField toolTip="Select the method the PSX uses to read the contents of the screen" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="220">
|
||||
<rect key="frame" x="366" y="219" width="192" height="17"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="center" title="Frame Buffer Effects" id="402">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<colorWell toolTip="Select a color and transparency for the scanlines" translatesAutoresizingMaskIntoConstraints="NO" id="341">
|
||||
<rect key="frame" x="337" y="155" width="23" height="22"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="23" id="563"/>
|
||||
<constraint firstAttribute="height" constant="22" id="564"/>
|
||||
</constraints>
|
||||
<color key="color" red="0.0" green="0.0" blue="0.0" alpha="0.23999999459999999" colorSpace="calibratedRGB"/>
|
||||
</colorWell>
|
||||
<matrix verticalHuggingPriority="750" mode="highlight" allowsEmptySelection="NO" autosizesCells="NO" translatesAutoresizingMaskIntoConstraints="NO" id="702">
|
||||
<rect key="frame" x="368" y="18" width="188" height="159"/>
|
||||
<matrix verticalHuggingPriority="750" fixedFrame="YES" mode="highlight" allowsEmptySelection="NO" autosizesCells="NO" translatesAutoresizingMaskIntoConstraints="NO" id="702">
|
||||
<rect key="frame" x="368" y="43" width="188" height="177"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
<size key="cellSize" width="188" height="15"/>
|
||||
<size key="intercellSpacing" width="0.0" height="3"/>
|
||||
|
@ -459,40 +261,177 @@
|
|||
<action selector="toggleCheck:" target="-2" id="713"/>
|
||||
</connections>
|
||||
</buttonCell>
|
||||
<buttonCell type="check" title="Color Dithering" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" inset="2" id="274-uW-DSV">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<connections>
|
||||
<action selector="toggleCheck:" target="-2" id="j76-co-vAs"/>
|
||||
</connections>
|
||||
</buttonCell>
|
||||
</column>
|
||||
</cells>
|
||||
</matrix>
|
||||
<box fixedFrame="YES" title="Compatibility" borderType="line" translatesAutoresizingMaskIntoConstraints="NO" id="1qc-Ll-Z0w">
|
||||
<rect key="frame" x="14" y="133" width="349" height="117"/>
|
||||
<view key="contentView">
|
||||
<rect key="frame" x="1" y="1" width="347" height="101"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<textField toolTip="Use offscreen drawing to remove some graphics glitches" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="207">
|
||||
<rect key="frame" x="16" y="72" width="129" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Offscreen Drawing:" usesSingleLineMode="YES" id="394">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="sgR-2K-qx1">
|
||||
<rect key="frame" x="16" y="44" width="129" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Framebuffer Effects:" id="WIM-Fv-18z">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Ewc-nd-8Wq">
|
||||
<rect key="frame" x="16" y="16" width="129" height="17"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Framebuffer Access:" id="KcL-zM-YsC">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<popUpButton toolTip="Use offscreen drawing to remove some graphics glitches" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="202">
|
||||
<rect key="frame" x="149" y="67" width="183" height="26"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Aggressive" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" selectedItem="255" id="393">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="203">
|
||||
<items>
|
||||
<menuItem title="None" id="205"/>
|
||||
<menuItem title="Some" id="204"/>
|
||||
<menuItem title="Default" id="206"/>
|
||||
<menuItem title="More" id="254"/>
|
||||
<menuItem title="Aggressive" state="on" id="255"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fV7-ow-636">
|
||||
<rect key="frame" x="149" y="39" width="183" height="26"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Gfx card buffer (can be slow)" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="o7R-bu-EAr" id="M3J-hx-Wfs">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="l9P-IP-Idl">
|
||||
<items>
|
||||
<menuItem title="Emulated VRam (needs FVP)" id="6eu-Lo-wpa"/>
|
||||
<menuItem title="Black (fast, no effects)" id="BU7-7i-l2v"/>
|
||||
<menuItem title="Gfx card buffer (can be slow)" state="on" id="o7R-bu-EAr"/>
|
||||
<menuItem title="Gfx card buffer + soft (slow)" id="GCX-MC-1nr">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5Yk-qp-3SL">
|
||||
<rect key="frame" x="149" y="11" width="183" height="26"/>
|
||||
<popUpButtonCell key="cell" type="push" title="Emulated VRam (usually OK)" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="KBJ-lE-Edw" id="SQp-qw-S5v">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" id="Y0e-WG-evR">
|
||||
<items>
|
||||
<menuItem title="Emulated VRam (usually OK)" state="on" id="KBJ-lE-Edw"/>
|
||||
<menuItem title="Gfx card buffer reads" id="zhW-tA-iA4"/>
|
||||
<menuItem title="Gfx card buffer moves" id="rKh-b0-Gax"/>
|
||||
<menuItem title="Gfx reads + moves" id="wda-TY-GBK">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
<menuItem title="Full Software (FVP)" id="kjR-g8-33e">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
</subviews>
|
||||
</view>
|
||||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</box>
|
||||
<box fixedFrame="YES" title="Textures" translatesAutoresizingMaskIntoConstraints="NO" id="212">
|
||||
<rect key="frame" x="14" y="9" width="349" height="120"/>
|
||||
<view key="contentView">
|
||||
<rect key="frame" x="2" y="2" width="345" height="103"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<popUpButton toolTip="The color depth of stored textures." verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="169">
|
||||
<rect key="frame" x="112" y="69" width="219" height="26"/>
|
||||
<popUpButtonCell key="cell" type="push" title="BGRA 32" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="251" id="395">
|
||||
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="menu"/>
|
||||
<menu key="menu" title="OtherViews" id="170">
|
||||
<items>
|
||||
<menuItem title="default" id="172"/>
|
||||
<menuItem title="RGBA 16" id="171"/>
|
||||
<menuItem title="R5 G5 B5 A1" id="173"/>
|
||||
<menuItem title="RGBA 32" id="250"/>
|
||||
<menuItem title="BGRA 32" state="on" id="251"/>
|
||||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
</popUpButton>
|
||||
<textField toolTip="Select a quality level of texture scaling" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" preferredMaxLayoutWidth="89" translatesAutoresizingMaskIntoConstraints="NO" id="201">
|
||||
<rect key="frame" x="15" y="44" width="93" height="17"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Enhancement:" id="398">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField toolTip="The color depth of stored textures." horizontalHuggingPriority="249" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" preferredMaxLayoutWidth="89" translatesAutoresizingMaskIntoConstraints="NO" id="174">
|
||||
<rect key="frame" x="15" y="74" width="93" height="17"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Color Depth:" id="396">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<slider toolTip="Filter textures when scaled. Higher values filter more kinds of textures, i.e. sprites." verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="252">
|
||||
<rect key="frame" x="112" y="11" width="218" height="25"/>
|
||||
<sliderCell key="cell" alignment="left" maxValue="6" tickMarkPosition="above" numberOfTickMarks="7" allowsTickMarkValuesOnly="YES" sliderType="linear" id="399">
|
||||
<font key="font" size="12" name="Helvetica"/>
|
||||
</sliderCell>
|
||||
</slider>
|
||||
<slider toolTip="Select a quality level of texture scaling" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="253">
|
||||
<rect key="frame" x="112" y="40" width="218" height="25"/>
|
||||
<sliderCell key="cell" alignment="left" maxValue="2" tickMarkPosition="above" numberOfTickMarks="3" allowsTickMarkValuesOnly="YES" sliderType="linear" id="400">
|
||||
<font key="font" size="12" name="Helvetica"/>
|
||||
</sliderCell>
|
||||
</slider>
|
||||
<textField toolTip="Filter textures when scaled. Higher values filter more kinds of textures, i.e. sprites." verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" preferredMaxLayoutWidth="89" translatesAutoresizingMaskIntoConstraints="NO" id="193">
|
||||
<rect key="frame" x="15" y="16" width="93" height="17"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Filtering:" id="397">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
</view>
|
||||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</box>
|
||||
<colorWell toolTip="Select a color and transparency for the scanlines" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="341">
|
||||
<rect key="frame" x="533" y="201" width="23" height="22"/>
|
||||
<color key="color" red="0.0" green="0.0" blue="0.0" alpha="0.23999999459999999" colorSpace="calibratedRGB"/>
|
||||
</colorWell>
|
||||
</subviews>
|
||||
</view>
|
||||
<constraints>
|
||||
<constraint firstItem="116" firstAttribute="leading" secondItem="202" secondAttribute="leading" id="600"/>
|
||||
<constraint firstItem="116" firstAttribute="trailing" secondItem="202" secondAttribute="trailing" id="607"/>
|
||||
<constraint firstItem="112" firstAttribute="baseline" secondItem="116" secondAttribute="baseline" id="692"/>
|
||||
<constraint firstAttribute="trailing" secondItem="702" secondAttribute="trailing" constant="16" id="965"/>
|
||||
<constraint firstItem="220" firstAttribute="leading" secondItem="702" secondAttribute="leading" id="975"/>
|
||||
<constraint firstAttribute="trailing" secondItem="220" secondAttribute="trailing" constant="16" id="977"/>
|
||||
<constraint firstItem="215" firstAttribute="centerX" secondItem="220" secondAttribute="centerX" id="978"/>
|
||||
<constraint firstItem="212" firstAttribute="leading" secondItem="107" secondAttribute="leading" constant="16" id="989"/>
|
||||
<constraint firstItem="116" firstAttribute="top" secondItem="107" secondAttribute="top" constant="25" id="993"/>
|
||||
<constraint firstItem="112" firstAttribute="leading" secondItem="107" secondAttribute="leading" constant="16" id="995"/>
|
||||
<constraint firstItem="220" firstAttribute="baseline" secondItem="116" secondAttribute="baseline" id="997"/>
|
||||
<constraint firstItem="215" firstAttribute="baseline" secondItem="207" secondAttribute="baseline" id="1000"/>
|
||||
<constraint firstItem="702" firstAttribute="leading" secondItem="341" secondAttribute="trailing" constant="8" symbolic="YES" id="1006"/>
|
||||
<constraint firstItem="341" firstAttribute="leading" secondItem="212" secondAttribute="trailing" constant="8" symbolic="YES" id="1009"/>
|
||||
<constraint firstItem="702" firstAttribute="top" secondItem="215" secondAttribute="bottom" constant="8" symbolic="YES" id="1016"/>
|
||||
<constraint firstItem="341" firstAttribute="top" secondItem="702" secondAttribute="top" id="1017"/>
|
||||
<constraint firstAttribute="bottom" secondItem="702" secondAttribute="bottom" constant="16" id="3Ng-tn-NLl"/>
|
||||
<constraint firstItem="112" firstAttribute="leading" secondItem="207" secondAttribute="leading" id="7oK-ZZ-JYr"/>
|
||||
<constraint firstItem="202" firstAttribute="top" secondItem="116" secondAttribute="bottom" constant="10" symbolic="YES" id="O3g-hv-kg2"/>
|
||||
<constraint firstItem="112" firstAttribute="trailing" secondItem="207" secondAttribute="trailing" id="PhN-KE-FcQ"/>
|
||||
<constraint firstItem="212" firstAttribute="top" secondItem="202" secondAttribute="bottom" constant="8" symbolic="YES" id="RYi-RA-sus"/>
|
||||
<constraint firstItem="202" firstAttribute="baseline" secondItem="207" secondAttribute="baseline" id="gHf-9B-iw5"/>
|
||||
<constraint firstItem="202" firstAttribute="leading" secondItem="207" secondAttribute="trailing" constant="8" symbolic="YES" id="naS-nh-gFe"/>
|
||||
</constraints>
|
||||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</box>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="665">
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="665">
|
||||
<rect key="frame" x="14" y="13" width="76" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Reset" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="666">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
|
@ -502,7 +441,7 @@
|
|||
<action selector="reset:" target="-2" id="669"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="670">
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="670">
|
||||
<rect key="frame" x="514" y="13" width="83" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="671">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
|
@ -515,7 +454,7 @@ DQ
|
|||
<action selector="ok:" target="-2" id="678"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="674">
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="674">
|
||||
<rect key="frame" x="431" y="13" width="83" height="32"/>
|
||||
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="675">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
|
@ -529,22 +468,6 @@ Gw
|
|||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="665" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="20" symbolic="YES" id="667"/>
|
||||
<constraint firstAttribute="bottom" secondItem="670" secondAttribute="bottom" constant="20" symbolic="YES" id="672"/>
|
||||
<constraint firstAttribute="trailing" secondItem="670" secondAttribute="trailing" constant="20" symbolic="YES" id="673"/>
|
||||
<constraint firstItem="670" firstAttribute="leading" secondItem="674" secondAttribute="trailing" constant="12" symbolic="YES" id="676"/>
|
||||
<constraint firstItem="89" firstAttribute="top" secondItem="6" secondAttribute="top" constant="20" symbolic="YES" id="680"/>
|
||||
<constraint firstAttribute="trailing" secondItem="89" secondAttribute="trailing" constant="20" symbolic="YES" id="682"/>
|
||||
<constraint firstItem="89" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="20" symbolic="YES" id="907"/>
|
||||
<constraint firstItem="107" firstAttribute="top" secondItem="89" secondAttribute="bottom" constant="8" symbolic="YES" id="985"/>
|
||||
<constraint firstItem="674" firstAttribute="baseline" secondItem="670" secondAttribute="baseline" id="2YQ-xw-azh"/>
|
||||
<constraint firstItem="107" firstAttribute="leading" secondItem="89" secondAttribute="leading" id="Ahd-Du-WuU"/>
|
||||
<constraint firstItem="674" firstAttribute="top" secondItem="107" secondAttribute="bottom" constant="20" symbolic="YES" id="Iw3-oE-kXe"/>
|
||||
<constraint firstItem="674" firstAttribute="baseline" secondItem="665" secondAttribute="baseline" id="WHu-Oa-tPr"/>
|
||||
<constraint firstItem="107" firstAttribute="trailing" secondItem="89" secondAttribute="trailing" id="XDw-KH-rtQ"/>
|
||||
<constraint firstItem="670" firstAttribute="width" secondItem="674" secondAttribute="width" id="zqC-yW-8jc"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="142"/>
|
||||
|
@ -553,7 +476,7 @@ Gw
|
|||
<window title="Hacks" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" oneShot="NO" releasedWhenClosed="NO" showsToolbarButton="NO" visibleAtLaunch="NO" animationBehavior="default" id="472">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<rect key="contentRect" x="196" y="207" width="501" height="339"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1920" height="1057"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
|
||||
<view key="contentView" id="473">
|
||||
<rect key="frame" x="0.0" y="0.0" width="501" height="339"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
|
@ -663,7 +586,7 @@ Gw
|
|||
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
|
||||
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</box>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" translatesAutoresizingMaskIntoConstraints="NO" id="475">
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" preferredMaxLayoutWidth="353" translatesAutoresizingMaskIntoConstraints="NO" id="475">
|
||||
<rect key="frame" x="72" y="269" width="357" height="28"/>
|
||||
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" alignment="center" id="478">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
|
|
|
@ -36,3 +36,7 @@ _GPUcursor
|
|||
_GPUsetfix
|
||||
|
||||
_GPUvisualVibration
|
||||
|
||||
_GPUpgxpMemory
|
||||
_GPUpgxpCacheVertex
|
||||
_GPUtoggleDebug
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
@interface NetSfPeopsOpenGLPluginConfigController : NSWindowController
|
||||
@property (weak) IBOutlet NSCell *autoFullScreen;
|
||||
@property (weak) IBOutlet NSPopUpButton *ditherMode;
|
||||
@property (weak) IBOutlet NSCell *limitFrameRate;
|
||||
@property (weak) IBOutlet NSCell *fpsCounter;
|
||||
@property (weak) IBOutlet NSCell *frameSkipping;
|
||||
@property (weak) IBOutlet NSCell *vSync;
|
||||
|
@ -22,6 +22,7 @@
|
|||
@property (weak) IBOutlet NSSlider *texFiltering;
|
||||
@property (weak) IBOutlet NSSlider *texEnhancment;
|
||||
@property (weak) IBOutlet NSPopUpButton *frameBufferEffects;
|
||||
@property (weak) IBOutlet NSPopUpButton *frameBufferAccess;
|
||||
@property (weak) IBOutlet NSCell *drawScanlines;
|
||||
@property (weak) IBOutlet NSCell *advancedBlending;
|
||||
@property (weak) IBOutlet NSCell *opaquePass;
|
||||
|
@ -31,6 +32,7 @@
|
|||
@property (weak) IBOutlet NSCell *mjpegDecoder;
|
||||
@property (weak) IBOutlet NSCell *mjpegDecoder15bit;
|
||||
@property (weak) IBOutlet NSCell *gteAccuracy;
|
||||
@property (weak) IBOutlet NSCell *colorDithering;
|
||||
@property (weak) IBOutlet NSColorWell *scanlineColorWell;
|
||||
@property (weak) IBOutlet NSMatrix *hacksMatrix;
|
||||
@property (weak) IBOutlet NSControl *hackEnable;
|
||||
|
|
|
@ -162,6 +162,7 @@ void PrepFactoryDefaultPreferences(void)
|
|||
@"Texture Enhancement Level": @0,
|
||||
@"Texture Filter Level": @0,
|
||||
@"Frame Buffer Level": @0,
|
||||
@"Frame Buffer Access": @0,
|
||||
kWindowSize: NSStringFromSize(NSMakeSize(800, 600)),
|
||||
@"Draw Scanlines": @NO,
|
||||
// nasty:
|
||||
|
@ -199,7 +200,9 @@ void ReadConfig(void)
|
|||
iFrameLimit = 2; // required
|
||||
fFrameRate = 60; // required (some number, 60 seems ok)
|
||||
}
|
||||
|
||||
|
||||
iForceVSync = [keyValues[kVSync] boolValue] ? 1 : 0;
|
||||
|
||||
// Dithering is either on or off in OpenGL plug, but hey
|
||||
bDrawDither = [keyValues[@"Dither Mode"] intValue];
|
||||
|
||||
|
@ -241,13 +244,17 @@ void ReadConfig(void)
|
|||
if (iFrameTexType > 3) iFrameTexType = 3;
|
||||
if (iFrameTexType < 0) iFrameTexType = 0;
|
||||
|
||||
iFrameReadType = [keyValues[@"Frame Buffer Access"] intValue];
|
||||
if (iFrameReadType > 4) iFrameReadType = 4;
|
||||
if (iFrameReadType < 0) iFrameReadType = 0;
|
||||
|
||||
iTexQuality = [keyValues[@"Texture Color Depth Level"] intValue];
|
||||
if (iTexQuality > 4) iTexQuality = 4;
|
||||
if (iTexQuality < 0) iTexQuality = 0;
|
||||
|
||||
// MAG_FILTER = LINEAR, etc.
|
||||
iFilterType = [keyValues[@"Texture Filter Level"] intValue];
|
||||
if (iFilterType > 2) iFilterType = 2;
|
||||
if (iFilterType > 6) iFilterType = 6;
|
||||
if (iFilterType < 0) iFilterType = 0;
|
||||
|
||||
// stretches textures (more detail). You'd think it would look great, but it's not massively better. NEEDS iFilterType to be of any use.
|
||||
|
@ -294,7 +301,7 @@ void ReadConfig(void)
|
|||
|
||||
@implementation NetSfPeopsOpenGLPluginConfigController
|
||||
@synthesize autoFullScreen;
|
||||
@synthesize ditherMode;
|
||||
@synthesize limitFrameRate;
|
||||
@synthesize fpsCounter;
|
||||
@synthesize frameSkipping;
|
||||
@synthesize vSync;
|
||||
|
@ -307,6 +314,7 @@ void ReadConfig(void)
|
|||
@synthesize texFiltering;
|
||||
@synthesize texEnhancment;
|
||||
@synthesize frameBufferEffects;
|
||||
@synthesize frameBufferAccess;
|
||||
@synthesize drawScanlines;
|
||||
@synthesize advancedBlending;
|
||||
@synthesize opaquePass;
|
||||
|
@ -316,6 +324,7 @@ void ReadConfig(void)
|
|||
@synthesize mjpegDecoder;
|
||||
@synthesize mjpegDecoder15bit;
|
||||
@synthesize gteAccuracy;
|
||||
@synthesize colorDithering;
|
||||
@synthesize scanlineColorWell;
|
||||
@synthesize hacksMatrix;
|
||||
@synthesize hackEnable;
|
||||
|
@ -337,14 +346,14 @@ void ReadConfig(void)
|
|||
writeDic[@"Scanline Color"] = [NSArchiver archivedDataWithRootObject:[scanlineColorWell color]];
|
||||
writeDic[kFrameSkipping] = ([frameSkipping integerValue] ? @YES : @NO);
|
||||
writeDic[kAutoFullScreen] = ([autoFullScreen integerValue] ? @YES : @NO);
|
||||
//[writeDic setObject:([frameLimit integerValue] ? @YES : @NO) forKey:kFrameLimit];
|
||||
writeDic[kFrameLimit] = ([limitFrameRate integerValue] ? @YES : @NO);
|
||||
writeDic[@"Proportional Resize"] = ([proportionalResize integerValue] ? @YES : @NO);
|
||||
writeDic[@"Dither Mode"] = @([ditherMode indexOfSelectedItem]);
|
||||
writeDic[@"Offscreen Drawing Level"] = @([offscreenDrawing indexOfSelectedItem]);
|
||||
writeDic[@"Texture Color Depth Level"] = @([texColorDepth indexOfSelectedItem]);
|
||||
writeDic[@"Texture Enhancement Level"] = @([texEnhancment integerValue]);
|
||||
writeDic[@"Texture Filter Level"] = @([texFiltering integerValue]);
|
||||
writeDic[@"Frame Buffer Level"] = @([frameBufferEffects indexOfSelectedItem]);
|
||||
writeDic[@"Frame Buffer Access"] = @([frameBufferAccess indexOfSelectedItem]);
|
||||
writeDic[@"Draw Scanlines"] = ([drawScanlines integerValue] ? @YES : @NO);
|
||||
writeDic[@"Advanced Blending"] = ([advancedBlending integerValue] ? @YES : @NO);
|
||||
writeDic[@"Opaque Pass"] = ([opaquePass integerValue] ? @YES : @NO);
|
||||
|
@ -354,6 +363,7 @@ void ReadConfig(void)
|
|||
writeDic[@"Emulate mjpeg decoder"] = ([mjpegDecoder integerValue] ? @YES : @NO);
|
||||
writeDic[@"Fast mjpeg decoder"] = ([mjpegDecoder15bit integerValue] ? @YES : @NO);
|
||||
writeDic[@"GteAccuracy"] = ([gteAccuracy integerValue] ? @YES : @NO);
|
||||
writeDic[@"Dither Mode"] = @([colorDithering integerValue]);
|
||||
writeDic[kVSync] = ([vSync integerValue] ? @YES : @NO);
|
||||
writeDic[kWindowSize] = NSStringFromSize(NSMakeSize([windowWidth integerValue], [windowHeighth integerValue]));
|
||||
|
||||
|
@ -408,7 +418,7 @@ void ReadConfig(void)
|
|||
[self loadHacksValues];
|
||||
|
||||
[autoFullScreen setIntegerValue:[keyValues[kAutoFullScreen] boolValue]];
|
||||
[ditherMode selectItemAtIndex:[keyValues[@"Dither Mode"] integerValue]];
|
||||
[limitFrameRate setIntegerValue:[keyValues[kFrameLimit] boolValue]];
|
||||
[fpsCounter setIntegerValue:[keyValues[kFPSCounter] boolValue]];
|
||||
[scanlineColorWell setColor:[NSUnarchiver unarchiveObjectWithData: keyValues[@"Scanline Color"]]];
|
||||
[frameSkipping setIntegerValue:[keyValues[kFrameSkipping] boolValue]];
|
||||
|
@ -426,8 +436,10 @@ void ReadConfig(void)
|
|||
[blurEffect setIntegerValue:[keyValues[@"Blur"] boolValue]];
|
||||
[texColorDepth selectItemAtIndex:[keyValues[@"Texture Color Depth Level"] integerValue]];
|
||||
[gteAccuracy setIntegerValue:[keyValues[@"GteAccuracy"] boolValue]];
|
||||
[colorDithering setIntegerValue:[keyValues[@"Dither Mode"] integerValue]];
|
||||
[scanlineColorWell setEnabled:[keyValues[@"Draw Scanlines"] boolValue]];
|
||||
[frameBufferEffects selectItemAtIndex:[keyValues[@"Frame Buffer Level"] integerValue]];
|
||||
[frameBufferAccess selectItemAtIndex:[keyValues[@"Frame Buffer Access"] integerValue]];
|
||||
[vSync setIntegerValue:[keyValues[kVSync] boolValue]];
|
||||
[proportionalResize setIntegerValue:[keyValues[@"Proportional Resize"] boolValue]];
|
||||
NSSize winSize = NSSizeFromString(keyValues[kWindowSize]);
|
||||
|
@ -438,6 +450,9 @@ void ReadConfig(void)
|
|||
- (void)awakeFromNib
|
||||
{
|
||||
[[NSColorPanel sharedColorPanel] setShowsAlpha:YES]; // eliminate dumb behavior!
|
||||
|
||||
// Kludge fix for windowWidth field layout problem on OS X 10.10+
|
||||
windowWidth.titleWidth = windowWidth.titleWidth + FLT_MIN;
|
||||
}
|
||||
|
||||
- (void)hacksSheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo
|
||||
|
@ -475,9 +490,7 @@ void ReadConfig(void)
|
|||
|
||||
- (IBAction)toggleCheck:(id)sender
|
||||
{
|
||||
if([sender tag] == 1) {
|
||||
[scanlineColorWell setEnabled: [sender intValue] ? YES : NO];
|
||||
}
|
||||
scanlineColorWell.enabled = drawScanlines.integerValue;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
Loading…
Reference in New Issue