A
Apocalypse
@Hammy, let me know if you need more info. Conversions FROM M72 are actually much simpler than conversions TO M72.
On M72 sound code is stored in main CPU ROMs and uploaded to the sound RAM by main CPU. Simply put a watchpoint for writes to 0xE0000 and you'll easily locate the sound code in program ROMs. Make the code a ROM file, modify ports and you'll be good.
Then MCU does only few things, protection can be bypassed (simply replace the jump to the loaded sbr in MCU RAM by the return jump at the end of the sbr). Ninja Spirit also has few checks that compare a value written by the MCU in MCU RAM (replace the compare instruction by a register compare with itself or modify the conditional jump when it fails). Ignore the RAM test for those not existing outside of M72. Lastly modify samples writes (port 0xC0 on M72).
Of course you also have the usual differences:
- dma port
- scroll ports (offset)
- priority and flip bits for tiles
- etc.
On M72 sound code is stored in main CPU ROMs and uploaded to the sound RAM by main CPU. Simply put a watchpoint for writes to 0xE0000 and you'll easily locate the sound code in program ROMs. Make the code a ROM file, modify ports and you'll be good.
Then MCU does only few things, protection can be bypassed (simply replace the jump to the loaded sbr in MCU RAM by the return jump at the end of the sbr). Ninja Spirit also has few checks that compare a value written by the MCU in MCU RAM (replace the compare instruction by a register compare with itself or modify the conditional jump when it fails). Ignore the RAM test for those not existing outside of M72. Lastly modify samples writes (port 0xC0 on M72).
Of course you also have the usual differences:
- dma port
- scroll ports (offset)
- priority and flip bits for tiles
- etc.