mamedev / mame

MAME
https://www.mamedev.org/
Other
8.29k stars 2.02k forks source link

SVP/SSP1601 boot process emulation #7910

Open jdesiloniz opened 3 years ago

jdesiloniz commented 3 years ago

Hello! I'm responsible for dumping the SVP Internal ROM, thanks for including it on the drivers! I just saw the commit where it's loaded and I wanted to note that part of the internal ROM is executed during the normal boot process of Virtua Racing. I wanted to include this information in some way as I think you'd be interested on the core doing something more close to the "real thing", please let me know if an issue it's not the best place to do so.

At reset, the first thing the DSP does is looking at the reset interrupt vector in the internal ROM (at word address FFFC), getting the entry point value of FC08. It jumps to that address, where the boot-up process begins. There's some stuff in there that's not emulated (i.e.: EXT5 is initialized), but I think that shouldn't affect the emulation as a whole. It basically initializes the registers to their default values, start the external register behaviors, check the ROM header for the security string to start the SVP and then jumps to the game initial address (0x400).

Just letting this information here on how the real hardware in Virtua Racing uses the internal ROM. Thanks!

happppp commented 3 years ago

Sure, you could make a pull request to add technical notes to this file: https://github.com/mamedev/mame/blob/master/src/devices/bus/megadrive/svp.cpp

jdesiloniz commented 3 years ago

@happppp Sorry that it took me a while to take care of that. I've added a small PR to include more info on this here: https://github.com/mamedev/mame/pull/7944. It's my first PR for this project so if you feel I need to add/update anything on it, please let me know. Thanks a lot!!