diff options
author | pikalaxalt <PikalaxALT@gmail.com> | 2016-06-18 12:27:14 -0400 |
---|---|---|
committer | pikalaxalt <PikalaxALT@gmail.com> | 2016-06-18 12:27:14 -0400 |
commit | 0cf4b1d6df1d45386cc59b992a4fb61f4dcb1441 (patch) | |
tree | c2a25543792a007df9cc7558f434995c059c77c6 /home/audio.asm | |
parent | ad08e4650c6a84031e2c2d0197a9c653576ca55e (diff) |
Finish disassembly of ROM0
Diffstat (limited to 'home/audio.asm')
-rw-r--r-- | home/audio.asm | 449 |
1 files changed, 439 insertions, 10 deletions
diff --git a/home/audio.asm b/home/audio.asm index d868b4b7..f54445f7 100644 --- a/home/audio.asm +++ b/home/audio.asm @@ -1,14 +1,443 @@ -DisableAudio:: - dr $3d4f, $3de4 +DisableAudio:: ; 3d4f (0:3d4f) + push hl + push de + push bc + push af + ld a, [hROMBank] + push af + ld a, BANK(DisableAudio_) + ld [hROMBank], a + ld [MBC3RomBank], a + call DisableAudio_ + pop af + ld [hROMBank], a + ld [MBC3RomBank], a + pop af + pop bc + pop de + pop hl + ret -Function3de4:: - dr $3de4, $3e24 +UpdateSound:: ; 3d6b (0:3d6b) + push hl + push de + push bc + push af + ld a, [hROMBank] + push af + ld a, BANK(UpdateSound_) + ld [hROMBank], a + ld [MBC3RomBank], a + call UpdateSound_ + pop af + ld [hROMBank], a + ld [MBC3RomBank], a + pop af + pop bc + pop de + pop hl + ret -PlaySFX:: - dr $3e24, $3e56 +LoadMusicByte_:: + ld [hROMBank], a + ld [MBC3RomBank], a -WaitSFX:: - dr $3e56, $3e92 + ld a, [de] + ld [wCurMusicByte], a + ld a, BANK(UpdateSound_) -Function3e92:: - dr $3e92, $3fee + ld [hROMBank], a + ld [MBC3RomBank], a + ret + +PlayMusic:: ; 3d98 (0:3d98) + push hl + push de + push bc + push af + ld a, [hROMBank] + push af + ld a, BANK(PlayMusic_) + ld [hROMBank], a + ld [MBC3RomBank], a + ld a, e + and a + jr z, .asm_3daf + call PlayMusic_ ; $4b30 + jr .asm_3db2 + +.asm_3daf + call DisableAudio_ +.asm_3db2 + pop af + ld [hROMBank], a + ld [MBC3RomBank], a + pop af + pop bc + pop de + pop hl + ret + +PlayMusic2:: + push hl + push de + push bc + push af + ld a, [hROMBank] + push af + ld a, BANK(PlayMusic_) + ld [hROMBank], a + ld [MBC3RomBank], a + push de + ld de, MUSIC_NONE + call PlayMusic_ + call DelayFrame + pop de + call PlayMusic_ + pop af + ld [hROMBank], a + ld [MBC3RomBank], a + pop af + pop bc + pop de + pop hl + ret + +PlayCryHeader:: ; 3de4 (0:3de4) + push hl + push de + push bc + push af + ld a, [hROMBank] + push af + ld a, BANK(CryHeaders) ; $3c + ld [hROMBank], a + ld [MBC3RomBank], a + ld hl, CryHeaders ; $6747 + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + inc hl + ld a, [hli] + ld [wCryPitch], a + ld a, [hli] + ld [wCryPitch + 1], a + ld a, [hli] + ld [wCryLength], a + ld a, [hl] + ld [wCryLength + 1], a + ld a, BANK(PlayCryHeader_) + ld [hROMBank], a + ld [MBC3RomBank], a + call PlayCryHeader_ + pop af + ld [hROMBank], a + ld [MBC3RomBank], a + pop af + pop bc + pop de + pop hl + ret + +PlaySFX:: ; 3e24 (0:3e24) + push hl + push de + push bc + push af + call CheckSFX + jr nc, .asm_3e33 + ld a, [wCurSFX] + cp e + jr c, .asm_3e4a +.asm_3e33 + ld a, [hROMBank] + push af + ld a, BANK(PlaySFX_) ; $3a + ld [hROMBank], a + ld [MBC3RomBank], a + ld a, e + ld [wCurSFX], a + call PlaySFX_ ; $4c04 + pop af + ld [hROMBank], a + ld [MBC3RomBank], a +.asm_3e4a + pop af + pop bc + pop de + pop hl + ret + +WaitPlaySFX:: + call WaitSFX + call PlaySFX + ret + +WaitSFX:: ; 3e56 (0:3e56) + push hl +.asm_3e57 + ld hl, wChannel5Flags + bit 0, [hl] + jr nz, .asm_3e57 + ld hl, wChannel6Flags + bit 0, [hl] + jr nz, .asm_3e57 + ld hl, wChannel7Flags + bit 0, [hl] + jr nz, .asm_3e57 + ld hl, wChannel8Flags + bit 0, [hl] + jr nz, .asm_3e57 + pop hl + ret + +MaxVolume:: + ld a, $77 + ld [wVolume], a + ret + +LowVolume:: + ld a, $33 + ld [wVolume], a + ret + +VolumeOff:: + xor a + ld [wVolume], a + ret + +FadeOutMusic:: + ld a, $4 + ld [wMusicFade], a + ret + +FadeInMusic:: + ld a, 4 | 1 << 7 + ld [wMusicFade], a + ret + +Function3e92:: ; 3e92 (0:3e92) + and a + ret z + dec a + call UpdateSound + jr Function3e92 + +FadeToMapMusic:: + push hl + push de + push bc + push af + call GetMapMusic + ld a, [wMapMusic] + cp e + jr z, .asm_3eb8 + ld a, $8 + ld [wMusicFade], a + ld a, e + ld [wMusicFadeID], a + ld a, d + ld [wc1aa], a + ld a, e + ld [wChannelsEnd], a +.asm_3eb8 + pop af + pop bc + pop de + pop hl + ret + +PlayMapMusic:: + push hl + push de + push bc + push af + call GetMapMusic + ld a, [wMapMusic] + cp e + jr z, .asm_3edc + push de + ld de, MUSIC_NONE + call PlayMusic + call DelayFrame + pop de + ld a, e + ld [wMapMusic], a + call PlayMusic +.asm_3edc + pop af + pop bc + pop de + pop hl + ret + +EnterMapMusic:: + push hl + push de + push bc + push af + xor a + ld [wDontPlayMapMusicOnReload], a + ld de, MUSIC_BICYCLE + ld a, [wPlayerBikeSurfState] + cp $1 + jr z, .asm_3ef6 + call GetMapMusic +.asm_3ef6 + push de + ld de, MUSIC_NONE + call PlayMusic + call DelayFrame + pop de + ld a, e + ld [wChannelsEnd], a + call PlayMusic + pop af + pop bc + pop de + pop hl + ret + +TryRestartMapMusic:: + ld a, [wDontPlayMapMusicOnReload] + and a + jr z, RestartMapMusic + xor a + ld [wChannelsEnd], a + ld de, MUSIC_NONE + call PlayMusic + call DelayFrame + xor a + ld [wDontPlayMapMusicOnReload], a + ret + +RestartMapMusic:: + push hl + push de + push bc + push af + ld de, MUSIC_NONE + call PlayMusic + call DelayFrame + ld a, [wChannelsEnd] + ld e, a + ld d, $0 + call PlayMusic + pop af + pop bc + pop de + pop hl + ret + +SpecialMapMusic:: ; 3f40 (0:3f40) + ld a, [wPlayerBikeSurfState] + cp $4 + jr z, .asm_3f59 + cp $8 + jr z, .asm_3f59 + ld a, [wd572] + bit 2, a + jr nz, .asm_3f5e +.asm_3f52 + and a + ret + +.bike + ld de, MUSIC_BICYCLE + scf + ret + +.asm_3f59 + ld de, MUSIC_SURF + scf + ret + +.asm_3f5e + ld a, [wMapGroup] + cp GROUP_ROUTE_35_NATIONAL_PARK_GATE + jr nz, .asm_3f52 + ld a, [wMapNumber] + cp MAP_ROUTE_35_NATIONAL_PARK_GATE + jr z, .asm_3f70 + cp MAP_ROUTE_36_NATIONAL_PARK_GATE + jr nz, .asm_3f52 +.asm_3f70 + ld de, MUSIC_BUG_CATCHING_CONTEST_RANKING + scf + ret + +GetMapMusic:: ; 3f75 (0:3f75) + call SpecialMapMusic + ret c + call GetMapHeaderMusic + ret + +Function3f7d:: + ld a, $20 + ld [$c398], a + ld [$c39c], a + ld a, $50 + ld [$c399], a + ld a, $58 + ld [$c39d], a + xor a + ld [$c39b], a + ld [$c39f], a + ld a, [wc196] + cp $64 + jr nc, .asm_3fb3 + add $1 + daa + ld b, a + swap a + and $f + add $f6 + ld [$c39a], a + ld a, b + and $f + add $f6 + ld [$c39e], a + ret + +.asm_3fb3 + ld a, $ff + ld [$c39a], a + ld [$c39e], a + ret + +CheckSFX:: ; 3fbc (0:3fbc) + ld a, [wChannel5Flags] + bit 0, a + jr nz, .asm_3fda + ld a, [wChannel6Flags] + bit 0, a + jr nz, .asm_3fda + ld a, [wChannel7Flags] + bit 0, a + jr nz, .asm_3fda + ld a, [wChannel8Flags] + bit 0, a + jr nz, .asm_3fda + and a + ret + +.asm_3fda + scf + ret + +TerminateExpBarSound:: + xor a + ld [wChannel5Flags], a + ld [wSoundInput], a + ld [rNR10], a + ld [rNR11], a + ld [rNR12], a + ld [rNR13], a + ld [rNR14], a + ret |