diff options
author | Javier de Silóniz Sandino <javier.s.s@47deg.com> | 2021-04-09 12:12:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-09 12:12:32 +0200 |
commit | 4ca1b9ab0aab0e4395409b301a461fd3b7ec70d0 (patch) | |
tree | 182b698d86172ad631f8b7d78d76f5e006c79659 | |
parent | 55e356f13abb10d336315a53d9f4dc9e2a92302d (diff) |
Adding technical details on the SVP chip internal ROM and fixing start address (#7944)
-rw-r--r-- | src/devices/bus/megadrive/svp.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/devices/bus/megadrive/svp.cpp b/src/devices/bus/megadrive/svp.cpp index 8c5fd0f87b3..7850f9d3a80 100644 --- a/src/devices/bus/megadrive/svp.cpp +++ b/src/devices/bus/megadrive/svp.cpp @@ -27,6 +27,26 @@ * TODO: internal ROM has been dumped but isn't used yet */ +/* + * Regarding `svp.bin`: + * + * There's an internal ROM inside the SVP chip which it's accessible by the DSP's + * "internal view" (i.e.: not using the external registers) from 0xFC00 to 0xFFFF + * (in word space, byte space addresses would be 0x1F800 - 0x1FFFE). + * + * Most of what's in that ROM (dumped as `svp.bin`) are routines not used by + * Virtua Racing. But part of it is actually used by the game: + * + * - Reset int. vector at 0xFFFC/0x1FFF8, specifying 0xFC08 as the entry point address. + * - Boot-up process: register initialization, checks for "security" string in ROM header + * and reading game entry point address (from 0x1C8 to 0x1CF in ROM - byte addresses). + * + * At some point it might be interesting to emulate this behavior, reading the reset + * interrupt vector handler address in the internal ROM, and letting the boot-up process + * to do its thing. This would also allow for the SVP emulation to be always active + * (as ROMs that don't contain the "security string" lead the SVP to enter an infinite + * loop to avoid bus clashes, etc...) now that SVP homebrew is "a thing". +*/ #include "emu.h" #include "svp.h" |