Files
pokegold-spaceworld/home/audio.asm
luckytyphlosion e1659ecd41 Introduce linkerscript.
Addresses of sections will now be added to the linkerscript via `org`, and the section name will be the path/to/file. If there is more than one section in the file, then add a @SectionName after the path/to/file to describe the section.
2018-07-03 17:07:05 -04:00

269 lines
3.4 KiB
NASM

INCLUDE "constants.asm"
; if DEBUG
SECTION "home/audio.asm", ROM0
; else
; SECTION "Audio interface", ROM0[$3C83]
; endc
DisableAudio:: ; 3cbf
push hl
push de
push bc
push af
ldh a, [hROMBank]
push af
ld a, BANK(_DisableAudio)
ld [MBC3RomBank], a ; Unsafe
ldh [hROMBank], a
call _DisableAudio
pop af
ld [MBC3RomBank], a ; Unsafe
ldh [hROMBank], a
pop af
pop bc
pop de
pop hl
ret
UpdateSound:: ; 3cdb
push hl
push de
push bc
push af
ldh a, [hROMBank]
push af
ld a, BANK(_UpdateSound)
ld [MBC3RomBank], a ; Unsafe
ldh [hROMBank], a
call _UpdateSound
pop af
ld [MBC3RomBank], a ; Unsafe
ldh [hROMBank], a
pop af
pop bc
pop de
pop hl
ret
_LoadMusicByte:: ; 3cf7
ld [MBC3RomBank], a ; Unsafe
ldh [hROMBank], a
ld a, [de]
push af
ld a, BANK(_UpdateSound)
ld [MBC3RomBank], a ; Unsafe
ldh [hROMBank], a
pop af
ret
PlayMusic:: ; 3d07
push hl
push de
push bc
push af
ldh a, [hROMBank]
push af
ld a, BANK(_PlayMusic)
ld [MBC3RomBank], a ; Unsafe
ldh [hROMBank], a
call _PlayMusic
pop af
ld [MBC3RomBank], a ; Unsafe
ldh [hROMBank], a
pop af
pop bc
pop de
pop hl
ret
PlayCryHeader:: ; 3d23
push hl
push de
push bc
push af
ldh a, [hROMBank]
push af
ld a, BANK(CryHeaders)
ld [MBC3RomBank], a ; Unsafe
ldh [hROMBank], a
ld hl, CryHeaders
rept 6
add hl, de
endr
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 [MBC3RomBank], a ; Unsafe
ldh [hROMBank], a
call _PlayCryHeader
pop af
ld [MBC3RomBank], a ; Unsafe
ldh [hROMBank], a
pop af
pop bc
pop de
pop hl
ret
PlaySFX:: ; 3d63
push hl
push de
push bc
push af
ldh a, [hROMBank]
push af
ld a, BANK(_PlaySFX)
ld [MBC3RomBank], a ; Unsafe
ldh [hROMBank], a
call _PlaySFX
pop af
ld [MBC3RomBank], a ; Unsafe
ldh [hROMBank], a
pop af
pop bc
pop de
pop hl
ret
WaitPlaySFX:: ; 3d7f
call WaitSFX
call PlaySFX
ret
WaitSFX:: ; 3d86
push hl
.loop
ld hl, wChannel5Flags1
bit 0, [hl]
jr nz, .loop
ld hl, wChannel6Flags1
bit 0, [hl]
jr nz, .loop
ld hl, wChannel7Flags1
bit 0, [hl]
jr nz, .loop
ld hl, wChannel8Flags1
bit 0, [hl]
jr nz, .loop
pop hl
ret
MaxVolume:: ; 3DA5
ld a, $77
ld [wVolume], a
ret
LowVolume:: ; 3DAB
ld a, $33
ld [wVolume], a
ret
VolumeOff:: ; 3DB1
xor a
ld [wVolume], a
ret
UpdateSoundNTimes:: ; 3DB6
.loop
and a
ret z
dec a
call UpdateSound
jr .loop
FadeToMapMusic:: ; 3DBE
push hl
push de
push bc
push af
call GetMapMusic
ld a, [wMapMusic]
cp e
jr z, .jump
ld a, $08
ld [wMusicFade], a
ld a, e
ld [wMusicFadeID], a
ld a, d
ld [wMusicFadeID+1], a
ld a, e
ld [wMapMusic], a
.jump
pop af
pop bc
pop de
pop hl
ret
PlayMapMusic:: ; 3DE1
push hl
push de
push bc
push af
call GetMapMusic
ld a, [wMapMusic]
cp e
jr z, .jump
push de
ld de, $0000
call PlayMusic
call DelayFrame
pop de
ld a, e
ld [wMapMusic], a
call PlayMusic
.jump
pop af
pop bc
pop de
pop hl
ret
SpecialMapMusic:: ; 3E05
ld a, [wPlayerState]
and a
jr z, .normal
cp $02
jr z, .state2
ld de, $0009
scf
ret
.state2 ; 3E14
ld de, $0000
scf
ret
.normal ; 3E19
and a
ret
GetMapMusic:: ; 3E1B
call SpecialMapMusic
ret c
ld a, [wMapPermissions]
cp $01
jr z, .jump
cp $03
jr z, .jump
ld de, $0002
ret
.jump ; 3E2E
ld de, $0007
ret
; 3E32, this is likely not a function.