summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commit4ca1b9ab0aab0e4395409b301a461fd3b7ec70d0 (patch)
tree182b698d86172ad631f8b7d78d76f5e006c79659
parent55e356f13abb10d336315a53d9f4dc9e2a92302d (diff)
Adding technical details on the SVP chip internal ROM and fixing start address (#7944)
-rw-r--r--src/devices/bus/megadrive/svp.cpp20
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"