Files
poketcg/engine/home.asm
T
U-Fish-PC\Daniel 14bbdcb6c3 LoadMap
2014-04-23 21:07:44 -04:00

3351 lines
41 KiB
NASM
Executable File

; rst vectors
SECTION "rst00",ROM0[0]
ret
SECTION "rst08",ROM0[8]
ret
SECTION "rst10",ROM0[$10]
ret
SECTION "rst18",ROM0[$18]
jp RST18
SECTION "rst20",ROM0[$20]
jp RST20
SECTION "rst28",ROM0[$28]
jp RST28
SECTION "rst30",ROM0[$30]
ret
SECTION "rst38",ROM0[$38]
ret
; interrupts
SECTION "vblank",ROM0[$40]
jp VBlankHandler
SECTION "lcdc",ROM0[$48]
call $cacd
reti
SECTION "timer",ROM0[$50]
jp TimerHandler
SECTION "serial",ROM0[$58]
jp SerialHandler
SECTION "joypad",ROM0[$60]
reti
SECTION "romheader",ROM0[$100]
nop
jp Start
SECTION "start",ROM0[$150]
Start: ; 0150 (0:0150)
di
ld sp, $fffe
push af
xor a
ld [$ff0f], a
ld [$ffff], a
call Func_03ec
ld a, $1
call BankswitchHome
xor a
call Func_07a9
call Func_07c5
call Func_028a
pop af
ld [$cab3], a
call Func_0349
ld a, $20
ld [$cab6], a
call Func_03a1
call Func_030b
call Func_036a
call Func_377f
call Func_0241
call Func_0ea6
call CopyDMAFunction
call Func_080b
ld a, BANK(Func_4000)
call BankswitchHome
ld sp, $e000
jp Func_4000
VBlankHandler: ; 019b (0:019b)
push af
push bc
push de
push hl
ld a, [$ff80]
push af
ld hl, $caba
bit 0, [hl]
jr nz, .asm_1dd
set 0, [hl]
ld a, [$cac0]
or a
jr z, .asm_1b8
call $ff83
xor a
ld [$cac0], a
.asm_1b8
ld a, [$ff92]
ld [$ff43], a
ld a, [$ff93]
ld [$ff42], a
ld a, [$ff94]
ld [$ff4b], a
ld a, [$ff95]
ld [$ff4a], a
ld a, [$cabb]
ld [$ff40], a
ei
call $cad0
call Func_042d
ld hl, $cab8
inc [hl]
ld hl, $caba
res 0, [hl]
.asm_1dd
pop af
call BankswitchHome
pop hl
pop de
pop bc
pop af
reti
TimerHandler: ; 01e6 (0:01e6)
push af
push hl
push de
push bc
ei
call Func_0c91
ld hl, $cac3
ld a, [hl]
inc [hl]
and $3
jr nz, .asm_217
call Func_021c
ld hl, $caba
bit 1, [hl]
jr nz, .asm_217
set 1, [hl]
ld a, [$ff80]
push af
ld a, BANK(Func_f4003)
call BankswitchHome
call Func_f4003
pop af
call BankswitchHome
ld hl, $caba
res 1, [hl]
.asm_217
pop bc
pop de
pop hl
pop af
reti
Func_021c: ; 021c (0:021c)
ld a, [$cac4]
or a
ret z
ld hl, $cac5
inc [hl]
ld a, [hl]
cp $3c
ret c
ld [hl], $0
inc hl
inc [hl]
ld a, [hl]
cp $3c
ret c
ld [hl], $0
inc hl
inc [hl]
ld a, [hl]
cp $3c
ret c
ld [hl], $0
inc hl
inc [hl]
ret nz
inc hl
inc [hl]
ret
Func_0241: ; 0241 (0:0241)
ld b, $bc
call Func_025c
jr c, .asm_250
ld a, [$ff4d]
and $80
jr z, .asm_250
ld b, $78
.asm_250
ld a, b
ld [$ff06], a
ld a, $3
ld [$ff07], a
ld a, $7
ld [$ff07], a
ret
Func_025c: ; 025c (0:025c)
ld a, [$cab4]
cp $2
ret z
scf
ret
Func_0264: ; 0264 (0:0264)
push hl
ld a, [$cabb]
bit 7, a
jr z, .asm_275
ld hl, $cab8
ld a, [hl]
.asm_270
halt
cp [hl]
jr z, .asm_270
.asm_275
pop hl
ret
Func_0277: ; 0277 (0:0277)
ld a, [$cabb]
bit 7, a
ret nz
or $80
ld [$cabb], a
ld [$ff40], a
ld a, $c0
ld [$cabf], a
ret
Func_028a: ; 028a (0:028a)
ld a, [$ff40]
bit 7, a
ret z
ld a, [$ffff]
ld [$cab7], a
res 0, a
ld [$ffff], a
.asm_298
ld a, [$ff44]
cp $91
jr nz, .asm_298
ld a, [$ff40]
and $7f
ld [$ff40], a
ld a, [$cabb]
and $7f
ld [$cabb], a
xor a
ld [$ff47], a
ld [$ff48], a
ld [$ff49], a
ld a, [$cab7]
ld [$ffff], a
ret
Func_02b9: ; 02b9 (0:02b9)
INCBIN "baserom.gbc",$02b9,$02dd - $02b9
Func_02dd: ; 02dd (0:02dd)
ld a, [$ffff]
or $4
ld [$ffff], a
ret
Func_02e4: ; 02e4 (0:02e4)
ld a, [$ffff]
or $1
ld [$ffff], a
ret
; 0x2eb
INCBIN "baserom.gbc",$02eb,$030b - $02eb
Func_030b: ; 030b (0:030b)
xor a
ld [$ff42], a
ld [$ff43], a
ld [$ff4a], a
ld [$ff4b], a
ld [$cab0], a
ld [$cab1], a
ld [$cab2], a
ld [$ff92], a
ld [$ff93], a
ld [$ff94], a
ld [$ff95], a
xor a
ld [$caba], a
ld a, $c3
ld [$cacd], a
ld [$cad0], a
ld hl, $cad1
ld [hl], Func_0348 & $ff
inc hl
ld [hl], Func_0348 >> $8
ld a, $47
ld [$cabb], a
ld a, $1
ld [$6000], a
ld a, $a
ld [$0000], a
Func_0348: ; 0348 (0:0348)
ret
Func_0349: ; 0349 (0:0349)
ld b, $2
cp $11
jr z, .asm_35b
call Func_0b59
ld b, $0
jr nc, .asm_35b
call Func_0a0d
ld b, $1
.asm_35b
ld a, b
ld [$cab4], a
cp $2
ret nz
ld a, $1
ld [$ff70], a
call Func_07e7
ret
Func_036a: ; 036a (0:036a)
ld hl, $cabc
ld a, $e4
ld [$ff47], a
ld [hli], a
ld [$ff48], a
ld [$ff49], a
ld [hli], a
ld [hl], a
xor a
ld [$cabf], a
ld a, [$cab4]
cp $2
ret nz
ld de, $caf0
ld c, $10
.asm_387
ld hl, InitialPalette
ld b, $8
.asm_38c
ld a, [hli]
ld [de], a
inc de
dec b
jr nz, .asm_38c
dec c
jr nz, .asm_387
call Func_0458
ret
InitialPalette: ; 0399 (0:0399)
RGB 28,28,24
RGB 21,21,16
RGB 10,10,08
RGB 00,00,00
Func_03a1: ; 03a1 (0:03a1)
call Func_03c0
call Func_025c
jr c, .asm_3b2
call Func_07cd
call .asm_3b2
call Func_07c5
.asm_3b2
ld hl, $8000
ld bc, $1800
.asm_3b8
xor a
ld [hli], a
dec bc
ld a, b
or c
jr nz, .asm_3b8
ret
Func_03c0: ; 03c0 (0:03c0)
call Func_07c5
ld hl, $9800
ld bc, $0400
.asm_3c9
ld a, [$cab6]
ld [hli], a
dec bc
ld a, c
or b
jr nz, .asm_3c9
ld a, [$cab4]
cp $2
ret nz
call Func_07cd
ld hl, $9800
ld bc, $0400
.asm_3e1
xor a
ld [hli], a
dec bc
ld a, c
or b
jr nz, .asm_3e1
call Func_07c5
ret
Func_03ec: ; 03ec (0:03ec)
ld hl, $c000
ld bc, $2000
.asm_3f2
xor a
ld [hli], a
dec bc
ld a, c
or b
jr nz, .asm_3f2
ld c, $80
ld b, $70
xor a
.asm_3fe
ld [$ff00+c], a
inc c
dec b
jr nz, .asm_3fe
ret
; 0x404
INCBIN "baserom.gbc",$0404,$042d - $0404
Func_042d: ; 042d (0:042d)
ld a, [$cabf]
or a
ret z
ld hl, $cabc
ld a, [hli]
ld [$ff47], a
ld a, [hli]
ld [$ff48], a
ld a, [hl]
ld [$ff49], a
ld a, [$cab4]
cp $2
jr z, asm_44a
asm_445
xor a
ld [$cabf], a
ret
asm_44a
ld a, [$cabf]
bit 6, a
jr nz, Func_0458
ld b, $8
call InitializePalettes
jr asm_445
Func_0458: ; 0458 (0:0458)
xor a
ld b, $40
call InitializePalettes
ld a, $8
ld b, $40
call InitializePalettes
jr asm_445
InitializePalettes: ; 0467 (0:0467)
add a
add a
add a
ld e, a
ld d, $0
ld hl, $caf0
add hl, de
ld c, $68
bit 6, a
jr z, .asm_479
ld c, $6a
.asm_479
and $bf
ld e, a
.asm_47c
ld a, e
ld [$ff00+c], a
inc c
.asm_47f
ld a, [$ff41]
and $2
jr nz, .asm_47f
ld a, [hl]
ld [$ff00+c], a
ld a, [$ff00+c]
cp [hl]
jr nz, .asm_47f
inc hl
dec c
inc e
dec b
jr nz, .asm_47c
ret
; 0x492
INCBIN "baserom.gbc",$0492,$04a2 - $0492
Func_04a2: ; 04a2 (0:04a2)
call Func_028a
call Func_03c0
xor a
ld [$cac2], a
ld a, [$cab4]
cp $1
ret nz
call Func_0277
ld hl, Unknown_04bf
call Func_0b20
call Func_028a
ret
Unknown_04bf: ; 04bf (0:04bf)
INCBIN "baserom.gbc",$04bf,$04cf - $04bf
Func_04cf: ; 04cf (0:04cf)
ld l, c
ld h, $0
add hl, hl
add hl, hl
add hl, hl
add hl, hl
add hl, hl
ld c, b
ld b, $98
add hl, bc
ld e, l
ld d, h
ret
Func_04de: ; 04de (0:04de)
ld a, $20
ld [$ff00], a
ld a, [$ff00]
ld a, [$ff00]
cpl
and $f
swap a
ld b, a
ld a, $10
ld [$ff00], a
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
cpl
and $f
or b
ld c, a
cpl
ld b, a
ld a, [$ff90]
xor c
and b
ld [$ff8e], a
ld a, [$ff90]
xor c
and c
ld b, a
ld [$ff91], a
ld a, [$ff90]
and $f
cp $f
jr nz, asm_522
call Func_0ea6
Func_051b: ; 051b (0:051b)
ld a, [$cab3]
di
jp Start
asm_522
ld a, c
ld [$ff90], a
ld a, $30
ld [$ff00], a
ret
; 0x52a
INCBIN "baserom.gbc",$052a,$053f - $052a
Func_053f: ; 053f (0:053f)
push af
push hl
push de
push bc
ld hl, $cad3
call Func_05b6
call Func_0264
call Func_04de
call Func_0572
ld a, [$cad5]
or a
jr z, .asm_56d
ld a, [$ff91]
and $4
jr z, .asm_56d
.asm_55e
call Func_0264
call Func_04de
call Func_0572
ld a, [$ff91]
and $4
jr z, .asm_55e
.asm_56d
pop bc
pop de
pop hl
pop af
ret
Func_0572: ; 0572 (0:0572)
ld a, [$ff90]
ld [$ff8f], a
and $f0
jr z, .asm_58c
ld hl, $ff8d
ld a, [$ff91]
and $f0
jr z, .asm_586
ld [hl], $18
ret
.asm_586
dec [hl]
jr nz, .asm_58c
ld [hl], $6
ret
.asm_58c
ld a, [$ff91]
and $f
ld [$ff8f], a
ret
CopyDMAFunction: ; 0593 (0:0593)
ld c, $83
ld b, JumpToFunctionInTable - DMA
ld hl, DMA
.asm_59a
ld a, [hli]
ld [$ff00+c], a
inc c
dec b
jr nz, .asm_59a
ret
; CopyDMAFunction copies this function to $ff83
DMA: ; 05a1 (0:05a1)
ld a, $ca
ld [$ff46], a
ld a, $28
.asm_5a7
dec a
jr nz, .asm_5a7
ret
; jumps to index a in pointer table hl
JumpToFunctionInTable: ; 05ab (0:05ab)
add a
add l
ld l, a
ld a, $0
adc h
ld h, a
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
Func_05b6: ; 05b6 (0:05b6)
push af
ld a, [hli]
or [hl]
jr nz, .asm_5bd
pop af
ret
.asm_5bd
ld a, [hld]
ld l, [hl]
ld h, a
pop af
jp [hl]
; 0x5c2
INCBIN "baserom.gbc",$05c2,$0663 - $05c2
Func_0663: ; 0663 (0:0663)
push bc
ld bc, $d8f0
call Func_0686
ld bc, $fc18
call Func_0686
ld bc, $ff9c
call Func_0686
ld bc, $fff6
call Func_0686
ld bc, $ffff
call Func_0686
xor a
ld [de], a
pop bc
ret
Func_0686: ; 0686 (0:0686)
ld a, $2f
.asm_688
inc a
add hl, bc
jr c, .asm_688
ld [de], a
inc de
ld a, l
sub c
ld l, a
ld a, h
sbc b
ld h, a
ret
; 0x695
INCBIN "baserom.gbc",$0695,$06c3 - $0695
Func_06c3: ; 06c3 (0:06c3)
push af
ld a, [$cabb]
rla
jr c, .asm_6d8
pop af
push hl
push de
push bc
push af
call Func_04cf
pop af
ld [de], a
pop bc
pop de
pop hl
ret
.asm_6d8
pop af
push hl
push de
push bc
ld hl, $cac1
push hl
ld [hl], a
call Func_04cf
pop hl
ld b, $1
call Func_0c19
pop bc
pop de
pop hl
ret
; 0x6ee
INCBIN "baserom.gbc",$06ee,$0709 - $06ee
Func_0709: ; 0709 (0:0709)
jp Func_0c19
Func_070c: ; 070c (0:070c)
ld a, [$cabb]
rla
jr nc, .asm_726
.asm_712
push bc
push hl
push de
ld b, c
call Func_0709
ld b, $0
pop hl
add hl, bc
ld e, l
ld d, h
pop hl
add hl, bc
pop bc
dec b
jr nz, .asm_712
ret
.asm_726
push bc
.asm_727
ld a, [hli]
ld [de], a
inc de
dec c
jr nz, .asm_727
pop bc
dec b
jr nz, .asm_726
ret
CopyData_SaveRegisters: ; 0732 (0:0732)
push hl
push de
push bc
call CopyData
pop bc
pop de
pop hl
ret
; copies bc bytes from hl to de
CopyData: ; 073c (0:073c)
ld a, [hli]
ld [de], a
inc de
dec bc
ld a, c
or b
jr nz, CopyData
ret
Func_0745: ; 0745 (0:0745)
push hl
push bc
push af
push de
ld e, l
ld d, h
ld hl, [sp+$9]
ld b, [hl]
dec hl
ld c, [hl]
dec hl
ld [hl], b
dec hl
ld [hl], c
ld hl, [sp+$9]
ld a, [$ff80]
ld [hld], a
ld [hl], $0
ld a, d
rlca
rlca
and $3
ld b, a
res 7, d
set 6, d
ld l, e
ld h, d
pop de
pop af
add b
call BankswitchHome
pop bc
ret
; 0x76f
INCBIN "baserom.gbc",$076f,$078e - $076f
Func_078e: ; 078e (0:078e)
push hl
push de
ld hl, [sp+$7]
ld a, [hld]
call BankswitchHome
dec hl
ld d, [hl]
dec hl
ld e, [hl]
inc hl
inc hl
ld [hl], e
inc hl
ld [hl], d
pop de
pop hl
pop af
ret
BankswitchHome: ; 07a3 (0:07a3)
ld [$ff80], a
ld [$2000], a
ret
Func_07a9: ; 07a9 (0:07a9)
push af
ld [$ff81], a
ld [$4000], a
ld a, $a
ld [$0000], a
pop af
ret
Func_07b6: ; 07b6 (0:07b6)
push af
ld a, $a
ld [$0000], a
pop af
ret
Func_07be: ; 07be (0:07be)
push af
xor a
ld [$0000], a
pop af
ret
Func_07c5: ; 07c5 (0:07c5)
push af
xor a
ld [$ff82], a
ld [$ff4f], a
pop af
ret
Func_07cd: ; 07cd (0:07cd)
push af
ld a, $1
ld [$ff82], a
ld [$ff4f], a
pop af
ret
Func_07d6: ; 07d6 (0:07d6)
ld [$ff82], a
ld [$ff4f], a
ret
; 0x7db
INCBIN "baserom.gbc",$07db,$07e7 - $07db
Func_07e7: ; 07e7 (0:07e7)
call Func_025c
ret c
ld hl, $ff4d
bit 7, [hl]
ret nz
ld a, [$ffff]
push af
xor a
ld [$ffff], a
set 0, [hl]
xor a
ld [$ff0f], a
ld [$ffff], a
ld a, $30
ld [$ff00], a
stop
call Func_0241
pop af
ld [$ffff], a
ret
Func_080b: ; 080b (0:080b)
xor a
call Func_07a9
ld hl, $a000
ld bc, $1000
.asm_815
ld a, [hli]
cp $41
jr nz, .asm_82f
ld a, [hli]
cp $93
jr nz, .asm_82f
dec bc
ld a, c
or b
jr nz, .asm_815
call Func_084d
scf
call Func_4050
call Func_07be
ret
.asm_82f
ld hl, $a000
ld a, [hli]
cp $4
jr nz, .asm_842
ld a, [hli]
cp $21
jr nz, .asm_842
ld a, [hl]
cp $5
jr nz, .asm_842
ret
.asm_842
call Func_084d
or a
call Func_4050
call Func_07be
ret
Func_084d: ; 084d (0:084d)
ld a, $3
.asm_84f
call Func_0863
dec a
cp $ff
jr nz, .asm_84f
ld hl, $a000
ld [hl], $4
inc hl
ld [hl], $21
inc hl
ld [hl], $5
ret
Func_0863: ; 0863 (0:0863)
push af
call Func_07a9
call Func_07b6
ld hl, $a000
ld bc, $2000
.asm_870
xor a
ld [hli], a
dec bc
ld a, c
or b
jr nz, .asm_870
pop af
ret
Func_0879: ; 0879 (0:0879)
push de
ld a, h
ld e, l
ld d, $0
ld l, d
ld h, d
jr .asm_887
.asm_882
add hl, de
.asm_883
sla e
rl d
.asm_887
srl a
jr c, .asm_882
jr nz, .asm_883
pop de
ret
; 0x88f
INCBIN "baserom.gbc",$088f,$099c - $088f
Func_099c: ; 099c (0:099c)
xor a
ld [$cab5], a
ld hl, $ca00
ld c, $28
xor a
.asm_9a6
ld [hli], a
ld [hli], a
inc hl
inc hl
dec c
jr nz, .asm_9a6
ret
; this function affects the stack so that it returns to the pointer following the rst call
; similar to rst 28, except this always loads bank 1
RST18: ; 09ae (0:09ae)
push hl
push hl
push hl
push hl
push de
push af
ld hl, [sp+$d]
ld d, [hl]
dec hl
ld e, [hl]
dec hl
ld [hl], $0
dec hl
ld a, [$ff80]
ld [hld], a
ld [hl], $9
dec hl
ld [hl], $dc
dec hl
inc de
ld a, [de]
ld [hld], a
dec de
ld a, [de]
ld [hl], a
ld a, $1
; fallthrough
Func_09ce: ; 09ce (0:09ce)
call BankswitchHome
ld hl, [sp+$d]
inc de
inc de
ld [hl], d
dec hl
ld [hl], e
pop af
pop de
pop hl
ret
; 0x9dc
INCBIN "baserom.gbc",$09dc,$09e9 - $09dc
; this function affects the stack so that it returns to the three byte pointer following the rst call
RST28: ; 09e9 (0:09e9)
push hl
push hl
push hl
push hl
push de
push af
ld hl, [sp+$d]
ld d, [hl]
dec hl
ld e, [hl]
dec hl
ld [hl], $0
dec hl
ld a, [$ff80]
ld [hld], a
ld [hl], $9
dec hl
ld [hl], $dc
dec hl
inc de
inc de
ld a, [de]
ld [hld], a
dec de
ld a, [de]
ld [hl], a
dec de
ld a, [de]
inc de
jr Func_09ce
Func_0a0d: ; 0a0d (0:0a0d)
ld hl, Unknown_0ad0
call Func_0b20
ld hl, Unknown_0a50
call Func_0b20
ld hl, Unknown_0a60
call Func_0b20
ld hl, Unknown_0a70
call Func_0b20
ld hl, Unknown_0a80
call Func_0b20
ld hl, Unknown_0a90
call Func_0b20
ld hl, Unknown_0aa0
call Func_0b20
ld hl, Unknown_0ab0
call Func_0b20
ld hl, Unknown_0ac0
call Func_0b20
ld hl, Unknown_0af0
call Func_0b20
ld hl, Unknown_0ae0
call Func_0b20
ret
Unknown_0a50: ; 0a50 (0:0a50)
INCBIN "baserom.gbc",$0a50,$0a60 - $0a50
Unknown_0a60: ; 0a60 (0:0a60)
INCBIN "baserom.gbc",$0a60,$0a70 - $0a60
Unknown_0a70: ; 0a70 (0:0a70)
INCBIN "baserom.gbc",$0a70,$0a80 - $0a70
Unknown_0a80: ; 0a80 (0:0a80)
INCBIN "baserom.gbc",$0a80,$0a90 - $0a80
Unknown_0a90: ; 0a90 (0:0a90)
INCBIN "baserom.gbc",$0a90,$0aa0 - $0a90
Unknown_0aa0: ; 0aa0 (0:0aa0)
INCBIN "baserom.gbc",$0aa0,$0ab0 - $0aa0
Unknown_0ab0: ; 0ab0 (0:0ab0)
INCBIN "baserom.gbc",$0ab0,$0ac0 - $0ab0
Unknown_0ac0: ; 0ac0 (0:0ac0)
INCBIN "baserom.gbc",$0ac0,$0ad0 - $0ac0
Unknown_0ad0: ; 0ad0 (0:0ad0)
INCBIN "baserom.gbc",$0ad0,$0ae0 - $0ad0
Unknown_0ae0: ; 0ae0 (0:0ae0)
INCBIN "baserom.gbc",$0ae0,$0af0 - $0ae0
Unknown_0af0: ; 0af0 (0:0af0)
INCBIN "baserom.gbc",$0af0,$0b20 - $0af0
Func_0b20: ; 0b20 (0:0b20)
ld a, [hl]
and $7
ret z
ld b, a
ld c, $0
.asm_b27
push bc
ld a, $0
ld [$ff00+c], a
ld a, $30
ld [$ff00+c], a
ld b, $10
.asm_b30
ld e, $8
ld a, [hli]
ld d, a
.asm_b34
bit 0, d
ld a, $10
jr nz, .asm_b3c
ld a, $20
.asm_b3c
ld [$ff00+c], a
ld a, $30
ld [$ff00+c], a
rr d
dec e
jr nz, .asm_b34
dec b
jr nz, .asm_b30
ld a, $20
ld [$ff00+c], a
ld a, $30
ld [$ff00+c], a
pop bc
dec b
jr nz, .asm_b27
ld bc, $0004
call Wait
ret
Func_0b59: ; 0b59 (0:0b59)
ld bc, $003c
call Wait
ld hl, Unknown_0bbb
call Func_0b20
ld a, [$ff00]
and $3
cp $3
jr nz, .asm_ba3
ld a, $20
ld [$ff00], a
ld a, [$ff00]
ld a, [$ff00]
ld a, $30
ld [$ff00], a
ld a, $10
ld [$ff00], a
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
ld a, $30
ld [$ff00], a
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
ld a, [$ff00]
and $3
cp $3
jr nz, .asm_ba3
ld hl, Unknown_0bab
call Func_0b20
or a
ret
.asm_ba3
ld hl, Unknown_0bab
call Func_0b20
scf
ret
Unknown_0bab: ; 0bab (0:0bab)
INCBIN "baserom.gbc",$0bab,$0bbb - $0bab
Unknown_0bbb: ; 0bbb (0:0bbb)
INCBIN "baserom.gbc",$0bbb,$0c08 - $0bbb
; loops 1750 * bc times
Wait: ; 0c08 (0:0c08)
ld de, 1750
.loop
nop
nop
nop
dec de
ld a, d
or e
jr nz, .loop
dec bc
ld a, b
or c
jr nz, Wait
ret
Func_0c19: ; 0c19 (0:0c19)
push bc
.asm_c1a
ei
di
ld a, [$ff41]
and $3
jr nz, .asm_c1a
ld a, [hl]
ld [de], a
ld a, [$ff41]
and $3
jr nz, .asm_c1a
ei
inc hl
inc de
dec b
jr nz, .asm_c1a
pop bc
ret
Func_0c32: ; 0c32 (0:0c32)
push bc
.asm_c33
ei
di
ld a, [$ff41]
and $3
jr nz, .asm_c33
ld a, [de]
ld [hl], a
ld a, [$ff41]
and $3
jr nz, .asm_c33
ei
inc hl
inc de
dec c
jr nz, .asm_c33
pop bc
ret
; 0xc4b
INCBIN "baserom.gbc",$0c4b,$0c91 - $0c4b
Func_0c91: ; 0c91 (0:0c91)
ld a, [$cb74]
cp $29
jr z, .asm_c9d
cp $12
jr z, .asm_caa
ret
.asm_c9d
ld a, [$ff02]
add a
ret c
ld a, $1
ld [$ff02], a
ld a, $81
ld [$ff02], a
ret
.asm_caa
ld a, [$cb76]
ld hl, $cb77
cp [hl]
ld [hl], a
ld hl, $cb78
jr nz, .asm_cc2
inc [hl]
ld a, [hl]
cp $4
ret c
ld hl, $cb75
set 7, [hl]
ret
.asm_cc2
ld [hl], $0
ret
; 0xcc5
INCBIN "baserom.gbc",$0cc5,$0d26 - $0cc5
SerialHandler: ; 0d26 (0:0d26)
push af
push hl
push de
push bc
ld a, [$ce63]
or a
jr z, .asm_d35
call Func_3189
jr .asm_d6e
.asm_d35
ld a, [$cb74]
or a
jr z, .asm_d55
ld a, [$ff01]
call Func_0d77
call Func_0dc8
push af
.asm_d44
ld a, [$ff02]
add a
jr c, .asm_d44
pop af
ld [$ff01], a
ld a, [$cb74]
cp $29
jr z, .asm_d6e
jr .asm_d6a
.asm_d55
ld a, $1
ld [$cba2], a
ld a, [$ff01]
ld [$cba5], a
ld a, $ac
ld [$ff01], a
ld a, [$cba5]
cp $12
jr z, .asm_d6e
.asm_d6a
ld a, $80
ld [$ff02], a
.asm_d6e
ld hl, $cb76
inc [hl]
pop bc
pop de
pop hl
pop af
reti
Func_0d77: ; 0d77 (0:0d77)
ld hl, $cba1
ld e, [hl]
dec e
jr z, .asm_d94
cp $ac
ret z
cp $ca
jr z, .asm_d92
or a
jr z, .asm_d8c
cp $ff
jr nz, .asm_d99
.asm_d8c
ld hl, $cb75
set 6, [hl]
ret
.asm_d92
inc [hl]
ret
.asm_d94
ld [hl], $0
cpl
jr .asm_d9b
.asm_d99
xor $c0
.asm_d9b
push af
ld a, [$cba4]
ld e, a
ld a, [$cba3]
dec a
and $1f
cp e
jr z, .asm_dc1
ld d, $0
ld hl, $cba5
add hl, de
pop af
ld [hl], a
ld a, e
inc a
and $1f
ld [$cba4], a
ld hl, $cba2
inc [hl]
xor a
ld [$cb75], a
ret
.asm_dc1
pop af
ld hl, $cb75
set 0, [hl]
ret
Func_0dc8: ; 0dc8 (0:0dc8)
ld hl, $cb7d
ld a, [hl]
or a
jr nz, .asm_dd9
ld hl, $cb7e
ld a, [hl]
or a
jr nz, .asm_ddd
ld a, $ac
ret
.asm_dd9
ld a, [hl]
ld [hl], $0
ret
.asm_ddd
dec [hl]
ld a, [$cb7f]
ld e, a
ld d, $0
ld hl, $cb81
add hl, de
inc a
and $1f
ld [$cb7f], a
ld a, [hl]
xor $c0
cp $ac
jr z, .asm_e01
cp $ca
jr z, .asm_e01
cp $ff
jr z, .asm_e01
or a
jr z, .asm_e01
ret
.asm_e01
xor $c0
cpl
ld [$cb7d], a
ld a, $ca
ret
; 0xe0a
INCBIN "baserom.gbc",$0e0a,$0ea6 - $0e0a
Func_0ea6: ; 0ea6 (0:0ea6)
ld a, [$ffff]
and $f7
ld [$ffff], a
xor a
ld [$ff01], a
ld [$ff02], a
ld hl, $cb74
ld bc, $0051
.asm_eb7
xor a
ld [hli], a
dec bc
ld a, c
or b
jr nz, .asm_eb7
ret
; 0xebf
INCBIN "baserom.gbc",$0ebf,$1072 - $0ebf
Func_1072: ; 1072 (0:1072)
ld hl, $c400
ld a, [$ff97]
cp $c2
jr z, .asm_107e
ld hl, $c480
.asm_107e
push hl
ld bc, $003b
add hl, bc
ld [hl], $0
pop hl
push hl
.asm_1087
ld a, [de]
inc de
ld b, a
or a
jr z, .asm_1097
ld a, [de]
inc de
ld c, a
.asm_1090
ld [hl], c
inc hl
dec b
jr nz, .asm_1090
jr .asm_1087
.asm_1097
ld hl, $cce9
ld a, [de]
inc de
ld [hli], a
ld a, [de]
ld [hl], a
pop hl
ld bc, $003b
add hl, bc
ld a, [hl]
or a
ret nz
rst $38
scf
ret
; 0x10aa
INCBIN "baserom.gbc",$10aa,$1c7d - $10aa
Func_1c7d: ; 1c7d (0:1c7d)
call Func_07b6
ld hl, $a010
asm_1c83
ld a, [hli]
ld [de], a
inc de
or a
jr nz, asm_1c83
dec de
call Func_07be
ret
Func_1c8e: ; 1c8e (0:1c8e)
ld hl, $cc16
ld a, [hli]
or [hl]
jr z, .asm_1c9b
ld a, [hld]
ld l, [hl]
ld h, a
jp Func_2e89
.asm_1c9b
ld hl, $c500
ld a, [hl]
or a
jr z, .asm_1ca4
jr asm_1c83
.asm_1ca4
ld hl, $0092
jp Func_2e89
; 0x1caa
INCBIN "baserom.gbc",$1caa,$1dca - $1caa
Func_1dca: ; 1dca (0:1dca)
ld a, [$cabb]
bit 7, a
jr nz, .asm_1dd8
.asm_1dd1
ld a, [de]
inc de
ld [hli], a
dec c
jr nz, .asm_1dd1
ret
.asm_1dd8
jp Func_0c32
Func_1ddb: ; 1ddb (0:1ddb)
ld l, e
ld h, $0
add hl, hl
add hl, hl
add hl, hl
add hl, hl
add hl, hl
ld a, l
add d
ld l, a
ld a, h
adc $98
ld h, a
ret
Func_1deb: ; 1deb (0:1deb)
push af
ld a, [$ff92]
rra
rra
rra
and $1f
add d
ld d, a
ld a, [$ff93]
rra
rra
rra
and $1f
add e
ld e, a
pop af
ret
; 0x1e00
INCBIN "baserom.gbc",$1e00,$1e7c - $1e00
Func_1e7c: ; 1e7c (0:1e7c)
ld a, [$cab4]
cp $2
jr z, asm_1ec9
cp $1
jp z, Func_1f0f
Func_1e88: ; 1e88 (0:1e88)
call Func_1ddb
ld a, $1c
ld de, $1819
call Func_1ea5
dec c
dec c
.asm_1e95
ld a, $0
ld de, $1e1f
call Func_1ea5
dec c
jr nz, .asm_1e95
ld a, $1d
ld de, $1a1b
Func_1ea5: ; 1ea5 (0:1ea5)
add sp, $e0
push hl
push bc
ld hl, [sp+$4]
dec b
dec b
push hl
ld [hl], d
inc hl
.asm_1eb0
ld [hli], a
dec b
jr nz, .asm_1eb0
ld [hl], e
pop de
pop bc
pop hl
push hl
push bc
ld c, b
ld b, $0
call Func_1dca
pop bc
pop de
ld hl, $0020
add hl, de
add sp, $20
ret
asm_1ec9
call Func_1ddb
ld a, $1c
ld de, $1819
call Func_1efb
dec c
dec c
.asm_1ed6
ld a, $0
ld de, $1e1f
push hl
call Func_1ea5
pop hl
call Func_07cd
ld a, [$ccf3]
ld e, a
ld d, a
xor a
call Func_1ea5
call Func_07c5
dec c
jr nz, .asm_1ed6
ld a, $1d
ld de, $1a1b
call Func_1efb
ret
Func_1efb: ; 1efb (0:1efb)
push hl
call Func_1ea5
pop hl
call Func_07cd
ld a, [$ccf3]
ld e, a
ld d, a
call Func_1ea5
call Func_07c5
ret
Func_1f0f: ; 1f0f (0:1f0f)
push bc
push de
call Func_1e88
pop de
pop bc
ld a, [$ccf3]
or a
ret z
push bc
push de
ld hl, $cae0
ld de, $1f4f
ld c, $10
.asm_1f25
ld a, [de]
inc de
ld [hli], a
dec c
jr nz, .asm_1f25
pop de
pop bc
ld hl, $cae4
ld [hl], d
inc hl
ld [hl], e
inc hl
ld a, d
add b
dec a
ld [hli], a
ld a, e
add c
dec a
ld [hli], a
ld a, [$ccf3]
and $80
jr z, .asm_1f48
ld a, $2
ld [$cae2], a
.asm_1f48
ld hl, $cae0
call Func_0b20
ret
; 0x1f4f
INCBIN "baserom.gbc",$1f4f,$2119 - $1f4f
Func_2119: ; 2119 (0:2119)
INCBIN "baserom.gbc",$2119,$21c5 - $2119
Func_21c5: ; 21c5 (0:21c5)
push de
push bc
call Func_2298
jr .asm_21e8
.asm_21cc
cp $5
jr c, .asm_21d9
cp $10
jr nc, .asm_21d9
call Func_21f2
jr .asm_21e8
.asm_21d9
ld e, a
ld d, [hl]
call Func_2546
jr nc, .asm_21e1
inc hl
.asm_21e1
call Func_22ca
xor a
call Func_21f2
.asm_21e8
ld a, [hli]
or a
jr nz, .asm_21cc
call Func_230f
pop bc
pop de
ret
Func_21f2: ; 21f2 (0:21f2)
or a
jr z, .asm_2241
cp $e
jr z, .asm_2221
cp $f
jr z, .asm_2221
cp $a
jr z, .asm_224d
cp $5
jr z, .asm_2225
cp $6
jr z, .asm_220f
cp $7
jr z, .asm_2215
scf
ret
.asm_220f
ld a, $1
ld [$cd0a], a
ret
.asm_2215
call Func_230f
xor a
ld [$cd0a], a
ld a, $f
ld [$ffaf], a
ret
.asm_2221
ld [$ffaf], a
xor a
ret
.asm_2225
ld a, [$cd0a]
push af
ld a, $1
ld [$cd0a], a
call Func_230f
pop af
ld [$cd0a], a
ld a, [$ffb0]
or a
jr nz, .asm_2240
ld a, [hl]
push hl
call Func_22f2
pop hl
.asm_2240
inc hl
.asm_2241
ld a, [$ffae]
or a
ret z
ld b, a
ld a, [$ffac]
cp b
jr z, .asm_224d
xor a
ret
.asm_224d
call Func_230f
ld a, [$cd08]
or a
call z, .asm_2257
.asm_2257
xor a
ld [$ffac], a
ld a, [$ffad]
add $20
ld b, a
ld a, [$ffaa]
and $e0
add b
ld [$ffaa], a
ld a, [$ffab]
adc $0
ld [$ffab], a
ld a, [$cd09]
inc a
ld [$cd09], a
xor a
ret
; 0x2275
INCBIN "baserom.gbc",$2275,$2298 - $2275
Func_2298: ; 2298 (0:2298)
xor a
ld [$cd0a], a
ld [$ffac], a
ld [$cd0b], a
ld a, $f
ld [$ffaf], a
ret
Func_22a6: ; 22a6 (0:22a6)
push af
call Func_22ae
pop af
ld [$ffae], a
ret
Func_22ae: ; 22ae (0:22ae)
push hl
ld a, d
ld [$ffad], a
xor a
ld [$ffae], a
ld [$cd09], a
call Func_1ddb
ld a, l
ld [$ffaa], a
ld a, h
ld [$ffab], a
call Func_2298
xor a
ld [$cd0b], a
pop hl
ret
Func_22ca: ; 22ca (0:22ca)
push hl
push de
push bc
ld a, [$ffb0]
and $1
jr nz, .asm_22ed
call Func_2325
jr c, .asm_22de
or a
jr nz, .asm_22e9
call Func_24ac
.asm_22de
ld a, [$ffb0]
and $2
jr nz, .asm_22e9
ld a, [$ffa9]
call Func_22f2
.asm_22e9
pop bc
pop de
pop hl
ret
.asm_22ed
call Func_235e
jr .asm_22e9
Func_22f2: ; 22f2 (0:22f2)
ld [$cd05], a
ld hl, $ffaa
ld e, [hl]
inc hl
ld d, [hl]
inc de
ld [hl], d
dec hl
ld [hl], e
dec de
ld l, e
ld h, d
ld de, $cd05
ld c, $1
call Func_1dca
ld hl, $ffac
inc [hl]
ret
Func_230f: ; 230f (0:230f)
ld a, [$cd0a]
or a
ret z
ld a, [$cd0b]
or a
ret z
push hl
push de
push bc
ld e, $20
call Func_22ca
pop bc
pop de
pop hl
ret
Func_2325: ; 2325 (0:2325)
call Func_235e
ret c
or a
ret nz
ld a, [$ffa8]
ld hl, $cd04
cp [hl]
jr nz, .asm_2345
ld a, [$ffa9]
ld h, $c8
.asm_2337
ld l, a
ld a, [hl]
or a
jr nz, .asm_2337
ld h, $c9
ld c, [hl]
ld b, $c8
xor a
ld [bc], a
jr .asm_234a
.asm_2345
inc [hl]
jr nz, .asm_2349
inc [hl]
.asm_2349
ld l, [hl]
.asm_234a
ld a, [$ffa9]
ld c, a
ld b, $c9
ld a, l
ld [$ffa9], a
ld [bc], a
ld h, $c8
ld [hl], c
ld h, $c6
ld [hl], e
inc h
ld [hl], d
ld b, l
xor a
ret
Func_235e: ; 235e (0:235e)
ld a, [$cd0a]
or a
jr z, .asm_2376
call Func_23b1
ld a, [$cd0b]
ld d, a
or a
jr nz, .asm_2376
ld a, e
ld [$cd0b], a
ld a, $1
or a
ret
.asm_2376
xor a
ld [$cd0b], a
ld a, [$ffa9]
ld l, a
.asm_237d
ld h, $c6
ld a, [hl]
or a
ret z
cp e
jr nz, .asm_238a
inc h
ld a, [hl]
cp d
jr z, .asm_238f
.asm_238a
ld h, $c8
ld l, [hl]
jr .asm_237d
.asm_238f
ld a, [$ffa9]
cp l
jr z, .asm_23af
ld c, a
ld b, $c9
ld a, l
ld [bc], a
ld [$ffa9], a
ld h, $c9
ld b, [hl]
ld [hl], $0
ld h, $c8
ld a, c
ld c, [hl]
ld [hl], a
ld l, b
ld [hl], c
ld h, $c9
inc c
dec c
jr z, .asm_23af
ld l, c
ld [hl], b
.asm_23af
scf
ret
Func_23b1: ; 23b1 (0:23b1)
ld a, [$cd0d]
or a
ret z
ld a, e
cp $60
ret c
cp $7b
ret nc
sub $20
ld e, a
ret
; 0x23c1
INCBIN "baserom.gbc",$23c1,$245d - $23c1
Func_245d: ; 245d (0:245d)
push de
push bc
ld de, $caa0
push de
ld bc, $d8f0
call Func_2499
ld bc, $fc18
call Func_2499
ld bc, $ff9c
call Func_2499
ld bc, $fff6
call Func_2499
ld bc, $ffff
call Func_2499
xor a
ld [de], a
pop hl
ld e, $5
.asm_2486
inc hl
ld a, [hl]
cp $20
jr nz, .asm_2495
ld [hl], $0
inc hl
dec e
jr nz, .asm_2486
dec hl
ld [hl], $20
.asm_2495
dec hl
pop bc
pop de
ret
Func_2499: ; 2499 (0:2499)
ld a, $5
ld [de], a
inc de
ld a, $1f
.asm_249f
inc a
add hl, bc
jr c, .asm_249f
ld [de], a
inc de
ld a, l
sub c
ld l, a
ld a, h
sbc b
ld h, a
ret
Func_24ac: ; 24ac (0:24ac)
push hl
push de
push bc
ld a, [$cd0a]
or a
jr nz, .asm_24bf
call Func_2510
call Func_1dca
.asm_24bb
pop bc
pop de
pop hl
ret
.asm_24bf
call Func_24ca
call Func_2518
call Func_1dca
jr .asm_24bb
Func_24ca: ; 24ca (0:24ca)
push bc
ld a, [$ff80]
push af
ld a, BANK(Unknown_76668)
call BankswitchHome
push de
ld a, e
ld de, $ccf4
call Func_24fa
pop de
ld a, d
ld de, $ccf5
call Func_24fa
ld hl, $ccf4
ld b, $8
.asm_24e8
ld a, [hli]
swap a
or [hl]
dec hl
ld [hli], a
ld [hli], a
dec b
jr nz, .asm_24e8
call Func_078e
pop bc
ld de, $ccf4
ret
Func_24fa: ; 24fa (0:24fa)
sub $20
ld l, a
ld h, $0
add hl, hl
add hl, hl
add hl, hl
ld bc, Unknown_76668
add hl, bc
ld b, $8
.asm_2508
ld a, [hli]
ld [de], a
inc de
inc de
dec b
jr nz, .asm_2508
ret
Func_2510: ; 2510 (0:2510)
push bc
call Func_256d
call Func_252e
pop bc
Func_2518: ; 2518 (0:2518)
ld hl, $cd07
ld a, b
xor [hl]
ld h, $0
ld l, a
add hl, hl
add hl, hl
add hl, hl
add hl, hl
ld a, [$cd06]
ld b, a
ld c, $0
add hl, bc
ld c, $10
ret
Func_252e: ; 252e (0:252e)
ld a, $1d
call Func_0745
ld de, $ccf4
push de
ld c, $8
.asm_2539
ld a, [hli]
ld [de], a
inc de
ld [de], a
inc de
dec c
jr nz, .asm_2539
pop de
call Func_078e
ret
Func_2546: ; 2546 (0:2546)
ld a, [$cd0a]
or a
jr nz, .asm_255f
ld a, e
cp $10
jr c, .asm_2561
cp $60
jr nc, .asm_2565
ld a, [$ffaf]
cp $f
jr nz, .asm_2565
ld d, $f
or a
ret
.asm_255f
or a
ret
.asm_2561
cp $5
jr c, .asm_2569
.asm_2565
ld d, $0
or a
ret
.asm_2569
ld e, d
ld d, a
scf
ret
Func_256d: ; 256d (0:256d)
ld bc, $0280
ld a, d
cp $e
jr z, .asm_2580
cp $f
jr nz, .asm_2582
ld bc, $0000
ld a, e
sub $10
ld e, a
.asm_2580
ld d, $0
.asm_2582
ld l, e
ld h, d
add hl, hl
add hl, hl
add hl, hl
add hl, bc
ret
; 0x2589
INCBIN "baserom.gbc",$2589,$26da - $2589
Func_26da: ; 26da (0:26da)
ld hl, $cd0f
ld a, [hl]
inc [hl]
and $f
ret nz
ld a, [$cd15]
bit 4, [hl]
jr z, asm_26ec
Func_26e9: ; 26e9 (0:26e9)
ld a, [$cd16]
asm_26ec
ld c, a
ld a, [$cd13]
ld l, a
ld a, [$cd10]
ld h, a
call Func_0879
ld a, l
ld hl, $cd11
ld d, [hl]
inc hl
add [hl]
ld e, a
call Func_1deb
ld a, c
ld c, e
ld b, d
call Func_06c3
or a
ret
; 0x270b
INCBIN "baserom.gbc",$270b,$2a1a - $270b
Func_2a1a: ; 2a1a (0:2a1a)
xor a
ld hl, $cd10
ld [hli], a
ld [hl], d
inc hl
ld [hl], e
inc hl
ld [hl], $0
inc hl
ld [hl], $1
inc hl
ld [hl], b
inc hl
ld [hl], c
ld [$cd0f], a
ret
; 0x2a30
INCBIN "baserom.gbc",$2a30,$2a3e - $2a30
Func_2a3e: ; 2a3e (0:2a3e)
push hl
call Func_2a6f
ld a, $b
ld de, $010e
call Func_1deb
call Func_22a6
pop hl
ld a, l
or h
jp nz, Func_2e76
ld hl, $c590
jp Func_21c5
Func_2a59: ; 2a59 (0:2a59)
push hl
call Func_2a9e
ld a, $13
ld de, $010e
call Func_1deb
call Func_22a6
call Func_0277
pop hl
jp Func_2e41
Func_2a6f: ; 2a6f (0:2a6f)
ld de, $000c
ld bc, $0c06
call Func_1deb
call Func_1e7c
ret
; 0x2a7c
INCBIN "baserom.gbc",$2a7c,$2a9e - $2a7c
Func_2a9e: ; 2a9e (0:2a9e)
ld de, $000c
ld bc, $1406
call Func_1deb
call Func_1e7c
ret
; 0x2aab
INCBIN "baserom.gbc",$2aab,$2af0 - $2aab
Func_2af0: ; 2af0 (0:2af0)
call Func_2a59
ld de, $0710
call Func_2b66
ld de, $0610
jr .asm_2b0a
call Func_2a3e
ld de, $0310
call Func_2b66
ld de, $0210
.asm_2b0a
ld a, d
ld [$cd98], a
ld bc, $0f00
call Func_2a1a
ld a, [$cd9a]
ld [$cd10], a
call Func_0277
jr .asm_2b39
.asm_2b1f
call Func_053f
call Func_26da
ld a, [$ff91]
bit 0, a
jr nz, .asm_2b50
ld a, [$ff8f]
and $30
jr z, .asm_2b1f
ld a, $1
call Func_3796
call Func_26e9
.asm_2b39
ld a, [$cd98]
ld c, a
ld hl, $cd10
ld a, [hl]
xor $1
ld [hl], a
add a
add a
add c
ld [$cd11], a
xor a
ld [$cd0f], a
jr .asm_2b1f
.asm_2b50
ld a, [$cd10]
ld [$ffb1], a
or a
jr nz, .asm_2b5c
ld [$cd9a], a
ret
.asm_2b5c
xor a
ld [$cd9a], a
ld a, $1
ld [$ffb1], a
scf
ret
Func_2b66: ; 2b66 (0:2b66)
call Func_1deb
ld hl, $002f
call Func_2c1b
ret
; 0x2b70
INCBIN "baserom.gbc",$2b70,$2c1b - $2b70
Func_2c1b: ; 2c1b (0:2c1b)
call Func_22ae
jr Func_2c29
Func_2c1f: ; 2c1f (0:2c1f)
call Func_22ae
ld a, [hli]
or [hl]
ret z
ld a, [hld]
ld l, [hl]
ld h, a
Func_2c29: ; 2c29 (0:2c29)
ld a, [$ff80]
push af
call ReadTextOffset
call Func_21c5
pop af
call BankswitchHome
ret
; 0x2c37
INCBIN "baserom.gbc",$2c37,$2cc8 - $2c37
Func_2cc8: ; 2cc8 (0:2cc8)
xor a
ld [$ce48], a
ld [$ce49], a
ld [$ce4a], a
ld a, $f
;ld [$ffaf], a
db $ea, $af, $ff
Func_2cd7: ; 2cd7 (0:2cd7)
push hl
call Func_2d06
pop bc
;ld a, [$ffaf]
db $fa, $af, $ff
ld [hli], a
ld a, [$cd0a]
ld [hli], a
ld a, [$ff80]
ld [hli], a
ld [hl], c
inc hl
ld [hl], b
ret
Func_2ceb: ; 2ceb (0:2ceb)
call Func_2cd7
ld hl, $ce48
inc [hl]
ret
Func_2cf3: ; 2cf3 (0:2cf3)
call Func_2d06
ld a, [hli]
;ld [$ffaf], a
db $ea, $af, $ff
ld a, [hli]
ld [$cd0a], a
ld a, [hli]
call BankswitchHome
ld a, [hli]
ld h, [hl]
ld l, a
ret
Func_2d06: ; 2d06 (0:2d06)
ld a, [$ce48]
ld e, a
add a
add a
add e
ld e, a
ld d, $0
ld hl, $ce2b
add hl, de
ret
; 0x2d15
INCBIN "baserom.gbc",$2d15,$2d43 - $2d15
Func_2d43: ; 2d43 (0:2d43)
call Func_2cf3
ld a, [hli]
or a
jr z, .asm_2d79
cp $5
jr c, .asm_2d65
cp $10
jr nc, .asm_2d65
call Func_21f2
jr nc, .asm_2d74
cp $9
jr z, .asm_2dc8
cp $b
jr z, .asm_2d8a
cp $c
jr z, .asm_2db3
jr .asm_2d74
.asm_2d65
ld e, a
ld d, [hl]
call Func_2546
jr nc, .asm_2d6d
inc hl
.asm_2d6d
call Func_22ca
xor a
call Func_21f2
.asm_2d74
call Func_2cd7
or a
ret
.asm_2d79
ld a, [$ce48]
or a
jr z, .asm_2d85
dec a
ld [$ce48], a
jr Func_2d43
.asm_2d85
call Func_230f
scf
ret
.asm_2d8a
call Func_2ceb
ld a, $f
;ld [$ffaf], a
db $ea, $af, $ff
xor a
ld [$cd0a], a
ld de, $ce3f
ld hl, $ce49
call Func_2de0
ld a, l
or h
jr z, .asm_2dab
call ReadTextOffset
call Func_2cd7
jr Func_2d43
.asm_2dab
ld hl, $c590
call Func_2cd7
jr Func_2d43
.asm_2db3
call Func_2ceb
ld de, $ce43
ld hl, $ce4a
call Func_2de0
call Func_2e12
call Func_2cd7
jp Func_2d43
.asm_2dc8
call Func_2ceb
call Func_2e2c
ld a, [$caa0]
cp $6
jr z, .asm_2dda
ld a, $7
call Func_21f2
.asm_2dda
call Func_2cd7
jp Func_2d43
Func_2de0: ; 2de0 (0:2de0)
push de
ld a, [hl]
inc [hl]
add a
ld e, a
ld d, $0
pop hl
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
ret
; uses the two byte text id in hl to read the three byte text offset
; loads the correct bank for the specific text and returns the pointer in hl
ReadTextOffset: ; 2ded (0:2ded)
push de
ld e, l
ld d, h
add hl, hl
add hl, de
set 6, h ; hl = (hl * 3) + $4000
ld a, BANK(TextOffsets)
call BankswitchHome
ld e, [hl]
inc hl
ld d, [hl]
inc hl
ld a, [hl]
ld h, d
rl h
rla
rl h
rla
add BANK(TextOffsets)
call BankswitchHome
res 7, d
set 6, d ; $4000 ≤ de ≤ $7fff
ld l, e
ld h, d
pop de
ret
Func_2e12: ; 2e12 (0:2e12)
ld a, [$cd0a]
or a
jp z, Func_245d
ld de, $caa0
push de
call Func_0663
pop hl
ld c, $4
.asm_2e23
ld a, [hl]
cp $30
ret nz
inc hl
dec c
jr nz, .asm_2e23
ret
Func_2e2c: ; 2e2c (0:2e2c)
ld de, $caa0
push de
ld a, [$ff97]
cp $c3
jp z, .asm_2e3c
call Func_1c7d
pop hl
ret
.asm_2e3c
call Func_1c8e
pop hl
ret
Func_2e41: ; 2e41 (0:2e41)
ld a, l
or h
jr z, .asm_2e53
ld a, [$ff80]
push af
call ReadTextOffset
call .asm_2e56
pop af
call BankswitchHome
ret
.asm_2e53
ld hl, $c590
.asm_2e56
call Func_2cc8
.asm_2e59
ld a, [$ff90]
ld b, a
ld a, [$ce47]
inc a
cp $3
jr nc, .asm_2e6d
bit 1, b
jr nz, .asm_2e70
jr .asm_2e6d
.asm_2e6a
call Func_053f
.asm_2e6d
dec a
jr nz, .asm_2e6a
.asm_2e70
call Func_2d43
jr nc, .asm_2e59
ret
Func_2e76: ; 2e76 (0:2e76)
ld a, [$ff80]
push af
call ReadTextOffset
call Func_2cc8
.asm_2e7f
call Func_2d43
jr nc, .asm_2e7f
pop af
call BankswitchHome
ret
Func_2e89: ; 2e89 (0:2e89)
ld a, l
or h
jr z, .asm_2e9f
ld a, [$ff80]
push af
call ReadTextOffset
.asm_2e93
ld a, [hli]
ld [de], a
inc de
or a
jr nz, .asm_2e93
pop af
call BankswitchHome
dec de
ret
.asm_2e9f
ld a, [$ff97]
cp $c3
jp z, Func_1c8e
jp Func_1c7d
; 0x2ea9
INCBIN "baserom.gbc",$2ea9,$302c - $2ea9
Func_302c: ; 302c (0:302c)
push hl
ld l, a
ld h, $0
ld a, [$ff80]
push af
ld a, BANK(Unknown_30000)
call BankswitchHome
add hl, hl
ld de, Unknown_30000
add hl, de
ld e, [hl]
inc hl
ld d, [hl]
ld a, d
or e
jr z, .asm_304e
call Func_1072
pop af
call BankswitchHome
pop hl
or a
ret
.asm_304e
pop af
call BankswitchHome
pop hl
scf
ret
; 0x3055
INCBIN "baserom.gbc",$3055,$3189 - $3055
Func_3189: ; 3189 (0:3189)
ld hl, PointerTable_3190
dec a
jp JumpToFunctionInTable
PointerTable_3190: ; 3190 (0:3190)
dw Func_31a8
dw Func_31a8
dw Func_31a8
dw Func_31a8
dw Func_31a8
dw Func_31b0
dw Func_31ca
dw Func_31dd
dw Func_31e5
dw Func_31ef
dw Func_31ea
dw Func_31f2
Func_31a8: ; 31a8 (0:31a8)
call Func_31fc
Func_31ab: ; 31ab (0:31ab)
ld hl, $ce63
inc [hl]
ret
Func_31b0: ; 31b0 (0:31b0)
call Func_31ab
ld hl, $ce68
ld a, [hli]
or [hl]
jr nz, .asm_31bf
call Func_31ab
jr Func_31dd
.asm_31bf
ld hl, $ce6a
ld de, $ce70
ld a, [hli]
ld [de], a
inc de
ld a, [hl]
ld [de], a
Func_31ca: ; 31ca (0:31ca)
call Func_31fc
ld hl, $ce68
ld a, [hl]
dec [hl]
or a
jr nz, .asm_31d8
inc hl
dec [hl]
dec hl
.asm_31d8
ld a, [hli]
or [hl]
jr z, Func_31ab
ret
Func_31dd: ; 31dd (0:31dd)
ld a, [$ce6c]
Func_31e0: ; 31e0 (0:31e0)
call Func_3212
jr Func_31ab
Func_31e5: ; 31e5 (0:31e5)
ld a, [$ce6d]
jr Func_31e0
Func_31ea: ; 31ea (0:31ea)
ld a, [$ff01]
ld [$ce6e], a
Func_31ef: ; 31ef (0:31ef)
xor a
jr Func_31e0
Func_31f2: ; 31f2 (0:31f2)
ld a, [$ff01]
ld [$ce6f], a
xor a
ld [$ce63], a
ret
Func_31fc: ; 31fc (0:31fc)
ld hl, $ce70
ld e, [hl]
inc hl
ld d, [hl]
ld a, [de]
inc de
ld [hl], d
dec hl
ld [hl], e
ld e, a
ld hl, $ce6c
add [hl]
ld [hli], a
ld a, $0
adc [hl]
ld [hl], a
ld a, e
Func_3212: ; 3212 (0:3212)
ld [$ff01], a
ld a, $1
ld [$ff02], a
ld a, $81
ld [$ff02], a
ret
; 0x321d
INCBIN "baserom.gbc",$321d,$377f - $321d
Func_377f: ; 377f (0:377f)
farcall Func_f4000
ret
Func_3784: ; 3784 (0:3784)
xor a
Func_3785: ; 3785 (0:3785)
farcall Func_f4006
ret
Func_378a: ; 378a (0:378a)
farcall Func_f400f
ret
Func_378f: ; 378f (0:378f)
farcall Func_f4012
ret
Func_3794: ; 3794 (0:3794)
ld a, $04
Func_3796: ; 3796 (0:3796)
farcall Func_f4009
ret
Func_379b: ; 379b (0:379b)
farcall Func_f401b
ret
Func_37a0: ; 37a0 (0:37a0)
farcall Func_f401e
ret
; 0x37a5
INCBIN "baserom.gbc",$37a5,$383d - $37a5
Func_383d: ; 383d (0:383d)
ld a, $1
ld [$cac4], a
ld a, [$ff80]
push af
.asm_3845
call Func_3855
jr nc, .asm_3850
farcall LoadMap
jr .asm_3845
.asm_3850
pop af
call BankswitchHome
ret
Func_3855: ; 3855 (0:3855)
ld a, [$d0b5]
cp $7
jr c, .asm_385e
ld a, $6
.asm_385e
ld hl, PointerTable_3864
jp JumpToFunctionInTable
PointerTable_3864: ; 3864 (0:3864)
dw Func_3874
dw Func_38c0
dw Func_38a3
dw Func_3876
dw Func_3911
dw Func_38fb
dw Func_38db
dw Func_3874
Func_3874: ; 3874 (0:3874)
INCBIN "baserom.gbc",$3874,$3876 - $3874
Func_3876: ; 3876 (0:3876)
INCBIN "baserom.gbc",$3876,$38a3 - $3876
Func_38a3: ; 38a3 (0:38a3)
INCBIN "baserom.gbc",$38a3,$38c0 - $38a3
Func_38c0: ; 38c0 (0:38c0)
INCBIN "baserom.gbc",$38c0,$38db - $38c0
Func_38db: ; 38db (0:38db)
INCBIN "baserom.gbc",$38db,$38fb - $38db
Func_38fb: ; 38fb (0:38fb)
INCBIN "baserom.gbc",$38fb,$3911 - $38fb
Func_3911: ; 3911 (0:3911)
INCBIN "baserom.gbc",$3911,$395a - $3911
Func_395a: ; 395a (0:395a)
ld a, [$ff80]
push af
ld a, [$d4c6]
call BankswitchHome
call Func_070c
pop af
call BankswitchHome
ret
; 0x396b
INCBIN "baserom.gbc",$396b,$397b - $396b
Unknown_397b: ; 397b (0:397b)
INCBIN "baserom.gbc",$397b,$39fc - $397b
Func_39fc: ; 39fc (0:39fc)
INCBIN "baserom.gbc",$39fc,$3a40 - $39fc
Func_3a40: ; 3a40 (0:3a40)
INCBIN "baserom.gbc",$3a40,$3abd - $3a40
Func_3abd: ; 3abd (0:3abd)
push bc
push hl
ld a, [wCurMap]
ld l, a
ld h, $0
add hl, hl
add hl, hl
add hl, hl
add hl, hl
ld bc, MapHeaders
add hl, bc
pop bc
ld b, $0
add hl, bc
ld a, [$ff80]
push af
ld a, BANK(MapHeaders)
call BankswitchHome
ld a, [hli]
ld h, [hl]
ld l, a
pop af
call BankswitchHome
ld a, l
or h
jr nz, .asm_3ae5
scf
.asm_3ae5
ccf
pop bc
ret
; 0x3ae8
INCBIN "baserom.gbc",$3ae8,$3aed - $3ae8
Func_3aed: ; 3aed (0:3aed)
ld hl, $d413
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [hli]
ld c, [hl]
inc hl
ld b, [hl]
push bc
rlca
ld c, a
ld b, $0
ld hl, Unknown_1217b
add hl, bc
ld a, [$ff80]
push af
ld a, BANK(Unknown_1217b)
call BankswitchHome
ld a, [hli]
ld h, [hl]
ld l, a
pop af
call BankswitchHome
pop bc
jp [hl]
; 0x3b11
INCBIN "baserom.gbc",$3b11,$3bf5 - $3b11
Func_3bf5: ; 3bf5 (0:3bf5)
ld a, [$ff80]
push af
push hl
ld a, [$d4c6]
call BankswitchHome
ld a, [$d4c4]
ld l, a
ld a, [$d4c5]
ld h, a
call CopyData_SaveRegisters
pop hl
pop af
call BankswitchHome
ret
; 0x3c10
INCBIN "baserom.gbc",$3c10,$3c48 - $3c10
Func_3c48: ; 3c48 (0:3c48)
INCBIN "baserom.gbc",$3c48,$3c5a - $3c48
Func_3c5a: ; 3c5a (0:3c5a)
ld hl, $0000
rl c
rl b
ld a, $10
.asm_3c63
ld [$ffb6], a
rl l
rl h
push hl
ld a, l
sub e
ld l, a
ld a, h
sbc d
ccf
jr nc, .asm_3c78
ld h, a
add sp, $2
scf
jr .asm_3c79
.asm_3c78
pop hl
.asm_3c79
rl c
rl b
ld a, [$ffb6]
dec a
jr nz, .asm_3c63
ret
; 0x3c83
INCBIN "baserom.gbc",$3c83,$3ca0 - $3c83
Func_3ca0: ; 3ca0 (0:3ca0)
INCBIN "baserom.gbc",$3ca0,$3d72 - $3ca0
Func_3d72: ; 3d72 (0:3d72)
ld a, [$ff80]
push af
push hl
push hl
ld a, [$d4ca]
cp $ff
jr nz, .asm_3d84
ld de, Unknown_80e5a
xor a
jr .asm_3da1
.asm_3d84
ld a, [$d4c4]
ld l, a
ld a, [$d4c5]
ld h, a
ld a, [$d4c6]
call BankswitchHome
ld a, [hli]
push af
ld a, [$d4ca]
rlca
ld e, [hl]
add e
ld e, a
inc hl
ld a, [hl]
adc $0
ld d, a
pop af
.asm_3da1
add BANK(Unknown_80e5a)
pop hl
ld bc, $000b
add hl, bc
ld [hli], a
call BankswitchHome
ld a, [de]
ld [hli], a
inc de
ld a, [de]
ld [hl], a
pop hl
pop af
call BankswitchHome
ret
Func_3db7: ; 3db7 (0:3db7)
push bc
ld c, $0
call Func_3dbf
pop bc
ret
Func_3dbf: ; 3dbf (0:3dbf)
ld a, [$d4cf]
cp $10
jr c, .asm_3dc9
rst $38
ld a, $f
.asm_3dc9
push bc
swap a
push af
and $f
ld b, a
pop af
and $f0
or c
ld c, a
ld hl, $d4d0
add hl, bc
pop bc
ret
; 0x3ddb
INCBIN "baserom.gbc",$3ddb,$3fe0 - $3ddb
; jumps to 3f:hl
Bankswitch3dTo3f: ; 3fe0 (0:3fe0)
push af
ld a, $3f
ld [$ff80], a
ld [$2000], a
pop af
ld bc, Bankswitch3d
push bc
jp [hl]
Bankswitch3d: ; 3fe0 (0:3fe0)
ld a, $3d
ld [$ff80], a
ld [$2000], a
ret
rept $a
db $ff
endr