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~3FFF
in 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