From 84c981ffb8986b0ddafdc886bbedc670a3bcd751 Mon Sep 17 00:00:00 2001 From: earthoul Date: Sun, 4 Jan 2026 16:12:29 +0900 Subject: [PATCH] Label map trasnfer buffers and overworld move mode --- src/constants/game_event_constants.asm | 2 +- src/constants/map_constants.asm | 2 + src/engine/bank03.asm | 82 +++++++++++++------------- src/engine/bank0b.asm | 6 +- src/engine/bank0c.asm | 44 +++++++------- src/engine/bank0d.asm | 20 +++---- src/engine/bank0f.asm | 14 ++--- src/engine/bank10.asm | 20 +++---- src/home/unsorted.asm | 8 +-- src/wram.asm | 7 +-- tools/map_header_extractor.py | 2 +- 11 files changed, 104 insertions(+), 103 deletions(-) diff --git a/src/constants/game_event_constants.asm b/src/constants/game_event_constants.asm index 3e86477..e5b52f9 100644 --- a/src/constants/game_event_constants.asm +++ b/src/constants/game_event_constants.asm @@ -16,7 +16,7 @@ DEF NUM_GAME_EVENTS EQU const_value ; 6 const OWMODE_02 ; $02 const OWMODE_03 ; $03 const OWMODE_04 ; $04 - const OWMODE_05 ; $05 + const OWMODE_MOVE ; $05 const OWMODE_STEP_EVENT ; $06 const OWMODE_NPC_POSITION ; $07 const OWMODE_INTERACT ; $08 diff --git a/src/constants/map_constants.asm b/src/constants/map_constants.asm index f0e08b2..3184378 100644 --- a/src/constants/map_constants.asm +++ b/src/constants/map_constants.asm @@ -123,6 +123,8 @@ DEF GR_ISLAND EQU $1 const MAP_GR_CASTLE ; $72 const MAP_GR_CASTLE_BIRURITCHI ; $73 +DEF MAP_NONE EQU -1 + ; MAP_GFX_* ; referenced in MapHeaders, and others. see also: data/map_gfx.asm ; only 2 maps have alternate graphics: MAP_LIGHTNING_CLUB, MAP_GFX_GR_CHALLENGE_HALL diff --git a/src/engine/bank03.asm b/src/engine/bank03.asm index a42a383..9fd9676 100644 --- a/src/engine/bank03.asm +++ b/src/engine/bank03.asm @@ -152,27 +152,27 @@ OWModePostprocess:: jp hl .PointerTable - dw Func_31a1 ; OWMODE_00 - dw Func_c162 ; OWMODE_MUSIC_PRELOAD - dw Func_c17d ; OWMODE_02 - dw Func_c169 ; OWMODE_03 - dw Func_c183 ; OWMODE_04 - dw Func_31a8 ; OWMODE_05 - dw Func_c199 ; OWMODE_STEP_EVENT - dw Func_c162 ; OWMODE_NPC_POSITION - dw Func_c163 ; OWMODE_INTERACT - dw Func_c189 ; OWMODE_AFTER_DUEL - dw Func_3234 ; OWMODE_0A - dw Func_c18f ; OWMODE_0B - dw Func_c162 ; OWMODE_0C - dw Func_c162 ; OWMODE_0D - dw Func_c162 ; OWMODE_0E - dw Func_c16f ; OWMODE_0F - dw Func_c175 ; OWMODE_MUSIC_POSTLOAD - dw Func_c1a2 ; OWMODE_11 - dw PauseMenu ; OWMODE_PAUSE_MENU + dw Func_31a1 ; OWMODE_00 + dw .Exit ; OWMODE_MUSIC_PRELOAD + dw Func_c17d ; OWMODE_02 + dw Func_c169 ; OWMODE_03 + dw Func_c183 ; OWMODE_04 + dw Func_31a8 ; OWMODE_MOVE + dw Func_c199 ; OWMODE_STEP_EVENT + dw .Exit ; OWMODE_NPC_POSITION + dw Func_c163 ; OWMODE_INTERACT + dw Func_c189 ; OWMODE_AFTER_DUEL + dw Func_3234 ; OWMODE_0A + dw Func_c18f ; OWMODE_0B + dw .Exit ; OWMODE_0C + dw .Exit ; OWMODE_0D + dw .Exit ; OWMODE_0E + dw PlaySFXWarp ; OWMODE_0F + dw Func_c175 ; OWMODE_MUSIC_POSTLOAD + dw Func_c1a2 ; OWMODE_11 + dw PauseMenu ; OWMODE_PAUSE_MENU -Func_c162: +.Exit: ret Func_c163: @@ -185,7 +185,7 @@ Func_c169: call WaitAFrames ret -Func_c16f: +PlaySFXWarp: ld a, SFX_WARP call PlaySFX ret @@ -339,7 +339,7 @@ Func_c24d: ld [wCurMapScriptsPointer + 0], a ld [wCurMapScriptsPointer + 1], a ld [wCurIsland], a - ld [wd586], a + ld [wCurMap], a ld [wCurOWLocation], a ld [wCurMusic], a ld [wSentMailBitfield + 0], a @@ -432,32 +432,32 @@ Func_c319: call GetVarValue cp $04 jr c, .asm_c32d - jr z, .asm_c357 + jr z, .done ld a, VAR_0D ld c, $01 call SetVarValue - jr .asm_c357 + jr .done .asm_c32d - ld a, [wd586] - cp $23 - jr z, .asm_c357 - cp $24 - jr z, .asm_c357 - cp $25 - jr z, .asm_c357 + ld a, [wCurMap] + cp MAP_POKEMON_DOME_ENTRANCE + jr z, .done + cp MAP_POKEMON_DOME + jr z, .done + cp MAP_POKEMON_DOME_BACK + jr z, .done ld a, VAR_0D call GetVarValue cp $02 - jr z, .asm_c357 + jr z, .done jr nc, .asm_c358 ld a, VAR_20 call GetVarValue cp $0a - jr c, .asm_c357 + jr c, .done ld a, VAR_0D ld c, $02 call SetVarValue -.asm_c357 +.done ret .asm_c358 ld a, VAR_0D @@ -465,7 +465,7 @@ Func_c319: call SetVarValue ld a, VAR_20 call ZeroOutVarValue - jr .asm_c357 + jr .done Func_c366: ld a, VAR_21 @@ -1261,7 +1261,7 @@ SetWarpData: ld hl, wOverworldTransition set 0, [hl] ld a, [wNextWarpMap] - ld [wd585], a + ld [wTempPrevMap], a ret Func_d3e9:: @@ -1319,12 +1319,12 @@ LoadMapHeader:: ld de, wNextMapHeaderData ld bc, MAPHEADERSTRUCT_LENGTH call CopyFarHLToDE - ld a, [wd586] - ld [wd584], a + ld a, [wCurMap] + ld [wPrevMap], a pop af - ld [wd586], a - ld a, $ff - ld [wd585], a + ld [wCurMap], a + ld a, MAP_NONE + ld [wTempPrevMap], a ret ; a = NPC_* ID diff --git a/src/engine/bank0b.asm b/src/engine/bank0b.asm index 26c65e9..a819207 100644 --- a/src/engine/bank0b.asm +++ b/src/engine/bank0b.asm @@ -6063,7 +6063,7 @@ Func_2ed75: ld a, EVENT_SET_UNTIL_MAP_RELOAD_1 farcall GetEventValue jr z, .asm_2ed8a - ld a, [wd585] + ld a, [wTempPrevMap] cp OVERWORLD_MAP_TCG jr nz, .asm_2ed8a ld a, EVENT_TALKED_TO_SARA @@ -8291,7 +8291,7 @@ OverheadIslands_MapScripts: Func_2fe54: farcall InitOWObjects - ld a, [wd584] + ld a, [wPrevMap] cp OVERWORLD_MAP_TCG jr nz, .asm_2fe6c ld a, NPC_GR_BLIMP @@ -8331,7 +8331,7 @@ Func_2fe97: ret Func_2fe9a: - ld a, [wd584] + ld a, [wPrevMap] cp OVERWORLD_MAP_TCG jr z, .asm_2febb ld a, OVERWORLD_MAP_TCG diff --git a/src/engine/bank0c.asm b/src/engine/bank0c.asm index b47b6fb..29ed1f8 100644 --- a/src/engine/bank0c.asm +++ b/src/engine/bank0c.asm @@ -43,7 +43,7 @@ Func_30005: ret Func_30056: - ld a, [wd584] + ld a, [wPrevMap] cp OVERWORLD_MAP_GR ret nz ld a, VAR_3B @@ -80,7 +80,7 @@ OverworldGr_MapScripts: db $ff ; end Func_30092: - ld a, [wd584] + ld a, [wPrevMap] cp MAP_OVERHEAD_ISLANDS jr z, .asm_300a0 cp MAP_GR_AIRPORT @@ -118,7 +118,7 @@ Func_300a8: ld a, [wCurOWLocation] call PrintGRIslandLocationName - ld a, [wd584] + ld a, [wPrevMap] cp MAP_OVERHEAD_ISLANDS jr z, .asm_3012c cp MAP_GR_AIRPORT @@ -166,7 +166,7 @@ Func_300a8: ld [wd593 + 0], a ld a, h ld [wd593 + 1], a - ld a, [wd584] + ld a, [wPrevMap] cp MAP_OVERHEAD_ISLANDS jr z, .asm_30159 ld a, NPC_GR_BLIMP @@ -207,7 +207,7 @@ Func_3018b: ret Func_30192: - ld a, [wd585] + ld a, [wTempPrevMap] cp MAP_GR_AIRPORT jr z, .asm_3019f cp MAP_OVERHEAD_ISLANDS @@ -590,7 +590,7 @@ Func_303c7: jr z, .from_north cp OWMAP_GR_FIGHTING_FORT jr nz, .from_south - ld a, [wd584] + ld a, [wPrevMap] cp MAP_FIGHTING_FORT jr z, .from_north .from_south @@ -791,7 +791,7 @@ Data_3056a: INCLUDE "data/gr_island_paths.asm" DoGRBlimpMovement_GRIsland: - ld a, [wd584] + ld a, [wPrevMap] cp MAP_GR_AIRPORT jr z, .asm_310cf @@ -866,7 +866,7 @@ DoGRBlimpMovement_GRIsland: jr .finish .done_movement - ld a, [wd585] + ld a, [wTempPrevMap] cp MAP_OVERHEAD_ISLANDS jr z, .asm_31136 ; unnecessary cp .asm_31136 @@ -877,9 +877,9 @@ DoGRBlimpMovement_GRIsland: ret ; fades out to white or black -; dependent on wd585 +; dependent on wTempPrevMap .FadeOut: - ld a, [wd585] + ld a, [wTempPrevMap] cp MAP_OVERHEAD_ISLANDS jr nz, .to_black ; to white @@ -1264,7 +1264,7 @@ Func_3142d: ret Func_31447: - ld a, [wd585] + ld a, [wTempPrevMap] cp OVERWORLD_MAP_GR jr nz, .asm_3148e ld a, VAR_30 @@ -1726,7 +1726,7 @@ Func_317e2: ret Func_317eb: - ld a, [wd584] + ld a, [wPrevMap] cp MAP_GRASS_FORT_ENTRANCE jr nz, .asm_317f6 farcall DeliverMailFromQueue @@ -2791,7 +2791,7 @@ Func_3200d: ret Func_32016: - ld a, [wd584] + ld a, [wPrevMap] cp MAP_LIGHTNING_FORT_ENTRANCE jr nz, .asm_32021 farcall DeliverMailFromQueue @@ -3878,7 +3878,7 @@ Func_32864: ret Func_3286d: - ld a, [wd584] + ld a, [wPrevMap] cp MAP_FIRE_FORT_ENTRANCE jr nz, .asm_32878 farcall DeliverMailFromQueue @@ -5069,7 +5069,7 @@ Func_33120: ret Func_33129: - ld a, [wd584] + ld a, [wPrevMap] cp MAP_WATER_FORT_ENTRANCE jr nz, .asm_33134 farcall DeliverMailFromQueue @@ -5625,7 +5625,7 @@ Func_33565: ret Func_3356c: - ld a, [wd585] + ld a, [wTempPrevMap] cp MAP_FIGHTING_FORT_BASEMENT jr z, .asm_33575 scf @@ -5773,7 +5773,7 @@ Func_336a3: ret Func_336aa: - ld a, [wd585] + ld a, [wTempPrevMap] cp MAP_FIGHTING_FORT_BASEMENT jr z, .asm_336b3 scf @@ -5992,7 +5992,7 @@ Func_338a8: ret Func_338af: - ld a, [wd585] + ld a, [wTempPrevMap] cp MAP_FIGHTING_FORT_BASEMENT jr z, .asm_338b8 scf @@ -6191,7 +6191,7 @@ Func_33a83: ret Func_33a8a: - ld a, [wd585] + ld a, [wTempPrevMap] cp MAP_FIGHTING_FORT_BASEMENT jr z, .asm_33a93 scf @@ -6278,7 +6278,7 @@ Func_33b73: ret Func_33b7a: - ld a, [wd585] + ld a, [wTempPrevMap] cp MAP_FIGHTING_FORT_BASEMENT jr z, .asm_33b83 scf @@ -6378,7 +6378,7 @@ Func_33c74: ld bc, $53 ld a, $05 farcall SetwD896 - ld a, [wd584] + ld a, [wPrevMap] cp MAP_FIGHTING_FORT_MAZE_18 jr z, .asm_33c86 scf @@ -6397,7 +6397,7 @@ Func_33c74: ret Func_33c9d: - ld a, [wd585] + ld a, [wTempPrevMap] cp MAP_FIGHTING_FORT_BASEMENT jr z, .asm_33ca6 scf diff --git a/src/engine/bank0d.asm b/src/engine/bank0d.asm index 0203aca..f6a1092 100644 --- a/src/engine/bank0d.asm +++ b/src/engine/bank0d.asm @@ -1035,7 +1035,7 @@ Func_347e1: Func_347ea: farcall ClearwD986 - ld a, [wd584] + ld a, [wPrevMap] cp OVERWORLD_MAP_TCG jr z, .asm_3483d ld a, EVENT_SHORT_GR_ISLAND_FLYOVER_SEQUENCE @@ -1093,7 +1093,7 @@ Func_347ea: ret Func_34873: - ld a, [wd585] + ld a, [wTempPrevMap] cp OVERWORLD_MAP_TCG jr z, .asm_3487c scf @@ -1914,7 +1914,7 @@ Func_34ef7: ret Func_34f07: - ld a, [wd584] + ld a, [wPrevMap] cp MAP_GAME_CENTER_1 jr z, .asm_34f23 ld a, OWMODE_0A @@ -3380,7 +3380,7 @@ Func_35a04: ret Func_35a0d: - ld a, [wd584] + ld a, [wPrevMap] cp MAP_FIGHTING_FORT_ENTRANCE jr nz, .asm_35a18 farcall DeliverMailFromQueue @@ -3678,7 +3678,7 @@ Func_35c68: ret Func_35c6f: - ld a, [wd585] + ld a, [wTempPrevMap] cp MAP_FIGHTING_FORT_BASEMENT jr z, .asm_35c78 scf @@ -3734,7 +3734,7 @@ Func_35d04: ret Func_35d0b: - ld a, [wd585] + ld a, [wTempPrevMap] cp MAP_FIGHTING_FORT_BASEMENT jr z, .asm_35d14 scf @@ -4599,7 +4599,7 @@ Func_36396: ret Func_3639f: - ld a, [wd584] + ld a, [wPrevMap] cp MAP_PSYCHIC_STRONGHOLD_ENTRANCE jr nz, .asm_363aa farcall DeliverMailFromQueue @@ -4625,7 +4625,7 @@ Func_3639f: script_call b0z, .ows_36426 .ows_363da end_script - ld a, [wd584] + ld a, [wPrevMap] cp MAP_PSYCHIC_STRONGHOLD_MAMI jr z, .asm_363e4 scf @@ -4665,7 +4665,7 @@ Func_3639f: script_ret Func_36434: - ld a, [wd585] + ld a, [wTempPrevMap] cp MAP_PSYCHIC_STRONGHOLD_MAMI jr z, .asm_3643d scf @@ -7015,7 +7015,7 @@ Func_37663: ret Func_3766c: - ld a, [wd584] + ld a, [wPrevMap] cp MAP_GR_CASTLE_ENTRANCE jr nz, .asm_37677 farcall DeliverMailFromQueue diff --git a/src/engine/bank0f.asm b/src/engine/bank0f.asm index 5702b5d..fee05e7 100644 --- a/src/engine/bank0f.asm +++ b/src/engine/bank0f.asm @@ -2306,7 +2306,7 @@ Func_3d1f6: ret Func_3d210: - ld a, [wd585] + ld a, [wTempPrevMap] cp OVERWORLD_MAP_TCG jr nz, .asm_3d257 ld a, VAR_28 @@ -2875,7 +2875,7 @@ Func_3d6ca: ld bc, TILEMAP_037 lb de, 7, 0 farcall Func_12c0ce - ld a, [wd584] + ld a, [wPrevMap] cp MAP_POKEMON_DOME_BACK jr z, .asm_3d6dd scf @@ -2912,7 +2912,7 @@ Func_3d6ca: ret Func_3d719: - ld a, [wd585] + ld a, [wTempPrevMap] cp MAP_POKEMON_DOME_BACK jr z, .asm_3d722 scf @@ -2931,7 +2931,7 @@ Func_3d719: ret Func_3d734: - ld a, [wd585] + ld a, [wTempPrevMap] cp MAP_POKEMON_DOME_BACK jr z, .asm_3d73d scf @@ -5940,7 +5940,7 @@ Func_3ee11: compare_loaded_var_word 0 script_jump_if_b0z .ows_3ee7d quit_script - ld a, [wd584] + ld a, [wPrevMap] cp MAP_GAME_CENTER_1 jr nz, .asm_3ee67 ld a, $01 @@ -7325,7 +7325,7 @@ Func_3f8c6: ld bc, $53 ld a, $05 farcall SetwD896 - ld a, [wd584] + ld a, [wPrevMap] cp MAP_FIGHTING_FORT jr nz, .asm_3f8d8 scf @@ -7389,7 +7389,7 @@ Func_3f932: end_script ld a, $02 farcall Func_30065 - ld a, [wd584] + ld a, [wPrevMap] cp MAP_FIGHTING_FORT ret z ld a, VAR_3B diff --git a/src/engine/bank10.asm b/src/engine/bank10.asm index 6b72a53..8a05e90 100644 --- a/src/engine/bank10.asm +++ b/src/engine/bank10.asm @@ -725,7 +725,7 @@ OverworldTcg_MapScripts: db $ff ; end Func_40474: - ld a, [wd584] + ld a, [wPrevMap] cp MAP_OVERHEAD_ISLANDS jr z, .asm_40482 cp MAP_TCG_AIRPORT @@ -758,7 +758,7 @@ Func_4048a: ld a, [wCurOWLocation] call PrintTCGIslandLocationName - ld a, [wd584] + ld a, [wPrevMap] cp MAP_TCG_AIRPORT jr z, .gr_blimp_cutscene cp MAP_OVERHEAD_ISLANDS @@ -807,7 +807,7 @@ Func_4048a: ld a, h ld [wd593 + 1], a - ld a, [wd584] + ld a, [wPrevMap] cp MAP_OVERHEAD_ISLANDS jr z, .asm_40528 ld a, NPC_GR_BLIMP @@ -833,7 +833,7 @@ Func_4053b: ret Func_4053e: - ld a, [wd585] + ld a, [wTempPrevMap] cp MAP_TCG_AIRPORT jr z, .asm_4054b cp MAP_OVERHEAD_ISLANDS @@ -1182,7 +1182,7 @@ TCGIslandLocationPositions: INCLUDE "data/tcg_island_paths.asm" DoGRBlimpMovement_TCGIsland: - ld a, [wd584] + ld a, [wPrevMap] cp MAP_TCG_AIRPORT jr z, .asm_40cfa @@ -1257,7 +1257,7 @@ DoGRBlimpMovement_TCGIsland: jr .finish .done_movement - ld a, [wd585] + ld a, [wTempPrevMap] cp MAP_OVERHEAD_ISLANDS jr z, .asm_40d71 ; unnecessary cp .asm_40d71 @@ -1268,9 +1268,9 @@ DoGRBlimpMovement_TCGIsland: ret ; fades out to white or black -; dependent on wd585 +; dependent on wTempPrevMap .FadeOut: - ld a, [wd585] + ld a, [wTempPrevMap] cp MAP_OVERHEAD_ISLANDS jr nz, .to_black ; to white @@ -3203,7 +3203,7 @@ Func_41c57: Func_41c60: farcall ClearwD986 - ld a, [wd584] + ld a, [wPrevMap] cp OVERWORLD_MAP_GR jr nz, .asm_41c9f ld a, OWMODE_0A @@ -3230,7 +3230,7 @@ Func_41c60: ret Func_41ca1: - ld a, [wd585] + ld a, [wTempPrevMap] cp OVERWORLD_MAP_GR jr z, .asm_41caa scf diff --git a/src/home/unsorted.asm b/src/home/unsorted.asm index d6fb17a..c8da50a 100644 --- a/src/home/unsorted.asm +++ b/src/home/unsorted.asm @@ -313,12 +313,12 @@ LoadNPCs:: Func_3234:: ldh a, [hBankROM] push af - call Func_323f + call .Script pop af call BankswitchROM ret -Func_323f:: +.Script: ld hl, wd592 ld a, [hl] call BankswitchROM @@ -482,7 +482,7 @@ HandleOverworldPlayerMoveInput:: farcall Func_10e3c or a jr z, .set_carry - ld a, OWMODE_05 + ld a, OWMODE_MOVE ld [wOverworldMode], a ld a, [wPlayerOWObject] farcall StartOWObjectAnimation @@ -573,7 +573,7 @@ Func_33a3:: ret Func_33b7:: - ld a, [wd586] + ld a, [wCurMap] ld c, a ld b, $00 sla c diff --git a/src/wram.asm b/src/wram.asm index 87fd2d9..8f08d36 100644 --- a/src/wram.asm +++ b/src/wram.asm @@ -2363,14 +2363,13 @@ wOverworldMode:: ; d582 wOverworldTransition:: ; d583 ds $1 -; MAP_* constant -wd584:: ; d584 +wPrevMap:: ; d584 ds $1 -wd585:: ; d585 +wTempPrevMap:: ; d585 ds $1 -wd586:: ; d586 +wCurMap:: ; d586 ds $1 ; OWMAP_* constant diff --git a/tools/map_header_extractor.py b/tools/map_header_extractor.py index bfeb8d7..e540ff3 100644 --- a/tools/map_header_extractor.py +++ b/tools/map_header_extractor.py @@ -20,7 +20,7 @@ script_types = [ "OWMODE_02", "OWMODE_03", "OWMODE_04", - "OWMODE_05", + "OWMODE_MOVE", "OWMODE_STEP_EVENT", "OWMODE_NPC_POSITION", "OWMODE_INTERACT",