diff options
author | Arisotura <thetotalworm@gmail.com> | 2022-04-10 15:11:30 +0200 |
---|---|---|
committer | Arisotura <thetotalworm@gmail.com> | 2022-04-10 15:11:30 +0200 |
commit | 529a6900896618fee9f5d85e3e5fa12d5973871c (patch) | |
tree | 9f9a726499c12b45271329194d517bbf653f3be3 | |
parent | 0294bcb5f225846ca5b94ad023bb0f7598aba195 (diff) |
fix potential issues with 32bit GPU writes
-rw-r--r-- | src/GPU2D.cpp | 49 |
1 files changed, 25 insertions, 24 deletions
diff --git a/src/GPU2D.cpp b/src/GPU2D.cpp index edc1673..eda3e32 100644 --- a/src/GPU2D.cpp +++ b/src/GPU2D.cpp @@ -532,31 +532,32 @@ void Unit::Write32(u32 addr, u32 val) return; } - if (!Enabled) return; - - switch (addr & 0x00000FFF) + if (Enabled) { - case 0x028: - if (val & 0x08000000) val |= 0xF0000000; - BGXRef[0] = val; - if (GPU::VCount < 192) BGXRefInternal[0] = BGXRef[0]; - return; - case 0x02C: - if (val & 0x08000000) val |= 0xF0000000; - BGYRef[0] = val; - if (GPU::VCount < 192) BGYRefInternal[0] = BGYRef[0]; - return; - - case 0x038: - if (val & 0x08000000) val |= 0xF0000000; - BGXRef[1] = val; - if (GPU::VCount < 192) BGXRefInternal[1] = BGXRef[1]; - return; - case 0x03C: - if (val & 0x08000000) val |= 0xF0000000; - BGYRef[1] = val; - if (GPU::VCount < 192) BGYRefInternal[1] = BGYRef[1]; - return; + switch (addr & 0x00000FFF) + { + case 0x028: + if (val & 0x08000000) val |= 0xF0000000; + BGXRef[0] = val; + if (GPU::VCount < 192) BGXRefInternal[0] = BGXRef[0]; + return; + case 0x02C: + if (val & 0x08000000) val |= 0xF0000000; + BGYRef[0] = val; + if (GPU::VCount < 192) BGYRefInternal[0] = BGYRef[0]; + return; + + case 0x038: + if (val & 0x08000000) val |= 0xF0000000; + BGXRef[1] = val; + if (GPU::VCount < 192) BGXRefInternal[1] = BGXRef[1]; + return; + case 0x03C: + if (val & 0x08000000) val |= 0xF0000000; + BGYRef[1] = val; + if (GPU::VCount < 192) BGYRefInternal[1] = BGYRef[1]; + return; + } } Write16(addr, val&0xFFFF); |