summaryrefslogtreecommitdiff
path: root/src/engine/bank3.asm
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/bank3.asm')
-rwxr-xr-xsrc/engine/bank3.asm1550
1 files changed, 1530 insertions, 20 deletions
diff --git a/src/engine/bank3.asm b/src/engine/bank3.asm
index feb7c05..5d1c31f 100755
--- a/src/engine/bank3.asm
+++ b/src/engine/bank3.asm
@@ -379,9 +379,11 @@ Func_c2a3: ; c2a3 (3:42a3)
pop bc
pop hl
ret
-; 0xc2d4
-INCBIN "baserom.gbc",$c2d4,$c2db - $c2d4
+Func_c2d4: ; c2d4 (3:42d4)
+ xor a
+ ld [wd10f], a
+ ld [wd110], a
Func_c2db: ; c2db (3:42db)
push hl
@@ -624,9 +626,17 @@ Func_c510: ; c510 (3:4510)
and START
call nz, Func_c74d
ret
-; 0xc53d
-INCBIN "baserom.gbc",$c53d,$c554 - $c53d
+Func_c53d: ; c53d (3:453d)
+ ld a, [wd336]
+ ld [wd4cf], a
+ ld a, [wd335]
+ bit 0, a
+ call nz, $4687
+ ld a, [wd335]
+ bit 1, a
+ call nz, Func_c6dc
+ ret
Func_c554: ; c554 (3:4554)
ld a, [wd336]
@@ -703,6 +713,7 @@ Func_c5ac: ; c5ac (3:45ac)
Func_c5cb: ; c5cb (3:45cb)
call Func_c5d5
+Func_c5ce: ; c5ce (3:45ce)
ld [wd334], a
call Func_c5e9
ret
@@ -743,9 +754,16 @@ Func_c5fe: ; c5fe (3:45fe)
call Func_c619
pop bc
ret
-; 0xc607
-INCBIN "baserom.gbc",$c607,$c619 - $c607
+Func_c607: ; c607 (3:4607)
+ push bc
+ ld a, [wd336]
+ ld [wd4cf], a
+ ld a, [$d339]
+ call $4656
+ call Func_c619
+ pop bc
+ ret
Func_c619: ; c619 (3:4619)
push hl
@@ -1062,7 +1080,7 @@ PC_c7ea: ; c7ea (3:47ea)
call Func_c135
call DoFrameIfLCDEnabled
text_hl TurnedPCOffText
- call $4891
+ call Func_c891
call Func_c111
xor a
ld [wd112], a
@@ -1070,7 +1088,115 @@ PC_c7ea: ; c7ea (3:47ea)
ret
; 0xc846
-INCBIN "baserom.gbc",$c846,$c935 - $c846
+INCBIN "baserom.gbc",$c846,$c891 - $c846
+
+Func_c891: ; c891 (3:4891)
+ push hl
+ ld a, [wd0c1]
+ bit 0, a
+ jr z, .asm_c8a1
+ ld hl, $d3b9
+ ld a, [hli]
+ or [hl]
+ call nz, Func_c135
+
+.asm_c8a1
+ xor a
+ ld hl, $d3b9
+ ld [hli], a
+ ld [hl], a
+ pop hl
+ ld a, $1
+ call Func_c29b
+ call Func_c241
+ call $4915
+ call DoFrameIfLCDEnabled
+ call Func_2c73
+ ret
+
+Func_c8ba: ; c8ba (3:48ba)
+ ld a, e
+ or d
+ jr z, Func_c891
+ push hl
+ ld a, [wd0c1]
+ bit 0, a
+ jr z, .asm_c8d4
+ ld hl, $d3b9
+ ld a, [hli]
+ cp e
+ jr nz, .asm_c8d1
+ ld a, [hl]
+ cp d
+ jr z, .asm_c8d4
+
+.asm_c8d1
+ call Func_c135
+
+.asm_c8d4
+ ld hl, $d3b9
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ pop hl
+ ld a, $1
+ call Func_c29b
+ call Func_c241
+ call $4915
+ call DoFrameIfLCDEnabled
+ call $2c62
+ ret
+; 0xc8ed
+
+Func_c8ed: ; c8ed (3:c8ed)
+ push hl
+ push bc
+ push de
+ push hl
+ ld a, $1
+ call Func_c29b
+ call $4915
+ call DoFrameIfLCDEnabled
+ pop hl
+ ld a, l
+ or h
+ jr z, .asm_c90e
+ push hl
+ xor a
+ ld hl, $d3b9
+ ld [hli], a
+ ld [hl], a
+ pop hl
+ call Func_2af0
+ jr .asm_c911
+
+.asm_c90e
+ call $2af3
+
+.asm_c911
+ pop de
+ pop bc
+ pop hl
+ ret
+
+Func_c915: ; c915 (3:4915)
+ push bc
+ push de
+ ld de, $000c
+ ld bc, $1406
+ call AdjustCoordinatesForWindow
+ call $43ca
+ pop de
+ pop bc
+ ret
+
+Func_c926: ; c926 (3:4926)
+ push bc
+ call Func_39c3
+ ld a, [wd3aa]
+ ld [wd3b6], a
+ farcall Func_1c768
+ pop bc
Func_c935: ; c935 (3:4935)
push hl
@@ -1298,6 +1424,7 @@ INCBIN "baserom.gbc",$ca84,$ca8f - $ca84
Func_ca8f: ; ca8f (3:4a8f)
call Func_cab3
+Func_ca92: ; ca92 (3:4a92)
push hl
push bc
call Func_cb1d
@@ -1338,7 +1465,71 @@ Func_cab3: ; cab3 (3:4ab3)
ret
; 0xcac2
-INCBIN "baserom.gbc",$cac2,$cb1d - $cac2
+INCBIN "baserom.gbc",$cac2,$cac5 - $cac2
+
+Func_cac5: ; cac5 (3:4ac5)
+ push bc
+ ld c, $ff
+ call $4a92
+ pop bc
+ ret
+; 0xcacd
+
+INCBIN "baserom.gbc",$cacd,$cad0 - $cacd
+
+Func_cad0: ; cad0 (3:4ad0)
+ push bc
+ ld c, $0
+ call Func_ca92
+ pop bc
+ ret
+
+Func_cad8: ; cad8 (3:4ad8)
+ push hl
+ push bc
+ ld hl, $4b15
+ ld bc, $0008
+.asm_cae0
+ ld a, [hli]
+ call Func_ca6c
+ jr z, .asm_cae7
+ inc b
+
+.asm_cae7
+ dec c
+ jr nz, .asm_cae0
+ ld c, b
+ call Func_ca8f
+ ld l, $79
+ push af
+ cp $8
+ jr nc, .asm_caff
+ cp $7
+ jr nc, .asm_cb05
+ cp $3
+ jr nc, .asm_cb0b
+ jr .asm_cb11
+
+.asm_caff
+ ld a, $c
+ farcallx $4, $4a70
+
+.asm_cb05
+ ld a, $b
+ farcallx $4, $4a70
+
+.asm_cb0b
+ ld a, $a
+ farcallx $4, $4a70
+
+.asm_cb11
+ pop af
+ pop bc
+ pop hl
+ ret
+; 0xcb15
+
+INCBIN "baserom.gbc",$cb15,$cb1d - $cb15
Func_cb1d: ; cb1d (3:4b1d)
push bc
@@ -1359,8 +1550,23 @@ Func_cb1d: ; cb1d (3:4b1d)
ret
Unknown_cb37: ; cb37 (3:4b37)
-INCBIN "baserom.gbc",$cb37,$cc42 - $cb37
+INCBIN "baserom.gbc",$cb37,$cc32 - $cb37
+
+Func_cc32: ; cc32 (3:4c32)
+ push hl
+ ld hl, wd0c8
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ pop hl
+ call $48ba
+ ret
+; 0xcc3e
+
+INCBIN "baserom.gbc",$cc3e,$cc42 - $cc3e
+; called when pressing a in front of an object. creates a pointer to the data right after an RST20
+; was called, then runs Func_3aed to handle that data
RST20: ; cc42 (3:4c42)
pop hl
ld a, l
@@ -1380,12 +1586,1034 @@ RST20: ; cc42 (3:4c42)
ld b, [hl]
push bc
ret
-; 0xcc60
-INCBIN "baserom.gbc",$cc60,$cd98 - $cc60
+Func_cc60: ; cc60 (3:4c60)
+ ld a, 1
+ jr Func_cc7a
+Func_cc64: ; cc64 (3:4c64)
+ ld a, 2
+ jr Func_cc7a
+Func_cc68: ; cc68 (3:4c68)
+ ld a, 4
+ jr Func_cc7a
+Func_cc6c: ; cc6c (3:4c6c)
+ ld a, 5
+ jr Func_cc7a
+Func_cc70: ; cc70 (3:4c70)
+ ld a, 6
+ jr Func_cc7a
+Func_cc74: ; cc74 (3:4c74)
+ ld a, 7
+ jr Func_cc7a
+Func_cc78: ; cc78 (3:4c78)
+ ld a, 3
+
+Func_cc7a: ; cc7a (3:4c7a)
+ ld c, a
+ ld a, [wd413]
+ add c
+ ld [wd413], a
+ ld a, [wd414]
+ adc a, 00
+ ld [wd414], a
+ ret
+
+Func_cc8b: ; cc8b (3:4c8b)
+ ld hl, wd413
+ ld [hl], c
+ inc hl
+ ld [hl], b
+ ret
+; 0xcc92
+
+INCBIN "baserom.gbc",$cc92,$cc96 - $cc92
+
+Func_cc96: ; cc96 (3:4c96)
+ ld a, $1
+ jr Func_cca0
+
+Func_cc9a: ; cc9a (3:4c9a)
+ ld a, $2
+ jr Func_cca0
+Func_cc9e: ; cc9e (3:4c9e)
+ ld a, $3
-Unknown_cd98: ; cd98 (3:4d98)
-INCBIN "baserom.gbc",$cd98,$d336 - $cd98
+Func_cca0: ; cca0 (3:4ca0)
+ push hl
+ ld l, a
+ ld a, [wd413]
+ add l
+ ld l, a
+ ld a, [wd414]
+ adc $0
+ ld h, a
+ ld a, [hli]
+ ld c, a
+ ld b, [hl]
+ pop hl
+ or b
+ ret
+
+Func_ccb3: ; ccb3 (3:4cb3)
+ ld a, $ff
+ ld [$d415], a
+ ret
+
+Func_ccb9: ; ccb9 (3:4cb9)
+ xor a
+ ld [$d415], a
+ ret
+
+Func_ccbe: ; ccbe (3:4cbe)
+ ld a, $01
+ ld [wd412], a
+ jp Func_cc60
+
+Func_ccc6: ; ccc6 (3:4cc6)
+ call Func_c111
+ jp Func_cc60
+
+Func_cccc: ; cccc (3:4ccc)
+ call Func_ccc6
+ call Func_ccbe
+ pop hl
+ ret
+
+Func_ccd4: ; ccd4 (3:4cd4)
+ ld l, c
+ ld h, b
+ call Func_cc32
+ jp Func_cc78
+
+Func_ccdc: ; ccdc (3:4cdc)
+ ld l, c
+ ld h, b
+ call Func_c891
+ jp Func_cc78
+
+Func_cce4: ; cce4 (3:4ce4)
+ ld a, $1
+ ld [wcd9a], a
+Func_cce9: ; cce9 (3:4ce9)
+ ld l, c
+ ld h, b
+ call Func_c8ed
+ ld a, [hCurrentMenuItem]
+ ld [$d415], a
+ jr c, .asm_ccfe
+ call Func_cc9e
+ jr z, .asm_ccfe
+ jp Func_cc8b
+
+.asm_ccfe
+ jp Func_cc6c
+
+; this seems to be called when battles officially start. Might be a good way to find trainer data.
+Func_cd01: ; cd01 (3:4d01)
+ call Func_cd66
+ ld a, [wd3b6]
+ ld l, $0
+ call Func_39ad
+ ld a, [hl]
+ farcall Func_118d3
+ ld a, [wcc19]
+ cp $ff
+ jr nz, .asm_cd26
+ ld a, [$d695]
+ ld c, a
+ ld b, $0
+ ld hl, $4d63
+ add hl, bc
+ ld a, [hl]
+ ld [wcc19], a
+.asm_cd26
+ ld a, [wd3b6]
+ ld l, $0
+ call Func_39ad
+ ld a, [hl]
+asm_cd2f
+ ld [wd0c4], a
+ ld [$cc14], a
+ push af
+ farcall Func_1c557
+ ld [wd0c5], a
+ pop af
+ farcall Func_118a7
+ ld a, $1
+ ld [wd0b5], a
+ ld hl, wd0b4
+ set 6, [hl]
+ jp Func_cc68
+
+Func_cd4f: ; cd4f (3:4d4f)
+ call Func_cd66
+ ld a, [$d696]
+ farcall Func_118bf
+ ld a, $16
+ ld [wMatchStartTheme], a
+ ld a, [$d696]
+ jr asm_cd2f
+
+Unknown_dd63: ; cd4f (3:4d4f)
+INCBIN "baserom.gbc",$cd63,$cd66 - $cd63
+
+Func_cd66: ; cd66 (3:4d66)
+ ld a, c
+ ld [wcc18], a
+ ld a, b
+ ld [wcc19], a
+ call Func_cc9e
+ ld a, c
+ ld [wDuelTheme], a
+ ret
+
+Func_cd76: ; cd76 (3:4d76)
+ ld a, $2
+ ld [wd0b5], a
+ ld hl, wd0b4
+ set 6, [hl]
+ jp Func_cc60
+
+Func_cd83: ; cd83 (3:4d83)
+ ld a, [$d415]
+ or a
+ jr nz, .asm_cd8c
+ call Func_cc9e
+.asm_cd8c
+ ld l, c
+ ld h, b
+ call Func_cc32
+ jp Func_cc6c
+
+Func_cd94: ; cd94 (3:4d94)
+ call Func_ca69
+ ld b, h
+Unknown_cd98:
+ dec a
+ and $3
+ add a
+ inc a
+ call Func_cca0
+ ld l, c
+ ld h, b
+ call Func_cc32
+ jp Func_cc74
+
+Func_cda8: ; cda8 (3:4da8)
+ ld a, [$d415]
+ or a
+ jr nz, .asm_cdb1
+ call Func_cc9e
+.asm_cdb1
+ ld l, c
+ ld h, b
+ call Func_c891
+ jp Func_cc6c
+
+Func_cdb9: ; cdb9 (3:4db9)
+ ld l, c
+ ld h, b
+ call Func_cc32
+ call Func_c111
+ ld a, $1
+ ld [wd412], a
+ call Func_cc78
+ pop hl
+ ret
+
+Func_cdcb: ; cdcb (3:4dcb)
+ ld a, [wd3b6]
+ ld [wd3aa], a
+Func_4dd1: ; cdd1 (3:4dd1)
+ farcall Func_1c50a
+ jp Func_cc60
+
+Func_cdd8: ; cdd8 (3:4dd8)
+ ld a, [wd3aa]
+ push af
+ ld a, [wd3ab]
+ push af
+ ld a, [$d696]
+ ld [wd3ab], a
+ call Func_39c3
+ call Func_4dd1
+ pop af
+ ld [wd3ab], a
+ pop af
+ ld [wd3aa], a
+ ret
+
+Func_cdf5: ; cdf5 (3:4df5)
+ ld a, [wd3aa]
+ push af
+ ld a, [wd3ab]
+ push af
+ ld a, [$d696]
+ ld [wd3ab], a
+ ld a, c
+ ld [$d3ac], a
+ ld a, b
+ ld [$d3ad], a
+ ld a, $2
+ ld [$d3ae], a
+ ld a, [wd3ab]
+ farcall Func_11857
+ farcall Func_1c485
+ pop af
+ ld [wd3ab], a
+ pop af
+ ld [wd3aa], a
+ jp Func_cc78
+
+Func_ce26: ; ce26 (3:4e26)
+ ld a, [wd3b6]
+ ld [wd3aa], a
+ farcall Func_1c455
+ rlca
+ add c
+ ld l, a
+ ld a, b
+ adc $0
+ ld h, a
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+
+Func_ce3a: ; ce3a (3:4e3a)
+ farcall Func_1c78d
+.asm_ce3e
+ call DoFrameIfLCDEnabled
+ farcall Func_1c7de
+ jr nz, .asm_ce3e
+ jp Func_cc78
+
+Func_ce4a: ; ce4a (3:4e4a)
+ ld a, [wd3b6]
+ ld [wd3aa], a
+ jr Func_ce3a
+
+Func_ce52: ; ce52 (3:4e52)
+ ld a, [wd3aa]
+ push af
+ ld a, [wd3ab]
+ push af
+ ld a, [$d696]
+asm_ce5d
+ ld [wd3ab], a
+ call Func_39c3
+ call Func_ce3a
+ pop af
+ ld [wd3ab], a
+ pop af
+ ld [wd3aa], a
+ ret
+
+Func_ce6f: ; ce6f (3:4e6f)
+ ld a, [wd3aa]
+ push af
+ ld a, [wd3ab]
+ push af
+ ld a, c
+ push af
+ call Func_cc9a
+ push bc
+ call Func_cc60
+ pop bc
+ pop af
+ jr asm_ce5d
+
+Func_ce84: ; ce84 (3:4e84)
+ call Func_c135
+ jp Func_cc60
+
+Func_ce8a: ; ce8a (3:4e8a)
+ xor a
+ ld [wd117], a
+ push bc
+ call Func_c2a3
+ pop bc
+ push bc
+ ld a, c
+ farcall BoosterPack_1031b
+ ld a, 1
+ ld [wd117], a
+ pop bc
+ ld a, b
+ cp $ff
+ jr z, .asm_ceb4
+ farcall BoosterPack_1031b
+ call Func_cc9e
+ ld a, c
+ cp $ff
+ jr z, .asm_ceb4
+ farcall BoosterPack_1031b
+.asm_ceb4
+ call Func_c2d4
+ jp Func_cc68
+
+Func_ceba: ; ceba (3:4eba)
+ xor a
+ ld [wd117], a
+ call Func_c2a3
+ ld hl, $4edd
+.asm_cec4
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_ced7
+ push hl
+ farcall BoosterPack_1031b
+ ld a, $1
+ ld [wd117], a
+ pop hl
+ inc hl
+ jr .asm_cec4
+.asm_ced7
+ call Func_c2d4
+ jp Func_cc60
+; 0xcedd
+
+INCBIN "baserom.gbc",$cedd,$cee2 - $cedd
+
+Func_cee2: ; cee2 (3:4ee2)
+ call Func_c2a3
+ ld a, c
+ cp $ff
+ jr z, .asm_cf09
+ or a
+ jr nz, .asm_cef0
+ ld a, [$d697]
+
+.asm_cef0
+ push af
+ farcall Func_10000
+ farcall Func_10031
+ pop af
+ bank1call Func_7594
+ call Func_c1a4
+ call DoFrameIfLCDEnabled
+ call Func_c2d4
+ jp Func_cc64
+
+.asm_cf09
+ xor a
+ jr .asm_cef0
+
+Func_cf0c: ; cf0c (3:4f0c)
+ ld a, c
+ call Func_1ce1
+ jr asm_cf16
+
+Func_cf12: ; cf12 (3:4f12)
+ ld a, c
+ call $1d1d
+
+asm_cf16
+ or a
+ jr nz, asm_cf1f
+
+asm_cf19
+ call Func_ccb9
+ jp Func_cc68
+
+asm_cf1f
+ call Func_ccb3
+ call Func_cc9a
+ jr z, asm_cf2a
+ jp Func_cc8b
+
+asm_cf2a
+ jp Func_cc68
+
+Func_cf2d: ; cf2d (3:4f2d)
+ push bc
+ call Func_cc60
+ pop bc
+ call Func_1caa
+ ld a, h
+ cp b
+ jr nz, .asm_cf3b
+ ld a, l
+ cp c
+
+.asm_cf3b
+ jr nc, asm_cf1f
+ jr asm_cf19
+
+Func_cf3f: ; cf3f (3:4f3f)
+ ld a, c
+ or a
+ jr nz, .asm_cf46
+ ld a, [$d697]
+
+.asm_cf46
+ call AddCardToCollection
+ jp Func_cc64
+
+Func_cf4c: ; cf4c (3:4f4c)
+ ld a, c
+ call Func_1d91
+ jp Func_cc64
+
+Func_cf53: ; cf53 (3:4f53)
+ ld c, $1
+ ld b, $0
+.asm_cf57
+ ld a, c
+ call Func_1d1d
+ add b
+ ld b, a
+ inc c
+ ld a, c
+ cp $8
+ jr c, .asm_cf57
+ ld a, b
+ or a
+ jr nz, Func_cf6d
+Func_cf67: ; cf67 (3:4f67)
+ call Func_ccb9
+ jp Func_cc78
+
+Func_cf6d: ; cf6d (3:4f6d)
+ call Func_ccb3
+ call Func_cc96
+ jr z, .asm_cf78
+ jp Func_cc8b
+
+.asm_cf78
+ jp Func_cc78
+
+Func_cf7b: ; cf7b (3:4f7b)
+ ld c, $1
+.asm_cf7d
+ push bc
+ ld a, c
+ call Func_1d1d
+ jr c, .asm_cf8c
+ ld b, a
+.asm_cf85
+ ld a, c
+ call Func_1d91
+ dec b
+ jr nz, .asm_cf85
+
+.asm_cf8c
+ pop bc
+ inc c
+ ld a, c
+ cp $8
+ jr c, .asm_cf7d
+ jp Func_cc60
+
+; This function doesn't look like a valid function, but it's pointed to in the table.
+Func_cf96: ; cf96 (3:4f96)
+ ld c, $0
+ call Func_ca69
+ ld de, $28b7
+ ld hl, $08fe
+ jr c, .asm_cfa4
+ inc c
+
+.asm_cfa4
+ call Func_ca69
+ rla
+ cp $8
+ jr c, .asm_cfad
+ inc c
+
+.asm_cfad
+ call Func_ca69
+.asm_cfb0
+ jr nz, .asm_cfb0
+ ld [$0138], sp
+ inc c
+ ld a, c
+ rlca
+ add $3
+ call Func_cca0
+ jp Func_cc8b
+
+Func_cfc0: ; cfc0 (3:4fc0)
+ call Func_cc96
+ jp Func_cc8b
+
+Func_cfc6: ; cfc6 (3:4fc6)
+ ld a, [wd3b6]
+ ld [wd3aa], a
+ ld a, c
+ farcall Func_1c52e
+ jp Func_cc64
+
+Func_cfd4: ; cfd4 (3:4fd4)
+ call Func_ca69
+ dec l
+ ld b, a
+.asm_cfd9
+ ld a, $5
+ call Random
+ ld e, $1
+ ld c, a
+ push bc
+ or a
+ jr z, .asm_cfea
+.asm_cfe5
+ sla e
+ dec c
+ jr nz, .asm_cfe5
+
+.asm_cfea
+ ld a, e
+ and b
+ pop bc
+ jr nz, .asm_cfd9
+ ld a, e
+ or b
+ push bc
+ ld c, a
+ call Func_ca8f
+ dec l
+ pop bc
+ ld b, $0
+ ld hl, $5006
+ add hl, bc
+ ld c, [hl]
+ call Func_ca8f
+ dec hl
+ jp Func_cc60
+
+INCBIN "baserom.gbc",$d006,$d00b - $d006
+
+Func_d00b: ; d00b (3:500b)
+ sla c
+ ld b, $0
+ ld hl, wce3f
+ add hl, bc
+ push hl
+ call Func_ca69
+ dec hl
+ ld e, a
+ ld d, $0
+ call Func_2f45
+ pop hl
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ jp Func_cc64
+
+Func_d025: ; d025 (3:5025)
+ call Func_ca69
+ dec hl
+ call Func_1ce1
+ jp c, Func_cf67
+ jp Func_cf6d
+
+Func_d032: ; d032 (3:5032)
+ call Func_ca69
+ dec hl
+ call $1d1d
+ jp c, Func_cf67
+ jp Func_cf6d
+
+Func_d03f: ; d03f (3:503f)
+ call Func_ca69
+ dec hl
+ call Func_1d91
+ jp Func_cc60
+
+Func_d049: ; d049 (3:5049)
+ call Func_cc96
+ jp Func_cc8b
+
+Func_d04f: ; d04f (3:504f)
+ call Func_cad8
+ jp Func_cc60
+
+Func_d055: ; d055 (3:5055)
+ ld a, c
+ call Func_c5ce
+ jp Func_cc64
+
+; this is called when the player is moving forward in the intro sequence
+Func_d05c: ; 505c (3:505c)
+ ld a, c
+ ld [$d339], a
+ ld a, b
+ ld [$d33a], a
+ call Func_c607
+.asm_d067
+ call DoFrameIfLCDEnabled
+ call Func_c491
+ call Func_c53d
+ ld a, [wd335]
+ and $03
+ jr nz, .asm_d067
+ call DoFrameIfLCDEnabled
+ call Func_c491
+ jp Func_cc78
+
+Func_d080: ; d080 (3:5080)
+ ld a, c
+ farcall Func_11893
+ jp Func_cc64
+
+Func_d088: ; d088 (3:5088)
+ ld a, c
+ ld [wd3ab], a
+ call Func_cc9a
+ call Func_c926
+ jp Func_cc68
+
+Func_d095: ; d095 (3:5095)
+ ld a, [wd3b6]
+ ld [wd3aa], a
+ push bc
+ call Func_cc9e
+ ld a, [wd3b6]
+ ld l, $5
+ call Func_39ad
+ res 4, [hl]
+ ld a, [hl]
+ or c
+ ld [hl], a
+ pop bc
+ ld e, c
+ ld a, [wConsole]
+ cp $2
+ jr nz, .asm_d0b6
+ ld e, b
+
+.asm_d0b6
+ ld a, e
+ farcall Func_1c57b
+ jp Func_cc68
+
+Func_d0be: ; d0be (3:50be)
+ ld a, [wd3b6]
+ ld [wd3aa], a
+ ld a, c
+ ld c, b
+ ld b, a
+ farcall Func_1c461
+ jp Func_cc78
+
+Func_d0ce: ; d0ce (3:50ce)
+ push bc
+ call DoFrameIfLCDEnabled
+ pop bc
+ dec c
+ jr nz, Func_d0ce
+ jp Func_cc64
+
+Func_d0d9: ; d0d9 (3:50d9)
+ ld a, [wd3b6]
+ ld [wd3aa], a
+ ld d, c
+ ld e, b
+ farcall Func_1c477
+ ld a, e
+ cp c
+ jp nz, Func_d48a
+ ld a, d
+ cp b
+ jp nz, Func_d48a
+ jp Func_d490
+
+Func_d0f2: ; d0f2 (3:50f2)
+ ld a, [wPlayerXCoord]
+ cp c
+ jp nz, Func_d48a
+ ld a, [wPlayerYCoord]
+ cp b
+ jp nz, Func_d48a
+ jp Func_d490
+
+Func_d103: ; d103 (3:5103)
+ ld a, [wd3aa]
+ push af
+ ld a, [wd3ab]
+ push af
+ ld a, c
+ ld [wd3ab], a
+ call Func_39c3
+ jr c, .asm_d119
+ call $54d1
+ jr .asm_d11c
+
+.asm_d119
+ call $54e6
+
+.asm_d11c
+ pop af
+ ld [wd3ab], a
+ pop af
+ ld [wd3aa], a
+ ret
+
+Func_d125: ; d125 (3:5125)
+ ld a, c
+ push af
+ call Func_c2a3
+ pop af
+ farcall Medal_1029e
+ call Func_c2d4
+ jp Func_cc64
+
+Func_d135: ; d135 (3:5135)
+ sla c
+ ld b, $0
+ ld hl, wce3f
+ add hl, bc
+ push hl
+ ld a, [wd32e]
+ rlca
+ ld c, a
+ ld b, $0
+ ld hl, $5151
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ pop hl
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ jp Func_cc64
+
+INCBIN "baserom.gbc",$d153,$d16b - $d153
+
+Func_d16b: ; d16b (3:516b)
+ ld hl, wd0c8
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ push de
+ sla c
+ ld b, $0
+ ld hl, wce3f
+ add hl, bc
+ push hl
+ ld a, [$d696]
+ farcall Func_11893
+ pop hl
+ ld a, [wd0c8]
+ ld [hli], a
+ ld a, [wd0c9]
+ ld [hl], a
+ pop de
+ ld hl, wd0c8
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ jp Func_cc64
+
+Func_d195: ; d195 (3:5195)
+ ld a, [wd3ab]
+ push af
+ call Func_ca69
+ ld b, l
+ inc a
+ ld c, a
+ call Func_ca8f
+ ld b, l
+ call Func_f580
+ pop af
+ ld [wd3ab], a
+ jp Func_cc60
+
+Func_d1ad: ; d1ad (3:51ad)
+ call MainMenu_c75a
+ jp Func_cc60
+
+Func_d1b3: ; d1b3 (3:51b3)
+ call Func_ca69
+ ld b, h
+ dec a
+ cp $2
+ jr c, .asm_d1c3
+ ld a, $d
+ call Random
+ add $2
+
+.asm_d1c3
+ ld hl, $51dc
+asm_d1c6
+ ld e, a
+ add a
+ add e
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hli]
+ ld [$d697], a
+ ld a, [hli]
+ ld [wce3f], a
+ ld a, [hl]
+ ld [wce40], a
+ jp Func_cc60
+
+INCBIN "baserom.gbc",$d1dc,$d209 - $d1dc
+
+Func_d209: ; d209 (3:5209)
+ call Func_ca69
+ ld [hl], c
+ ld e, a
+.asm_d20e
+ call UpdateRNGSources
+ ld d, $8
+ and $3
+ ld c, a
+ ld b, a
+.asm_d217
+ jr z, .asm_d21e
+ srl d
+ dec b
+ jr .asm_d217
+
+.asm_d21e
+ ld a, d
+ and e
+ jr nz, .asm_d20e
+ push bc
+ ld b, $0
+ ld hl, $5240
+ add hl, bc
+ ld a, [hl]
+ call Func_cac5
+ pop bc
+ ld hl, $5234
+ ld a, c
+ jr asm_d1c6
+
+INCBIN "baserom.gbc",$d234,$d244 - $d234
+
+Func_d244: ; d244 (3:5244)
+ ld a, c
+ farcall Func_80ba4
+ jp Func_cc64
+
+Func_d24c: ; d24c (3:524c)
+ ld hl, $525e
+ xor a
+ call Func_d28c
+ ld a, [$d695]
+ ld c, a
+ call Func_ca8f
+ halt
+ jp Func_cc60
+
+INCBIN "baserom.gbc",$d25e,$d271 - $d25e
+
+Func_d271: ; d271 (3:5271)
+ ld hl, $527b
+ xor a
+ call Func_d28c
+ jp Func_cc60
+; 0xd27b
+
+INCBIN "baserom.gbc",$d27b,$d28c - $d27b
+
+Func_d28c: ; d28c (3:528c)
+ ld [$d416], a
+ push hl
+ call Func_c241
+ call Func_c915
+ call DoFrameIfLCDEnabled
+ pop hl
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ push hl
+ ld h, [hl]
+ ld l, a
+ or h
+ jr z, .asm_d2a8
+ call Func_c8ba
+
+.asm_d2a8
+ ld a, $1
+ call Func_c29b
+ pop hl
+ inc hl
+ ld a, [hli]
+ push hl
+ ld h, [hl]
+ ld l, a
+ ld a, [$d416]
+ farcall Func_111e9
+ pop hl
+ inc hl
+ ld a, [hli]
+ ld [$d417], a
+ push hl
+
+.asm_d2c1
+ call DoFrameIfLCDEnabled
+ call MenuCursorAcceptInput
+ jr nc, .asm_d2c1
+ ld a, [hCurrentMenuItem]
+ cp e
+ jr z, .asm_d2d9
+ ld a, [$d417]
+ or a
+ jr z, .asm_d2c1
+ ld e, a
+ ld [hCurrentMenuItem], a
+
+.asm_d2d9
+ pop hl
+ ld a, [hli]
+ push hl
+ ld h, [hl]
+ ld l, a
+ ld a, e
+ ld [hl], a
+ add a
+ ld c, a
+ ld b, $0
+ pop hl
+ inc hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ jr z, .asm_d2f5
+ add hl, bc
+ ld a, [hli]
+ ld [wce3f], a
+ ld a, [hl]
+ ld [wce40], a
+
+.asm_d2f5
+ ret
+
+Func_d2f6: ; d2f6 (3:52f6)
+ ld hl, $530c
+ xor a
+ call Func_d28c
+ ld a, [$d694]
+ ld c, a
+ call Func_ca8f
+ ld [hl], l
+ xor a
+ ld [$d694], a
+ jp Func_cc60
+; 0xd30c
+
+INCBIN "baserom.gbc",$d30c,$d317 - $d30c
+
+Func_d317: ; d317 (3:5317)
+ ld hl, $532b
+ ld a, [$d694]
+ call Func_d28c
+ ld a, [$d694]
+ ld c, a
+ call Func_ca8f
+ ld [hl], l
+ jp Func_cc60
+
+
+INCBIN "baserom.gbc",$d32b,$d336 - $d32b
DeckMachine_d336: ; d336 (3:5336)
push bc
@@ -1405,17 +2633,299 @@ DeckMachine_d336: ; d336 (3:5336)
jr z, .asm_d360
dec a
ld [wd0a9], a
- farcallx $2, $7a04
+ farcall Func_ba04
jr .asm_d364
.asm_d360
- farcallx $2, $719d
+ farcall Func_b19d
.asm_d364
call Func_37a0
- call $42d4
- jp $4c64
-; 0xd36d
+ call Func_c2d4
+ jp Func_cc64
+
+Func_d36d: ; d36d (3:536d)
+ ld a, [wd413]
+ ld l, a
+ ld a, [wd414]
+ ld h, a
+ inc hl
+ ld a, [hli]
+ ld a, [hli]
+ ld [wd0bb], a
+ ld a, [hli]
+ ld [wd0bc], a
+ ld a, [hli]
+ ld [wd0bd], a
+ ld a, [hli]
+ ld [wd0be], a
+ ld hl, wd0b4
+ set 4, [hl]
+ jp Func_cc70
+
+Func_d38f: ; d38f (3:538f)
+ farcall Func_10c96
+ jp Func_cc64
+
+Func_d396: ; d396 (3:5396)
+ farcall Func_1157c
+ jp Func_cc64
+
+Func_d39d: ; d39d (3:539d)
+ ld a, c
+ or a
+ jr nz, .asm_d3ac
+ farcall Func_10dba
+ ld c, a
+ call Func_ca8f
+ ld [hl], d
+ jr .asm_d3b6
+
+.asm_d3ac
+ ld a, $3
+ ld [wd0b5], a
+ ld hl, wd0b4
+ set 6, [hl]
+
+.asm_d3b6
+ jp Func_cc64
+
+Func_d3b9: ; d3b9 (3:53b9)
+ call Func_3917
+ ld a, $4
+ ld [wd0b5], a
+ ld hl, wd0b4
+ set 6, [hl]
+ jp Func_cc60
+
+Func_d3c9: ; d3c9 (3:53c9)
+ ld a, c
+ farcall Func_10a70
+ jp Func_cc64
+
+Func_d3d1: ; d3d1 (3:53d1)
+ jp Func_cc60
+
+Func_d3d4: ; d3d4 (3:53d4)
+ ld a, [$d693]
+ bank1call Func_7576
+ jp Func_cc60
+
+INCBIN "baserom.gbc",$d3dd,$d3e0 - $d3dd
+
+Func_d3e0: ; d3e0 (3:53e0)
+ ld a, $1
+ ld [wd32e], a
+ farcall Func_11024
+.asm_d3e9
+ call DoFrameIfLCDEnabled
+ farcall Func_11060
+ ld a, [wd33e]
+ cp $2
+ jr nz, .asm_d3e9
+ farcall Func_10f2e
+ jp Func_cc60
+
+Func_d3fe: ; d3fe (3:53fe)
+ ld a, c
+ ld [wd112], a
+ call PlaySong
+ jp Func_cc64
+
+Func_d408: ; d408 (3:5408)
+ ld a, c
+ ld [wd111], a
+ jp Func_cc64
+
+Func_d40f: ; d40f (3:540f)
+ ld a, c
+ call Func_3c83
+ jp Func_cc64
+
+Func_d416: ; d416 (3:5416)
+ ld a, c
+ call Func_3796
+ jp Func_cc64
+
+Func_d41d: ; d41d (3:541d)
+ call Func_39fc
+ jp Func_cc60
+
+Func_d423: ; d423 (3:5423)
+ call Func_379b
+ jp Func_cc60
+
+Func_d429: ; d429 (3:5429)
+ call Func_37a0
+ jp Func_cc60
+
+Func_d42f: ; d42f (3:542f)
+ call Func_3c96
+ jp Func_cc60
+
+Func_d435: ; d435 (3:5435)
+ ld a, c
+ farcall Func_1c83d
+ jp Func_cc64
+
+Func_d43d: ; d43d (3:543d)
+ ld a, $6
+ ld [wd0b5], a
+ ld hl, wd0b4
+ set 6, [hl]
+ jp Func_cc60
+
+Func_d44a: ; d44a (3:544a)
+ ld a, c
+ ld c, b
+ call Func_ca92
+ jp Func_cc78
+
+Func_d452: ; d452 (3:5452)
+ ld a, c
+ push af
+ call Func_ca6c
+ inc a
+ ld c, a
+ pop af
+ call Func_ca92
+ jp Func_cc64
+
+Func_d460: ; d460 (3:5460)
+ ld a, c
+ call Func_ca6c
+ or a
+ jr z, asm_d46d
+asm_d467
+ call Func_ccb9
+ jp Func_cc68
+
+asm_d46d
+ call Func_ccb3
+ call Func_cc9a
+ jr z, .asm_d478
+ jp Func_cc8b
+
+.asm_d478
+ jp Func_cc68
+
+Func_d47b: ; d47b (3:547b)
+ ld a, c
+ call Func_ca6c
+ or a
+ jr nz, asm_d46d
+ jr asm_d467
+
+Func_d484: ; d484 (3:5484)
+ call Func_d4b6
+ cp c
+ jr z, Func_d490
+
+Func_d48a: ; d48a (3:548a)
+ call Func_ccb9
+ jp Func_cc6c
+
+Func_d490: ; d490 (3:5490)
+ call Func_ccb3
+ call Func_cc9e
+ jr z, .asm_d49b
+ jp Func_cc8b
+
+.asm_d49b
+ jp Func_cc6c
+
+Func_d49e: ; d49e (3:549e)
+ call Func_d4b6
+ cp c
+ jr nz, Func_d490
+ jr Func_d48a
+
+Func_d4a6: ; d4a6 (3:54a6)
+ call Func_d4b6
+ cp c
+ jr nc, Func_d490
+ jr Func_d48a
+
+Func_d4ae: ; d4ae (3:54ae)
+ call Func_d4b6
+ cp c
+ jr c, Func_d490 ; 0xd4b2 $dc
+ jr Func_d48a ; 0xd4b4 $d4
+
+Func_d4b6: ; d4b6 (3:54b6)
+ ld a, c
+ ld c, b
+ call Func_ca6c
+ ret
+
+Func_d4bc: ; d4bc (3:54bc)
+ ld a, c
+ call Func_cac5
+ jp Func_cc64
+
+Func_d4c3: ; d4c3 (3:54c3)
+ ld a, c
+ call Func_cad0
+ jp Func_cc64
+
+Func_d4ca: ; d4ca (3:54ca)
+ ld a, c
+ call Func_ca6c
+ or a
+ jr z, asm_d4e6
+Func_d4d1:
+ call Func_ccb3
+ call Func_cc9a
+ jr z, .asm_d4dc
+ jp Func_cc8b
+.asm_d4dc
+ jp Func_cc68
+
+Func_d4df:
+ ld a, c
+ call Func_ca6c
+ or a
+ jr z, Func_d4d1
+asm_d4e6
+ call Func_ccb9
+ jp Func_cc68
+; 0xd4ec
+
+INCBIN "baserom.gbc",$d4ec,$f580 - $d4ec
+
+Func_f580: ; f580 (3:7580)
+ call Func_ca69
+ ld b, h
+ cp $3
+ jr z, .asm_f596
+ call Func_ca69
+ ld b, l
+ cp $3
+ ld d, $18
+ jr nz, .asm_f598
+ ld a, $2
+ jr .asm_f5ac
+
+.asm_f596
+ ld d, $19
+
+.asm_f598
+ ld a, d
+ call Random
+ ld c, a
+ call $75cc
+ jr c, .asm_f598
+ call $75d4
+ ld b, $0
+ ld hl, $75b3
+ add hl, bc
+ ld a, [hl]
+
+.asm_f5ac
+ ld [wd3ab], a
+ ld [$d696], a
+ ret
+; 0xf5b3
-INCBIN "baserom.gbc",$d36d,$fc2b - $d36d
+INCBIN "baserom.gbc",$f5b3,$fc2b - $f5b3
Func_fc2b: ; fc2b (3:7c2b)
ld a, [wd0c3]