aboutsummaryrefslogtreecommitdiff
path: root/source/apu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/apu.cpp')
-rw-r--r--source/apu.cpp35
1 files changed, 13 insertions, 22 deletions
diff --git a/source/apu.cpp b/source/apu.cpp
index 3c1a5d3..769d2bc 100644
--- a/source/apu.cpp
+++ b/source/apu.cpp
@@ -116,18 +116,14 @@ void S9xTraceSoundDSP (const char *s, int i1 = 0, int i2 = 0, int i3 = 0,
bool8 S9xInitAPU ()
{
IAPU.RAM = (uint8 *) malloc (0x10000);
- IAPU.ShadowRAM = (uint8 *) malloc (0x10000);
- IAPU.CachedSamples = (uint8 *) malloc (0x40000);
- if (!IAPU.RAM || !IAPU.ShadowRAM || !IAPU.CachedSamples)
+ if (!IAPU.RAM)
{
S9xDeinitAPU ();
return (FALSE);
}
memset(IAPU.RAM, 0, 0x10000);
- memset(IAPU.ShadowRAM, 0, 0x10000);
- memset(IAPU.CachedSamples, 0, 0x40000);
return (TRUE);
}
@@ -139,16 +135,6 @@ void S9xDeinitAPU ()
free ((char *) IAPU.RAM);
IAPU.RAM = NULL;
}
- if (IAPU.ShadowRAM)
- {
- free ((char *) IAPU.ShadowRAM);
- IAPU.ShadowRAM = NULL;
- }
- if (IAPU.CachedSamples)
- {
- free ((char *) IAPU.CachedSamples);
- IAPU.CachedSamples = NULL;
- }
}
EXTERN_C uint8 APUROM [64];
@@ -171,14 +157,15 @@ void S9xResetAPU ()
{
memcpy(IAPU.RAM+(i<<8), IAPU.RAM, 0x100);
}
-
- memcpy (IAPU.ShadowRAM, IAPU.RAM, 0x10000);
- ZeroMemory (IAPU.CachedSamples, 0x40000);
ZeroMemory (APU.OutPorts, 4);
IAPU.DirectPage = IAPU.RAM;
- memmove (&IAPU.RAM [0xffc0], APUROM, sizeof (APUROM));
- memmove (APU.ExtraRAM, APUROM, sizeof (APUROM));
+ // memmove converted: Different mallocs [Neb]
+ // DS2 DMA notes: The APU ROM is not 32-byte aligned [Neb]
+ memcpy (&IAPU.RAM [0xffc0], APUROM, sizeof (APUROM));
+ // memmove converted: Different mallocs [Neb]
+ // DS2 DMA notes: The APU ROM is not 32-byte aligned [Neb]
+ memcpy (APU.ExtraRAM, APUROM, sizeof (APUROM));
IAPU.PC = IAPU.RAM + IAPU.RAM [0xfffe] + (IAPU.RAM [0xffff] << 8);
APU.Cycles = 0;
IAPU.Registers.YA.W = 0;
@@ -874,7 +861,9 @@ void S9xSetAPUControl (uint8 byte)
{
if (!APU.ShowROM)
{
- memmove (&IAPU.RAM [0xffc0], APUROM, sizeof (APUROM));
+ // memmove converted: Different mallocs [Neb]
+ // DS2 DMA notes: The APU ROM is not 32-byte aligned [Neb]
+ memcpy (&IAPU.RAM [0xffc0], APUROM, sizeof (APUROM));
APU.ShowROM = TRUE;
}
}
@@ -883,7 +872,9 @@ void S9xSetAPUControl (uint8 byte)
if (APU.ShowROM)
{
APU.ShowROM = FALSE;
- memmove (&IAPU.RAM [0xffc0], APU.ExtraRAM, sizeof (APUROM));
+ // memmove converted: Different mallocs [Neb]
+ // DS2 DMA notes: The APU ROM is not 32-byte aligned [Neb]
+ memcpy (&IAPU.RAM [0xffc0], APU.ExtraRAM, sizeof (APUROM));
}
}
IAPU.RAM [0xf1] = byte;