diff options
Diffstat (limited to 'src/cpu')
-rw-r--r-- | src/cpu/6502.c | 14 | ||||
-rw-r--r-- | src/cpu/instructions.c | 2 |
2 files changed, 7 insertions, 9 deletions
diff --git a/src/cpu/6502.c b/src/cpu/6502.c index ab8248e..366882f 100644 --- a/src/cpu/6502.c +++ b/src/cpu/6502.c @@ -40,15 +40,13 @@ void SetFlagN(byte x){ P = (x & flag_N) | (P & ~flag_N); } -//Perform prior to any changes +//Perform prior to any changes TODO: FIX THIS! WTF WERE YOU THINKING? void SetFlagV(byte x, byte y){ - if ((x & flag_N) == (y & flag_N)){ - if (((x + y) & (flag_N ^ 0xFF)) > 0x7F) SetFlag(flag_V, 1); - else SetFlag(flag_V, 0); - }else{ - if (((x - y) & (flag_N ^ 0xFF)) > 0x7F) SetFlag(flag_V, 1); - else SetFlag(flag_V, 0); - } + address z = (address)x + (address)y; + if (z > 0xFF) + SetFlag(flag_V, 1); + else + SetFlag(flag_V, 0); } /*void SetFlagB(){ //WORK ON diff --git a/src/cpu/instructions.c b/src/cpu/instructions.c index c043ac4..cf69fc2 100644 --- a/src/cpu/instructions.c +++ b/src/cpu/instructions.c @@ -136,7 +136,7 @@ void fEOR(Addressing addr, address val){ // Jump, Branch, Compare, and Test Bits void fJMP(Addressing addr, address val){ - PC = val; + PC = val; PC -= 2; } void fBCC(Addressing addr, address val){ //FINISH ALL BRANCH INSTRUCTIONS |