Sound Hacking/MSX Computer
Simple Triggers
| Game | Developer | Music Trigger + Comments |
|---|---|---|
| ... | ... | maincpu.b@YYYY = xx
|
Advanced Hacks
Eggerland 2
General ROM locations:
8520 - play music (needs ID to be loaded to register A; 00h=stop, 01h~1Dh = valid) 8537 - play PCM voice(needs ID to be loaded to register A; 00h~02h = valid) Sound Bank calls: 4000 = StopMusic 4003 = PlayMusic 4006 = wait for something 4009 = UpdateSound
ROM patches:
play voice, then freeze: 00CD 3E id LD A, id 00CF CD 37 85 CALL 8537h ; call PlayVoice 00D2 18 FE JR $ skip voice, play music, then freeze 00CE 90 90 90 NOP / NOP / NOP (replace CALL 8537h) 00D8 3E id LD A, id 00DA CD 20 85 CALL 8520h ; call PlayMusic 00DD 18 FF JR $
Seed of Dragon
Disk 1: BP 0525 then change register A value
Disk 2 & 3: BP 0B3B then change value @0B7D
Zoids
Note: Offsets below refer to the CPU space. When modifying the ROM, you have to remap the offsets from CPU space to ROM space.
CPU space layout:
- ROM bank:
4000~7FFF(CPU space), equals0000~3FFFin the ROM while processing sound - MSX RAM:
C000~FFFF
General ROM locations:
59E8 - check whether or not Track [Register A] is already playing 59F7 - Play Track with ID [Register A] (puts it into Track List), valid IDs are 00h..27h 5A2E - Stop All Sound 5BBC - Sound Queue processing 5C82 - start of AY8910 register write routine 5CA3~5CB0 - AY8910 register initialization values BEC6~BED4 - stage music track list (3 IDs per song) [ROM offset 017EC6] C192~C19F - AY8910 register cache (for registers 00h..0Eh) C1A0~C1A7 - list of active tracks (0FFh = inactive) C1A8~C1E7 - track RAM (8 bytes per track)
Sound Test Hack:
1. disable register write optimization 5C88 00 00 NOP / NOP ; dummy out the JR that skips writing to the AY8910 2. play an arbitrary song at the title screen 4286 3E tt LD A, tt ; load first track ID (must be 01h, 04h, 07h, ..., 25h) 4288 06 03 LD B, 3 ; each song has 3 tracks 428A F5 PUSH AF 428B C5 PUSH BC 428C CD F7 59 CALL 59F7h ; play track 428F C1 POP BC 4290 F1 POP AF 4291 3C INC A 4292 10 F6 DJNZ 428Ah 3. freeze the game after starting the song 4294 18 FE JR $
known IDs:
- music:
04/05/06,07/08/09,0B/0C/0D,0E/0F/10,14/15/16,17/18/19,1D/1E/1F,20/21/22,23/24/25 - SFX:
03,0A,26