diff options
Diffstat (limited to 'src/home/sound.asm')
-rw-r--r-- | src/home/sound.asm | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/src/home/sound.asm b/src/home/sound.asm new file mode 100644 index 0000000..6742758 --- /dev/null +++ b/src/home/sound.asm @@ -0,0 +1,113 @@ +SetupSound: + farcall _SetupSound + ret + +StopMusic: + xor a ; MUSIC_STOP +PlaySong: + farcall _PlaySong + ret + +; return a = 0: song finished, a = 1: song not finished +AssertSongFinished: + farcall _AssertSongFinished + ret + +; return a = 0: SFX finished, a = 1: SFX not finished +AssertSFXFinished: + farcall _AssertSFXFinished + ret + +Func_3794: + ld a, $04 +PlaySFX: + farcall _PlaySFX + ret + +PauseSong: + farcall _PauseSong + ret + +ResumeSong: + farcall _ResumeSong + ret + +Func_37a5: + ldh a, [hBankROM] + push af + push hl + srl h + srl h + srl h + ld a, BANK(CardGraphics) + add h + call BankswitchROM + pop hl + add hl, hl + add hl, hl + add hl, hl + res 7, h + set 6, h ; $4000 ≤ hl ≤ $7fff + call Func_37c5 + pop af + call BankswitchROM + ret + +Func_37c5: + ld c, $08 +.asm_37c7 + ld b, $06 +.asm_37c9 + push bc + ld c, $08 +.asm_37cc + ld b, $02 +.asm_37ce + push bc + push hl + ld c, [hl] + ld b, $04 +.asm_37d3 + rr c + rra + sra a + dec b + jr nz, .asm_37d3 + ld hl, $c0 + add hl, de + ld [hli], a + inc hl + ld [hl], a + ld b, $04 +.asm_37e4 + rr c + rra + sra a + dec b + jr nz, .asm_37e4 + ld [de], a + ld hl, $2 + add hl, de + ld [hl], a + pop hl + pop bc + inc de + inc hl + dec b + jr nz, .asm_37ce + inc de + inc de + dec c + jr nz, .asm_37cc + pop bc + dec b + jr nz, .asm_37c9 + ld a, $c0 + add e + ld e, a + ld a, $00 + adc d + ld d, a + dec c + jr nz, .asm_37c7 + ret |