From 42d265a25c9990039616c3784d9a44605c89e742 Mon Sep 17 00:00:00 2001 From: tomcw Date: Fri, 19 Jun 2020 19:40:23 +0100 Subject: [PATCH] Fixed timing for 6502 opcodes: rol abs,x; lsr abs,x; ror abs,x. (Fixes #801) --- source/CPU/cpu6502.h | 6 +++--- test/TestCPU6502/TestCPU6502.cpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/source/CPU/cpu6502.h b/source/CPU/cpu6502.h index 29b8452b..20bf4f5a 100644 --- a/source/CPU/cpu6502.h +++ b/source/CPU/cpu6502.h @@ -120,7 +120,7 @@ static DWORD Cpu6502(DWORD uTotalCycles, const bool bVideoUpdate) case 0x3B: $ ABSY_CONST RLA CYC(7) break; case 0x3C: $ ABSX_OPT NOP CYC(4) break; case 0x3D: ABSX_OPT AND CYC(4) break; - case 0x3E: ABSX_CONST ROLn CYC(6) break; + case 0x3E: ABSX_CONST ROLn CYC(7) break; case 0x3F: $ ABSX_CONST RLA CYC(7) break; case 0x40: RTI CYC(6) DoIrqProfiling(uExecutedCycles); break; case 0x41: idx EOR CYC(6) break; @@ -152,7 +152,7 @@ static DWORD Cpu6502(DWORD uTotalCycles, const bool bVideoUpdate) case 0x5B: $ ABSY_CONST LSE CYC(7) break; case 0x5C: $ ABSX_OPT NOP CYC(4) break; case 0x5D: ABSX_OPT EOR CYC(4) break; - case 0x5E: ABSX_CONST LSRn CYC(6) break; + case 0x5E: ABSX_CONST LSRn CYC(7) break; case 0x5F: $ ABSX_CONST LSE CYC(7) break; case 0x60: RTS CYC(6) break; case 0x61: idx ADCn CYC(6) break; @@ -184,7 +184,7 @@ static DWORD Cpu6502(DWORD uTotalCycles, const bool bVideoUpdate) case 0x7B: $ ABSY_CONST RRA CYC(7) break; case 0x7C: $ ABSX_OPT NOP CYC(4) break; case 0x7D: ABSX_OPT ADCn CYC(4) break; - case 0x7E: ABSX_CONST RORn CYC(6) break; + case 0x7E: ABSX_CONST RORn CYC(7) break; case 0x7F: $ ABSX_CONST RRA CYC(7) break; case 0x80: $ IMM NOP CYC(2) break; case 0x81: idx STA CYC(6) break; diff --git a/test/TestCPU6502/TestCPU6502.cpp b/test/TestCPU6502/TestCPU6502.cpp index 2e869469..57846a4d 100644 --- a/test/TestCPU6502/TestCPU6502.cpp +++ b/test/TestCPU6502/TestCPU6502.cpp @@ -374,7 +374,7 @@ const BYTE g_OpcodeTimings[256][4] = {7,7,1,1}, // 3B {4,5,4,5}, // 3C {4,5,4,5}, // 3D - {6,6,6,7}, // 3E + {7,7,6,7}, // 3E {7,7,1,1}, // 3F {6,6,6,6}, // 40 {6,6,6,6}, // 41 @@ -406,7 +406,7 @@ const BYTE g_OpcodeTimings[256][4] = {7,7,1,1}, // 5B {4,5,8,8}, // 5C {4,5,4,5}, // 5D - {6,6,6,7}, // 5E + {7,7,6,7}, // 5E {7,7,1,1}, // 5F {6,6,6,6}, // 60 {6,6,6,6}, // 61 @@ -438,7 +438,7 @@ const BYTE g_OpcodeTimings[256][4] = {7,7,1,1}, // 7B {4,5,6,6}, // 7C {4,5,4,5}, // 7D - {6,6,6,7}, // 7E + {7,7,6,7}, // 7E {7,7,1,1}, // 7F {2,2,3,3}, // 80 {6,6,6,6}, // 81