From d0ef40a60044d4dc69656de670c74b46973aaff7 Mon Sep 17 00:00:00 2001 From: Pokeglitch Date: Fri, 15 Jun 2018 11:37:36 -0400 Subject: Added constants --- constants.asm | 1 + constants/map_data_constants.asm | 5 ++++- constants/script_constants.asm | 15 +++++++++++++++ engine/events/overworld.asm | 23 +++++++++++++---------- engine/overworld/spawn_points.asm | 2 +- 5 files changed, 34 insertions(+), 12 deletions(-) create mode 100755 constants/script_constants.asm diff --git a/constants.asm b/constants.asm index 88dd7ee..c559622 100644 --- a/constants.asm +++ b/constants.asm @@ -25,6 +25,7 @@ INCLUDE "constants/map_constants.asm" INCLUDE "constants/map_setup_constants.asm" INCLUDE "constants/tileset_constants.asm" INCLUDE "constants/map_data_constants.asm" +INCLUDE "constants/script_constants.asm" INCLUDE "constants/serial_constants.asm" diff --git a/constants/map_data_constants.asm b/constants/map_data_constants.asm index ee9823e..ac9908a 100644 --- a/constants/map_data_constants.asm +++ b/constants/map_data_constants.asm @@ -10,4 +10,7 @@ ; SpawnPoints indexes (see data/maps/spawn_points.asm) const_value = -1 - const SPAWN_N_A \ No newline at end of file + const SPAWN_N_A + +; size of each spawn point data +SPAWN_POINT_SIZE EQU 4 \ No newline at end of file diff --git a/constants/script_constants.asm b/constants/script_constants.asm new file mode 100755 index 0000000..1736d36 --- /dev/null +++ b/constants/script_constants.asm @@ -0,0 +1,15 @@ + +; Teleport Scripts + const_def + const SCRIPT_TRY_TELEPORT ; 00 + const SCRIPT_DO_TELEPORT ; 01 + const SCRIPT_FAIL_TELEPORT ; 02 + const SCRIPT_CHECK_SPAWN_TELEPORT ; 03 + +; Flags +SCRIPT_FINISHED_FLAG EQU 7 + +; Masks/Return Values +SCRIPT_SUCCESS EQU $f +SCRIPT_FAIL EQU 0 +SCRIPT_FINISHED EQU 1 << SCRIPT_FINISHED_FLAG \ No newline at end of file diff --git a/engine/events/overworld.asm b/engine/events/overworld.asm index da7c15b..3090d1b 100755 --- a/engine/events/overworld.asm +++ b/engine/events/overworld.asm @@ -2,18 +2,21 @@ INCLUDE "constants.asm" SECTION "TeleportFunction", ROMX[$52db], BANK[$03] +; Sets wFieldMoveSucceeded to $f if successful, $0 if not TeleportFunction: ; 03:52db xor a ld [wFieldMoveScriptID], a .loop ld a, [wFieldMoveScriptID] - bit 7, a + bit SCRIPT_FINISHED_FLAG, a jr nz, .finish ld hl, .JumpTable call CallJumptable jr .loop + +; Finish by returning only the low nibble .finish - and $7f + and $FF - SCRIPT_FINISHED ld [wFieldMoveSucceeded], a ret @@ -29,11 +32,11 @@ TeleportFunction: ; 03:52db jr z, .success cp ROUTE jr z, .success - ld a, $02 + ld a, SCRIPT_FAIL_TELEPORT ld [wFieldMoveScriptID], a ret .success - ld a, $03 + ld a, SCRIPT_CHECK_SPAWN_TELEPORT ld [wFieldMoveScriptID], a ret @@ -46,40 +49,40 @@ TeleportFunction: ; 03:52db jr c, .not_spawn ld hl, .Text_CantFindDestination call MenuTextBoxBackup - ld a, $80 + ld a, SCRIPT_FINISHED | SCRIPT_FAIL ld [wFieldMoveScriptID], a ret .not_spawn ld a, c ld [wDefaultSpawnpoint], a - ld a, $01 + ld a, SCRIPT_DO_TELEPORT ld [wFieldMoveScriptID], a ret .Text_CantFindDestination: text "とびさきが みつかりません" - para "" + para done .DoTeleport: ; 03:534b ldh a, [hROMBank] ld hl, .TeleportScript call QueueScript - ld a, $8f + ld a, SCRIPT_FINISHED | SCRIPT_SUCCESS ld [wFieldMoveScriptID], a ret .FailTeleport: ; 03:5359 ld hl, .Text_CantUseHere call MenuTextBoxBackup - ld a, $80 + ld a, SCRIPT_FINISHED | SCRIPT_FAIL ld [wFieldMoveScriptID], a scf ret .Text_CantUseHere: text "ここでは つかえません!" - para "" + para done .TeleportScript: ; 03:5375 diff --git a/engine/overworld/spawn_points.asm b/engine/overworld/spawn_points.asm index 17c2949..81b04b0 100755 --- a/engine/overworld/spawn_points.asm +++ b/engine/overworld/spawn_points.asm @@ -46,7 +46,7 @@ IsSpawnPoint: ; 03:47b6 jr z, .succeed .next push bc - ld bc, 4 + ld bc, SPAWN_POINT_SIZE add hl, bc pop bc inc c -- cgit v1.2.3