summaryrefslogtreecommitdiff
path: root/engine/printer.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/printer.asm')
-rwxr-xr-xengine/printer.asm1342
1 files changed, 1342 insertions, 0 deletions
diff --git a/engine/printer.asm b/engine/printer.asm
new file mode 100755
index 00000000..7e6ae637
--- /dev/null
+++ b/engine/printer.asm
@@ -0,0 +1,1342 @@
+Func_e8783: ; e8783 (3a:4783)
+ ld a, 9
+Func_e8785:
+ push af
+ ld hl, wOverworldMap
+ lb bc, 4, 13
+ xor a
+ call Func_e8a2e
+ xor a
+ ld [rSB], a
+ ld [rSC], a
+ ld [wUnknownSerialFlag_d49b], a
+ ld hl, wUnknownSerialFlag_d49a
+ set 0, [hl]
+ ld a, [wd498]
+ ld [$cae3], a
+ pop af
+ ld [$caf4], a
+ ret
+
+; e87a8
+Func_e87a8: ; e87a8 (3a:47a8)
+ ld a, [wOverworldMap]
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_e87b7
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+Jumptable_e87b7:
+ dw Func_e87fd
+ dw Func_e88c9
+ dw Func_e88a6
+ dw Func_e881f
+ dw Func_e8906
+ dw Func_e88b4
+ dw Func_e884b
+ dw Func_e8906
+ dw Func_e88a6
+ dw Func_e8864
+ dw Func_e8906
+ dw Func_e88a6
+ dw Func_e8927
+ dw Func_e87e9
+ dw Func_e87f3
+ dw Func_e88a6
+ dw Func_e8889
+ dw Func_e87f7
+ dw Func_e8936
+ dw Func_e8939
+
+Func_e87df:
+ ld hl, wOverworldMap
+ inc [hl]
+ ret
+
+Func_e87e4:
+ ld hl, wOverworldMap
+ dec [hl]
+ ret
+
+Func_e87e9:
+ xor a
+ ld [$c971], a
+ ld hl, wOverworldMap
+ set 7, [hl]
+ ret
+
+Func_e87f3:
+ call Func_e87df
+ ret
+
+Func_e87f7:
+ ld a, $01
+ ld [wOverworldMap], a
+ ret
+
+Func_e87fd:
+ call Func_e8981
+ ld hl, Data_e8a3a
+ call Func_e8968
+ xor a
+ ld [$c976], a
+ ld [$c977], a
+ ld a, [$caf4]
+ ld [$c6e9], a
+ call Func_e87df
+ call Func_e8949
+ ld a, $01
+ ld [$cae0], a
+ ret
+
+Func_e881f:
+ call Func_e8981
+ ld hl, $c6e9
+ ld a, [hl]
+ and a
+ jr z, Func_e884b
+ ld hl, Data_e8a46
+ call Func_e8968
+ call Func_e89e6
+ ld a, $80
+ ld [$c976], a
+ ld a, $02
+ ld [$c977], a
+ call Func_e899f
+ call Func_e87df
+ call Func_e8949
+ ld a, $02
+ ld [$cae0], a
+ ret
+
+Func_e884b:
+ ld a, $06
+ ld [wOverworldMap], a
+ ld hl, Data_e8a4c
+ call Func_e8968
+ xor a
+ ld [$c976], a
+ ld [$c977], a
+ call Func_e87df
+ call Func_e8949
+ ret
+
+Func_e8864:
+ call Func_e8981
+ ld hl, Data_e8a40
+ call Func_e8968
+ call Func_e89cf
+ ld a, $04
+ ld [$c976], a
+ ld a, $00
+ ld [$c977], a
+ call Func_e899f
+ call Func_e87df
+ call Func_e8949
+ ld a, $03
+ ld [$cae0], a
+ ret
+
+Func_e8889:
+ call Func_e8981
+ ld hl, Data_e8a3a
+ call Func_e8968
+ xor a
+ ld [$c976], a
+ ld [$c977], a
+ ld a, [$caf4]
+ ld [$c6e9], a
+ call Func_e87df
+ call Func_e8949
+ ret
+
+Func_e88a6:
+ ld hl, $c973
+ inc [hl]
+ ld a, [hl]
+ cp a, $06
+ ret c
+ xor a
+ ld [hl], a
+ call Func_e87df
+ ret
+
+Func_e88b4:
+ ld hl, $c973
+ inc [hl]
+ ld a, [hl]
+ cp a, $06
+ ret c
+ xor a
+ ld [hl], a
+ ld hl, $c6e9
+ dec [hl]
+ call Func_e87e4
+ call Func_e87e4
+ ret
+
+Func_e88c9:
+ ld a, [wUnknownSerialFlag_d49b]
+ and a
+ ret nz
+ ld a, [$c970]
+ cp a, $ff
+ jr nz, .asm_e88dc
+ ld a, [$c971]
+ cp a, $ff
+ jr z, .asm_e88f8
+.asm_e88dc
+ ld a, [$c970]
+ cp a, $81
+ jr nz, .asm_e88f8
+ ld a, [$c971]
+ cp a, $00
+ jr nz, .asm_e88f8
+ ld hl, wUnknownSerialFlag_d49a
+ set 1, [hl]
+ ld a, $05
+ ld [$c972], a
+ call Func_e87df
+ ret
+
+.asm_e88f8
+ ld a, $ff
+ ld [$c970], a
+ ld [$c971], a
+ ld a, $0e
+ ld [wOverworldMap], a
+ ret
+
+Func_e8906:
+ ld a, [wUnknownSerialFlag_d49b]
+ and a
+ ret nz
+ ld a, [$c971]
+ and a, $f0
+ jr nz, .asm_e8921
+ ld a, [$c971]
+ and a, $01
+ jr nz, .asm_e891d
+ call Func_e87df
+ ret
+
+.asm_e891d
+ call Func_e87e4
+ ret
+
+.asm_e8921
+ ld a, $12
+ ld [wOverworldMap], a
+ ret
+
+Func_e8927:
+ ld a, [wUnknownSerialFlag_d49b]
+ and a
+ ret nz
+ ld a, [$c971]
+ and a, $f3
+ ret nz
+ call Func_e87df
+ ret
+
+Func_e8936:
+ call Func_e87df
+Func_e8939:
+ ld a, [wUnknownSerialFlag_d49b]
+ and a
+ ret nz
+ ld a, [$c971]
+ and a, $f0
+ ret nz
+ xor a
+ ld [wOverworldMap], a
+ ret
+
+Func_e8949:
+.asm_e8949
+ ld a, [wUnknownSerialFlag_d49b]
+ and a
+ jr nz, .asm_e8949
+ xor a
+ ld [$c974], a
+ ld [$c975], a
+ ld a, $01
+ ld [wUnknownSerialFlag_d49b], a
+ ld a, $88
+ ld [rSB], a
+ ld a, $01
+ ld [rSC], a
+ ld a, $81
+ ld [rSC], a
+ ret
+
+Func_e8968:
+ ld a, [hli]
+ ld [$c6ea], a
+ ld a, [hli]
+ ld [$c6eb], a
+ ld a, [hli]
+ ld [$c6ec], a
+ ld a, [hli]
+ ld [$c6ed], a
+ ld a, [hli]
+ ld [$c6ee], a
+ ld a, [hl]
+ ld [$c6ef], a
+ ret
+
+Func_e8981:
+ xor a
+ ld hl, $c6ea
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld hl, $c6ee
+ ld [hli], a
+ ld [hl], a
+ xor a
+ ld [$c976], a
+ ld [$c977], a
+ ld hl, $c6f0
+ ld bc, $0280
+ call Func_e8a2e
+ ret
+
+Func_e899f:
+ ld hl, $0000
+ ld bc, $0004
+ ld de, $c6ea
+ call Func_e89c2
+ ld a, [$c976]
+ ld c, a
+ ld a, [$c977]
+ ld b, a
+ ld de, $c6f0
+ call Func_e89c2
+ ld a, l
+ ld [$c6ee], a
+ ld a, h
+ ld [$c6ef], a
+ ret
+
+Func_e89c2:
+.asm_e89c2
+ ld a, [de]
+ inc de
+ add l
+ jr nc, .asm_e89c8
+ inc h
+.asm_e89c8
+ ld l, a
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_e89c2
+ ret
+
+Func_e89cf:
+ ld a, $01
+ ld [$c6f0], a
+ ld a, [$cae2]
+ ld [$c6f1], a
+ ld a, $e4
+ ld [$c6f2], a
+ ld a, [$cae3]
+ ld [$c6f3], a
+ ret
+
+Func_e89e6:
+ ld a, [$c6e9]
+ ld b, a
+ ld a, [$caf4]
+ sub b
+ ld hl, $c978
+ ld de, $0028
+.asm_e89f4
+ and a
+ jr z, .asm_e89fb
+ add hl, de
+ dec a
+ jr .asm_e89f4
+
+.asm_e89fb
+ ld e, l
+ ld d, h
+ ld hl, $c6f0
+ ld c, $28
+.asm_e8a02
+ ld a, [de]
+ inc de
+ push bc
+ push de
+ push hl
+ swap a
+ ld d, a
+ and a, $f0
+ ld e, a
+ ld a, d
+ and a, $0f
+ ld d, a
+ and a, $08
+ ld a, d
+ jr nz, .asm_e8a1a
+ or a, $90
+ jr .asm_e8a1c
+
+.asm_e8a1a
+ or a, $80
+.asm_e8a1c
+ ld d, a
+ ld bc, $3a01
+ call CopyVideoData
+ pop hl
+ ld de, $0010
+ add hl, de
+ pop de
+ pop bc
+ dec c
+ jr nz, .asm_e8a02
+ ret
+
+Func_e8a2e: ; e8a2e (3a:4a2e)
+ push de
+ ld e, a
+.asm_e8a30
+ ld [hl], e
+ inc hl
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_e8a30
+ ld a, e
+ pop de
+ ret
+
+Data_e8a3a:
+ db $01, $00, $00, $00, $01, $00
+Data_e8a40:
+ db $02, $00, $04, $00, $00, $00
+Data_e8a46:
+ db $04, $00, $80, $02, $00, $00
+Data_e8a4c:
+ db $04, $00, $00, $00, $04, $00
+Data_e8a52:
+ db $08, $00, $00, $00, $08, $00
+Data_e8a58:
+ db $0f, $00, $00, $00, $0f, $00
+
+Func_e8a5e: ; e8a5e (3a:4a5e)
+ ld a, [$d49a]
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_e8a6d
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+Jumptable_e8a6d:
+ dw Func_e8ab2
+ dw Func_e8ab3
+ dw Func_e8abc
+ dw Func_e8ac6
+ dw Func_e8ad0
+ dw Func_e8ada
+ dw Func_e8ae4
+ dw Func_e8b0f
+ dw Func_e8b19
+ dw Func_e8b23
+ dw Func_e8b2c
+ dw Func_e8b3a
+ dw Func_e8ab3
+ dw Func_e8b44
+ dw Func_e8b4d
+ dw Func_e8b4d
+ dw Func_e8b4d
+ dw Func_e8b44
+ dw Func_e8b4d
+ dw Func_e8b23
+ dw Func_e8b2c
+ dw Func_e8b6a
+ dw Func_e8ab3
+ dw Func_e8b56
+ dw Func_e8b4d
+ dw Func_e8b4d
+ dw Func_e8b4d
+ dw Func_e8b56
+ dw Func_e8b4d
+ dw Func_e8b23
+ dw Func_e8b2c
+ dw Func_e8b3a
+
+Func_e8aad:
+ ld hl, wUnknownSerialFlag_d49b
+ inc [hl]
+ ret
+
+Func_e8ab2:
+ ret
+
+Func_e8ab3:
+ ld a, $33
+ call Func_e8b5f
+ call Func_e8aad
+ ret
+
+Func_e8abc:
+ ld a, [$c6ea]
+ call Func_e8b5f
+ call Func_e8aad
+ ret
+
+Func_e8ac6:
+ ld a, [$c6eb]
+ call Func_e8b5f
+ call Func_e8aad
+ ret
+
+Func_e8ad0:
+ ld a, [$c6ec]
+ call Func_e8b5f
+ call Func_e8aad
+ ret
+
+Func_e8ada:
+ ld a, [$c6ed]
+ call Func_e8b5f
+ call Func_e8aad
+ ret
+
+Func_e8ae4:
+ ld hl, $c976
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, e
+ or d
+ jr z, .asm_e8b0c
+ dec de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ ld a, [$c974]
+ ld e, a
+ ld a, [$c975]
+ ld d, a
+ ld hl, $c6f0
+ add hl, de
+ inc de
+ ld a, e
+ ld [$c974], a
+ ld a, d
+ ld [$c975], a
+ ld a, [hl]
+ call Func_e8b5f
+ ret
+
+.asm_e8b0c
+ call Func_e8aad
+Func_e8b0f:
+ ld a, [$c6ee]
+ call Func_e8b5f
+ call Func_e8aad
+ ret
+
+Func_e8b19:
+ ld a, [$c6ef]
+ call Func_e8b5f
+ call Func_e8aad
+ ret
+
+Func_e8b23:
+ ld a, $00
+ call Func_e8b5f
+ call Func_e8aad
+ ret
+
+Func_e8b2c:
+ ld a, [rSB]
+ ld [$c970], a
+ ld a, $00
+ call Func_e8b5f
+ call Func_e8aad
+ ret
+
+Func_e8b3a:
+ ld a, [rSB]
+ ld [$c971], a
+ xor a
+ ld [wUnknownSerialFlag_d49b], a
+ ret
+
+Func_e8b44:
+ ld a, $0f
+ call Func_e8b5f
+ call Func_e8aad
+ ret
+
+Func_e8b4d:
+ ld a, $00
+ call Func_e8b5f
+ call Func_e8aad
+ ret
+
+Func_e8b56:
+ ld a, $08
+ call Func_e8b5f
+ call Func_e8aad
+ ret
+
+Func_e8b5f:
+ ld [rSB], a
+ ld a, $01
+ ld [rSC], a
+ ld a, $81
+ ld [rSC], a
+ ret
+
+Func_e8b6a:
+ ld a, [rSB]
+ ld [$c971], a
+ xor a
+ ld [wUnknownSerialFlag_d49b], a
+ ret
+
+Func_e8b74: ; e8b74 (3a:4b74)
+ ld a, [$cfca]
+ push af
+ xor a
+ ld [$cfca], a
+ ld [$ffdb], a
+ call Func_e8f24
+ ld a, [rIE]
+ push af
+ xor a
+ ld [rIF], a
+ ld a, $09
+ ld [rIE], a
+ xor a
+ ld [$ffba], a
+ call Func_e8c30
+ call Func_e8785
+ ld a, [$caf9]
+ and a
+ jr z, .asm_e8b9e
+ ld a, $10
+ jr .asm_e8ba0
+
+.asm_e8b9e
+ ld a, $13
+.asm_e8ba0
+ ld [$cae2], a
+ call Func_e8efc
+ call ClearScreen
+ callab Func_401c2
+ callab Func_4027c
+ ld a, $01
+ ld [$ffba], a
+ call Func_e8c0c
+ jr c, .asm_e8bf4
+ ld a, [$caf9]
+ and a
+ jr z, .asm_e8bf4
+ xor a
+ ld [wUnknownSerialFlag_d49a], a
+ ld [wUnknownSerialFlag_d49b], a
+ ld c, $0c
+ call DelayFrames
+ call SaveScreenTilesToBuffer1
+ xor a
+ ld [$ffba], a
+ call Func_e8c50
+ ld a, $07
+ call Func_e8785
+ ld a, $03
+ ld [$cae2], a
+ call Func_e8efc
+ call LoadScreenTilesFromBuffer1
+ ld a, $01
+ ld [$ffba], a
+ call Func_e8c0c
+.asm_e8bf4
+ xor a
+ ld [wUnknownSerialFlag_d49a], a
+ ld [wUnknownSerialFlag_d49b], a
+ xor a
+ ld [rIF], a
+ pop af
+ ld [rIE], a
+ call Func_0f3d
+ call Func_e8f3b
+ pop af
+ ld [$cfca], a
+ ret
+
+Func_e8c0c:
+ call Func_e8f16
+.asm_e8c0f
+ call JoypadLowSensitivity
+ call Func_e8eca
+ jr c, .asm_e8c2e
+ ld a, [$c6e8]
+ bit 7, a
+ jr nz, .asm_e8c2c
+ call Func_e87a8
+ call Func_e8f51
+ call Func_e8f82
+ call DelayFrame
+ jr .asm_e8c0f
+
+.asm_e8c2c
+ and a
+ ret
+
+.asm_e8c2e
+ scf
+ ret
+
+Func_e8c30:
+ callab Func_4039c
+ ld a, l
+ ld [$caf5], a
+ ld a, h
+ ld [$caf6], a
+ ld a, $00
+ rla
+ ld [$caf9], a
+ and a
+ jr z, .asm_e8c4d
+ ld a, $05
+ jr .asm_e8c4f
+
+.asm_e8c4d
+ ld a, $09
+.asm_e8c4f
+ ret
+
+Func_e8c50:
+ call ClearScreen
+ callab Func_404bc
+ ret
+
+Func_e8c5c:
+ xor a
+ ld [$ffdb], a
+ call Func_e8f24
+ call Func_e910a
+ ld a, [rIE]
+ push af
+ xor a
+ ld [rIF], a
+ ld a, $09
+ ld [rIE], a
+ call Func_e8783
+ ld a, $13
+ ld [$cae2], a
+ call Func_e8efc
+ call Func_e8f16
+.asm_e8c7d
+ call JoypadLowSensitivity
+ call Func_e8eca
+ jr c, .asm_e8c9a
+ ld a, [$c6e8]
+ bit 7, a
+ jr nz, .asm_e8c9a
+ call Func_e87a8
+ call Func_e8f51
+ call Func_e8f82
+ call DelayFrame
+ jr .asm_e8c7d
+
+.asm_e8c9a
+ xor a
+ ld [wUnknownSerialFlag_d49a], a
+ ld [wUnknownSerialFlag_d49b], a
+ call Func_e8f09
+ xor a
+ ld [rIF], a
+ pop af
+ ld [rIE], a
+ call Func_0f3d
+ call Func_e8f3b
+ ret
+
+Func_e8cb1:
+ xor a
+ ld [$ffdb], a
+ call Func_e8f24
+ call _DisplayDiploma
+ ld a, [rIE]
+ push af
+ xor a
+ ld [rIF], a
+ ld a, $09
+ ld [rIE], a
+ call Func_e8783
+ ld a, $10
+ ld [$cae2], a
+ call Func_e8efc
+ call Func_e8d11
+ jr c, .asm_e8cfa
+ xor a
+ ld [wUnknownSerialFlag_d49a], a
+ ld [wUnknownSerialFlag_d49b], a
+ ld c, $0c
+ call DelayFrames
+ call SaveScreenTilesToBuffer1
+ xor a
+ ld [$ffba], a
+ call Func_e9ad3
+ call Func_e8783
+ ld a, $03
+ ld [$cae2], a
+ call Func_e8efc
+ call LoadScreenTilesFromBuffer1
+ call Func_e8d11
+.asm_e8cfa
+ xor a
+ ld [wUnknownSerialFlag_d49a], a
+ ld [wUnknownSerialFlag_d49b], a
+ call Func_e8f09
+ xor a
+ ld [rIF], a
+ pop af
+ ld [rIE], a
+ call Func_0f3d
+ call Func_e8f3b
+ ret
+
+Func_e8d11:
+ call Func_e8f16
+.asm_e8d14
+ call JoypadLowSensitivity
+ call Func_e8eca
+ jr c, .asm_e8d33
+ ld a, [$c6e8]
+ bit 7, a
+ jr nz, .asm_e8d31
+ call Func_e87a8
+ call Func_e8f51
+ call Func_e8f82
+ call DelayFrame
+ jr .asm_e8d14
+
+.asm_e8d31
+ and a
+ ret
+
+.asm_e8d33
+ scf
+ ret
+
+
+
+Func_e8d35:: ; e8d35 (3a:4e79)
+ ld a, [wBoxDataStart]
+ and a
+ jp z, Func_e8df4
+ ld a, [wUpdateSpritesEnabled]
+ push af
+ xor a
+ ld [wUpdateSpritesEnabled], a
+ ld [hItemCounter], a
+ call Func_e8f24
+ ld a, [rIE]
+ push af
+ xor a
+ ld [rIF], a
+ ld a, $09
+ ld [rIE], a
+ call SaveScreenTilesToBuffer1
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call Func_e988a
+ call Func_e8783
+ ld a, $10
+ ld [$cae2], a
+ call Func_e8efc
+ call LoadScreenTilesFromBuffer1
+ call Func_e8dfb
+ jr c, .asm_e8ddc
+ xor a
+ ld [wUnknownSerialFlag_d49a], a
+ ld [wUnknownSerialFlag_d49b], a
+ ld c, 12
+ call DelayFrames
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call Func_e98ec
+ call Func_e8783
+ ld a, $00
+ ld [$cae2], a
+ call Func_e8efc
+ call LoadScreenTilesFromBuffer1
+ call Func_e8dfb
+ jr c, .asm_e8ddc
+ xor a
+ ld [wUnknownSerialFlag_d49a], a
+ ld [wUnknownSerialFlag_d49b], a
+ ld c, 12
+ call DelayFrames
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call Func_e9907
+ call Func_e8783
+ ld a, $00
+ ld [$cae2], a
+ call Func_e8efc
+ call LoadScreenTilesFromBuffer1
+ call Func_e8dfb
+ jr c, .asm_e8ddc
+ xor a
+ ld [wUnknownSerialFlag_d49a], a
+ ld [wUnknownSerialFlag_d49b], a
+ ld c, 12
+ call DelayFrames
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call Func_e9922
+ call Func_e8783
+ ld a, $03
+ ld [$cae2], a
+ call Func_e8efc
+ call LoadScreenTilesFromBuffer1
+ call Func_e8dfb
+.asm_e8ddc
+ xor a
+ ld [wUnknownSerialFlag_d49a], a
+ ld [wUnknownSerialFlag_d49b], a
+ xor a
+ ld [rIF], a
+ pop af
+ ld [rIE], a
+ call Func_0f3d
+ call Func_e8f3b
+ pop af
+ ld [wUpdateSpritesEnabled], a
+ ret
+
+Func_e8df4: ; e8df4
+ ld hl, String_e8e1f
+ call PrintText
+ ret
+
+Func_e8dfb: ; e8dfb
+ call Func_e8f16
+.asm_e8dfe
+ call JoypadLowSensitivity
+ call Func_e8eca
+ jr c, .asm_e8e1d
+ ld a, [wOverworldMap]
+ bit 7, a
+ jr nz, .asm_e8e1b
+ call Func_e87a8
+ call Func_e8f51
+ call Func_e8f82
+ call DelayFrame
+ jr .asm_e8dfe
+
+.asm_e8e1b
+ and a
+ ret
+
+.asm_e8e1d
+ scf
+ ret
+
+String_e8e1f: ; e8e1f
+ TX_FAR _NoPokemonText
+ db "@"
+
+Func_e8e24: ; e8e24
+ xor a
+ ld [hItemCounter], a
+ call Func_e8f24
+ call Func_ea3ea
+ ld a, [rIE]
+ push af
+ xor a
+ ld [rIF], a
+ ld a, $09
+ ld [rIE], a
+ call Func_e8783
+ ld a, $13
+ ld [$cae2], a
+ call Func_e8efc
+ call Func_e8f16
+.asm_e8e45
+ call JoypadLowSensitivity
+ call Func_e8eca
+ jr c, .asm_e8e62
+ ld a, [wOverworldMap]
+ bit 7, a
+ jr nz, .asm_e8e62
+ call Func_e87a8
+ call Func_e8f51
+ call Func_e8f82
+ call DelayFrame
+ jr .asm_e8e45
+
+.asm_e8e62
+ xor a
+ ld [wUnknownSerialFlag_d49a], a
+ ld [wUnknownSerialFlag_d49b], a
+ call Func_e8f09
+ xor a
+ ld [rIF], a
+ pop af
+ ld [rIE], a
+ call Func_0f3d
+ call Func_e8f3b
+ ret
+
+Func_e8e79: ; e8e79 (3a:4e79)
+ push af
+ push bc
+ push de
+ push hl
+ call StopAllMusic
+ ld a, [rIE]
+ push af
+ xor a
+ ld [rIF], a
+ ld a, $09
+ ld [rIE], a
+ call Func_e8783
+ ld a, $13
+ ld [$cae2], a
+ ld a, $1
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call Func_e8efc
+ call Func_ea573
+.asm_e8e9c
+ ld a, [wOverworldMap]
+ bit 7, a
+ jr nz, .asm_e8eae
+ call Func_ea5d1
+ call Func_ea5b7
+ call DelayFrame
+ jr .asm_e8e9c
+
+.asm_e8eae
+ xor a
+ ld [wUnknownSerialFlag_d49a], a
+ ld [wUnknownSerialFlag_d49b], a
+ ld hl, wOAMBuffer + 32 * 4
+ ld bc, $0020
+ xor a
+ call FillMemory
+ xor a
+ ld [rIF], a
+ pop af
+ ld [rIE], a
+ pop hl
+ pop de
+ pop bc
+ pop af
+ ret
+
+Func_e8eca: ; e8eca (3a:4eca)
+ ld a, [hJoyHeld]
+ and B_BUTTON
+ jr nz, .asm_e8ed2
+ and a
+ ret
+
+.asm_e8ed2
+ ld a, [wOverworldMap]
+ cp $0c
+ jr nz, .asm_e8ef6
+.asm_e8ed9
+ ld a, [wUnknownSerialFlag_d49b]
+ and a
+ jr nz, .asm_e8ed9
+ ld a, $16
+ ld [wUnknownSerialFlag_d49b], a
+ ld a, $88
+ ld [rSB], a
+ ld a, $01
+ ld [rSC], a
+ ld a, $81
+ ld [rSC], a
+.asm_e8ef0
+ ld a, [wUnknownSerialFlag_d49b]
+ and a
+ jr nz, .asm_e8ef0
+.asm_e8ef6
+ ld a, $01
+ ld [hItemCounter], a
+ scf
+ ret
+
+Func_e8efc: ; e8efc (3a:4efc)
+ dr $e8efc,$e8f09
+Func_e8f09: ; e8f09 (3a:4f09)
+ dr $e8f09,$e8f16
+Func_e8f16: ; e8f16 (3a:4f16)
+ dr $e8f16,$e8f24
+Func_e8f24: ; e8f24 (3a:4f24)
+ dr $e8f24,$e8f3b
+Func_e8f3b: ; e8f3b (3a:4f3b)
+ dr $e8f3b,$e8f51
+Func_e8f51: ; e8f51 (3a:4f51)
+ dr $e8f51,$e8f82
+Func_e8f82: ; e8f82 (3a:4f82)
+ dr $e8f82,$e910a
+Func_e910a:
+ dr $e910a,$e925d
+
+Func_e925d:
+.asm_e925d
+ push bc
+ push hl
+.asm_e925f
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec c
+ jr nz, .asm_e925f
+ pop hl
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .asm_e925d
+ ret
+
+Func_e926f:
+ ld de, wd496
+ coord hl, 7, 6
+ ld a, [de]
+ call Func_e927a
+ ld a, [de]
+Func_e927a:
+ ld c, a
+ swap a
+ and $f
+ add -10
+ ld [hli], a
+ ld a, c
+ and $f
+ add -10
+ ld [hli], a
+ dec de
+ ret
+
+SurfingPikachu2Graphics: INCBIN "gfx/surfing_pikachu_2.2bpp"
+
+Func_e988a:
+ xor a
+ ld [wBoxNumString], a
+ call ClearScreen
+ call Func_e99de
+ coord hl, 0, 0
+ ld bc, 11 * SCREEN_WIDTH
+ ld a, " "
+ call FillMemory
+ call Func_e99b9
+ call Func_e99a7
+ coord hl, 4, 4
+ ld de, String_e98db
+ call PlaceString
+ coord hl, 7, 6
+ ld de, String_e98e8
+ call PlaceString
+ coord hl, 11, 6
+ ld a, [wCurrentBoxNum]
+ and $7f
+ cp 9
+ jr c, .asm_e98cc
+ sub 9
+ ld [hl], "1"
+ inc hl
+ add "0"
+ jr .asm_e98ce
+
+.asm_e98cc
+ add "1"
+.asm_e98ce
+ ld [hl], a
+ coord hl, 4, 9
+ ld de, wBoxSpecies
+ ld c, $03
+ call Func_e994e
+ ret
+
+
+String_e98db: db "POKéMON LIST@"
+String_e98e8: db "BOX@"
+
+Func_e98ec:
+ call ClearScreen
+ call Func_e99de
+ call Func_e99b9
+ ld a, [wBoxDataStart]
+ cp 4
+ ret c
+ coord hl, 4, 0
+ ld de, wBoxSpecies + 3
+ ld c, 6
+ call Func_e994e
+ ret
+
+Func_e9907:
+ call ClearScreen
+ call Func_e99de
+ call Func_e99b9
+ ld a, [wBoxDataStart]
+ cp 10
+ ret c
+ coord hl, 4, 0
+ ld de, wBoxSpecies + 9
+ ld c, 6
+ call Func_e994e
+ ret
+
+Func_e9922:
+ call ClearScreen
+ call Func_e99de
+ call Func_e99b9
+ coord hl, 0, 15
+ call Func_e99cf
+ coord hl, 0, 16
+ ld bc, 2 * SCREEN_WIDTH
+ ld a, " "
+ call FillMemory
+ ld a, [wBoxDataStart]
+ cp 16
+ ret c
+ coord hl, 4, 0
+ ld de, wBoxSpecies + 15
+ ld c, 5
+ call Func_e994e
+ ret
+
+Func_e994e:
+.asm_e994e
+ ld a, c
+ and a
+ jr z, .asm_e99a6
+ dec c
+ ld a, [de]
+ cp $ff
+ jr z, .asm_e99a6
+ ld [$d11d], a
+ push bc
+ push hl
+ push de
+ push hl
+ ld bc, 12
+ ld a, " "
+ call FillMemory
+ pop hl
+ push hl
+ ld de, SCREEN_WIDTH
+ add hl, de
+ ld bc, 12
+ ld a, " "
+ call FillMemory
+ pop hl
+ push hl
+ call GetMonName
+ pop hl
+ call PlaceString
+ push hl
+ ld hl, wBoxMonNicks
+ ld bc, NAME_LENGTH
+ ld a, [wBoxNumString]
+ call AddNTimes
+ ld e, l
+ ld d, h
+ pop hl
+ ld bc, SCREEN_WIDTH + 1
+ add hl, bc
+ ld [hl], " "
+ inc hl
+ call PlaceString
+ ld hl, wBoxNumString
+ inc [hl]
+ pop de
+ pop hl
+ ld bc, 3 * SCREEN_WIDTH
+ add hl, bc
+ pop bc
+ inc de
+ jr .asm_e994e
+
+.asm_e99a6
+ ret
+
+Func_e99a7:
+ coord hl, 0, 0
+ ld a, $79
+ ld [hli], a
+ ld a, $7a
+ ld c, SCREEN_WIDTH - 2
+.asm_e99b1
+ ld [hli], a
+ dec c
+ jr nz, .asm_e99b1
+ ld a, $7b
+ ld [hl], a
+ ret
+
+Func_e99b9:
+ coord hl, 0, 0
+ ld de, SCREEN_WIDTH - 1
+ ld c, SCREEN_HEIGHT
+.asm_e99c1
+ ld a, $7c
+ ld [hl], a
+ add hl, de
+ ld a, $7c
+ ld [hli], a
+ dec c
+ jr nz, .asm_e99c1
+ ret
+
+Func_e99cc:
+ coord hl, 0, 17
+Func_e99cf:
+ ld a, $7d
+ ld [hli], a
+ ld a, $7a
+ ld c, SCREEN_WIDTH - 2
+.asm_e99b1
+ ld [hli], a
+ dec c
+ jr nz, .asm_e99b1
+ ld a, $7e
+ ld [hl], a
+ ret
+
+Func_e99de:
+ coord hl, 4, 0
+ ld c, 6
+ call Func_e99eb
+ coord hl, 6, 1
+ ld c, 6
+Func_e99eb:
+.asm_e99eb
+ push bc
+ push hl
+ ld de, String_e99fd
+ call PlaceString
+ pop hl
+ ld bc, 3 * SCREEN_WIDTH
+ add hl, bc
+ pop bc
+ dec c
+ jr nz, .asm_e99eb
+ ret
+
+String_e99fd:
+ db "----------@"