by Bart » Mon May 30, 2016 6:48 pm
It's certainly possible and can be done in a number of ways. Unfortunately, for anything non-trivial, you would need to modify the code. Probably the best way to do it would be for Supermodel to include a scripting language, as Nebula Model 2 does, to allow you to intercept audio commands and play your own sound effects. The audio boards are actually quite independent. The main CPU just passes high-level commands which can be as short as 3 bytes. These usually indicate which sound to play. If a scripting engine were permitted to intercept these, it would have complete control over audio playback. Supermodel's audio subsystem is kind of crappy and it would take a bit of work to get it up to snuff, though. I would need to implement proper audio mixing and add normal playback channels that operate independently of the per-frame audio emulation.
You're correct that Supermodel will barf if you modify any of the ROMs. That's because it loads ROMs based on their check sum rather than file name. I thought this was a smart idea when I came up with it because when I sat down to rewrite Supermodel in 2010, MAME had changed the names of the old ROM sets that I had, and which were still floating around. I figured that the file name is unimportant and ultimately the CRC32 is what matters. What I should probably do is rewrite the ROM loading system at some point to support loading by standardized MAME name as well, even if the check sums are bad. Not a very difficult change to make.
Sound effects are stored in ROM ICs 22-25. You should be able to load them up directly in an audio editor like GoldWave as raw PCM data. I think they are usually 16-bit audio (byte swapped) but the SCSP supports 8-bit samples as well.
I wonder if a future direction for Supermodel should be to become a multi-platform 90's 3D arcade emulator with support for game-enhancing/hacking features. I would like to eventually add support for exporting models, textures, and maybe even entire scenes. If a scripting engine is added in the future, it would be possible to import new data as well, although it would be a lot of software engineering and refactoring to get it working. I don't think any other platform is as amenable as Model 3 to this sort of hacking. Model 3 is unique in that its 3D graphics are database-driven and operate on entire meshes at a time that reside in fixed locations in memory. This is quite different from typical 3D architectures that consume arbitrary lists of triangles. It would be entirely possible to swap out whole meshes, although it would still require a lot of work on the part of the hacker. A typical game object is actually composed of lots of small sub-meshes, and each of those would have to be replaced.
Textures would be fairly easy, though.