summaryrefslogtreecommitdiff
path: root/src/engine
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/bank03.asm94
-rw-r--r--src/engine/bank04.asm4
-rw-r--r--src/engine/bank07.asm2
3 files changed, 72 insertions, 28 deletions
diff --git a/src/engine/bank03.asm b/src/engine/bank03.asm
index 651109d..38a736e 100644
--- a/src/engine/bank03.asm
+++ b/src/engine/bank03.asm
@@ -1901,7 +1901,7 @@ OWScript_StartBattle: ; cd01 (3:4d01)
ld a, [wd695]
ld c, a
ld b, $0
- ld hl, $4d63
+ ld hl, AaronDeckIDs
add hl, bc
ld a, [hl]
ld [wcc19], a
@@ -1933,8 +1933,10 @@ Func_cd4f: ; cd4f (3:4d4f)
ld a, [wd696]
jr asm_cd2f
-Unknown_dd63: ; cd4f (3:4d4f)
- INCROM $cd63, $cd66
+AaronDeckIDs: ; cd63 (3:4d63)
+ db LIGHTNING_AND_FIRE_DECK_ID
+ db WATER_AND_FIGHTING_DECK_ID
+ db GRASS_AND_PSYCHIC_DECK_ID
Func_cd66: ; cd66 (3:4d66)
ld a, c
@@ -2045,10 +2047,12 @@ Func_cdf5: ; cdf5 (3:4df5)
ld [wLoadedNPCTempIndex], a
jp IncreaseOWScriptPointerBy3
-Func_ce26: ; ce26 (3:4e26)
+; Finds and executes an NPCMovement script in the table provided in bc
+; based on the active NPC's current direction
+OWScript_MoveActiveNPCByDirection: ; ce26 (3:4e26)
ld a, [wScriptNPC]
ld [wLoadedNPCTempIndex], a
- farcall Func_1c455
+ farcall GetNPCDirection
rlca
add c
ld l, a
@@ -2058,6 +2062,7 @@ Func_ce26: ; ce26 (3:4e26)
ld c, [hl]
inc hl
ld b, [hl]
+; fallthrough
; Moves an NPC given the list of directions pointed to by bc
; set bit 7 to only rotate the NPC
@@ -2084,7 +2089,11 @@ Func_ce52: ; ce52 (3:4e52)
ld a, [wTempNPC]
push af
ld a, [wd696]
-asm_ce5d
+; fallthrough
+
+; Executes movement on an arbitrary NPC using values in a and on the stack
+; Changes and fixes Temp NPC using stack values
+ExecuteArbitraryNPCMovementFromStack
ld [wTempNPC], a
call FindLoadedNPC
call ExecuteNPCMovement
@@ -2094,7 +2103,7 @@ asm_ce5d
ld [wLoadedNPCTempIndex], a
ret
-Func_ce6f: ; ce6f (3:4e6f)
+OWScript_MoveArbitraryNPC: ; ce6f (3:4e6f)
ld a, [wLoadedNPCTempIndex]
push af
ld a, [wTempNPC]
@@ -2106,7 +2115,7 @@ Func_ce6f: ; ce6f (3:4e6f)
call IncreaseOWScriptPointerBy1
pop bc
pop af
- jr asm_ce5d
+ jr ExecuteArbitraryNPCMovementFromStack
OWScript_CloseTextBox: ; ce84 (3:4e84)
call CloseTextBox
@@ -4044,7 +4053,7 @@ OWSequence_Sara: ; e177 (3:6177)
tx Text042f
run_script OWScript_StartBattle
db PRIZES_2
- db WATERFRONT_POKEMON_DECK_ID ; 6189
+ db WATERFRONT_POKEMON_DECK_ID
db MUSIC_DUEL_THEME_1
run_script OWScript_QuitScriptFully
@@ -4305,8 +4314,8 @@ OWSequence_BeatJoshua: ; e26c (3:626c)
run_script OWScript_PrintTextString
tx Text0449
run_script OWScript_CloseTextBox
- run_script Func_ce26
- dw $62a1
+ run_script OWScript_MoveActiveNPCByDirection
+ dw NPCMovementTable_e2a1
run_script OWScript_PrintTextString
tx Text044a
run_script Func_cfc6
@@ -4318,7 +4327,39 @@ OWSequence_BeatJoshua: ; e26c (3:626c)
run_script OWScript_EndScriptLoop1
ret
- INCROM $e2a1, $e2d1
+NPCMovementTable_e2a1: ; e2a1 (3:62a1)
+ dw NPCMovement_e2a9
+ dw NPCMovement_e2a9
+ dw NPCMovement_e2a9
+ dw NPCMovement_e2a9
+
+NPCMovement_e2a9: ; e2a9 (3:62a9)
+ db NORTH
+ db $ff
+
+NPCMovement_e2ab: ; e2ab (3:62ab)
+ db SOUTH
+ db $ff
+
+Preload_Amy: ; e2ad (3:62ad)
+ xor a
+ ld [wd3d0], a
+ ld a, [wd0c2]
+ or a
+ jr z, .asm_e2cf
+ ld a, [wPlayerXCoord]
+ cp $14
+ jr nz, .asm_e2cf
+ ld a, [wPlayerYCoord]
+ cp $06
+ jr nz, .asm_e2cf
+ ld a, $14
+ ld [wLoadNPCXPos], a
+ ld a, $01
+ ld [wd3d0], a
+.asm_e2cf
+ scf
+ ret
OWSequence_MeetAmy: ; e2d1 (3:62d1)
start_script
@@ -4359,9 +4400,9 @@ OWSequence_MeetAmy: ; e2d1 (3:62d1)
run_script OWScript_MovePlayer
db NORTH
db $01
- run_script Func_ce6f
- db $21
- dw $62ab
+ run_script OWScript_MoveArbitraryNPC
+ db JOSHUA
+ dw NPCMovement_e2ab
run_script OWScript_PrintTextString
tx Text044e
run_script OWScript_Jump
@@ -5211,21 +5252,24 @@ Func_fcad: ; fcad (3:7cad)
tx Text06d5
.ows_fcd5
- run_script Func_ce6f
- db $3c
- dw Unknown_fce1
+ run_script OWScript_MoveArbitraryNPC
+ db GIFT_CENTER_CLERK
+ dw NPCMovement_fce1
run_script OWScript_PrintTextString
tx Text06d6
- run_script Func_ce6f
- db $3c
- dw Unknown_fce3
+ run_script OWScript_MoveArbitraryNPC
+ db GIFT_CENTER_CLERK
+ dw NPCMovement_fce3
run_script OWScript_QuitScriptFully
-Unknown_fce1: ; fce1 (3:7ce1)
- db $82, $ff
+NPCMovement_fce1: ; fce1 (3:7ce1)
+ db SOUTH | NO_MOVE
+ db $ff
-Unknown_fce3: ; fce3 (3:7ce3)
- db $80, $ff
+NPCMovement_fce3: ; fce3 (3:7ce3)
+ db NORTH | NO_MOVE
+ db $ff
+; fce5
rept $31b
db $ff
diff --git a/src/engine/bank04.asm b/src/engine/bank04.asm
index 3f1d4f4..76b7c0a 100644
--- a/src/engine/bank04.asm
+++ b/src/engine/bank04.asm
@@ -979,7 +979,7 @@ OverworldScriptTable: ; 1217b (4:617b)
dw Func_cda8
dw OWScript_PrintTextQuitFully
dw Func_cdcb
- dw Func_ce26
+ dw OWScript_MoveActiveNPCByDirection
dw OWScript_CloseTextBox
dw OWScript_GiveBoosterPacks
dw Func_cf0c
@@ -1028,7 +1028,7 @@ OverworldScriptTable: ; 1217b (4:617b)
dw OWScript_OpenDeckMachine
dw Func_d271
dw OWScript_EnterMap
- dw Func_ce6f
+ dw OWScript_MoveArbitraryNPC
dw Func_d209
dw Func_d38f
dw Func_d396
diff --git a/src/engine/bank07.asm b/src/engine/bank07.asm
index d655c42..54e5c74 100644
--- a/src/engine/bank07.asm
+++ b/src/engine/bank07.asm
@@ -93,7 +93,7 @@ INCLUDE "data/map_headers.asm"
Func_1c440: ; 1c440 (7:4440)
INCROM $1c440, $1c455
-Func_1c455: ; 1c455 (7:4455)
+GetNPCDirection: ; 1c455 (7:4455)
push hl
ld a, [wLoadedNPCTempIndex]
ld l, LOADED_NPC_DIRECTION