summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rwxr-xr-xengine/clear_save.asm8
-rwxr-xr-xengine/diploma_3a.asm167
-rwxr-xr-xengine/overworld/card_key.asm2
-rwxr-xr-xengine/overworld/doors.asm55
-rwxr-xr-xengine/overworld/ledges.asm26
-rwxr-xr-xengine/overworld/npc_movement.asm88
-rwxr-xr-xengine/overworld/pewter_guys.asm8
-rwxr-xr-xengine/predefs.asm199
-rwxr-xr-xengine/predefs7.asm10
-rwxr-xr-xengine/printer.asm1342
-rwxr-xr-xengine/unknown_ea3ea.asm972
11 files changed, 2670 insertions, 207 deletions
diff --git a/engine/clear_save.asm b/engine/clear_save.asm
index adbef1a4..37d098e6 100755
--- a/engine/clear_save.asm
+++ b/engine/clear_save.asm
@@ -1,10 +1,12 @@
-DoClearSaveDialogue: ; 1c98a (7:498a)
+DoClearSaveDialogue: ; DoClearSaveDialogue: ; 1c21e (7:421e)
call ClearScreen
call RunDefaultPaletteCommand
call LoadFontTilePatterns
call LoadTextBoxTilePatterns
ld hl, ClearSaveDataText
call PrintText
+ ld a, B_BUTTON
+ ld [wJoyIgnore], a
coord hl, 14, 7
lb bc, 8, 15
ld a, NO_YES_MENU
@@ -12,12 +14,14 @@ DoClearSaveDialogue: ; 1c98a (7:498a)
ld a, TWO_OPTION_MENU
ld [wTextBoxID], a
call DisplayTextBoxID
+ ld a, 0
+ ld [wJoyIgnore], a
ld a, [wCurrentMenuItem]
and a
jp z, Init
callba ClearSAV
jp Init
-ClearSaveDataText: ; 1c9c1 (7:49c1)
+ClearSaveDataText: ; 1c25f (7:425f)
TX_FAR _ClearSaveDataText
db "@"
diff --git a/engine/diploma_3a.asm b/engine/diploma_3a.asm
new file mode 100755
index 00000000..c8a7e740
--- /dev/null
+++ b/engine/diploma_3a.asm
@@ -0,0 +1,167 @@
+_DisplayDiploma: ; e9a08 (3a:5a08)
+ call GBPalWhiteOutWithDelay3
+ call ClearScreen
+ ld de, SurfingPikachu3Graphics
+ ld hl, vChars2
+ lb bc, BANK(SurfingPikachu3Graphics), (SurfingPikachu3GraphicsEnd - SurfingPikachu3Graphics) / $10
+ call CopyVideoData
+
+ coord hl, 0, 0
+ call Func_e9bdf
+
+ coord hl, 0, 0
+ call Func_e9beb
+
+ coord hl, 19, 0
+ call Func_e9beb
+
+ ld a, $00
+ coord hl, 0, 0
+ ld [hl], a
+ coord hl, 19, 0
+ ld [hl], a
+
+ ld de, String_e9a73
+ coord hl, 5, 2
+ call PlaceString
+
+ ld de, String_e9a7d
+ coord hl, 3, 4
+ call PlaceString
+
+ ld de, wPlayerName
+ coord hl, 10, 4
+ call PlaceString
+
+ ld de, String_e9a84
+ coord hl, 2, 6
+ call PlaceString
+
+ ld de, String_e9ac8
+ coord hl, 9, 16
+ call PlaceString
+
+ ld b, SET_PAL_GENERIC
+ call RunPaletteCommand
+ ld a, $01
+ ld [$ffba], a
+ call Delay3
+ call GBPalNormal
+ ret
+
+; e9a73
+String_e9a73:
+ db $10, "Diploma", $10, "@"
+
+String_e9a7d:
+ db "Player@"
+
+String_e9a84:
+ db "Congrats! This"
+ next "diploma certifies"
+ next "that you have"
+ next "completed your"
+ next "#DEX.@"
+
+String_e9ac8:
+ db "GAME FREAK@"
+
+Func_e9ad3:
+ call ClearScreen
+ coord hl, 0, 17
+ call Func_e9bdf
+ coord hl, 0, 0
+ call Func_e9beb
+ coord hl, 19, 0
+ call Func_e9beb
+ ld a, $00
+ coord hl, 0, 17
+ ld [hl], a
+ coord hl, 19, 17
+ ld [hl], a
+ ld de, Tilemap_e9b3e
+ coord hl, 6, 2
+ lb bc, 10, 12
+ call Func_e925d
+ ld de, Tilemap_e9bb6
+ coord hl, 5, 13
+ lb bc, 1, 11
+ call Func_e925d
+ ld de, String_e9bd5
+ coord hl, 2, 15
+ call PlaceString
+ coord hl, 12, 15
+ ld de, wPlayTimeHours + 1
+ lb bc, $40 | 1, 3
+ call PrintNumber
+ ld [hl], $16
+ inc hl
+ ld de, wPlayTimeMinutes + 1
+ lb bc, $80 | 1, 2
+ call PrintNumber
+ ld a, [wNumSetBits]
+ cp 151
+ ret nz
+ ld de, TileMap_e9bc1
+ coord hl, 2, 0
+ lb bc, 4, 5
+ call Func_e925d
+ ret
+
+Tilemap_e9b3e:
+ db $7f, $7f, $7f, $1a, $1b, $7f, $7f, $7f, $7f, $7f
+ db $7f, $7f, $7f, $7f, $7f, $1c, $1d, $1e, $1f, $20
+ db $7f, $21, $22, $23, $7f, $24, $25, $26, $27, $28
+ db $29, $2a, $2b, $2c, $2d, $2e, $2f, $30, $31, $32
+ db $33, $34, $35, $36, $37, $38, $39, $3a, $3b, $3c
+ db $7f, $3d, $3e, $3f, $40, $41, $42, $43, $29, $44
+ db $45, $46, $47, $48, $49, $4a, $4b, $29, $29, $4c
+ db $4d, $4e, $4f, $50, $51, $52, $53, $54, $55, $56
+ db $57, $58, $59, $7f, $7f, $7f, $5a, $5b, $5c, $5d
+ db $5e, $5f, $60, $61, $62, $7f, $7f, $7f, $7f, $63
+ db $64, $65, $66, $67, $68, $7f, $7f, $7f, $7f, $7f
+ db $7f, $69, $6a, $6b, $6c, $6d, $6e, $7f, $7f, $7f
+
+Tilemap_e9bb6:
+ db $05
+ db $06
+ db $07
+ db $08
+ db $09
+ db $0a
+ db $0b
+ db $0c
+ db $0d
+ db $0e
+ db $0f
+
+TileMap_e9bc1:
+ db $70, $71, $7f, $72, $7f
+ db $73, $74, $75, $76, $77
+ db $7f, $78, $11, $12, $13
+ db $7f, $7f, $14, $15, $7f
+
+String_e9bd5: db "PLAY TIME@"
+
+Func_e9bdf:
+ ld c, 10
+.asm_e9be1
+ ld [hl], $02
+ inc hl
+ ld [hl], $01
+ inc hl
+ dec c
+ jr nz, .asm_e9be1
+ ret
+
+Func_e9beb:
+ ld c, 9
+ ld de, SCREEN_WIDTH
+.asm_e9bed
+ ld [hl], $04
+ add hl, de
+ ld [hl], $03
+ add hl, de
+ dec c
+ jr nz, .asm_e9bed
+ ret
diff --git a/engine/overworld/card_key.asm b/engine/overworld/card_key.asm
index f601a951..48b2380d 100755
--- a/engine/overworld/card_key.asm
+++ b/engine/overworld/card_key.asm
@@ -74,7 +74,7 @@ SilphCoMapList: ; 52645 (14:6645)
CardKeySuccessText: ; 52650 (14:6650)
TX_FAR _CardKeySuccessText1
- db $0b
+ TX_SFX_ITEM
TX_FAR _CardKeySuccessText2
db "@"
diff --git a/engine/overworld/doors.asm b/engine/overworld/doors.asm
index 6b0c0464..8ec9772a 100755
--- a/engine/overworld/doors.asm
+++ b/engine/overworld/doors.asm
@@ -25,33 +25,21 @@ IsPlayerStandingOnDoorTile: ; 1a609 (6:6609)
and a
ret
-DoorTileIDPointers: ; 1a62c (6:662c)
- db OVERWORLD
- dw OverworldDoorTileIDs
- db FOREST
- dw ForestDoorTileIDs
- db MART
- dw MartDoorTileIDs
- db HOUSE
- dw HouseDoorTileIDs
- db FOREST_GATE
- dw TilesetMuseumDoorTileIDs
- db MUSEUM
- dw TilesetMuseumDoorTileIDs
- db GATE
- dw TilesetMuseumDoorTileIDs
- db SHIP
- dw ShipDoorTileIDs
- db LOBBY
- dw LobbyDoorTileIDs
- db MANSION
- dw MansionDoorTileIDs
- db LAB
- dw LabDoorTileIDs
- db FACILITY
- dw FacilityDoorTileIDs
- db PLATEAU
- dw PlateauDoorTileIDs
+DoorTileIDPointers: ; 1a7a8 (6:67a8)
+ dbw OVERWORLD, OverworldDoorTileIDs
+ dbw FOREST, ForestDoorTileIDs
+ dbw MART, MartDoorTileIDs
+ dbw HOUSE, HouseDoorTileIDs
+ dbw FOREST_GATE, TilesetMuseumDoorTileIDs
+ dbw MUSEUM, TilesetMuseumDoorTileIDs
+ dbw GATE, TilesetMuseumDoorTileIDs
+ dbw SHIP, ShipDoorTileIDs
+ dbw LOBBY, LobbyDoorTileIDs
+ dbw MANSION, MansionDoorTileIDs
+ dbw LAB, LabDoorTileIDs
+ dbw FACILITY, FacilityDoorTileIDs
+ dbw PLATEAU, PlateauDoorTileIDs
+ dbw INTERIOR, InteriorDoorTileIDs
db $ff
OverworldDoorTileIDs: ; 1a654 (6:6654)
@@ -72,17 +60,20 @@ TilesetMuseumDoorTileIDs: ; 1a65d (6:665d)
ShipDoorTileIDs: ; 1a65f (6:665f)
db $1e,$00
-LobbyDoorTileIDs: ; 1a661 (6:6661)
+LobbyDoorTileIDs: ; 1a7e0 (6:67e0)
db $1c,$38,$1a,$00
-MansionDoorTileIDs: ; 1a665 (6:6665)
+MansionDoorTileIDs: ; 1a7e4 (6:67e4)
db $1a,$1c,$53,$00
-LabDoorTileIDs: ; 1a669 (6:6669)
+LabDoorTileIDs: ; 1a7e8 (6:67e8)
db $34,$00
-FacilityDoorTileIDs: ; 1a66b (6:666b)
+FacilityDoorTileIDs: ; 1a7ea (6:67ea)
db $43,$58,$1b,$00
-PlateauDoorTileIDs: ; 1a66f (6:666f)
+PlateauDoorTileIDs: ; 1a7ee (6:67ee)
db $3b,$1b,$00
+
+InteriorDoorTileIDs: ; 1a7f1 (6:67f1)
+ db $04,$15,$00
diff --git a/engine/overworld/ledges.asm b/engine/overworld/ledges.asm
index b04f6332..a6ebd9be 100755
--- a/engine/overworld/ledges.asm
+++ b/engine/overworld/ledges.asm
@@ -1,4 +1,4 @@
-HandleLedges: ; 1a672 (6:6672)
+HandleLedges: ; 1a7f4 (6:67f4)
ld a, [wd736]
bit 6, a ; already jumping down ledge
ret nz
@@ -55,7 +55,7 @@ HandleLedges: ; 1a672 (6:6672)
ret
; (player direction) (tile player standing on) (ledge tile) (input required)
-LedgeTiles: ; 1a6cf (6:66cf)
+LedgeTiles: ; 1a851 (6:6851)
db SPRITE_FACING_DOWN, $2C,$37,D_DOWN
db SPRITE_FACING_DOWN, $39,$36,D_DOWN
db SPRITE_FACING_DOWN, $39,$37,D_DOWN
@@ -66,21 +66,25 @@ LedgeTiles: ; 1a6cf (6:66cf)
db SPRITE_FACING_RIGHT,$39,$0D,D_RIGHT
db $FF
-LoadHoppingShadowOAM: ; 1a6f0 (6:66f0)
+LoadHoppingShadowOAM: ; 1a872 (6:6872)
ld hl, vChars1 + $7f0
ld de, LedgeHoppingShadow
lb bc, BANK(LedgeHoppingShadow), (LedgeHoppingShadowEnd - LedgeHoppingShadow) / $8
call CopyVideoDataDouble
- ld a, $9
- lb bc, $54, $48 ; b, c = y, x coordinates of shadow
- ld de, LedgeHoppingShadowOAM
- call WriteOAMBlock
+ ld hl, LedgeHoppingShadowOAM
+ ld de, wOAMBuffer + 36 * 4
+ ld bc, LedgeHoppingShadowOAMEnd - LedgeHoppingShadowOAM
+ call CopyData
+ ld a, $a0
+ ld [wOAMBuffer + 38 * 4], a
+ ld [wOAMBuffer + 39 * 4], a
ret
-LedgeHoppingShadow: ; 1a708 (6:6708)
+LedgeHoppingShadow: ; 1a893 (6:6893)
INCBIN "gfx/ledge_hopping_shadow.1bpp"
LedgeHoppingShadowEnd:
-LedgeHoppingShadowOAM: ; 1a710 (6:6710)
- db $FF,$10,$FF,$20
- db $FF,$40,$FF,$60
+LedgeHoppingShadowOAM: ; 1a89b (6:689b)
+ db $58,$48,$FF,$00
+ db $58,$50,$FF,$20
+LedgeHoppingShadowOAMEnd: ; 1a8a3 (6:68a3)
diff --git a/engine/overworld/npc_movement.asm b/engine/overworld/npc_movement.asm
index 719c8835..58eb6a47 100755
--- a/engine/overworld/npc_movement.asm
+++ b/engine/overworld/npc_movement.asm
@@ -27,7 +27,7 @@ PlayerStepOutFromDoor: ; 1a3e0 (6:63e0)
res 7, [hl]
ret
-_EndNPCMovementScript: ; 1a41d (6:641d)
+_EndNPCMovementScript: ; 1a527 (6:6527)
ld hl, wd730
res 7, [hl]
ld hl, wd72e
@@ -37,21 +37,21 @@ _EndNPCMovementScript: ; 1a41d (6:641d)
res 1, [hl]
xor a
ld [wNPCMovementScriptSpriteOffset], a
- ld [wNPCMovementScriptPointerTableNum], a
ld [wNPCMovementScriptFunctionNum], a
+ ld [wNPCMovementScriptPointerTableNum], a
ld [wWastedByteCD3A], a
ld [wSimulatedJoypadStatesIndex], a
ld [wSimulatedJoypadStatesEnd], a
ret
-PalletMovementScriptPointerTable: ; 1a442 (6:6442)
+PalletMovementScriptPointerTable: ; 1a54c (6:654c)
dw PalletMovementScript_OakMoveLeft
dw PalletMovementScript_PlayerMoveLeft
dw PalletMovementScript_WaitAndWalkToLab
dw PalletMovementScript_WalkToLab
dw PalletMovementScript_Done
-PalletMovementScript_OakMoveLeft: ; 1a44c (6:644c)
+PalletMovementScript_OakMoveLeft: ; 1a556 (6:6556)
ld a, [wXCoord]
sub $a
ld [wNumStepsToTake], a
@@ -79,13 +79,17 @@ PalletMovementScript_OakMoveLeft: ; 1a44c (6:644c)
ld a, $3
ld [wNPCMovementScriptFunctionNum], a
.done
+ ld a, BANK(Music_MuseumGuy)
+ ld c, a
+ ld a, MUSIC_MUSEUM_GUY
+ call PlayMusic
ld hl, wFlags_D733
set 1, [hl]
ld a, $fc
ld [wJoyIgnore], a
ret
-PalletMovementScript_PlayerMoveLeft: ; 1a485 (6:6485)
+PalletMovementScript_PlayerMoveLeft: ; 1a597 (6:6597)
ld a, [wd730]
bit 0, a ; is an NPC being moved by a script?
ret nz ; return if Oak is still moving
@@ -98,12 +102,12 @@ PalletMovementScript_PlayerMoveLeft: ; 1a485 (6:6485)
ld [wNPCMovementScriptFunctionNum], a
ret
-PalletMovementScript_WaitAndWalkToLab: ; 1a4a1 (6:64a1)
+PalletMovementScript_WaitAndWalkToLab: ; 1a5b3 (6:65b3)
ld a, [wSimulatedJoypadStatesIndex]
and a ; is the player done moving left yet?
ret nz
-PalletMovementScript_WalkToLab: ; 1a4a6 (6:64a6)
+PalletMovementScript_WalkToLab: ; 1a5b8 (6:65b8)
xor a
ld [wOverrideSimulatedJoypadStatesMask], a
ld a, [wSpriteIndex]
@@ -127,8 +131,9 @@ PalletMovementScript_WalkToLab: ; 1a4a6 (6:64a6)
ld [wNPCMovementScriptFunctionNum], a
ret
-RLEList_ProfOakWalkToLab: ; 1a4dc (6:64dc)
- db NPC_MOVEMENT_DOWN, $05
+
+RLEList_ProfOakWalkToLab: ; 1a5ee (6:65ee)
+ db NPC_MOVEMENT_DOWN, $06 ; differs from red
db NPC_MOVEMENT_LEFT, $01
db NPC_MOVEMENT_DOWN, $05
db NPC_MOVEMENT_RIGHT, $03
@@ -136,15 +141,15 @@ RLEList_ProfOakWalkToLab: ; 1a4dc (6:64dc)
db $E0, $01 ; stand still
db $FF
-RLEList_PlayerWalkToLab: ; 1a4e9 (6:64e9)
+RLEList_PlayerWalkToLab: ; 1a5fb (6:65fb)
db D_UP, $02
db D_RIGHT, $03
db D_DOWN, $05
db D_LEFT, $01
- db D_DOWN, $06
+ db D_DOWN, $07 ; differs from red
db $FF
-PalletMovementScript_Done: ; 1a4f4 (6:64f4)
+PalletMovementScript_Done: ; 1a606 (6:6606)
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
@@ -157,17 +162,15 @@ PalletMovementScript_Done: ; 1a4f4 (6:64f4)
res 7, [hl]
jp EndNPCMovementScript
-PewterMuseumGuyMovementScriptPointerTable: ; 1a510 (6:6510)
+PewterMuseumGuyMovementScriptPointerTable: ; 1a622 (6:6622)
dw PewterMovementScript_WalkToMuseum
dw PewterMovementScript_Done
-PewterMovementScript_WalkToMuseum: ; 1a514 (6:6514)
+PewterMovementScript_WalkToMuseum: ; 1a626 (6:6626)
ld a, BANK(Music_MuseumGuy)
- ld [wAudioROMBank], a
- ld [wAudioSavedROMBank], a
+ ld c, a
ld a, MUSIC_MUSEUM_GUY
- ld [wNewSoundID], a
- call PlaySound
+ call PlayMusic
ld a, [wSpriteIndex]
swap a
ld [wNPCMovementScriptSpriteOffset], a
@@ -179,7 +182,7 @@ PewterMovementScript_WalkToMuseum: ; 1a514 (6:6514)
ld [wSimulatedJoypadStatesIndex], a
xor a
ld [wWhichPewterGuy], a
- predef PewterGuys
+ call PewterGuys
ld hl, wNPCMovementDirections2
ld de, RLEList_PewterMuseumGuy
call DecodeRLEList
@@ -189,21 +192,21 @@ PewterMovementScript_WalkToMuseum: ; 1a514 (6:6514)
ld [wNPCMovementScriptFunctionNum], a
ret
-RLEList_PewterMuseumPlayer: ; 1a559 (6:6559)
+RLEList_PewterMuseumPlayer: ; 1a661 (6:6661)
db 0, $01
db D_UP, $03
db D_LEFT, $0D
db D_UP, $06
db $FF
-RLEList_PewterMuseumGuy: ; 1a562 (6:6562)
+RLEList_PewterMuseumGuy: ; 1a66a (6:666a)
db NPC_MOVEMENT_UP, $06
db NPC_MOVEMENT_LEFT, $0D
db NPC_MOVEMENT_UP, $03
db NPC_MOVEMENT_LEFT, $01
db $FF
-PewterMovementScript_Done: ; 1a56b (6:656b)
+PewterMovementScript_Done: ; 1a673 (6:6673)
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
@@ -213,17 +216,15 @@ PewterMovementScript_Done: ; 1a56b (6:656b)
res 7, [hl]
jp EndNPCMovementScript
-PewterGymGuyMovementScriptPointerTable: ; 1a57d (6:657d)
+PewterGymGuyMovementScriptPointerTable: ; 1a685 (6:6685)
dw PewterMovementScript_WalkToGym
dw PewterMovementScript_Done
-PewterMovementScript_WalkToGym: ; 1a581 (6:6581)
+PewterMovementScript_WalkToGym: ; 1a689 (6:6689)
ld a, BANK(Music_MuseumGuy)
- ld [wAudioROMBank], a
- ld [wAudioSavedROMBank], a
+ ld c, a
ld a, MUSIC_MUSEUM_GUY
- ld [wNewSoundID], a
- call PlaySound
+ call PlayMusic
ld a, [wSpriteIndex]
swap a
ld [wNPCMovementScriptSpriteOffset], a
@@ -236,7 +237,7 @@ PewterMovementScript_WalkToGym: ; 1a581 (6:6581)
ld [wSimulatedJoypadStatesIndex], a
ld a, 1
ld [wWhichPewterGuy], a
- predef PewterGuys
+ call PewterGuys
ld hl, wNPCMovementDirections2
ld de, RLEList_PewterGymGuy
call DecodeRLEList
@@ -248,7 +249,7 @@ PewterMovementScript_WalkToGym: ; 1a581 (6:6581)
ld [wNPCMovementScriptFunctionNum], a
ret
-RLEList_PewterGymPlayer: ; 1a5cd (6:65cd)
+RLEList_PewterGymPlayer: ; 1a6cb (6:66cb)
db 0, $01
db D_RIGHT, $02
db D_DOWN, $05
@@ -257,7 +258,7 @@ RLEList_PewterGymPlayer: ; 1a5cd (6:65cd)
db D_LEFT, $0F
db $FF
-RLEList_PewterGymGuy: ; 1a5da (6:65da)
+RLEList_PewterGymGuy: ; 1a6cd8(6:66d8)
db NPC_MOVEMENT_DOWN, $02
db NPC_MOVEMENT_LEFT, $0F
db NPC_MOVEMENT_UP, $05
@@ -266,27 +267,4 @@ RLEList_PewterGymGuy: ; 1a5da (6:65da)
db NPC_MOVEMENT_RIGHT, $03
db $FF
-FreezeEnemyTrainerSprite: ; 1a5e7 (6:65e7)
- ld a, [wCurMap]
- cp POKEMONTOWER_7
- ret z ; the Rockets on Pokemon Tower 7F leave after battling, so don't freeze them
- ld hl, RivalIDs
- ld a, [wEngagedTrainerClass]
- ld b, a
-.loop
- ld a, [hli]
- cp $ff
- jr z, .notRival
- cp b
- ret z ; the rival leaves after battling, so don't freeze him
- jr .loop
-.notRival
- ld a, [wSpriteIndex]
- ld [H_SPRITEINDEX], a
- jp SetSpriteMovementBytesToFF
-
-RivalIDs: ; 1a605 (6:6605)
- db OPP_SONY1
- db OPP_SONY2
- db OPP_SONY3
- db $ff
+INCLUDE "engine/overworld/pewter_guys.asm"
diff --git a/engine/overworld/pewter_guys.asm b/engine/overworld/pewter_guys.asm
index 543dac91..ff3c6152 100755
--- a/engine/overworld/pewter_guys.asm
+++ b/engine/overworld/pewter_guys.asm
@@ -1,4 +1,4 @@
-PewterGuys: ; 37ca1 (d:7ca1)
+PewterGuys: ; 1a6e5 (6:66e5)
ld hl, wSimulatedJoypadStatesEnd
ld a, [wSimulatedJoypadStatesIndex]
dec a ; this decrement causes it to overwrite the last byte before $FF in the list
@@ -48,14 +48,14 @@ PewterGuys: ; 37ca1 (d:7ca1)
inc hl
jr .findMatchingCoordsLoop
-PointerTable_37ce6: ; 37ce6 (d:7ce6)
+PointerTable_37ce6: ; 1a72a (6:672a)
dw PewterMuseumGuyCoords
dw PewterGymGuyCoords
; these are the four coordinates of the spaces below, above, to the left and
; to the right of the museum guy, and pointers to different movements for
; the player to make to get positioned before the main movement.
-PewterMuseumGuyCoords: ; 37cea (d:7cea)
+PewterMuseumGuyCoords: ; 1a72e (6:672e)
db 18, 27
dw .down
db 16, 27
@@ -78,7 +78,7 @@ PewterMuseumGuyCoords: ; 37cea (d:7cea)
; different movements for the player to make to get positioned before the
; main movement
; $00 is a pause
-PewterGymGuyCoords: ; 37d06 (d:7d06)
+PewterGymGuyCoords: ; 1a74a (6:674a)
db 16, 34
dw .one
db 17, 35
diff --git a/engine/predefs.asm b/engine/predefs.asm
index fa6e29df..3ec98577 100755
--- a/engine/predefs.asm
+++ b/engine/predefs.asm
@@ -52,103 +52,102 @@ GetPredefPointer: ; f67ed (3d:67ed)
PredefPointers:: ; f681d (3d:681d)
; these are pointers to ASM routines.
; they appear to be used in overworld map scripts.
- dr $f681d,$f7000
- ;add_predef DrawPlayerHUDAndHPBar
- ;add_predef CopyUncompressedPicToTilemap
- ;add_predef Func_3f073
- ;add_predef ScaleSpriteByTwo
- ;add_predef LoadMonBackPic
- ;add_predef CopyDownscaledMonTiles
- ;add_predef LoadMissableObjects
- ;add_predef HealParty
- ;add_predef MoveAnimation; 08 play move animation
- ;add_predef DivideBCDPredef
- ;add_predef DivideBCDPredef2
- ;add_predef AddBCDPredef
- ;add_predef SubBCDPredef
- ;add_predef DivideBCDPredef3
- ;add_predef DivideBCDPredef4
- ;add_predef InitPlayerData
- ;add_predef FlagActionPredef
- ;add_predef HideObject
- ;add_predef IsObjectHidden
- ;add_predef ApplyOutOfBattlePoisonDamage
- ;add_predef AnyPartyAlive
- ;add_predef ShowObject
- ;add_predef ShowObject2
- ;add_predef ReplaceTileBlock
- ;add_predef InitPlayerData2
- ;add_predef LoadTilesetHeader
- ;add_predef LearnMoveFromLevelUp
- ;add_predef LearnMove
- ;add_predef IsItemInBag_
- ;dbw $03,CheckForHiddenObjectOrBookshelfOrCardKeyDoor ; for these two, the bank number is actually 0
- ;dbw $03,GiveItem
- ;add_predef InvertBGPal_4Frames
- ;add_predef FindPathToPlayer
- ;add_predef Func_480ff
- ;add_predef CalcPositionOfPlayerRelativeToNPC
- ;add_predef ConvertNPCMovementDirectionsToJoypadMasks
- ;add_predef Func_48125
- ;add_predef UpdateHPBar
- ;add_predef HPBarLength
- ;add_predef Diploma_TextBoxBorder
- ;add_predef DoubleOrHalveSelectedStats
- ;add_predef ShowPokedexMenu
- ;add_predef EvolutionAfterBattle
- ;add_predef SaveSAVtoSRAM0
- ;add_predef InitOpponent
- ;add_predef CableClub_Run
- ;add_predef DrawBadges
- ;add_predef ExternalClockTradeAnim
- ;add_predef BattleTransition
- ;add_predef CopyTileIDsFromList
- ;add_predef PlayIntro
- ;add_predef Func_79869
- ;add_predef FlashScreen
- ;add_predef GetTileAndCoordsInFrontOfPlayer
- ;add_predef StatusScreen
- ;add_predef StatusScreen2
- ;add_predef InternalClockTradeAnim
- ;add_predef TrainerEngage
- ;add_predef IndexToPokedex
- ;add_predef DisplayPicCenteredOrUpperRight; 3B display pic?
- ;add_predef UsedCut
- ;add_predef ShowPokedexData
- ;add_predef WriteMonMoves
- ;add_predef SaveSAV
- ;add_predef LoadSGB
- ;add_predef MarkTownVisitedAndLoadMissableObjects
- ;add_predef SetPartyMonTypes
- ;add_predef CanLearnTM
- ;add_predef TMToMove
- ;add_predef Func_71ddf
- ;add_predef StarterDex ; 46
- ;add_predef _AddPartyMon
- ;add_predef UpdateHPBar2
- ;add_predef DrawEnemyHUDAndHPBar
- ;add_predef LoadTownMap_Nest
- ;add_predef PrintMonType
- ;add_predef EmotionBubble; 4C player exclamation
- ;add_predef EmptyFunc3; return immediately
- ;add_predef AskName
- ;add_predef PewterGuys
- ;add_predef SaveSAVtoSRAM2
- ;add_predef LoadSAVCheckSum2
- ;add_predef LoadSAV
- ;add_predef SaveSAVtoSRAM1
- ;add_predef DoInGameTradeDialogue ; 54 initiate trade
- ;add_predef HallOfFamePC
- ;add_predef DisplayDexRating
- ;dbw $1E, _LeaveMapAnim ; wrong bank
- ;dbw $1E, EnterMapAnim ; wrong bank
- ;add_predef GetTileTwoStepsInFrontOfPlayer
- ;add_predef CheckForCollisionWhenPushingBoulder
- ;add_predef PrintStrengthTxt
- ;add_predef PickupItem
- ;add_predef PrintMoveType
- ;add_predef LoadMovePPs
- ;add_predef DrawHP ; 5F
- ;add_predef DrawHP2
- ;add_predef Func_1c9c6
- ;add_predef OaksAideScript \ No newline at end of file
+ dbw BANK(DrawPlayerHUDAndHPBar), DrawPlayerHUDAndHPBar ; add_predef DrawPlayerHUDAndHPBar
+ dbw $3d, $61f9 ; add_predef CopyUncompressedPicToTilemap
+ dbw $3d, $61a6 ; add_predef Func_3f073
+ dbw $0b, $7d79 ; add_predef ScaleSpriteByTwo
+ dbw $3d, $6178 ; add_predef LoadMonBackPic
+ dbw $1e, $5c16 ; add_predef CopyDownscaledMonTiles
+ dbw $03, $70a7 ; add_predef LoadMissableObjects
+ dbw $03, $752b ; add_predef HealParty
+ dbw $1e, $4d97 ; add_predef MoveAnimation; 08 play move animation
+ dbw $03, $75a4 ; add_predef DivideBCDPredef
+ dbw $03, $75a4 ; add_predef DivideBCDPredef2
+ dbw $03, $76a3 ; add_predef AddBCDPredef
+ dbw $03, $76bc ; add_predef SubBCDPredef
+ dbw $03, $75a4 ; add_predef DivideBCDPredef3
+ dbw $03, $75a4 ; add_predef DivideBCDPredef4
+ dbw $03, $76d6 ; add_predef InitPlayerData
+ dbw $03, $74ec ; add_predef FlagActionPredef
+ dbw $03, $7053 ; add_predef HideObject
+ dbw $03, $7022 ; add_predef IsObjectHidden
+ dbw $03, $43de ; add_predef ApplyOutOfBattlePoisonDamage
+ dbw $0f, $4ae8 ; add_predef AnyPartyAlive
+ dbw $03, $7044 ; add_predef ShowObject
+ dbw $03, $7044 ; add_predef ShowObject2
+ dbw $03, $6d1b ; add_predef ReplaceTileBlock
+ dbw $03, $76d6 ; add_predef InitPlayerData2
+ dbw $03, $44f4 ; add_predef LoadTilesetHeader
+ dbw $0e, $700c ; add_predef LearnMoveFromLevelUp
+ dbw $01, $6bc8 ; add_predef LearnMove
+ dbw $03, $7735 ; add_predef IsItemInBag_
+ dbw $03, $3ef9 ; dbw $03,CheckForHiddenObjectOrBookshelfOrCardKeyDoor ; for these two, the ba
+ dbw $03, $3e3f ; dbw $03,GiveItem
+ dbw $0a, $7d4c ; add_predef InvertBGPal_4Frames
+ dbw $03, $774a ; add_predef FindPathToPlayer
+ dbw $0a, $7d67 ; add_predef Func_480ff
+ dbw $03, $77b9 ; add_predef CalcPositionOfPlayerRelativeToNPC
+ dbw $03, $7830 ; add_predef ConvertNPCMovementDirectionsToJoypadMasks
+ dbw $0a, $7d8d ; add_predef Func_48125
+ dbw $03, $78ad ; add_predef UpdateHPBar
+ dbw $03, $786c ; add_predef HPBarLength
+ dbw $01, $5b64 ; add_predef Diploma_TextBoxBorder
+ dbw $0f, $6e8e ; add_predef DoubleOrHalveSelectedStats
+ dbw $10, $4000 ; add_predef ShowPokedexMenu
+ dbw $0e, $6dc6 ; add_predef EvolutionAfterBattle
+ dbw $1c, $7ae5 ; add_predef SaveSAVtoSRAM0
+ dbw $3d, $5ff8 ; add_predef InitOpponent
+ dbw $01, $5b13 ; add_predef CableClub_Run
+ dbw $03, $6880 ; add_predef DrawBadges
+ dbw $10, $53f6 ; add_predef ExternalClockTradeAnim
+ dbw $1c, $49d7 ; add_predef BattleTransition
+ dbw $1e, $5f7b ; add_predef CopyTileIDsFromList
+ dbw $10, $5997 ; add_predef PlayIntro
+ dbw $1e, $59c5 ; add_predef Func_79869
+ dbw $1c, $4bd0 ; add_predef FlashScreen
+ dbw $03, $42d1 ; add_predef GetTileAndCoordsInFrontOfPlayer
+ dbw $04, $54cc ; add_predef StatusScreen
+ dbw $04, $56fb ; add_predef StatusScreen2
+ dbw $10, $53e5 ; add_predef InternalClockTradeAnim
+ dbw $15, $685b ; add_predef TrainerEngage
+ dbw $10, $509d ; add_predef IndexToPokedex
+ dbw $01, $600d ; add_predef DisplayPicCenteredOrUpperRight; 3B display pic?
+ dbw $03, $6dd1 ; add_predef UsedCut
+ dbw $10, $4312 ; add_predef ShowPokedexData
+ dbw $0e, $713f ; add_predef WriteMonMoves
+ dbw $1c, $7a67 ; add_predef SaveSAV
+ dbw $1c, $61f8 ; add_predef LoadSGB
+ dbw $03, $6f93 ; add_predef MarkTownVisitedAndLoadMissableObjects
+ dbw $17, $5b93 ; add_predef SetPartyMonTypes
+ dbw $04, $62f0 ; add_predef CanLearnTM
+ dbw $04, $631d ; add_predef TMToMove
+ dbw $1c, $5eb3 ; add_predef Func_71ddf
+ dbw $17, $40d4 ; add_predef StarterDex ; 46
+ dbw $03, $7161 ; add_predef _AddPartyMon
+ dbw $03, $78ad ; add_predef UpdateHPBar2
+ dbw $0f, $4eb1 ; add_predef DrawEnemyHUDAndHPBar
+ dbw $1c, $4fe4 ; add_predef LoadTownMap_Nest
+ dbw $09, $7d20 ; add_predef PrintMonType
+ dbw $10, $516f ; add_predef EmotionBubble; 4C player exclamation
+ dbw $01, $5b63 ; add_predef EmptyFunc3; return immediately
+ dbw $01, $625d ; add_predef AskName
+ dbw $06, $66e5 ; add_predef PewterGuys
+ dbw $1c, $7b56 ; add_predef SaveSAVtoSRAM2
+ dbw $1c, $7a24 ; add_predef LoadSAVCheckSum2
+ dbw $1c, $7959 ; add_predef LoadSAV
+ dbw $1c, $7b32 ; add_predef SaveSAVtoSRAM1
+ dbw $1c, $5b86 ; add_predef DoInGameTradeDialogue ; 54 initiate trade
+ dbw $3c, $4f26 ; add_predef HallOfFamePC
+ dbw $11, $4169 ; add_predef DisplayDexRating
+ dbw $1e, $4615 ; dbw $1E, _LeaveMapAnim ; wrong bank
+ dbw $1e, $4567 ; dbw $1E, EnterMapAnim ; wrong bank
+ dbw $03, $4309 ; add_predef GetTileTwoStepsInFrontOfPlayer
+ dbw $03, $4356 ; add_predef CheckForCollisionWhenPushingBoulder
+ dbw $3d, $5b06 ; add_predef PrintStrengthTxt
+ dbw $01, $4d55 ; add_predef PickupItem
+ dbw $09, $7d4d ; add_predef PrintMoveType
+ dbw $03, $72f9 ; add_predef LoadMovePPs
+ dbw $04, $5468 ; add_predef DrawHP ; 5F
+ dbw $04, $546f ; add_predef DrawHP2
+ dbw $07, $4264 ; add_predef Func_1c9c6
+ dbw $16, $4ecc ; add_predef OaksAideScript
diff --git a/engine/predefs7.asm b/engine/predefs7.asm
index a2c08171..9138897f 100755
--- a/engine/predefs7.asm
+++ b/engine/predefs7.asm
@@ -1,6 +1,12 @@
-DisplayElevatorFloorMenu: ; 1c9c6 (7:49c6)
+DisplayElevatorFloorMenu: ; 1c264 (7:4264)
+ ld hl, wd730
+ ld a, [hl]
+ push af
+ set 6, [hl]
ld hl, WhichFloorText
call PrintText
+ pop af
+ ld [wd730], a
ld hl, wItemList
ld a, l
ld [wListPointer], a
@@ -43,6 +49,6 @@ DisplayElevatorFloorMenu: ; 1c9c6 (7:49c6)
ld [hli], a ; destination map ID
ret
-WhichFloorText: ; 1ca14 (7:4a14)
+WhichFloorText: ; 1c2bd (7:42bd)
TX_FAR _WhichFloorText
db "@"
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 "----------@"
diff --git a/engine/unknown_ea3ea.asm b/engine/unknown_ea3ea.asm
new file mode 100755
index 00000000..c00785b4
--- /dev/null
+++ b/engine/unknown_ea3ea.asm
@@ -0,0 +1,972 @@
+Func_ea3ea: ; ea3ea (3a:63ea)
+ call GBPalWhiteOutWithDelay3
+ call ClearScreen
+ call LoadHpBarAndStatusTilePatterns
+ ld de, GFX_ea563
+ ld hl, vChars2 + $710
+ lb bc, BANK(GFX_ea563), (GFX_ea563End - GFX_ea563) / 8
+ call CopyVideoDataDouble
+
+ ld de, GFX_ea56b
+ ld hl, vChars2 + $6e0
+ lb bc, BANK(GFX_ea56b), (GFX_ea56bEnd - GFX_ea56b) / 8
+ call CopyVideoDataDouble
+
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ xor a
+ ld [wWhichTradeMonSelectionMenu], a
+ call LoadMonData
+
+ ld hl, wTileMap
+ lb bc, $10, $12
+ call TextBoxBorder
+
+ coord hl, 0, 12
+ lb bc, $04, $12
+ call TextBoxBorder
+
+ coord hl, 3, 10
+ call PrintLevelFull
+
+ coord hl, 2, 10
+ ld a, $6e
+ ld [hli], a
+ ld [hl], " "
+
+ coord hl, 2, 11
+ ld [hl], "′"
+
+ coord hl, 4, 11
+ ld de, wLoadedMonMaxHP
+ lb bc, 2, 3
+ call PrintNumber
+
+ ld a, [wMonHeader]
+ ld [wPokeBallAnimData], a
+ ld [wd0b5], a
+ ld hl, wPartyMonNicks
+ call Func_ea511
+ coord hl, 8, 2
+ call PlaceString
+
+ call GetMonName
+ coord hl, 9, 3
+ call PlaceString
+
+ predef IndexToPokedex
+ coord hl, 2, 8
+ ld [hl], "№"
+ inc hl
+ ld [hl], $f2
+ inc hl
+ ld de, wPokeBallAnimData
+ lb bc, $80 | 1, 3
+ call PrintNumber
+
+ coord hl, 8, 4
+ ld de, String_ea52f
+ call PlaceString
+
+ ld hl, wPartyMonOT
+ call Func_ea511
+ coord hl, 9, 5
+ call PlaceString
+
+ coord hl, 9, 6
+ ld de, String_ea533
+ call PlaceString
+
+ coord hl, 13, 6
+ ld de, wLoadedMonOTID
+ lb bc, $80 | 2, 5
+ call PrintNumber
+
+ coord hl, 9, 8
+ ld de, String_ea537
+ ld a, [hFlags_0xFFFA]
+ set 2, a
+ ld [hFlags_0xFFFA], a
+ call PlaceString
+ ld a, [hFlags_0xFFFA]
+ res 2, a
+ ld [hFlags_0xFFFA], a
+
+ coord hl, 16, 8
+ ld de, wLoadedMonAttack
+ ld a, 4
+.loop
+ push af
+ push de
+
+ push hl
+ lb bc, 2, 3
+ call PrintNumber
+ pop hl
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+
+ pop de
+ inc de
+ inc de
+ pop af
+ dec a
+ jr nz, .loop
+
+ coord hl, 1, 13
+ ld a, [wLoadedMonMoves]
+ call Func_ea51d
+
+ coord hl, 1, 14
+ ld a, [wLoadedMonMoves + 1]
+ call Func_ea51d
+
+ coord hl, 1, 15
+ ld a, [wLoadedMonMoves + 2]
+ call Func_ea51d
+
+ coord hl, 1, 16
+ ld a, [wLoadedMonMoves + 3]
+ call Func_ea51d
+
+ ld b, $04 ; SET_PAL_STATUS_SCREEN
+ call RunPaletteCommand
+
+ ld a, $01
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call Delay3
+ call GBPalNormal
+ coord hl, 1, 1
+ call LoadFlippedFrontSpriteByMonIndex
+ ret
+
+Func_ea511: ; ea511 (3a:6511)
+ ld bc, NAME_LENGTH
+ ld a, [wWhichPokemon]
+ call AddNTimes
+ ld e, l
+ ld d, h
+ ret
+
+Func_ea51d: ; ea51d (3a:651d)
+ and a
+ jr z, .asm_e6528
+ ld [wPokeBallAnimData], a
+ call GetMoveName
+ jr .asm_ea52b
+
+.asm_e6528
+ ld de, String_ea554
+.asm_ea52b
+ call PlaceString
+ ret
+; ea52f
+
+String_ea52f:
+ db "OT/@"
+; ea533
+
+String_ea533:
+ db $73, "№/@"
+; ea537
+
+String_ea537:
+ db "ATTACK"
+ next "DEFENSE"
+ next "SPEED"
+ next "SPECIAL@"
+; ea554
+
+String_ea554: ; ea554 (3a:6554)
+ db "--------------@"
+
+GFX_ea563: ; ea563 (3a:6563)
+INCBIN "gfx/stats_screen_hp.1bpp"
+GFX_ea563End: ; ea56b (3a:656b)
+
+GFX_ea56b:
+INCBIN "gfx/stats_screen_lv.1bpp"
+GFX_ea56bEnd: ; ea573 (3a:6573)
+
+Func_ea573: ; ea573 (3a:6573)
+ ld hl, vChars1 + $7e0
+ ld de, GFX_ea597
+ lb bc, BANK(GFX_ea597), (GFX_ea597End - GFX_ea597) / 16
+ call CopyVideoData
+
+ ld hl, wOAMBuffer + 32 * 4
+ ld a, $08
+ ld c, $08
+.loop
+ ld [hl], $10
+ inc hl
+ ld [hl], a
+ inc hl
+ ld [hl], $fe
+ inc hl
+ ld [hl], $00
+ inc hl
+ add $08
+ dec c
+ jr nz, .loop
+ ret
+
+GFX_ea597: ; ea597 (3a:6597)
+INCBIN "gfx/zero_one_ea597.2bpp"
+GFX_ea597End:
+
+Func_ea5b7: ; ea5b7 (3a:65b7)
+ ld hl, wOAMBuffer + 32 * 4 + 2
+ ld de, 4
+ ld a, [$c971]
+ ld c, 8
+.asm_ea5c2
+ sla a
+ jr c, .asm_ea5ca
+ ld [hl], $fe
+ jr .asm_ea5cc
+
+.asm_ea5ca
+ ld [hl], $ff
+.asm_ea5cc
+ add hl, de
+ dec c
+ jr nz, .asm_ea5c2
+ ret
+
+Func_ea5d1: ; ea5d1 (3a:65d1)
+ ld a, [wOverworldMap]
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_ea5e0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+Jumptable_ea5e0:
+ dw Func_ea623
+ dw Func_ea6d2
+ dw Func_ea6af
+ dw Func_ea645
+ dw Func_ea701
+ dw Func_ea6bd
+ dw Func_ea671
+ dw Func_ea701
+ dw Func_ea6af
+ dw Func_ea68a
+ dw Func_ea701
+ dw Func_ea6af
+ dw Func_ea721
+ dw Func_ea610
+ dw Func_ea61a
+ dw Func_ea6af
+ dw Func_ea61e
+ dw Func_ea72f
+ dw Func_ea732
+
+
+Func_ea606: ; ea606 (3a:6606)
+ ld hl, wOverworldMap
+ inc [hl]
+ ret
+
+Func_ea60b: ; ea60b (3a:660b)
+ ld hl, wOverworldMap
+ dec [hl]
+ ret
+
+Func_ea610: ; ea610 (3a:6610)
+ xor a
+ ld [$c971], a
+ ld hl, wOverworldMap
+ set 7, [hl]
+ ret
+
+Func_ea61a: ; ea61a (3a:661a)
+ call Func_ea606
+ ret
+
+Func_ea61e: ; ea61e (3a:661e)
+ xor a
+ ld [wOverworldMap], a
+ ret
+
+Func_ea623: ; ea623 (3a:6623)
+ call Func_ea784
+ ld hl, Data_ea9de
+ call Func_ea76b
+ xor a
+ ld [$c976], a
+ ld [$c977], a
+ ld a, [$caf4]
+ ld [$c6e9], a
+ call Func_ea606
+ call Func_ea74c
+ ld a, $01
+ ld [$cae0], a
+ ret
+
+Func_ea645: ; ea645 (3a:6645)
+ call Func_ea784
+ ld hl, $c6e9
+ ld a, [hl]
+ and a
+ jr z, Func_ea671
+ ld hl, Data_ea9ea
+ call Func_ea76b
+ call Func_ea7e9
+ ld a, $80
+ ld [$c976], a
+ ld a, $02
+ ld [$c977], a
+ call Func_ea7a2
+ call Func_ea606
+ call Func_ea74c
+ ld a, $02
+ ld [$cae0], a
+ ret
+
+Func_ea671: ; ea671 (3a:6671)
+ ld a, $06
+ ld [wOverworldMap], a
+ ld hl, Data_ea9f0
+ call Func_ea76b
+ xor a
+ ld [$c976], a
+ ld [$c977], a
+ call Func_ea606
+ call Func_ea74c
+ ret
+
+Func_ea68a: ; ea68a (3a:668a)
+ call Func_ea784
+ ld hl, Data_ea9e4
+ call Func_ea76b
+ call Func_ea7d2
+ ld a, $04
+ ld [$c976], a
+ ld a, $00
+ ld [$c977], a
+ call Func_ea7a2
+ call Func_ea606
+ call Func_ea74c
+ ld a, $03
+ ld [$cae0], a
+ ret
+
+Func_ea6af: ; ea6af (3a:66af)
+ ld hl, $c973
+ inc [hl]
+ ld a, [hl]
+ cp a, $06
+ ret c
+ xor a
+ ld [hl], a
+ call Func_ea606
+ ret
+
+Func_ea6bd: ; ea6bd (3a:66bd)
+ ld hl, $c973
+ inc [hl]
+ ld a, [hl]
+ cp 6
+ ret c
+ xor a
+ ld [hl], a
+ ld hl, $c6e9
+ dec [hl]
+ call Func_ea60b
+ call Func_ea60b
+ ret
+
+Func_ea6d2: ; ea6d2 (3a:66d2)
+ call Func_ea742
+ ret c
+ ld a, [$c970]
+ cp a, $ff
+ jr nz, .asm_ea6e4
+ ld a, [$c971]
+ cp a, $ff
+ jr z, .asm_ea6fb
+.asm_ea6e4
+ ld a, [$c970]
+ cp a, $81
+ jr nz, .asm_ea6fb
+ ld a, [$c971]
+ cp a, $00
+ jr nz, .asm_ea6fb
+ ld hl, wUnknownSerialFlag_d49a
+ set 1, [hl]
+ call Func_ea606
+ ret
+
+.asm_ea6fb
+ ld a, $0e
+ ld [wOverworldMap], a
+ ret
+
+Func_ea701: ; ea701 (3a:6701)
+ call Func_ea742
+ ret c
+ ld a, [$c971]
+ and $f0
+ jr nz, .asm_ea71b
+ ld a, [$c971]
+ and $01
+ jr nz, .asm_ea717
+ call Func_ea606
+ ret
+
+.asm_ea717
+ call Func_ea60b
+ ret
+
+.asm_ea71b
+ ld a, $11
+ ld [wOverworldMap], a
+ ret
+
+Func_ea721: ; ea721 (3a:6721)
+ call Func_ea742
+ ret c
+ ld a, [$c971]
+ and $f3
+ ret nz
+ call Func_ea606
+ ret
+
+Func_ea72f: ; ea72f (3a:672f)
+ call Func_ea606
+Func_ea732: ; ea732 (3a:6732)
+ ld a, [wUnknownSerialFlag_d49b]
+ and a
+ ret nz
+ ld a, [$c971]
+ and $f0
+ ret nz
+ xor a
+ ld [wOverworldMap], a
+ ret
+
+Func_ea742: ; ea742 (3a:6742)
+ ld a, [wUnknownSerialFlag_d49b]
+ and a
+ jr nz, .asm_ea74a
+ and a
+ ret
+
+.asm_ea74a
+ scf
+ ret
+
+Func_ea74c: ; ea74c (3a:674c)
+.asm_ea74c
+ ld a, [wUnknownSerialFlag_d49b]
+ and a
+ jr nz, .asm_ea74c
+ ld a, $01
+ ld [wUnknownSerialFlag_d49b], a
+ xor a
+ ld [$c974], a
+ ld [$c975], a
+ ld a, $88
+ ld [rSB], a
+ ld a, $01
+ ld [rSC], a
+ ld a, $81
+ ld [rSC], a
+ ret
+
+Func_ea76b: ; ea76b (3a:676b)
+ 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_ea784: ; ea784 (3a:6784)
+ 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, $280
+ call FillMemory
+ ret
+
+Func_ea7a2: ; ea7a2 (3a:67a2)
+ ld hl, $0000
+ ld bc, $0004
+ ld de, $c6ea
+ call Func_ea7c5
+ ld a, [$c976]
+ ld c, a
+ ld a, [$c977]
+ ld b, a
+ ld de, $c6f0
+ call Func_ea7c5
+ ld a, l
+ ld [$c6ee], a
+ ld a, h
+ ld [$c6ef], a
+ ret
+
+Func_ea7c5: ; ea7c5 (3a:67c5)
+.asm_ea7c5
+ ld a, [de]
+ inc de
+ add l
+ jr nc, .asm_ea7cb
+ inc h
+.asm_ea7cb
+ ld l, a
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_ea7c5
+ ret
+
+Func_ea7d2: ; ea7d2 (3a:67d2)
+ 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_ea7e9: ; ea7e9 (3a:67e9)
+ ld a, [$c6e9]
+ ld b, a
+ ld a, [$caf4]
+ sub b
+ ld hl, $c978
+ ld de, $0028
+.asm_ea7f7
+ and a
+ jr z, .asm_ea7fe
+ add hl, de
+ dec a
+ jr .asm_ea7f7
+
+.asm_ea7fe
+ ld e, l
+ ld d, h
+ ld hl, $c6f0
+ ld c, $28
+.asm_ea805
+ ld a, [de]
+ inc de
+ push bc
+ push de
+ push hl
+ swap a
+ ld d, a
+ and $f0
+ ld e, a
+ ld a, d
+ and $0f
+ ld d, a
+ and $08
+ ld a, d
+ jr nz, .asm_ea81d
+ or $90
+ jr .asm_ea81f
+
+.asm_ea81d
+ or $80
+.asm_ea81f
+ ld d, a
+ lb bc, $3a, $01
+ call CopyVideoData
+ pop hl
+ ld de, $0010
+ add hl, de
+ pop de
+ pop bc
+ dec c
+ jr nz, .asm_ea805
+ call Func_ea834
+ ret
+
+Func_ea834: ; ea834 (3a:6834)
+ ld hl, $cbdc
+ ld bc, $0020
+ xor a
+ call FillMemory
+ ld hl, $c300
+ ld c, $28
+.asm_ea843
+ push bc
+ push hl
+ call Func_ea860
+ jr nc, .asm_ea856
+ call Func_ea886
+ call Func_ea8a1
+ call Func_ea902
+ call Func_ea999
+.asm_ea856
+ pop hl
+ inc hl
+ inc hl
+ inc hl
+ inc hl
+ pop bc
+ dec c
+ jr nz, .asm_ea843
+ ret
+
+Func_ea860: ; ea860 (3a:6860)
+ ld a, [$c6e9]
+ ld b, a
+ ld a, [$caf4]
+ sub b
+ ld c, a
+ ld b, $10
+.asm_ea86b
+ ld a, c
+ and a
+ jr z, .asm_ea876
+ ld a, b
+ add $10
+ ld b, a
+ dec c
+ jr .asm_ea86b
+
+.asm_ea876
+ ld a, b
+ ld e, a
+ add $10
+ ld d, a
+ ld a, [hl]
+ cp e
+ jr c, .asm_ea884
+ cp d
+ jr nc, .asm_ea884
+ scf
+ ret
+
+.asm_ea884
+ and a
+ ret
+
+Func_ea886: ; ea886 (3a:6886)
+ push hl
+ inc hl
+ inc hl
+ ld a, [hl]
+ swap a
+ ld d, a
+ and $f0
+ ld e, a
+ ld a, d
+ and $0f
+ or $80
+ ld d, a
+ ld hl, $cbdc
+ lb bc, $3a, $01
+ call CopyVideoData
+ pop hl
+ ret
+
+Func_ea8a1: ; ea8a1 (3a:68a1)
+ push hl
+ inc hl
+ inc hl
+ inc hl
+ ld a, [hl]
+ call Func_ea8ab
+ pop hl
+ ret
+
+Func_ea8ab: ; ea8ab (3a:68ab)
+ and $60
+ swap a
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_ea8ba
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+Jumptable_ea8ba: ; ea8ba (3a:68ba)
+ dw Func_ea8c2
+ dw Func_ea8c3
+ dw Func_ea8c7
+ dw Func_ea8cb
+
+Func_ea8c2: ; ea8c2 (3a:68c2)
+ ret
+
+Func_ea8c3: ; ea8c3 (3a:68c3)
+ call Func_ea8d2
+ ret
+
+Func_ea8c7: ; ea8c7 (3a:68c7)
+ call Func_ea8e8
+ ret
+
+Func_ea8cb: ; ea8cb (3a:68cb)
+ call Func_ea8d2
+ call Func_ea8e8
+ ret
+
+Func_ea8d2: ; ea8d2 (3a:68d2)
+ ld hl, $cbdc
+ ld c, 16
+.asm_ea8d7
+ ld d, [hl]
+ ld a, 0
+ ld b, 8
+.asm_ea8dc
+ sla d
+ rr a
+ dec b
+ jr nz, .asm_ea8dc
+ ld [hli], a
+ dec c
+ jr nz, .asm_ea8d7
+ ret
+
+Func_ea8e8: ; ea8e8 (3a:68e8)
+ ld hl, $cbdc
+ ld de, $cbea
+ ld c, $04
+.asm_ea8f0
+ ld b, [hl]
+ ld a, [de]
+ ld [hli], a
+ ld a, b
+ ld [de], a
+ inc de
+ ld b, [hl]
+ ld a, [de]
+ ld [hli], a
+ ld a, b
+ ld [de], a
+ dec de
+ dec de
+ dec de
+ dec c
+ jr nz, .asm_ea8f0
+ ret
+
+Func_ea902: ; ea902 (3a:6902)
+ push hl
+ ld hl, $cbdc
+ ld de, $cbec
+ ld a, $08
+.asm_ea90b
+ push af
+ ld bc, $0000
+ ld a, $08
+.asm_ea911
+ push af
+ xor a
+ rlc [hl]
+ rl a
+ inc hl
+ rlc [hl]
+ rl a
+ dec hl
+ push hl
+ push de
+ call Func_ea936
+ pop de
+ pop hl
+ pop af
+ dec a
+ jr nz, .asm_ea911
+ inc hl
+ inc hl
+ ld a, b
+ ld [de], a
+ inc de
+ ld a, c
+ ld [de], a
+ inc de
+ pop af
+ dec a
+ jr nz, .asm_ea90b
+ pop hl
+ ret
+
+Func_ea936 ; ea936 (3a:6936)
+ call Func_ea93d
+ call Func_ea96d
+ ret
+
+Func_ea93d: ; ea93d (3a:693d)
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_ea949
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+Jumptable_ea949: ; ea949 (3a:6949)
+ dw Func_ea951
+ dw Func_ea95f
+ dw Func_ea956
+ dw Func_ea966
+
+Func_ea951: ; ea951 (3a:6951)
+ ld a, [rOBP0]
+ and $03
+ ret
+
+Func_ea956: ; ea956 (3a:6956)
+ ld a, [rOBP0]
+ and $0c
+ srl a
+ srl a
+ ret
+
+Func_ea95f: ; ea95f (3a:695f)
+ ld a, [rOBP0]
+ and $30
+ swap a
+ ret
+
+Func_ea966: ; ea966 (3a:6966)
+ ld a, [rOBP0]
+ and $c0
+ rlca
+ rlca
+ ret
+
+Func_ea96d: ; ea96d (3a:696d)
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_ea979
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+Jumptable_ea979: ; ea979 (3a:6979)
+ dw Func_ea981
+ dw Func_ea986
+ dw Func_ea98c
+ dw Func_ea992
+
+Func_ea981: ; ea981 (3a:6981)
+ sla b
+ sla c
+ ret
+
+Func_ea986: ; ea986 (3a:6986)
+ scf
+ rl b
+ sla c
+ ret
+
+Func_ea98c: ; ea98c (3a:698c)
+ sla b
+ scf
+ rl c
+ ret
+
+Func_ea992: ; ea992 (3a:6992)
+ scf
+ rl b
+ scf
+ rl c
+ ret
+
+Func_ea999: ; ea999 (3a:6999)
+ push hl
+ ld a, [hli]
+ ld c, [hl]
+ and $08
+ jr nz, .asm_ea9a5
+ ld hl, $c6f0
+ jr .asm_ea9a8
+
+.asm_ea9a5
+ ld hl, $c830
+.asm_ea9a8
+ ld b, $00
+ ld a, c
+ and $f8
+ sub $08
+ ld c, a
+ sla c
+ rl b
+ add hl, bc
+ ld e, l
+ ld d, h
+ ld hl, $cbec
+ ld c, $08
+.asm_ea9bc
+ call Func_ea9d0
+ ld a, [de]
+ and b
+ or [hl]
+ ld [de], a
+ inc hl
+ inc de
+ ld a, [de]
+ and b
+ or [hl]
+ ld [de], a
+ inc hl
+ inc de
+ dec c
+ jr nz, .asm_ea9bc
+ pop hl
+ ret
+
+Func_ea9d0: ; ea9d0 (3a:69d0)
+ push hl
+ push de
+ ld de, $fff0
+ add hl, de
+ ld a, [hli]
+ or [hl]
+ xor $ff
+ ld b, a
+ pop de
+ pop hl
+ ret
+
+Data_ea9de: ; ea9de
+ db $01, $00, $00, $00, $01, $00
+Data_ea9e4: ; ea9e4
+ db $02, $00, $04, $00, $00, $00
+Data_ea9ea: ; ea9ea
+ db $04, $00, $80, $02, $00, $00
+Data_ea9f0: ; ea9f0
+ db $04, $00, $00, $00, $04, $00
+Data_ea9f6: ; ea9f6
+ db $08, $00, $00, $00, $08, $00
+Data_ea9fc: ; ea9fc
+ db $0f, $00, $00, $00, $0f, $00