summaryrefslogtreecommitdiff
path: root/src/cpu/6502.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/6502.c')
-rw-r--r--src/cpu/6502.c14
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