From d001ced41b53271373753de835a9c3b3413dc318 Mon Sep 17 00:00:00 2001 From: vulcandth Date: Thu, 13 Jul 2023 20:27:56 -0500 Subject: Add macros, constants, and labels for map scripts and text (#367) This introduces `def_script_pointers`, `def_text_pointers`, and `object_const_def` macros, and applies them to all maps. Most other map labels have also been identified. --- scripts/ViridianMart.asm | 68 +++++++++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 32 deletions(-) (limited to 'scripts/ViridianMart.asm') diff --git a/scripts/ViridianMart.asm b/scripts/ViridianMart.asm index f71cc6ef..2e78a036 100644 --- a/scripts/ViridianMart.asm +++ b/scripts/ViridianMart.asm @@ -1,11 +1,11 @@ ViridianMart_Script: - call ViridianMartScript_1d47d + call ViridianMartCheckParcelDeliveredScript call EnableAutoTextBoxDrawing ld hl, ViridianMart_ScriptPointers ld a, [wViridianMartCurScript] jp CallFunctionInTable -ViridianMartScript_1d47d: +ViridianMartCheckParcelDeliveredScript: CheckEvent EVENT_OAK_GOT_PARCEL jr nz, .delivered_parcel ld hl, ViridianMart_TextPointers @@ -20,76 +20,80 @@ ViridianMartScript_1d47d: ret ViridianMart_ScriptPointers: - dw ViridianMartScript0 - dw ViridianMartScript1 - dw ViridianMartScript2 + def_script_pointers + dw_const ViridianMartDefaultScript, SCRIPT_VIRIDIANMART_DEFAULT + dw_const ViridianMartOaksParcelScript, SCRIPT_VIRIDIANMART_OAKS_PARCEL + dw_const ViridianMartNoopScript, SCRIPT_VIRIDIANMART_NOOP -ViridianMartScript0: +ViridianMartDefaultScript: call UpdateSprites - ld a, $4 + ld a, TEXT_VIRIDIANMART_CLERK_YOU_CAME_FROM_PALLET_TOWN ldh [hSpriteIndexOrTextID], a call DisplayTextID ld hl, wSimulatedJoypadStatesEnd - ld de, RLEMovement1d4bb + ld de, .PlayerMovement call DecodeRLEList dec a ld [wSimulatedJoypadStatesIndex], a call StartSimulatingJoypadStates - ld a, $1 + ld a, SCRIPT_VIRIDIANMART_OAKS_PARCEL ld [wViridianMartCurScript], a ret -RLEMovement1d4bb: +.PlayerMovement: db D_LEFT, 1 db D_UP, 2 db -1 ; end -ViridianMartScript1: +ViridianMartOaksParcelScript: ld a, [wSimulatedJoypadStatesIndex] and a ret nz call Delay3 - ld a, $5 + ld a, TEXT_VIRIDIANMART_CLERK_PARCEL_QUEST ldh [hSpriteIndexOrTextID], a call DisplayTextID lb bc, OAKS_PARCEL, 1 call GiveItem SetEvent EVENT_GOT_OAKS_PARCEL - ld a, $2 + ld a, SCRIPT_VIRIDIANMART_NOOP ld [wViridianMartCurScript], a ; fallthrough -ViridianMartScript2: +ViridianMartNoopScript: ret ViridianMart_TextPointers: - dw ViridianMartText1 - dw ViridianMartText2 - dw ViridianMartText3 - dw ViridianMartText4 - dw ViridianMartText5 + dw ViridianMartClerkSayHiToOakText + dw ViridianMartYoungsterText + dw ViridianMartCooltrainerMText + const_def 4 + dw_const ViridianMartClerkYouCameFromPalletTownText, TEXT_VIRIDIANMART_CLERK_YOU_CAME_FROM_PALLET_TOWN + dw_const ViridianMartClerkParcelQuestText, TEXT_VIRIDIANMART_CLERK_PARCEL_QUEST ViridianMart_TextPointers2: - dw ViridianCashierText - dw ViridianMartText2 - dw ViridianMartText3 + ; This becomes the primary text pointers table when Oak's parcel has been delivered. + def_text_pointers + dw_const ViridianMartClerkText, TEXT_VIRIDIANMART_CLERK + dw_const ViridianMartYoungsterText, TEXT_VIRIDIANMART_YOUNGSTER + dw_const ViridianMartCooltrainerMText, TEXT_VIRIDIANMART_COOLTRAINER_M -ViridianMartText1: - text_far _ViridianMartText1 +ViridianMartClerkSayHiToOakText: + text_far _ViridianMartClerkSayHiToOakText text_end -ViridianMartText4: - text_far _ViridianMartText4 +ViridianMartClerkYouCameFromPalletTownText: + text_far _ViridianMartClerkYouCameFromPalletTownText text_end -ViridianMartText5: - text_far ViridianMartParcelQuestText +ViridianMartClerkParcelQuestText: + text_far _ViridianMartClerkParcelQuestText sound_get_key_item text_end -ViridianMartText2: - text_far _ViridianMartText2 +ViridianMartYoungsterText: + text_far _ViridianMartYoungsterText text_end -ViridianMartText3: - text_far _ViridianMartText3 +ViridianMartCooltrainerMText: + text_far _ViridianMartCooltrainerMText text_end -- cgit v1.3.1-sl0p From 83b373ad734fb0bf4b476b0f38dbeec8ea205f19 Mon Sep 17 00:00:00 2001 From: Linus Unnebäck Date: Fri, 17 Nov 2023 19:50:27 +0100 Subject: Add constants for wMapConnections bits and group map header wram labels * Add constants for wMapConnections bits * Apply Vulcandth and Rangi42 feedback --------- Co-authored-by: vulcandth --- constants/map_data_constants.asm | 7 +++++++ engine/menus/save.asm | 2 +- home/overworld.asm | 21 ++++++++++----------- home/predef_text.asm | 10 +++++----- home/text_script.asm | 2 +- ram/wram.asm | 15 +++++++-------- scripts/OaksLab.asm | 4 ++-- scripts/ViridianMart.asm | 4 ++-- 8 files changed, 35 insertions(+), 30 deletions(-) (limited to 'scripts/ViridianMart.asm') diff --git a/constants/map_data_constants.asm b/constants/map_data_constants.asm index 1877e6a0..b28b3d79 100644 --- a/constants/map_data_constants.asm +++ b/constants/map_data_constants.asm @@ -3,6 +3,13 @@ DEF MAP_BORDER EQU 3 ; connection directions + const_def + const EAST_F + const WEST_F + const SOUTH_F + const NORTH_F + +; wCurMapConnections const_def shift_const EAST ; 1 shift_const WEST ; 2 diff --git a/engine/menus/save.asm b/engine/menus/save.asm index b74b9058..1857d6f5 100644 --- a/engine/menus/save.asm +++ b/engine/menus/save.asm @@ -372,7 +372,7 @@ ChangeBox:: call GetBoxSRAMLocation ld de, wBoxDataStart call CopyBoxToOrFromSRAM ; copy new box from SRAM to WRAM - ld hl, wMapTextPtr + ld hl, wCurMapTextPtr ld de, wChangeBoxSavedMapTextPointer ld a, [hli] ld [de], a diff --git a/home/overworld.asm b/home/overworld.asm index 1ebc794b..defa1728 100644 --- a/home/overworld.asm +++ b/home/overworld.asm @@ -910,9 +910,9 @@ LoadTileBlockMap:: add hl, bc ld c, MAP_BORDER add hl, bc ; this puts us past the (west) border - ld a, [wMapDataPtr] ; tile map pointer + ld a, [wCurMapDataPtr] ; tile map pointer ld e, a - ld a, [wMapDataPtr + 1] + ld a, [wCurMapDataPtr + 1] ld d, a ; de = tile map pointer ld a, [wCurMapHeight] ld b, a @@ -1966,7 +1966,7 @@ RunMapScript:: call RunNPCMovementScript ld a, [wCurMap] ; current map number call SwitchToMapRomBank ; change to the ROM bank the map's data is in - ld hl, wMapScriptPtr + ld hl, wCurMapScriptPtr ld a, [hli] ld h, [hl] ld l, a @@ -2035,9 +2035,8 @@ LoadMapHeader:: ld a, [hli] ld h, [hl] ld l, a ; hl = base of map header -; copy the first 10 bytes (the fixed area) of the map data to D367-D370 - ld de, wCurMapTileset - ld c, $0a + ld de, wCurMapHeader + ld c, wCurMapHeaderEnd - wCurMapHeader .copyFixedHeaderLoop ld a, [hli] ld [de], a @@ -2051,25 +2050,25 @@ LoadMapHeader:: ld [wWestConnectedMap], a ld [wEastConnectedMap], a ; copy connection data (if any) to WRAM - ld a, [wMapConnections] + ld a, [wCurMapConnections] ld b, a .checkNorth - bit 3, b + bit NORTH_F, b jr z, .checkSouth ld de, wNorthConnectionHeader call CopyMapConnectionHeader .checkSouth - bit 2, b + bit SOUTH_F, b jr z, .checkWest ld de, wSouthConnectionHeader call CopyMapConnectionHeader .checkWest - bit 1, b + bit WEST_F, b jr z, .checkEast ld de, wWestConnectionHeader call CopyMapConnectionHeader .checkEast - bit 0, b + bit EAST_F, b jr z, .getObjectDataPointer ld de, wEastConnectionHeader call CopyMapConnectionHeader diff --git a/home/predef_text.asm b/home/predef_text.asm index b494a2c8..1537ad5b 100644 --- a/home/predef_text.asm +++ b/home/predef_text.asm @@ -7,7 +7,7 @@ PrintPredefTextID:: call DisplayTextID RestoreMapTextPointer:: - ld hl, wMapTextPtr + ld hl, wCurMapTextPtr ldh a, [hSavedMapTextPtr] ld [hli], a ldh a, [hSavedMapTextPtr + 1] @@ -15,14 +15,14 @@ RestoreMapTextPointer:: ret SetMapTextPointer:: - ld a, [wMapTextPtr] + ld a, [wCurMapTextPtr] ldh [hSavedMapTextPtr], a - ld a, [wMapTextPtr + 1] + ld a, [wCurMapTextPtr + 1] ldh [hSavedMapTextPtr + 1], a ld a, l - ld [wMapTextPtr], a + ld [wCurMapTextPtr], a ld a, h - ld [wMapTextPtr + 1], a + ld [wCurMapTextPtr + 1], a ret INCLUDE "data/text_predef_pointers.asm" diff --git a/home/text_script.asm b/home/text_script.asm index 9e1ba275..ceae1a0a 100644 --- a/home/text_script.asm +++ b/home/text_script.asm @@ -13,7 +13,7 @@ DisplayTextID:: .skipSwitchToMapBank ld a, 30 ; half a second ldh [hFrameCounter], a ; used as joypad poll timer - ld hl, wMapTextPtr + ld hl, wCurMapTextPtr ld a, [hli] ld h, [hl] ld l, a ; hl = map text pointer diff --git a/ram/wram.asm b/ram/wram.asm index df286676..753a9678 100644 --- a/ram/wram.asm +++ b/ram/wram.asm @@ -1795,17 +1795,16 @@ wLastMap:: db wUnusedD366:: db +wCurMapHeader:: wCurMapTileset:: db - -; blocks -wCurMapHeight:: db +wCurMapHeight:: db wCurMapWidth:: db +wCurMapDataPtr:: dw +wCurMapTextPtr:: dw +wCurMapScriptPtr:: dw +wCurMapConnections:: db +wCurMapHeaderEnd:: -wMapDataPtr:: dw -wMapTextPtr:: dw -wMapScriptPtr:: dw - -wMapConnections:: db wNorthConnectionHeader:: map_connection_struct wNorth wSouthConnectionHeader:: map_connection_struct wSouth wWestConnectionHeader:: map_connection_struct wWest diff --git a/scripts/OaksLab.asm b/scripts/OaksLab.asm index 407ee3e5..30ee93ed 100644 --- a/scripts/OaksLab.asm +++ b/scripts/OaksLab.asm @@ -715,9 +715,9 @@ OaksLabCalcRivalMovementScript: OaksLabLoadTextPointers2Script: ld hl, OaksLab_TextPointers2 ld a, l - ld [wMapTextPtr], a + ld [wCurMapTextPtr], a ld a, h - ld [wMapTextPtr + 1], a + ld [wCurMapTextPtr + 1], a ret OaksLab_TextPointers: diff --git a/scripts/ViridianMart.asm b/scripts/ViridianMart.asm index 2e78a036..8f91afd6 100644 --- a/scripts/ViridianMart.asm +++ b/scripts/ViridianMart.asm @@ -14,9 +14,9 @@ ViridianMartCheckParcelDeliveredScript: ld hl, ViridianMart_TextPointers2 .done ld a, l - ld [wMapTextPtr], a + ld [wCurMapTextPtr], a ld a, h - ld [wMapTextPtr+1], a + ld [wCurMapTextPtr+1], a ret ViridianMart_ScriptPointers: -- cgit v1.3.1-sl0p