summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorU-Fish-PC\Daniel <corrnondacqb@yahoo.com>2014-04-25 07:35:16 -0400
committerU-Fish-PC\Daniel <corrnondacqb@yahoo.com>2014-04-25 07:35:16 -0400
commitd91420900672470c72d4219b520758024c1cdb7c (patch)
tree0d40930b5748626a8b0c9e273f9f12fc4396e081
parentca6b61b139e11224709a71d57aff10a61ba77e9e (diff)
More home bank disassembly
-rwxr-xr-xengine/bank1.asm13
-rwxr-xr-xengine/bank2.asm5
-rwxr-xr-xengine/bank20.asm5
-rwxr-xr-xengine/bank3.asm7
-rwxr-xr-xengine/bank4.asm25
-rwxr-xr-xengine/bank7.asm10
-rwxr-xr-xengine/home.asm567
7 files changed, 587 insertions, 45 deletions
diff --git a/engine/bank1.asm b/engine/bank1.asm
index 3ef05c9..1f9b459 100755
--- a/engine/bank1.asm
+++ b/engine/bank1.asm
@@ -39,10 +39,19 @@ Func_4050: ; 4050 (1:4050)
ret
Func_405a: ; 405a (1:405a)
-INCBIN "baserom.gbc",$405a,$6785 - $405a
+INCBIN "baserom.gbc",$405a,$406f - $405a
+
+Func_406f: ; 406f (1:406f)
+INCBIN "baserom.gbc",$406f,$409f - $406f
+
+Func_409f: ; 409f (1:409f)
+INCBIN "baserom.gbc",$409f,$6785 - $409f
Func_6785: ; 6785 (1:6785)
INCBIN "baserom.gbc",$6785,$7571 - $6785
Func_7571: ; 7571 (1:7571)
-INCBIN "baserom.gbc",$7571,$8000 - $7571 \ No newline at end of file
+INCBIN "baserom.gbc",$7571,$758f - $7571
+
+Func_758f: ; 758f (1:758f)
+INCBIN "baserom.gbc",$758f,$8000 - $758f \ No newline at end of file
diff --git a/engine/bank2.asm b/engine/bank2.asm
index ea1347a..b849aa9 100755
--- a/engine/bank2.asm
+++ b/engine/bank2.asm
@@ -34,4 +34,7 @@ Func_92ad: ; 92ad (2:52ad)
INCBIN "baserom.gbc",$92b4,$a288 - $92b4
Func_a288: ; a288 (2:6288)
-INCBIN "baserom.gbc",$a288,$c000 - $a288 \ No newline at end of file
+INCBIN "baserom.gbc",$a288,$b177 - $a288
+
+Func_b177: ; b177 (2:7177)
+INCBIN "baserom.gbc",$b177,$c000 - $b177 \ No newline at end of file
diff --git a/engine/bank20.asm b/engine/bank20.asm
index 14c7d98..e3e0100 100755
--- a/engine/bank20.asm
+++ b/engine/bank20.asm
@@ -118,7 +118,10 @@ Func_80418: ; 80418 (20:4418)
INCBIN "baserom.gbc",$80418,$80480 - $80418
Func_80480: ; 80480 (20:4480)
-INCBIN "baserom.gbc",$80480,$80b7a - $80480
+INCBIN "baserom.gbc",$80480,$804d8 - $80480
+
+Func_804d8: ; 804d8 (20:44d8)
+INCBIN "baserom.gbc",$804d8,$80b7a - $804d8
Func_80b7a: ; 80b7a (20:4b7a)
INCBIN "baserom.gbc",$80b7a,$80e5a - $80b7a
diff --git a/engine/bank3.asm b/engine/bank3.asm
index c85bd0e..57c3195 100755
--- a/engine/bank3.asm
+++ b/engine/bank3.asm
@@ -529,8 +529,8 @@ Func_c469: ; c469 (3:4469)
rrca
ld [$d234], a
ret
-; 0xc484
+Func_c484: ; c484 (3:4484)
INCBIN "baserom.gbc",$c484,$c491 - $c484
Func_c491: ; c491 (3:4491)
@@ -622,7 +622,10 @@ Func_c510: ; c510 (3:4510)
ret
; 0xc53d
-INCBIN "baserom.gbc",$c53d,$c5ac - $c53d
+INCBIN "baserom.gbc",$c53d,$c554 - $c53d
+
+Func_c554: ; c554 (3:4554)
+INCBIN "baserom.gbc",$c554,$c5ac - $c554
Func_c5ac: ; c5ac (3:45ac)
ld a, [$ff90]
diff --git a/engine/bank4.asm b/engine/bank4.asm
index ef2ff3b..103fd18 100755
--- a/engine/bank4.asm
+++ b/engine/bank4.asm
@@ -494,13 +494,19 @@ Func_11184: ; 11184 (4:5184)
INCBIN "baserom.gbc",$111b3,$111e9 - $111b3
Func_111e9: ; 111e9 (4:51e9)
-INCBIN "baserom.gbc",$111e9,$11320 - $111e9
+INCBIN "baserom.gbc",$111e9,$1124d - $111e9
+
+Func_1124d: ; 1124d (4:524d)
+INCBIN "baserom.gbc",$1124d,$11320 - $1124d
Func_11320: ; 11320 (4:5320)
INCBIN "baserom.gbc",$11320,$11416 - $11320
Func_11416: ; 11416 (4:5416)
-INCBIN "baserom.gbc",$11416,$1162a - $11416
+INCBIN "baserom.gbc",$11416,$11430 - $11416
+
+Func_11430: ; 11430 (4:5430)
+INCBIN "baserom.gbc",$11430,$1162a - $11430
MapHeaders: ; 1162a (4:562a)
; OVERWORLD_MAP
@@ -962,7 +968,10 @@ Func_1288c: ; 1288c (4:688c)
INCBIN "baserom.gbc",$1288c,$128a9 - $1288c
Func_128a9: ; 128a9 (4:68a9)
-INCBIN "baserom.gbc",$128a9,$1299f - $128a9
+INCBIN "baserom.gbc",$128a9,$1296e - $128a9
+
+Func_1296e: ; 1296e (4:696e)
+INCBIN "baserom.gbc",$1296e,$1299f - $1296e
Func_1299f: ; 1299f (4:699f)
push af
@@ -1031,7 +1040,10 @@ Func_129d9: ; 129d9 (4:69d9)
ret
; 0x129fa
-INCBIN "baserom.gbc",$129fa,$12ab5 - $129fa
+INCBIN "baserom.gbc",$129fa,$12a21 - $129fa
+
+Func_12a21: ; 12a21 (4:6a21)
+INCBIN "baserom.gbc",$12a21,$12ab5 - $12a21
Func_12ab5: ; 12ab5 (4:6ab5)
push hl
@@ -1273,4 +1285,7 @@ Func_12c5e: ; 12c5e (4:6c5e)
INCBIN "baserom.gbc",$12c5e,$131b3 - $12c5e
Func_131b3: ; 131b3 (4:71b3)
-INCBIN "baserom.gbc",$131b3,$14000 - $131b3 \ No newline at end of file
+INCBIN "baserom.gbc",$131b3,$131d3 - $131b3
+
+Func_131d3: ; 131d3 (4:71d3)
+INCBIN "baserom.gbc",$131d3,$14000 - $131d3 \ No newline at end of file
diff --git a/engine/bank7.asm b/engine/bank7.asm
index 7951bfe..f8e5911 100755
--- a/engine/bank7.asm
+++ b/engine/bank7.asm
@@ -385,7 +385,10 @@ Func_1c58e: ; 1c58e (7:458e)
INCBIN "baserom.gbc",$1c58e,$1c5e9 - $1c58e
Func_1c5e9: ; 1c5e9 (7:45e9)
-INCBIN "baserom.gbc",$1c5e9,$1c6f8 - $1c5e9
+INCBIN "baserom.gbc",$1c5e9,$1c610 - $1c5e9
+
+Func_1c610: ; 1c610 (7:4610)
+INCBIN "baserom.gbc",$1c610,$1c6f8 - $1c610
Func_1c6f8: ; 1c6f8 (7:46f8)
INCBIN "baserom.gbc",$1c6f8,$1c72e - $1c6f8
@@ -403,4 +406,7 @@ Func_1d078: ; 1d078 (7:5078)
INCBIN "baserom.gbc",$1d078,$1d306 - $1d078
Func_1d306: ; 1d306 (7:5306)
-INCBIN "baserom.gbc",$1d306,$20000 - $1d306 \ No newline at end of file
+INCBIN "baserom.gbc",$1d306,$1d6ad - $1d306
+
+Func_1d6ad: ; 1d6ad (7:56ad)
+INCBIN "baserom.gbc",$1d6ad,$20000 - $1d6ad \ No newline at end of file
diff --git a/engine/home.asm b/engine/home.asm
index 992aab1..8f06811 100755
--- a/engine/home.asm
+++ b/engine/home.asm
@@ -249,10 +249,19 @@ Func_028a: ; 028a (0:028a)
ret
Func_02b9: ; 02b9 (0:02b9)
-INCBIN "baserom.gbc",$02b9,$02c2 - $02b9
+ ld a, [$cabb]
+ and $fb
+ ld [$cabb], a
+ ret
Func_02c2: ; 02c2 (0:02c2)
-INCBIN "baserom.gbc",$02c2,$02dd - $02c2
+ ld a, [$cabb]
+ or $4
+ ld [$cabb], a
+ ret
+; 0x2cb
+
+INCBIN "baserom.gbc",$02cb,$02dd - $02cb
Func_02dd: ; 02dd (0:02dd)
ld a, [$ffff]
@@ -422,16 +431,38 @@ Func_03ec: ; 03ec (0:03ec)
ret
Func_0404: ; 0404 (0:0404)
-INCBIN "baserom.gbc",$0404,$040c - $0404
+ ld a, $c0
+ jr asm_411
+
+Func_0408: ; 0408 (0:0408)
+ or $80
+ jr asm_411
Func_040c: ; 040c (0:040c)
-INCBIN "baserom.gbc",$040c,$0423 - $040c
+ ld [$cabc], a
+asm_40f
+ ld a, $80
+asm_411
+ ld [$cabf], a
+ ld a, [$cabb]
+ rla
+ ret c
+ push hl
+ push de
+ push bc
+ call Func_042d
+ pop bc
+ pop de
+ pop hl
+ ret
Func_0423: ; 0423 (0:0423)
-INCBIN "baserom.gbc",$0423,$0428 - $0423
+ ld [$cabd], a
+ jr asm_40f
Func_0428: ; 0428 (0:0428)
-INCBIN "baserom.gbc",$0428,$042d - $0428
+ ld [$cabe], a
+ jr asm_40f
Func_042d: ; 042d (0:042d)
ld a, [$cabf]
@@ -688,6 +719,7 @@ Func_05b6: ; 05b6 (0:05b6)
ld l, [hl]
ld h, a
pop af
+Func_05c1: ; 05c1 (0:05c1)
jp [hl]
; 0x5c2
@@ -1051,7 +1083,41 @@ Func_0879: ; 0879 (0:0879)
INCBIN "baserom.gbc",$088f,$089b - $088f
Func_089b: ; 089b (0:089b)
-INCBIN "baserom.gbc",$089b,$099c - $089b
+ push hl
+ push de
+ ld hl, $caca
+ ld a, [hli]
+ ld d, [hl]
+ inc hl
+ ld e, a
+ ld a, d
+ rlca
+ rlca
+ xor e
+ rra
+ push af
+ ld a, d
+ xor e
+ ld d, a
+ ld a, [hl]
+ xor e
+ ld e, a
+ pop af
+ rl e
+ rl d
+ ld a, d
+ xor e
+ inc [hl]
+ dec hl
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ pop de
+ pop hl
+ ret
+; 0x8bf
+
+INCBIN "baserom.gbc",$08bf,$099c - $08bf
Func_099c: ; 099c (0:099c)
xor a
@@ -1839,7 +1905,18 @@ Func_1f0f: ; 1f0f (0:1f0f)
INCBIN "baserom.gbc",$1f4f,$2119 - $1f4f
Func_2119: ; 2119 (0:2119)
-INCBIN "baserom.gbc",$2119,$21c5 - $2119
+ ld hl, $2968
+ ld de, $9000
+ ld b, $38
+ ld a, $1d
+ call Func_0745
+ ld c, $10
+ call Func_070c
+ call Func_078e
+ ret
+; 0x212f
+
+INCBIN "baserom.gbc",$212f,$21c5 - $212f
Func_21c5: ; 21c5 (0:21c5)
push de
@@ -1956,7 +2033,26 @@ Func_21f2: ; 21f2 (0:21f2)
ret
Func_2275: ; 2275 (0:2275)
-INCBIN "baserom.gbc",$2275,$2298 - $2275
+ ld a, d
+ dec a
+ ld [$cd04], a
+ ld a, e
+ ld [$ffa8], a
+ call Func_2298
+ xor a
+ ld [$ffb0], a
+ ld [$ffa9], a
+ ld a, $88
+ ld [$cd06], a
+ ld a, $80
+ ld [$cd07], a
+ ld hl, $c600
+.asm_2292
+ xor a
+ ld [hl], a
+ inc l
+ jr nz, .asm_2292
+ ret
Func_2298: ; 2298 (0:2298)
xor a
@@ -2400,7 +2496,92 @@ Func_256d: ; 256d (0:256d)
INCBIN "baserom.gbc",$2589,$264b - $2589
Func_264b: ; 264b (0:264b)
-INCBIN "baserom.gbc",$264b,$26da - $264b
+ xor a
+ ld [$cd99], a
+ ld a, [$ff8f]
+ or a
+ jr z, .asm_2685
+ ld b, a
+ ld a, [$cd14]
+ ld c, a
+ ld a, [$cd10]
+ bit 6, b
+ jr z, .asm_266b
+ dec a
+ bit 7, a
+ jr z, .asm_2674
+ ld a, [$cd14]
+ dec a
+ jr .asm_2674
+.asm_266b
+ bit 7, b
+ jr z, .asm_2685
+ inc a
+ cp c
+ jr c, .asm_2674
+ xor a
+.asm_2674
+ push af
+ ld a, $1
+ ld [$cd99], a
+ call Func_26e9
+ pop af
+ ld [$cd10], a
+ xor a
+ ld [$cd0f], a
+.asm_2685
+ ld a, [$cd10]
+ ld [$ffb1], a
+ ld hl, $cd17
+ ld a, [hli]
+ or [hl]
+ jr z, .asm_26a9
+ ld a, [hld]
+ ld l, [hl]
+ ld h, a
+ ld a, [$ffb1]
+ call Func_05c1
+ jr nc, asm_26d1
+.asm_269b
+ call Func_270b
+ call Func_26c0
+ ld a, [$cd10]
+ ld e, a
+ ld a, [$ffb1]
+ scf
+ ret
+.asm_26a9
+ ld a, [$ff91]
+ and $3
+ jr z, asm_26d1
+ and $1
+ jr nz, .asm_269b
+ ld a, [$cd10]
+ ld e, a
+ ld a, $ff
+ ld [$ffb1], a
+ call Func_26c0
+ scf
+ ret
+
+Func_26c0: ; 26c0 (0:26c0)
+ push af
+ ld a, [$ffb1]
+ inc a
+ jr z, .asm_26ca
+ ld a, $2
+ jr .asm_26cc
+.asm_26ca
+ ld a, $3
+.asm_26cc
+ call Func_3796
+ pop af
+ ret
+asm_26d1
+ ld a, [$cd99]
+ or a
+ jr z, Func_26da
+ call Func_3796
Func_26da: ; 26da (0:26da)
ld hl, $cd0f
@@ -2433,9 +2614,13 @@ asm_26ec
call Func_06c3
or a
ret
-; 0x270b
-INCBIN "baserom.gbc",$270b,$2a1a - $270b
+Func_270b: ; 270b (0:270b)
+ ld a, [$cd15]
+ jr asm_26ec
+; 0x2710
+
+INCBIN "baserom.gbc",$2710,$2a1a - $2710
Func_2a1a: ; 2a1a (0:2a1a)
xor a
@@ -3071,7 +3256,26 @@ Func_37a0: ; 37a0 (0:37a0)
INCBIN "baserom.gbc",$37a5,$380e - $37a5
Func_380e: ; 380e (0:380e)
-INCBIN "baserom.gbc",$380e,$383d - $380e
+ ld a, [$d0c1]
+ bit 7, a
+ ret nz
+ ld a, [$ff80]
+ push af
+ ld a, BANK(Func_c484)
+ call BankswitchHome
+ call Func_c484
+ call Func_c554
+ ld a, BANK(Func_1c610)
+ call BankswitchHome
+ call Func_1c610
+ call Func_3cb4
+ ld a, BANK(Func_804d8)
+ call BankswitchHome
+ call Func_804d8
+ call Func_089b
+ pop af
+ call BankswitchHome
+ ret
Func_383d: ; 383d (0:383d)
ld a, $1
@@ -3108,28 +3312,119 @@ PointerTable_3864: ; 3864 (0:3864)
dw Func_3874
Func_3874: ; 3874 (0:3874)
-INCBIN "baserom.gbc",$3874,$3876 - $3874
+ scf
+ ret
Func_3876: ; 3876 (0:3876)
-INCBIN "baserom.gbc",$3876,$38a3 - $3876
+ ld a, [$ff80]
+ push af
+ call Func_379b
+ ld a, $8
+ call Func_3785
+ ld a, $3
+ ld [$d0c2], a
+ ld a, [$d10e]
+ or $10
+ ld [$d10e], a
+ farcall Func_b177
+ ld a, [$d10e]
+ and $ef
+ ld [$d10e], a
+ call Func_37a0
+ pop af
+ call BankswitchHome
+ scf
+ ret
Func_38a3: ; 38a3 (0:38a3)
-INCBIN "baserom.gbc",$38a3,$38c0 - $38a3
+ ld a, $2
+ ld [$d0c2], a
+ xor a
+ ld [$d112], a
+ ld a, $ff
+ ld [$d0c3], a
+ ld a, $2
+ ld [$cc1a], a
+ ld a, $8
+ call Func_3785
+ bank1call Func_758f
+ scf
+ ret
Func_38c0: ; 38c0 (0:38c0)
-INCBIN "baserom.gbc",$38c0,$38db - $38c0
+ ld a, $1
+ ld [$d0c2], a
+ xor a
+ ld [$d112], a
+ call Func_07b6
+ xor a
+ ld [$ba44], a
+ call Func_07be
+ call Func_3a3b
+ bank1call Func_409f
+ scf
+ ret
Func_38db: ; 38db (0:38db)
-INCBIN "baserom.gbc",$38db,$38fb - $38db
+ ld a, $6
+ ld [$d111], a
+ call Func_39fc
+ call Func_07b6
+ xor a
+ ld [$ba44], a
+ call Func_07be
+asm_38ed
+ farcall Func_131d3
+ ld a, $9
+ ld [$d111], a
+ call Func_39fc
+ scf
+ ret
Func_38fb: ; 38fb (0:38fb)
-INCBIN "baserom.gbc",$38fb,$3911 - $38fb
+ xor a
+ ld [$d112], a
+ bank1call Func_406f
+ call Func_07b6
+ ld a, [$ba44]
+ call Func_07be
+ cp $ff
+ jr z, asm_38ed
+ scf
+ ret
Func_3911: ; 3911 (0:3911)
-INCBIN "baserom.gbc",$3911,$3927 - $3911
+ farcall Func_1d6ad
+ or a
+ ret
+; 0x3917
+
+INCBIN "baserom.gbc",$3917,$3927 - $3917
Func_3927: ; 3927 (0:3927)
-INCBIN "baserom.gbc",$3927,$395a - $3927
+ push hl
+ call Func_3946
+ ld a, [hl]
+ pop hl
+ ret
+; 0x392e
+
+INCBIN "baserom.gbc",$392e,$3946 - $392e
+
+Func_3946: ; 3946 (0:3946)
+ push bc
+ srl b
+ srl c
+ swap c
+ ld a, c
+ and $f0
+ or b
+ ld c, a
+ ld b, $0
+ ld hl, $d133
+ add hl, bc
+ pop bc
+ ret
Func_395a: ; 395a (0:395a)
ld a, [$ff80]
@@ -3151,22 +3446,181 @@ Unknown_397b: ; 397b (0:397b)
INCBIN "baserom.gbc",$397b,$3997 - $397b
Func_3997: ; 3997 (0:3997)
-INCBIN "baserom.gbc",$3997,$39ad - $3997
+ ld a, [$ff80]
+ push af
+ ld a, BANK(Func_1c056)
+ call BankswitchHome
+ call Func_1c056
+ pop af
+ call BankswitchHome
+ ret
+; 0x39a7
+
+INCBIN "baserom.gbc",$39a7,$39ad - $39a7
Func_39ad: ; 39ad (0:39ad)
-INCBIN "baserom.gbc",$39ad,$39c3 - $39ad
+ push bc
+ cp $8
+ jr c, .asm_39b4
+ rst $38
+ xor a
+.asm_39b4
+ add a
+ add a
+ ld h, a
+ add a
+ add h
+ add l
+ ld l, a
+ ld h, $0
+ ld bc, $d34a
+ add hl, bc
+ pop bc
+ ret
Func_39c3: ; 39c3 (0:39c3)
-INCBIN "baserom.gbc",$39c3,$39fc - $39c3
+ push hl
+ push bc
+ push de
+ xor a
+ ld [$d3aa], a
+ ld b, a
+ ld c, $8
+ ld de, $000c
+ ld hl, $d34a
+ ld a, [$d3ab]
+.asm_39d6
+ cp [hl]
+ jr z, .asm_39e1
+ add hl, de
+ inc b
+ dec c
+ jr nz, .asm_39d6
+ scf
+ jr z, .asm_39e6
+.asm_39e1
+ ld a, b
+ ld [$d3aa], a
+ or a
+.asm_39e6
+ pop de
+ pop bc
+ pop hl
+ ret
+; 0x39ea
+
+INCBIN "baserom.gbc",$39ea,$39fc - $39ea
Func_39fc: ; 39fc (0:39fc)
-INCBIN "baserom.gbc",$39fc,$3a40 - $39fc
+ push hl
+ push bc
+ call Func_378a
+ or a
+ push af
+ call Func_3a1f
+ ld c, a
+ pop af
+ jr z, .asm_3a11
+ ld a, c
+ ld hl, $d112
+ cp [hl]
+ jr z, .asm_3a1c
+.asm_3a11
+ ld a, c
+ cp $1f
+ jr nc, .asm_3a1c
+ ld [$d112], a
+ call Func_3785
+.asm_3a1c
+ pop bc
+ pop hl
+ ret
+
+Func_3a1f: ; 3a1f (0:3a1f)
+ ld a, [$d3b8]
+ or a
+ jr z, .asm_3a37
+ ld a, [$d32e]
+ cp $2
+ jr z, .asm_3a37
+ cp $b
+ jr z, .asm_3a37
+ cp $c
+ jr z, .asm_3a37
+ ld a, $f
+ ret
+.asm_3a37
+ ld a, [$d111]
+ ret
+
+Func_3a3b: ; 3a3b (0:3a3b)
+ farcall Func_1124d
+ ret
Func_3a40: ; 3a40 (0:3a40)
-INCBIN "baserom.gbc",$3a40,$3a5e - $3a40
+ farcall Func_11430
+ ret
+; 0x3a45
+
+INCBIN "baserom.gbc",$3a45,$3a5e - $3a45
Func_3a5e: ; 3a5e (0:3a5e)
-INCBIN "baserom.gbc",$3a5e,$3abd - $3a5e
+ ld a, [$ff80]
+ push af
+ ld l, $4
+ call Func_3abd
+ jr nc, .asm_3ab3
+ ld a, BANK(Func_c653)
+ call BankswitchHome
+ call Func_c653
+ ld a, $4
+ call BankswitchHome
+ ld a, [$d334]
+ ld d, a
+.asm_3a79
+ ld a, [hli]
+ bit 7, a
+ jr nz, .asm_3ab3
+ push bc
+ push hl
+ cp d
+ jr nz, .asm_3aab
+ ld a, [hli]
+ cp b
+ jr nz, .asm_3aab
+ ld a, [hli]
+ cp c
+ jr nz, .asm_3aab
+ ld a, [hli]
+ ld [$d0c6], a
+ ld a, [hli]
+ ld [$d0c7], a
+ ld a, [hli]
+ ld [$d0ca], a
+ ld a, [hli]
+ ld [$d0cb], a
+ ld a, [hli]
+ ld [$d0c8], a
+ ld a, [hli]
+ ld [$d0c9], a
+ pop hl
+ pop bc
+ pop af
+ call BankswitchHome
+ scf
+ ret
+.asm_3aab
+ pop hl
+ ld bc, $0008
+ add hl, bc
+ pop bc
+ jr .asm_3a79
+.asm_3ab3
+ pop af
+ call BankswitchHome
+ ld l, $6
+ call $49c2
+ ret
Func_3abd: ; 3abd (0:3abd)
push bc
@@ -3235,10 +3689,21 @@ Func_3aed: ; 3aed (0:3aed)
INCBIN "baserom.gbc",$3b11,$3bd2 - $3b11
Func_3bd2: ; 3bd2 (0:3bd2)
-INCBIN "baserom.gbc",$3bd2,$3bdb - $3bd2
+ ld a, l
+ ld [$cad3], a
+ ld a, h
+ ld [$cad4], a
+ ret
Func_3bdb: ; 3bdb (0:3bdb)
-INCBIN "baserom.gbc",$3bdb,$3bf5 - $3bdb
+ push hl
+ ld hl, $0000
+ call Func_3bd2
+ pop hl
+ ret
+; 0x3be4
+
+INCBIN "baserom.gbc",$3be4,$3bf5 - $3be4
Func_3bf5: ; 3bf5 (0:3bf5)
ld a, [$ff80]
@@ -3260,10 +3725,26 @@ Func_3bf5: ; 3bf5 (0:3bf5)
INCBIN "baserom.gbc",$3c10,$3c45 - $3c10
Func_3c45: ; 3c45 (0:3c45)
-INCBIN "baserom.gbc",$3c45,$3c48 - $3c45
+ jp [hl]
+; 0x3c46
+
+INCBIN "baserom.gbc",$3c46,$3c48 - $3c46
Func_3c48: ; 3c48 (0:3c48)
-INCBIN "baserom.gbc",$3c48,$3c5a - $3c48
+ push af
+ ld a, [$ff40]
+ bit 7, a
+ jr z, .asm_3c58
+ push bc
+ push de
+ push hl
+ call Func_053f
+ pop hl
+ pop de
+ pop bc
+.asm_3c58
+ pop af
+ ret
Func_3c5a: ; 3c5a (0:3c5a)
ld hl, $0000
@@ -3300,7 +3781,29 @@ Func_3c5a: ; 3c5a (0:3c5a)
INCBIN "baserom.gbc",$3c83,$3ca0 - $3c83
Func_3ca0: ; 3ca0 (0:3ca0)
-INCBIN "baserom.gbc",$3ca0,$3d72 - $3ca0
+ xor a
+ ld [$d5d7], a
+ ld a, [$ff80]
+ push af
+ ld a, BANK(Func_1296e)
+ call BankswitchHome
+ call Func_1296e
+ pop af
+ call BankswitchHome
+ ret
+
+Func_3cb4: ; 3cb4 (0:3cb4)
+ ld a, [$ff80]
+ push af
+ ld a, BANK(Func_12a21)
+ call BankswitchHome
+ call Func_12a21
+ pop af
+ call BankswitchHome
+ ret
+; 0x3cc4
+
+INCBIN "baserom.gbc",$3cc4,$3d72 - $3cc4
Func_3d72: ; 3d72 (0:3d72)
ld a, [$ff80]