This accidentally worked as long as the Sound CPU program did not do
meaningful stack manipulation. Indeed, none of the Sound CPU programs
I have written so far do anything with the stack.
Despite this "accidentally working" on real hardware, mednafen's m68k
emulation appears to "stall" the Sound CPU when the stack pointer
wraps around to a memory that does not exist.
This table was originally written when I was first learning about the
Saturn "sound block" memory map. I did not know exactly how large the
installed sound RAM was, as the manual mentions 8Mbit, 4Mbit, and
1Mbit as being possibilities. Now that I know the production Saturns
have 4Mbit installed, I am able to come up with a reasonable value for
the stack pointer.
This makes the m68k make rules usable from other makefiles.
This also adds scsp start address macros.
The sound.c example-fragment is deleted, as a better version now exists
in saturn-examples.
It appears much more convenient to access oreg in particular via an "index
variable". To avoid repeated boilerplate, add the accessor here as a c++
operator overload. This makes smpc.h c++-only. With defines guarding the
overload, it could be reduced to C again, though I decided I don't want to
bother with testing that.
- add code loading for m68k
- incomplete scsp experiments
- the register definitions should be fairly complete,
though I did not produce actual sound yet
- fix type.h definitions
- incomplete cdblock register definitions