summaryrefslogtreecommitdiff
path: root/src/home/sound.asm
diff options
context:
space:
mode:
Diffstat (limited to 'src/home/sound.asm')
-rw-r--r--src/home/sound.asm113
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