diff options
author | Arisotura <thetotalworm@gmail.com> | 2022-01-28 20:56:08 +0100 |
---|---|---|
committer | Arisotura <thetotalworm@gmail.com> | 2022-01-28 20:56:08 +0100 |
commit | 0761fe736f1efb633c8c2b947f53176309961dbb (patch) | |
tree | e3a5e7cba7a5db98db47a9b4fa24b8e0a232cc91 /src | |
parent | 915edd777e2f94c8fd01e2d43e54deb34471a98c (diff) |
add support for zero-address in AR codes 3-A
Diffstat (limited to 'src')
-rw-r--r-- | src/AREngine.cpp | 32 |
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; |