summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Martinek <andrewrmartinek@gmail.com>2016-06-09 01:45:03 -0400
committerAndrew Martinek <andrewrmartinek@gmail.com>2016-06-09 01:45:03 -0400
commit3d06cd73dfc0ade96fa8f8d416e643fa6c1cc087 (patch)
treebdbed3bd6991f651001cfbce066b562da4cbbfeb /src
parent31861490418b0cc28853257100d4549549b81254 (diff)
disassembled overworld interaction code and a lot of relevant routines. Also ripped a data table and a couple pointer tables.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/data/unknownNPCData.asm1513
-rwxr-xr-xsrc/engine/bank1.asm18
-rwxr-xr-xsrc/engine/bank2.asm290
-rwxr-xr-xsrc/engine/bank20.asm83
-rwxr-xr-xsrc/engine/bank3.asm1550
-rwxr-xr-xsrc/engine/bank4.asm404
-rwxr-xr-xsrc/engine/bank7.asm263
-rwxr-xr-xsrc/engine/home.asm174
8 files changed, 4245 insertions, 50 deletions
diff --git a/src/data/unknownNPCData.asm b/src/data/unknownNPCData.asm
new file mode 100755
index 0000000..6994cea
--- /dev/null
+++ b/src/data/unknownNPCData.asm
@@ -0,0 +1,1513 @@
+; When you press the a button in front of something it will find a data entry somewhere on this list
+; it will then jump to the pointer in the data item. All jumps lead to an RST20 operation.
+PointerTable_118f5:
+ dw Data_119dd
+ dw Data_119dd
+ dw Data_119ea
+ dw Data_11a11
+ dw Data_11a1e
+ dw Data_119dd
+ dw Data_119dd
+ dw Data_11a2b
+ dw Data_11a38
+ dw Data_11a45
+ dw Data_11a52
+ dw Data_11a5f
+ dw Data_11a6c
+ dw Data_11a79
+ dw Data_11a86
+ dw Data_11a93
+ dw Data_11aa0
+ dw Data_11aad
+ dw Data_11aba
+ dw Data_11ac7
+ dw Data_11ad4
+ dw Data_11ae1
+ dw Data_11aee
+ dw Data_11afb
+ dw Data_11b08
+ dw Data_11b15
+ dw Data_11b22
+ dw Data_11b2f
+ dw Data_11b3c
+ dw Data_11b49
+ dw Data_11b56
+ dw Data_11b63
+ dw Data_11b70
+ dw Data_11b7d
+ dw Data_11b8a
+ dw Data_11b97
+ dw Data_11ba4
+ dw Data_11bb1
+ dw Data_11bbe
+ dw Data_11bcb
+ dw Data_11bd8
+ dw Data_11be5
+ dw Data_11bf2
+ dw Data_11bff
+ dw Data_11c0c
+ dw Data_11c19
+ dw Data_11c26
+ dw Data_11c40
+ dw Data_11c4d
+ dw Data_11c5a
+ dw Data_11c67
+ dw Data_11c74
+ dw Data_11c81
+ dw Data_11c8e
+ dw Data_11c9b
+ dw Data_11ca8
+ dw Data_11cb5
+ dw Data_11cc2
+ dw Data_11ccf
+ dw Data_11cdc
+ dw Data_11ce9
+ dw Data_11cf6
+ dw Data_11d03
+ dw Data_11d10
+ dw Data_11d1d
+ dw Data_11d2a
+ dw Data_11d37
+ dw Data_11d44
+ dw Data_11d51
+ dw Data_11d5e
+ dw Data_11d6b
+ dw Data_11d78
+ dw Data_11d85
+ dw Data_11d92
+ dw Data_11d9f
+ dw Data_11dac
+ dw Data_11db9
+ dw Data_11dc6
+ dw Data_11dd3
+ dw Data_11de0
+ dw Data_11ded
+ dw Data_11dfa
+ dw Data_11e07
+ dw Data_11e14
+ dw Data_11e21
+ dw Data_11e2e
+ dw Data_11e3b
+ dw Data_11e48
+ dw Data_11e55
+ dw Data_11e62
+ dw Data_11e6f
+ dw Data_11e7c
+ dw Data_11e89
+ dw Data_11e96
+ dw Data_11ea3
+ dw Data_11eb0
+ dw Data_11ebd
+ dw Data_11eca
+ dw Data_11ed7
+ dw Data_11ee4
+ dw Data_11ef1
+ dw Data_11efe
+ dw Data_11f0b
+ dw Data_11f18
+ dw Data_11f1f
+ dw Data_11f26
+ dw Data_11f2d
+ dw Data_11f34
+ dw Data_11f3b
+ dw Data_11f42
+ dw Data_11f49
+ dw Data_11f49
+ dw Data_11c33
+ dw Data_119f7
+ dw Data_11a04
+ dw Data_11f49
+Data_119dd:
+ db $01
+ db $02
+ db $00
+ db $26
+ db $00
+ dw $5727 ; Pointer to NPC Data
+ db $ac
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_119ea:
+ db $02
+ db $01
+ db $04
+ db $0e
+ db $00
+ dw $5c4b ; Pointer to NPC Data
+ db $ad
+ db $03
+ db $02
+ db $1a
+ db $0f
+ db $16
+Data_119f7:
+ db $71
+ db $01
+ db $04
+ db $0e
+ db $00
+ dw $5c4b ; Pointer to NPC Data
+ db $ad
+ db $03
+ db $02
+ db $1a
+ db $0f
+ db $16
+Data_11a04:
+ db $72
+ db $01
+ db $04
+ db $0e
+ db $00
+ dw $5c4b ; Pointer to NPC Data
+ db $ad
+ db $03
+ db $02
+ db $1a
+ db $0f
+ db $16
+Data_11a11:
+ db $03
+ db $03
+ db $04
+ db $22
+ db $00
+ dw $5b4a ; Pointer to NPC Data
+ db $ae
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11a1e:
+ db $04
+ db $04
+ db $00
+ db $0e
+ db $00
+ dw $5d0d ; Pointer to NPC Data
+ db $af
+ db $03
+ db $04
+ db $34
+ db $10
+ db $15
+Data_11a2b:
+ db $07
+ db $18
+ db $00
+ db $0e
+ db $00
+ dw $561d ; Pointer to NPC Data
+ db $b1
+ db $03
+ db $03
+ db $02
+ db $02
+ db $15
+Data_11a38:
+ db $08
+ db $18
+ db $00
+ db $0e
+ db $00
+ dw $5583 ; Pointer to NPC Data
+ db $b2
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11a45:
+ db $09
+ db $18
+ db $00
+ db $0e
+ db $00
+ dw $55ca ; Pointer to NPC Data
+ db $b2
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11a52:
+ db $0a
+ db $18
+ db $00
+ db $0e
+ db $00
+ dw $55d5 ; Pointer to NPC Data
+ db $b2
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11a5f:
+ db $0b
+ db $18
+ db $00
+ db $0e
+ db $00
+ dw $55e0 ; Pointer to NPC Data
+ db $b2
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11a6c:
+ db $0c
+ db $18
+ db $00
+ db $0e
+ db $00
+ dw $55f9 ; Pointer to NPC Data
+ db $b2
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11a79:
+ db $0d
+ db $18
+ db $00
+ db $0e
+ db $00
+ dw $58bb ; Pointer to NPC Data
+ db $b2
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11a86:
+ db $0e
+ db $21
+ db $0a
+ db $30
+ db $00
+ dw $5c64 ; Pointer to NPC Data
+ db $b3
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11a93:
+ db $0f
+ db $21
+ db $0a
+ db $30
+ db $00
+ dw $5ed1 ; Pointer to NPC Data
+ db $b3
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11aa0:
+ db $10
+ db $21
+ db $0a
+ db $30
+ db $00
+ dw $609e ; Pointer to NPC Data
+ db $b3
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11aad:
+ db $11
+ db $21
+ db $0a
+ db $30
+ db $00
+ dw $6369 ; Pointer to NPC Data
+ db $b3
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11aba:
+ db $12
+ db $21
+ db $0a
+ db $30
+ db $00
+ dw $6566 ; Pointer to NPC Data
+ db $b3
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11ac7:
+ db $13
+ db $21
+ db $0a
+ db $30
+ db $00
+ dw $684c ; Pointer to NPC Data
+ db $b3
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11ad4:
+ db $14
+ db $21
+ db $0a
+ db $30
+ db $00
+ dw $6b53 ; Pointer to NPC Data
+ db $b3
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11ae1:
+ db $15
+ db $21
+ db $0a
+ db $30
+ db $00
+ dw $6d45 ; Pointer to NPC Data
+ db $b3
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11aee:
+ db $16
+ db $21
+ db $0a
+ db $30
+ db $00
+ dw $7025 ; Pointer to NPC Data
+ db $b3
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11afb:
+ db $17
+ db $15
+ db $00
+ db $26
+ db $00
+ dw $5ef2 ; Pointer to NPC Data
+ db $b4
+ db $03
+ db $1d
+ db $1c
+ db $03
+ db $15
+Data_11b08:
+ db $18
+ db $15
+ db $00
+ db $26
+ db $00
+ dw $6573 ; Pointer to NPC Data
+ db $b5
+ db $03
+ db $1e
+ db $1d
+ db $03
+ db $15
+Data_11b15:
+ db $19
+ db $1f
+ db $04
+ db $1a
+ db $00
+ dw $6d96 ; Pointer to NPC Data
+ db $b6
+ db $03
+ db $27
+ db $1e
+ db $03
+ db $15
+Data_11b22:
+ db $1a
+ db $0a
+ db $00
+ db $0e
+ db $00
+ dw $5dc3 ; Pointer to NPC Data
+ db $b7
+ db $03
+ db $0a
+ db $10
+ db $03
+ db $16
+Data_11b2f:
+ db $1b
+ db $15
+ db $00
+ db $16
+ db $00
+ dw $5f39 ; Pointer to NPC Data
+ db $b8
+ db $03
+ db $1a
+ db $21
+ db $03
+ db $15
+Data_11b3c:
+ db $1c
+ db $11
+ db $00
+ db $26
+ db $00
+ dw $5ff0 ; Pointer to NPC Data
+ db $b9
+ db $03
+ db $1b
+ db $1f
+ db $03
+ db $15
+Data_11b49:
+ db $1d
+ db $1a
+ db $00
+ db $16
+ db $00
+ dw $6017 ; Pointer to NPC Data
+ db $ba
+ db $03
+ db $1c
+ db $20
+ db $03
+ db $15
+Data_11b56:
+ db $1e
+ db $0b
+ db $04
+ db $1e
+ db $00
+ dw $603e ; Pointer to NPC Data
+ db $bb
+ db $03
+ db $0b
+ db $11
+ db $03
+ db $16
+Data_11b63:
+ db $1f
+ db $20
+ db $00
+ db $0e
+ db $00
+ dw $6177 ; Pointer to NPC Data
+ db $bc
+ db $03
+ db $24
+ db $22
+ db $03
+ db $15
+Data_11b70:
+ db $20
+ db $20
+ db $00
+ db $16
+ db $00
+ dw $619e ; Pointer to NPC Data
+ db $bd
+ db $03
+ db $25
+ db $23
+ db $03
+ db $15
+Data_11b7d:
+ db $21
+ db $16
+ db $00
+ db $26
+ db $00
+ dw $621c ; Pointer to NPC Data
+ db $be
+ db $03
+ db $17
+ db $24
+ db $03
+ db $15
+Data_11b8a:
+ db $22
+ db $08
+ db $08
+ db $2e
+ db $10
+ dw $6304 ; Pointer to NPC Data
+ db $bf
+ db $03
+ db $08
+ db $12
+ db $03
+ db $16
+Data_11b97:
+ db $23
+ db $1c
+ db $04
+ db $0e
+ db $00
+ dw $6408 ; Pointer to NPC Data
+ db $c0
+ db $03
+ db $26
+ db $25
+ db $03
+ db $15
+Data_11ba4:
+ db $24
+ db $17
+ db $04
+ db $1e
+ db $00
+ dw $642f ; Pointer to NPC Data
+ db $c1
+ db $03
+ db $18
+ db $26
+ db $03
+ db $15
+Data_11bb1:
+ db $25
+ db $17
+ db $04
+ db $1e
+ db $00
+ dw $6456 ; Pointer to NPC Data
+ db $c2
+ db $03
+ db $19
+ db $27
+ db $03
+ db $15
+Data_11bbe:
+ db $26
+ db $09
+ db $00
+ db $16
+ db $00
+ dw $64ad ; Pointer to NPC Data
+ db $c3
+ db $03
+ db $09
+ db $13
+ db $03
+ db $16
+Data_11bcb:
+ db $27
+ db $1c
+ db $04
+ db $0e
+ db $00
+ dw $65d2 ; Pointer to NPC Data
+ db $c4
+ db $03
+ db $21
+ db $28
+ db $03
+ db $15
+Data_11bd8:
+ db $28
+ db $1e
+ db $00
+ db $1e
+ db $00
+ dw $6701 ; Pointer to NPC Data
+ db $c5
+ db $03
+ db $22
+ db $29
+ db $03
+ db $15
+Data_11be5:
+ db $29
+ db $1d
+ db $04
+ db $22
+ db $00
+ dw $6745 ; Pointer to NPC Data
+ db $c6
+ db $03
+ db $23
+ db $2a
+ db $03
+ db $15
+Data_11bf2:
+ db $2a
+ db $05
+ db $00
+ db $1a
+ db $00
+ dw $679e ; Pointer to NPC Data
+ db $c7
+ db $03
+ db $05
+ db $14
+ db $03
+ db $16
+Data_11bff:
+ db $2b
+ db $11
+ db $04
+ db $16
+ db $00
+ dw $6980 ; Pointer to NPC Data
+ db $c8
+ db $03
+ db $20
+ db $2b
+ db $03
+ db $15
+Data_11c0c:
+ db $2c
+ db $12
+ db $04
+ db $1a
+ db $00
+ dw $6a60 ; Pointer to NPC Data
+ db $c9
+ db $03
+ db $1f
+ db $2c
+ db $03
+ db $15
+Data_11c19:
+ db $2d
+ db $1c
+ db $04
+ db $0e
+ db $00
+ dw $6aa2 ; Pointer to NPC Data
+ db $ca
+ db $03
+ db $28
+ db $2d
+ db $03
+ db $15
+Data_11c26:
+ db $2e
+ db $0c
+ db $00
+ db $12
+ db $00
+ dw $6adf ; Pointer to NPC Data
+ db $cb
+ db $03
+ db $0c
+ db $15
+ db $03
+ db $16
+Data_11c33:
+ db $70
+ db $0c
+ db $03
+ db $15
+ db $10
+ dw $6adf ; Pointer to NPC Data
+ db $cb
+ db $03
+ db $0c
+ db $15
+ db $03
+ db $16
+Data_11c40:
+ db $2f
+ db $18
+ db $00
+ db $0e
+ db $00
+ dw $6cdb ; Pointer to NPC Data
+ db $cc
+ db $03
+ db $11
+ db $2e
+ db $03
+ db $15
+Data_11c4d:
+ db $30
+ db $18
+ db $00
+ db $0e
+ db $00
+ dw $6c11 ; Pointer to NPC Data
+ db $cd
+ db $03
+ db $12
+ db $2f
+ db $03
+ db $15
+Data_11c5a:
+ db $31
+ db $18
+ db $00
+ db $0e
+ db $00
+ dw $6c42 ; Pointer to NPC Data
+ db $ce
+ db $03
+ db $13
+ db $30
+ db $03
+ db $15
+Data_11c67:
+ db $32
+ db $06
+ db $00
+ db $0e
+ db $00
+ dw $6c67 ; Pointer to NPC Data
+ db $cf
+ db $03
+ db $06
+ db $16
+ db $03
+ db $16
+Data_11c74:
+ db $33
+ db $12
+ db $04
+ db $1a
+ db $00
+ dw $6eb3 ; Pointer to NPC Data
+ db $d0
+ db $03
+ db $14
+ db $31
+ db $03
+ db $15
+Data_11c81:
+ db $34
+ db $13
+ db $00
+ db $22
+ db $00
+ dw $6ed8 ; Pointer to NPC Data
+ db $d1
+ db $03
+ db $15
+ db $32
+ db $03
+ db $15
+Data_11c8e:
+ db $35
+ db $11
+ db $04
+ db $16
+ db $00
+ dw $6efd ; Pointer to NPC Data
+ db $d2
+ db $03
+ db $16
+ db $33
+ db $03
+ db $15
+Data_11c9b:
+ db $36
+ db $07
+ db $04
+ db $1e
+ db $00
+ dw $6f22 ; Pointer to NPC Data
+ db $d3
+ db $03
+ db $07
+ db $17
+ db $03
+ db $16
+Data_11ca8:
+ db $37
+ db $0d
+ db $00
+ db $12
+ db $00
+ dw $771f ; Pointer to NPC Data
+ db $d4
+ db $03
+ db $0d
+ db $0c
+ db $04
+ db $17
+Data_11cb5:
+ db $38
+ db $0e
+ db $00
+ db $2a
+ db $00
+ dw $772a ; Pointer to NPC Data
+ db $d5
+ db $03
+ db $0e
+ db $0d
+ db $04
+ db $17
+Data_11cc2:
+ db $39
+ db $0f
+ db $00
+ db $26
+ db $00
+ dw $7735 ; Pointer to NPC Data
+ db $d6
+ db $03
+ db $0f
+ db $0e
+ db $04
+ db $17
+Data_11ccf:
+ db $3a
+ db $10
+ db $00
+ db $0e
+ db $00
+ dw $7740 ; Pointer to NPC Data
+ db $d7
+ db $03
+ db $10
+ db $0f
+ db $04
+ db $17
+Data_11cdc:
+ db $3b
+ db $21
+ db $0a
+ db $30
+ db $00
+ dw $4c3e ; Pointer to NPC Data
+ db $b0
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11ce9:
+ db $3c
+ db $21
+ db $0a
+ db $30
+ db $00
+ dw $4c3e ; Pointer to NPC Data
+ db $b0
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11cf6:
+ db $3d
+ db $1a
+ db $00
+ db $16
+ db $00
+ dw $5c76 ; Pointer to NPC Data
+ db $d8
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11d03:
+ db $3e
+ db $23
+ db $04
+ db $1e
+ db $00
+ dw $5f83 ; Pointer to NPC Data
+ db $d9
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11d10:
+ db $3f
+ db $19
+ db $00
+ db $1a
+ db $00
+ dw $5fc0 ; Pointer to NPC Data
+ db $da
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11d1d:
+ db $40
+ db $22
+ db $00
+ db $16
+ db $00
+ dw $60cf ; Pointer to NPC Data
+ db $db
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11d2a:
+ db $41
+ db $1e
+ db $00
+ db $1e
+ db $00
+ dw $6111 ; Pointer to NPC Data
+ db $dc
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11d37:
+ db $42
+ db $19
+ db $00
+ db $1a
+ db $00
+ dw $639a ; Pointer to NPC Data
+ db $da
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11d44:
+ db $43
+ db $1e
+ db $00
+ db $1e
+ db $00
+ dw $661f ; Pointer to NPC Data
+ db $dc
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11d51:
+ db $44
+ db $1b
+ db $00
+ db $22
+ db $00
+ dw $69a5 ; Pointer to NPC Data
+ db $dd
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11d5e:
+ db $45
+ db $12
+ db $04
+ db $1a
+ db $00
+ dw $6b84 ; Pointer to NPC Data
+ db $de
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11d6b:
+ db $46
+ db $11
+ db $04
+ db $16
+ db $00
+ dw $6e2c ; Pointer to NPC Data
+ db $de
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11d78:
+ db $47
+ db $19
+ db $00
+ db $1a
+ db $00
+ dw $6de8 ; Pointer to NPC Data
+ db $da
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11d85:
+ db $48
+ db $22
+ db $00
+ db $16
+ db $00
+ dw $7295 ; Pointer to NPC Data
+ db $b3
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11d92:
+ db $49
+ db $22
+ db $00
+ db $16
+ db $00
+ dw $726c ; Pointer to NPC Data
+ db $b3
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11d9f:
+ db $4a
+ db $22
+ db $00
+ db $16
+ db $00
+ dw $7352 ; Pointer to NPC Data
+ db $df
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11dac:
+ db $4b
+ db $13
+ db $00
+ db $22
+ db $00
+ dw $5d82 ; Pointer to NPC Data
+ db $e0
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11db9:
+ db $4c
+ db $14
+ db $00
+ db $16
+ db $00
+ dw $5d8d ; Pointer to NPC Data
+ db $e1
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11dc6:
+ db $4d
+ db $24
+ db $00
+ db $16
+ db $00
+ dw $5d9f ; Pointer to NPC Data
+ db $e5
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11dd3:
+ db $4e
+ db $1d
+ db $04
+ db $22
+ db $00
+ dw $5fd2 ; Pointer to NPC Data
+ db $dc
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11de0:
+ db $4f
+ db $1a
+ db $00
+ db $16
+ db $00
+ dw $6137 ; Pointer to NPC Data
+ db $d8
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11ded:
+ db $50
+ db $1b
+ db $00
+ db $22
+ db $00
+ dw $613b ; Pointer to NPC Data
+ db $dd
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11dfa:
+ db $51
+ db $1d
+ db $04
+ db $22
+ db $00
+ dw $63d9 ; Pointer to NPC Data
+ db $dc
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11e07:
+ db $52
+ db $17
+ db $04
+ db $1e
+ db $00
+ dw $63dd ; Pointer to NPC Data
+ db $e2
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11e14:
+ db $53
+ db $24
+ db $00
+ db $16
+ db $00
+ dw $66d8 ; Pointer to NPC Data
+ db $e5
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11e21:
+ db $54
+ db $22
+ db $00
+ db $16
+ db $00
+ dw $66e3 ; Pointer to NPC Data
+ db $db
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11e2e:
+ db $55
+ db $12
+ db $04
+ db $1a
+ db $00
+ dw $6850 ; Pointer to NPC Data
+ db $de
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11e3b:
+ db $56
+ db $22
+ db $00
+ db $16
+ db $00
+ dw $6a30 ; Pointer to NPC Data
+ db $db
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11e48:
+ db $57
+ db $19
+ db $00
+ db $1a
+ db $00
+ dw $6a3b ; Pointer to NPC Data
+ db $da
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11e55:
+ db $58
+ db $1a
+ db $00
+ db $16
+ db $00
+ dw $6bc1 ; Pointer to NPC Data
+ db $d8
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11e62:
+ db $59
+ db $18
+ db $00
+ db $0e
+ db $00
+ dw $6bc5 ; Pointer to NPC Data
+ db $e0
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11e6f:
+ db $5a
+ db $13
+ db $00
+ db $22
+ db $00
+ dw $6bed ; Pointer to NPC Data
+ db $e0
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11e7c:
+ db $5b
+ db $23
+ db $04
+ db $1e
+ db $00
+ dw $4c3e ; Pointer to NPC Data
+ db $d9
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11e89:
+ db $5c
+ db $15
+ db $00
+ db $26
+ db $00
+ dw $6e88 ; Pointer to NPC Data
+ db $e4
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11e96:
+ db $5d
+ db $1b
+ db $00
+ db $22
+ db $00
+ dw $709c ; Pointer to NPC Data
+ db $dd
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11ea3:
+ db $5e
+ db $22
+ db $00
+ db $16
+ db $00
+ dw $70a0 ; Pointer to NPC Data
+ db $db
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11eb0:
+ db $5f
+ db $15
+ db $00
+ db $26
+ db $00
+ dw $70a4 ; Pointer to NPC Data
+ db $e3
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11ebd:
+ db $60
+ db $17
+ db $04
+ db $1e
+ db $00
+ dw $70a8 ; Pointer to NPC Data
+ db $e2
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11eca:
+ db $61
+ db $1f
+ db $04
+ db $1a
+ db $00
+ dw $70ac ; Pointer to NPC Data
+ db $dc
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11ed7:
+ db $62
+ db $19
+ db $00
+ db $1a
+ db $00
+ dw $70b0 ; Pointer to NPC Data
+ db $da
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11ee4:
+ db $63
+ db $18
+ db $00
+ db $0e
+ db $00
+ dw $58dd ; Pointer to NPC Data
+ db $e7
+ db $03
+ db $29
+ db $09
+ db $02
+ db $15
+Data_11ef1:
+ db $64
+ db $1a
+ db $00
+ db $16
+ db $00
+ dw $7283 ; Pointer to NPC Data
+ db $e6
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11efe:
+ db $65
+ db $18
+ db $00
+ db $0e
+ db $00
+ dw $58c6 ; Pointer to NPC Data
+ db $b2
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11f0b:
+ db $66
+ db $18
+ db $00
+ db $0e
+ db $00
+ dw $58d1 ; Pointer to NPC Data
+ db $b2
+ db $03
+ db $00
+ db $00
+ db $00
+ db $00
+Data_11f18:
+ db $67
+ db $26
+ db $3a
+ db $3a
+ db $10
+ dw $4c3e ; Pointer to NPC Data
+Data_11f1f:
+ db $68
+ db $27
+ db $3b
+ db $41
+ db $50
+ dw $4c3e ; Pointer to NPC Data
+Data_11f26:
+ db $69
+ db $27
+ db $3c
+ db $42
+ db $50
+ dw $4c3e ; Pointer to NPC Data
+Data_11f2d:
+ db $6a
+ db $27
+ db $3d
+ db $43
+ db $50
+ dw $4c3e ; Pointer to NPC Data
+Data_11f34:
+ db $6b
+ db $27
+ db $3e
+ db $44
+ db $50
+ dw $4c3e ; Pointer to NPC Data
+Data_11f3b:
+ db $6c
+ db $27
+ db $3f
+ db $45
+ db $50
+ dw $4c3e ; Pointer to NPC Data
+Data_11f42:
+ db $6d
+ db $27
+ db $40
+ db $46
+ db $50
+ dw $4c3e ; Pointer to NPC Data
+Data_11f49:
+ db $00
+ db $00
+ db $00
+ db $1e
+ db $00
diff --git a/src/engine/bank1.asm b/src/engine/bank1.asm
index 94172c5..d9a5870 100755
--- a/src/engine/bank1.asm
+++ b/src/engine/bank1.asm
@@ -1350,7 +1350,21 @@ BuildVersion: ; 7354 (1:7354)
INCBIN "baserom.gbc",$7364,$7571 - $7364
Func_7571: ; 7571 (1:7571)
-INCBIN "baserom.gbc",$7571,$758f - $7571
+INCBIN "baserom.gbc",$7571,$7576 - $7571
+
+Func_7576: ; 7576 (1:7576)
+ farcallx $6, $591f
+ ret
+; 0x757b
+
+INCBIN "baserom.gbc",$757b,$758f - $757b
Func_758f: ; 758f (1:758f)
-INCBIN "baserom.gbc",$758f,$8000 - $758f
+INCBIN "baserom.gbc",$758f,$7594 - $758f
+
+Func_7594: ; 7594 (1:7594)
+ farcallx $6, $661f
+ ret
+; 0x7599
+
+INCBIN "baserom.gbc",$7599,$8000 - $7599 \ No newline at end of file
diff --git a/src/engine/bank2.asm b/src/engine/bank2.asm
index 48d39cc..a721a74 100755
--- a/src/engine/bank2.asm
+++ b/src/engine/bank2.asm
@@ -783,4 +783,292 @@ Unknown_a77e: ; a77e (2:677e)
INCBIN "baserom.gbc",$a77e,$b177 - $a77e
Func_b177: ; b177 (2:7177)
-INCBIN "baserom.gbc",$b177,$c000 - $b177
+INCBIN "baserom.gbc",$b177,$b19d - $b177
+
+Func_b19d: ; b19d (2:719d)
+ xor a
+ ld [$cea1], a
+ ld de, CheckForCGB
+ ld hl, $d0a2
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ call $7379
+ ld a, $3c
+ ld [$d0a5], a
+ xor a
+.asm_b1b3
+ ld hl, $76fb
+ call $5a6d
+ call $7704
+ call $7545
+ ld hl, $0224
+ call DrawWideTextBox_PrintText
+ ld de, $0224
+ call $7285
+ call $729f
+ jr c, .asm_b1b3
+ cp $ff
+ ret z
+ ld b, a
+ ld a, [$cea1]
+ add b
+ ld [$d088], a
+ call Func_905a
+ call DrawWideTextBox
+ ld hl, $7274
+ call Func_2c08
+ call DoFrame
+ call Func_9065
+ jp nc, $71e7
+ cp $ff
+ jr nz, .asm_b1fa
+ ld a, [$d086]
+ jp $71b3
+
+.asm_b1fa
+ ld a, [wceb0]
+ sla a
+ ld hl, wceaf
+ add [hl]
+ or a
+ jr nz, .asm_b22c
+ call $735b
+ jr nc, .asm_b216
+ call $7592
+ ld a, [$d086]
+ jp c, $71b3
+ jr .asm_b25e
+
+.asm_b216
+ ld hl, $0272
+ call Func_2af0
+ ld a, [$d086]
+ jr c, .asm_b1b3
+ call $7592
+ ld a, [$d086]
+ jp c, $71b3
+ jr .asm_b25e
+
+.asm_b22c
+ cp $1
+ jr nz, .asm_b24c
+ call $735b
+ jr c, .asm_b240
+ call $76ca
+ ld a, [$d086]
+ jp c, $71b3
+ jr .asm_b25e
+
+.asm_b240
+ ld hl, WaitForVBlank
+ call DrawWideTextBox_WaitForInput
+ ld a, [$d086]
+ jp $71b3
+
+.asm_b24c
+ cp $2
+ jr nz, .asm_b273
+ call $735b
+ jr c, .asm_b240
+ call $77c6
+ ld a, [$d086]
+ jp nc, $71b3
+
+.asm_b25e
+ ld a, [$d087]
+ ld [$cea1], a
+ call $7379
+ call $7704
+ call $7545
+ ld a, [$d086]
+ jp $71b3
+
+.asm_b273
+ ret
+; 0xb274
+
+INCBIN "baserom.gbc",$b274,$ba04 - $b274
+
+Func_ba04: ; ba04 (2:7a04)
+ ld a, [wd0a9]
+ ld hl, $7b83
+ sla a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld de, $d0a2
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ xor a
+ ld [$cea1], a
+ call $7b97
+ ld a, $5
+ ld [$d0a5], a
+ xor a
+ ld hl, $7b6e
+ call InitializeCursorParameters
+ ld hl, $0224
+ call DrawWideTextBox_PrintText
+ ld a, $5
+ ld [$cea9], a
+ ld hl, $73fe
+ ld d, h
+ ld a, l
+ ld hl, $cece
+ ld [hli], a
+ ld [hl], d
+.asm_ba40
+ call DoFrame
+ call MenuCursorAcceptInput
+ jr c, .asm_baa3
+ ld a, [$ff8f]
+ and $c0
+ jr z, .asm_ba4e
+
+.asm_ba4e
+ ld a, [$ff8f]
+ and $8
+ jr z, .asm_ba40
+ ld a, [$cea1]
+ ld [$d087], a
+ ld b, a
+ ld a, [wCurMenuItem]
+ ld [$d086], a
+ add b
+ ld c, a
+ inc a
+ or $80
+ ld [wceb1], a
+ sla c
+ ld b, $0
+ ld hl, $d00d
+ add hl, bc
+ call $7653
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push hl
+ ld bc, $0018
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, [hl]
+ pop hl
+ call $7644
+ or a
+ jr z, .asm_ba40
+ ld a, $1
+ call Func_90fb
+ call $7653
+ call Func_8e1f
+ call $7644
+ ld a, [$d087]
+ ld [$cea1], a
+ call $7b97
+ ld a, [$d086]
+ jp $7a25
+
+.asm_baa3
+ call Func_270b
+ ld a, [$cea1]
+ ld [$d087], a
+ ld a, [wCurMenuItem]
+ ld [$d086], a
+ ld a, [$ffb1]
+ cp $ff
+ jp z, $7b0d
+ ld [$d088], a
+ call Func_905a
+ xor a
+ ld [$ce5e], a
+ call DrawWideTextBox
+ ld hl, $7b76
+ call Func_2c08
+ call DoFrame
+ call $46ac
+ jp nc, $7acc
+ cp $ff
+ jr nz, .asm_badf
+ ld a, [$d086]
+ jp $7a25
+
+.asm_badf
+ ld a, [wceb0]
+ sla a
+ ld hl, wceaf
+ add [hl]
+ or a
+ jr nz, .asm_bb09
+ call $7653
+ call $77c6
+ call $7644
+ ld a, [$d086]
+ jp nc, $7a25
+ ld a, [$d087]
+ ld [$cea1], a
+ call $7b97
+ ld a, [$d086]
+ jp $7a25
+
+.asm_bb09
+ cp $1
+ jr nz, .asm_bb12
+ xor a
+ ld [$d0a4], a
+ ret
+
+.asm_bb12
+ ld a, [$cea1]
+ ld [$d087], a
+ ld b, a
+ ld a, [wCurMenuItem]
+ ld [$d086], a
+ add b
+ ld c, a
+ ld [wceb1], a
+ sla c
+ ld b, $0
+ ld hl, $d00d
+ add hl, bc
+ push hl
+ ld hl, $d0aa
+ add hl, bc
+ ld bc, $cfda
+ ld a, [hli]
+ ld [bc], a
+ inc bc
+ ld a, [hl]
+ ld [bc], a
+ pop hl
+ call $7653
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push hl
+ ld bc, $0018
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, [hl]
+ pop hl
+ call $7644
+ or a
+ jp z, $7a40
+ ld a, $1
+ call Func_90fb
+ call $7653
+ xor a
+ call $6dfe
+ call $7644
+ ld a, [$d087]
+ ld [$cea1], a
+ call $7b97
+ ld a, [$d086]
+ jp $7a25
+; 0xbb6e
+
+INCBIN "baserom.gbc",$bb6e,$c000 - $bb6e
diff --git a/src/engine/bank20.asm b/src/engine/bank20.asm
index 453cf61..17f8afc 100755
--- a/src/engine/bank20.asm
+++ b/src/engine/bank20.asm
@@ -124,7 +124,88 @@ Func_804d8: ; 804d8 (20:44d8)
INCBIN "baserom.gbc",$804d8,$80b7a - $804d8
Func_80b7a: ; 80b7a (20:4b7a)
-INCBIN "baserom.gbc",$80b7a,$80e5a - $80b7a
+INCBIN "baserom.gbc",$80b7a,$80ba4 - $80b7a
+
+Func_80ba4: ; 80ba4 (20:4ba4)
+ push af
+ xor a
+ ld [$d292], a
+ pop af
+ push hl
+ push bc
+ push de
+ ld c, a
+ ld a, [wd131]
+ push af
+ ld a, [$d23d]
+ push af
+ ld a, [$d12f]
+ push af
+ ld a, [$d130]
+ push af
+ ld a, [$d23a]
+ push af
+ ld a, [$d23b]
+ push af
+ ld b, $0
+ ld hl, wd323
+ add hl, bc
+ ld a, $1
+ ld [hl], a
+ ld a, c
+ add a
+ ld c, a
+ ld b, $0
+ ld hl, $4c21
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld b, [hl]
+ inc hl
+ ld c, [hl]
+ inc hl
+ ld a, [wConsole]
+ cp $2
+ jr nz, .asm_80be7
+ inc hl
+
+.asm_80be7
+ ld a, [hl]
+ ld [wd131], a
+ push bc
+ farcallx $20, $4082
+ pop bc
+ srl b
+ ld a, c
+ rrca
+ and $f
+ swap a
+ add b
+ ld c, a
+ ld b, $0
+ ld hl, wBoosterViableCardList
+ add hl, bc
+ farcallx $3, $438f
+ pop af
+ ld [$d23b], a
+ pop af
+ ld [$d23a], a
+ pop af
+ ld [$d130], a
+ pop af
+ ld [$d12f], a
+ pop af
+ ld [$d23d], a
+ pop af
+ ld [wd131], a
+ pop de
+ pop bc
+ pop hl
+ ret
+; 0x80c21
+
+INCBIN "baserom.gbc",$80c21,$80e5a - $80c21
Unknown_80e5a: ; 80e5a (20:4e5a)
INCBIN "baserom.gbc",$80e5a,$80e5d - $80e5a
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]
diff --git a/src/engine/bank4.asm b/src/engine/bank4.asm
index 36aa471..84313f5 100755
--- a/src/engine/bank4.asm
+++ b/src/engine/bank4.asm
@@ -1,4 +1,45 @@
-INCBIN "baserom.gbc",$10000,$10059 - $10000
+Func_10000: ; 10000 (4:4000)
+ ld a, $0
+ ld [wTileMapFill], a
+ call Func_04a2
+ call Func_2119
+ ld de, $307f
+ call Func_2275
+ call Set_OBJ_8x8
+ xor a
+ ld [$ff92], a
+ ld [$ff93], a
+ ld a, [wLCDC]
+ bit 7, a
+ jr nz, .asm_10025
+ xor a
+ ld [rSCX], a
+ ld [rSCY], a
+
+.asm_10025
+ call Func_1288c
+ call Func_099c
+ ld a, $1
+ ld [wVBlankOAMCopyToggle], a
+ ret
+
+Func_10031: ; 10031 (4:4031)
+ ld a, [$ff81]
+ push af
+ ld a, $1
+ call BankswitchRAM
+ call $4cbb
+ call DisableExtRAM
+ call $4b28
+ call Func_0404
+ call EnableLCD
+ call DoFrameIfLCDEnabled
+ call $4cea
+ call Func_0404
+ pop af
+ call BankswitchRAM
+ call DisableExtRAM
+ ret
Func_10059: ; 10059 (4:4059)
INCBIN "baserom.gbc",$10059,$100a2 - $10059
@@ -196,7 +237,44 @@ Func_10548: ; 10548 (4:4548)
INCBIN "baserom.gbc",$10548,$10756 - $10548
Func_10756: ; 10756 (4:4756)
-INCBIN "baserom.gbc",$10756,$10a9b - $10756
+INCBIN "baserom.gbc",$10756,$10a70 - $10756
+
+Func_10a70: ; 10a70 (4:4a70)
+ push hl
+ push bc
+ push de
+ ld b, a
+ ld c, $f
+ ld hl, wPCPacks
+.asm_10a79
+ ld a, [hli]
+ and $7f
+ cp b
+ jr z, .asm_10a97
+ dec c
+ jr nz, .asm_10a79
+ ld c, $f
+ ld hl, wPCPacks
+.asm_10a87
+ ld a, [hl]
+ and $7f
+ jr z, .asm_10a93
+ inc hl
+ dec c
+ jr nz, .asm_10a87
+ rst $38
+ jr .asm_10a97
+
+.asm_10a93
+ ld a, b
+ or $80
+ ld [hl], a
+
+.asm_10a97
+ pop de
+ pop bc
+ pop hl
+ ret
Func_10a9b: ; 10a9b (4:4a9b)
INCBIN "baserom.gbc",$10a9b,$10ab4 - $10a9b
@@ -205,7 +283,62 @@ Func_10ab4: ; 10ab4 (4:4ab4)
INCBIN "baserom.gbc",$10ab4,$10af9 - $10ab4
Func_10af9: ; 10af9 (4:4af9)
-INCBIN "baserom.gbc",$10af9,$10e28 - $10af9
+INCBIN "baserom.gbc",$10af9,$10c96 - $10af9
+
+Func_10c96: ; 10c96 (4:4c96)
+ ld a, [$ff81]
+ push af
+ push bc
+ ld a, $1
+ call BankswitchRAM
+ call $4cbb
+ call Func_10ab4
+ pop bc
+ ld a, c
+ or a
+ jr nz, .asm_10cb0
+ call $4cea
+ call Func_10af9
+
+.asm_10cb0
+ call EnableLCD
+ pop af
+ call BankswitchRAM
+ call DisableExtRAM
+ ret
+; 0x10cbb
+
+INCBIN "baserom.gbc",$10cbb,$10dba - $10cbb
+
+Func_10dba: ; 10dba (4:4dba)
+ ld a, $1
+ farcall Func_c29b
+ ld a, [wd0ba]
+ ld hl, $4e17
+ farcall Func_111e9
+.asm_10dca
+ call DoFrameIfLCDEnabled
+ call MenuCursorAcceptInput
+ jr nc, .asm_10dca
+ ld a, e
+ ld [wd0ba], a
+ ld a, [$ffb1]
+ cp e
+ jr z, .asm_10ddd
+ ld a, $4
+
+.asm_10ddd
+ ld [wd10e], a
+ push af
+ ld hl, $4df0
+ call JumpToFunctionInTable
+ farcall Func_c135
+ call DoFrameIfLCDEnabled
+ pop af
+ ret
+; 0x10df0
+
+INCBIN "baserom.gbc",$10df0,$10e28 - $10df0
Func_10e28: ; 10e28 (4:4e28)
INCBIN "baserom.gbc",$10e28,$10e55 - $10e28
@@ -671,17 +804,272 @@ Func_11416: ; 11416 (4:5416)
INCBIN "baserom.gbc",$11416,$11430 - $11416
Func_11430: ; 11430 (4:5430)
-INCBIN "baserom.gbc",$11430,$1162a - $11430
+INCBIN "baserom.gbc",$11430,$1157c - $11430
+
+Func_1157c: ; 1157c (4:557c)
+ ld a, c
+ or a
+ jr nz, .asm_11586
+ farcall Func_c228
+ jr .asm_1159f
+
+.asm_11586
+ ld a, $2
+ ld [wd0bc], a
+ ld a, $4
+ ld [wd0bd], a
+ ld a, $2
+ ld [wd0be], a
+ ld a, $1
+ ld [wd0bb], a
+ ld a, $1
+ ld [wd32e], a
+
+.asm_1159f
+ call $5238
+ ret
+; 0x115a3
+
+
+INCBIN "baserom.gbc",$115a3,$1162a - $115a3
INCLUDE "data/map_scripts.asm"
-INCBIN "baserom.gbc",$1184a,$11857 - $1184a
+; loads a pointer into hl found on PointerTable_118f5
+Func_1184a: ; 1184a (4:584a)
+ ; this may have been a macro
+ rlca
+ add (PointerTable_118f5 & $ff)
+ ld l, a
+ ld a, PointerTable_118f5 >> 8
+ adc $00
+ ld h, a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
Func_11857: ; 11857 (4:5857)
-INCBIN "baserom.gbc",$11857,$1217b - $11857
+ push hl
+ push bc
+ call Func_1184a
+ ld a, [hli]
+ ld [wd3ab], a
+ ld a, [hli]
+ ld [$d3b3], a
+ ld a, [hli]
+ ld [wd3b1], a
+ ld a, [hli]
+ push af
+ ld a, [hli]
+ ld [wd3b2], a
+ pop bc
+ ld a, [wConsole]
+ cp $2
+ jr nz, .asm_1187a
+ ld a, b
+ ld [wd3b1], a
+.asm_1187a
+ pop bc
+ pop hl
+ ret
+
+; this appears to find data about the NPC we're talking to
+Func_1187d: ; 1187d (4:587d)
+ push hl
+ call Func_1184a
+ ld bc, $5
+ add hl, bc
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ inc hl
+ ld a, [hli]
+ ld [wd0c8], a
+ ld a, [hli]
+ ld [wd0c9], a
+ pop hl
+ ret
+
+Func_11893: ; 11893 (4:5893)
+ push hl
+ push bc
+ call Func_1184a
+ ld bc, $0007
+ add hl, bc
+ ld a, [hli]
+ ld [wd0c8], a
+ ld a, [hli]
+ ld [wd0c9], a
+ pop bc
+ pop hl
+ ret
+
+Func_118a7: ; 118a7 (4:58a7)
+ push hl
+ push bc
+ call Func_1184a
+ ld bc, $0007
+ add hl, bc
+ ld a, [hli]
+ ld [wcc16], a
+ ld a, [hli]
+ ld [wcc17], a
+ ld a, [hli]
+ ld [wcc15], a
+ pop bc
+ pop hl
+ ret
+
+Func_118bf: ; 118bf (4:58bf)
+ push hl
+ push bc
+ call Func_1184a
+ ld bc, $000a
+ add hl, bc
+ ld a, [hli]
+ ld [wcc19], a
+ ld a, [hli]
+ ld [wDuelTheme], a
+ pop bc
+ pop hl
+ ret
+
+Func_118d3: ; 118d3 (4:58d3)
+ push hl
+ push bc
+ push af
+ call Func_1184a
+ ld bc, $000c
+ add hl, bc
+ ld a, [hli]
+ ld [wMatchStartTheme], a
+ pop af
+ cp $2
+ jr nz, .asm_118f2
+ ld a, [wCurMap]
+ cp $20
+ jr nz, .asm_118f2
+ ld a, $17
+ ld [wMatchStartTheme], a
+
+.asm_118f2
+ pop bc
+ pop hl
+ ret
-Unknown_1217b: ; 1217b (4:617b)
-INCBIN "baserom.gbc",$1217b,$1229f - $1217b
+INCLUDE "data/unknownNPCData.asm"
+
+INCBIN "baserom.gbc",$11f4e,$1217b - $11f4e
+
+
+PointerTable_1217b: ; 1217b (4:617b)
+ dw Func_ccbe
+ dw Func_ccc6
+ dw Func_ccd4 ; Seems to begin dialogue with NPCs
+ dw Func_ccdc
+ dw Func_cce9 ; opens the "start battle?" box
+ dw Func_cd01 ; seems to start a battle.
+ dw Func_cd83
+ dw Func_cda8
+ dw Func_cdb9
+ dw Func_cdcb
+ dw Func_ce26
+ dw Func_ce84
+ dw Func_ce8a ; Called after player wins a battle. Handles Booster Packs.
+ dw Func_cf0c
+ dw Func_cf12
+ dw Func_cf3f
+ dw Func_cf4c
+ dw Func_cf53
+ dw Func_cf7b
+ dw Func_cf2d
+ dw Func_cf96
+ dw Func_cfc6
+ dw Func_cfd4
+ dw Func_d00b
+ dw Func_d025
+ dw Func_d032
+ dw Func_d03f
+ dw Func_d049
+ dw Func_d04f
+ dw Func_d055
+ dw Func_d05c
+ dw Func_cee2
+ dw Func_d080
+ dw Func_d088
+ dw Func_d095
+ dw Func_d0be
+ dw Func_d0ce
+ dw Func_d0d9
+ dw Func_d0f2
+ dw Func_ce4a
+ dw Func_ceba
+ dw Func_d103
+ dw Func_d125
+ dw Func_d135
+ dw Func_d16b
+ dw Func_cd4f
+ dw Func_cd94
+ dw Func_ce52
+ dw Func_cdd8
+ dw Func_cdf5
+ dw Func_d195
+ dw Func_d1ad
+ dw Func_d1b3
+ dw Func_cccc ; Ends dialoge. Seems to do it after player answers the "start fight?" question.
+ dw Func_d244
+ dw Func_d24c
+ dw DeckMachine_d336
+ dw Func_d271
+ dw Func_d36d
+ dw Func_ce6f
+ dw Func_d209
+ dw Func_d38f
+ dw Func_d396
+ dw Func_cd76
+ dw Func_d39d
+ dw Func_d3b9
+ dw Func_d3c9
+ dw Func_d3d1
+ dw Func_d3d4
+ dw Func_d3e0
+ dw Func_d3fe
+ dw Func_d408
+ dw Func_d40f
+ dw Func_d416
+ dw Func_d423
+ dw Func_d429
+ dw Func_d41d
+ dw Func_d42f
+ dw Func_d435
+ dw Func_cce4
+ dw Func_d2f6
+ dw Func_d317
+ dw Func_d43d
+ dw Func_ccbe
+ dw Func_ccbe
+ dw Func_ccbe
+ dw Func_ccbe
+ dw Func_ccbe
+ dw Func_d44a
+ dw Func_d460
+ dw Func_d47b
+ dw Func_d484
+ dw Func_d49e
+ dw Func_d4a6
+ dw Func_d4ae
+ dw Func_d4bc
+ dw Func_d4c3
+ dw Func_d4ca
+ dw Func_d4df ; Used by 2 lightning club members and npcs in mason's lab. Not sure why.
+ dw Func_d452
+ dw Func_ccbe
+ dw Func_ccbe
+ dw Func_ccbe
+ dw Func_ccbe
+
+INCBIN "baserom.gbc",$1224b,$1229f - $1224b
Unknown_1229f: ; 1229f (4:629f)
INCBIN "baserom.gbc",$1229f,$126d1 - $1229f
diff --git a/src/engine/bank7.asm b/src/engine/bank7.asm
index f43258e..f246505 100755
--- a/src/engine/bank7.asm
+++ b/src/engine/bank7.asm
@@ -91,10 +91,137 @@ Func_1c33b: ; 1c33b (7:433b)
INCLUDE "data/map_songs.asm"
Func_1c440: ; 1c440 (7:4440)
-INCBIN "baserom.gbc",$1c440,$1c485 - $1c440
+INCBIN "baserom.gbc",$1c440,$1c455 - $1c440
+
+Func_1c455: ; 1c455 (7:4455)
+ push hl
+ ld a, [wd3aa]
+ ld l, $4
+ call Func_39ad
+ ld a, [hl]
+ pop hl
+ ret
+
+Func_1c461: ; 1c461 (7:4461)
+ push hl
+ push bc
+ call Func_1c719
+ ld a, [wd3aa]
+ ld l, $2
+ call Func_39ad
+ ld a, b
+ ld [hli], a
+ ld [hl], c
+ call $46e3
+ pop bc
+ pop hl
+ ret
+
+Func_1c477: ; 1c477 (7:4477)
+ push hl
+ ld a, [wd3aa]
+ ld l, $2
+ call Func_39ad
+ ld a, [hli]
+ ld b, a
+ ld c, [hl]
+ pop hl
+ ret
Func_1c485: ; 1c485 (7:4485)
-INCBIN "baserom.gbc",$1c485,$1c58e - $1c485
+INCBIN "baserom.gbc",$1c485,$1c50a - $1c485
+
+Func_1c50a: ; 1c50a (7:450a)
+ push hl
+ call Func_1c719
+ ld a, [wd3aa]
+ call $39a7
+ ld a, [hl]
+ or a
+ jr z, .asm_1c52c
+ call $44fa
+ jr nc, .asm_1c521
+ xor a
+ ld [wd3b8], a
+
+.asm_1c521
+ xor a
+ ld [hli], a
+ ld a, [hl]
+ farcallx $4, $69fd
+ ld hl, $d349
+ dec [hl]
+
+.asm_1c52c
+ pop hl
+ ret
+
+Func_1c52e: ; 1c52e (7:452e)
+ push hl
+ push af
+ ld a, [wd3aa]
+ ld l, $7
+ call Func_39ad
+ pop af
+ ld [hl], a
+ call Func_1c5e9
+ pop hl
+ ret
+
+Func_1c53f: ; 1c53f (7:453f)
+ push hl
+ push bc
+ ld a, [wd3aa]
+ ld l, $4
+ call Func_39ad
+ ld a, [hl]
+ ld bc, $0003
+ add hl, bc
+ ld [hl], a
+ push af
+ call Func_1c5e9
+ pop af
+ pop bc
+ pop hl
+ ret
+
+Func_1c557: ; 1c557 (7:4557)
+ push bc
+ ld c, a
+ ld a, [wd3aa]
+ push af
+ ld a, [wd3ab]
+ push af
+ ld a, c
+ ld [wd3ab], a
+ ld c, $0
+ call Func_39c3
+ jr c, .asm_1c570
+ call Func_1c53f
+ ld c, a
+
+.asm_1c570
+ pop af
+ ld [wd3ab], a
+ pop af
+ ld [wd3aa], a
+ ld a, c
+ pop bc
+ ret
+
+Func_1c57b: ; 1c57b (7:457b)
+ push hl
+ push bc
+ push af
+ ld a, [wd3aa]
+ ld l, $6
+ call Func_39ad
+ pop af
+ ld [hl], a
+ call Func_1c58e
+ pop bc
+ pop hl
+ ret
Func_1c58e: ; 1c58e (7:458e)
INCBIN "baserom.gbc",$1c58e,$1c5e9 - $1c58e
@@ -106,16 +233,142 @@ Func_1c610: ; 1c610 (7:4610)
INCBIN "baserom.gbc",$1c610,$1c6f8 - $1c610
Func_1c6f8: ; 1c6f8 (7:46f8)
-INCBIN "baserom.gbc",$1c6f8,$1c72e - $1c6f8
+INCBIN "baserom.gbc",$1c6f8,$1c719 - $1c6f8
+
+Func_1c719: ; 1c719 (7:4719)
+ push hl
+ push bc
+ ld a, [wd3aa]
+ ld l, $2
+ call Func_39ad
+ ld a, [hli]
+ ld b, a
+ ld c, [hl]
+ ld a, $40
+ call $3937
+ pop bc
+ pop hl
+ ret
+
Func_1c72e: ; 1c72e (7:472e)
INCBIN "baserom.gbc",$1c72e,$1c768 - $1c72e
Func_1c768: ; 1c768 (7:4768)
-INCBIN "baserom.gbc",$1c768,$1c82e - $1c768
+ push hl
+ ld a, [wd3aa]
+ ld l, $04
+ call Func_39ad
+ ld a, [wd334]
+ xor $02
+ ld [hl], a
+ call Func_1c58e
+ ld a, $02
+ farcall Func_c29b
+ ld a, [wd3aa]
+ call $39a7
+ ld a, [hl]
+ farcall Func_1187d
+ pop hl
+ ret
+
+Func_1c78d: ; 1c78d (7:478d)
+ push hl
+ ld a, [wd3aa]
+ ld l, $5
+ call Func_39ad
+ set 5, [hl]
+ ld a, [wd3aa]
+ ld l, $8
+ call Func_39ad
+ xor a
+ ld [hli], a
+.asm_1c7a2
+ ld [hl], c
+ inc hl
+ ld [hl], b
+ dec hl
+ call $39ea
+ cp $f0
+ jr nc, .asm_1c7bb
+ push af
+ and $7f
+ call $45ff
+ pop af
+ bit 7, a
+ jr z, .asm_1c7dc
+ inc bc
+ jr .asm_1c7a2
+
+.asm_1c7bb
+ cp $ff
+ jr z, .asm_1c7d2
+ inc bc
+ call $39ea
+ push hl
+ ld l, a
+ ld h, $0
+ bit 7, l
+ jr z, .asm_1c7cc
+ dec h
+
+.asm_1c7cc
+ add hl, bc
+ ld c, l
+ ld b, h
+ pop hl
+ jr .asm_1c7a2
+
+.asm_1c7d2
+ ld a, [wd3aa]
+ ld l, $5
+ call Func_39ad
+ res 5, [hl]
+
+.asm_1c7dc
+ pop hl
+ ret
+
+Func_1c7de: ; 1c7de (7:47de)
+ ld a, [$d3b7]
+ and $20
+ ret
+; 0x1c7e4
+
+INCBIN "baserom.gbc",$1c7e4,$1c82e - $1c7e4
Func_1c82e: ; 1c82e (7:482e)
-INCBIN "baserom.gbc",$1c82e,$1d078 - $1c82e
+INCBIN "baserom.gbc",$1c82e,$1c83d - $1c82e
+
+Func_1c83d: ; 1c83d (7:483d)
+ push hl
+ push bc
+ ld b, a
+ ld c, $a
+ ld hl, $d3bb
+.asm_1c845
+ ld a, [hl]
+ or a
+ jr z, .asm_1c853
+ cp b
+ jr z, .asm_1c855
+ inc hl
+ dec c
+ jr nz, .asm_1c845
+ rst $38
+ jr .asm_1c855
+
+.asm_1c853
+ ld a, b
+ ld [hl], a
+
+.asm_1c855
+ pop bc
+ pop hl
+ ret
+; 0x1c858
+
+INCBIN "baserom.gbc",$1c858,$1d078 - $1c858
Func_1d078: ; 1d078 (7:5078)
ld a, [wd627]
diff --git a/src/engine/home.asm b/src/engine/home.asm
index 15368bd..49b7dc0 100755
--- a/src/engine/home.asm
+++ b/src/engine/home.asm
@@ -219,6 +219,7 @@ WaitForVBlank: ; 0264 (0:0264)
ld a, [hl]
.asm_270
halt
+ nop
cp [hl]
jr z, .asm_270
.asm_275
@@ -3237,9 +3238,112 @@ PrintOpponentName: ; 1c8e (0:1c8e)
.printPlayer2
text_hl Player2
jp PrintTextBoxBorderLabel
-; 0x1caa
-INCBIN "baserom.gbc",$1caa,$1d2e - $1caa
+Func_1caa: ; 1caa (0:1caa)
+ push de
+ push bc
+ call EnableExtRAM
+ ld hl, $0000
+ ld de, sDeck1Cards
+ ld c, $4
+.asm_1cb7
+ ld a, [de]
+ or a
+ jr z, .asm_1cc1
+ ld a, c
+ ld bc, $003c
+ add hl, bc
+ ld c, a
+
+.asm_1cc1
+ ld a, $54
+ add e
+ ld e, a
+ ld a, $0
+ adc d
+ ld d, a
+ dec c
+ jr nz, .asm_1cb7
+ ld de, sCardCollection
+.asm_1ccf
+ ld a, [de]
+ bit 7, a
+ jr nz, .asm_1cd8
+ ld c, a
+ ld b, $0
+ add hl, bc
+
+.asm_1cd8
+ inc e
+ jr nz, .asm_1ccf
+ call DisableExtRAM
+ pop bc
+ pop de
+ ret
+
+Func_1ce1: ; 1ce1 (0:1ce1)
+ push hl
+ push de
+ push bc
+ call EnableExtRAM
+ ld c, a
+ ld b, $0
+ ld hl, sDeck1Cards
+ ld d, $4
+.asm_1cef
+ ld a, [hl]
+ or a
+ jr z, .asm_1cff
+ push hl
+ ld e, $3c
+.asm_1cf6
+ ld a, [hli]
+ cp c
+ jr nz, .asm_1cfb
+ inc b
+
+.asm_1cfb
+ dec e
+ jr nz, .asm_1cf6
+ pop hl
+
+.asm_1cff
+ push de
+ ld de, $0054
+ add hl, de
+ pop de
+ dec d
+ jr nz, .asm_1cef
+ ld h, $a1
+ ld l, c
+ ld a, [hl]
+ bit 7, a
+ jr nz, .asm_1d11
+ add b
+
+.asm_1d11
+ and $7f
+ call DisableExtRAM
+ pop bc
+ pop de
+ pop hl
+ or a
+ ret nz
+ scf
+ ret
+
+Func_1d1d: ; 1d1d (0:1d1d)
+ push hl
+ call EnableExtRAM
+ ld h, $a1
+ ld l, a
+ ld a, [hl]
+ call DisableExtRAM
+ pop hl
+ and $7f
+ ret nz
+ scf
+ ret
;creates a list at $c000 of every card the player owns and how many
CreateTempCardCollection: ; 1d2e (0:1d2e)
@@ -3305,7 +3409,24 @@ AddCardToCollection: ; 1d6e (0:1d6e)
pop hl
ret
-INCBIN "baserom.gbc",$1d91,$1dca - $1d91
+Func_1d91: ; 1d91 (0:1d91)
+ push hl
+ call EnableExtRAM
+ ld h, $a1
+ ld l, a
+ ld a, [hl]
+ and $7f
+ jr z, .asm_1d9f
+ dec a
+ ld [hl], a
+
+.asm_1d9f
+ call DisableExtRAM
+ pop hl
+ ret
+; 0x1da4
+
+INCBIN "baserom.gbc",$1da4,$1dca - $1da4
; memcpy(HL, DE, C)
Memcpy: ; 1dca (0:1dca)
@@ -5391,9 +5512,24 @@ Func_2f32: ; 2f32 (0:2f32)
.asm_2f43
pop hl
ret
-; 0x2f45
-INCBIN "baserom.gbc",$2f45,$2f5d - $2f45
+Func_2f45: ; 2f45 (0:2f45)
+ push hl
+ call GetCardPointer
+ jr c, .asm_2f5b
+ ld a, $c
+ call BankpushHome2
+ ld de, $0003
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ call BankpopHome
+ or a
+
+.asm_2f5b
+ pop hl
+ ret
; from the card id in a, loads type into a, rarity into b, and set into c
GetCardHeader: ; 2f5d (0:2f5d)
@@ -6730,9 +6866,14 @@ Credits_3911: ; 3911 (0:3911)
farcall Credits_1d6ad
or a
ret
-; 0x3917
-INCBIN "baserom.gbc",$3917,$3927 - $3917
+Func_3917: ; 3917 (0:3917)
+ ld a, $22
+ farcall Func_ca6c
+ call EnableExtRAM
+ ld [$a00a], a
+ call DisableExtRAM
+ ret
Func_3927: ; 3927 (0:3927)
push hl
@@ -6787,9 +6928,11 @@ Func_3997: ; 3997 (0:3997)
pop af
call BankswitchHome
ret
-; 0x39a7
-INCBIN "baserom.gbc",$39a7,$39ad - $39a7
+Func_39a7: ; 39a7 (0:39a7)
+ ld l, $0
+ call Func_39ad
+ ret
Func_39ad: ; 39ad (0:39ad)
push bc
@@ -6991,6 +7134,7 @@ Func_3abd: ; 3abd (0:3abd)
INCBIN "baserom.gbc",$3ae8,$3aed - $3ae8
+; finds a pointer on a table (in bank 4) using the data after rst20 is called and jumps to it (in bank 3)
Func_3aed: ; 3aed (0:3aed)
ld hl, $d413
ld a, [hli]
@@ -7004,11 +7148,11 @@ Func_3aed: ; 3aed (0:3aed)
rlca
ld c, a
ld b, $0
- ld hl, Unknown_1217b
+ ld hl, PointerTable_1217b
add hl, bc
ldh a, [hBankROM]
push af
- ld a, BANK(Unknown_1217b)
+ ld a, BANK(PointerTable_1217b)
call BankswitchHome
ld a, [hli]
ld h, [hl]
@@ -7193,9 +7337,13 @@ DivideBCbyDE: ; 3c5a (0:3c5a)
dec a
jr nz, .asm_3c63
ret
-; 0x3c83
-INCBIN "baserom.gbc",$3c83,$3c96 - $3c83
+Func_3c83: ; 3c83 (0:3c83)
+ call PlaySong
+ ret
+; 0x3c87
+
+INCBIN "baserom.gbc",$3c87,$3c96 - $3c87
Func_3c96: ; 3c96 (0:3c96)
call DoFrameIfLCDEnabled