aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArisotura <thetotalworm@gmail.com>2022-01-28 20:56:08 +0100
committerArisotura <thetotalworm@gmail.com>2022-01-28 20:56:08 +0100
commit0761fe736f1efb633c8c2b947f53176309961dbb (patch)
treee3a5e7cba7a5db98db47a9b4fa24b8e0a232cc91
parent915edd777e2f94c8fd01e2d43e54deb34471a98c (diff)
add support for zero-address in AR codes 3-A
-rw-r--r--src/AREngine.cpp32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/AREngine.cpp b/src/AREngine.cpp
index f202f41..0605d28 100644
--- a/src/AREngine.cpp
+++ b/src/AREngine.cpp
@@ -148,7 +148,9 @@ void RunCheat(ARCode& arcode)
condstack <<= 1;
condstack |= cond;
- u32 chk = BusRead32(a & 0x0FFFFFFF);
+ u32 addr = a & 0x0FFFFFFF;
+ if (!addr) addr = offset;
+ u32 chk = BusRead32(addr);
cond = (b > chk) ? 1:0;
}
@@ -159,7 +161,9 @@ void RunCheat(ARCode& arcode)
condstack <<= 1;
condstack |= cond;
- u32 chk = BusRead32(a & 0x0FFFFFFF);
+ u32 addr = a & 0x0FFFFFFF;
+ if (!addr) addr = offset;
+ u32 chk = BusRead32(addr);
cond = (b < chk) ? 1:0;
}
@@ -170,7 +174,9 @@ void RunCheat(ARCode& arcode)
condstack <<= 1;
condstack |= cond;
- u32 chk = BusRead32(a & 0x0FFFFFFF);
+ u32 addr = a & 0x0FFFFFFF;
+ if (!addr) addr = offset;
+ u32 chk = BusRead32(addr);
cond = (b == chk) ? 1:0;
}
@@ -181,7 +187,9 @@ void RunCheat(ARCode& arcode)
condstack <<= 1;
condstack |= cond;
- u32 chk = BusRead32(a & 0x0FFFFFFF);
+ u32 addr = a & 0x0FFFFFFF;
+ if (!addr) addr = offset;
+ u32 chk = BusRead32(addr);
cond = (b != chk) ? 1:0;
}
@@ -192,7 +200,9 @@ void RunCheat(ARCode& arcode)
condstack <<= 1;
condstack |= cond;
- u16 val = BusRead16(a & 0x0FFFFFFF);
+ u32 addr = a & 0x0FFFFFFF;
+ if (!addr) addr = offset;
+ u16 val = BusRead16(addr);
u16 chk = ~(b >> 16);
chk &= val;
@@ -205,7 +215,9 @@ void RunCheat(ARCode& arcode)
condstack <<= 1;
condstack |= cond;
- u16 val = BusRead16(a & 0x0FFFFFFF);
+ u32 addr = a & 0x0FFFFFFF;
+ if (!addr) addr = offset;
+ u16 val = BusRead16(addr);
u16 chk = ~(b >> 16);
chk &= val;
@@ -218,7 +230,9 @@ void RunCheat(ARCode& arcode)
condstack <<= 1;
condstack |= cond;
- u16 val = BusRead16(a & 0x0FFFFFFF);
+ u32 addr = a & 0x0FFFFFFF;
+ if (!addr) addr = offset;
+ u16 val = BusRead16(addr);
u16 chk = ~(b >> 16);
chk &= val;
@@ -231,7 +245,9 @@ void RunCheat(ARCode& arcode)
condstack <<= 1;
condstack |= cond;
- u16 val = BusRead16(a & 0x0FFFFFFF);
+ u32 addr = a & 0x0FFFFFFF;
+ if (!addr) addr = offset;
+ u16 val = BusRead16(addr);
u16 chk = ~(b >> 16);
chk &= val;