summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/constants.asm3
-rw-r--r--src/constants/misc_constants.asm8
-rw-r--r--src/constants/npc_constants.asm18
-rw-r--r--src/constants/script_constants.asm128
-rw-r--r--src/engine/bank03.asm507
-rw-r--r--src/engine/bank04.asm12
-rw-r--r--src/engine/bank07.asm128
-rw-r--r--src/engine/home.asm37
-rw-r--r--src/macros/code.asm18
-rw-r--r--src/macros/constants.asm6
-rw-r--r--src/macros/scripts.asm2
-rw-r--r--src/macros/wram.asm15
-rw-r--r--src/wram.asm24
13 files changed, 523 insertions, 383 deletions
diff --git a/src/constants.asm b/src/constants.asm
index 76b206c..7ad156b 100644
--- a/src/constants.asm
+++ b/src/constants.asm
@@ -16,4 +16,5 @@ INCLUDE "constants/sgb_constants.asm"
INCLUDE "constants/sfx_constants.asm"
INCLUDE "constants/sprite_constants.asm"
INCLUDE "constants/text_constants.asm"
-INCLUDE "constants/charmaps.asm" \ No newline at end of file
+INCLUDE "constants/charmaps.asm"
+INCLUDE "constants/script_constants.asm"
diff --git a/src/constants/misc_constants.asm b/src/constants/misc_constants.asm
index 53b2be4..b31631a 100644
--- a/src/constants/misc_constants.asm
+++ b/src/constants/misc_constants.asm
@@ -44,11 +44,3 @@ FLUSH_ALL_PALS_F EQU 6
const GAME_EVENT_CONTINUE_DUEL ; $5
const GAME_EVENT_CHALLENGE_MACHINE ; $6
NUM_GAME_EVENTS EQU const_value
-
-; Script constant
-NO_JUMP EQU $0000
-
-NORTH EQU $00
-EAST EQU $01
-SOUTH EQU $02
-WEST EQU $03
diff --git a/src/constants/npc_constants.asm b/src/constants/npc_constants.asm
index f85dc1c..9e3911c 100644
--- a/src/constants/npc_constants.asm
+++ b/src/constants/npc_constants.asm
@@ -1,3 +1,21 @@
+LOADED_NPC_MAX EQU $08
+
+; wLoadedNPCs structure
+ const_def
+ const LOADED_NPC_ID
+ const LOADED_NPC_SPRITE
+ const LOADED_NPC_COORD_X
+ const LOADED_NPC_COORD_Y
+ const LOADED_NPC_DIRECTION
+ const LOADED_NPC_FIELD_05
+ const LOADED_NPC_FIELD_06
+ const LOADED_NPC_FIELD_07
+ const LOADED_NPC_FIELD_08
+ const LOADED_NPC_FIELD_09
+ const LOADED_NPC_FIELD_0A
+ const LOADED_NPC_FIELD_0B
+LOADED_NPC_LENGTH EQU const_value
+
; npc_struct constants
const_def
const NPC_TRAINER_ID
diff --git a/src/constants/script_constants.asm b/src/constants/script_constants.asm
new file mode 100644
index 0000000..398eeb3
--- /dev/null
+++ b/src/constants/script_constants.asm
@@ -0,0 +1,128 @@
+ const_def
+ const EVENT_FLAG_00
+ const EVENT_FLAG_01
+ const EVENT_FLAG_02
+ const EVENT_FLAG_03
+ const EVENT_FLAG_04
+ const EVENT_FLAG_05
+ const EVENT_FLAG_06
+ const EVENT_FLAG_07
+ const EVENT_FLAG_08
+ const EVENT_FLAG_09
+ const EVENT_FLAG_0A
+ const EVENT_BEAT_AMY
+ const EVENT_FLAG_0C
+ const EVENT_FLAG_0D
+ const EVENT_FLAG_0E
+ const EVENT_FLAG_0F
+ const EVENT_FLAG_10
+ const EVENT_FLAG_11
+ const EVENT_FLAG_12
+ const EVENT_FLAG_13
+ const EVENT_FLAG_14
+ const EVENT_BEAT_SARA
+ const EVENT_BEAT_AMANDA
+ const EVENT_FLAG_17
+ const EVENT_FLAG_18
+ const EVENT_FLAG_19
+ const EVENT_FLAG_1A
+ const EVENT_FLAG_1B
+ const EVENT_FLAG_1C
+ const EVENT_FLAG_1D
+ const EVENT_FLAG_1E
+ const EVENT_FLAG_1F
+ const EVENT_FLAG_20
+ const EVENT_FLAG_21
+ const EVENT_FLAG_22
+ const EVENT_FLAG_23
+ const EVENT_FLAG_24
+ const EVENT_FLAG_25
+ const EVENT_FLAG_26
+ const EVENT_FLAG_27
+ const EVENT_FLAG_28
+ const EVENT_FLAG_29
+ const EVENT_FLAG_2A
+ const EVENT_FLAG_2B
+ const EVENT_FLAG_2C
+ const EVENT_FLAG_2D
+ const EVENT_FLAG_2E
+ const EVENT_FLAG_2F
+ const EVENT_FLAG_30
+ const EVENT_FLAG_31
+ const EVENT_FLAG_32
+ const EVENT_JOSHUA_STATE
+ const EVENT_FLAG_34
+ const EVENT_FLAG_35
+ const EVENT_FLAG_36
+ const EVENT_FLAG_37
+ const EVENT_FLAG_38
+ const EVENT_FLAG_39
+ const EVENT_FLAG_3A
+ const EVENT_FLAG_3B
+ const FLAG_BEAT_BRITTANY
+ const EVENT_FLAG_3D
+ const EVENT_FLAG_3E
+ const EVENT_FLAG_3F
+ const EVENT_FLAG_40
+ const EVENT_FLAG_41
+ const EVENT_FLAG_42
+ const EVENT_FLAG_43
+ const EVENT_FLAG_44
+ const EVENT_FLAG_45
+ const EVENT_FLAG_46
+ const EVENT_FLAG_47
+ const EVENT_FLAG_48
+ const EVENT_FLAG_49
+ const EVENT_FLAG_4A
+ const EVENT_FLAG_4B
+ const EVENT_FLAG_4C
+ const EVENT_FLAG_4D
+ const EVENT_FLAG_4E
+ const EVENT_FLAG_4F
+ const EVENT_FLAG_50
+ const EVENT_FLAG_51
+ const EVENT_FLAG_52
+ const EVENT_FLAG_53
+ const EVENT_FLAG_54
+ const EVENT_FLAG_55
+ const EVENT_FLAG_56
+ const EVENT_FLAG_57
+ const EVENT_FLAG_58
+ const EVENT_FLAG_59
+ const EVENT_FLAG_5A
+ const EVENT_FLAG_5B
+ const EVENT_FLAG_5C
+ const EVENT_FLAG_5D
+ const EVENT_FLAG_5E
+ const EVENT_FLAG_5F
+ const EVENT_FLAG_60
+ const EVENT_FLAG_61
+ const EVENT_FLAG_62
+ const EVENT_FLAG_63
+ const EVENT_FLAG_64
+ const EVENT_FLAG_65
+ const EVENT_FLAG_66
+ const EVENT_FLAG_67
+ const EVENT_FLAG_68
+ const EVENT_FLAG_69
+ const EVENT_FLAG_6A
+ const EVENT_FLAG_6B
+ const EVENT_FLAG_6C
+ const EVENT_FLAG_6D
+ const EVENT_FLAG_6E
+ const EVENT_FLAG_6F
+ const EVENT_FLAG_70
+ const EVENT_FLAG_71
+ const EVENT_FLAG_72
+ const EVENT_FLAG_73
+ const EVENT_FLAG_74
+ const EVENT_FLAG_75
+ const EVENT_FLAG_76
+EVENT_FLAG_AMOUNT EQU const_value
+
+NO_JUMP EQU $0000
+
+NORTH EQU $00
+EAST EQU $01
+SOUTH EQU $02
+WEST EQU $03
diff --git a/src/engine/bank03.asm b/src/engine/bank03.asm
index 5330bd1..c75c009 100644
--- a/src/engine/bank03.asm
+++ b/src/engine/bank03.asm
@@ -109,18 +109,18 @@ Func_c0ed: ; c0ed (3:40ed)
Func_c0f1: ; c0f1 (3:40f1)
ld a, [wd3b6]
- ld [wd3aa], a
- farcall Func_1c768
+ ld [wLoadedNPCTempIndex], a
+ farcall SetNewOWSequenceNPC
ld a, c
- ld [wd0c6], a
+ ld [wNextOWSequence], a
ld a, b
- ld [wd0c7], a
+ ld [wNextOWSequence+1], a
ld a, $3
ld [wd0bf], a
jr Func_c10a
Func_c10a: ; c10a (3:410a)
- ld hl, wd0c6
+ ld hl, wNextOWSequence
ld a, [hli]
ld h, [hl]
ld l, a
@@ -135,7 +135,7 @@ CloseAdvancedDialogueBox: ; c111 (3:4111)
bit 1, a
jr z, .asm_c12a
ld a, [wd3b6]
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
farcall Func_1c5e9
.asm_c12a
xor a
@@ -177,11 +177,11 @@ Func_c158: ; c158 (3:4158)
ret nz
ld a, [wd0c4]
ld [wTempNPC], a
- call Func_39c3
+ call FindLoadedNPC
jr c, .asm_c179
- ld a, [wd3aa]
- ld l, $4
- call Func_39ad
+ ld a, [wLoadedNPCTempIndex]
+ ld l, LOADED_NPC_DIRECTION
+ call GetItemInLoadedNPCIndex
ld a, [wd0c5]
ld [hl], a
farcall Func_1c58e
@@ -283,7 +283,7 @@ Func_c228: ; c228 (3:4228)
ld [wd0bc], a
ld a, [wPlayerYCoord]
ld [wd0bd], a
- ld a, [wd334]
+ ld a, [wPlayerDirection]
ld [wd0be], a
ret
@@ -591,7 +591,7 @@ Func_c4b9: ; c4b9 (3:44b9)
ld b, a
.asm_c4ee
ld a, b
- ld [wd334], a
+ ld [wPlayerDirection], a
call Func_c5e9
ld a, [wCurMap]
cp OVERWORLD_MAP
@@ -716,7 +716,7 @@ Func_c5ac: ; c5ac (3:45ac)
Func_c5cb: ; c5cb (3:45cb)
call Func_c5d5
Func_c5ce: ; c5ce (3:45ce)
- ld [wd334], a
+ ld [wPlayerDirection], a
call Func_c5e9
ret
@@ -744,7 +744,7 @@ Func_c5e9: ; c5e9 (3:45e9)
ld [wWhichSprite], a
ld a, [wd337]
ld b, a
- ld a, [wd334]
+ ld a, [wPlayerDirection]
add b
farcall Func_12ab5
pop bc
@@ -802,7 +802,7 @@ AttemptScriptedMovement: ; c619 (3:4619)
ret
Func_c653: ; c653 (3:4653)
- ld a, [wd334]
+ ld a, [wPlayerDirection]
FindScriptedMovementWithOffset: ; c656 (3:4656)
rlca
@@ -833,7 +833,7 @@ Func_c66c: ; c66c (3:466c)
jr c, .asm_c67e
inc c
.asm_c67e
- ld a, [wd334]
+ ld a, [wPlayerDirection]
call Func_c694
pop bc
pop hl
@@ -949,7 +949,7 @@ Func_c71e: ; c71e (3:471e)
jr z, .asm_c73d
farcall Func_1c72e
jr c, .asm_c73d
- ld a, [wd3aa]
+ ld a, [wLoadedNPCTempIndex]
ld [wd3b6], a
ld a, $2
jr .asm_c748
@@ -1201,18 +1201,18 @@ Func_c915: ; c915 (3:4915)
pop bc
ret
-Func_c926: ; c926 (3:4926)
+SetNextNPCAndOWSequence: ; c926 (3:4926)
push bc
- call Func_39c3
- ld a, [wd3aa]
+ call FindLoadedNPC
+ ld a, [wLoadedNPCTempIndex]
ld [wd3b6], a
- farcall Func_1c768
+ farcall SetNewOWSequenceNPC
pop bc
; fallthrough
-Func_c935: ; c935 (3:4935)
+SetNextOWSequence: ; c935 (3:4935)
push hl
- ld hl, wd0c6
+ ld hl, wNextOWSequence
ld [hl], c
inc hl
ld [hl], b
@@ -1332,8 +1332,7 @@ Func_c9dd: ; c9dd (3:49dd)
Func_c9e8: ; c9e8 (3:49e8)
ld c, $0
- call Func_ca69
- db $13
+ get_flag_value EVENT_FLAG_13
cp $2
jr c, .asm_ca04
.asm_c9f2
@@ -1348,8 +1347,7 @@ Func_c9e8: ; c9e8 (3:49e8)
jr z, .asm_c9f2
.asm_ca04
ld a, c
- call Func_ca8f
- db $34
+ set_flag_value EVENT_FLAG_34
ret
Unknown_ca0a: ; ca0a (3:4a04)
@@ -1359,12 +1357,10 @@ Func_ca0e: ; ca0e (3:4a0e)
ld a, [wd32e]
cp $b
jr z, .asm_ca68
- call Func_ca69
- db $22
+ get_flag_value EVENT_FLAG_22
or a
jr nz, .asm_ca4a
- call Func_ca69
- db $40
+ get_flag_value EVENT_FLAG_40
cp $7
jr z, .asm_ca68
or a
@@ -1372,12 +1368,10 @@ Func_ca0e: ; ca0e (3:4a0e)
cp $2
jr z, .asm_ca62
ld c, $1
- call Func_ca8f
- db $40
+ set_flag_value EVENT_FLAG_40
jr .asm_ca62
.asm_ca33
- call Func_ca69
- db $3f
+ get_flag_value EVENT_FLAG_3F
cp $7
jr z, .asm_ca68
or a
@@ -1385,8 +1379,7 @@ Func_ca0e: ; ca0e (3:4a0e)
cp $2
jr z, .asm_ca68
ld c, $1
- call Func_ca8f
- db $3f
+ set_flag_value EVENT_FLAG_3F
jr .asm_ca68
.asm_ca4a
call UpdateRNGSources
@@ -1396,22 +1389,20 @@ Func_ca0e: ; ca0e (3:4a0e)
jr z, .asm_ca56
ld c, $0
.asm_ca56
- call Func_ca8f
- db $41
+ set_flag_value EVENT_FLAG_41
jr .asm_ca5c
.asm_ca5c
ld c, $7
- call Func_ca8f
- db $40
+ set_flag_value EVENT_FLAG_40
.asm_ca62
ld c, $7
- call Func_ca8f
- db $3f
+ set_flag_value EVENT_FLAG_3F
.asm_ca68
ret
-Func_ca69: ; ca69 (3:4a69)
- call Func_cab3
+GetStackFlagValue: ; ca69 (3:4a69)
+ call GetByteAfterCall
+; fallthrough
; returns the event flag's value in a
; also ors it with itself before returning
@@ -1437,8 +1428,11 @@ GetEventFlagValue: ; ca6c (3:4a6c)
INCROM $ca84, $ca8f
-Func_ca8f: ; ca8f (3:4a8f)
- call Func_cab3
+; Use macro set_flag_value. The byte db'd after this func is called
+; is used at the flag argument for SetEventFlagValue
+SetStackFlagValue: ; ca8f (3:4a8f)
+ call GetByteAfterCall
+; fallthrough
; a - flag
; c - value - truncated to fit only the flag's bounds
@@ -1466,7 +1460,8 @@ SetEventFlagValue: ; ca92 (3:4a92)
pop hl
ret
-Func_cab3: ; cab3 (3:4ab3)
+; returns in a the byte db'd after the call to a function that calls this
+GetByteAfterCall: ; cab3 (3:4ab3)
push hl
ld hl, sp+$4
push bc
@@ -1493,8 +1488,8 @@ MaxOutEventFlag: ; cac5 (3:4ac5)
ret
; 0xcacd
-Func_cacd: ; cacd (3:4acd)
- call Func_cab3
+ZeroStackFlagValue: ; cacd (3:4acd)
+ call GetByteAfterCall
; fallthrough
ZeroOutEventFlag: ; cad0 (3:4ad0)
@@ -1519,8 +1514,8 @@ Func_cad8: ; cad8 (3:4ad8)
dec c
jr nz, .asm_cae0
ld c, b
- call Func_ca8f
- ld l, $79
+ set_flag_value EVENT_FLAG_2E
+ ld a, c
push af
cp $8
jr nc, .asm_caff
@@ -1572,126 +1567,125 @@ GetEventFlag: ; cb1d (3:4b1d)
; offset - bytes to set or reset
EventFlagMods: ; cb37 (3:4b37)
- const_def
- flag_def EVENT_FLAG_00, $3f, %10000000
- flag_def EVENT_FLAG_01, $3f, %01000000
- flag_def EVENT_FLAG_02, $3f, %00100000
- flag_def EVENT_FLAG_03, $3f, %00010000
- flag_def EVENT_FLAG_04, $3f, %00001000
- flag_def EVENT_FLAG_05, $3f, %00000100
- flag_def EVENT_FLAG_06, $3f, %00000010
- flag_def EVENT_FLAG_07, $3f, %00000001
- flag_def EVENT_FLAG_08, $00, %10000000
- flag_def EVENT_FLAG_09, $00, %01000000
- flag_def EVENT_FLAG_0A, $00, %00100000
- flag_def EVENT_BEAT_AMY, $00, %00010000
- flag_def EVENT_FLAG_0C, $00, %00001000
- flag_def EVENT_FLAG_0D, $00, %00000100
- flag_def EVENT_FLAG_0E, $00, %00000010
- flag_def EVENT_FLAG_0F, $00, %00000001
- flag_def EVENT_FLAG_10, $00, %11111111
- flag_def EVENT_FLAG_11, $01, %11110000
- flag_def EVENT_FLAG_12, $01, %00001111
- flag_def EVENT_FLAG_13, $02, %11000000
- flag_def EVENT_FLAG_14, $02, %00110000
- flag_def EVENT_BEAT_SARA, $02, %00001000
- flag_def EVENT_BEAT_AMANDA, $02, %00000100
- flag_def EVENT_FLAG_17, $03, %11110000
- flag_def EVENT_FLAG_18, $03, %00001111
- flag_def EVENT_FLAG_19, $04, %11110000
- flag_def EVENT_FLAG_1A, $04, %00001111
- flag_def EVENT_FLAG_1B, $05, %10000000
- flag_def EVENT_FLAG_1C, $05, %01000000
- flag_def EVENT_FLAG_1D, $05, %00100000
- flag_def EVENT_FLAG_1E, $05, %00010000
- flag_def EVENT_FLAG_1F, $05, %00001111
- flag_def EVENT_FLAG_20, $06, %11110000
- flag_def EVENT_FLAG_21, $06, %00001100
- flag_def EVENT_FLAG_22, $06, %00000010
- flag_def EVENT_FLAG_23, $06, %00000001
- flag_def EVENT_FLAG_24, $07, %11000000
- flag_def EVENT_FLAG_25, $07, %00100000
- flag_def EVENT_FLAG_26, $07, %00010000
- flag_def EVENT_FLAG_27, $07, %00001000
- flag_def EVENT_FLAG_28, $07, %00000100
- flag_def EVENT_FLAG_29, $07, %00000010
- flag_def EVENT_FLAG_2A, $07, %00000001
- flag_def EVENT_FLAG_2B, $08, %11111111
- flag_def EVENT_FLAG_2C, $09, %11100000
- flag_def EVENT_FLAG_2D, $09, %00011111
- flag_def EVENT_FLAG_2E, $0a, %11110000
- flag_def EVENT_FLAG_2F, $0a, %00001000
- flag_def EVENT_FLAG_30, $0a, %00000100
- flag_def EVENT_FLAG_31, $0a, %00000011
- flag_def EVENT_FLAG_32, $0b, %10000000
- flag_def EVENT_JOSHUA_STATE, $0b, %01110000
- flag_def EVENT_FLAG_34, $0b, %00001100
- flag_def EVENT_FLAG_35, $0b, %00000011
- flag_def EVENT_FLAG_36, $0c, %11100000
- flag_def EVENT_FLAG_37, $0c, %00011100
- flag_def EVENT_FLAG_38, $0c, %00000010
- flag_def EVENT_FLAG_39, $0c, %00000001
- flag_def EVENT_FLAG_3A, $0d, %10000000
- flag_def EVENT_FLAG_3B, $0d, %01000000
- flag_def FLAG_BEAT_BRITTANY, $0d, %00100000
- flag_def EVENT_FLAG_3D, $0d, %00010000
- flag_def EVENT_FLAG_3E, $0d, %00001110
- flag_def EVENT_FLAG_3F, $0e, %11100000
- flag_def EVENT_FLAG_40, $0e, %00011100
- flag_def EVENT_FLAG_41, $0f, %11100000
- flag_def EVENT_FLAG_42, $10, %10000000
- flag_def EVENT_FLAG_43, $10, %01000000
- flag_def EVENT_FLAG_44, $10, %00110000
- flag_def EVENT_FLAG_45, $10, %00001100
- flag_def EVENT_FLAG_46, $10, %00000010
- flag_def EVENT_FLAG_47, $10, %00000001
- flag_def EVENT_FLAG_48, $11, %11100000
- flag_def EVENT_FLAG_49, $11, %00011100
- flag_def EVENT_FLAG_4A, $12, %11100000
- flag_def EVENT_FLAG_4B, $13, %10000000
- flag_def EVENT_FLAG_4C, $13, %01100000
- flag_def EVENT_FLAG_4D, $13, %00011000
- flag_def EVENT_FLAG_4E, $13, %00000100
- flag_def EVENT_FLAG_4F, $13, %00000010
- flag_def EVENT_FLAG_50, $14, %10000000
- flag_def EVENT_FLAG_51, $14, %01000000
- flag_def EVENT_FLAG_52, $14, %00100000
- flag_def EVENT_FLAG_53, $14, %00010000
- flag_def EVENT_FLAG_54, $14, %00001000
- flag_def EVENT_FLAG_55, $14, %00000100
- flag_def EVENT_FLAG_56, $14, %00000010
- flag_def EVENT_FLAG_57, $14, %00000001
- flag_def EVENT_FLAG_58, $15, %11110000
- flag_def EVENT_FLAG_59, $15, %00001000
- flag_def EVENT_FLAG_5A, $16, %10000000
- flag_def EVENT_FLAG_5B, $16, %01000000
- flag_def EVENT_FLAG_5C, $16, %00100000
- flag_def EVENT_FLAG_5D, $16, %00010000
- flag_def EVENT_FLAG_5E, $16, %00001000
- flag_def EVENT_FLAG_5F, $16, %00000100
- flag_def EVENT_FLAG_60, $16, %00000010
- flag_def EVENT_FLAG_61, $16, %00000001
- flag_def EVENT_FLAG_62, $16, %11111111
- flag_def EVENT_FLAG_63, $17, %10000000
- flag_def EVENT_FLAG_64, $17, %01000000
- flag_def EVENT_FLAG_65, $17, %00110000
- flag_def EVENT_FLAG_66, $17, %00001000
- flag_def EVENT_FLAG_67, $17, %00000100
- flag_def EVENT_FLAG_68, $18, %11000000
- flag_def EVENT_FLAG_69, $18, %00110000
- flag_def EVENT_FLAG_6A, $18, %00001100
- flag_def EVENT_FLAG_6B, $18, %00000011
- flag_def EVENT_FLAG_6C, $19, %11000000
- flag_def EVENT_FLAG_6D, $19, %00100000
- flag_def EVENT_FLAG_6E, $19, %00010000
- flag_def EVENT_FLAG_6F, $19, %00001000
- flag_def EVENT_FLAG_70, $19, %00000100
- flag_def EVENT_FLAG_71, $19, %00111100
- flag_def EVENT_FLAG_72, $1a, %11111100
- flag_def EVENT_FLAG_73, $1a, %00000011
- flag_def EVENT_FLAG_74, $1b, %11111111
- flag_def EVENT_FLAG_75, $1c, %11110000
- flag_def EVENT_FLAG_76, $1c, %00001111
+ flag_def $3f, %10000000 ; EVENT_FLAG_00
+ flag_def $3f, %01000000 ; EVENT_FLAG_01
+ flag_def $3f, %00100000 ; EVENT_FLAG_02
+ flag_def $3f, %00010000 ; EVENT_FLAG_03
+ flag_def $3f, %00001000 ; EVENT_FLAG_04
+ flag_def $3f, %00000100 ; EVENT_FLAG_05
+ flag_def $3f, %00000010 ; EVENT_FLAG_06
+ flag_def $3f, %00000001 ; EVENT_FLAG_07
+ flag_def $00, %10000000 ; EVENT_FLAG_08
+ flag_def $00, %01000000 ; EVENT_FLAG_09
+ flag_def $00, %00100000 ; EVENT_FLAG_0A
+ flag_def $00, %00010000 ; EVENT_BEAT_AMY
+ flag_def $00, %00001000 ; EVENT_FLAG_0C
+ flag_def $00, %00000100 ; EVENT_FLAG_0D
+ flag_def $00, %00000010 ; EVENT_FLAG_0E
+ flag_def $00, %00000001 ; EVENT_FLAG_0F
+ flag_def $00, %11111111 ; EVENT_FLAG_10
+ flag_def $01, %11110000 ; EVENT_FLAG_11
+ flag_def $01, %00001111 ; EVENT_FLAG_12
+ flag_def $02, %11000000 ; EVENT_FLAG_13
+ flag_def $02, %00110000 ; EVENT_FLAG_14
+ flag_def $02, %00001000 ; EVENT_BEAT_SARA
+ flag_def $02, %00000100 ; EVENT_BEAT_AMANDA
+ flag_def $03, %11110000 ; EVENT_FLAG_17
+ flag_def $03, %00001111 ; EVENT_FLAG_18
+ flag_def $04, %11110000 ; EVENT_FLAG_19
+ flag_def $04, %00001111 ; EVENT_FLAG_1A
+ flag_def $05, %10000000 ; EVENT_FLAG_1B
+ flag_def $05, %01000000 ; EVENT_FLAG_1C
+ flag_def $05, %00100000 ; EVENT_FLAG_1D
+ flag_def $05, %00010000 ; EVENT_FLAG_1E
+ flag_def $05, %00001111 ; EVENT_FLAG_1F
+ flag_def $06, %11110000 ; EVENT_FLAG_20
+ flag_def $06, %00001100 ; EVENT_FLAG_21
+ flag_def $06, %00000010 ; EVENT_FLAG_22
+ flag_def $06, %00000001 ; EVENT_FLAG_23
+ flag_def $07, %11000000 ; EVENT_FLAG_24
+ flag_def $07, %00100000 ; EVENT_FLAG_25
+ flag_def $07, %00010000 ; EVENT_FLAG_26
+ flag_def $07, %00001000 ; EVENT_FLAG_27
+ flag_def $07, %00000100 ; EVENT_FLAG_28
+ flag_def $07, %00000010 ; EVENT_FLAG_29
+ flag_def $07, %00000001 ; EVENT_FLAG_2A
+ flag_def $08, %11111111 ; EVENT_FLAG_2B
+ flag_def $09, %11100000 ; EVENT_FLAG_2C
+ flag_def $09, %00011111 ; EVENT_FLAG_2D
+ flag_def $0a, %11110000 ; EVENT_FLAG_2E
+ flag_def $0a, %00001000 ; EVENT_FLAG_2F
+ flag_def $0a, %00000100 ; EVENT_FLAG_30
+ flag_def $0a, %00000011 ; EVENT_FLAG_31
+ flag_def $0b, %10000000 ; EVENT_FLAG_32
+ flag_def $0b, %01110000 ; EVENT_JOSHUA_STATE
+ flag_def $0b, %00001100 ; EVENT_FLAG_34
+ flag_def $0b, %00000011 ; EVENT_FLAG_35
+ flag_def $0c, %11100000 ; EVENT_FLAG_36
+ flag_def $0c, %00011100 ; EVENT_FLAG_37
+ flag_def $0c, %00000010 ; EVENT_FLAG_38
+ flag_def $0c, %00000001 ; EVENT_FLAG_39
+ flag_def $0d, %10000000 ; EVENT_FLAG_3A
+ flag_def $0d, %01000000 ; EVENT_FLAG_3B
+ flag_def $0d, %00100000 ; FLAG_BEAT_BRITTANY
+ flag_def $0d, %00010000 ; EVENT_FLAG_3D
+ flag_def $0d, %00001110 ; EVENT_FLAG_3E
+ flag_def $0e, %11100000 ; EVENT_FLAG_3F
+ flag_def $0e, %00011100 ; EVENT_FLAG_40
+ flag_def $0f, %11100000 ; EVENT_FLAG_41
+ flag_def $10, %10000000 ; EVENT_FLAG_42
+ flag_def $10, %01000000 ; EVENT_FLAG_43
+ flag_def $10, %00110000 ; EVENT_FLAG_44
+ flag_def $10, %00001100 ; EVENT_FLAG_45
+ flag_def $10, %00000010 ; EVENT_FLAG_46
+ flag_def $10, %00000001 ; EVENT_FLAG_47
+ flag_def $11, %11100000 ; EVENT_FLAG_48
+ flag_def $11, %00011100 ; EVENT_FLAG_49
+ flag_def $12, %11100000 ; EVENT_FLAG_4A
+ flag_def $13, %10000000 ; EVENT_FLAG_4B
+ flag_def $13, %01100000 ; EVENT_FLAG_4C
+ flag_def $13, %00011000 ; EVENT_FLAG_4D
+ flag_def $13, %00000100 ; EVENT_FLAG_4E
+ flag_def $13, %00000010 ; EVENT_FLAG_4F
+ flag_def $14, %10000000 ; EVENT_FLAG_50
+ flag_def $14, %01000000 ; EVENT_FLAG_51
+ flag_def $14, %00100000 ; EVENT_FLAG_52
+ flag_def $14, %00010000 ; EVENT_FLAG_53
+ flag_def $14, %00001000 ; EVENT_FLAG_54
+ flag_def $14, %00000100 ; EVENT_FLAG_55
+ flag_def $14, %00000010 ; EVENT_FLAG_56
+ flag_def $14, %00000001 ; EVENT_FLAG_57
+ flag_def $15, %11110000 ; EVENT_FLAG_58
+ flag_def $15, %00001000 ; EVENT_FLAG_59
+ flag_def $16, %10000000 ; EVENT_FLAG_5A
+ flag_def $16, %01000000 ; EVENT_FLAG_5B
+ flag_def $16, %00100000 ; EVENT_FLAG_5C
+ flag_def $16, %00010000 ; EVENT_FLAG_5D
+ flag_def $16, %00001000 ; EVENT_FLAG_5E
+ flag_def $16, %00000100 ; EVENT_FLAG_5F
+ flag_def $16, %00000010 ; EVENT_FLAG_60
+ flag_def $16, %00000001 ; EVENT_FLAG_61
+ flag_def $16, %11111111 ; EVENT_FLAG_62
+ flag_def $17, %10000000 ; EVENT_FLAG_63
+ flag_def $17, %01000000 ; EVENT_FLAG_64
+ flag_def $17, %00110000 ; EVENT_FLAG_65
+ flag_def $17, %00001000 ; EVENT_FLAG_66
+ flag_def $17, %00000100 ; EVENT_FLAG_67
+ flag_def $18, %11000000 ; EVENT_FLAG_68
+ flag_def $18, %00110000 ; EVENT_FLAG_69
+ flag_def $18, %00001100 ; EVENT_FLAG_6A
+ flag_def $18, %00000011 ; EVENT_FLAG_6B
+ flag_def $19, %11000000 ; EVENT_FLAG_6C
+ flag_def $19, %00100000 ; EVENT_FLAG_6D
+ flag_def $19, %00010000 ; EVENT_FLAG_6E
+ flag_def $19, %00001000 ; EVENT_FLAG_6F
+ flag_def $19, %00000100 ; EVENT_FLAG_70
+ flag_def $19, %00111100 ; EVENT_FLAG_71
+ flag_def $1a, %11111100 ; EVENT_FLAG_72
+ flag_def $1a, %00000011 ; EVENT_FLAG_73
+ flag_def $1b, %11111111 ; EVENT_FLAG_74
+ flag_def $1c, %11110000 ; EVENT_FLAG_75
+ flag_def $1c, %00001111 ; EVENT_FLAG_76
Func_cc25: ; cc25 (3:4c25)
ld hl, wd0ca
@@ -1877,8 +1871,8 @@ OWScript_AskQuestionJump: ; cce9 (3:4ce9)
OWScript_StartBattle: ; cd01 (3:4d01)
call Func_cd66
ld a, [wd3b6]
- ld l, $0
- call Func_39ad
+ ld l, LOADED_NPC_ID
+ call GetItemInLoadedNPCIndex
ld a, [hl]
farcall Func_118d3
ld a, [wcc19]
@@ -1893,8 +1887,8 @@ OWScript_StartBattle: ; cd01 (3:4d01)
ld [wcc19], a
.asm_cd26
ld a, [wd3b6]
- ld l, $0
- call Func_39ad
+ ld l, LOADED_NPC_ID
+ call GetItemInLoadedNPCIndex
ld a, [hl]
asm_cd2f
ld [wd0c4], a
@@ -1952,8 +1946,7 @@ OWScript_PrintVariableText: ; cd83 (3:4d83)
jp IncreaseOWScriptPointerBy5
Func_cd94: ; cd94 (3:4d94)
- call Func_ca69
- db $44
+ get_flag_value EVENT_FLAG_44
Unknown_cd98:
dec a
and $3
@@ -1989,28 +1982,28 @@ OWScript_PrintTextCloseBox: ; cdb9 (3:4db9)
Func_cdcb: ; cdcb (3:4dcb)
ld a, [wd3b6]
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
Func_cdd1: ; cdd1 (3:4dd1)
farcall Func_1c50a
jp IncreaseOWScriptPointerBy1
Func_cdd8: ; cdd8 (3:4dd8)
- ld a, [wd3aa]
+ ld a, [wLoadedNPCTempIndex]
push af
ld a, [wTempNPC]
push af
ld a, [wd696]
ld [wTempNPC], a
- call Func_39c3
+ call FindLoadedNPC
call Func_cdd1
pop af
ld [wTempNPC], a
pop af
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
ret
Func_cdf5: ; cdf5 (3:4df5)
- ld a, [wd3aa]
+ ld a, [wLoadedNPCTempIndex]
push af
ld a, [wTempNPC]
push af
@@ -2028,12 +2021,12 @@ Func_cdf5: ; cdf5 (3:4df5)
pop af
ld [wTempNPC], a
pop af
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
jp IncreaseOWScriptPointerBy3
Func_ce26: ; ce26 (3:4e26)
ld a, [wd3b6]
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
farcall Func_1c455
rlca
add c
@@ -2055,27 +2048,27 @@ Func_ce3a: ; ce3a (3:4e3a)
Func_ce4a: ; ce4a (3:4e4a)
ld a, [wd3b6]
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
jr Func_ce3a
Func_ce52: ; ce52 (3:4e52)
- ld a, [wd3aa]
+ ld a, [wLoadedNPCTempIndex]
push af
ld a, [wTempNPC]
push af
ld a, [wd696]
asm_ce5d
ld [wTempNPC], a
- call Func_39c3
+ call FindLoadedNPC
call Func_ce3a
pop af
ld [wTempNPC], a
pop af
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
ret
Func_ce6f: ; ce6f (3:4e6f)
- ld a, [wd3aa]
+ ld a, [wLoadedNPCTempIndex]
push af
ld a, [wTempNPC]
push af
@@ -2274,8 +2267,7 @@ Func_cf7b: ; cf7b (3:4f7b)
Func_cf96: ; cf96 (3:4f96)
ld c, $0
- call Func_ca69
- db $11
+ get_flag_value EVENT_FLAG_11
or a
jr z, Func_cfc0
cp a, $08
@@ -2283,15 +2275,13 @@ Func_cf96: ; cf96 (3:4f96)
inc c
.asm_cfa4
- call Func_ca69
- db $17
+ get_flag_value EVENT_FLAG_17
cp $8
jr c, .asm_cfad
inc c
.asm_cfad
- call Func_ca69
- db $20
+ get_flag_value EVENT_FLAG_20
cp a, $08
jr c, .asm_cfb6
inc c
@@ -2308,14 +2298,13 @@ Func_cfc0: ; cfc0 (3:4fc0)
Func_cfc6: ; cfc6 (3:4fc6)
ld a, [wd3b6]
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
ld a, c
farcall Func_1c52e
jp IncreaseOWScriptPointerBy2
Func_cfd4: ; cfd4 (3:4fd4)
- call Func_ca69
- db $2d
+ get_flag_value EVENT_FLAG_2D
ld b, a
.asm_cfd9
ld a, $5
@@ -2339,15 +2328,13 @@ Func_cfd4: ; cfd4 (3:4fd4)
or b
push bc
ld c, a
- call Func_ca8f
- dec l
+ set_flag_value EVENT_FLAG_2D
pop bc
ld b, $0
ld hl, Data_d006
add hl, bc
ld c, [hl]
- call Func_ca8f
- dec hl
+ set_flag_value EVENT_FLAG_2B
jp IncreaseOWScriptPointerBy1
Data_d006: ; d006 (3:5006)
@@ -2359,8 +2346,7 @@ Func_d00b: ; d00b (3:500b)
ld hl, wTxRam2
add hl, bc
push hl
- call Func_ca69
- db $2b
+ get_flag_value EVENT_FLAG_2B
ld e, a
ld d, $0
call GetCardName
@@ -2371,22 +2357,19 @@ Func_d00b: ; d00b (3:500b)
jp IncreaseOWScriptPointerBy2
Func_d025: ; d025 (3:5025)
- call Func_ca69
- db $2b
+ get_flag_value EVENT_FLAG_2B
call GetCardCountInCollectionAndDecks
jp c, Func_cf67
jp Func_cf6d
Func_d032: ; d032 (3:5032)
- call Func_ca69
- db $2b
+ get_flag_value EVENT_FLAG_2B
call GetCardCountInCollection
jp c, Func_cf67
jp Func_cf6d
Func_d03f: ; d03f (3:503f)
- call Func_ca69
- db $2b
+ get_flag_value EVENT_FLAG_2B
call RemoveCardFromCollection
jp IncreaseOWScriptPointerBy1
@@ -2433,17 +2416,17 @@ Func_d088: ; d088 (3:5088)
ld a, c
ld [wTempNPC], a
call GetOWSArgs2AfterPointer
- call Func_c926
+ call SetNextNPCAndOWSequence
jp IncreaseOWScriptPointerBy4
Func_d095: ; d095 (3:5095)
ld a, [wd3b6]
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
push bc
call GetOWSArgs3AfterPointer
ld a, [wd3b6]
- ld l, $5
- call Func_39ad
+ ld l, LOADED_NPC_FIELD_05
+ call GetItemInLoadedNPCIndex
res 4, [hl]
ld a, [hl]
or c
@@ -2462,7 +2445,7 @@ Func_d095: ; d095 (3:5095)
Func_d0be: ; d0be (3:50be)
ld a, [wd3b6]
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
ld a, c
ld c, b
ld b, a
@@ -2479,7 +2462,7 @@ OWScript_DoFrames: ; d0ce (3:50ce)
Func_d0d9: ; d0d9 (3:50d9)
ld a, [wd3b6]
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
ld d, c
ld e, b
farcall Func_1c477
@@ -2501,13 +2484,13 @@ Func_d0f2: ; d0f2 (3:50f2)
jp ScriptEventPassedTryJump
Func_d103: ; d103 (3:5103)
- ld a, [wd3aa]
+ ld a, [wLoadedNPCTempIndex]
push af
ld a, [wTempNPC]
push af
ld a, c
ld [wTempNPC], a
- call Func_39c3
+ call FindLoadedNPC
jr c, .asm_d119
call $54d1
jr .asm_d11c
@@ -2519,7 +2502,7 @@ Func_d103: ; d103 (3:5103)
pop af
ld [wTempNPC], a
pop af
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
ret
Func_d125: ; d125 (3:5125)
@@ -2582,12 +2565,10 @@ Func_d16b: ; d16b (3:516b)
Func_d195: ; d195 (3:5195)
ld a, [wTempNPC]
push af
- call Func_ca69
- db $45
+ get_flag_value EVENT_FLAG_45
inc a
ld c, a
- call Func_ca8f
- ld b, l
+ set_flag_value EVENT_FLAG_45
call Func_f580
pop af
ld [wTempNPC], a
@@ -2598,8 +2579,7 @@ Func_d1ad: ; d1ad (3:51ad)
jp IncreaseOWScriptPointerBy1
Func_d1b3: ; d1b3 (3:51b3)
- call Func_ca69
- db $44
+ get_flag_value EVENT_FLAG_44
dec a
cp $2
jr c, .asm_d1c3
@@ -2627,8 +2607,7 @@ asm_d1c6
INCROM $d1dc, $d209
Func_d209: ; d209 (3:5209)
- call Func_ca69
- db $71
+ get_flag_value EVENT_FLAG_71
ld e, a
.asm_d20e
call UpdateRNGSources
@@ -2670,8 +2649,7 @@ Func_d24c: ; d24c (3:524c)
call Func_d28c
ld a, [wd695]
ld c, a
- call Func_ca8f
- halt
+ set_flag_value EVENT_FLAG_76
jp IncreaseOWScriptPointerBy1
INCROM $d25e, $d271
@@ -2767,8 +2745,7 @@ Func_d2f6: ; d2f6 (3:52f6)
call Func_d28c
ld a, [wd694]
ld c, a
- call Func_ca8f
- ld [hl], l
+ set_flag_value EVENT_FLAG_75
xor a
ld [wd694], a
jp IncreaseOWScriptPointerBy1
@@ -2782,8 +2759,7 @@ Func_d317: ; d317 (3:5317)
call Func_d28c
ld a, [wd694]
ld c, a
- call Func_ca8f
- ld [hl], l
+ set_flag_value EVENT_FLAG_75
jp IncreaseOWScriptPointerBy1
@@ -2849,8 +2825,7 @@ Func_d39d: ; d39d (3:539d)
jr nz, .asm_d3ac
farcall Func_10dba
ld c, a
- call Func_ca8f
- ld [hl], d
+ set_flag_value EVENT_FLAG_72
jr .asm_d3b6
.asm_d3ac
@@ -3072,41 +3047,34 @@ OWScript_JumpIfFlagZero2:
LoadOverworld: ; d4ec (3:54ec)
call Func_d4fb
- call Func_ca69
- ld a, $b7
+ get_flag_value EVENT_FLAG_3E
+ or a
ret nz
ld bc, OWSequence_d52e
- jp Func_c935
+ jp SetNextOWSequence
Func_d4fb: ; d4fb (3:54fb)
- call Func_cacd
- ld e, c
+ zero_out_flag EVENT_FLAG_59
call Func_f602
- call Func_ca69
- db $3f
+ get_flag_value EVENT_FLAG_3F
cp $02
jr z, .asm_d527
- call Func_ca69
- db $40
+ get_flag_value EVENT_FLAG_40
cp $02
jr z, .asm_d521
- call Func_ca69
- db $41
+ get_flag_value EVENT_FLAG_41
cp $02
jr z, .asm_d51b
ret
.asm_d51b
ld c, $07
- call Func_ca8f
- ld b, c
+ set_flag_value EVENT_FLAG_41
.asm_d521
ld c, $07
- call Func_ca8f
- ld b, b
+ set_flag_value EVENT_FLAG_40
.asm_d527
ld c, $07
- call Func_ca8f
- ccf
+ set_flag_value EVENT_FLAG_3F
ret
OWSequence_d52e: ; d52e (3:552e)
@@ -3196,14 +3164,13 @@ WaterClubMovePlayer: ; e13f (3:613f)
ld a, [wPlayerYCoord]
cp $8
ret nz
- call Func_ca69
- db $33
+ get_flag_value EVENT_JOSHUA_STATE
cp $2
ret nc
ld a, $21
ld [wTempNPC], a
ld bc, OWSequence_NotReadyToSeeAmy
- jp Func_c926
+ jp SetNextNPCAndOWSequence
WaterClubAfterDuel: ;e157 (3:6157)
ld hl, .after_duel_table
@@ -3669,7 +3636,7 @@ FindEndOfBattleScript: ; e52c (3:652c)
ld c, [hl]
inc hl
ld b, [hl]
- jp Func_c926
+ jp SetNextNPCAndOWSequence
; 0xe553
GrassClubEntranceAfterDuelTable: ; e553 (3:6553)
@@ -3800,34 +3767,32 @@ LoadClubEntrance: ; e809 (3:6809)
TryFirstRonaldEncounter: ; e813 (3:6813)
ld a, RONALD1
ld [wTempNPC], a
- call Func_39c3
+ call FindLoadedNPC
ret c
ld bc, OWSequence_FirstRonaldEncounter
- jp Func_c926
+ jp SetNextNPCAndOWSequence
TryFirstRonaldFight: ; e822 (3:6822)
ld a, RONALD2
ld [$d3ab], a
- call Func_39c3
+ call FindLoadedNPC
ret c
- call Func_ca69
- db $4c
+ get_flag_value EVENT_FLAG_4C
or a
ret nz
ld bc, OWSequence_FirstRonaldFight
- jp Func_c926
+ jp SetNextNPCAndOWSequence
TrySecondRonaldFight: ; e837 (3:6837)
ld a, RONALD3
ld [$d3ab], a
- call Func_39c3
+ call FindLoadedNPC
ret c
- call Func_ca69
- db $4d
+ get_flag_value EVENT_FLAG_4D
or a
ret nz
ld bc, OWSequenceSecondRonaldFight
- jp Func_c926
+ jp SetNextNPCAndOWSequence
; 0xe84c
INCROM $e84c, $e862
@@ -4029,12 +3994,10 @@ OWJump_FinishedSecondRonaldFight ; e959 (3:6959)
INCROM $e963, $f580
Func_f580: ; f580 (3:7580)
- call Func_ca69
- db $44
+ get_flag_value EVENT_FLAG_44
cp $3
jr z, .asm_f596
- call Func_ca69
- db $45
+ get_flag_value EVENT_FLAG_45
cp $3
ld d, $18
jr nz, .asm_f598
@@ -4085,7 +4048,7 @@ Func_fc2b: ; fc2b (3:7c2b)
ld [wCurrentNPCNameTx], a
ld a, $3
ld [wCurrentNPCNameTx+1], a
- jp Func_c935
+ jp SetNextOWSequence
PointerTable_fc4c: ; fc4c (3:7c4c)
dw Unknown_fc64
diff --git a/src/engine/bank04.asm b/src/engine/bank04.asm
index 4cba1d9..c81db5c 100644
--- a/src/engine/bank04.asm
+++ b/src/engine/bank04.asm
@@ -366,7 +366,7 @@ Func_10e71: ; 10e71 (4:4e71)
and D_PAD
jr z, .asm_10e83
farcall Func_c5d5
- ld [wd334], a
+ ld [wPlayerDirection], a
call Func_10e97
jr .asm_10e96
.asm_10e83
@@ -388,7 +388,7 @@ Func_10e97: ; 10e97 (4:4e97)
rlca
rlca
ld c, a
- ld a, [wd334]
+ ld a, [wPlayerDirection]
add c
ld c, a
ld b, $0
@@ -711,7 +711,7 @@ Func_11102: ; 11102 (4:5102)
jr z, .asm_1113a
ld a, $3
.asm_1113a
- ld [wd334], a
+ ld [wPlayerDirection], a
ret
Func_1113e: ; 1113e (4:513e)
@@ -747,7 +747,7 @@ Func_1113e: ; 1113e (4:513e)
jr z, .asm_11175
ld a, $0
.asm_11175
- ld [wd334], a
+ ld [wPlayerDirection], a
ret
Func_11179: ; 11179 (4:5179)
@@ -878,8 +878,8 @@ LoadNPCSpriteData: ; 11857 (4:5857)
pop hl
ret
-; this appears to find data about the NPC we're talking to
-Func_1187d: ; 1187d (4:587d)
+; Loads Name into wCurrentNPCNameTx and gets OWSequence ptr into bc
+GetNPCNameAndOWSequence: ; 1187d (4:587d)
push hl
call GetNPCDataPointer
ld bc, NPC_DATA_OWSEQUENCE_PTR
diff --git a/src/engine/bank07.asm b/src/engine/bank07.asm
index 0b2ec00..4455d3f 100644
--- a/src/engine/bank07.asm
+++ b/src/engine/bank07.asm
@@ -40,7 +40,7 @@ Func_1c056: ; 1c056 (7:4056)
ld [wd0bc], a
ld a, [hli]
ld [wd0bd], a
- ld a, [wd334]
+ ld a, [wPlayerDirection]
ld [wd0be], a
.asm_1c095
pop de
@@ -95,9 +95,9 @@ Func_1c440: ; 1c440 (7:4440)
Func_1c455: ; 1c455 (7:4455)
push hl
- ld a, [wd3aa]
- ld l, $4
- call Func_39ad
+ ld a, [wLoadedNPCTempIndex]
+ ld l, LOADED_NPC_DIRECTION
+ call GetItemInLoadedNPCIndex
ld a, [hl]
pop hl
ret
@@ -106,9 +106,9 @@ Func_1c461: ; 1c461 (7:4461)
push hl
push bc
call Func_1c719
- ld a, [wd3aa]
- ld l, $2
- call Func_39ad
+ ld a, [wLoadedNPCTempIndex]
+ ld l, LOADED_NPC_COORD_X
+ call GetItemInLoadedNPCIndex
ld a, b
ld [hli], a
ld [hl], c
@@ -119,9 +119,9 @@ Func_1c461: ; 1c461 (7:4461)
Func_1c477: ; 1c477 (7:4477)
push hl
- ld a, [wd3aa]
- ld l, $2
- call Func_39ad
+ ld a, [wLoadedNPCTempIndex]
+ ld l, LOADED_NPC_COORD_X
+ call GetItemInLoadedNPCIndex
ld a, [hli]
ld b, a
ld c, [hl]
@@ -134,11 +134,11 @@ Func_1c485: ; 1c485 (7:4485)
push bc
push de
xor a
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
ld b, a
- ld c, $08
- ld hl, wd34a
- ld de, $c
+ ld c, LOADED_NPC_MAX
+ ld hl, wLoadedNPCs
+ ld de, LOADED_NPC_LENGTH
.findEmptyIndexLoop
ld a, [hl]
or a
@@ -147,17 +147,17 @@ Func_1c485: ; 1c485 (7:4485)
inc b
dec c
jr nz, .findEmptyIndexLoop
- ld hl, wd34a
+ ld hl, wLoadedNPCs
debug_ret
jr .exit
.foundEmptyIndex
ld a, b
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
ld a, [wd3b3]
farcall CreateSpriteAndAnimBufferEntry
jr c, .exit
- ld a, [wd3aa]
- call Func_39a7
+ ld a, [wLoadedNPCTempIndex]
+ call GetLoadedNPCID
push hl
ld a, [wTempNPC]
ld [hli], a
@@ -209,8 +209,8 @@ Func_1c4fa: ; 1c4fa (7:44fa)
Func_1c50a: ; 1c50a (7:450a)
push hl
call Func_1c719
- ld a, [wd3aa]
- call Func_39a7
+ ld a, [wLoadedNPCTempIndex]
+ call GetLoadedNPCID
ld a, [hl]
or a
jr z, .asm_1c52c
@@ -234,9 +234,9 @@ Func_1c50a: ; 1c50a (7:450a)
Func_1c52e: ; 1c52e (7:452e)
push hl
push af
- ld a, [wd3aa]
- ld l, $7
- call Func_39ad
+ ld a, [wLoadedNPCTempIndex]
+ ld l, LOADED_NPC_FIELD_07
+ call GetItemInLoadedNPCIndex
pop af
ld [hl], a
call Func_1c5e9
@@ -246,9 +246,9 @@ Func_1c52e: ; 1c52e (7:452e)
Func_1c53f: ; 1c53f (7:453f)
push hl
push bc
- ld a, [wd3aa]
- ld l, $4
- call Func_39ad
+ ld a, [wLoadedNPCTempIndex]
+ ld l, LOADED_NPC_DIRECTION
+ call GetItemInLoadedNPCIndex
ld a, [hl]
ld bc, $0003
add hl, bc
@@ -263,14 +263,14 @@ Func_1c53f: ; 1c53f (7:453f)
Func_1c557: ; 1c557 (7:4557)
push bc
ld c, a
- ld a, [wd3aa]
+ ld a, [wLoadedNPCTempIndex]
push af
ld a, [wTempNPC]
push af
ld a, c
ld [wTempNPC], a
ld c, $0
- call Func_39c3
+ call FindLoadedNPC
jr c, .asm_1c570
call Func_1c53f
ld c, a
@@ -279,7 +279,7 @@ Func_1c557: ; 1c557 (7:4557)
pop af
ld [wTempNPC], a
pop af
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
ld a, c
pop bc
ret
@@ -288,9 +288,9 @@ Func_1c57b: ; 1c57b (7:457b)
push hl
push bc
push af
- ld a, [wd3aa]
- ld l, $6
- call Func_39ad
+ ld a, [wLoadedNPCTempIndex]
+ ld l, LOADED_NPC_FIELD_06
+ call GetItemInLoadedNPCIndex
pop af
ld [hl], a
call Func_1c58e
@@ -303,14 +303,14 @@ Func_1c58e: ; 1c58e (7:458e)
push bc
ld a, [wWhichSprite]
push af
- ld a, [wd3aa]
- call Func_39a7
+ ld a, [wLoadedNPCTempIndex]
+ call GetLoadedNPCID
ld a, [hli]
or a
- jr z, .asm_1c5b2
+ jr z, .quit
ld a, [hl]
ld [wWhichSprite], a
- ld bc, $5
+ ld bc, LOADED_NPC_FIELD_06 - LOADED_NPC_SPRITE
add hl, bc
ld a, [hld]
bit 4, [hl]
@@ -320,7 +320,7 @@ Func_1c58e: ; 1c58e (7:458e)
inc hl
.asm_1c5ae
farcall Func_12ab5
-.asm_1c5b2
+.quit
pop af
ld [wWhichSprite], a
pop bc
@@ -334,9 +334,9 @@ Func_1c5b9: ; 1c5b9 (7:45b9)
Func_1c5e9: ; 1c5e9 (7:45e9)
push hl
push bc
- ld a, [wd3aa]
- ld l, $07
- call Func_39ad
+ ld a, [wLoadedNPCTempIndex]
+ ld l, LOADED_NPC_FIELD_07
+ call GetItemInLoadedNPCIndex
ld a, [hl]
ld bc, $fffd
add hl, bc
@@ -358,9 +358,9 @@ Func_1c665: ; 1c665 (7:4665)
Func_1c6e3: ; 1c6e3 (7:46e3)
push hl
push bc
- ld a, [$d3aa]
- ld l, $02
- call Func_39ad
+ ld a, [wLoadedNPCTempIndex]
+ ld l, LOADED_NPC_COORD_X
+ call GetItemInLoadedNPCIndex
ld a, [hli]
ld b, a
ld c, [hl]
@@ -376,9 +376,9 @@ Func_1c6f8: ; 1c6f8 (7:46f8)
Func_1c719: ; 1c719 (7:4719)
push hl
push bc
- ld a, [wd3aa]
- ld l, $2
- call Func_39ad
+ ld a, [wLoadedNPCTempIndex]
+ ld l, LOADED_NPC_COORD_X
+ call GetItemInLoadedNPCIndex
ld a, [hli]
ld b, a
ld c, [hl]
@@ -391,33 +391,35 @@ Func_1c719: ; 1c719 (7:4719)
Func_1c72e: ; 1c72e (7:472e)
INCROM $1c72e, $1c768
-Func_1c768: ; 1c768 (7:4768)
+; Probably needs a new name. Loads data for NPC that the next OWSequence is for
+; Sets direction, Loads Image data for it, loads name, and more
+SetNewOWSequenceNPC: ; 1c768 (7:4768)
push hl
- ld a, [wd3aa]
- ld l, $04
- call Func_39ad
- ld a, [wd334]
+ ld a, [wLoadedNPCTempIndex]
+ ld l, LOADED_NPC_DIRECTION
+ call GetItemInLoadedNPCIndex
+ ld a, [wPlayerDirection]
xor $02
ld [hl], a
call Func_1c58e
ld a, $02
farcall Func_c29b
- ld a, [wd3aa]
- call Func_39a7
+ ld a, [wLoadedNPCTempIndex]
+ call GetLoadedNPCID
ld a, [hl]
- farcall Func_1187d
+ farcall GetNPCNameAndOWSequence
pop hl
ret
Func_1c78d: ; 1c78d (7:478d)
push hl
- ld a, [wd3aa]
- ld l, $5
- call Func_39ad
+ ld a, [wLoadedNPCTempIndex]
+ ld l, LOADED_NPC_FIELD_05
+ call GetItemInLoadedNPCIndex
set 5, [hl]
- ld a, [wd3aa]
- ld l, $8
- call Func_39ad
+ ld a, [wLoadedNPCTempIndex]
+ ld l, LOADED_NPC_FIELD_08
+ call GetItemInLoadedNPCIndex
xor a
ld [hli], a
.asm_1c7a2
@@ -457,9 +459,9 @@ Func_1c78d: ; 1c78d (7:478d)
jr .asm_1c7a2
.asm_1c7d2
- ld a, [wd3aa]
- ld l, $5
- call Func_39ad
+ ld a, [wLoadedNPCTempIndex]
+ ld l, LOADED_NPC_FIELD_05
+ call GetItemInLoadedNPCIndex
res 5, [hl]
.asm_1c7dc
diff --git a/src/engine/home.asm b/src/engine/home.asm
index adcbabd..4135afa 100644
--- a/src/engine/home.asm
+++ b/src/engine/home.asm
@@ -10908,15 +10908,16 @@ Func_3997: ; 3997 (0:3997)
call BankswitchROM
ret
-Func_39a7: ; 39a7 (0:39a7)
- ld l, $0
- call Func_39ad
+; returns in hl a pointer to the first element for the a'th NPC
+GetLoadedNPCID: ; 39a7 (0:39a7)
+ ld l, LOADED_NPC_ID
+ call GetItemInLoadedNPCIndex
ret
-; return hl = wd34a + a * $c + l, with a < $8
-Func_39ad: ; 39ad (0:39ad)
+; return in hl a pointer to the a'th items element l
+GetItemInLoadedNPCIndex: ; 39ad (0:39ad)
push bc
- cp $8
+ cp LOADED_NPC_MAX
jr c, .asm_39b4
debug_ret
xor a
@@ -10929,24 +10930,24 @@ Func_39ad: ; 39ad (0:39ad)
add l
ld l, a
ld h, $0
- ld bc, wd34a
+ ld bc, wLoadedNPCs
add hl, bc
pop bc
ret
-; Finds the index on wd34a table of the npc in wTempNPC
-; returns it in a and puts it into wd3aa
+; Finds the index on wLoadedNPCs table of the npc in wTempNPC
+; returns it in a and puts it into wLoadedNPCTempIndex
; c flag set if no npc found
-Func_39c3: ; 39c3 (0:39c3)
+FindLoadedNPC: ; 39c3 (0:39c3)
push hl
push bc
push de
xor a
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
ld b, a
- ld c, $8
- ld de, $000c
- ld hl, wd34a
+ ld c, LOADED_NPC_MAX
+ ld de, LOADED_NPC_LENGTH
+ ld hl, wLoadedNPCs
ld a, [wTempNPC]
.findNPCLoop
cp [hl]
@@ -10959,7 +10960,7 @@ Func_39c3: ; 39c3 (0:39c3)
jr z, .exit
.foundNPCMatch
ld a, b
- ld [wd3aa], a
+ ld [wLoadedNPCTempIndex], a
or a
.exit
pop de
@@ -11069,7 +11070,7 @@ Func_3a5e: ; 3a5e (0:3a5e)
call Func_c653
ld a, $4
call BankswitchROM
- ld a, [wd334]
+ ld a, [wPlayerDirection]
ld d, a
.asm_3a79
ld a, [hli]
@@ -11086,9 +11087,9 @@ Func_3a5e: ; 3a5e (0:3a5e)
cp c
jr nz, .asm_3aab
ld a, [hli]
- ld [wd0c6], a
+ ld [wNextOWSequence], a
ld a, [hli]
- ld [wd0c7], a
+ ld [wNextOWSequence+1], a
ld a, [hli]
ld [wd0ca], a
ld a, [hli]
diff --git a/src/macros/code.asm b/src/macros/code.asm
index 55f4b63..8f2bd0d 100644
--- a/src/macros/code.asm
+++ b/src/macros/code.asm
@@ -26,6 +26,24 @@ else
endc
ENDM
+; runs SetEventFlagValue with the next value as the flag, c as the new value
+set_flag_value: MACRO
+ call SetStackFlagValue
+ db \1
+ENDM
+
+; runs ZeroOutEventFlag with the next value as the flag
+zero_out_flag: MACRO
+ call ZeroStackFlagValue
+ db \1
+ENDM
+
+; runs GetEventFlagValue with the next value as the flag. returns value in a
+get_flag_value: MACRO
+ call GetStackFlagValue
+ db \1
+ENDM
+
; the rst $38 handler is a single ret instruction
; probably used for testing purposes during development
debug_ret EQUS "rst $38"
diff --git a/src/macros/constants.asm b/src/macros/constants.asm
index c841972..264e3ed 100644
--- a/src/macros/constants.asm
+++ b/src/macros/constants.asm
@@ -12,8 +12,6 @@ const_value = const_value + 1
ENDM
flag_def: MACRO
-\1 EQU const_value
-const_value = const_value + 1
-db \2
-db \3
+ db \1
+ db \2
ENDM
diff --git a/src/macros/scripts.asm b/src/macros/scripts.asm
index 1f36cba..7f2bbb5 100644
--- a/src/macros/scripts.asm
+++ b/src/macros/scripts.asm
@@ -81,7 +81,7 @@ ENDM
const Func_d39d_index ; $40
const Func_d3b9_index ; $41
const OWScript_GivePCPack_index ; $42
- const Func_d3d1_index ; $43
+ const OWScript_nop_index ; $43
const Func_d3d4_index ; $44
const Func_d3e0_index ; $45
const Func_d3fe_index ; $46
diff --git a/src/macros/wram.asm b/src/macros/wram.asm
index ca8a9d0..415d19a 100644
--- a/src/macros/wram.asm
+++ b/src/macros/wram.asm
@@ -65,3 +65,18 @@ sprite_anim_struct: MACRO
\1MovementCounter:: ds 1
\1Field0x0f:: ds 1
ENDM
+
+loaded_npc_struct: MACRO
+\1ID:: ds 1
+\1Sprite:: ds 1
+\1CoordX:: ds 1
+\1CoordY:: ds 1
+\1Direction:: ds 1
+\1Field0x05:: ds 1
+\1Field0x06:: ds 1
+\1Field0x07:: ds 1
+\1Field0x08:: ds 1
+\1Field0x09:: ds 1
+\1Field0x0a:: ds 1
+\1Field0x0b:: ds 1
+ENDM
diff --git a/src/wram.asm b/src/wram.asm
index 0259c7a..fd24dbd 100644
--- a/src/wram.asm
+++ b/src/wram.asm
@@ -1819,11 +1819,9 @@ wd0c4:: ; d0c4
wd0c5:: ; d0c5
ds $1
-wd0c6:: ; d0c6
- ds $1
-
-wd0c7:: ; d0c7
- ds $1
+; used to store the location of an overworld sequence, which is jumped to later
+wNextOWSequence:: ; d0c6
+ ds $2
wCurrentNPCNameTx:: ; d0c8
ds $2
@@ -1998,7 +1996,7 @@ wd332:: ; d332
wd333:: ; d333
ds $1
-wd334:: ; d334
+wPlayerDirection:: ; d334
ds $1
wd335:: ; d335
@@ -2063,11 +2061,17 @@ wd348:: ; d348
wd349:: ; d349
ds $1
-; some kind of array with 8 sets of c data
-wd34a:: ; d34a
- ds $60
+wLoadedNPCs:: ; d34a
+ loaded_npc_struct wLoadedNPC1
+ loaded_npc_struct wLoadedNPC2
+ loaded_npc_struct wLoadedNPC3
+ loaded_npc_struct wLoadedNPC4
+ loaded_npc_struct wLoadedNPC5
+ loaded_npc_struct wLoadedNPC6
+ loaded_npc_struct wLoadedNPC7
+ loaded_npc_struct wLoadedNPC8
-wd3aa:: ; d3aa
+wLoadedNPCTempIndex:: ; d3aa
ds $1
wTempNPC:: ; d3ab