aboutsummaryrefslogtreecommitdiff
path: root/source/apumem.h
diff options
context:
space:
mode:
authorJoão Silva2017-01-24 20:32:46 +0000
committerJoão Silva2017-01-24 20:34:46 +0000
commitd8b66ac6d0524b3538ad595825651b28329f9033 (patch)
treeadfe26e0b4277bae4a3c4f8219c5912d4fcba830 /source/apumem.h
parent47d3fc8ce090ec6ca06ff4e27dcf7db09588dae0 (diff)
downloadsnesemu-d8b66ac6d0524b3538ad595825651b28329f9033.tar.gz
snesemu-d8b66ac6d0524b3538ad595825651b28329f9033.tar.bz2
snesemu-d8b66ac6d0524b3538ad595825651b28329f9033.zip
Sound improvements - some by me, most from snes9x2002 and snes9x 1.51.
Diffstat (limited to 'source/apumem.h')
-rw-r--r--source/apumem.h40
1 files changed, 16 insertions, 24 deletions
diff --git a/source/apumem.h b/source/apumem.h
index 74594d6..8a9f09a 100644
--- a/source/apumem.h
+++ b/source/apumem.h
@@ -67,32 +67,24 @@ INLINE uint8_t S9xAPUGetByte(uint32_t Address)
{
Address &= 0xffff;
- if (Address <= 0xff && Address >= 0xf0)
- {
- if (Address >= 0xf4 && Address <= 0xf7)
- {
-#ifdef SPC700_SHUTDOWN
- IAPU.WaitAddress2 = IAPU.WaitAddress1;
- IAPU.WaitAddress1 = IAPU.PC;
-#endif
- return (IAPU.RAM [Address]);
- }
- else if (Address == 0xf3)
- return (S9xGetAPUDSP());
- if (Address >= 0xfd)
- {
+ if (Address == 0xf3)
+ return S9xGetAPUDSP();
+
+ bool zero = (Address >= 0xfd && Address <= 0xff);
+ uint8_t t = IAPU.RAM [Address];
+
#ifdef SPC700_SHUTDOWN
- IAPU.WaitAddress2 = IAPU.WaitAddress1;
- IAPU.WaitAddress1 = IAPU.PC;
-#endif
- uint8_t t = IAPU.RAM [Address];
- IAPU.RAM [Address] = 0;
- return (t);
- }
- return (IAPU.RAM [Address]);
+ if (zero || (Address >= 0xf4 && Address <= 0xf7))
+ {
+ IAPU.WaitAddress2 = IAPU.WaitAddress1;
+ IAPU.WaitAddress1 = IAPU.PC;
}
- else
- return (IAPU.RAM [Address]);
+#endif
+
+ if(zero)
+ IAPU.RAM [Address] = 0;
+
+ return t;
}
INLINE void S9xAPUSetByte(uint8_t byte, uint32_t Address)