From cbacddb65eca6dad7683539b03fdfecaf2c0e4b5 Mon Sep 17 00:00:00 2001 From: zilmar Date: Mon, 19 Dec 2022 09:07:26 +1030 Subject: [PATCH] Core: Make 32bit CPU recompiler only setting --- Source/Android/Bridge/jniBridgeSettings.cpp | 1 - .../N64System/Interpreter/InterpreterCPU.cpp | 11 +- .../Interpreter/InterpreterOps32.cpp | 1135 ----------------- .../N64System/Interpreter/InterpreterOps32.h | 73 -- Source/Project64-core/Project64-core.vcxproj | 2 - .../Project64-core.vcxproj.filters | 6 - Source/Project64-core/Settings.cpp | 3 +- Source/Project64-core/Settings/SettingsID.h | 1 - .../Settings/SettingsPage-Defaults.cpp | 2 - .../Settings/SettingsPage-Defaults.h | 1 - .../Settings/SettingsPage-Game-General.cpp | 2 - .../Settings/SettingsPage-Game-General.h | 1 - .../Settings/SettingsPage-Game-Recompiler.cpp | 2 + .../Settings/SettingsPage-Game-Recompiler.h | 1 + .../Settings/SettingsPage-Options.cpp | 1 - Source/Project64/UserInterface/UIResources.rc | 41 +- Source/Project64/UserInterface/resource.h | 21 +- 17 files changed, 30 insertions(+), 1274 deletions(-) delete mode 100644 Source/Project64-core/N64System/Interpreter/InterpreterOps32.cpp delete mode 100644 Source/Project64-core/N64System/Interpreter/InterpreterOps32.h diff --git a/Source/Android/Bridge/jniBridgeSettings.cpp b/Source/Android/Bridge/jniBridgeSettings.cpp index 64dfebe9a..560f27025 100644 --- a/Source/Android/Bridge/jniBridgeSettings.cpp +++ b/Source/Android/Bridge/jniBridgeSettings.cpp @@ -77,7 +77,6 @@ CJniBridegSettings::CJniBridegSettings() ADD_SETTING(Default_ViRefreshRate); ADD_SETTING(Default_AiCountPerBytes); ADD_SETTING(Default_CounterFactor); - ADD_SETTING(Default_32Bit); ADD_SETTING(Default_SyncViaAudio); ADD_SETTING(Default_FixedAudio); ADD_SETTING(Default_UnalignedDMA); diff --git a/Source/Project64-core/N64System/Interpreter/InterpreterCPU.cpp b/Source/Project64-core/N64System/Interpreter/InterpreterCPU.cpp index cb1ff4db0..7df3b0ef1 100644 --- a/Source/Project64-core/N64System/Interpreter/InterpreterCPU.cpp +++ b/Source/Project64-core/N64System/Interpreter/InterpreterCPU.cpp @@ -4,7 +4,6 @@ #include #include -#include #include #include #include @@ -22,15 +21,7 @@ void ExecuteInterpreterOps(uint32_t /*Cycles*/) void CInterpreterCPU::BuildCPU() { R4300iOp::m_TestTimer = false; - - if (g_Settings->LoadBool(Game_32Bit)) - { - m_R4300i_Opcode = R4300iOp32::BuildInterpreter(); - } - else - { - m_R4300i_Opcode = R4300iOp::BuildInterpreter(); - } + m_R4300i_Opcode = R4300iOp::BuildInterpreter(); } void CInterpreterCPU::InPermLoop() diff --git a/Source/Project64-core/N64System/Interpreter/InterpreterOps32.cpp b/Source/Project64-core/N64System/Interpreter/InterpreterOps32.cpp deleted file mode 100644 index c9526d2e9..000000000 --- a/Source/Project64-core/N64System/Interpreter/InterpreterOps32.cpp +++ /dev/null @@ -1,1135 +0,0 @@ -#include "stdafx.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define TEST_COP1_USABLE_EXCEPTION \ - if ((g_Reg->STATUS_REGISTER & STATUS_CU1) == 0) \ - { \ - g_Reg->DoCopUnusableException(g_System->m_PipelineStage == PIPELINE_STAGE_JUMP, 1); \ - g_System->m_PipelineStage = PIPELINE_STAGE_JUMP; \ - g_System->m_JumpToLocation = (*_PROGRAM_COUNTER); \ - return; \ - } - -R4300iOp32::Func * R4300iOp32::BuildInterpreter() -{ - Jump_Opcode[0] = SPECIAL; - Jump_Opcode[1] = REGIMM; - Jump_Opcode[2] = R4300iOp::J; - Jump_Opcode[3] = JAL; - Jump_Opcode[4] = BEQ; - Jump_Opcode[5] = BNE; - Jump_Opcode[6] = BLEZ; - Jump_Opcode[7] = BGTZ; - Jump_Opcode[8] = ADDI; - Jump_Opcode[9] = ADDIU; - Jump_Opcode[10] = SLTI; - Jump_Opcode[11] = SLTIU; - Jump_Opcode[12] = ANDI; - Jump_Opcode[13] = ORI; - Jump_Opcode[14] = XORI; - Jump_Opcode[15] = LUI; - Jump_Opcode[16] = COP0; - Jump_Opcode[17] = COP1; - Jump_Opcode[18] = R4300iOp::UnknownOpcode; - Jump_Opcode[19] = R4300iOp::UnknownOpcode; - Jump_Opcode[20] = BEQL; - Jump_Opcode[21] = BNEL; - Jump_Opcode[22] = BLEZL; - Jump_Opcode[23] = BGTZL; - Jump_Opcode[24] = R4300iOp::DADDI; - Jump_Opcode[25] = R4300iOp::DADDIU; - Jump_Opcode[26] = R4300iOp::LDL; - Jump_Opcode[27] = R4300iOp::LDR; - Jump_Opcode[28] = R4300iOp::UnknownOpcode; - Jump_Opcode[29] = R4300iOp::UnknownOpcode; - Jump_Opcode[30] = R4300iOp::UnknownOpcode; - Jump_Opcode[31] = R4300iOp::ReservedInstruction; - Jump_Opcode[32] = LB; - Jump_Opcode[33] = LH; - Jump_Opcode[34] = LWL; - Jump_Opcode[35] = LW; - Jump_Opcode[36] = LBU; - Jump_Opcode[37] = LHU; - Jump_Opcode[38] = LWR; - Jump_Opcode[39] = LWU; - Jump_Opcode[40] = R4300iOp::SB; - Jump_Opcode[41] = R4300iOp::SH; - Jump_Opcode[42] = R4300iOp::SWL; - Jump_Opcode[43] = R4300iOp::SW; - Jump_Opcode[44] = R4300iOp::SDL; - Jump_Opcode[45] = R4300iOp::SDR; - Jump_Opcode[46] = R4300iOp::SWR; - Jump_Opcode[47] = R4300iOp::CACHE; - Jump_Opcode[48] = R4300iOp::LL; - Jump_Opcode[49] = R4300iOp::LWC1; - Jump_Opcode[50] = R4300iOp::UnknownOpcode; - Jump_Opcode[51] = R4300iOp::UnknownOpcode; - Jump_Opcode[52] = R4300iOp::UnknownOpcode; - Jump_Opcode[53] = R4300iOp::LDC1; - Jump_Opcode[54] = R4300iOp::UnknownOpcode; - Jump_Opcode[55] = R4300iOp::LD; - Jump_Opcode[56] = R4300iOp::SC; - Jump_Opcode[57] = R4300iOp::SWC1; - Jump_Opcode[58] = R4300iOp::UnknownOpcode; - Jump_Opcode[59] = R4300iOp::UnknownOpcode; - Jump_Opcode[60] = R4300iOp::UnknownOpcode; - Jump_Opcode[61] = R4300iOp::SDC1; - Jump_Opcode[62] = R4300iOp::UnknownOpcode; - Jump_Opcode[63] = R4300iOp::SD; - - Jump_Special[0] = SPECIAL_SLL; - Jump_Special[1] = R4300iOp::UnknownOpcode; - Jump_Special[2] = SPECIAL_SRL; - Jump_Special[3] = SPECIAL_SRA; - Jump_Special[4] = SPECIAL_SLLV; - Jump_Special[5] = R4300iOp::UnknownOpcode; - Jump_Special[6] = SPECIAL_SRLV; - Jump_Special[7] = SPECIAL_SRAV; - Jump_Special[8] = SPECIAL_JR; - Jump_Special[9] = SPECIAL_JALR; - Jump_Special[10] = R4300iOp::UnknownOpcode; - Jump_Special[11] = R4300iOp::UnknownOpcode; - Jump_Special[12] = R4300iOp::SPECIAL_SYSCALL; - Jump_Special[13] = R4300iOp::SPECIAL_BREAK; - Jump_Special[14] = R4300iOp::UnknownOpcode; - Jump_Special[15] = R4300iOp::SPECIAL_SYNC; - Jump_Special[16] = R4300iOp::SPECIAL_MFHI; - Jump_Special[17] = R4300iOp::SPECIAL_MTHI; - Jump_Special[18] = R4300iOp::SPECIAL_MFLO; - Jump_Special[19] = R4300iOp::SPECIAL_MTLO; - Jump_Special[20] = R4300iOp::SPECIAL_DSLLV; - Jump_Special[21] = R4300iOp::UnknownOpcode; - Jump_Special[22] = R4300iOp::SPECIAL_DSRLV; - Jump_Special[23] = R4300iOp::SPECIAL_DSRAV; - Jump_Special[24] = R4300iOp::SPECIAL_MULT; - Jump_Special[25] = R4300iOp::SPECIAL_MULTU; - Jump_Special[26] = R4300iOp::SPECIAL_DIV; - Jump_Special[27] = R4300iOp::SPECIAL_DIVU; - Jump_Special[28] = R4300iOp::SPECIAL_DMULT; - Jump_Special[29] = R4300iOp::SPECIAL_DMULTU; - Jump_Special[30] = R4300iOp::SPECIAL_DDIV; - Jump_Special[31] = R4300iOp::SPECIAL_DDIVU; - Jump_Special[32] = SPECIAL_ADD; - Jump_Special[33] = SPECIAL_ADDU; - Jump_Special[34] = SPECIAL_SUB; - Jump_Special[35] = SPECIAL_SUBU; - Jump_Special[36] = SPECIAL_AND; - Jump_Special[37] = SPECIAL_OR; - Jump_Special[38] = SPECIAL_XOR; - Jump_Special[39] = SPECIAL_NOR; - Jump_Special[40] = R4300iOp::UnknownOpcode; - Jump_Special[41] = R4300iOp::UnknownOpcode; - Jump_Special[42] = SPECIAL_SLT; - Jump_Special[43] = SPECIAL_SLTU; - Jump_Special[44] = R4300iOp::SPECIAL_DADD; - Jump_Special[45] = R4300iOp::SPECIAL_DADDU; - Jump_Special[46] = R4300iOp::SPECIAL_DSUB; - Jump_Special[47] = R4300iOp::SPECIAL_DSUBU; - Jump_Special[48] = R4300iOp::SPECIAL_TGE; - Jump_Special[49] = R4300iOp::SPECIAL_TGEU; - Jump_Special[50] = R4300iOp::SPECIAL_TLT; - Jump_Special[51] = R4300iOp::SPECIAL_TLTU; - Jump_Special[52] = R4300iOp::SPECIAL_TEQ; - Jump_Special[53] = R4300iOp::UnknownOpcode; - Jump_Special[54] = R4300iOp::SPECIAL_TNE; - Jump_Special[55] = R4300iOp::UnknownOpcode; - Jump_Special[56] = R4300iOp::SPECIAL_DSLL; - Jump_Special[57] = R4300iOp::UnknownOpcode; - Jump_Special[58] = R4300iOp::SPECIAL_DSRL; - Jump_Special[59] = R4300iOp::SPECIAL_DSRA; - Jump_Special[60] = R4300iOp::SPECIAL_DSLL32; - Jump_Special[61] = R4300iOp::UnknownOpcode; - Jump_Special[62] = R4300iOp::SPECIAL_DSRL32; - Jump_Special[63] = R4300iOp::SPECIAL_DSRA32; - - Jump_Regimm[0] = REGIMM_BLTZ; - Jump_Regimm[1] = REGIMM_BGEZ; - Jump_Regimm[2] = REGIMM_BLTZL; - Jump_Regimm[3] = REGIMM_BGEZL; - Jump_Regimm[4] = R4300iOp::UnknownOpcode; - Jump_Regimm[5] = R4300iOp::UnknownOpcode; - Jump_Regimm[6] = R4300iOp::UnknownOpcode; - Jump_Regimm[7] = R4300iOp::UnknownOpcode; - Jump_Regimm[8] = R4300iOp::REGIMM_TGEI; - Jump_Regimm[9] = R4300iOp::REGIMM_TGEIU; - Jump_Regimm[10] = R4300iOp::REGIMM_TLTI; - Jump_Regimm[11] = R4300iOp::REGIMM_TLTIU; - Jump_Regimm[12] = R4300iOp::REGIMM_TEQI; - Jump_Regimm[13] = R4300iOp::UnknownOpcode; - Jump_Regimm[14] = R4300iOp::REGIMM_TNEI; - Jump_Regimm[15] = R4300iOp::UnknownOpcode; - Jump_Regimm[16] = REGIMM_BLTZAL; - Jump_Regimm[17] = REGIMM_BGEZAL; - Jump_Regimm[18] = R4300iOp::UnknownOpcode; - Jump_Regimm[19] = R4300iOp::UnknownOpcode; - Jump_Regimm[20] = R4300iOp::UnknownOpcode; - Jump_Regimm[21] = R4300iOp::UnknownOpcode; - Jump_Regimm[22] = R4300iOp::UnknownOpcode; - Jump_Regimm[23] = R4300iOp::UnknownOpcode; - Jump_Regimm[24] = R4300iOp::UnknownOpcode; - Jump_Regimm[25] = R4300iOp::UnknownOpcode; - Jump_Regimm[26] = R4300iOp::UnknownOpcode; - Jump_Regimm[27] = R4300iOp::UnknownOpcode; - Jump_Regimm[28] = R4300iOp::UnknownOpcode; - Jump_Regimm[29] = R4300iOp::UnknownOpcode; - Jump_Regimm[30] = R4300iOp::UnknownOpcode; - Jump_Regimm[31] = R4300iOp::UnknownOpcode; - - Jump_CoP0[0] = COP0_MF; - Jump_CoP0[1] = R4300iOp::UnknownOpcode; - Jump_CoP0[2] = R4300iOp::UnknownOpcode; - Jump_CoP0[3] = R4300iOp::UnknownOpcode; - Jump_CoP0[4] = COP0_MT; - Jump_CoP0[5] = R4300iOp::UnknownOpcode; - Jump_CoP0[6] = R4300iOp::UnknownOpcode; - Jump_CoP0[7] = R4300iOp::UnknownOpcode; - Jump_CoP0[8] = R4300iOp::UnknownOpcode; - Jump_CoP0[9] = R4300iOp::UnknownOpcode; - Jump_CoP0[10] = R4300iOp::UnknownOpcode; - Jump_CoP0[11] = R4300iOp::UnknownOpcode; - Jump_CoP0[12] = R4300iOp::UnknownOpcode; - Jump_CoP0[13] = R4300iOp::UnknownOpcode; - Jump_CoP0[14] = R4300iOp::UnknownOpcode; - Jump_CoP0[15] = R4300iOp::UnknownOpcode; - Jump_CoP0[16] = R4300iOp::COP0_CO; - Jump_CoP0[17] = R4300iOp::COP0_CO; - Jump_CoP0[18] = R4300iOp::COP0_CO; - Jump_CoP0[19] = R4300iOp::COP0_CO; - Jump_CoP0[20] = R4300iOp::COP0_CO; - Jump_CoP0[21] = R4300iOp::COP0_CO; - Jump_CoP0[22] = R4300iOp::COP0_CO; - Jump_CoP0[23] = R4300iOp::COP0_CO; - Jump_CoP0[24] = R4300iOp::COP0_CO; - Jump_CoP0[25] = R4300iOp::COP0_CO; - Jump_CoP0[26] = R4300iOp::COP0_CO; - Jump_CoP0[27] = R4300iOp::COP0_CO; - Jump_CoP0[28] = R4300iOp::COP0_CO; - Jump_CoP0[29] = R4300iOp::COP0_CO; - Jump_CoP0[30] = R4300iOp::COP0_CO; - Jump_CoP0[31] = R4300iOp::COP0_CO; - - Jump_CoP0_Function[0] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[1] = R4300iOp::COP0_CO_TLBR; - Jump_CoP0_Function[2] = R4300iOp::COP0_CO_TLBWI; - Jump_CoP0_Function[3] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[4] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[5] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[6] = R4300iOp::COP0_CO_TLBWR; - Jump_CoP0_Function[7] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[8] = R4300iOp::COP0_CO_TLBP; - Jump_CoP0_Function[9] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[10] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[11] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[12] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[13] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[14] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[15] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[16] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[17] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[18] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[19] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[20] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[21] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[22] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[23] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[24] = R4300iOp::COP0_CO_ERET; - Jump_CoP0_Function[25] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[26] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[27] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[28] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[29] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[30] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[31] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[32] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[33] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[34] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[35] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[36] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[37] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[38] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[39] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[40] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[41] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[42] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[43] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[44] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[45] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[46] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[47] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[48] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[49] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[50] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[51] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[52] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[53] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[54] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[55] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[56] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[57] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[58] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[59] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[60] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[61] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[62] = R4300iOp::UnknownOpcode; - Jump_CoP0_Function[63] = R4300iOp::UnknownOpcode; - - Jump_CoP1[0] = COP1_MF; - Jump_CoP1[1] = R4300iOp::COP1_DMF; - Jump_CoP1[2] = COP1_CF; - Jump_CoP1[3] = R4300iOp::UnknownOpcode; - Jump_CoP1[4] = R4300iOp::COP1_MT; - Jump_CoP1[5] = COP1_DMT; - Jump_CoP1[6] = R4300iOp::COP1_CT; - Jump_CoP1[7] = R4300iOp::UnknownOpcode; - Jump_CoP1[8] = R4300iOp::COP1_BC; - Jump_CoP1[9] = R4300iOp::UnknownOpcode; - Jump_CoP1[10] = R4300iOp::UnknownOpcode; - Jump_CoP1[11] = R4300iOp::UnknownOpcode; - Jump_CoP1[12] = R4300iOp::UnknownOpcode; - Jump_CoP1[13] = R4300iOp::UnknownOpcode; - Jump_CoP1[14] = R4300iOp::UnknownOpcode; - Jump_CoP1[15] = R4300iOp::UnknownOpcode; - Jump_CoP1[16] = R4300iOp::COP1_S; - Jump_CoP1[17] = R4300iOp::COP1_D; - Jump_CoP1[18] = R4300iOp::UnknownOpcode; - Jump_CoP1[19] = R4300iOp::UnknownOpcode; - Jump_CoP1[20] = R4300iOp::COP1_W; - Jump_CoP1[21] = R4300iOp::COP1_L; - Jump_CoP1[22] = R4300iOp::UnknownOpcode; - Jump_CoP1[23] = R4300iOp::UnknownOpcode; - Jump_CoP1[24] = R4300iOp::UnknownOpcode; - Jump_CoP1[25] = R4300iOp::UnknownOpcode; - Jump_CoP1[26] = R4300iOp::UnknownOpcode; - Jump_CoP1[27] = R4300iOp::UnknownOpcode; - Jump_CoP1[28] = R4300iOp::UnknownOpcode; - Jump_CoP1[29] = R4300iOp::UnknownOpcode; - Jump_CoP1[30] = R4300iOp::UnknownOpcode; - Jump_CoP1[31] = R4300iOp::UnknownOpcode; - - Jump_CoP1_BC[0] = R4300iOp::COP1_BCF; - Jump_CoP1_BC[1] = R4300iOp::COP1_BCT; - Jump_CoP1_BC[2] = R4300iOp::COP1_BCFL; - Jump_CoP1_BC[3] = R4300iOp::COP1_BCTL; - Jump_CoP1_BC[4] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[5] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[6] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[7] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[8] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[9] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[10] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[11] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[12] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[13] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[14] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[15] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[16] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[17] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[18] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[19] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[20] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[21] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[22] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[23] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[24] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[25] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[26] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[27] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[28] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[29] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[30] = R4300iOp::UnknownOpcode; - Jump_CoP1_BC[31] = R4300iOp::UnknownOpcode; - - Jump_CoP1_S[0] = R4300iOp::COP1_S_ADD; - Jump_CoP1_S[1] = R4300iOp::COP1_S_SUB; - Jump_CoP1_S[2] = R4300iOp::COP1_S_MUL; - Jump_CoP1_S[3] = R4300iOp::COP1_S_DIV; - Jump_CoP1_S[4] = R4300iOp::COP1_S_SQRT; - Jump_CoP1_S[5] = R4300iOp::COP1_S_ABS; - Jump_CoP1_S[6] = R4300iOp::COP1_S_MOV; - Jump_CoP1_S[7] = R4300iOp::COP1_S_NEG; - Jump_CoP1_S[8] = R4300iOp::COP1_S_ROUND_L; - Jump_CoP1_S[9] = R4300iOp::COP1_S_TRUNC_L; - Jump_CoP1_S[10] = R4300iOp::COP1_S_CEIL_L; - Jump_CoP1_S[11] = R4300iOp::COP1_S_FLOOR_L; - Jump_CoP1_S[12] = R4300iOp::COP1_S_ROUND_W; - Jump_CoP1_S[13] = R4300iOp::COP1_S_TRUNC_W; - Jump_CoP1_S[14] = R4300iOp::COP1_S_CEIL_W; - Jump_CoP1_S[15] = R4300iOp::COP1_S_FLOOR_W; - Jump_CoP1_S[16] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[17] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[18] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[19] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[20] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[21] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[22] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[23] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[24] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[25] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[26] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[27] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[28] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[29] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[30] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[31] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[32] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[33] = R4300iOp::COP1_S_CVT_D; - Jump_CoP1_S[34] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[35] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[36] = R4300iOp::COP1_S_CVT_W; - Jump_CoP1_S[37] = R4300iOp::COP1_S_CVT_L; - Jump_CoP1_S[38] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[39] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[40] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[41] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[42] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[43] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[44] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[45] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[46] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[47] = R4300iOp::UnknownOpcode; - Jump_CoP1_S[48] = R4300iOp::COP1_S_CMP; - Jump_CoP1_S[49] = R4300iOp::COP1_S_CMP; - Jump_CoP1_S[50] = R4300iOp::COP1_S_CMP; - Jump_CoP1_S[51] = R4300iOp::COP1_S_CMP; - Jump_CoP1_S[52] = R4300iOp::COP1_S_CMP; - Jump_CoP1_S[53] = R4300iOp::COP1_S_CMP; - Jump_CoP1_S[54] = R4300iOp::COP1_S_CMP; - Jump_CoP1_S[55] = R4300iOp::COP1_S_CMP; - Jump_CoP1_S[56] = R4300iOp::COP1_S_CMP; - Jump_CoP1_S[57] = R4300iOp::COP1_S_CMP; - Jump_CoP1_S[58] = R4300iOp::COP1_S_CMP; - Jump_CoP1_S[59] = R4300iOp::COP1_S_CMP; - Jump_CoP1_S[60] = R4300iOp::COP1_S_CMP; - Jump_CoP1_S[61] = R4300iOp::COP1_S_CMP; - Jump_CoP1_S[62] = R4300iOp::COP1_S_CMP; - Jump_CoP1_S[63] = R4300iOp::COP1_S_CMP; - - Jump_CoP1_D[0] = R4300iOp::COP1_D_ADD; - Jump_CoP1_D[1] = R4300iOp::COP1_D_SUB; - Jump_CoP1_D[2] = R4300iOp::COP1_D_MUL; - Jump_CoP1_D[3] = R4300iOp::COP1_D_DIV; - Jump_CoP1_D[4] = R4300iOp::COP1_D_SQRT; - Jump_CoP1_D[5] = R4300iOp::COP1_D_ABS; - Jump_CoP1_D[6] = R4300iOp::COP1_D_MOV; - Jump_CoP1_D[7] = R4300iOp::COP1_D_NEG; - Jump_CoP1_D[8] = R4300iOp::COP1_D_ROUND_L; - Jump_CoP1_D[9] = R4300iOp::COP1_D_TRUNC_L; - Jump_CoP1_D[10] = R4300iOp::COP1_D_CEIL_L; - Jump_CoP1_D[11] = R4300iOp::COP1_D_FLOOR_L; - Jump_CoP1_D[12] = R4300iOp::COP1_D_ROUND_W; - Jump_CoP1_D[13] = R4300iOp::COP1_D_TRUNC_W; - Jump_CoP1_D[14] = R4300iOp::COP1_D_CEIL_W; - Jump_CoP1_D[15] = R4300iOp::COP1_D_FLOOR_W; - Jump_CoP1_D[16] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[17] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[18] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[19] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[20] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[21] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[22] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[23] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[24] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[25] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[26] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[27] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[28] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[29] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[30] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[31] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[32] = R4300iOp::COP1_D_CVT_S; - Jump_CoP1_D[33] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[34] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[35] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[36] = R4300iOp::COP1_D_CVT_W; - Jump_CoP1_D[37] = R4300iOp::COP1_D_CVT_L; - Jump_CoP1_D[38] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[39] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[40] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[41] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[42] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[43] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[44] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[45] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[46] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[47] = R4300iOp::UnknownOpcode; - Jump_CoP1_D[48] = R4300iOp::COP1_D_CMP; - Jump_CoP1_D[49] = R4300iOp::COP1_D_CMP; - Jump_CoP1_D[50] = R4300iOp::COP1_D_CMP; - Jump_CoP1_D[51] = R4300iOp::COP1_D_CMP; - Jump_CoP1_D[52] = R4300iOp::COP1_D_CMP; - Jump_CoP1_D[53] = R4300iOp::COP1_D_CMP; - Jump_CoP1_D[54] = R4300iOp::COP1_D_CMP; - Jump_CoP1_D[55] = R4300iOp::COP1_D_CMP; - Jump_CoP1_D[56] = R4300iOp::COP1_D_CMP; - Jump_CoP1_D[57] = R4300iOp::COP1_D_CMP; - Jump_CoP1_D[58] = R4300iOp::COP1_D_CMP; - Jump_CoP1_D[59] = R4300iOp::COP1_D_CMP; - Jump_CoP1_D[60] = R4300iOp::COP1_D_CMP; - Jump_CoP1_D[61] = R4300iOp::COP1_D_CMP; - Jump_CoP1_D[62] = R4300iOp::COP1_D_CMP; - Jump_CoP1_D[63] = R4300iOp::COP1_D_CMP; - - Jump_CoP1_W[0] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[1] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[2] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[3] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[4] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[5] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[6] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[7] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[8] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[9] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[10] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[11] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[12] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[13] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[14] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[15] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[16] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[17] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[18] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[19] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[20] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[21] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[22] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[23] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[24] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[25] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[26] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[27] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[28] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[29] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[30] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[31] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[32] = R4300iOp::COP1_W_CVT_S; - Jump_CoP1_W[33] = R4300iOp::COP1_W_CVT_D; - Jump_CoP1_W[34] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[35] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[36] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[37] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[38] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[39] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[40] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[41] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[42] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[43] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[44] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[45] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[46] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[47] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[48] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[49] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[50] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[51] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[52] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[53] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[54] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[55] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[56] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[57] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[58] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[59] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[60] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[61] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[62] = R4300iOp::UnknownOpcode; - Jump_CoP1_W[63] = R4300iOp::UnknownOpcode; - - Jump_CoP1_L[0] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[1] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[2] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[3] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[4] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[5] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[6] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[7] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[8] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[9] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[10] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[11] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[12] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[13] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[14] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[15] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[16] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[17] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[18] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[19] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[20] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[21] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[22] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[23] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[24] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[25] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[26] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[27] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[28] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[29] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[30] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[31] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[32] = R4300iOp::COP1_L_CVT_S; - Jump_CoP1_L[33] = R4300iOp::COP1_L_CVT_D; - Jump_CoP1_L[34] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[35] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[36] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[37] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[38] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[39] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[40] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[41] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[42] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[43] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[44] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[45] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[46] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[47] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[48] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[49] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[50] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[51] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[52] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[53] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[54] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[55] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[56] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[57] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[58] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[59] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[60] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[61] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[62] = R4300iOp::UnknownOpcode; - Jump_CoP1_L[63] = R4300iOp::UnknownOpcode; - - return Jump_Opcode; -} - -// Opcode functions - -void R4300iOp32::JAL() -{ - g_System->DelayedJump((*_PROGRAM_COUNTER & 0xF0000000) + (m_Opcode.target << 2)); - g_System->DelayedJump((*_PROGRAM_COUNTER & 0xF0000000) + (m_Opcode.target << 2)); - _GPR[31].DW = (int32_t)(g_System->m_PipelineStage == PIPELINE_STAGE_JUMP_DELAY_SLOT ? g_System->m_JumpToLocation + 4 : *_PROGRAM_COUNTER + 8); -} - -void R4300iOp32::BEQ() -{ - if (_GPR[m_Opcode.rs].W[0] == _GPR[m_Opcode.rt].W[0]) - { - g_System->DelayedRelativeJump(((int16_t)m_Opcode.offset << 2) + 4); - } - else - { - g_System->DelayedJump(*_PROGRAM_COUNTER + 8); - } -} - -void R4300iOp32::BNE() -{ - if (_GPR[m_Opcode.rs].W[0] != _GPR[m_Opcode.rt].W[0]) - { - g_System->DelayedRelativeJump(((int16_t)m_Opcode.offset << 2) + 4); - } - else - { - g_System->DelayedJump(*_PROGRAM_COUNTER + 8); - } -} - -void R4300iOp32::BLEZ() -{ - if (_GPR[m_Opcode.rs].W[0] <= 0) - { - g_System->DelayedRelativeJump(((int16_t)m_Opcode.offset << 2) + 4); - } - else - { - g_System->DelayedJump(*_PROGRAM_COUNTER + 8); - } -} - -void R4300iOp32::BGTZ() -{ - if (_GPR[m_Opcode.rs].W[0] > 0) - { - g_System->DelayedRelativeJump(((int16_t)m_Opcode.offset << 2) + 4); - } - else - { - g_System->DelayedJump(*_PROGRAM_COUNTER + 8); - } -} - -void R4300iOp32::ADDI() -{ -#ifdef Interpreter_StackTest - if (m_Opcode.rs == 29 && m_Opcode.rt == 29) - { - StackValue += (int16_t)m_Opcode.immediate; - } -#endif - int32_t rs = _GPR[m_Opcode.rs].W[0]; - int32_t imm = (int16_t)m_Opcode.immediate; - int32_t sum = rs + imm; - if ((~(rs ^ imm) & (rs ^ sum)) & 0x80000000) - { - GenerateOverflowException(); - return; - } - _GPR[m_Opcode.rt].W[0] = sum; -#ifdef Interpreter_StackTest - if (m_Opcode.rt == 29 && m_Opcode.rs != 29) - { - StackValue = _GPR[m_Opcode.rt].W[0]; - } -#endif -} - -void R4300iOp32::ADDIU() -{ -#ifdef Interpreter_StackTest - if (m_Opcode.rs == 29 && m_Opcode.rt == 29) - { - StackValue += (int16_t)m_Opcode.immediate; - } -#endif - _GPR[m_Opcode.rt].W[0] = (_GPR[m_Opcode.rs].W[0] + ((int16_t)m_Opcode.immediate)); -#ifdef Interpreter_StackTest - if (m_Opcode.rt == 29 && m_Opcode.rs != 29) - { - StackValue = _GPR[m_Opcode.rt].W[0]; - } -#endif -} - -void R4300iOp32::SLTI() -{ - if (_GPR[m_Opcode.rs].W[0] < (int64_t)((int16_t)m_Opcode.immediate)) - { - _GPR[m_Opcode.rt].W[0] = 1; - } - else - { - _GPR[m_Opcode.rt].W[0] = 0; - } -} - -void R4300iOp32::SLTIU() -{ - int32_t imm32 = (int16_t)m_Opcode.immediate; - int64_t imm64; - - imm64 = imm32; - _GPR[m_Opcode.rt].W[0] = _GPR[m_Opcode.rs].UW[0] < (uint64_t)imm64 ? 1 : 0; -} - -void R4300iOp32::ANDI() -{ - _GPR[m_Opcode.rt].W[0] = _GPR[m_Opcode.rs].W[0] & m_Opcode.immediate; -} - -void R4300iOp32::ORI() -{ - _GPR[m_Opcode.rt].W[0] = _GPR[m_Opcode.rs].W[0] | m_Opcode.immediate; -} - -void R4300iOp32::XORI() -{ - _GPR[m_Opcode.rt].W[0] = _GPR[m_Opcode.rs].W[0] ^ m_Opcode.immediate; -} - -void R4300iOp32::LUI() -{ - _GPR[m_Opcode.rt].W[0] = (int32_t)((int16_t)m_Opcode.offset << 16); -#ifdef Interpreter_StackTest - if (m_Opcode.rt == 29) - { - StackValue = _GPR[m_Opcode.rt].W[0]; - } -#endif -} - -void R4300iOp32::BEQL() -{ - if (_GPR[m_Opcode.rs].W[0] == _GPR[m_Opcode.rt].W[0]) - { - g_System->DelayedRelativeJump(((int16_t)m_Opcode.offset << 2) + 4); - } - else - { - g_System->m_PipelineStage = PIPELINE_STAGE_JUMP; - g_System->m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; - } -} - -void R4300iOp32::BNEL() -{ - if (_GPR[m_Opcode.rs].W[0] != _GPR[m_Opcode.rt].W[0]) - { - g_System->DelayedRelativeJump(((int16_t)m_Opcode.offset << 2) + 4); - } - else - { - g_System->m_PipelineStage = PIPELINE_STAGE_JUMP; - g_System->m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; - } -} - -void R4300iOp32::BLEZL() -{ - if (_GPR[m_Opcode.rs].W[0] <= 0) - { - g_System->DelayedRelativeJump(((int16_t)m_Opcode.offset << 2) + 4); - } - else - { - g_System->m_PipelineStage = PIPELINE_STAGE_JUMP; - g_System->m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; - } -} - -void R4300iOp32::BGTZL() -{ - if (_GPR[m_Opcode.rs].W[0] > 0) - { - g_System->DelayedRelativeJump(((int16_t)m_Opcode.offset << 2) + 4); - } - else - { - g_System->m_PipelineStage = PIPELINE_STAGE_JUMP; - g_System->m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; - } -} - -void R4300iOp32::LB() -{ - uint32_t Address = _GPR[m_Opcode.base].UW[0] + (int16_t)m_Opcode.offset; - uint8_t MemoryValue; - if (g_MMU->LB_Memory(Address, MemoryValue)) - { - _GPR[m_Opcode.rt].W[0] = (int8_t)MemoryValue; - } -} - -void R4300iOp32::LH() -{ - uint32_t Address = _GPR[m_Opcode.base].UW[0] + (int16_t)m_Opcode.offset; - uint16_t MemoryValue; - if (g_MMU->LH_Memory(Address, MemoryValue)) - { - _GPR[m_Opcode.rt].W[0] = (int16_t)MemoryValue; - } -} - -void R4300iOp32::LWL() -{ - uint32_t Address = _GPR[m_Opcode.base].UW[0] + (int16_t)m_Opcode.offset, MemoryValue; - if (g_MMU->LW_Memory((Address & ~3), MemoryValue)) - { - uint32_t Offset = Address & 3; - _GPR[m_Opcode.rt].W[0] = (int32_t)(_GPR[m_Opcode.rt].W[0] & LWL_MASK[Offset]); - _GPR[m_Opcode.rt].W[0] += (int32_t)(MemoryValue << LWL_SHIFT[Offset]); - } -} - -void R4300iOp32::LW() -{ - uint32_t Address = _GPR[m_Opcode.base].UW[0] + (int16_t)m_Opcode.offset; - g_MMU->LW_Memory(Address, _GPR[m_Opcode.rt].UW[0]); -} - -void R4300iOp32::LBU() -{ - uint32_t Address = _GPR[m_Opcode.base].UW[0] + (int16_t)m_Opcode.offset; - uint8_t MemoryValue; - if (g_MMU->LB_Memory(Address, MemoryValue)) - { - _GPR[m_Opcode.rt].UW[0] = MemoryValue; - } -} - -void R4300iOp32::LHU() -{ - uint32_t Address = _GPR[m_Opcode.base].UW[0] + (int16_t)m_Opcode.offset; - uint16_t MemoryValue; - if (g_MMU->LH_Memory(Address, MemoryValue)) - { - _GPR[m_Opcode.rt].UW[0] = MemoryValue; - } -} - -void R4300iOp32::LWR() -{ - uint32_t Address = _GPR[m_Opcode.base].UW[0] + (int16_t)m_Opcode.offset, MemoryValue; - if (g_MMU->LW_Memory((Address & ~3), MemoryValue)) - { - uint32_t Offset = Address & 3; - _GPR[m_Opcode.rt].W[0] = (int32_t)(_GPR[m_Opcode.rt].W[0] & LWR_MASK[Offset]); - _GPR[m_Opcode.rt].W[0] += (int32_t)(MemoryValue >> LWR_SHIFT[Offset]); - } -} - -void R4300iOp32::LWU() -{ - uint32_t Address = _GPR[m_Opcode.base].UW[0] + (int16_t)m_Opcode.offset; - g_MMU->LW_Memory(Address, _GPR[m_Opcode.rt].UW[0]); -} - -void R4300iOp32::LL() -{ - uint32_t Address = _GPR[m_Opcode.base].UW[0] + (int16_t)m_Opcode.offset; - if (g_MMU->LW_Memory(Address, _GPR[m_Opcode.rt].UW[0])) - { - (*_LLBit) = 1; - } -} - -// R4300i opcodes: Special - -void R4300iOp32::SPECIAL_SLL() -{ - _GPR[m_Opcode.rd].W[0] = (_GPR[m_Opcode.rt].W[0] << m_Opcode.sa); -} - -void R4300iOp32::SPECIAL_SRL() -{ - _GPR[m_Opcode.rd].W[0] = (int32_t)(_GPR[m_Opcode.rt].UW[0] >> m_Opcode.sa); -} - -void R4300iOp32::SPECIAL_SRA() -{ - _GPR[m_Opcode.rd].W[0] = (_GPR[m_Opcode.rt].W[0] >> m_Opcode.sa); -} - -void R4300iOp32::SPECIAL_SLLV() -{ - _GPR[m_Opcode.rd].W[0] = (_GPR[m_Opcode.rt].W[0] << (_GPR[m_Opcode.rs].UW[0] & 0x1F)); -} - -void R4300iOp32::SPECIAL_SRLV() -{ - _GPR[m_Opcode.rd].W[0] = (int32_t)(_GPR[m_Opcode.rt].UW[0] >> (_GPR[m_Opcode.rs].UW[0] & 0x1F)); -} - -void R4300iOp32::SPECIAL_SRAV() -{ - _GPR[m_Opcode.rd].W[0] = (_GPR[m_Opcode.rt].W[0] >> (_GPR[m_Opcode.rs].UW[0] & 0x1F)); -} - -void R4300iOp32::SPECIAL_JALR() -{ - g_System->DelayedJump(_GPR[m_Opcode.rs].UW[0]); - _GPR[m_Opcode.rd].W[0] = g_System->m_PipelineStage == PIPELINE_STAGE_JUMP_DELAY_SLOT ? g_System->m_JumpToLocation + 4 : *_PROGRAM_COUNTER + 8; - m_TestTimer = true; -} - -void R4300iOp32::SPECIAL_ADD() -{ - int32_t rs = _GPR[m_Opcode.rs].W[0]; - int32_t rt = _GPR[m_Opcode.rt].W[0]; - int32_t sum = rs + rt; - if ((~(rs ^ rt) & (rs ^ sum)) & 0x80000000) - { - GenerateOverflowException(); - return; - } - _GPR[m_Opcode.rd].W[0] = sum; -} - -void R4300iOp32::SPECIAL_ADDU() -{ - _GPR[m_Opcode.rd].W[0] = _GPR[m_Opcode.rs].W[0] + _GPR[m_Opcode.rt].W[0]; -} - -void R4300iOp32::SPECIAL_SUB() -{ - int32_t rs = _GPR[m_Opcode.rs].W[0]; - int32_t rt = _GPR[m_Opcode.rt].W[0]; - int32_t sub = rs - rt; - - if (((rs ^ rt) & (rs ^ sub)) & 0x80000000) - { - GenerateOverflowException(); - return; - } - _GPR[m_Opcode.rd].W[0] = sub; -} - -void R4300iOp32::SPECIAL_SUBU() -{ - _GPR[m_Opcode.rd].W[0] = _GPR[m_Opcode.rs].W[0] - _GPR[m_Opcode.rt].W[0]; -} - -void R4300iOp32::SPECIAL_AND() -{ - _GPR[m_Opcode.rd].W[0] = _GPR[m_Opcode.rs].W[0] & _GPR[m_Opcode.rt].W[0]; -} - -void R4300iOp32::SPECIAL_OR() -{ - _GPR[m_Opcode.rd].W[0] = _GPR[m_Opcode.rs].W[0] | _GPR[m_Opcode.rt].W[0]; -#ifdef Interpreter_StackTest - if (m_Opcode.rd == 29) - { - StackValue = _GPR[m_Opcode.rd].W[0]; - } -#endif -} - -void R4300iOp32::SPECIAL_NOR() -{ - _GPR[m_Opcode.rd].W[0] = ~(_GPR[m_Opcode.rs].W[0] | _GPR[m_Opcode.rt].W[0]); -} - -void R4300iOp32::SPECIAL_SLT() -{ - if (_GPR[m_Opcode.rs].W[0] < _GPR[m_Opcode.rt].W[0]) - { - _GPR[m_Opcode.rd].W[0] = 1; - } - else - { - _GPR[m_Opcode.rd].W[0] = 0; - } -} - -void R4300iOp32::SPECIAL_SLTU() -{ - if (_GPR[m_Opcode.rs].UW[0] < _GPR[m_Opcode.rt].UW[0]) - { - _GPR[m_Opcode.rd].W[0] = 1; - } - else - { - _GPR[m_Opcode.rd].W[0] = 0; - } -} - -void R4300iOp32::SPECIAL_TEQ() -{ - if (_GPR[m_Opcode.rs].W[0] == _GPR[m_Opcode.rt].W[0] && CDebugSettings::HaveDebugger()) - { - g_Notify->DisplayError("Should we trap this?"); - } -} - -// R4300i opcodes: RegImm - -void R4300iOp32::REGIMM_BLTZ() -{ - if (_GPR[m_Opcode.rs].W[0] < 0) - { - g_System->DelayedRelativeJump(((int16_t)m_Opcode.offset << 2) + 4); - } - else - { - g_System->DelayedJump(*_PROGRAM_COUNTER + 8); - } -} - -void R4300iOp32::REGIMM_BGEZ() -{ - if (_GPR[m_Opcode.rs].W[0] >= 0) - { - g_System->DelayedRelativeJump(((int16_t)m_Opcode.offset << 2) + 4); - } - else - { - g_System->DelayedJump(*_PROGRAM_COUNTER + 8); - } -} - -void R4300iOp32::REGIMM_BLTZL() -{ - if (_GPR[m_Opcode.rs].W[0] < 0) - { - g_System->DelayedRelativeJump(((int16_t)m_Opcode.offset << 2) + 4); - } - else - { - g_System->m_PipelineStage = PIPELINE_STAGE_JUMP; - g_System->m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; - } -} - -void R4300iOp32::REGIMM_BGEZL() -{ - if (_GPR[m_Opcode.rs].W[0] >= 0) - { - g_System->DelayedRelativeJump(((int16_t)m_Opcode.offset << 2) + 4); - } - else - { - g_System->m_PipelineStage = PIPELINE_STAGE_JUMP; - g_System->m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; - } -} - -void R4300iOp32::REGIMM_BLTZAL() -{ - if (_GPR[m_Opcode.rs].W[0] < 0) - { - g_System->DelayedRelativeJump(((int16_t)m_Opcode.offset << 2) + 4); - } - else - { - g_System->DelayedJump(*_PROGRAM_COUNTER + 8); - } - _GPR[31].W[0] = g_System->m_PipelineStage == PIPELINE_STAGE_JUMP_DELAY_SLOT ? g_System->m_JumpToLocation + 4 : *_PROGRAM_COUNTER + 8; -} - -void R4300iOp32::REGIMM_BGEZAL() -{ - if (_GPR[m_Opcode.rs].W[0] >= 0) - { - g_System->DelayedRelativeJump(((int16_t)m_Opcode.offset << 2) + 4); - } - else - { - g_System->m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; - } - _GPR[31].W[0] = (int32_t)((*_PROGRAM_COUNTER) + 8); -} - -// COP0 functions - -void R4300iOp32::COP0_MF() -{ - _GPR[m_Opcode.rt].W[0] = (int32_t)g_Reg->Cop0_MF((CRegisters::COP0Reg)m_Opcode.rd); -} - -// COP1 functions - -void R4300iOp32::COP1_MF() -{ - TEST_COP1_USABLE_EXCEPTION - _GPR[m_Opcode.rt].W[0] = *(int32_t *)_FPR_S[m_Opcode.fs]; -} - -void R4300iOp32::COP1_CF() -{ - TEST_COP1_USABLE_EXCEPTION - if (m_Opcode.fs != 31 && m_Opcode.fs != 0) - { - if (CDebugSettings::HaveDebugger()) - { - g_Notify->DisplayError("CFC1: what register are you writing to?"); - } - return; - } - _GPR[m_Opcode.rt].W[0] = (int32_t)_FPCR[m_Opcode.fs]; -} - -void R4300iOp32::COP1_DMT() -{ - TEST_COP1_USABLE_EXCEPTION - *(int64_t *)_FPR_D[m_Opcode.fs] = _GPR[m_Opcode.rt].W[0]; -} \ No newline at end of file diff --git a/Source/Project64-core/N64System/Interpreter/InterpreterOps32.h b/Source/Project64-core/N64System/Interpreter/InterpreterOps32.h deleted file mode 100644 index 9794b9f5b..000000000 --- a/Source/Project64-core/N64System/Interpreter/InterpreterOps32.h +++ /dev/null @@ -1,73 +0,0 @@ -#pragma once - -#include - -class R4300iOp32 : - public R4300iOp -{ -public: - // Opcode functions - static void JAL(); - static void BEQ(); - static void BNE(); - static void BLEZ(); - static void BGTZ(); - static void ADDI(); - static void ADDIU(); - static void SLTI(); - static void SLTIU(); - static void ANDI(); - static void ORI(); - static void XORI(); - static void LUI(); - static void BEQL(); - static void BNEL(); - static void BLEZL(); - static void BGTZL(); - static void LB(); - static void LH(); - static void LWL(); - static void LW(); - static void LBU(); - static void LHU(); - static void LWR(); - static void LWU(); - static void LL(); - - // R4300i opcodes: Special - static void SPECIAL_SLL(); - static void SPECIAL_SRL(); - static void SPECIAL_SRA(); - static void SPECIAL_SLLV(); - static void SPECIAL_SRLV(); - static void SPECIAL_SRAV(); - static void SPECIAL_JALR(); - static void SPECIAL_ADD(); - static void SPECIAL_ADDU(); - static void SPECIAL_SUB(); - static void SPECIAL_SUBU(); - static void SPECIAL_AND(); - static void SPECIAL_OR(); - static void SPECIAL_NOR(); - static void SPECIAL_SLT(); - static void SPECIAL_SLTU(); - static void SPECIAL_TEQ(); - - // R4300i opcodes: RegImm - static void REGIMM_BLTZ(); - static void REGIMM_BGEZ(); - static void REGIMM_BLTZL(); - static void REGIMM_BGEZL(); - static void REGIMM_BLTZAL(); - static void REGIMM_BGEZAL(); - - // COP0 functions - static void COP0_MF(); - - // COP1 functions - static void COP1_MF(); - static void COP1_CF(); - static void COP1_DMT(); - - static Func * BuildInterpreter(); -}; diff --git a/Source/Project64-core/Project64-core.vcxproj b/Source/Project64-core/Project64-core.vcxproj index 3a93a7b1e..c8ccbe41e 100644 --- a/Source/Project64-core/Project64-core.vcxproj +++ b/Source/Project64-core/Project64-core.vcxproj @@ -58,7 +58,6 @@ - @@ -176,7 +175,6 @@ - diff --git a/Source/Project64-core/Project64-core.vcxproj.filters b/Source/Project64-core/Project64-core.vcxproj.filters index 756ba3871..b3edeb179 100644 --- a/Source/Project64-core/Project64-core.vcxproj.filters +++ b/Source/Project64-core/Project64-core.vcxproj.filters @@ -288,9 +288,6 @@ Source Files\N64 System\Interpreter - - Source Files\N64 System\Interpreter - Source Files\Multilanguage @@ -656,9 +653,6 @@ Header Files\N64 System\Interpreter - - Header Files\N64 System\Interpreter - Header Files\N64 System\Interpreter diff --git a/Source/Project64-core/Settings.cpp b/Source/Project64-core/Settings.cpp index b61e77474..4893f3d8a 100644 --- a/Source/Project64-core/Settings.cpp +++ b/Source/Project64-core/Settings.cpp @@ -132,7 +132,6 @@ void CSettings::AddHowToHandleSetting(const char * BaseDirectory) AddHandler(Default_ViRefreshRate, new CSettingTypeApplication("Defaults", "ViRefresh", 1500u)); AddHandler(Default_AiCountPerBytes, new CSettingTypeApplication("Defaults", "AiCountPerBytes", 0u)); AddHandler(Default_CounterFactor, new CSettingTypeApplication("Defaults", "Counter Factor", 2u)); - AddHandler(Default_32Bit, new CSettingTypeApplication("Defaults", "32bit", false)); AddHandler(Default_SyncViaAudio, new CSettingTypeApplication("Defaults", "Audio-Sync Audio", true)); AddHandler(Default_FixedAudio, new CSettingTypeApplication("Defaults", "Fixed Audio", true)); AddHandler(Default_UnalignedDMA, new CSettingTypeApplication("Defaults", "Unaligned DMA", false)); @@ -148,7 +147,7 @@ void CSettings::AddHowToHandleSetting(const char * BaseDirectory) AddHandler(Rdb_CounterFactor, new CSettingTypeRomDatabase("Counter Factor", Default_CounterFactor)); AddHandler(Rdb_DelayDP, new CSettingTypeRDBYesNo("Delay DP", true)); AddHandler(Rdb_DelaySi, new CSettingTypeRDBYesNo("Delay SI", false)); - AddHandler(Rdb_32Bit, new CSettingTypeRDBYesNo("32bit", Default_32Bit)); + AddHandler(Rdb_32Bit, new CSettingTypeRDBYesNo("32bit", false)); AddHandler(Rdb_FastSP, new CSettingTypeRDBYesNo("Fast SP", true)); AddHandler(Rdb_FixedAudio, new CSettingTypeRomDatabase("Fixed Audio", Default_FixedAudio)); AddHandler(Rdb_SyncViaAudio, new CSettingTypeRomDatabase("Audio-Sync Audio", Default_SyncViaAudio)); diff --git a/Source/Project64-core/Settings/SettingsID.h b/Source/Project64-core/Settings/SettingsID.h index a236d9f09..0eb4ea859 100644 --- a/Source/Project64-core/Settings/SettingsID.h +++ b/Source/Project64-core/Settings/SettingsID.h @@ -68,7 +68,6 @@ enum SettingID Default_ViRefreshRate, Default_AiCountPerBytes, Default_CounterFactor, - Default_32Bit, Default_SyncViaAudio, Default_FixedAudio, Default_UnalignedDMA, diff --git a/Source/Project64/UserInterface/Settings/SettingsPage-Defaults.cpp b/Source/Project64/UserInterface/Settings/SettingsPage-Defaults.cpp index 5c25b34db..33a02347b 100644 --- a/Source/Project64/UserInterface/Settings/SettingsPage-Defaults.cpp +++ b/Source/Project64/UserInterface/Settings/SettingsPage-Defaults.cpp @@ -15,7 +15,6 @@ CDefaultsOptionsPage::CDefaultsOptionsPage(HWND hParent, const RECT & rcDispay) SetDlgItemText(IDC_VIREFESH_TEXT, wGS(ROM_VIREFRESH).c_str()); SetDlgItemText(IDC_COUNTPERBYTE_TEXT, wGS(ROM_COUNTPERBYTE).c_str()); SetDlgItemText(IDC_COUNTFACT_TEXT, wGS(ROM_COUNTER_FACTOR).c_str()); - SetDlgItemText(IDC_ROM_32BIT, wGS(ROM_32BIT).c_str()); SetDlgItemText(IDC_ROM_FIXEDAUDIO, wGS(ROM_FIXED_AUDIO).c_str()); SetDlgItemText(IDC_SYNC_AUDIO, wGS(ROM_SYNC_AUDIO).c_str()); SetDlgItemText(IDC_UNALIGNED_DMA, wGS(ROM_UNALIGNED_DMA).c_str()); @@ -50,7 +49,6 @@ CDefaultsOptionsPage::CDefaultsOptionsPage(HWND hParent, const RECT & rcDispay) TxtBox->SetTextField(GetDlgItem(IDC_COUNTPERBYTE_TEXT)); AddModCheckBox(GetDlgItem(IDC_HLE_GFX), Default_UseHleGfx); - AddModCheckBox(GetDlgItem(IDC_ROM_32BIT), Default_32Bit); AddModCheckBox(GetDlgItem(IDC_SYNC_AUDIO), Default_SyncViaAudio); AddModCheckBox(GetDlgItem(IDC_ROM_FIXEDAUDIO), Default_FixedAudio); AddModCheckBox(GetDlgItem(IDC_UNALIGNED_DMA), Default_UnalignedDMA); diff --git a/Source/Project64/UserInterface/Settings/SettingsPage-Defaults.h b/Source/Project64/UserInterface/Settings/SettingsPage-Defaults.h index 7d7e35660..e12c66f51 100644 --- a/Source/Project64/UserInterface/Settings/SettingsPage-Defaults.h +++ b/Source/Project64/UserInterface/Settings/SettingsPage-Defaults.h @@ -7,7 +7,6 @@ class CDefaultsOptionsPage : BEGIN_MSG_MAP_EX(CDefaultsOptionsPage) { COMMAND_ID_HANDLER_EX(IDC_HLE_GFX, CheckBoxChanged); - COMMAND_ID_HANDLER_EX(IDC_ROM_32BIT, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_SYNC_AUDIO, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_ROM_FIXEDAUDIO, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_UNALIGNED_DMA, CheckBoxChanged); diff --git a/Source/Project64/UserInterface/Settings/SettingsPage-Game-General.cpp b/Source/Project64/UserInterface/Settings/SettingsPage-Game-General.cpp index 2611e038a..193666d7f 100644 --- a/Source/Project64/UserInterface/Settings/SettingsPage-Game-General.cpp +++ b/Source/Project64/UserInterface/Settings/SettingsPage-Game-General.cpp @@ -20,7 +20,6 @@ CGameGeneralPage::CGameGeneralPage(HWND hParent, const RECT & rcDispay) SetDlgItemText(IDC_COUNTPERBYTE_TEXT, wGS(ROM_COUNTPERBYTE).c_str()); SetDlgItemText(IDC_OVER_CLOCK_MODIFIER_TEXT, wGS(ROM_OVER_CLOCK_MODIFIER).c_str()); - SetDlgItemText(IDC_ROM_32BIT, wGS(ROM_32BIT).c_str()); SetDlgItemText(IDC_ROM_FIXEDAUDIO, wGS(ROM_FIXED_AUDIO).c_str()); SetDlgItemText(IDC_DELAY_DP, wGS(ROM_DELAY_DP).c_str()); SetDlgItemText(IDC_SYNC_AUDIO, wGS(ROM_SYNC_AUDIO).c_str()); @@ -29,7 +28,6 @@ CGameGeneralPage::CGameGeneralPage(HWND hParent, const RECT & rcDispay) SetDlgItemText(IDC_UNALIGNED_DMA, wGS(ROM_UNALIGNED_DMA).c_str()); SetDlgItemText(IDC_RANDOMIZE_SIPI_INTERRUPTS, wGS(ROM_RANDOMIZE_SIPI_INTERRUPTS).c_str()); - AddModCheckBox(GetDlgItem(IDC_ROM_32BIT), Game_32Bit); AddModCheckBox(GetDlgItem(IDC_SYNC_AUDIO), Game_SyncViaAudio); AddModCheckBox(GetDlgItem(IDC_ROM_FIXEDAUDIO), Game_FixedAudio); AddModCheckBox(GetDlgItem(IDC_DELAY_DP), Game_DelayDP); diff --git a/Source/Project64/UserInterface/Settings/SettingsPage-Game-General.h b/Source/Project64/UserInterface/Settings/SettingsPage-Game-General.h index c241374f5..8a53339aa 100644 --- a/Source/Project64/UserInterface/Settings/SettingsPage-Game-General.h +++ b/Source/Project64/UserInterface/Settings/SettingsPage-Game-General.h @@ -13,7 +13,6 @@ class CGameGeneralPage : COMMAND_HANDLER_EX(IDC_RDRAM_SIZE, LBN_SELCHANGE, ComboBoxChanged); COMMAND_HANDLER_EX(IDC_SAVE_TYPE, LBN_SELCHANGE, ComboBoxChanged); COMMAND_HANDLER_EX(IDC_COUNTFACT, LBN_SELCHANGE, ComboBoxChanged); - COMMAND_ID_HANDLER_EX(IDC_ROM_32BIT, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_SYNC_AUDIO, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_ROM_FIXEDAUDIO, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_DELAY_DP, CheckBoxChanged); diff --git a/Source/Project64/UserInterface/Settings/SettingsPage-Game-Recompiler.cpp b/Source/Project64/UserInterface/Settings/SettingsPage-Game-Recompiler.cpp index 376b66282..f36d2d6f7 100644 --- a/Source/Project64/UserInterface/Settings/SettingsPage-Game-Recompiler.cpp +++ b/Source/Project64/UserInterface/Settings/SettingsPage-Game-Recompiler.cpp @@ -17,6 +17,7 @@ CGameRecompilePage::CGameRecompilePage(HWND hParent, const RECT & rcDispay) SetDlgItemText(IDC_ROM_REGCACHE, wGS(ROM_REG_CACHE).c_str()); SetDlgItemText(IDC_BLOCK_LINKING, wGS(ADVANCE_ABL).c_str()); SetDlgItemText(IDC_ROM_FASTSP, wGS(ROM_FAST_SP).c_str()); + SetDlgItemText(IDC_ROM_32BIT, wGS(ROM_32BIT).c_str()); SetDlgItemText(IDC_SMM_FRAME, wGS(ADVANCE_SMCM).c_str()); SetDlgItemText(IDC_SMM_CACHE, wGS(ADVANCE_SMM_CACHE).c_str()); @@ -36,6 +37,7 @@ CGameRecompilePage::CGameRecompilePage(HWND hParent, const RECT & rcDispay) AddModCheckBox(GetDlgItem(IDC_SMM_PROTECT), Game_SMM_Protect); AddModCheckBox(GetDlgItem(IDC_SMM_STORE), Game_SMM_StoreInstruc); AddModCheckBox(GetDlgItem(IDC_ROM_FASTSP), Game_FastSP); + AddModCheckBox(GetDlgItem(IDC_ROM_32BIT), Game_32Bit); CModifiedComboBox * ComboBox; ComboBox = AddModComboBox(GetDlgItem(IDC_CPU_TYPE), Game_CpuType); diff --git a/Source/Project64/UserInterface/Settings/SettingsPage-Game-Recompiler.h b/Source/Project64/UserInterface/Settings/SettingsPage-Game-Recompiler.h index e88d9143e..603f691dd 100644 --- a/Source/Project64/UserInterface/Settings/SettingsPage-Game-Recompiler.h +++ b/Source/Project64/UserInterface/Settings/SettingsPage-Game-Recompiler.h @@ -12,6 +12,7 @@ class CGameRecompilePage : COMMAND_ID_HANDLER_EX(IDC_ROM_REGCACHE, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_ROM_FASTSP, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_BLOCK_LINKING, CheckBoxChanged); + COMMAND_ID_HANDLER_EX(IDC_ROM_32BIT, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_SMM_CACHE, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_SMM_DMA, CheckBoxChanged); COMMAND_ID_HANDLER_EX(IDC_SMM_VALIDATE, CheckBoxChanged); diff --git a/Source/Project64/UserInterface/Settings/SettingsPage-Options.cpp b/Source/Project64/UserInterface/Settings/SettingsPage-Options.cpp index 9d2892d6d..0a403ff3b 100644 --- a/Source/Project64/UserInterface/Settings/SettingsPage-Options.cpp +++ b/Source/Project64/UserInterface/Settings/SettingsPage-Options.cpp @@ -20,7 +20,6 @@ CGeneralOptionsPage::CGeneralOptionsPage(CSettingConfig * SettingsConfig, HWND h SetDlgItemText(IDC_ROMSEL_TEXT2, wGS(RB_ROMS).c_str()); SetDlgItemText(IDC_MAXROMDIR_TXT, wGS(RB_MAX_DIRS).c_str()); SetDlgItemText(IDC_ROMSEL_TEXT4, wGS(RB_DIRS).c_str()); - SetDlgItemText(IDC_IPLDIR_TXT, wGS(OPTION_IPL_ROM_PATH).c_str()); AddModCheckBox(GetDlgItem(IDC_AUTOSLEEP), (SettingID)Setting_AutoSleep); AddModCheckBox(GetDlgItem(IDC_LOAD_FULLSCREEN), (SettingID)Setting_AutoFullscreen); diff --git a/Source/Project64/UserInterface/UIResources.rc b/Source/Project64/UserInterface/UIResources.rc index e46cdf70f..47b58cc64 100644 --- a/Source/Project64/UserInterface/UIResources.rc +++ b/Source/Project64/UserInterface/UIResources.rc @@ -161,10 +161,10 @@ BEGIN CONTROL "Enable Discord Rich Presence",IDC_DISCORD_RPC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,54,206,10 CONTROL "Hide Advanced Settings",IDC_BASIC_MODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,69,206,10 CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME | SS_SUNKEN,4,84,208,1 - LTEXT "Max # of Roms Remembered (Max 10):",IDC_MAXROMS_TXT,6,92,142,10,SS_LEFT|WS_GROUP|SS_ENDELLIPSIS + LTEXT "Max # of Roms Remembered (Max 10):",IDC_MAXROMS_TXT,6,92,142,10,SS_ENDELLIPSIS EDITTEXT IDC_REMEMBER,148,90,26,12,ES_AUTOHSCROLL | ES_NUMBER LTEXT "roms",IDC_ROMSEL_TEXT2,178,93,31,10 - LTEXT "Max # of Rom Dirs Remembered (Max 10):",IDC_MAXROMDIR_TXT,6,107,142,10,SS_LEFT|WS_GROUP|SS_ENDELLIPSIS + LTEXT "Max # of Rom Dirs Remembered (Max 10):",IDC_MAXROMDIR_TXT,6,107,142,10,SS_ENDELLIPSIS EDITTEXT IDC_REMEMBERDIR,148,105,26,12,ES_AUTOHSCROLL | ES_NUMBER LTEXT "dirs",IDC_ROMSEL_TEXT4,178,109,34,10 END @@ -221,14 +221,13 @@ BEGIN LTEXT "Overclock Modifier",IDC_OVER_CLOCK_MODIFIER_TEXT,6,103,91,10 EDITTEXT IDC_OVER_CLOCK_MODIFIER,102,101,109,12,ES_AUTOHSCROLL | ES_NUMBER CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME | SS_SUNKEN,3,116,208,1 - CONTROL "32 Bit Engine",IDC_ROM_32BIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,121,91,10 + CONTROL "Fixed Audio Timing",IDC_ROM_FIXEDAUDIO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,121,91,10 CONTROL "Sync using Audio",IDC_SYNC_AUDIO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,102,121,91,10 - CONTROL "Fixed Audio Timing",IDC_ROM_FIXEDAUDIO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,132,91,10 + CONTROL "Delay DP Interrupt",IDC_DELAY_DP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,132,91,10 CONTROL "Delay SI Interrupt",IDC_DELAY_SI,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,102,132,91,10 - CONTROL "Delay DP Interrupt",IDC_DELAY_DP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,143,91,10 + CONTROL "RSP Audio Signal",IDC_AUDIO_SIGNAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,143,91,10 CONTROL "Randomize SI/PI interrupts",IDC_RANDOMIZE_SIPI_INTERRUPTS, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,102,143,107,10 - CONTROL "RSP Audio Signal",IDC_AUDIO_SIGNAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,154,91,10 CONTROL "Unaligned DMA",IDC_UNALIGNED_DMA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,102,154,91,10 END @@ -350,7 +349,8 @@ BEGIN CONTROL "Frame rate display",IDC_DISPLAY_FRAMERATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,128,86,10 COMBOBOX IDC_FRAME_DISPLAY_TYPE,101,129,99,57,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP CONTROL "Show Status Bar",IDC_SHOW_STATUS_BAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,142,189,10 - CONTROL "Exit Fullscreen on Lose Focus",IDC_EXIT_FULLSCREEN_ON_LOSE_FOCUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,156,189,10 + CONTROL "Exit Fullscreen on Lose Focus",IDC_EXIT_FULLSCREEN_ON_LOSE_FOCUS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,156,189,10 END IDD_Settings_ShellInt DIALOGEX 0, 0, 231, 206 @@ -564,17 +564,18 @@ BEGIN COMBOBOX IDC_CPU_TYPE,113,8,99,49,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "Function lookup method:",IDC_FUNCFIND_TEXT,4,27,106,10 COMBOBOX IDC_FUNCFIND,113,25,99,49,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Register caching",IDC_ROM_REGCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,49,95,10 - GROUPBOX "Self Mod Methods",IDC_SMM_FRAME,4,79,208,54 - CONTROL "Cache",IDC_SMM_CACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,91,89,10 - CONTROL "PI DMA",IDC_SMM_DMA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,103,89,10 - CONTROL "Start Changed",IDC_SMM_VALIDATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,115,89,10 - CONTROL "Protect Memory",IDC_SMM_PROTECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,116,115,89,10 - CONTROL "TLB Unmapping",IDC_SMM_TLB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,116,103,89,10 CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME | SS_SUNKEN,6,42,208,1 + CONTROL "Register caching",IDC_ROM_REGCACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,49,95,10 CONTROL "Advanced Block Linking",IDC_BLOCK_LINKING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,113,49,95,10 CONTROL "Fast SP",IDC_ROM_FASTSP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,62,91,10 + CONTROL "32 Bit Engine",IDC_ROM_32BIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,113,62,95,10 + GROUPBOX "Self Mod Methods",IDC_SMM_FRAME,4,79,208,54 + CONTROL "Cache",IDC_SMM_CACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,91,89,10 CONTROL "Store Instruction",IDC_SMM_STORE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,116,91,89,10 + CONTROL "PI DMA",IDC_SMM_DMA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,103,89,10 + CONTROL "TLB Unmapping",IDC_SMM_TLB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,116,103,89,10 + CONTROL "Start Changed",IDC_SMM_VALIDATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,115,89,10 + CONTROL "Protect Memory",IDC_SMM_PROTECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,116,115,89,10 END IDD_Settings_GamePlugin DIALOGEX 0, 0, 231, 206 @@ -1241,14 +1242,13 @@ BEGIN EDITTEXT IDC_COUNTPERBYTE,102,51,109,12,ES_AUTOHSCROLL | ES_NUMBER LTEXT "Disk Seek Timing:",IDC_DISKSEEKTIMING_TEXT1,6,67,91,10 COMBOBOX IDC_DISKSEEKTIMING,102,65,109,49,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "32 Bit Engine",IDC_ROM_32BIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,80,91,10 + CONTROL "Fixed Audio Timing",IDC_ROM_FIXEDAUDIO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,80,91,10 CONTROL "Sync using Audio",IDC_SYNC_AUDIO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,102,80,91,10 - CONTROL "Fixed Audio Timing",IDC_ROM_FIXEDAUDIO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,92,91,10 + CONTROL "Use High Level GFX",IDC_HLE_GFX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,92,91,10 CONTROL "Randomize SI/PI interrupts",IDC_RANDOMIZE_SIPI_INTERRUPTS, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,102,92,107,10 - CONTROL "Use High Level GFX",IDC_HLE_GFX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,104,91,10 + CONTROL "Unaligned DMA",IDC_UNALIGNED_DMA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,104,91,10 CONTROL "Protect Memory",IDC_PROTECT_MEMORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,102,104,91,10 - CONTROL "Unaligned DMA",IDC_UNALIGNED_DMA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,116,91,10 END IDD_Enhancement_Config DIALOGEX 0, 0, 206, 214 @@ -2312,6 +2312,11 @@ BEGIN 0 END +IDD_Settings_GameRecompiler AFX_DIALOG_LAYOUT +BEGIN + 0 +END + ///////////////////////////////////////////////////////////////////////////// // diff --git a/Source/Project64/UserInterface/resource.h b/Source/Project64/UserInterface/resource.h index 93d15ced3..a5b8fe8b8 100644 --- a/Source/Project64/UserInterface/resource.h +++ b/Source/Project64/UserInterface/resource.h @@ -52,7 +52,6 @@ #define IDD_Debugger_Symbols 172 #define IDD_Debugger_AddSymbol 174 #define IDR_MEM_BP_POPUP 177 -#define IDR_JSAPI_TEXT 181 #define IDD_Debugger_DMALog 182 #define IDD_Debugger_StackTrace 184 #define IDD_Debugger_RegCOP0 185 @@ -116,7 +115,6 @@ #define IDC_LIST 1012 #define IDC_HLE_AUDIO 1012 #define IDC_SMM_CACHE 1012 -#define IDC_ROM_32BIT 1012 #define IDC_INFO_COUNTRY 1013 #define IDC_SHIFT 1013 #define IDC_TLB 1013 @@ -127,6 +125,7 @@ #define IDC_INFO_CRC1 1014 #define IDC_ASSIGNED_MENU_ITEM 1014 #define IDC_TLB_RULES 1014 +#define IDC_ROM_32BIT 1014 #define IDC_INFO_CRC2 1015 #define IDC_GOOD_NAME 1015 #define GFX_LIST 1016 @@ -205,33 +204,21 @@ #define IDC_UP 1069 #define IDC_AUTO_OTHER 1070 #define IDC_DOWN 1070 -#define IDC_TEAM 1070 #define IDC_AUTO_DIR 1071 -#define IDC_ZILMAR_DETAILS 1071 #define IDC_ABOUT_PROJECT 1071 #define IDC_AUTO_DEFAULT 1072 -#define IDC_JABO_DETAILS 1072 #define IDC_SELECT_AUTO_DIR 1073 -#define IDC_SMIFF_DETAILS 1073 #define IDC_INSTANT_OTHER 1074 -#define IDC_GENT_DETAILS 1074 #define IDC_INSTANT_DIR 1075 -#define IDC_ZILMAR 1075 #define IDC_INSTANT_DEFAULT 1076 -#define IDC_JABO 1076 #define IDC_SELECT_INSTANT_DIR 1077 -#define IDC_SMIFF 1077 #define IDC_SNAP_OTHER 1078 -#define IDC_GENT 1078 #define IDC_SNAP_DIR 1079 -#define IDC_THANKS 1079 #define IDC_THANKS_CORE 1079 #define IDC_SNAP_DEFAULT 1080 -#define IDC_THANK_LIST 1080 #define IDC_CORE_THANK_LIST 1080 #define IDC_SELECT_SNAP_DIR 1081 #define IDC_THANKYOU 1081 -#define IDC_THANK_LIST2 1082 #define IDC_THANKYOU_LIST 1082 #define IDC_START_ON_ROM_OPEN 1084 #define IDC_BMP_LOGO 1084 @@ -416,7 +403,6 @@ #define IDC_F15_EDIT 1219 #define IDC_F16_EDIT 1220 #define IDC_F17_EDIT 1221 -#define IDC_IPLDIR_TXT 1222 #define IDC_F18_EDIT 1222 #define IDC_F19_EDIT 1223 #define IDC_F20_EDIT 1224 @@ -464,7 +450,6 @@ #define IDC_EXPORT_BTN 1305 #define IDC_RUN_BTN 1305 #define IDC_DMA_ROM_EDIT 1306 -#define IDC_STOP_BTN 1306 #define IDC_TRACE_STATIC 1307 #define IDC_RAM_STATIC 1308 #define IDC_ROM_STATIC 1309 @@ -724,7 +709,6 @@ #define IDC_F8_LBL 1583 #define IDC_BTN_PLUGIN 1583 #define IDC_F9_LBL 1584 -#define IDC_LIST1 1584 #define IDC_PLUGIN_LIST 1584 #define IDC_F10_LBL 1585 #define IDC_ADD_EDIT 1585 @@ -869,7 +853,6 @@ #define IDC_CANCEL 1724 #define IDC_APPLY 1725 #define IDC_RADIO_GLIDEN64 1728 -#define IDC_RADIO_JABO 1729 #define IDC_RADIO_PJ64_VIDEO 1729 #define IDC_REMOVE_BTN 1734 #define IDC_ADD_BTN 1735 @@ -946,7 +929,7 @@ // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 227 +#define _APS_NEXT_RESOURCE_VALUE 228 #define _APS_NEXT_COMMAND_VALUE 40122 #define _APS_NEXT_CONTROL_VALUE 1738 #define _APS_NEXT_SYMED_VALUE 102