diff options
Diffstat (limited to 'src/cpu/6502.c')
-rw-r--r-- | src/cpu/6502.c | 14 |
1 files changed, 6 insertions, 8 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 |