diff options
Diffstat (limited to 'engine')
-rwxr-xr-x | engine/clear_save.asm | 8 | ||||
-rwxr-xr-x | engine/diploma_3a.asm | 167 | ||||
-rwxr-xr-x | engine/overworld/card_key.asm | 2 | ||||
-rwxr-xr-x | engine/overworld/doors.asm | 55 | ||||
-rwxr-xr-x | engine/overworld/ledges.asm | 26 | ||||
-rwxr-xr-x | engine/overworld/npc_movement.asm | 88 | ||||
-rwxr-xr-x | engine/overworld/pewter_guys.asm | 8 | ||||
-rwxr-xr-x | engine/predefs.asm | 199 | ||||
-rwxr-xr-x | engine/predefs7.asm | 10 | ||||
-rwxr-xr-x | engine/printer.asm | 1342 | ||||
-rwxr-xr-x | engine/unknown_ea3ea.asm | 972 |
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 |