diff options
-rw-r--r-- | home/audio.asm | 449 | ||||
-rw-r--r-- | home/cry.asm | 2 | ||||
-rw-r--r-- | home/vblank.asm | 24 | ||||
-rw-r--r-- | main.asm | 18 | ||||
-rw-r--r-- | wram.asm | 2 |
5 files changed, 468 insertions, 27 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 diff --git a/home/cry.asm b/home/cry.asm index d4219d07..6a6dd561 100644 --- a/home/cry.asm +++ b/home/cry.asm @@ -19,7 +19,7 @@ continue_cry_fn jr c, .asm_3a12 ld e, c ld d, b - call Function3de4 + call PlayCryHeader call WaitSFX .asm_3a12 pop bc diff --git a/home/vblank.asm b/home/vblank.asm index 8a41cb44..77e68b91 100644 --- a/home/vblank.asm +++ b/home/vblank.asm @@ -124,9 +124,9 @@ VBlank0:: ; 180 .ok2 call Joypad - ld a, BANK(_UpdateSound) + ld a, BANK(UpdateSound_) rst Bankswitch - call _UpdateSound + call UpdateSound_ ld a, [wROMBankBackup] rst Bankswitch ld a, [hSeconds] @@ -181,9 +181,9 @@ VBlank1:: ; 1f4 ld [rIF], a ei - ld a, BANK(_UpdateSound) + ld a, BANK(UpdateSound_) rst Bankswitch - call _UpdateSound + call UpdateSound_ ld a, [wROMBankBackup] rst Bankswitch ; enable ints @@ -230,9 +230,9 @@ VBlank4:: ; 255 call AskSerial - ld a, BANK(_UpdateSound) + ld a, BANK(UpdateSound_) rst Bankswitch - call _UpdateSound + call UpdateSound_ ld a, [wROMBankBackup] rst Bankswitch @@ -271,9 +271,9 @@ VBlank5:: ; 278 ld [rIF], a ei - ld a, BANK(_UpdateSound) + ld a, BANK(UpdateSound_) rst Bankswitch - call _UpdateSound + call UpdateSound_ ld a, [wROMBankBackup] rst Bankswitch di @@ -291,9 +291,9 @@ VBlank2:: ; 2b0 ld a, [hROMBank] ld [wROMBankBackup], a - ld a, BANK(_UpdateSound) + ld a, BANK(UpdateSound_) rst Bankswitch - call _UpdateSound + call UpdateSound_ ld a, [wROMBankBackup] rst Bankswitch @@ -369,9 +369,9 @@ VBlank3:: ; 2c4 ld [rIF], a ei - ld a, BANK(_UpdateSound) + ld a, BANK(UpdateSound_) rst Bankswitch - call _UpdateSound + call UpdateSound_ ld a, [wROMBankBackup] rst Bankswitch di @@ -365,16 +365,28 @@ SECTION "bank39", DATA, BANK[$39] dr $e4000, $e8000 SECTION "bank3a", DATA, BANK[$3a] +DisableAudio_:: dr $e8000, $e805c -_UpdateSound:: - dr $e805c, $ec000 +UpdateSound_:: + dr $e805c, $e8b30 + +PlayMusic_:: + dr $e8b30, $e8b79 + +PlayCryHeader_:: + dr $e8b79, $e8c04 + +PlaySFX_:: + dr $e8c04, $ec000 SECTION "bank3b", DATA, BANK[$3b] dr $ec000, $f0000 SECTION "bank3c", DATA, BANK[$3c] - dr $f0000, $f4000 + dr $f0000, $f2747 +CryHeaders:: + dr $f2747, $f4000 SECTION "bank3d", DATA, BANK[$3d] dr $f4000, $f8000 @@ -3205,7 +3205,7 @@ wd67e:: ds 1 ; d67e wd67f:: ds 1 ; d67f wd680:: ds 1 ; d680 wd681:: ds 1 ; d681 -wd682:: ds 1 ; d682 +wPlayerBikeSurfState:: ds 1 ; d682 wd683:: ds 1 ; d683 wd684:: ds 1 ; d684 wd685:: ds 1 ; d685 |