summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Martinek <andrewrmartinek@gmail.com>2019-10-25 19:41:50 -0400
committerAndrew Martinek <andrewrmartinek@gmail.com>2019-10-25 19:41:50 -0400
commite58e93fdb14173ae7a9edcd782f70fe67402c42f (patch)
tree91ba1492ffe671b0e7da87e7bb63b6e366e168dd /src
parent2a3071d3fec01901f5e0122d47072495bcf54945 (diff)
a bit more scripting stuff, figured out more npc data
Diffstat (limited to 'src')
-rw-r--r--src/data/npc_map_data.asm5
-rw-r--r--src/data/npcs.asm87
-rw-r--r--src/engine/bank03.asm94
-rw-r--r--src/engine/bank04.asm4
-rw-r--r--src/engine/bank07.asm2
-rw-r--r--src/macros/scripts.asm4
6 files changed, 121 insertions, 75 deletions
diff --git a/src/data/npc_map_data.asm b/src/data/npc_map_data.asm
index 629eb91..d40e086 100644
--- a/src/data/npc_map_data.asm
+++ b/src/data/npc_map_data.asm
@@ -1,4 +1,5 @@
-; NPC Map data. Format:
+; NPC Map data. Note: pre-load functions also run after battles
+; Format:
; NPC, X position, Y Position, Direction,
; pre-load function. (Resets c flag if NPC should not be loaded)
MasonLabNPCS: ; 772f (4:1372f)
@@ -150,7 +151,7 @@ WaterClubNPCS: ; 787e (4:1387e)
db JOSHUA, $16, $08, SOUTH
dw $0000
db AMY, $16, $04, SOUTH
- dw $62ad
+ dw Preload_Amy
db $00
LightningClubEntranceNPCS: ; 7897 (4:13897)
diff --git a/src/data/npcs.asm b/src/data/npcs.asm
index 8fb8773..5d091a1 100644
--- a/src/data/npcs.asm
+++ b/src/data/npcs.asm
@@ -1,5 +1,6 @@
; When you press the A button in front of something it will find a data entry somewhere on this list
; it will then jump to the pointer in the data item. All jumps lead to an RST20 operation.
+; The Deck IDs are used for the challenge hall
NPCDataTable:
dw DrMasonData
dw DrMasonData
@@ -138,7 +139,7 @@ Ronald1Data:
dw OWSequence_Ronald ; Pointer to OWScript
tx Text03ad
db RONALD_PIC
- db $1a
+ db INVINCIBLE_RONALD_DECK_ID
db $0f
db $16
Ronald2Data:
@@ -150,7 +151,7 @@ Ronald2Data:
dw OWSequence_Ronald ; Pointer to OWScript
tx Text03ad
db RONALD_PIC
- db $1a
+ db INVINCIBLE_RONALD_DECK_ID
db $0f
db $16
Ronald3Data:
@@ -162,7 +163,7 @@ Ronald3Data:
dw OWSequence_Ronald ; Pointer to OWScript
tx Text03ad
db RONALD_PIC
- db $1a
+ db INVINCIBLE_RONALD_DECK_ID
db $0f
db $16
IshiharaData:
@@ -186,7 +187,7 @@ ImakuniData:
dw OWSequence_Imakuni ; Pointer to OWScript
tx Text03af
db IMAKUNI_PIC
- db $34
+ db IMAKUNI_DECK_ID
db $10
db $15
SamData:
@@ -198,7 +199,7 @@ SamData:
dw $561d ; Pointer to OWScript
tx Text03b1
db SAM_PIC
- db $02
+ db SAMS_NORMAL_DECK_ID
db $02
db $15
Tech1Data:
@@ -390,7 +391,7 @@ ChrisData:
dw $5ef2 ; Pointer to OWScript
tx Text03b4
db CHRIS_PIC
- db $1c
+ db MUSCLES_FOR_BRAINS_DECK_ID
db $03
db $15
MichaelData:
@@ -402,7 +403,7 @@ MichaelData:
dw $6573 ; Pointer to OWScript
tx Text03b5
db MICHAEL_PIC
- db $1d
+ db HEATED_BATTLE_DECK_ID
db $03
db $15
JessicaData:
@@ -414,7 +415,7 @@ JessicaData:
dw $6d96 ; Pointer to OWScript
tx Text03b6
db JESSICA_PIC
- db $1e
+ db LOVE_TO_BATTLE_DECK_ID
db $03
db $15
MitchData:
@@ -426,7 +427,7 @@ MitchData:
dw $5dc3 ; Pointer to OWScript
tx Text03b7
db MITCH_PIC
- db $10
+ db FIRST_STRIKE_DECK_ID
db $03
db $16
MatthewData:
@@ -438,7 +439,7 @@ MatthewData:
dw $5f39 ; Pointer to OWScript
tx Text03b8
db MATTHEW_PIC
- db $21
+ db HARD_POKEMON_DECK_ID
db $03
db $15
RyanData:
@@ -450,7 +451,7 @@ RyanData:
dw $5ff0 ; Pointer to OWScript
tx Text03b9
db RYAN_PIC
- db $1f
+ db EXCAVATION_DECK_ID
db $03
db $15
AndrewData:
@@ -462,7 +463,7 @@ AndrewData:
dw $6017 ; Pointer to OWScript
tx Text03ba
db ANDREW_PIC
- db $20
+ db BLISTERING_POKEMON_DECK_ID
db $03
db $15
GeneData:
@@ -474,7 +475,7 @@ GeneData:
dw $603e ; Pointer to OWScript
tx Text03bb
db GENE_PIC
- db $11
+ db ROCK_CRUSHER_DECK_ID
db $03
db $16
SaraData:
@@ -486,7 +487,7 @@ SaraData:
dw OWSequence_Sara ; Pointer to OWScript
tx Text03bc
db SARA_PIC
- db $22
+ db WATERFRONT_POKEMON_DECK_ID
db $03
db $15
AmandaData:
@@ -498,7 +499,7 @@ AmandaData:
dw OWSequence_Amanda ; Pointer to OWScript
tx Text03bd
db AMANDA_PIC ; battle profile picture
- db $23
+ db LONELY_FRIENDS_DECK_ID
db $03
db $15
JoshuaData:
@@ -510,7 +511,7 @@ JoshuaData:
dw OWSequence_Joshua ; Pointer to OWScript
tx Text03be
db JOSHUA_PIC
- db $24
+ db SOUND_OF_THE_WAVES_DECK_ID
db $03
db $15
AmyData:
@@ -522,7 +523,7 @@ AmyData:
dw OWSequence_Amy ; Pointer to OWScript
tx Text03bf
db AMY_PIC
- db $12
+ db GO_GO_RAIN_DANCE_DECK_ID
db $03
db $16
JenniferData:
@@ -534,7 +535,7 @@ JenniferData:
dw $6408 ; Pointer to OWScript
tx Text03c0
db JENNIFER_PIC
- db $25
+ db PIKACHU_DECK_ID
db $03
db $15
NicholasData:
@@ -546,7 +547,7 @@ NicholasData:
dw $642f ; Pointer to OWScript
tx Text03c1
db NICHOLAS_PIC
- db $26
+ db BOOM_BOOM_SELFDESTRUCT_DECK_ID
db $03
db $15
BrandonData:
@@ -558,7 +559,7 @@ BrandonData:
dw $6456 ; Pointer to OWScript
tx Text03c2
db BRANDON_PIC
- db $27
+ db POWER_GENERATOR_DECK_ID
db $03
db $15
IsaacData:
@@ -570,7 +571,7 @@ IsaacData:
dw $64ad ; Pointer to OWScript
tx Text03c3
db ISAAC_PIC
- db $13
+ db ZAPPING_SELFDESTRUCT_DECK_ID
db $03
db $16
BrittanyData:
@@ -582,7 +583,7 @@ BrittanyData:
dw OWSequence_Brittany ; Pointer to OWScript
tx Text03c4
db BRITTANY_PIC
- db $28
+ db ETCETERA_DECK_ID
db $03
db $15
KristinData:
@@ -594,7 +595,7 @@ KristinData:
dw $6701 ; Pointer to OWScript
tx Text03c5
db KRISTIN_PIC
- db $29
+ db FLOWER_GARDEN_DECK_ID
db $03
db $15
HeatherData:
@@ -606,7 +607,7 @@ HeatherData:
dw $6745 ; Pointer to OWScript
tx Text03c6
db HEATHER_PIC
- db $2a
+ db KALEIDOSCOPE_DECK_ID
db $03
db $15
NikkiData:
@@ -618,7 +619,7 @@ NikkiData:
dw $679e ; Pointer to OWScript
tx Text03c7
db NIKKI_PIC
- db $14
+ db FLOWER_POWER_DECK_ID
db $03
db $16
RobertData:
@@ -630,7 +631,7 @@ RobertData:
dw $6980 ; Pointer to OWScript
tx Text03c8
db ROBERT_PIC
- db $2b
+ db GHOST_DECK_ID
db $03
db $15
DanielData:
@@ -642,7 +643,7 @@ DanielData:
dw $6a60 ; Pointer to OWScript
tx Text03c9
db DANIEL_PIC
- db $2c
+ db NAP_TIME_DECK_ID
db $03
db $15
StephanieData:
@@ -654,7 +655,7 @@ StephanieData:
dw $6aa2 ; Pointer to OWScript
tx Text03ca
db STEPHANIE_PIC
- db $2d
+ db STRANGE_POWER_DECK_ID
db $03
db $15
Murray1Data:
@@ -666,7 +667,7 @@ Murray1Data:
dw $6adf ; Pointer to OWScript
tx Text03cb
db MURRAY_PIC
- db $15
+ db STRANGE_PSYSHOCK_DECK_ID
db $03
db $16
Murray2Data:
@@ -678,7 +679,7 @@ Murray2Data:
dw $6adf ; Pointer to OWScript
tx Text03cb
db MURRAY_PIC
- db $15
+ db STRANGE_PSYSHOCK_DECK_ID
db $03
db $16
JosephData:
@@ -690,7 +691,7 @@ JosephData:
dw $6cdb ; Pointer to OWScript
tx Text03cc
db JOSEPH_PIC
- db $2e
+ db FLYIN_POKEMON_DECK_ID
db $03
db $15
DavidData:
@@ -702,7 +703,7 @@ DavidData:
dw $6c11 ; Pointer to OWScript
tx Text03cd
db DAVID_PIC
- db $2f
+ db LOVELY_NIDORAN_DECK_ID
db $03
db $15
ErikData:
@@ -714,7 +715,7 @@ ErikData:
dw $6c42 ; Pointer to OWScript
tx Text03ce
db ERIK_PIC
- db $30
+ db POISON_DECK_ID
db $03
db $15
RickData:
@@ -726,7 +727,7 @@ RickData:
dw $6c67 ; Pointer to OWScript
tx Text03cf
db RICK_PIC
- db $16
+ db WONDERS_OF_SCIENCE_DECK_ID
db $03
db $16
JohnData:
@@ -738,7 +739,7 @@ JohnData:
dw $6eb3 ; Pointer to OWScript
tx Text03d0
db JOHN_PIC
- db $31
+ db ANGER_DECK_ID
db $03
db $15
AdamData:
@@ -750,7 +751,7 @@ AdamData:
dw $6ed8 ; Pointer to OWScript
tx Text03d1
db ADAM_PIC
- db $32
+ db FLAMETHROWER_DECK_ID
db $03
db $15
JonathanData:
@@ -762,7 +763,7 @@ JonathanData:
dw $6efd ; Pointer to OWScript
tx Text03d2
db JONATHAN_PIC
- db $33
+ db RESHUFFLE_DECK_ID
db $03
db $15
KenData:
@@ -774,7 +775,7 @@ KenData:
dw $6f22 ; Pointer to OWScript
tx Text03d3
db KEN_PIC
- db $17
+ db FIRE_CHARGE_DECK_ID
db $03
db $16
CourtneyData:
@@ -786,7 +787,7 @@ CourtneyData:
dw $771f ; Pointer to OWScript
tx Text03d4
db COURTNEY_PIC
- db $0c
+ db LEGENDARY_MOLTRES_DECK_ID
db $04
db $17
SteveData:
@@ -798,7 +799,7 @@ SteveData:
dw $772a ; Pointer to OWScript
tx Text03d5
db STEVE_PIC
- db $0d
+ db LEGENDARY_ZAPDOS_DECK_ID
db $04
db $17
JackData:
@@ -810,7 +811,7 @@ JackData:
dw $7735 ; Pointer to OWScript
tx Text03d6
db JACK_PIC
- db $0e
+ db LEGENDARY_ARTICUNO_DECK_ID
db $04
db $17
RodData:
@@ -822,7 +823,7 @@ RodData:
dw $7740 ; Pointer to OWScript
tx Text03d7
db ROD_PIC
- db $0f
+ db LEGENDARY_DRAGONITE_DECK_ID
db $04
db $17
Clerk10Data:
@@ -1314,7 +1315,7 @@ AaronData:
dw $58dd ; Pointer to OWScript
tx Text03e7
db AARON_PIC
- db $09
+ db LIGHTNING_AND_FIRE_DECK_ID
db $02
db $15
GuideData:
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
diff --git a/src/macros/scripts.asm b/src/macros/scripts.asm
index b7d07cb..d74db03 100644
--- a/src/macros/scripts.asm
+++ b/src/macros/scripts.asm
@@ -24,7 +24,7 @@ ENDM
const Func_cda8_index ; $07
const OWScript_PrintTextQuitFully_index ; $08
const Func_cdcb_index ; $09
- const Func_ce26_index ; $0a
+ const OWScript_MoveActiveNPCByDirection_index ; $0a
const OWScript_CloseTextBox_index ; $0b
const OWScript_GiveBoosterPacks_index ; $0c
const Func_cf0c_index ; $0d
@@ -73,7 +73,7 @@ ENDM
const OWScript_OpenDeckMachine_index ; $38
const Func_d271_index ; $39
const OWScript_EnterMap_index ; $3a
- const Func_ce6f_index ; $3b
+ const OWScript_MoveArbitraryNPC_index ; $3b
const Func_d209_index ; $3c
const Func_d38f_index ; $3d
const Func_d396_index ; $3e