shithub: pokecrystal

Download patch

ref: fb88b2ccf8f0897f95d25b82f95444ec775aa917
parent: 8290f851fd97131d927a9702deee20b150d3eae3
author: PikalaxALT <PikalaxALT@gmail.com>
date: Mon Nov 16 06:53:26 EST 2015

Movement constants, script stack

--- a/constants/script_constants.asm
+++ b/constants/script_constants.asm
@@ -3,34 +3,34 @@
 LAST_TALKED EQU -2
 
 	const_def
-	const VAR_STRINGBUFFER2
-	const VAR_PARTYCOUNT
-	const VAR_BATTLERESULT
-	const VAR_BATTLETYPE
-	const VAR_TIMEOFDAY
-	const VAR_DEXCAUGHT
-	const VAR_DEXSEEN
-	const VAR_BADGES
-	const VAR_MOVEMENT
-	const VAR_FACING
-	const VAR_HOUR
-	const VAR_WEEKDAY
-	const VAR_MAPGROUP
-	const VAR_MAPNUMBER
-	const VAR_UNOWNCOUNT
-	const VAR_ROOFPALETTE
-	const VAR_BOXSPACE
-	const VAR_CONTESTMINUTES
-	const VAR_XCOORD
-	const VAR_YCOORD
-	const VAR_SPECIALPHONECALL
-	const VAR_15
-	const VAR_KURT_APRICORNS
-	const VAR_CALLERID
-	const VAR_BLUECARDBALANCE
-	const VAR_BUENASPASSWORD
-	const VAR_KENJI_BREAK
-NUM_VARS EQU const_value
+	const VAR_STRINGBUFFER2    ; 00
+	const VAR_PARTYCOUNT       ; 01
+	const VAR_BATTLERESULT     ; 02
+	const VAR_BATTLETYPE       ; 03
+	const VAR_TIMEOFDAY        ; 04
+	const VAR_DEXCAUGHT        ; 05
+	const VAR_DEXSEEN          ; 06
+	const VAR_BADGES           ; 07
+	const VAR_MOVEMENT         ; 08
+	const VAR_FACING           ; 09
+	const VAR_HOUR             ; 0a
+	const VAR_WEEKDAY          ; 0b
+	const VAR_MAPGROUP         ; 0c
+	const VAR_MAPNUMBER        ; 0d
+	const VAR_UNOWNCOUNT       ; 0e
+	const VAR_ROOFPALETTE      ; 0f
+	const VAR_BOXSPACE         ; 10
+	const VAR_CONTESTMINUTES   ; 11
+	const VAR_XCOORD           ; 12
+	const VAR_YCOORD           ; 13
+	const VAR_SPECIALPHONECALL ; 14
+	const VAR_15               ; 15
+	const VAR_KURT_APRICORNS   ; 16
+	const VAR_CALLERID         ; 17
+	const VAR_BLUECARDBALANCE  ; 18
+	const VAR_BUENASPASSWORD   ; 19
+	const VAR_KENJI_BREAK      ; 1a
+NUM_VARS EQU const_value       ; 1b
 
 RETVAR_STRBUF2 EQU (0 << 6)
 RETVAR_ADDR_DE EQU (1 << 6)
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -269,24 +269,24 @@
 
 	const_def
 	const STEP_TYPE_00
-	const STEP_TYPE_01
-	const STEP_TYPE_02 ; walking
-	const STEP_TYPE_03 ; stationary
+	const STEP_TYPE_STANDING
+	const STEP_TYPE_NPC_WALK
+	const STEP_TYPE_03
 	const STEP_TYPE_04
 	const STEP_TYPE_05
-	const STEP_TYPE_06
+	const STEP_TYPE_PLAYER_WALK
 	const STEP_TYPE_07
-	const STEP_TYPE_08
-	const STEP_TYPE_09
-	const STEP_TYPE_0A ; half step
-	const STEP_TYPE_0B ; bump
+	const STEP_TYPE_NPC_JUMP
+	const STEP_TYPE_PLAYER_JUMP
+	const STEP_TYPE_HALF_STEP
+	const STEP_TYPE_BUMP
 	const STEP_TYPE_TELEPORT_FROM
 	const STEP_TYPE_TELEPORT_TO
 	const STEP_TYPE_SKYFALL
 	const STEP_TYPE_0F
-	const STEP_TYPE_10
-	const STEP_TYPE_11
-	const STEP_TYPE_12
+	const STEP_TYPE_GOT_BITE
+	const STEP_TYPE_ROCK_SMASH
+	const STEP_TYPE_RETURN_DIG
 	const STEP_TYPE_13
 	const STEP_TYPE_14
 	const STEP_TYPE_15
@@ -297,14 +297,14 @@
 
 	const_def
 	const PERSON_ACTION_00
-	const PERSON_ACTION_01
-	const PERSON_ACTION_02
-	const PERSON_ACTION_03
-	const PERSON_ACTION_04
-	const PERSON_ACTION_05
-	const PERSON_ACTION_06
+	const PERSON_ACTION_STAND
+	const PERSON_ACTION_STEP
+	const PERSON_ACTION_BUMP
+	const PERSON_ACTION_SPIN
+	const PERSON_ACTION_SPIN_FLICKER
+	const PERSON_ACTION_FISHING
 	const PERSON_ACTION_07
-	const PERSON_ACTION_08
+	const PERSON_ACTION_EMOTE
 	const PERSON_ACTION_09
 	const PERSON_ACTION_0A
 	const PERSON_ACTION_0B
@@ -335,7 +335,7 @@
 	const FACING_11
 	const FACING_12
 	const FACING_13
-	const FACING_14
+	const FACING_EMOTE
 	const FACING_15
 	const FACING_16
 	const FACING_17
--- a/engine/battle_start.asm
+++ b/engine/battle_start.asm
@@ -27,7 +27,7 @@
 	ld [rSVBK], a
 
 	ld hl, wMapPals
-	ld bc, $0040
+	ld bc, 8 palettes
 	xor a
 	call ByteFill
 
@@ -308,9 +308,11 @@
 
 StartTrainerBattle_SetUpForWavyOutro: ; 8c3e8 (23:43e8)
 	callba Function5602
-	ld a, $5
+	ld a, $5 ; BANK(LYOverrides)
 	ld [rSVBK], a
+
 	call StartTrainerBattle_NextScene
+
 	ld a, $43
 	ld [hLCDStatCustom], a
 	xor a
@@ -342,8 +344,8 @@
 	ld d, [hl]
 	add [hl]
 	ld [hl], a
-	ld a, $90
-	ld bc, wd100
+	ld a, LYOverridesEnd - LYOverrides
+	ld bc, LYOverrides
 	ld e, $0
 
 .loop
@@ -364,7 +366,7 @@
 
 StartTrainerBattle_SetUpForSpinOutro: ; 8c43d (23:443d)
 	callba Function5602
-	ld a, $5
+	ld a, $5 ; BANK(LYOverrides)
 	ld [rSVBK], a
 	call StartTrainerBattle_NextScene
 	xor a
@@ -507,7 +509,7 @@
 
 StartTrainerBattle_SetUpForRandomScatterOutro: ; 8c578 (23:4578)
 	callba Function5602
-	ld a, $5
+	ld a, $5 ; BANK(LYOverrides)
 	ld [rSVBK], a
 	call StartTrainerBattle_NextScene
 	ld a, $10
@@ -739,10 +741,12 @@
 	push af
 	ld a, $5
 	ld [rSVBK], a
+
 	ld hl, LYOverrides
 	call .wipe
 	ld hl, LYOverridesBackup
 	call .wipe
+
 	pop af
 	ld [rSVBK], a
 	ret
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -8,44 +8,44 @@
 	dn \6, 0
 	endm
 	; function,                                              facing, action,              flags1, flags2, palette flags
-	sprite_movement_data SPRITEMOVEFN_00,                    DOWN,   PERSON_ACTION_01,    $02,    $00,    %0000 ; 00
-	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   PERSON_ACTION_01,    $0c,    $00,    %0000 ; 01
-	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY,        DOWN,   PERSON_ACTION_01,    $00,    $00,    %0000 ; 02
-	sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN,      DOWN,   PERSON_ACTION_01,    $00,    $00,    %0000 ; 03
-	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y,         DOWN,   PERSON_ACTION_01,    $00,    $00,    %0000 ; 04
-	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X,         DOWN,   PERSON_ACTION_01,    $00,    $00,    %0000 ; 05
-	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   PERSON_ACTION_01,    $00,    $00,    %0000 ; 06
-	sprite_movement_data SPRITEMOVEFN_STANDING,              UP,     PERSON_ACTION_01,    $00,    $00,    %0000 ; 07
-	sprite_movement_data SPRITEMOVEFN_STANDING,              LEFT,   PERSON_ACTION_01,    $00,    $00,    %0000 ; 08
-	sprite_movement_data SPRITEMOVEFN_STANDING,              RIGHT,  PERSON_ACTION_01,    $00,    $00,    %0000 ; 09
-	sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN,      DOWN,   PERSON_ACTION_01,    $00,    $00,    %0000 ; 0a
-	sprite_movement_data SPRITEMOVEFN_OBEY_DPAD,             DOWN,   PERSON_ACTION_01,    $02,    $00,    %0000 ; 0b
-	sprite_movement_data SPRITEMOVEFN_08,                    DOWN,   PERSON_ACTION_01,    $00,    $00,    %0000 ; 0c
-	sprite_movement_data SPRITEMOVEFN_09,                    DOWN,   PERSON_ACTION_01,    $00,    $00,    %0000 ; 0d
-	sprite_movement_data SPRITEMOVEFN_0A,                    DOWN,   PERSON_ACTION_01,    $00,    $00,    %0000 ; 0e
-	sprite_movement_data SPRITEMOVEFN_0B,                    DOWN,   PERSON_ACTION_01,    $00,    $00,    %0000 ; 0f
-	sprite_movement_data SPRITEMOVEFN_0C,                    DOWN,   PERSON_ACTION_01,    $00,    $00,    %0000 ; 10
-	sprite_movement_data SPRITEMOVEFN_0D,                    DOWN,   PERSON_ACTION_01,    $00,    $00,    %0000 ; 11
-	sprite_movement_data SPRITEMOVEFN_0E,                    DOWN,   PERSON_ACTION_01,    $00,    $00,    %0000 ; 12
-	sprite_movement_data SPRITEMOVEFN_FOLLOW,                DOWN,   PERSON_ACTION_01,    $02,    $00,    %0000 ; 13
-	sprite_movement_data SPRITEMOVEFN_SCRIPTED,              DOWN,   PERSON_ACTION_01,    $02,    $00,    %0000 ; 14
+	sprite_movement_data SPRITEMOVEFN_00,                    DOWN,   PERSON_ACTION_STAND,    $02,    $00,    %0000 ; 00
+	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   PERSON_ACTION_STAND,    $0c,    $00,    %0000 ; 01
+	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY,        DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 02
+	sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN,      DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 03
+	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y,         DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 04
+	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X,         DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 05
+	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 06
+	sprite_movement_data SPRITEMOVEFN_STANDING,              UP,     PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 07
+	sprite_movement_data SPRITEMOVEFN_STANDING,              LEFT,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 08
+	sprite_movement_data SPRITEMOVEFN_STANDING,              RIGHT,  PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 09
+	sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN,      DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 0a
+	sprite_movement_data SPRITEMOVEFN_OBEY_DPAD,             DOWN,   PERSON_ACTION_STAND,    $02,    $00,    %0000 ; 0b
+	sprite_movement_data SPRITEMOVEFN_08,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 0c
+	sprite_movement_data SPRITEMOVEFN_09,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 0d
+	sprite_movement_data SPRITEMOVEFN_0A,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 0e
+	sprite_movement_data SPRITEMOVEFN_0B,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 0f
+	sprite_movement_data SPRITEMOVEFN_0C,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 10
+	sprite_movement_data SPRITEMOVEFN_0D,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 11
+	sprite_movement_data SPRITEMOVEFN_0E,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 12
+	sprite_movement_data SPRITEMOVEFN_FOLLOW,                DOWN,   PERSON_ACTION_STAND,    $02,    $00,    %0000 ; 13
+	sprite_movement_data SPRITEMOVEFN_SCRIPTED,              DOWN,   PERSON_ACTION_STAND,    $02,    $00,    %0000 ; 14
 	sprite_movement_data SPRITEMOVEFN_BIG_SNORLAX,           DOWN,   PERSON_ACTION_09,    $2e,    $01,    %1100 ; 15
 	sprite_movement_data SPRITEMOVEFN_BOUNCE,                DOWN,   PERSON_ACTION_0A,    $2e,    $00,    %0000 ; 16
-	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   PERSON_ACTION_01,    $0c,    $00,    %0000 ; 17
-	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   PERSON_ACTION_01,    $2e,    $10,    %0000 ; 18
-	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   PERSON_ACTION_01,    $2e,    $00,    %0100 ; 19
-	sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT,        DOWN,   PERSON_ACTION_01,    $02,    $00,    %0000 ; 1a
+	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   PERSON_ACTION_STAND,    $0c,    $00,    %0000 ; 17
+	sprite_movement_data SPRITEMOVEFN_STANDING,              DOWN,   PERSON_ACTION_STAND,    $2e,    $10,    %0000 ; 18
+	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   PERSON_ACTION_STAND,    $2e,    $00,    %0100 ; 19
+	sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT,        DOWN,   PERSON_ACTION_STAND,    $02,    $00,    %0000 ; 1a
 	sprite_movement_data SPRITEMOVEFN_SHADOW,                DOWN,   PERSON_ACTION_00,    $8e,    $01,    %0000 ; 1b
-	sprite_movement_data SPRITEMOVEFN_EMOTE,                 DOWN,   PERSON_ACTION_08,    $8e,    $02,    %0000 ; 1c
+	sprite_movement_data SPRITEMOVEFN_EMOTE,                 DOWN,   PERSON_ACTION_EMOTE,    $8e,    $02,    %0000 ; 1c
 	sprite_movement_data SPRITEMOVEFN_SCREENSHAKE,           DOWN,   PERSON_ACTION_00,    $82,    $00,    %0000 ; 1d
-	sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT,   PERSON_ACTION_01,    $00,    $00,    %0000 ; 1e
-	sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE,        RIGHT,  PERSON_ACTION_01,    $00,    $00,    %0000 ; 1f
+	sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 1e
+	sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE,        RIGHT,  PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 1f
 	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   PERSON_ACTION_0C,    $2e,    $01,    %1100 ; 20
 	sprite_movement_data SPRITEMOVEFN_STRENGTH,              DOWN,   PERSON_ACTION_0D,    $2e,    $01,    %1100 ; 21
 	sprite_movement_data SPRITEMOVEFN_BOULDERDUST,           DOWN,   PERSON_ACTION_0E,    $8e,    $01,    %0000 ; 22
 	sprite_movement_data SPRITEMOVEFN_GRASS,                 DOWN,   PERSON_ACTION_0F,    $8e,    $02,    %0000 ; 23
-	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY,        DOWN,   PERSON_ACTION_01,    $00,    $00,    %0010 ; 24
-	sprite_movement_data SPRITEMOVEFN_00,                    DOWN,   PERSON_ACTION_01,    $00,    $00,    %0000 ; 25
+	sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY,        DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0010 ; 24
+	sprite_movement_data SPRITEMOVEFN_00,                    DOWN,   PERSON_ACTION_STAND,    $00,    $00,    %0000 ; 25
 ; 4357
 
 
@@ -167,7 +167,7 @@
 	bit 5, [hl]
 	jr nz, .bit5
 
-	cp STEP_TYPE_01
+	cp STEP_TYPE_STANDING
 	jr z, .one
 	jr .ok
 
@@ -186,7 +186,7 @@
 	ld a, [hl]
 	and a
 	ret z
-	cp STEP_TYPE_01
+	cp STEP_TYPE_STANDING
 	ret z
 
 .ok
@@ -246,22 +246,22 @@
 
 Pointers445f: ; 445f
 	dw SetFacingStanding, SetFacingStanding ; 00
-	dw Function44b5, SetFacingCurrent ; 01
-	dw Function44c1, SetFacingCurrent ; 02
-	dw Function4508, SetFacingCurrent ; 03
-	dw Function4529, SetFacingCurrent ; 04
-	dw Function4539, SetFacingStanding ; 05
-	dw Function456e, Function456e ; 06
-	dw Function457b, SetFacingStanding ; 07
-	dw Function4582, Function4582 ; 08
-	dw Function4589, Function4589 ; 09
-	dw Function4590, Function45a4 ; 0a
-	dw Function45ab, SetFacingCurrent ; 0c
-	dw Function45be, Function45be ; 0b
-	dw Function45c5, Function45c5 ; 0d
-	dw Function45da, SetFacingStanding ; 0e
-	dw Function45ed, SetFacingStanding ; 0f
-	dw Function44e4, SetFacingCurrent ; 10
+	dw Function44b5,      SetFacingCurrent ; 01 standing?
+	dw Function44c1,      SetFacingCurrent ; 02 walking?
+	dw Function4508,      SetFacingCurrent ; 03 bumping?
+	dw Function4529,      SetFacingCurrent ; 04
+	dw Function4539,      SetFacingStanding ; 05
+	dw Function456e,      Function456e ; 06
+	dw Function457b,      SetFacingStanding ; 07
+	dw Function4582,      Function4582 ; 08
+	dw Function4589,      Function4589 ; 09
+	dw Function4590,      Function45a4 ; 0a
+	dw Function45ab,      SetFacingCurrent ; 0c
+	dw Function45be,      Function45be ; 0b
+	dw Function45c5,      Function45c5 ; 0d
+	dw Function45da,      SetFacingStanding ; 0e
+	dw Function45ed,      SetFacingStanding ; 0f
+	dw Function44e4,      SetFacingCurrent ; 10
 ; 44a3
 
 SetFacingStanding: ; 44a3
@@ -444,10 +444,10 @@
 	ret
 ; 4582
 
-Function4582: ; 4582
+Function4582: ; 4582 emote
 	ld hl, OBJECT_FACING_STEP
 	add hl, bc
-	ld [hl], FACING_14
+	ld [hl], FACING_EMOTE
 	ret
 ; 4589
 
@@ -930,7 +930,7 @@
 	call Function467b
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_01
+	ld [hl], STEP_TYPE_STANDING
 	ret
 ; 47dd
 
@@ -1033,7 +1033,7 @@
 	call Function467b
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_01
+	ld [hl], PERSON_ACTION_STAND
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
 	ld [hl], STEP_TYPE_05
@@ -1206,7 +1206,7 @@
 	ld [hl], STANDING
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_01
+	ld [hl], PERSON_ACTION_STAND
 	ret
 ; 4958
 
@@ -1258,7 +1258,7 @@
 .MovementSpinRepeat: ; 499c
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_01
+	ld [hl], PERSON_ACTION_STAND
 	ld hl, OBJECT_RANGE
 	add hl, bc
 	ld a, [hl]
@@ -1354,7 +1354,7 @@
 	call ._MovementShadow_Grass_Emote_BoulderDust
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_08
+	ld [hl], PERSON_ACTION_EMOTE
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	ld [hl], 0
@@ -1500,9 +1500,9 @@
 	call Function463f
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_02
+	ld [hl], PERSON_ACTION_STEP
 
-	ld hl, wd4cf
+	ld hl, wCenteredObject
 	ld a, [hMapObjectIndexBuffer]
 	cp [hl]
 	jr z, .load_6
@@ -1515,7 +1515,7 @@
 .load_6
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_06
+	ld [hl], STEP_TYPE_PLAYER_WALK
 	ret
 
 .NewDuration: ; 4b17
@@ -1541,7 +1541,7 @@
 	ld [hl], STANDING
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_01
+	ld [hl], PERSON_ACTION_STAND
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
 	ld [hl], STEP_TYPE_03
@@ -1552,19 +1552,19 @@
 ; These pointers use OBJECT_STEP_TYPE.  See constants/sprite_constants.asm
 	dw Function47bc ; 00
 	dw Function47dd ; 01
-	dw Function4e2b ; 02
+	dw Function4e2b ; 02 npc walk
 	dw Function4ddd ; 03
 	dw Function4e21 ; 04
 	dw Function4e0c ; 05
-	dw Function4e56 ; 06
+	dw Function4e56 ; 06 player walk
 	dw Function4e47 ; 07
-	dw Function4b86 ; 08
-	dw Function4bbf ; 09
-	dw Function4e83 ; 0a
+	dw Function4b86 ; 08 npc jump step
+	dw Function4bbf ; 09 player jump step
+	dw Function4e83 ; 0a half step
 	dw Function4dff ; 0b
-	dw Function4c18 ; 0c
-	dw Function4c89 ; 0d
-	dw Function4d14 ; 0e
+	dw Function4c18 ; 0c teleport from
+	dw Function4c89 ; 0d teleport to
+	dw Function4d14 ; 0e skyfall
 	dw Function4ecd ; 0f
 	dw Function4d7e ; 10
 	dw Function4daf ; 11
@@ -1585,7 +1585,7 @@
 	ret nz
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_01
+	ld [hl], STEP_TYPE_STANDING
 	ret
 ; 4b86
 
@@ -1622,7 +1622,7 @@
 	call Function4600
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_01
+	ld [hl], STEP_TYPE_STANDING
 	ret
 ; 4bbf
 
@@ -1674,7 +1674,7 @@
 	call Function4600
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_01
+	ld [hl], STEP_TYPE_STANDING
 	ret
 ; 4c18
 
@@ -1698,7 +1698,7 @@
 Function4c32: ; 4c32
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_04
+	ld [hl], PERSON_ACTION_SPIN
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
@@ -1724,7 +1724,7 @@
 Function4c5d: ; 4c5d
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_04
+	ld [hl], PERSON_ACTION_SPIN
 	ld hl, OBJECT_31
 	add hl, bc
 	inc [hl]
@@ -1745,7 +1745,7 @@
 	ld [hl], 0
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_01
+	ld [hl], STEP_TYPE_STANDING
 	ret
 ; 4c89
 
@@ -1795,7 +1795,7 @@
 Function4cc9: ; 4cc9
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_04
+	ld [hl], PERSON_ACTION_SPIN
 	ld hl, OBJECT_31
 	add hl, bc
 	inc [hl]
@@ -1823,7 +1823,7 @@
 Function4cf5: ; 4cf5
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_04
+	ld [hl], PERSON_ACTION_SPIN
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
 	dec [hl]
@@ -1837,7 +1837,7 @@
 	ld [hl], 0
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_01
+	ld [hl], STEP_TYPE_STANDING
 	ret
 ; 4d14
 
@@ -1865,7 +1865,7 @@
 	ret nz
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_02
+	ld [hl], PERSON_ACTION_STEP
 	ld hl, OBJECT_STEP_FRAME
 	add hl, bc
 	ld [hl], 0
@@ -1902,7 +1902,7 @@
 	ld [hl], 0
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_01
+	ld [hl], STEP_TYPE_STANDING
 	ret
 ; 4d7e
 
@@ -1936,7 +1936,7 @@
 	ld [hl], 0
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_01
+	ld [hl], STEP_TYPE_STANDING
 	ret
 ; 4daf
 
@@ -1950,7 +1950,7 @@
 	add hl, bc
 	ld a, [hl]
 	and %00000001
-	ld a, PERSON_ACTION_01
+	ld a, PERSON_ACTION_STAND
 	jr z, .yes
 	ld a, PERSON_ACTION_00
 
@@ -1966,9 +1966,9 @@
 	add hl, bc
 	ld a, [hl]
 	and %00000001
-	ld a, PERSON_ACTION_04
+	ld a, PERSON_ACTION_SPIN
 	jr z, .yes
-	ld a, PERSON_ACTION_05
+	ld a, PERSON_ACTION_SPIN_FLICKER
 
 .yes
 	ld hl, OBJECT_ACTION
@@ -1987,7 +1987,7 @@
 	ret nz
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_01
+	ld [hl], STEP_TYPE_STANDING
 	ret
 ; 4df0
 
@@ -2009,7 +2009,7 @@
 	ret nz
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_01
+	ld [hl], STEP_TYPE_STANDING
 	ret
 ; 4e0c
 
@@ -2048,7 +2048,7 @@
 	ld [hl], STANDING
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_01
+	ld [hl], STEP_TYPE_STANDING
 	ret
 ; 4e47
 
@@ -2089,7 +2089,7 @@
 	ld [hl], STANDING
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_01
+	ld [hl], STEP_TYPE_STANDING
 	ret
 ; 4e83
 
@@ -2138,7 +2138,7 @@
 	ret nz
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_01
+	ld [hl], STEP_TYPE_STANDING
 	ret
 ; 4ecd
 
@@ -2170,7 +2170,7 @@
 	ld [hl], STANDING
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_01
+	ld [hl], STEP_TYPE_STANDING
 	ret
 ; 4f04
 
@@ -2302,7 +2302,7 @@
 	ld [hl], 0
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_01
+	ld [hl], STEP_TYPE_STANDING
 	ret
 ; 4fb2
 
@@ -2731,17 +2731,19 @@
 	ret
 ; 5602
 
-Function5602: ; 5602
-	call Function5645
-	ld a, 0
-	call Function5629
+Function5602: ; 5602, called at battle start
+	call Function5645 ; clear sprites
+	ld a, PLAYER
+	call Function5629 ; respawn player
+
 	ld a, [wd459]
 	bit 7, a
 	jr z, .ok
+
 	ld a, [hLastTalked]
 	and a
 	jr z, .ok
-	call Function5629
+	call Function5629 ; respawn opponent
 
 .ok
 	call _UpdateSprites
@@ -2749,9 +2751,9 @@
 ; 561d
 
 Function561d: ; 561d
-	call Function5645
-	ld a, 0
-	call Function5629
+	call Function5645 ; clear sprites
+	ld a, PLAYER
+	call Function5629 ; respawn player
 	call _UpdateSprites
 	ret
 ; 5629
@@ -2783,7 +2785,7 @@
 	ld bc, ObjectStructs
 .loop
 	ld [hMapObjectIndexBuffer], a
-	call Function5680
+	call SetFacing_Standing
 	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, bc
 	ld b, h
@@ -2799,9 +2801,9 @@
 	push bc
 	call Function56cd
 	pop bc
-	jr c, Function5680
+	jr c, SetFacing_Standing
 	call Function56a3
-	jr c, Function5680
+	jr c, SetFacing_Standing
 	call Function5688
 	callba Function4440
 	xor a
@@ -2810,13 +2812,13 @@
 
 Function5673: ; 5673
 	call Function56a3
-	jr c, Function5680
-	callba Function4440
+	jr c, SetFacing_Standing
+	callba Function4440 ; no need to farcall
 	xor a
 	ret
 ; 5680
 
-Function5680: ; 5680
+SetFacing_Standing: ; 5680
 	ld hl, OBJECT_FACING_STEP
 	add hl, bc
 	ld [hl], STANDING
--- a/engine/movement.asm
+++ b/engine/movement.asm
@@ -87,7 +87,7 @@
 	dw Movement_step_shake            ; 55
 	dw Movement_56                    ; 56
 	dw Movement_rock_smash            ; 57
-	dw Movement_return_dig                    ; 58
+	dw Movement_return_dig            ; 58
 	dw Movement_59                    ; 59
 ; 5129
 
@@ -129,7 +129,7 @@
 	ld [hl], a
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_04
+	ld [hl], PERSON_ACTION_SPIN
 	call GetMovementByte
 	ld hl, OBJECT_STEP_DURATION
 	add hl, bc
@@ -159,7 +159,7 @@
 	ld [hl], STANDING
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_12
+	ld [hl], STEP_TYPE_RETURN_DIG
 	ret
 ; 5189
 
@@ -166,10 +166,10 @@
 Movement_fish_got_bite: ; 5189
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_06
+	ld [hl], PERSON_ACTION_FISHING
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_10
+	ld [hl], STEP_TYPE_GOT_BITE
 	ret
 ; 5196
 
@@ -180,10 +180,10 @@
 	ld [hl], a
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_01
+	ld [hl], PERSON_ACTION_STAND
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_11
+	ld [hl], STEP_TYPE_ROCK_SMASH
 	ret
 ; 51ab
 
@@ -190,10 +190,10 @@
 Movement_fish_cast_rod: ; 51ab
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_06
+	ld [hl], PERSON_ACTION_FISHING
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_01
+	ld [hl], STEP_TYPE_STANDING
 	ret
 ; 51b8
 
@@ -219,7 +219,7 @@
 
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_01
+	ld [hl], STEP_TYPE_STANDING
 	ret
 ; 51db
 
@@ -264,7 +264,7 @@
 Movement_4b: ; 5210
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_01
+	ld [hl], PERSON_ACTION_STAND
 
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
@@ -325,7 +325,7 @@
 
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_01
+	ld [hl], PERSON_ACTION_STAND
 
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
@@ -341,11 +341,11 @@
 
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_0B
+	ld [hl], STEP_TYPE_BUMP
 
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_03
+	ld [hl], PERSON_ACTION_BUMP
 
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
@@ -457,7 +457,7 @@
 
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_01
+	ld [hl], PERSON_ACTION_STAND
 
 	ld hl, OBJECT_DIRECTION_WALKING
 	add hl, bc
@@ -732,11 +732,11 @@
 
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_02
+	ld [hl], PERSON_ACTION_STEP
 
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_0A
+	ld [hl], STEP_TYPE_HALF_STEP
 	ret
 ; 5412
 
@@ -745,7 +745,7 @@
 	call Function463f
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_02
+	ld [hl], PERSON_ACTION_STEP
 
 	ld hl, OBJECT_NEXT_TILE
 	add hl, bc
@@ -760,20 +760,20 @@
 	call ShakeGrass
 
 .skip_grass
-	ld hl, wd4cf
+	ld hl, wCenteredObject
 	ld a, [hMapObjectIndexBuffer]
 	cp [hl]
-	jr z, .step_type_06
+	jr z, .player
 
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_02
+	ld [hl], STEP_TYPE_NPC_WALK
 	ret
 
-.step_type_06
+.player
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_06
+	ld [hl], STEP_TYPE_PLAYER_WALK
 	ret
 ; 5446
 
@@ -783,22 +783,22 @@
 
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_04
+	ld [hl], PERSON_ACTION_SPIN
 
-	ld hl, wd4cf
+	ld hl, wCenteredObject
 	ld a, [hMapObjectIndexBuffer]
 	cp [hl]
-	jr z, .step_type_06
+	jr z, .player
 
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_02
+	ld [hl], STEP_TYPE_NPC_WALK
 	ret
 
-.step_type_06
+.player
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_06
+	ld [hl], STEP_TYPE_PLAYER_WALK
 	ret
 ; 5468
 
@@ -809,22 +809,22 @@
 
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_01
+	ld [hl], PERSON_ACTION_STAND
 
-	ld hl, wd4cf
+	ld hl, wCenteredObject
 	ld a, [hMapObjectIndexBuffer]
 	cp [hl]
-	jr z, .step_type_06
+	jr z, .player
 
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_02
+	ld [hl], STEP_TYPE_NPC_WALK
 	ret
 
-.step_type_06
+.player
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_06
+	ld [hl], STEP_TYPE_PLAYER_WALK
 	ret
 ; 548a
 
@@ -841,23 +841,23 @@
 
 	ld hl, OBJECT_ACTION
 	add hl, bc
-	ld [hl], PERSON_ACTION_02
+	ld [hl], PERSON_ACTION_STEP
 
 	call SpawnShadow
 
-	ld hl, wd4cf
+	ld hl, wCenteredObject
 	ld a, [hMapObjectIndexBuffer]
 	cp [hl]
-	jr z, .step_type_09
+	jr z, .player
 
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_08
+	ld [hl], STEP_TYPE_NPC_JUMP
 	ret
 
-.step_type_09
+.player
 	ld hl, OBJECT_STEP_TYPE
 	add hl, bc
-	ld [hl], STEP_TYPE_09
+	ld [hl], STEP_TYPE_PLAYER_JUMP
 	ret
 ; 54b8
--- a/engine/save.asm
+++ b/engine/save.asm
@@ -496,9 +496,9 @@
 ValidateSave: ; 14da9
 	ld a, BANK(s1_a008)
 	call GetSRAMBank
-	ld a, $63
+	ld a, 99
 	ld [s1_a008], a
-	ld a, $7f
+	ld a, " "
 	ld [s1_ad0f], a
 	jp CloseSRAM
 ; 14dbb
@@ -564,9 +564,9 @@
 ValidateBackupSave: ; 14e2d
 	ld a, BANK(s0_b208)
 	call GetSRAMBank
-	ld a, $63
+	ld a, 99
 	ld [s0_b208], a
-	ld a, $7f
+	ld a, " "
 	ld [s0_bf0f], a
 	call CloseSRAM
 	ret
@@ -661,7 +661,7 @@
 .corrupt
 	ld a, [Options]
 	push af
-	set 4, a
+	set NO_TEXT_SCROLL, a
 	ld [Options], a
 	ld hl, UnknownText_0x1529c
 	call PrintText
@@ -735,10 +735,10 @@
 	ld a, BANK(s1_a008)
 	call GetSRAMBank
 	ld a, [s1_a008]
-	cp $63
+	cp 99
 	jr nz, .nope
 	ld a, [s1_ad0f]
-	cp $7f
+	cp " "
 	jr nz, .nope
 	ld hl, sOptions
 	ld de, Options
@@ -757,10 +757,10 @@
 	ld a, BANK(s0_b208)
 	call GetSRAMBank
 	ld a, [s0_b208]
-	cp $63
+	cp 99
 	jr nz, .nope
 	ld a, [s0_bf0f]
-	cp $7f
+	cp " "
 	jr nz, .nope
 	ld hl, sBackupOptions
 	ld de, Options
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -241,7 +241,7 @@
 	dw Script_trainerclassname
 	dw Script_name
 	dw Script_wait
-	dw Script_unknown0xa9
+	dw Script_check_save
 ; 0x96e05
 
 StartScript: ; 0x96e05
@@ -415,10 +415,10 @@
 	call GetScriptByte
 	ld h, a
 	cp -1
-	jr nz, .done ; 0x96ec5 $11
+	jr nz, .done
 	ld a, l
 	cp -1
-	jr nz, .done ; 0x96eca $c
+	jr nz, .done
 	ld hl, wd44e
 	ld a, [hli]
 	ld b, a
@@ -456,7 +456,7 @@
 
 	call YesNoBox
 	ld a, 0
-	jr c, .no ; 0x96ef2 $2
+	jr c, .no
 	ld a, 1
 .no
 	ld [ScriptVar], a
@@ -567,12 +567,12 @@
 ; 0x96f76
 
 
-Function96f76: ; 96f76
+ret_96f76: ; 96f76
 	ret
 ; 96f77
 
 GiveItemScript: ; 96f77
-	callasm Function96f76
+	callasm ret_96f76
 	writetext ReceivedItemText
 	iffalse .Full
 	waitbutton
@@ -792,16 +792,16 @@
 ;     number (SingleByteParam)
 
 	call YesNoBox
-	jr c, .refused ; 0x970c1 $13
+	jr c, .refused
 	call GetScriptByte
 	ld c, a
 	callba AddPhoneNumber
-	jr c, .phonefull ; 0x970cd $3
+	jr c, .phonefull
 	xor a
-	jr .done ; 0x970d0 $9
+	jr .done
 .phonefull
 	ld a, 1
-	jr .done ; 0x970d4 $5
+	jr .done
 .refused
 	call GetScriptByte
 	ld a, 2
@@ -1196,7 +1196,7 @@
 	ld a, d
 	push de
 	call CheckObjectVisibility
-	jr c, .not_visible ; 0x97290 $27
+	jr c, .not_visible
 	ld hl, OBJECT_SPRITE
 	add hl, bc
 	ld a, [hl]
@@ -1207,13 +1207,13 @@
 	ld hl, OBJECT_FLAGS1
 	add hl, bc
 	bit 2, [hl]
-	jr nz, .not_visible ; 0x972a4 $13
+	jr nz, .not_visible
 	pop de
 	ld a, e
 	call SetSpriteDirection
 	ld hl, VramState
 	bit 6, [hl]
-	jr nz, .text_state ; 0x972b0 $3
+	jr nz, .text_state
 	call .DisableTextTiles
 .text_state
 	call UpdateSprites
@@ -1235,7 +1235,7 @@
 	dec bc
 	ld a, b
 	or c
-	jr nz, .loop ; 0x972cb $f8
+	jr nz, .loop
 	ret
 ; 0x972ce
 
@@ -1299,9 +1299,9 @@
 	ld d, [hl]
 	ld a, -1
 	cp e
-	jr nz, .okay ; 0x9731a $5
+	jr nz, .okay
 	cp d
-	jr nz, .okay ; 0x9731d $2
+	jr nz, .okay
 	xor a
 	ret
 .okay
@@ -1391,7 +1391,7 @@
 
 	call GetScriptByte
 	cp -1
-	jr nz, .not_var_emote ; 0x97389 $3
+	jr nz, .not_var_emote
 	ld a, [ScriptVar]
 .not_var_emote
 	ld c, a
@@ -1563,7 +1563,7 @@
 	ld a, [wBattleResult]
 	and $3f
 	cp $1
-	jr nz, .notblackedout ; 0x97466 $8
+	jr nz, .notblackedout
 	ld b, BANK(Script_BattleWhiteout)
 	ld hl, Script_BattleWhiteout
 	jp ScriptJump
@@ -1570,14 +1570,14 @@
 
 .notblackedout
 	bit 0, d
-	jr z, .was_wild ; 0x97472 $8
+	jr z, .was_wild
 	callba MomTriesToBuySomething
-	jr .done ; 0x9747a $12
+	jr .done
 
 .was_wild
 	ld a, [wBattleResult]
 	bit 7, a
-	jr z, .done ; 0x97481 $b
+	jr z, .done
 	ld b, BANK(Script_SpecialBillCall)
 	ld de, Script_SpecialBillCall
 	callba LoadScriptBDE
@@ -1643,12 +1643,18 @@
 	; fallthrough
 
 ScriptCall: ; 0x974cb
+; Bug: The script stack has a capacity of 5 scripts, yet there is
+; nothing to stop you from pushing a sixth script.  The high part
+; of the script address can then be overwritten by modifications
+; to ScriptDelay, causing the script to return to the rst/interrupt
+; space.
+
 	push de
-	ld hl, wd43c
+	ld hl, wScriptStackSize
 	ld e, [hl]
 	inc [hl]
 	ld d, $0
-	ld hl, wd43d
+	ld hl, wScriptStackBA1
 rept 3
 	add hl, de
 endr
@@ -1751,8 +1757,8 @@
 	call GetScriptByte
 	ld hl, ScriptVar
 	cp [hl]
-	jr z, Script_2jump ; 0x97547 $b5
-	jr SkipTwoScriptBytes ; 0x97549 $4b
+	jr z, Script_2jump
+	jr SkipTwoScriptBytes
 ; 0x9754b
 
 Script_if_not_equal: ; 0x9754b
@@ -1764,8 +1770,8 @@
 	call GetScriptByte
 	ld hl, ScriptVar
 	cp [hl]
-	jr nz, Script_2jump ; 0x97552 $aa
-	jr SkipTwoScriptBytes ; 0x97554 $40
+	jr nz, Script_2jump
+	jr SkipTwoScriptBytes
 ; 0x97556
 
 Script_if_greater_than: ; 0x97556
@@ -1778,8 +1784,8 @@
 	ld b, a
 	call GetScriptByte
 	cp b
-	jr c, Script_2jump ; 0x9755e $9e
-	jr SkipTwoScriptBytes ; 0x97560 $34
+	jr c, Script_2jump
+	jr SkipTwoScriptBytes
 ; 0x97562
 
 Script_if_less_than: ; 0x97562
@@ -1792,8 +1798,8 @@
 	ld b, a
 	ld a, [ScriptVar]
 	cp b
-	jr c, Script_2jump ; 0x9756a $92
-	jr SkipTwoScriptBytes ; 0x9756c $28
+	jr c, Script_2jump
+	jr SkipTwoScriptBytes
 ; 0x9756e
 
 Script_jumpstd: ; 0x9756e
@@ -1802,7 +1808,7 @@
 ;     predefined_script (MultiByteParam)
 
 	call StdScript
-	jr ScriptJump ; 0x97571 $2a
+	jr ScriptJump
 ; 0x97573
 
 Script_callstd: ; 0x97573
@@ -1870,7 +1876,7 @@
 ; script command 0x13
 
 	call CheckTriggers
-	jr z, .asm_975cb ; 0x975c5 $4
+	jr z, .asm_975cb
 	ld [ScriptVar], a
 	ret
 .asm_975cb
@@ -1892,7 +1898,7 @@
 	call GetMapTrigger
 	ld a, d
 	or e
-	jr z, .asm_975e5 ; 0x975de $5
+	jr z, .asm_975e5
 	ld a, [de]
 	ld [ScriptVar], a
 	ret
@@ -1911,7 +1917,7 @@
 	ld b, a
 	ld a, [MapNumber]
 	ld c, a
-	jr Unknown_975fd ; 0x975f3 $8
+	jr Unknown_975fd
 ; 0x975f5
 
 Script_domaptrigger: ; 0x975f5
@@ -1931,7 +1937,7 @@
 	call GetMapTrigger
 	ld a, d
 	or e
-	jr z, .asm_97608 ; 0x97602 $4
+	jr z, .asm_97608
 	call GetScriptByte
 	ld [de], a
 .asm_97608
@@ -2012,28 +2018,31 @@
 	ld [ScriptVar], a
 	and a
 	ret z
+
 	ld c, a
-	call Function97673
+	call .Divide256byC
 	and a
-	jr z, .asm_9765f ; 0x9764d $10
+	jr z, .no_restriction ; 256 % b == 0
 	ld b, a
 	xor a
 	sub b
 	ld b, a
-.asm_97653
+.loop
 	push bc
 	call Random
 	pop bc
-	ld a, [$ffe1]
+	ld a, [hRandomAdd]
 	cp b
-	jr nc, .asm_97653 ; 0x9765b $f6
-	jr .asm_97666 ; 0x9765d $7
-.asm_9765f
+	jr nc, .loop
+	jr .finish
+
+.no_restriction
 	push bc
 	call Random
 	pop bc
-	ld a, [$ffe1]
-.asm_97666
+	ld a, [hRandomAdd]
+
+.finish
 	push af
 	ld a, [ScriptVar]
 	ld c, a
@@ -2043,14 +2052,14 @@
 	ret
 ; 0x97673
 
-Function97673: ; 0x97673
+.Divide256byC: ; 0x97673
 	xor a
 	ld b, a
 	sub c
-.asm_97676
+.mod_loop
 	inc b
 	sub c
-	jr nc, .asm_97676 ; 0x97678 $fc
+	jr nc, .mod_loop
 	dec b
 	add c
 	ret
@@ -2119,7 +2128,7 @@
 
 	call GetScriptByte
 	and a
-	jr nz, .gotit ; 0x976b2 $3
+	jr nz, .gotit
 	ld a, [ScriptVar]
 .gotit
 	ld [wd265], a
@@ -2149,13 +2158,13 @@
 
 	call GetScriptByte
 	and a
-	jr nz, .ok ; 0x976d9 $3
+	jr nz, .ok
 	ld a, [ScriptVar]
 .ok
 	ld [wd265], a
 	call GetItemName
 	ld de, StringBuffer1
-	jr ConvertMemToText ; 0x976e7 $d7
+	jr ConvertMemToText
 ; 0x976e9
 
 Script_mapnametotext: ; 0x976e9
@@ -2183,7 +2192,7 @@
 ;     memory (SingleByteParam)
 
 	call GetScriptByte
-	jr ConvertLandmarkToText ; 0x97704 $ee
+	jr ConvertLandmarkToText
 ; 0x97706
 
 Script_trainertotext: ; 0x97706
@@ -2198,7 +2207,7 @@
 	call GetScriptByte
 	ld b, a
 	callba GetTrainerName
-	jr ConvertMemToText ; 0x97714 $aa
+	jr ConvertMemToText
 ; 0x97716
 
 Script_name: ; 0x97716
@@ -2227,7 +2236,7 @@
 
 	ld a, TRAINER_NAME
 	ld [wNamedObjectTypeBuffer], a
-	jr ContinueToGetName ; 0x97730 $ea
+	jr ContinueToGetName
 ; 0x97732
 
 Script_readmoney: ; 0x97732
@@ -2344,7 +2353,7 @@
 
 	call GetScriptByte
 	cp ITEM_FROM_MEM
-	jr nz, .ok ; 0x977cf $3
+	jr nz, .ok
 	ld a, [ScriptVar]
 .ok
 	ld [CurItem], a
@@ -2352,7 +2361,7 @@
 	ld [wItemQuantityChangeBuffer], a
 	ld hl, NumItems
 	call ReceiveItem
-	jr nc, .full ; 0x977e3 $6
+	jr nc, .full
 	ld a, $1
 	ld [ScriptVar], a
 	ret
@@ -2718,7 +2727,7 @@
 	call EventFlagAction
 	ld a, c
 	and a
-	jr z, .false ; 0x979b3 $2
+	jr z, .false
 	ld a, 1
 .false
 	ld [ScriptVar], a
@@ -2766,7 +2775,7 @@
 	call _EngineFlagAction
 	ld a, c
 	and a
-	jr z, .false ; 0x979e6 $2
+	jr z, .false
 	ld a, 1
 .false
 	ld [ScriptVar], a
@@ -2835,7 +2844,7 @@
 ; This seems to be some sort of error handling case.
 	call GetScriptByte
 	and a
-	jr z, .not_ok ; 0x97a21 $27
+	jr z, .not_ok
 	ld [MapGroup], a
 	call GetScriptByte
 	ld [MapNumber], a
@@ -3080,7 +3089,7 @@
 
 	call GetScriptByte
 	and a
-	jr z, .loop ; 0x97b4b $3
+	jr z, .loop
 	ld [ScriptDelay], a
 .loop
 	ld c, 2
@@ -3087,7 +3096,7 @@
 	call DelayFrames
 	ld hl, ScriptDelay
 	dec [hl]
-	jr nz, .loop ; 0x97b59 $f5
+	jr nz, .loop
 	ret
 ; 0x97b5c
 
@@ -3098,7 +3107,7 @@
 
 	call GetScriptByte
 	and a
-	jr z, .no_time ; 0x97b60 $3
+	jr z, .no_time
 	ld [ScriptDelay], a
 .no_time
 	ld a, SCRIPT_WAIT
@@ -3149,14 +3158,14 @@
 ExitScriptSubroutine: ; 0x97b9a
 ; Return carry if there's no parent to return to.
 
-	ld hl, wd43c
+	ld hl, wScriptStackSize
 	ld a, [hl]
 	and a
-	jr z, .done ; 0x97b9f $1d
+	jr z, .done
 	dec [hl]
 	ld e, [hl]
 	ld d, $0
-	ld hl, wd43d
+	ld hl, wScriptStackBA1
 rept 3
 	add hl,de
 endr
@@ -3181,7 +3190,7 @@
 ; script command 0x93
 
 	xor a
-	ld [wd43c], a
+	ld [wScriptStackSize], a
 	ld [ScriptRunning], a
 	ld a, SCRIPT_OFF
 	ld [ScriptMode], a
@@ -3231,15 +3240,15 @@
 	call DelayFrames
 	pop af
 	dec a
-	jr nz, .loop ; 0x97c11 $f6
+	jr nz, .loop
 	pop bc
 	ret
 ; 0x97c15
 
-Script_unknown0xa9: ; 0x97c15
+Script_check_save: ; 0x97c15
 ; script command 0xa9
 
-	callba Function4cffe
+	callba CheckSave
 	ld a, c
 	ld [ScriptVar], a
 	ret
@@ -3246,7 +3255,7 @@
 ; 0x97c20
 
 
-Function97c20: ; 97c20 unreferenced
+; 97c20 unreferenced
 	ld a, [.byte]
 	ld [ScriptVar], a
 	ret
--- a/macros/event.asm
+++ b/macros/event.asm
@@ -1068,7 +1068,7 @@
 	db \1 ; duration
 	endm
 
-	enum unknown0xa9_command
-unknown0xa9: macro
-	db unknown0xa9_command
+	enum check_save_command
+check_save: macro
+	db check_save_command
 	endm
--- a/main.asm
+++ b/main.asm
@@ -2154,7 +2154,7 @@
 
 	push hl
 	push bc
-	call Function7009
+	call WillPersonBumpIntoSomeoneElse
 	pop bc
 	pop hl
 	ret c
@@ -2163,12 +2163,12 @@
 	bit 5, [hl]
 	jr nz, .bit_5
 	push hl
-	call Function70a4
+	call HasPersonReachedMovementLimit
 	pop hl
 	ret c
 
 	push hl
-	call Function70ed
+	call IsPersonMovingOffEdgeOfScreen
 	pop hl
 	ret c
 
@@ -2388,7 +2388,7 @@
 ; 7009
 
 
-Function7009: ; 7009
+WillPersonBumpIntoSomeoneElse: ; 7009
 	ld hl, OBJECT_NEXT_MAP_X
 	add hl, bc
 	ld d, [hl]
@@ -2401,11 +2401,11 @@
 Function7015: ; unreferenced
 	ld a, [hMapObjectIndexBuffer]
 	call GetObjectStruct
-	call Function7021
+	call .CheckWillBeFacingNPC
 	call IsNPCAtCoord
 	ret
 
-Function7021: ; 7021
+.CheckWillBeFacingNPC: ; 7021
 	ld hl, OBJECT_NEXT_MAP_X
 	add hl, bc
 	ld d, [hl]
@@ -2510,14 +2510,14 @@
 	ret
 ; 70a4
 
-Function70a4: ; 70a4
+HasPersonReachedMovementLimit: ; 70a4
 	ld hl, OBJECT_RADIUS
 	add hl, bc
 	ld a, [hl]
 	and a
-	jr z, .asm_70e9
+	jr z, .nope
 	and $f
-	jr z, .asm_70c7
+	jr z, .check_y
 	ld e, a
 	ld d, a
 	ld hl, OBJECT_INIT_X
@@ -2532,17 +2532,17 @@
 	add hl, bc
 	ld a, [hl]
 	cp d
-	jr z, .asm_70eb
+	jr z, .yes
 	cp e
-	jr z, .asm_70eb
+	jr z, .yes
 
-.asm_70c7
+.check_y
 	ld hl, OBJECT_RADIUS
 	add hl, bc
 	ld a, [hl]
 	swap a
 	and $f
-	jr z, .asm_70e9
+	jr z, .nope
 	ld e, a
 	ld d, a
 	ld hl, OBJECT_INIT_Y
@@ -2557,46 +2557,46 @@
 	add hl, bc
 	ld a, [hl]
 	cp d
-	jr z, .asm_70eb
+	jr z, .yes
 	cp e
-	jr z, .asm_70eb
+	jr z, .yes
 
-.asm_70e9
+.nope
 	xor a
 	ret
 
-.asm_70eb
+.yes
 	scf
 	ret
 ; 70ed
 
-Function70ed: ; 70ed
+IsPersonMovingOffEdgeOfScreen: ; 70ed
 	ld hl, OBJECT_NEXT_MAP_X
 	add hl, bc
 	ld a, [XCoord]
 	cp [hl]
-	jr z, .asm_70fe
-	jr nc, .asm_7111
+	jr z, .check_y
+	jr nc, .yes
 	add $9
 	cp [hl]
-	jr c, .asm_7111
+	jr c, .yes
 
-.asm_70fe
+.check_y
 	ld hl, OBJECT_NEXT_MAP_Y
 	add hl, bc
 	ld a, [YCoord]
 	cp [hl]
-	jr z, .asm_710f
-	jr nc, .asm_7111
+	jr z, .nope
+	jr nc, .yes
 	add $8
 	cp [hl]
-	jr c, .asm_7111
+	jr c, .yes
 
-.asm_710f
+.nope
 	and a
 	ret
 
-.asm_7111
+.yes
 	scf
 	ret
 ; 7113
@@ -2611,46 +2611,46 @@
 .loop
 	ld [hObjectStructIndexBuffer], a
 	call GetObjectSprite
-	jr z, .asm_7160
+	jr z, .next
 	ld hl, OBJECT_MOVEMENTTYPE
 	add hl, bc
 	ld a, [hl]
 	cp SPRITEMOVEDATA_SNORLAX
-	jr nz, .asm_7136
+	jr nz, .not_snorlax
 	call Function7171
-	jr c, .asm_716f
-	jr .asm_7160
+	jr c, .yes
+	jr .next
 
-.asm_7136
+.not_snorlax
 	ld hl, OBJECT_NEXT_MAP_Y
 	add hl, bc
 	ld a, [hl]
 	cp e
-	jr nz, .asm_714e
+	jr nz, .check_current_coords
 	ld hl, OBJECT_NEXT_MAP_X
 	add hl, bc
 	ld a, [hl]
 	cp d
-	jr nz, .asm_714e
+	jr nz, .check_current_coords
 	ld a, [hObjectStructIndexBuffer]
 	cp $0
-	jr z, .asm_7160
-	jr .asm_716f
+	jr z, .next
+	jr .yes
 
-.asm_714e
+.check_current_coords
 	ld hl, OBJECT_MAP_Y
 	add hl, bc
 	ld a, [hl]
 	cp e
-	jr nz, .asm_7160
+	jr nz, .next
 	ld hl, OBJECT_MAP_X
 	add hl, bc
 	ld a, [hl]
 	cp d
-	jr nz, .asm_7160
-	jr .asm_716f
+	jr nz, .next
+	jr .yes
 
-.asm_7160
+.next
 	ld hl, OBJECT_STRUCT_LENGTH
 	add hl, bc
 	ld b, h
@@ -2662,7 +2662,7 @@
 	xor a
 	ret
 
-.asm_716f
+.yes
 	scf
 	ret
 ; 7171
@@ -2673,20 +2673,20 @@
 	add hl, bc
 	ld a, d
 	sub [hl]
-	jr c, .asm_718b
+	jr c, .nope
 	cp $2
-	jr nc, .asm_718b
+	jr nc, .nope
 	ld hl, OBJECT_NEXT_MAP_Y
 	add hl, bc
 	ld a, e
 	sub [hl]
-	jr c, .asm_718b
+	jr c, .nope
 	cp $2
-	jr nc, .asm_718b
+	jr nc, .nope
 	scf
 	ret
 
-.asm_718b
+.nope
 	and a
 	ret
 ; 718d
@@ -3221,7 +3221,7 @@
 	call GetMapObject
 	ld hl, MAPOBJECT_COLOR
 	add hl, bc
-	ln e, (1 << 3) | PAL_OW_RED, $0
+	ln e, (1 << 3) | PAL_OW_RED, PERSONTYPE_SCRIPT
 	ld a, [wPlayerSpriteSetupFlags]
 	bit 2, a
 	jr nz, .ok
@@ -3228,7 +3228,7 @@
 	ld a, [PlayerGender]
 	bit 0, a
 	jr z, .ok
-	ln e, (1 << 3) | PAL_OW_BLUE, $0
+	ln e, (1 << 3) | PAL_OW_BLUE, PERSONTYPE_SCRIPT
 
 .ok
 	ld [hl], e
@@ -3239,8 +3239,8 @@
 	ld [hObjectStructIndexBuffer], a
 	ld de, ObjectStructs
 	call CopyMapObjectToObjectStruct
-	ld a, $0
-	ld [wd4cf], a
+	ld a, PLAYER
+	ld [wCenteredObject], a
 	ret
 ; 8071
 
@@ -3322,7 +3322,7 @@
 	ld e, a
 	ld a, [wObjectFollow_Leader]
 	cp $0
-	ret nz
+	ret nz ; wtf
 	ret
 ; 80e7
 
@@ -5306,15 +5306,15 @@
 	farscall Script_AbortBugContest
 	special WarpToSpawnPoint
 	callasm DelayLoadingNewSprites
-	writecode VAR_MOVEMENT, $0
+	writecode VAR_MOVEMENT, PLAYER_NORMAL
 	newloadmap MAPSETUP_FLY
 	callasm Function8cb33
 	special WaitSFX
-	callasm Functioncacb
+	callasm .ReturnFromFly
 	end
 ; 0xcacb
 
-Functioncacb: ; cacb
+.ReturnFromFly: ; cacb
 	callba Function561d
 	call DelayFrame
 	call ReplaceKrisSprite
@@ -5574,7 +5574,7 @@
 	applymovement PLAYER, .DigOut
 	farscall Script_AbortBugContest
 	special WarpToSpawnPoint
-	writecode VAR_MOVEMENT, $0
+	writecode VAR_MOVEMENT, PLAYER_NORMAL
 	newloadmap MAPSETUP_DOOR
 	playsound SFX_WARP_FROM
 	applymovement PLAYER, .DigReturn
@@ -5671,7 +5671,7 @@
 	applymovement PLAYER, .TeleportFrom
 	farscall Script_AbortBugContest
 	special WarpToSpawnPoint
-	writecode VAR_MOVEMENT, $0
+	writecode VAR_MOVEMENT, PLAYER_NORMAL
 	newloadmap MAPSETUP_TELEPORT
 	playsound SFX_WARP_FROM
 	applymovement PLAYER, .TeleportTo
@@ -6336,17 +6336,17 @@
 Script_GotABite: ; 0xd035
 	scall Script_FishCastRod
 	callasm Fishing_CheckFacingUp
-	iffalse .FacingUp
-	applymovement PLAYER, MovementData_0xd062
+	iffalse .NotFacingUp
+	applymovement PLAYER, .Movement_FacingUp
 	jump .FightTheHookedPokemon
 ; 0xd046
 
-.FacingUp: ; 0xd046
-	applymovement PLAYER, MovementData_0xd05c
+.NotFacingUp: ; 0xd046
+	applymovement PLAYER, .Movement_NotFacingUp
 
 .FightTheHookedPokemon: ; 0xd04a
 	pause 40
-	applymovement PLAYER, MovementData_0xd069
+	applymovement PLAYER, .Movement_RestoreRod
 	writetext UnknownText_0xd0a4
 	callasm PutTheRodAway
 	loadmovesprites
@@ -6356,7 +6356,7 @@
 	end
 ; 0xd05c
 
-MovementData_0xd05c: ; d05c
+.Movement_NotFacingUp: ; d05c
 	fish_got_bite
 	fish_got_bite
 	fish_got_bite
@@ -6365,7 +6365,7 @@
 	step_end
 ; d062
 
-MovementData_0xd062: ; d062
+.Movement_FacingUp: ; d062
 	fish_got_bite
 	fish_got_bite
 	fish_got_bite
@@ -6375,7 +6375,7 @@
 	step_end
 ; d069
 
-MovementData_0xd069: ; d069
+.Movement_RestoreRod: ; d069
 	hide_emote
 	fish_cast_rod
 	step_end
@@ -6384,7 +6384,7 @@
 Fishing_CheckFacingUp: ; d06c
 	ld a, [PlayerDirection]
 	and $c
-	cp $4
+	cp OW_UP
 	ld a, $1
 	jr z, .up
 	xor a
@@ -6532,7 +6532,7 @@
 Script_GetOnBike: ; 0xd13e
 	reloadmappart
 	special UpdateTimePals
-	writecode VAR_MOVEMENT, $1
+	writecode VAR_MOVEMENT, PLAYER_BIKE
 	writetext UnknownText_0xd17c
 	closetext
 	loadmovesprites
@@ -6541,7 +6541,7 @@
 ; 0xd14e
 
 Script_GetOnBike_Register: ; 0xd14e
-	writecode VAR_MOVEMENT, $1
+	writecode VAR_MOVEMENT, PLAYER_BIKE
 	loadmovesprites
 	special ReplaceKrisSprite
 	end
@@ -6554,11 +6554,11 @@
 Script_GetOffBike: ; 0xd158
 	reloadmappart
 	special UpdateTimePals
-	writecode VAR_MOVEMENT, $0
+	writecode VAR_MOVEMENT, PLAYER_NORMAL
 	writetext UnknownText_0xd181
 	closetext
 
-UnknownScript_0xd163:
+FinishGettingOffBike:
 	loadmovesprites
 	special ReplaceKrisSprite
 	special PlayMapMusic
@@ -6566,8 +6566,8 @@
 ; 0xd16b
 
 Script_GetOffBike_Register: ; 0xd16b
-	writecode VAR_MOVEMENT, $0
-	jump UnknownScript_0xd163
+	writecode VAR_MOVEMENT, PLAYER_NORMAL
+	jump FinishGettingOffBike
 ; 0xd171
 
 UnknownScript_0xd171: ; 0xd171
@@ -29402,7 +29402,7 @@
 	ret
 
 
-Function4cffe:: ; 4cffe
+CheckSave:: ; 4cffe
 	ld a, BANK(s1_a008)
 	call GetSRAMBank
 	ld a, [s1_a008]
--- a/sram.asm
+++ b/sram.asm
@@ -62,7 +62,7 @@
 
 sOptions:: ds OptionsEnd - Options
 
-s1_a008:: ds 1
+s1_a008:: ds 1 ; loaded with 99, used to check save corruption
 
 sGameData::
 sPlayerData::  ds wPlayerDataEnd - wPlayerData
@@ -75,7 +75,7 @@
 ; ad0d
 
 sChecksum::   ds 2
-s1_ad0f::     ds 1
+s1_ad0f::     ds 1 ; loaded with 0x7f, used to check save corruption
 
 ; ad10
 	box sBox
--- a/wram.asm
+++ b/wram.asm
@@ -2108,9 +2108,13 @@
 ScriptPos:: ; d43a
 	ds 2
 
-wd43c:: ds 1
-wd43d:: ds 16
-
+wScriptStackSize:: ds 1
+wScriptStackBA1:: ds 3
+wScriptStackBA2:: ds 3
+wScriptStackBA3:: ds 3
+wScriptStackBA4:: ds 3
+wScriptStackBA5:: ds 3
+	ds 1
 ScriptDelay:: ; d44d
 	ds 1
 
@@ -2201,7 +2205,7 @@
 	ds 1
 wObjectFollow_Leader:: ds 1
 wObjectFollow_Follower:: ds 1
-wd4cf:: ds 1
+wCenteredObject:: ds 1
 wd4d0:: ds 1
 wd4d1:: ds 1
 	ds 4