From 0b9a92c472685283bfa7787f6da99e33d4e3fdb2 Mon Sep 17 00:00:00 2001 From: Misty Violet Date: Mon, 23 Oct 2023 03:42:22 -0400 Subject: [PATCH] Bridge Code --- data/maps/scenes.asm | 1 + home/map.asm | 3 +++ macros/asserts.asm | 10 ++++++++++ macros/code.asm | 8 ++++++++ macros/scripts/events.asm | 9 +++++++++ maps/CeruleanCave1F.asm | 42 +++++++++++++++++++++++++++++++++++++++ ram/wram.asm | 6 +++++- 7 files changed, 78 insertions(+), 1 deletion(-) diff --git a/data/maps/scenes.asm b/data/maps/scenes.asm index 9066520..879e3bd 100644 --- a/data/maps/scenes.asm +++ b/data/maps/scenes.asm @@ -84,4 +84,5 @@ MapScenes:: scene_var MOUNT_MOON_SQUARE, wMountMoonSquareSceneID scene_var MOBILE_TRADE_ROOM, wMobileTradeRoomSceneID scene_var MOBILE_BATTLE_ROOM, wMobileBattleRoomSceneID + scene_var CERULEAN_CAVE_1F, wCeruleanCave1FSceneID db -1 ; end diff --git a/home/map.asm b/home/map.asm index 47c0db8..8a685c9 100644 --- a/home/map.asm +++ b/home/map.asm @@ -1503,6 +1503,9 @@ SaveScreen_LoadConnection:: jr nz, .row ret +GenericFinishBridge:: + ld a, 1 + ld [wOverworldDelaySkip], a GetMovementPermissions:: xor a ld [wTilePermissions], a diff --git a/macros/asserts.asm b/macros/asserts.asm index f0fa52a..c4b8df6 100644 --- a/macros/asserts.asm +++ b/macros/asserts.asm @@ -63,3 +63,13 @@ MACRO end_water_wildmons assert WATER_WILDDATA_LENGTH == @ - {CURRENT_WATER_WILDMONS_LABEL}, \ "def_water_wildmons {CURRENT_WATER_WILDMONS_MAP}: expected {d:WATER_WILDDATA_LENGTH} bytes" ENDM + +MACRO jmp + if _NARG == 1 + jp \1 + else + jp \1, \2 + shift + endc + assert warn, (\1) - @ > 127 || (\1) - @ < -129, "jp can be jr" +ENDM diff --git a/macros/code.asm b/macros/code.asm index 6856b1d..4e93302 100644 --- a/macros/code.asm +++ b/macros/code.asm @@ -94,3 +94,11 @@ if _NARG == 0 sine_table 32 endc ENDM + +MACRO changebridgeblock + ; lb de, \1 + 4, \2 + 4 + ; call GetBlockLocation + ld hl, wOverworldMapBlocks + (\2 / 2 + 3) * (\4_WIDTH + 6) + \1 / 2 + 3 + ; hard-coding the above calculation for efficiency + ld [hl], \3 +ENDM diff --git a/macros/scripts/events.asm b/macros/scripts/events.asm index 25a1395..38abf2f 100644 --- a/macros/scripts/events.asm +++ b/macros/scripts/events.asm @@ -1077,4 +1077,13 @@ MACRO checkmaplockedmons db checkmaplockedmons_command ENDM +MACRO callthisasm + ; "callasm .asm\@" causes a "File stack dump too long, got truncated" + ; error due to the long filename:linenumber trace of nested macros. + db callasm_command + dba .asm\@ + end +.asm\@ +ENDM + DEF NUM_EVENT_COMMANDS EQU const_value diff --git a/maps/CeruleanCave1F.asm b/maps/CeruleanCave1F.asm index 1b3823c..56dd1cb 100644 --- a/maps/CeruleanCave1F.asm +++ b/maps/CeruleanCave1F.asm @@ -2,6 +2,48 @@ CeruleanCave1F_MapScripts: def_scene_scripts def_callbacks +CeruleanCave1FTileScript: + checkscene + iftrue .underfoot + callasm CeruleanCave1F_OverheadBridgeAsm + endcallback + +.underfoot: + callasm CeruleanCave1F_UnderfootBridgeAsm + endcallback + +CeruleanCave1F_OverheadBridgeAsm: + changebridgeblock 20, 2, $ea, CERULEAN_CAVE_1F + changebridgeblock 22, 2, $eb, CERULEAN_CAVE_1F + changebridgeblock 20, 4, $ee, CERULEAN_CAVE_1F + changebridgeblock 22, 4, $ef, CERULEAN_CAVE_1F + changebridgeblock 20, 6, $59, CERULEAN_CAVE_1F + changebridgeblock 22, 6, $5b, CERULEAN_CAVE_1F + jmp BufferScreen + +CeruleanCave1F_UnderfootBridgeAsm: + changebridgeblock 20, 2, $e8, CERULEAN_CAVE_1F + changebridgeblock 22, 2, $e9, CERULEAN_CAVE_1F + changebridgeblock 20, 4, $ec, CERULEAN_CAVE_1F + changebridgeblock 22, 4, $ed, CERULEAN_CAVE_1F + changebridgeblock 20, 6, $55, CERULEAN_CAVE_1F + changebridgeblock 22, 6, $57, CERULEAN_CAVE_1F + jmp BufferScreen + +CeruleanCave1FBridgeOverheadTrigger: + callasm CeruleanCave1F_OverheadBridgeAsm + callthisasm + xor a + jr CeruleanCave1F_FinishBridge + +CeruleanCave1FBridgeUnderfootTrigger: + callasm CeruleanCave1F_UnderfootBridgeAsm + callthisasm + ld a, $1 +CeruleanCave1F_FinishBridge: + ld [wWalkingOnBridge], a + ld [wCeruleanCave1FSceneID], a ; setscene a + jmp GenericFinishBridge CeruleanCave1F_MapEvents: def_warp_events diff --git a/ram/wram.asm b/ram/wram.asm index 57e7f35..0ce9d35 100644 --- a/ram/wram.asm +++ b/ram/wram.asm @@ -1838,7 +1838,7 @@ wBufferMon:: party_struct wBufferMon ds 8 wMonOrItemNameBuffer:: ds NAME_LENGTH ds NAME_LENGTH - +wOverworldDelaySkip:: db SECTION UNION "Miscellaneous WRAM 1", WRAMX @@ -3120,6 +3120,7 @@ wFastShipB1FSceneID:: db wMountMoonSquareSceneID:: db wMobileTradeRoomSceneID:: db wMobileBattleRoomSceneID:: db +wCeruleanCave1FSceneID:: db ds 49 @@ -3235,6 +3236,9 @@ wdc41:: ds 1 wdc42:: ds 8 wBuenasPassword:: db wBlueCardBalance:: db + +wWalkingOnBridge:: db + wDailyRematchFlags:: ds 4 wDailyPhoneItemFlags:: ds 4 wDailyPhoneTimeOfDayFlags:: ds 4