summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpikalaxalt <PikalaxALT@gmail.com>2016-06-18 12:27:14 -0400
committerpikalaxalt <PikalaxALT@gmail.com>2016-06-18 12:27:14 -0400
commit0cf4b1d6df1d45386cc59b992a4fb61f4dcb1441 (patch)
treec2a25543792a007df9cc7558f434995c059c77c6
parentad08e4650c6a84031e2c2d0197a9c653576ca55e (diff)
Finish disassembly of ROM0
-rw-r--r--home/audio.asm449
-rw-r--r--home/cry.asm2
-rw-r--r--home/vblank.asm24
-rw-r--r--main.asm18
-rw-r--r--wram.asm2
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
diff --git a/main.asm b/main.asm
index 644bc4c9..a52d3fb6 100644
--- a/main.asm
+++ b/main.asm
@@ -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
diff --git a/wram.asm b/wram.asm
index f7f667d7..8673e7e1 100644
--- a/wram.asm
+++ b/wram.asm
@@ -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