summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rwxr-xr-xengine/events/overworld.asm2
-rwxr-xr-xengine/overworld/spawn_points.asm60
2 files changed, 61 insertions, 1 deletions
diff --git a/engine/events/overworld.asm b/engine/events/overworld.asm
index 8a6d0f4..ec43e46 100755
--- a/engine/events/overworld.asm
+++ b/engine/events/overworld.asm
@@ -51,7 +51,7 @@ TeleportFunction: ; 03:52db
ret
.not_spawn
ld a, c
- ld [wDebugWarpSelection], a
+ ld [wDefaultSpawnpoint], a
ld a, $01
ld [wFieldMoveScriptID], a
ret
diff --git a/engine/overworld/spawn_points.asm b/engine/overworld/spawn_points.asm
new file mode 100755
index 0000000..17c2949
--- /dev/null
+++ b/engine/overworld/spawn_points.asm
@@ -0,0 +1,60 @@
+INCLUDE "constants.asm"
+
+SECTION "LoadSpawnPoint", ROMX[$4791], BANK[$03]
+
+LoadSpawnPoint: ; 03:4791
+; loads the spawn point in wDefaultSpawnpoint
+ push hl
+ push de
+ ld a, [wDefaultSpawnpoint]
+ and a
+ jr z, .skip
+ dec a
+ ld l, a
+ ld h, 0
+ add hl, hl
+ add hl, hl
+ ld de, SpawnPoints
+ add hl, de
+ ld a, [hli]
+ ld [wMapGroup], a
+ ld a, [hli]
+ ld [wMapId], a
+ ld a, [hli]
+ ld [wXCoord], a
+ ld a, [hli]
+ ld [wYCoord], a
+.skip
+ pop de
+ pop hl
+ ret
+
+IsSpawnPoint: ; 03:47b6
+; Checks if the map loaded in de is a spawn point.
+; Returns carry if it's a spawn point.
+ ld hl, SpawnPoints
+ ld c, 1
+.loop
+ ld a, [hl]
+ cp SPAWN_N_A
+ jr z, .fail
+ cp d
+ jr nz, .next
+ inc hl
+ ld a, [hld]
+ cp e
+ jr z, .succeed
+.next
+ push bc
+ ld bc, 4
+ add hl, bc
+ pop bc
+ inc c
+ jr .loop
+.fail
+ and a
+ ret
+.succeed
+ scf
+ ret
+