summaryrefslogtreecommitdiff
path: root/home/cry.asm
diff options
context:
space:
mode:
Diffstat (limited to 'home/cry.asm')
-rw-r--r--home/cry.asm104
1 files changed, 104 insertions, 0 deletions
diff --git a/home/cry.asm b/home/cry.asm
new file mode 100644
index 0000000..b018ac7
--- /dev/null
+++ b/home/cry.asm
@@ -0,0 +1,104 @@
+include "constants.asm"
+
+SECTION "Cry Home", ROM0 [$39b1]
+
+Function39b1::
+ push af
+ ld a, $1
+ ld [wc1b9], a
+ pop af
+ jr asm_39c3
+
+PlayCry:: ; 00:39ba
+ push af
+ xor a
+ ld [wc1b9], a
+ ld [wc1ba], a
+ pop af
+asm_39c3: ; 00:39c3
+ push hl
+ push de
+ push bc
+ call GetCryIndex
+ ld e, c
+ ld d, b
+ call PlayCryHeader
+ call WaitSFX
+ pop bc
+ pop de
+ pop hl
+ ret
+
+LoadCryHeader::
+ call GetCryIndex
+ ldh a, [hROMBank]
+ push af
+ ld a, BANK(CryHeaders)
+ call Bankswitch
+ ld hl, CryHeaders
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ 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
+ pop af
+ call Bankswitch
+ ret
+
+GetCryIndex:: ; 00:3a02
+ ld d, a
+ ld a, [wce37]
+ push af
+ ld a, d
+ ld [wce37], a
+ callba Function40b45
+ ld a, [wce37]
+ dec a
+ ld c, a
+ ld b, $0
+ pop af
+ ld [wce37], a
+ ret
+
+Function3a1f::
+ ld a, $6e
+ ld [hli], a
+ ld c, $2
+ ld a, [wcd9e]
+ cp $64
+ jr c, asm_3a37
+ dec hl
+ inc c
+ jr asm_3a37
+
+Function3a2f::
+ ld a, $6e
+ ld [hli], a
+ ld c, $3
+ ld a, [wcd9e]
+asm_3a37: ; 00:3a37
+ ld [wce37], a
+ ld de, wce37
+ ld b, $41
+ jp PrintNumber
+
+Function3a42::
+ ld hl, wce2e
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ ret