summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Martinek <andrewrmartinek@gmail.com>2019-10-06 11:24:18 -0400
committerAndrew Martinek <andrewrmartinek@gmail.com>2019-10-06 11:24:18 -0400
commitfda59356c20813bb57d59de8d9b2b100f0fe275d (patch)
treefb5d2f8eab89278b81dc5081cf1f899746b9e386 /src
parent8c416b556348fe9a98e28fd0ba5628b5c74edcc8 (diff)
Uncovered a lot of NPC map data and loading functions.
Diffstat (limited to 'src')
-rw-r--r--src/constants/map_constants.asm14
-rw-r--r--src/constants/misc_constants.asm5
-rw-r--r--src/constants/npc_constants.asm6
-rw-r--r--src/data/map_scripts.asm72
-rw-r--r--src/data/npc_map_data.asm418
-rw-r--r--src/data/npcs.asm222
-rw-r--r--src/engine/bank03.asm264
-rw-r--r--src/engine/bank04.asm106
-rw-r--r--src/engine/bank07.asm104
-rw-r--r--src/engine/bank20.asm14
-rw-r--r--src/engine/home.asm44
-rw-r--r--src/wram.asm25
12 files changed, 940 insertions, 354 deletions
diff --git a/src/constants/map_constants.asm b/src/constants/map_constants.asm
index 4b74a29..5e01d0a 100644
--- a/src/constants/map_constants.asm
+++ b/src/constants/map_constants.asm
@@ -33,3 +33,17 @@
const POKEMON_DOME_ENTRANCE ; $1F
const POKEMON_DOME ; $20
const HALL_OF_HONOR ; $21
+
+
+NPC_MAP_SIZE EQU $06
+
+; Most of these aren't fully understood so the names aren't great
+MAP_SCRIPT_SIZE EQU $0f
+MAP_SCRIPT_NPCS EQU $00
+MAP_SCRIPT_POST_NPC EQU $02
+MAP_SCRIPT_PRESSED_A_1 EQU $04
+MAP_SCRIPT_PRESSED_A_2 EQU $06
+MAP_SCRIPT_LOAD_MAP EQU $08
+MAP_SCRIPT_AFTER_DUEL EQU $0a
+MAP_SCRIPT_MOVED_PLAYER EQU $0c
+MAP_SCRIPT_CLOSE_TEXTBOX EQU $0e
diff --git a/src/constants/misc_constants.asm b/src/constants/misc_constants.asm
index c513111..53b2be4 100644
--- a/src/constants/misc_constants.asm
+++ b/src/constants/misc_constants.asm
@@ -47,3 +47,8 @@ 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 d7eeaa8..f85dc1c 100644
--- a/src/constants/npc_constants.asm
+++ b/src/constants/npc_constants.asm
@@ -1,9 +1,9 @@
; npc_struct constants
const_def
const NPC_TRAINER_ID
- const NPC_DATA_FIELD_01
- const NPC_DATA_FIELD_02
- const NPC_DATA_FIELD_03
+ const NPC_DATA_FIELD_01 ; Sprite
+ const NPC_DATA_FIELD_02 ; DMG/SGB pal
+ const NPC_DATA_FIELD_03 ; CGB pal
const NPC_DATA_FIELD_04
const NPC_DATA_OWSEQUENCE_PTR
const_value = const_value+1
diff --git a/src/data/map_scripts.asm b/src/data/map_scripts.asm
index ec8c292..e156a1c 100644
--- a/src/data/map_scripts.asm
+++ b/src/data/map_scripts.asm
@@ -2,8 +2,8 @@
; scripts are referenced with ids [0,2,4,6,8,a,c,e]
; each script id is used for a specific event
; if a script pointer is $0000, that map has no script for that event
-; 0: load texts
-; 2: unused
+; 0: NPC data
+; 2: Called after every NPC is loaded (unused)
; 4: pressed A button
; 6: pressed A button
; 8: load map
@@ -17,13 +17,13 @@ MapScripts: ; 1162a (4:562a)
dw $0000
dw $0000
dw $0000
- dw $54ec
+ dw LoadOverworld
dw $0000
dw $0000
dw $0000
; MASON_LABORATORY
- dw $772f
+ dw NPCData_772f
dw $0000
dw $7b04
dw $5565
@@ -33,7 +33,7 @@ MapScripts: ; 1162a (4:562a)
dw $555e
; DECK_MACHINE_ROOM
- dw $775a
+ dw NPCData_775a
dw $0000
dw $7b4d
dw $0000
@@ -43,7 +43,7 @@ MapScripts: ; 1162a (4:562a)
dw $58ad
; ISHIHARAS_HOUSE
- dw $7773
+ dw NPCData_7773
dw $0000
dw $7c02
dw $0000
@@ -53,7 +53,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; FIGHTING_CLUB_ENTRANCE
- dw $7786
+ dw NPCData_7786
dw $0000
dw $0000
dw $0000
@@ -63,7 +63,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; FIGHTING_CLUB_LOBBY
- dw $779f
+ dw NPCData_779f
dw $0000
dw $7c6f
dw $0000
@@ -73,7 +73,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; FIGHTING_CLUB
- dw $77ca
+ dw NPCData_77ca
dw $0000
dw $0000
dw $0000
@@ -83,7 +83,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; ROCK_CLUB_ENTRANCE
- dw $77e3
+ dw NPCData_77e3
dw $0000
dw $0000
dw $0000
@@ -93,7 +93,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; ROCK_CLUB_LOBBY
- dw $77fc
+ dw NPCData_77fc
dw $0000
dw $7ca6
dw $0000
@@ -103,7 +103,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; ROCK_CLUB
- dw $7827
+ dw NPCData_7827
dw $0000
dw $0000
dw $0000
@@ -113,7 +113,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; WATER_CLUB_ENTRANCE
- dw $783a
+ dw NPCData_783a
dw $0000
dw $0000
dw $0000
@@ -123,7 +123,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; WATER_CLUB_LOBBY
- dw $7853
+ dw NPCData_7853
dw $0000
dw $7cdd
dw $0000
@@ -133,7 +133,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; WATER_CLUB
- dw $787e
+ dw NPCData_787e
dw $0000
dw $0000
dw $0000
@@ -143,7 +143,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; LIGHTNING_CLUB_ENTRANCE
- dw $7897
+ dw NPCData_7897
dw $0000
dw $0000
dw $0000
@@ -153,7 +153,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; LIGHTNING_CLUB_LOBBY
- dw $78b0
+ dw NPCData_78b0
dw $0000
dw $7d14
dw $0000
@@ -163,7 +163,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; LIGHTNING_CLUB
- dw $78d5
+ dw NPCData_78d5
dw $0000
dw $0000
dw $0000
@@ -173,7 +173,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; GRASS_CLUB_ENTRANCE
- dw $78ee
+ dw NPCData_78ee
dw $0000
dw $0000
dw $0000
@@ -183,7 +183,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; GRASS_CLUB_LOBBY
- dw $790d
+ dw NPCData_790d
dw $0000
dw $7d4b
dw $0000
@@ -193,7 +193,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; GRASS_CLUB
- dw $7932
+ dw NPCData_7932
dw $0000
dw $0000
dw $0000
@@ -203,7 +203,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; PSYCHIC_CLUB_ENTRANCE
- dw $7945
+ dw NPCData_7945
dw $0000
dw $0000
dw $0000
@@ -213,7 +213,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; PSYCHIC_CLUB_LOBBY
- dw $7964
+ dw NPCData_7964
dw $0000
dw $7d82
dw $0000
@@ -223,7 +223,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; PSYCHIC_CLUB
- dw $798f
+ dw NPCData_798f
dw $0000
dw $0000
dw $0000
@@ -233,7 +233,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; SCIENCE_CLUB_ENTRANCE
- dw $79a8
+ dw NPCData_79a8
dw $0000
dw $0000
dw $0000
@@ -243,7 +243,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; SCIENCE_CLUB_LOBBY
- dw $79c1
+ dw NPCData_79c1
dw $0000
dw $7db9
dw $0000
@@ -253,7 +253,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; SCIENCE_CLUB
- dw $79ec
+ dw NPCData_79ec
dw $0000
dw $0000
dw $0000
@@ -263,7 +263,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; FIRE_CLUB_ENTRANCE
- dw $7a05
+ dw NPCData_7a05
dw $0000
dw $0000
dw $0000
@@ -273,7 +273,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; FIRE_CLUB_LOBBY
- dw $7a1e
+ dw NPCData_7a1e
dw $0000
dw $7df0
dw $6d57
@@ -283,7 +283,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; FIRE_CLUB
- dw $7a43
+ dw NPCData_7a43
dw $0000
dw $0000
dw $0000
@@ -293,7 +293,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; CHALLENGE_HALL_ENTRANCE
- dw $7a5c
+ dw NPCData_7a5c
dw $0000
dw $0000
dw $0000
@@ -303,7 +303,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; CHALLENGE_HALL_LOBBY
- dw $7a63
+ dw NPCData_7a63
dw $0000
dw $7e27
dw $0000
@@ -313,7 +313,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; CHALLENGE_HALL
- dw $7a9a
+ dw NPCData_7a9a
dw $0000
dw $0000
dw $0000
@@ -323,7 +323,7 @@ MapScripts: ; 1162a (4:562a)
dw $0000
; POKEMON_DOME_ENTRANCE
- dw $7ab9
+ dw NPCData_7ab9
dw $0000
dw $7e5e
dw $0000
@@ -333,7 +333,7 @@ MapScripts: ; 1162a (4:562a)
dw $762a
; POKEMON_DOME
- dw $7ac0
+ dw NPCData_7ac0
dw $0000
dw $0000
dw $0000
@@ -343,7 +343,7 @@ MapScripts: ; 1162a (4:562a)
dw $7718
; HALL_OF_HONOR
- dw $7adf
+ dw NPCData_7adf
dw $0000
dw $7ec2
dw $0000
diff --git a/src/data/npc_map_data.asm b/src/data/npc_map_data.asm
new file mode 100644
index 0000000..7bc69cb
--- /dev/null
+++ b/src/data/npc_map_data.asm
@@ -0,0 +1,418 @@
+; NPC Map data. Format:
+; NPC, X position, Y Position, Direction,
+; pre-load function. (Resets c flag if NPC should not be loaded)
+NPCData_772f: ; 772f (4:1372f)
+ db DRMASON, $0e, $06, SOUTH
+ dw $5710
+ db SAM, $04, $0e, EAST
+ dw $5604
+ db TECH1, $16, $08, WEST
+ dw $0000
+ db TECH2, $16, $14, SOUTH
+ dw $0000
+ db TECH3, $16, $16, WEST
+ dw $0000
+ db TECH4, $0a, $16, EAST
+ dw $0000
+ db TECH5, $06, $04, SOUTH
+ dw $55eb
+ db $00
+
+NPCData_775a: ; 775a (4:1375a)
+ db TECH6, $06, $08, SOUTH
+ dw $0000
+ db TECH7, $06, $16, WEST
+ dw $0000
+ db TECH8, $0a, $12, WEST
+ dw $0000
+ db AARON, $0c, $0c, WEST
+ dw $0000
+ db $00
+
+NPCData_7773: ; 7773 (4:13773)
+ db NIKKI, $04, $04, NORTH
+ dw $5add
+ db ISHIHARA, $08, $08, SOUTH
+ dw $5b3d
+ db RONALD1, $02, $04, WEST
+ dw $5c43
+ db $00
+
+NPCData_7786: ; 7786 (4:13786)
+ db CLERK1, $06, $02, SOUTH
+ dw $0000
+ db RONALD1, $08, $fe, SOUTH
+ dw $685b
+ db RONALD2, $fe, $08, NORTH
+ dw $689a
+ db RONALD3, $fe, $08, NORTH
+ dw $6915
+ db $00
+
+NPCData_779f: ; 779f (4:1379f)
+ db MAN1, $0c, $0e, WEST
+ dw $0000
+ db IMAKUNI, $12, $02, NORTH
+ dw $5ceb
+ db SPECS1, $12, $10, EAST
+ dw $0000
+ db BUTCH, $14, $10, WEST
+ dw $0000
+ db GRANNY1, $04, $10, WEST
+ dw $5d98
+ db CLERK10, $06, $04, SOUTH
+ dw $0000
+ db CLERK11, $0a, $04, SOUTH
+ dw $7c6c
+ db $00
+
+NPCData_77ca: ; 77ca (4:137ca)
+ db CHRIS, $04, $08, SOUTH
+ dw $5e43
+ db MICHAEL, $0e, $0a, SOUTH
+ dw $5e79
+ db JESSICA, $12, $06, EAST
+ dw $5ea5
+ db MITCH, $0a, $04, SOUTH
+ dw $0000
+ db $00
+
+NPCData_77e3: ; 77e3 (4:137e3)
+ db CLERK2, $06, $02, SOUTH
+ dw $0000
+ db RONALD1, $08, $fe, SOUTH
+ dw $685b
+ db RONALD2, $fe, $08, NORTH
+ dw $689a
+ db RONALD3, $fe, $08, NORTH
+ dw $6915
+ db $00
+
+NPCData_77fc: ; 77fc (4:137fc)
+ db CHRIS, $12, $08, WEST
+ dw $5ee9
+ db MATTHEW, $06, $0e, EAST
+ dw $0000
+ db WOMAN1, $14, $12, NORTH
+ dw $0000
+ db CHAP1, $0e, $10, EAST
+ dw $0000
+ db LASS3, $10, $04, SOUTH
+ dw $5fcb
+ db CLERK10, $06, $04, SOUTH
+ dw $0000
+ db CLERK11, $0a, $04, SOUTH
+ dw $7c6c
+ db $00
+
+NPCData_7827: ; 7827 (4:13827)
+ db RYAN, $14, $0e, EAST
+ dw $0000
+ db ANDREW, $06, $14, NORTH
+ dw $0000
+ db GENE, $0c, $06, NORTH
+ dw $0000
+ db $00
+
+NPCData_783a: ; 783a (4:1383a)
+ db CLERK3, $06, $02, SOUTH
+ dw $0000
+ db RONALD1, $08, $fe, SOUTH
+ dw $685b
+ db RONALD2, $fe, $08, NORTH
+ dw $689a
+ db RONALD3, $fe, $08, NORTH
+ dw $6915
+ db $00
+
+NPCData_7853: ; 7853 (4:13853)
+ db GAL1, $06, $0e, SOUTH
+ dw $0000
+ db LASS1, $10, $0a, SOUTH
+ dw $0000
+ db IMAKUNI, $12, $02, NORTH
+ dw $60b0
+ db MAN2, $04, $12, EAST
+ dw $6130
+ db PAPPY2, $16, $10, NORTH
+ dw $0000
+ db CLERK10, $06, $04, SOUTH
+ dw $0000
+ db CLERK11, $0a, $04, SOUTH
+ dw $7c6c
+ db $00
+
+NPCData_787e: ; 787e (4:1387e)
+ db SARA, $06, $12, EAST
+ dw $0000
+ db AMANDA, $16, $14, WEST
+ dw $0000
+ db JOSHUA, $16, $08, SOUTH
+ dw $0000
+ db AMY, $16, $04, SOUTH
+ dw $62ad
+ db $00
+
+NPCData_7897: ; 7897 (4:13897)
+ db CLERK4, $06, $02, SOUTH
+ dw $0000
+ db RONALD1, $08, $fe, SOUTH
+ dw $685b
+ db RONALD2, $fe, $08, NORTH
+ dw $689a
+ db RONALD3, $fe, $08, NORTH
+ dw $6915
+ db $00
+
+NPCData_78b0: ; 78b0 (4:138b0)
+ db CHAP2, $12, $10, WEST
+ dw $0000
+ db IMAKUNI, $12, $02, NORTH
+ dw $637b
+ db LASS4, $08, $0c, SOUTH
+ dw $0000
+ db HOOD1, $14, $08, SOUTH
+ dw $0000
+ db CLERK10, $06, $04, SOUTH
+ dw $0000
+ db CLERK11, $0a, $04, SOUTH
+ dw $7c6c
+ db $00
+
+NPCData_78d5: ; 78d5 (4:138d5)
+ db JENNIFER, $0e, $12, SOUTH
+ dw $0000
+ db NICHOLAS, $06, $0a, SOUTH
+ dw $0000
+ db BRANDON, $16, $0c, NORTH
+ dw $0000
+ db ISAAC, $0c, $04, NORTH
+ dw $6494
+ db $00
+
+NPCData_78ee: ; 78ee (4:138ee)
+ db CLERK5, $06, $02, SOUTH
+ dw $0000
+ db MICHAEL, $0e, $08, SOUTH
+ dw $656a
+ db RONALD1, $08, $fe, SOUTH
+ dw $685b
+ db RONALD2, $fe, $08, NORTH
+ dw $689a
+ db RONALD3, $fe, $08, NORTH
+ dw $6915
+ db $00
+
+NPCData_790d: ; 790d (4:1390d)
+ db BRITTANY, $0c, $0e, WEST
+ dw $0000
+ db LASS2, $12, $08, SOUTH
+ dw $0000
+ db GRANNY2, $04, $10, EAST
+ dw $0000
+ db GAL2, $14, $10, NORTH
+ dw $66dc
+ db CLERK10, $06, $04, SOUTH
+ dw $0000
+ db CLERK11, $0a, $04, SOUTH
+ dw $7c6c
+ db $00
+
+NPCData_7932: ; 7932 (4:13932)
+ db KRISTIN, $04, $0a, EAST
+ dw $0000
+ db HEATHER, $0e, $10, SOUTH
+ dw $0000
+ db NIKKI, $0c, $04, SOUTH
+ dw $6796
+ db $00
+
+NPCData_7945: ; 7945 (4:13945)
+ db CLERK6, $06, $02, SOUTH
+ dw $0000
+ db RONALD1, $08, $fe, SOUTH
+ dw $685b
+ db RONALD2, $fe, $08, NORTH
+ dw $689a
+ db RONALD3, $fe, $08, NORTH
+ dw $6915
+ db LAD3, $0e, $04, SOUTH
+ dw $0000
+ db $00
+
+NPCData_7964: ; 7964 (4:13964)
+ db ROBERT, $14, $08, NORTH
+ dw $0000
+ db PAPPY1, $04, $10, EAST
+ dw $0000
+ db RONALD1, $0c, $0a, EAST
+ dw $69f7
+ db GAL3, $10, $0e, WEST
+ dw $0000
+ db CHAP4, $18, $10, SOUTH
+ dw $0000
+ db CLERK10, $06, $04, SOUTH
+ dw $0000
+ db CLERK11, $0a, $04, SOUTH
+ dw $7c6c
+ db $00
+
+NPCData_798f: ; 798f (4:1398f)
+ db DANIEL, $08, $08, NORTH
+ dw $0000
+ db STEPHANIE, $16, $0c, EAST
+ dw $0000
+ db MURRAY2, $02, $02, WEST
+ dw $6ad0
+ db MURRAY1, $0c, $06, SOUTH
+ dw $6ada
+ db $00
+
+NPCData_79a8: ; 79a8 (4:139a8)
+ db CLERK7, $06, $02, SOUTH
+ dw $0000
+ db RONALD1, $08, $fe, SOUTH
+ dw $685b
+ db RONALD2, $fe, $08, NORTH
+ dw $689a
+ db RONALD3, $fe, $08, NORTH
+ dw $6915
+ db $00
+
+NPCData_79c1: ; 79c1 (4:139c1)
+ db LAD1, $12, $12, NORTH
+ dw $0000
+ db IMAKUNI, $12, $02, NORTH
+ dw $6b65
+ db MAN3, $04, $0e, WEST
+ dw $0000
+ db SPECS2, $0c, $0e, WEST
+ dw $0000
+ db SPECS3, $16, $08, SOUTH
+ dw $0000
+ db CLERK10, $06, $04, SOUTH
+ dw $0000
+ db CLERK11, $0a, $04, SOUTH
+ dw $7c6c
+ db $00
+
+NPCData_79ec: ; 79ec (4:139ec)
+ db JOSEPH, $08, $0a, SOUTH
+ dw $6cc4
+ db DAVID, $14, $04, NORTH
+ dw $0000
+ db ERIK, $06, $12, SOUTH
+ dw $0000
+ db RICK, $04, $04, NORTH
+ dw $0000
+ db $00
+
+NPCData_7a05: ; 7a05 (4:13a05)
+ db CLERK8, $06, $02, SOUTH
+ dw $0000
+ db RONALD1, $08, $fe, SOUTH
+ dw $685b
+ db RONALD2, $fe, $08, NORTH
+ dw $689a
+ db RONALD3, $fe, $08, NORTH
+ dw $6915
+ db $00
+
+NPCData_7a1e: ; 7a1e (4:13a1e)
+ db JESSICA, $0c, $0e, WEST
+ dw $6d8d
+ db LAD2, $12, $06, EAST
+ dw $6e25
+ db CHAP3, $06, $0a, NORTH
+ dw $0000
+ db MANIA, $14, $12, NORTH
+ dw $0000
+ db CLERK10, $06, $04, SOUTH
+ dw $0000
+ db CLERK11, $0a, $04, SOUTH
+ dw $7c6c
+ db $00
+
+NPCData_7a43: ; 7a43 (4:13a43)
+ db JOHN, $0c, $12, SOUTH
+ dw $0000
+ db ADAM, $08, $0e, SOUTH
+ dw $0000
+ db JONATHAN, $12, $0a, SOUTH
+ dw $0000
+ db KEN, $0e, $04, SOUTH
+ dw $0000
+ db $00
+
+NPCData_7a5c: ; 7a5c (4:13a5c)
+ db CLERK9, $06, $02, SOUTH
+ dw $6f96
+ db $00
+
+NPCData_7a63: ; 7a63 (4:13a63)
+ db PAPPY3, $06, $0e, EAST
+ dw $707a
+ db CHAMP, $10, $12, WEST
+ dw $707a
+ db HOOD2, $14, $08, SOUTH
+ dw $707a
+ db LASS5, $16, $10, WEST
+ dw $707a
+ db GAL4, $0c, $0e, EAST
+ dw $7075
+ db CHAP5, $10, $08, WEST
+ dw $7075
+ db RONALD1, $08, $0c, SOUTH
+ dw $70b4
+ db CLERK10, $06, $04, SOUTH
+ dw $0000
+ db CLERK11, $0a, $04, SOUTH
+ dw $7c6c
+ db $00
+
+NPCData_7a9a: ; 7a9a (4:13a9a)
+ db CLERK12, $0a, $12, SOUTH
+ dw $707a
+ db CLERK13, $14, $12, SOUTH
+ dw $707a
+ db GUIDE, $0e, $14, SOUTH
+ dw $7270
+ db HOST, $0e, $04, SOUTH
+ dw $707a
+ db $ff, $12, $08, WEST ; pre-load function chooses NPC to load
+ dw $7559
+ db $00
+
+NPCData_7ab9: ; 7ab9 (4:13ab9)
+ db RONALD1, $0e, $12, SOUTH
+ dw $0000
+ db $00
+
+NPCData_7ac0: ; 7ac0 (4:13ac0)
+ db COURTNEY, $12, $02, SOUTH
+ dw $774b
+ db STEVE, $16, $02, SOUTH
+ dw $778c
+ db JACK, $08, $02, SOUTH
+ dw $77a3
+ db ROD, $0c, $02, SOUTH
+ dw $77ba
+ db RONALD1, $1e, $00, SOUTH
+ dw $77d6
+ db $00
+
+NPCData_7adf: ; 7adf (4:13adf)
+ db _11F1F, $0a, $08, SOUTH
+ dw $0000
+ db _11F26, $0c, $08, SOUTH
+ dw $0000
+ db _11F2D, $08, $0a, SOUTH
+ dw $0000
+ db _11F34, $0a, $0a, SOUTH
+ dw $0000
+ db _11F3B, $0c, $0a, SOUTH
+ dw $0000
+ db _11F42, $0e, $0a, SOUTH
+ dw $0000
+ db $00
+
diff --git a/src/data/npcs.asm b/src/data/npcs.asm
index f1a6737..bda574f 100644
--- a/src/data/npcs.asm
+++ b/src/data/npcs.asm
@@ -1,6 +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.
-PointerTable_118f5:
+NPCDataTable:
dw DrMasonData
dw DrMasonData
dw Ronald1Data
@@ -123,7 +123,7 @@ DrMasonData:
db $00
db $26
db $00
- dw $5727 ; Pointer to NPC Data
+ dw $5727 ; Pointer to OWScript
tx Text03ac
db $00
db $00
@@ -135,7 +135,7 @@ Ronald1Data:
db $04
db $0e
db $00
- dw $5c4b ; Pointer to NPC Data
+ dw $5c4b ; Pointer to OWScript
tx Text03ad
db RONALD_PIC
db $1a
@@ -147,7 +147,7 @@ Ronald2Data:
db $04
db $0e
db $00
- dw $5c4b ; Pointer to NPC Data
+ dw $5c4b ; Pointer to OWScript
tx Text03ad
db RONALD_PIC
db $1a
@@ -159,7 +159,7 @@ Ronald3Data:
db $04
db $0e
db $00
- dw $5c4b ; Pointer to NPC Data
+ dw $5c4b ; Pointer to OWScript
tx Text03ad
db RONALD_PIC
db $1a
@@ -171,7 +171,7 @@ IshiharaData:
db $04
db $22
db $00
- dw $5b4a ; Pointer to NPC Data
+ dw $5b4a ; Pointer to OWScript
tx Text03ae
db $00
db $00
@@ -183,7 +183,7 @@ ImakuniData:
db $00
db $0e
db $00
- dw $5d0d ; Pointer to NPC Data
+ dw $5d0d ; Pointer to OWScript
tx Text03af
db IMAKUNI_PIC
db $34
@@ -195,7 +195,7 @@ SamData:
db $00
db $0e
db $00
- dw $561d ; Pointer to NPC Data
+ dw $561d ; Pointer to OWScript
tx Text03b1
db SAM_PIC
db $02
@@ -207,7 +207,7 @@ Tech1Data:
db $00
db $0e
db $00
- dw $5583 ; Pointer to NPC Data
+ dw $5583 ; Pointer to OWScript
tx Text03b2
db $00
db $00
@@ -219,7 +219,7 @@ Tech2Data:
db $00
db $0e
db $00
- dw $55ca ; Pointer to NPC Data
+ dw $55ca ; Pointer to OWScript
tx Text03b2
db $00
db $00
@@ -231,7 +231,7 @@ Tech3Data:
db $00
db $0e
db $00
- dw $55d5 ; Pointer to NPC Data
+ dw $55d5 ; Pointer to OWScript
tx Text03b2
db $00
db $00
@@ -243,7 +243,7 @@ Tech4Data:
db $00
db $0e
db $00
- dw $55e0 ; Pointer to NPC Data
+ dw $55e0 ; Pointer to OWScript
tx Text03b2
db $00
db $00
@@ -255,7 +255,7 @@ Tech5Data:
db $00
db $0e
db $00
- dw $55f9 ; Pointer to NPC Data
+ dw $55f9 ; Pointer to OWScript
tx Text03b2
db $00
db $00
@@ -267,7 +267,7 @@ Tech6Data:
db $00
db $0e
db $00
- dw $58bb ; Pointer to NPC Data
+ dw $58bb ; Pointer to OWScript
tx Text03b2
db $00
db $00
@@ -279,7 +279,7 @@ Clerk1Data:
db $0a
db $30
db $00
- dw $5c64 ; Pointer to NPC Data
+ dw $5c64 ; Pointer to OWScript
tx Text03b3
db $00
db $00
@@ -291,7 +291,7 @@ Clerk2Data:
db $0a
db $30
db $00
- dw $5ed1 ; Pointer to NPC Data
+ dw $5ed1 ; Pointer to OWScript
tx Text03b3
db $00
db $00
@@ -303,7 +303,7 @@ Clerk3Data:
db $0a
db $30
db $00
- dw $609e ; Pointer to NPC Data
+ dw $609e ; Pointer to OWScript
tx Text03b3
db $00
db $00
@@ -315,7 +315,7 @@ Clerk4Data:
db $0a
db $30
db $00
- dw $6369 ; Pointer to NPC Data
+ dw $6369 ; Pointer to OWScript
tx Text03b3
db $00
db $00
@@ -327,7 +327,7 @@ Clerk5Data:
db $0a
db $30
db $00
- dw $6566 ; Pointer to NPC Data
+ dw $6566 ; Pointer to OWScript
tx Text03b3
db $00
db $00
@@ -339,7 +339,7 @@ Clerk6Data:
db $0a
db $30
db $00
- dw $684c ; Pointer to NPC Data
+ dw $684c ; Pointer to OWScript
tx Text03b3
db $00
db $00
@@ -351,7 +351,7 @@ Clerk7Data:
db $0a
db $30
db $00
- dw $6b53 ; Pointer to NPC Data
+ dw $6b53 ; Pointer to OWScript
tx Text03b3
db $00
db $00
@@ -363,7 +363,7 @@ Clerk8Data:
db $0a
db $30
db $00
- dw $6d45 ; Pointer to NPC Data
+ dw $6d45 ; Pointer to OWScript
tx Text03b3
db $00
db $00
@@ -375,7 +375,7 @@ Clerk9Data:
db $0a
db $30
db $00
- dw $7025 ; Pointer to NPC Data
+ dw $7025 ; Pointer to OWScript
tx Text03b3
db $00
db $00
@@ -387,7 +387,7 @@ ChrisData:
db $00
db $26
db $00
- dw $5ef2 ; Pointer to NPC Data
+ dw $5ef2 ; Pointer to OWScript
tx Text03b4
db CHRIS_PIC
db $1c
@@ -399,7 +399,7 @@ MichaelData:
db $00
db $26
db $00
- dw $6573 ; Pointer to NPC Data
+ dw $6573 ; Pointer to OWScript
tx Text03b5
db MICHAEL_PIC
db $1d
@@ -411,7 +411,7 @@ JessicaData:
db $04
db $1a
db $00
- dw $6d96 ; Pointer to NPC Data
+ dw $6d96 ; Pointer to OWScript
tx Text03b6
db JESSICA_PIC
db $1e
@@ -423,7 +423,7 @@ MitchData:
db $00
db $0e
db $00
- dw $5dc3 ; Pointer to NPC Data
+ dw $5dc3 ; Pointer to OWScript
tx Text03b7
db MITCH_PIC
db $10
@@ -435,7 +435,7 @@ MatthewData:
db $00
db $16
db $00
- dw $5f39 ; Pointer to NPC Data
+ dw $5f39 ; Pointer to OWScript
tx Text03b8
db MATTHEW_PIC
db $21
@@ -447,7 +447,7 @@ RyanData:
db $00
db $26
db $00
- dw $5ff0 ; Pointer to NPC Data
+ dw $5ff0 ; Pointer to OWScript
tx Text03b9
db RYAN_PIC
db $1f
@@ -459,7 +459,7 @@ AndrewData:
db $00
db $16
db $00
- dw $6017 ; Pointer to NPC Data
+ dw $6017 ; Pointer to OWScript
tx Text03ba
db ANDREW_PIC
db $20
@@ -471,7 +471,7 @@ GeneData:
db $04
db $1e
db $00
- dw $603e ; Pointer to NPC Data
+ dw $603e ; Pointer to OWScript
tx Text03bb
db GENE_PIC
db $11
@@ -483,7 +483,7 @@ SaraData:
db $00
db $0e
db $00
- dw OWSequence_Sara ; Pointer to NPC Data
+ dw OWSequence_Sara ; Pointer to OWScript
tx Text03bc
db SARA_PIC
db $22
@@ -495,7 +495,7 @@ AmandaData:
db $00
db $16
db $00
- dw OWSequence_Amanda ; Pointer to NPC Data
+ dw OWSequence_Amanda ; Pointer to OWScript
tx Text03bd
db AMANDA_PIC ; battle profile picture
db $23
@@ -507,7 +507,7 @@ JoshuaData:
db $00
db $26
db $00
- dw OWSequence_Joshua ; Pointer to NPC Data
+ dw OWSequence_Joshua ; Pointer to OWScript
tx Text03be
db JOSHUA_PIC
db $24
@@ -519,7 +519,7 @@ AmyData:
db $08
db $2e
db $10
- dw OWSequence_Amy ; Pointer to NPC Data
+ dw OWSequence_Amy ; Pointer to OWScript
tx Text03bf
db AMY_PIC
db $12
@@ -531,7 +531,7 @@ JenniferData:
db $04
db $0e
db $00
- dw $6408 ; Pointer to NPC Data
+ dw $6408 ; Pointer to OWScript
tx Text03c0
db JENNIFER_PIC
db $25
@@ -543,7 +543,7 @@ NicholasData:
db $04
db $1e
db $00
- dw $642f ; Pointer to NPC Data
+ dw $642f ; Pointer to OWScript
tx Text03c1
db NICHOLAS_PIC
db $26
@@ -555,7 +555,7 @@ BrandonData:
db $04
db $1e
db $00
- dw $6456 ; Pointer to NPC Data
+ dw $6456 ; Pointer to OWScript
tx Text03c2
db BRANDON_PIC
db $27
@@ -567,7 +567,7 @@ IsaacData:
db $00
db $16
db $00
- dw $64ad ; Pointer to NPC Data
+ dw $64ad ; Pointer to OWScript
tx Text03c3
db ISAAC_PIC
db $13
@@ -579,7 +579,7 @@ BrittanyData:
db $04
db $0e
db $00
- dw OWSequence_Brittany ; Pointer to NPC Data
+ dw OWSequence_Brittany ; Pointer to OWScript
tx Text03c4
db BRITTANY_PIC
db $28
@@ -591,7 +591,7 @@ KristinData:
db $00
db $1e
db $00
- dw $6701 ; Pointer to NPC Data
+ dw $6701 ; Pointer to OWScript
tx Text03c5
db KRISTIN_PIC
db $29
@@ -603,7 +603,7 @@ HeatherData:
db $04
db $22
db $00
- dw $6745 ; Pointer to NPC Data
+ dw $6745 ; Pointer to OWScript
tx Text03c6
db HEATHER_PIC
db $2a
@@ -615,7 +615,7 @@ NikkiData:
db $00
db $1a
db $00
- dw $679e ; Pointer to NPC Data
+ dw $679e ; Pointer to OWScript
tx Text03c7
db NIKKI_PIC
db $14
@@ -627,7 +627,7 @@ RobertData:
db $04
db $16
db $00
- dw $6980 ; Pointer to NPC Data
+ dw $6980 ; Pointer to OWScript
tx Text03c8
db ROBERT_PIC
db $2b
@@ -639,7 +639,7 @@ DanielData:
db $04
db $1a
db $00
- dw $6a60 ; Pointer to NPC Data
+ dw $6a60 ; Pointer to OWScript
tx Text03c9
db DANIEL_PIC
db $2c
@@ -651,7 +651,7 @@ StephanieData:
db $04
db $0e
db $00
- dw $6aa2 ; Pointer to NPC Data
+ dw $6aa2 ; Pointer to OWScript
tx Text03ca
db STEPHANIE_PIC
db $2d
@@ -663,7 +663,7 @@ Murray1Data:
db $00
db $12
db $00
- dw $6adf ; Pointer to NPC Data
+ dw $6adf ; Pointer to OWScript
tx Text03cb
db MURRAY_PIC
db $15
@@ -675,7 +675,7 @@ Murray2Data:
db $03
db $15
db $10
- dw $6adf ; Pointer to NPC Data
+ dw $6adf ; Pointer to OWScript
tx Text03cb
db MURRAY_PIC
db $15
@@ -687,7 +687,7 @@ JosephData:
db $00
db $0e
db $00
- dw $6cdb ; Pointer to NPC Data
+ dw $6cdb ; Pointer to OWScript
tx Text03cc
db JOSEPH_PIC
db $2e
@@ -699,7 +699,7 @@ DavidData:
db $00
db $0e
db $00
- dw $6c11 ; Pointer to NPC Data
+ dw $6c11 ; Pointer to OWScript
tx Text03cd
db DAVID_PIC
db $2f
@@ -711,7 +711,7 @@ ErikData:
db $00
db $0e
db $00
- dw $6c42 ; Pointer to NPC Data
+ dw $6c42 ; Pointer to OWScript
tx Text03ce
db ERIK_PIC
db $30
@@ -723,7 +723,7 @@ RickData:
db $00
db $0e
db $00
- dw $6c67 ; Pointer to NPC Data
+ dw $6c67 ; Pointer to OWScript
tx Text03cf
db RICK_PIC
db $16
@@ -735,7 +735,7 @@ JohnData:
db $04
db $1a
db $00
- dw $6eb3 ; Pointer to NPC Data
+ dw $6eb3 ; Pointer to OWScript
tx Text03d0
db JOHN_PIC
db $31
@@ -747,7 +747,7 @@ AdamData:
db $00
db $22
db $00
- dw $6ed8 ; Pointer to NPC Data
+ dw $6ed8 ; Pointer to OWScript
tx Text03d1
db ADAM_PIC
db $32
@@ -759,7 +759,7 @@ JonathanData:
db $04
db $16
db $00
- dw $6efd ; Pointer to NPC Data
+ dw $6efd ; Pointer to OWScript
tx Text03d2
db JONATHAN_PIC
db $33
@@ -771,7 +771,7 @@ KenData:
db $04
db $1e
db $00
- dw $6f22 ; Pointer to NPC Data
+ dw $6f22 ; Pointer to OWScript
tx Text03d3
db KEN_PIC
db $17
@@ -783,7 +783,7 @@ CourtneyData:
db $00
db $12
db $00
- dw $771f ; Pointer to NPC Data
+ dw $771f ; Pointer to OWScript
tx Text03d4
db COURTNEY_PIC
db $0c
@@ -795,7 +795,7 @@ SteveData:
db $00
db $2a
db $00
- dw $772a ; Pointer to NPC Data
+ dw $772a ; Pointer to OWScript
tx Text03d5
db STEVE_PIC
db $0d
@@ -807,7 +807,7 @@ JackData:
db $00
db $26
db $00
- dw $7735 ; Pointer to NPC Data
+ dw $7735 ; Pointer to OWScript
tx Text03d6
db JACK_PIC
db $0e
@@ -819,7 +819,7 @@ RodData:
db $00
db $0e
db $00
- dw $7740 ; Pointer to NPC Data
+ dw $7740 ; Pointer to OWScript
tx Text03d7
db ROD_PIC
db $0f
@@ -831,7 +831,7 @@ Clerk10Data:
db $0a
db $30
db $00
- dw $4c3e ; Pointer to NPC Data
+ dw $4c3e ; Pointer to OWScript
tx Text03b0
db $00
db $00
@@ -843,7 +843,7 @@ Clerk11Data:
db $0a
db $30
db $00
- dw $4c3e ; Pointer to NPC Data
+ dw $4c3e ; Pointer to OWScript
tx Text03b0
db $00
db $00
@@ -855,7 +855,7 @@ Man1Data:
db $00
db $16
db $00
- dw $5c76 ; Pointer to NPC Data
+ dw $5c76 ; Pointer to OWScript
tx Text03d8
db $00
db $00
@@ -867,7 +867,7 @@ Woman1Data:
db $04
db $1e
db $00
- dw $5f83 ; Pointer to NPC Data
+ dw $5f83 ; Pointer to OWScript
tx Text03d9
db $00
db $00
@@ -879,7 +879,7 @@ Chap1Data:
db $00
db $1a
db $00
- dw $5fc0 ; Pointer to NPC Data
+ dw $5fc0 ; Pointer to OWScript
tx Text03da
db $00
db $00
@@ -891,7 +891,7 @@ Gal1Data:
db $00
db $16
db $00
- dw $60cf ; Pointer to NPC Data
+ dw $60cf ; Pointer to OWScript
tx Text03db
db $00
db $00
@@ -903,7 +903,7 @@ Lass1Data:
db $00
db $1e
db $00
- dw $6111 ; Pointer to NPC Data
+ dw $6111 ; Pointer to OWScript
tx Text03dc
db $00
db $00
@@ -915,7 +915,7 @@ Chap2Data:
db $00
db $1a
db $00
- dw $639a ; Pointer to NPC Data
+ dw $639a ; Pointer to OWScript
tx Text03da
db $00
db $00
@@ -927,7 +927,7 @@ Lass2Data:
db $00
db $1e
db $00
- dw $661f ; Pointer to NPC Data
+ dw $661f ; Pointer to OWScript
tx Text03dc
db $00
db $00
@@ -939,7 +939,7 @@ Pappy1Data:
db $00
db $22
db $00
- dw $69a5 ; Pointer to NPC Data
+ dw $69a5 ; Pointer to OWScript
tx Text03dd
db $00
db $00
@@ -951,7 +951,7 @@ Lad1Data:
db $04
db $1a
db $00
- dw $6b84 ; Pointer to NPC Data
+ dw $6b84 ; Pointer to OWScript
tx Text03de
db $00
db $00
@@ -963,7 +963,7 @@ Lad2Data:
db $04
db $16
db $00
- dw $6e2c ; Pointer to NPC Data
+ dw $6e2c ; Pointer to OWScript
tx Text03de
db $00
db $00
@@ -975,7 +975,7 @@ Chap3Data:
db $00
db $1a
db $00
- dw $6de8 ; Pointer to NPC Data
+ dw $6de8 ; Pointer to OWScript
tx Text03da
db $00
db $00
@@ -987,7 +987,7 @@ Clerk12Data:
db $00
db $16
db $00
- dw $7295 ; Pointer to NPC Data
+ dw $7295 ; Pointer to OWScript
tx Text03b3
db $00
db $00
@@ -999,7 +999,7 @@ Clerk13Data:
db $00
db $16
db $00
- dw $726c ; Pointer to NPC Data
+ dw $726c ; Pointer to OWScript
tx Text03b3
db $00
db $00
@@ -1011,7 +1011,7 @@ HostData:
db $00
db $16
db $00
- dw $7352 ; Pointer to NPC Data
+ dw $7352 ; Pointer to OWScript
tx Text03df
db $00
db $00
@@ -1023,7 +1023,7 @@ Specs1Data:
db $00
db $22
db $00
- dw $5d82 ; Pointer to NPC Data
+ dw $5d82 ; Pointer to OWScript
tx Text03e0
db $00
db $00
@@ -1035,7 +1035,7 @@ ButchData:
db $00
db $16
db $00
- dw $5d8d ; Pointer to NPC Data
+ dw $5d8d ; Pointer to OWScript
tx Text03e1
db $00
db $00
@@ -1047,7 +1047,7 @@ Granny1Data:
db $00
db $16
db $00
- dw $5d9f ; Pointer to NPC Data
+ dw $5d9f ; Pointer to OWScript
tx Text03e5
db $00
db $00
@@ -1059,7 +1059,7 @@ Lass3Data:
db $04
db $22
db $00
- dw $5fd2 ; Pointer to NPC Data
+ dw $5fd2 ; Pointer to OWScript
tx Text03dc
db $00
db $00
@@ -1071,7 +1071,7 @@ Man2Data:
db $00
db $16
db $00
- dw $6137 ; Pointer to NPC Data
+ dw $6137 ; Pointer to OWScript
tx Text03d8
db $00
db $00
@@ -1083,7 +1083,7 @@ Pappy2Data:
db $00
db $22
db $00
- dw $613b ; Pointer to NPC Data
+ dw $613b ; Pointer to OWScript
tx Text03dd
db $00
db $00
@@ -1095,7 +1095,7 @@ Lass4Data:
db $04
db $22
db $00
- dw $63d9 ; Pointer to NPC Data
+ dw $63d9 ; Pointer to OWScript
tx Text03dc
db $00
db $00
@@ -1107,7 +1107,7 @@ Hood1Data:
db $04
db $1e
db $00
- dw $63dd ; Pointer to NPC Data
+ dw $63dd ; Pointer to OWScript
tx Text03e2
db $00
db $00
@@ -1119,7 +1119,7 @@ Granny2Data:
db $00
db $16
db $00
- dw $66d8 ; Pointer to NPC Data
+ dw $66d8 ; Pointer to OWScript
tx Text03e5
db $00
db $00
@@ -1131,7 +1131,7 @@ Gal2Data:
db $00
db $16
db $00
- dw $66e3 ; Pointer to NPC Data
+ dw $66e3 ; Pointer to OWScript
tx Text03db
db $00
db $00
@@ -1143,7 +1143,7 @@ Lad3Data:
db $04
db $1a
db $00
- dw $6850 ; Pointer to NPC Data
+ dw $6850 ; Pointer to OWScript
tx Text03de
db $00
db $00
@@ -1155,7 +1155,7 @@ Gal3Data:
db $00
db $16
db $00
- dw $6a30 ; Pointer to NPC Data
+ dw $6a30 ; Pointer to OWScript
tx Text03db
db $00
db $00
@@ -1167,7 +1167,7 @@ Chap4Data:
db $00
db $1a
db $00
- dw $6a3b ; Pointer to NPC Data
+ dw $6a3b ; Pointer to OWScript
tx Text03da
db $00
db $00
@@ -1179,7 +1179,7 @@ Man3Data:
db $00
db $16
db $00
- dw $6bc1 ; Pointer to NPC Data
+ dw $6bc1 ; Pointer to OWScript
tx Text03d8
db $00
db $00
@@ -1191,7 +1191,7 @@ Specs2Data:
db $00
db $0e
db $00
- dw $6bc5 ; Pointer to NPC Data
+ dw $6bc5 ; Pointer to OWScript
tx Text03e0
db $00
db $00
@@ -1203,7 +1203,7 @@ Specs3Data:
db $00
db $22
db $00
- dw $6bed ; Pointer to NPC Data
+ dw $6bed ; Pointer to OWScript
tx Text03e0
db $00
db $00
@@ -1215,7 +1215,7 @@ Woman2Data:
db $04
db $1e
db $00
- dw $4c3e ; Pointer to NPC Data
+ dw $4c3e ; Pointer to OWScript
tx Text03d9
db $00
db $00
@@ -1227,7 +1227,7 @@ ManiaData:
db $00
db $26
db $00
- dw $6e88 ; Pointer to NPC Data
+ dw $6e88 ; Pointer to OWScript
tx Text03e4
db $00
db $00
@@ -1239,7 +1239,7 @@ Pappy3Data:
db $00
db $22
db $00
- dw $709c ; Pointer to NPC Data
+ dw $709c ; Pointer to OWScript
tx Text03dd
db $00
db $00
@@ -1251,7 +1251,7 @@ Gal4Data:
db $00
db $16
db $00
- dw $70a0 ; Pointer to NPC Data
+ dw $70a0 ; Pointer to OWScript
tx Text03db
db $00
db $00
@@ -1263,7 +1263,7 @@ ChampData:
db $00
db $26
db $00
- dw $70a4 ; Pointer to NPC Data
+ dw $70a4 ; Pointer to OWScript
tx Text03e3
db $00
db $00
@@ -1275,7 +1275,7 @@ Hood2Data:
db $04
db $1e
db $00
- dw $70a8 ; Pointer to NPC Data
+ dw $70a8 ; Pointer to OWScript
tx Text03e2
db $00
db $00
@@ -1287,7 +1287,7 @@ Lass5Data:
db $04
db $1a
db $00
- dw $70ac ; Pointer to NPC Data
+ dw $70ac ; Pointer to OWScript
tx Text03dc
db $00
db $00
@@ -1299,7 +1299,7 @@ Chap5Data:
db $00
db $1a
db $00
- dw $70b0 ; Pointer to NPC Data
+ dw $70b0 ; Pointer to OWScript
tx Text03da
db $00
db $00
@@ -1311,7 +1311,7 @@ AaronData:
db $00
db $0e
db $00
- dw $58dd ; Pointer to NPC Data
+ dw $58dd ; Pointer to OWScript
tx Text03e7
db AARON_PIC
db $09
@@ -1323,7 +1323,7 @@ GuideData:
db $00
db $16
db $00
- dw $7283 ; Pointer to NPC Data
+ dw $7283 ; Pointer to OWScript
tx Text03e6
db $00
db $00
@@ -1335,7 +1335,7 @@ Tech7Data:
db $00
db $0e
db $00
- dw $58c6 ; Pointer to NPC Data
+ dw $58c6 ; Pointer to OWScript
tx Text03b2
db $00
db $00
@@ -1347,7 +1347,7 @@ Tech8Data:
db $00
db $0e
db $00
- dw $58d1 ; Pointer to NPC Data
+ dw $58d1 ; Pointer to OWScript
tx Text03b2
db $00
db $00
@@ -1359,49 +1359,49 @@ Data_11f18:
db $3a
db $3a
db $10
- dw $4c3e ; Pointer to NPC Data
+ dw $4c3e ; Pointer to OWScript
Data_11f1f:
db $68
db $27
db $3b
db $41
db $50
- dw $4c3e ; Pointer to NPC Data
+ dw $4c3e ; Pointer to OWScript
Data_11f26:
db $69
db $27
db $3c
db $42
db $50
- dw $4c3e ; Pointer to NPC Data
+ dw $4c3e ; Pointer to OWScript
Data_11f2d:
db $6a
db $27
db $3d
db $43
db $50
- dw $4c3e ; Pointer to NPC Data
+ dw $4c3e ; Pointer to OWScript
Data_11f34:
db $6b
db $27
db $3e
db $44
db $50
- dw $4c3e ; Pointer to NPC Data
+ dw $4c3e ; Pointer to OWScript
Data_11f3b:
db $6c
db $27
db $3f
db $45
db $50
- dw $4c3e ; Pointer to NPC Data
+ dw $4c3e ; Pointer to OWScript
Data_11f42:
db $6d
db $27
db $40
db $46
db $50
- dw $4c3e ; Pointer to NPC Data
+ dw $4c3e ; Pointer to OWScript
Data_11f49:
db $00
db $00
diff --git a/src/engine/bank03.asm b/src/engine/bank03.asm
index 6149c08..5330bd1 100644
--- a/src/engine/bank03.asm
+++ b/src/engine/bank03.asm
@@ -176,7 +176,7 @@ Func_c158: ; c158 (3:4158)
cp $1
ret nz
ld a, [wd0c4]
- ld [wd3ab], a
+ ld [wTempNPC], a
call Func_39c3
jr c, .asm_c179
ld a, [wd3aa]
@@ -580,7 +580,7 @@ Func_c4b9: ; c4b9 (3:44b9)
ld a, b
ld [wd337], a
ld a, $0
- farcall Func_1299f
+ farcall CreateSpriteAndAnimBufferEntry
ld a, [wWhichSprite]
ld [wd336], a
ld b, $2
@@ -1225,51 +1225,51 @@ Func_c943: ; c943 (3:4943)
push hl
push bc
push de
- ld l, $0
- call Func_3abd
- jr nc, .asm_c98f
-.asm_c94d
+ ld l, MAP_SCRIPT_NPCS
+ call GetMapScriptPointer
+ jr nc, .quit
+.loadNPCLoop
ld a, l
- ld [wd4c4], a
+ ld [wTempPointer], a
ld a, h
- ld [wd4c5], a
- ld a, $4
- ld [wd4c6], a
- ld de, wd3ab
- ld bc, $0006
+ ld [wTempPointer + 1], a
+ ld a, BANK(MapScripts)
+ ld [wTempPointerBank], a
+ ld de, wTempNPC
+ ld bc, NPC_MAP_SIZE
call CopyBankedDataToDE
- ld a, [wd3ab]
+ ld a, [wTempNPC]
or a
- jr z, .asm_c98f
+ jr z, .quit
push hl
- ld a, [wd3af]
+ ld a, [wLoadNPCFunction]
ld l, a
- ld a, [wd3b0]
+ ld a, [wLoadNPCFunction+1]
ld h, a
or l
- jr z, .asm_c97a
+ jr z, .noScript
call CallHL2
- jr nc, .asm_c988
-.asm_c97a
- ld a, [wd3ab]
- farcall Func_11857
+ jr nc, .nextNPC
+.noScript
+ ld a, [wTempNPC]
+ farcall LoadNPCSpriteData
call Func_c998
farcall Func_1c485
-.asm_c988
+.nextNPC
pop hl
- ld bc, $0006
+ ld bc, NPC_MAP_SIZE
add hl, bc
- jr .asm_c94d
-.asm_c98f
- ld l, $2
- call Func_c9c2
+ jr .loadNPCLoop
+.quit
+ ld l, MAP_SCRIPT_POST_NPC
+ call CallMapScriptPointerIfExists
pop de
pop bc
pop hl
ret
Func_c998: ; c998 (3:4998)
- ld a, [wd3ab]
+ ld a, [wTempNPC]
cp $22
ret nz
ld a, [wd3d0]
@@ -1289,23 +1289,23 @@ Func_c998: ; c998 (3:4998)
Func_c9b8: ; c9b8 (3:49b8)
ld l, $8
- jr Func_c9c2
+ jr CallMapScriptPointerIfExists
Func_c9bc: ; c9bc (3:49bc)
ld l, $a
- jr Func_c9c2
+ jr CallMapScriptPointerIfExists
Func_c9c0: ; c9c0 (3:49c0)
ld l, $c
-Func_c9c2: ; c9c2 (3:49c2)
- call Func_3abd
+CallMapScriptPointerIfExists: ; c9c2 (3:49c2)
+ call GetMapScriptPointer
ret nc
jp hl
Func_c9c7: ; c9c7 (3:49c7)
ld l, $e
- jr Func_c9c2
+ jr CallMapScriptPointerIfExists
Func_c9cb: ; c9cb (3:49cb)
push hl
@@ -1493,7 +1493,9 @@ MaxOutEventFlag: ; cac5 (3:4ac5)
ret
; 0xcacd
- INCROM $cacd, $cad0
+Func_cacd: ; cacd (3:4acd)
+ call Func_cab3
+; fallthrough
ZeroOutEventFlag: ; cad0 (3:4ad0)
push bc
@@ -1951,7 +1953,7 @@ OWScript_PrintVariableText: ; cd83 (3:4d83)
Func_cd94: ; cd94 (3:4d94)
call Func_ca69
- ld b, h
+ db $44
Unknown_cd98:
dec a
and $3
@@ -1995,14 +1997,14 @@ Func_cdd1: ; cdd1 (3:4dd1)
Func_cdd8: ; cdd8 (3:4dd8)
ld a, [wd3aa]
push af
- ld a, [wd3ab]
+ ld a, [wTempNPC]
push af
ld a, [wd696]
- ld [wd3ab], a
+ ld [wTempNPC], a
call Func_39c3
call Func_cdd1
pop af
- ld [wd3ab], a
+ ld [wTempNPC], a
pop af
ld [wd3aa], a
ret
@@ -2010,21 +2012,21 @@ Func_cdd8: ; cdd8 (3:4dd8)
Func_cdf5: ; cdf5 (3:4df5)
ld a, [wd3aa]
push af
- ld a, [wd3ab]
+ ld a, [wTempNPC]
push af
ld a, [wd696]
- ld [wd3ab], a
+ ld [wTempNPC], a
ld a, c
- ld [wd3ac], a
+ ld [wLoadNPCXPos], a
ld a, b
- ld [wd3ad], a
+ ld [wLoadNPCYPos], a
ld a, $2
- ld [wd3ae], a
- ld a, [wd3ab]
- farcall Func_11857
+ ld [wLoadNPCDirection], a
+ ld a, [wTempNPC]
+ farcall LoadNPCSpriteData
farcall Func_1c485
pop af
- ld [wd3ab], a
+ ld [wTempNPC], a
pop af
ld [wd3aa], a
jp IncreaseOWScriptPointerBy3
@@ -2059,15 +2061,15 @@ Func_ce4a: ; ce4a (3:4e4a)
Func_ce52: ; ce52 (3:4e52)
ld a, [wd3aa]
push af
- ld a, [wd3ab]
+ ld a, [wTempNPC]
push af
ld a, [wd696]
asm_ce5d
- ld [wd3ab], a
+ ld [wTempNPC], a
call Func_39c3
call Func_ce3a
pop af
- ld [wd3ab], a
+ ld [wTempNPC], a
pop af
ld [wd3aa], a
ret
@@ -2075,7 +2077,7 @@ asm_ce5d
Func_ce6f: ; ce6f (3:4e6f)
ld a, [wd3aa]
push af
- ld a, [wd3ab]
+ ld a, [wTempNPC]
push af
ld a, c
push af
@@ -2270,28 +2272,30 @@ Func_cf7b: ; cf7b (3:4f7b)
jr c, .asm_cf7d
jp IncreaseOWScriptPointerBy1
-; This function doesn't look like a valid function, but it's pointed to in the table.
Func_cf96: ; cf96 (3:4f96)
ld c, $0
call Func_ca69
- ld de, $28b7
- ld hl, $08fe
+ db $11
+ or a
+ jr z, Func_cfc0
+ cp a, $08
jr c, .asm_cfa4
inc c
.asm_cfa4
call Func_ca69
- rla
+ db $17
cp $8
jr c, .asm_cfad
inc c
.asm_cfad
call Func_ca69
-.asm_cfb0
- jr nz, .asm_cfb0
- ld [$0138], sp
+ db $20
+ cp a, $08
+ jr c, .asm_cfb6
inc c
+.asm_cfb6
ld a, c
rlca
add $3
@@ -2311,7 +2315,7 @@ Func_cfc6: ; cfc6 (3:4fc6)
Func_cfd4: ; cfd4 (3:4fd4)
call Func_ca69
- dec l
+ db $2d
ld b, a
.asm_cfd9
ld a, $5
@@ -2356,7 +2360,7 @@ Func_d00b: ; d00b (3:500b)
add hl, bc
push hl
call Func_ca69
- dec hl
+ db $2b
ld e, a
ld d, $0
call GetCardName
@@ -2368,21 +2372,21 @@ Func_d00b: ; d00b (3:500b)
Func_d025: ; d025 (3:5025)
call Func_ca69
- dec hl
+ db $2b
call GetCardCountInCollectionAndDecks
jp c, Func_cf67
jp Func_cf6d
Func_d032: ; d032 (3:5032)
call Func_ca69
- dec hl
+ db $2b
call GetCardCountInCollection
jp c, Func_cf67
jp Func_cf6d
Func_d03f: ; d03f (3:503f)
call Func_ca69
- dec hl
+ db $2b
call RemoveCardFromCollection
jp IncreaseOWScriptPointerBy1
@@ -2399,7 +2403,8 @@ Func_d055: ; d055 (3:5055)
call Func_c5ce
jp IncreaseOWScriptPointerBy2
-
+; arg1 - Direction (index in ScriptedMovementOffsetTable)
+; arg2 - Tiles Moves (Speed)
OWScript_MovePlayer: ; 505c (3:505c)
ld a, c
ld [wd339], a
@@ -2426,7 +2431,7 @@ OWScript_SetDialogName: ; d080 (3:5080)
; Not confident enough to give it a name yet
Func_d088: ; d088 (3:5088)
ld a, c
- ld [wd3ab], a
+ ld [wTempNPC], a
call GetOWSArgs2AfterPointer
call Func_c926
jp IncreaseOWScriptPointerBy4
@@ -2498,10 +2503,10 @@ Func_d0f2: ; d0f2 (3:50f2)
Func_d103: ; d103 (3:5103)
ld a, [wd3aa]
push af
- ld a, [wd3ab]
+ ld a, [wTempNPC]
push af
ld a, c
- ld [wd3ab], a
+ ld [wTempNPC], a
call Func_39c3
jr c, .asm_d119
call $54d1
@@ -2512,7 +2517,7 @@ Func_d103: ; d103 (3:5103)
.asm_d11c
pop af
- ld [wd3ab], a
+ ld [wTempNPC], a
pop af
ld [wd3aa], a
ret
@@ -2575,17 +2580,17 @@ Func_d16b: ; d16b (3:516b)
jp IncreaseOWScriptPointerBy2
Func_d195: ; d195 (3:5195)
- ld a, [wd3ab]
+ ld a, [wTempNPC]
push af
call Func_ca69
- ld b, l
+ db $45
inc a
ld c, a
call Func_ca8f
ld b, l
call Func_f580
pop af
- ld [wd3ab], a
+ ld [wTempNPC], a
jp IncreaseOWScriptPointerBy1
Func_d1ad: ; d1ad (3:51ad)
@@ -2594,7 +2599,7 @@ Func_d1ad: ; d1ad (3:51ad)
Func_d1b3: ; d1b3 (3:51b3)
call Func_ca69
- ld b, h
+ db $44
dec a
cp $2
jr c, .asm_d1c3
@@ -2623,7 +2628,7 @@ asm_d1c6
Func_d209: ; d209 (3:5209)
call Func_ca69
- ld [hl], c
+ db $71
ld e, a
.asm_d20e
call UpdateRNGSources
@@ -2870,7 +2875,7 @@ OWScript_GivePCPack: ; d3c9 (3:53c9)
farcall GivePCPack
jp IncreaseOWScriptPointerBy2
-Func_d3d1: ; d3d1 (3:53d1)
+OWScript_nop: ; d3d1 (3:53d1)
jp IncreaseOWScriptPointerBy1
Func_d3d4: ; d3d4 (3:53d4)
@@ -3065,7 +3070,44 @@ OWScript_JumpIfFlagZero2:
jp IncreaseOWScriptPointerBy4
; 0xd4ec
- INCROM $d4ec, $d52e
+LoadOverworld: ; d4ec (3:54ec)
+ call Func_d4fb
+ call Func_ca69
+ ld a, $b7
+ ret nz
+ ld bc, OWSequence_d52e
+ jp Func_c935
+
+Func_d4fb: ; d4fb (3:54fb)
+ call Func_cacd
+ ld e, c
+ call Func_f602
+ call Func_ca69
+ db $3f
+ cp $02
+ jr z, .asm_d527
+ call Func_ca69
+ db $40
+ cp $02
+ jr z, .asm_d521
+ call Func_ca69
+ db $41
+ cp $02
+ jr z, .asm_d51b
+ ret
+.asm_d51b
+ ld c, $07
+ call Func_ca8f
+ ld b, c
+.asm_d521
+ ld c, $07
+ call Func_ca8f
+ ld b, b
+.asm_d527
+ ld c, $07
+ call Func_ca8f
+ ccf
+ ret
OWSequence_d52e: ; d52e (3:552e)
start_script
@@ -3088,31 +3130,31 @@ OWSequence_d52e: ; d52e (3:552e)
OWSequence_d753: ; d753 (3:5753)
start_script
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $02
run_script OWScript_PrintTextString
tx Text05e3
@@ -3145,8 +3187,7 @@ OWSequence_d779: ; d779 (03:5779)
run_script OWScript_CloseAdvancedTextBox
run_script Func_d088
db $01
- db $94
- db $57
+ dw $5794
run_script OWScript_EndScriptLoop1
INCROM $d793, $e13f
@@ -3156,11 +3197,11 @@ WaterClubMovePlayer: ; e13f (3:613f)
cp $8
ret nz
call Func_ca69
- inc sp
+ db $33
cp $2
ret nc
ld a, $21
- ld [wd3ab], a
+ ld [wTempNPC], a
ld bc, OWSequence_NotReadyToSeeAmy
jp Func_c926
@@ -3282,7 +3323,7 @@ OWSequence_NotReadyToSeeAmy:
db $08
dw $61f8
run_script OWScript_MovePlayer
- db $02
+ db SOUTH
db $04
run_script Func_ce4a
db $13
@@ -3474,15 +3515,15 @@ OWSequence_MeetAmy: ; e2d1 (3:62d1)
run_script Func_d055
db $03
run_script OWScript_MovePlayer
- db $03
+ db WEST
db $01
run_script Func_d055
db $00
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $01
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $01
run_script Func_ce6f
db $21
@@ -3622,7 +3663,7 @@ FindEndOfBattleScript: ; e52c (3:652c)
.found_enemy
ld a, [hli]
- ld [wd3ab], a
+ ld [wTempNPC], a
ld b, $0
add hl, bc
ld c, [hl]
@@ -3748,6 +3789,8 @@ ClubEntranceAfterDuel: ; e7f6 (3:67f6)
dw OWSequence_LostToSecondRonaldFight
db $00
+; A Ronald is already loaded or not loaded depending on Pre-Load scripts
+; in data/npc_map_data.asm. This just starts a sequence if possible.
LoadClubEntrance: ; e809 (3:6809)
call TryFirstRonaldFight
call TrySecondRonaldFight
@@ -3756,7 +3799,7 @@ LoadClubEntrance: ; e809 (3:6809)
TryFirstRonaldEncounter: ; e813 (3:6813)
ld a, RONALD1
- ld [wd3ab], a
+ ld [wTempNPC], a
call Func_39c3
ret c
ld bc, OWSequence_FirstRonaldEncounter
@@ -3768,7 +3811,7 @@ TryFirstRonaldFight: ; e822 (3:6822)
call Func_39c3
ret c
call Func_ca69
- ld c, h
+ db $4c
or a
ret nz
ld bc, OWSequence_FirstRonaldFight
@@ -3780,7 +3823,7 @@ TrySecondRonaldFight: ; e837 (3:6837)
call Func_39c3
ret c
call Func_ca69
- ld c, l
+ db $4d
or a
ret nz
ld bc, OWSequenceSecondRonaldFight
@@ -3792,7 +3835,7 @@ TrySecondRonaldFight: ; e837 (3:6837)
OWSequence_FirstRonaldEncounter: ; e862 (3:6862)
start_script
run_script OWScript_MaxOutFlagValue
- db $4b
+ db EVENT_FLAG_4B
run_script Func_ce4a
db $94
db $68
@@ -3802,10 +3845,10 @@ OWSequence_FirstRonaldEncounter: ; e862 (3:6862)
tx Text0645
run_script OWScript_CloseTextBox
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $01
run_script OWScript_MovePlayer
- db $00
+ db NORTH
db $01
run_script OWScript_PrintTextString
tx Text0646
@@ -3827,7 +3870,7 @@ OWSequence_FirstRonaldEncounter: ; e862 (3:6862)
run_script Func_d055
db $03
run_script OWScript_MovePlayer
- db $01
+ db EAST
db $04
run_script Func_ce4a
db $94
@@ -3858,15 +3901,15 @@ OWSequence_FirstRonaldFight: ; e8c0 (3:68c0)
run_script Func_d055
db $03
run_script OWScript_MovePlayer
- db $03
+ db WEST
db $01
run_script Func_d055
db $02
run_script OWScript_MovePlayer
- db $02
+ db SOUTH
db $01
run_script OWScript_MovePlayer
- db $02
+ db SOUTH
db $01
run_script OWScript_PrintTextString
tx Text064b
@@ -3931,15 +3974,15 @@ OWSequenceSecondRonaldFight: ; e91e (3:691e)
run_script Func_d055
db $03
run_script OWScript_MovePlayer
- db $03
+ db WEST
db $01
run_script Func_d055
db $02
run_script OWScript_MovePlayer
- db $02
+ db SOUTH
db $01
run_script OWScript_MovePlayer
- db $02
+ db SOUTH
db $01
run_script OWScript_PrintTextString
tx Text0650
@@ -3987,11 +4030,11 @@ OWJump_FinishedSecondRonaldFight ; e959 (3:6959)
Func_f580: ; f580 (3:7580)
call Func_ca69
- ld b, h
+ db $44
cp $3
jr z, .asm_f596
call Func_ca69
- ld b, l
+ db $45
cp $3
ld d, $18
jr nz, .asm_f598
@@ -4014,12 +4057,15 @@ Func_f580: ; f580 (3:7580)
ld a, [hl]
.asm_f5ac
- ld [wd3ab], a
+ ld [wTempNPC], a
ld [wd696], a
ret
; 0xf5b3
- INCROM $f5b3, $fc2b
+ INCROM $f5b3, $f602
+
+Func_f602: ; f602 (3:7602)
+ INCROM $f602, $fc2b
Func_fc2b: ; fc2b (3:7c2b)
ld a, [wDuelResult]
diff --git a/src/engine/bank04.asm b/src/engine/bank04.asm
index e127f70..4cba1d9 100644
--- a/src/engine/bank04.asm
+++ b/src/engine/bank04.asm
@@ -495,7 +495,7 @@ INCLUDE "data/overworld_indexes.asm"
Func_10fbc: ; 10fbc (4:4fbc)
ld a, $25
- farcall Func_1299f
+ farcall CreateSpriteAndAnimBufferEntry
ld c, SPRITE_ANIM_COORD_X
call GetSpriteAnimBufferProperty
ld a, $80
@@ -518,7 +518,7 @@ Func_10fde: ; 10fde (4:4fde)
xor a
ld [wd33e], a
ld a, $25
- call Func_1299f
+ call CreateSpriteAndAnimBufferEntry
ld a, [wWhichSprite]
ld [wd33b], a
ld b, $35
@@ -839,13 +839,13 @@ Func_115a3: ; 115a3 (4:55a3)
INCLUDE "data/map_scripts.asm"
-; loads a pointer into hl found on PointerTable_118f5
+; loads a pointer into hl found on NPCDataTable
GetNPCDataPointer: ; 1184a (4:584a)
; this may have been a macro
rlca
- add LOW(PointerTable_118f5)
+ add LOW(NPCDataTable)
ld l, a
- ld a, HIGH(PointerTable_118f5)
+ ld a, HIGH(NPCDataTable)
adc $00
ld h, a
ld a, [hli]
@@ -853,12 +853,12 @@ GetNPCDataPointer: ; 1184a (4:584a)
ld l, a
ret
-Func_11857: ; 11857 (4:5857)
+LoadNPCSpriteData: ; 11857 (4:5857)
push hl
push bc
call GetNPCDataPointer
ld a, [hli]
- ld [wd3ab], a
+ ld [wTempNPC], a
ld a, [hli]
ld [wd3b3], a
ld a, [hli]
@@ -869,7 +869,7 @@ Func_11857: ; 11857 (4:5857)
ld [wd3b2], a
pop bc
ld a, [wConsole]
- cp $2
+ cp CONSOLE_CGB
jr nz, .asm_1187a
ld a, b
ld [wd3b1], a
@@ -1036,7 +1036,7 @@ OverworldScriptTable: ; 1217b (4:617b)
dw Func_d39d
dw Func_d3b9
dw OWScript_GivePCPack
- dw Func_d3d1
+ dw OWScript_nop
dw Func_d3d4
dw Func_d3e0
dw Func_d3fe
@@ -1231,14 +1231,15 @@ Unknown_128fb: ; 128fb
Func_1296e: ; 1296e (4:696e)
INCROM $1296e, $1299f
-Func_1299f: ; 1299f (4:699f)
+; creates a new entry in SpriteAnimBuffer, Alse loads the sprite if need be
+CreateSpriteAndAnimBufferEntry: ; 1299f (4:699f)
push af
ld a, [wd5d7]
or a
- jr z, .asm_129a8
+ jr z, .continue
pop af
ret
-.asm_129a8
+.continue
pop af
push bc
push hl
@@ -1246,50 +1247,50 @@ Func_1299f: ; 1299f (4:699f)
ld [wd5d3], a
xor a
ld [wWhichSprite], a
- call Func_3db7
- ld bc, $0010
-.asm_129bb
+ call GetFirstSpriteAnimBufferProperty
+ ld bc, SPRITE_ANIM_LENGTH
+.findFirstEmptyAnimField
ld a, [hl]
or a
- jr z, .asm_129cf
+ jr z, .foundEmptyAnimField
add hl, bc
ld a, [wWhichSprite]
inc a
ld [wWhichSprite], a
cp $10
- jr nz, .asm_129bb
+ jr nz, .findFirstEmptyAnimField
debug_ret
scf
- jr .asm_129d6
-.asm_129cf
+ jr .quit
+.foundEmptyAnimField
ld a, $1
ld [hl], a
- call Func_129d9
+ call FillNewSpriteAnimBufferEntry
or a
-.asm_129d6
+.quit
pop hl
pop bc
ret
-Func_129d9: ; 129d9 (4:69d9)
+FillNewSpriteAnimBufferEntry: ; 129d9 (4:69d9)
push hl
push bc
push hl
inc hl
- ld c, $f
+ ld c, SPRITE_ANIM_LENGTH - 1
xor a
-.asm_129e0
+.clearSpriteAnimBufferEntryLoop
ld [hli], a
dec c
- jr nz, .asm_129e0
+ jr nz, .clearSpriteAnimBufferEntryLoop
pop hl
- ld bc, $0004
+ ld bc, SPRITE_ANIM_FIELD_05 - 1
add hl, bc
ld a, [wd5d3]
ld [hli], a
ld a, $ff
ld [hl], a
- ld bc, $0009
+ ld bc, SPRITE_ANIM_MOVEMENT_COUNTER - SPRITE_ANIM_FIELD_05
add hl, bc
ld a, $ff
ld [hl], a
@@ -1324,7 +1325,7 @@ Func_12ab5: ; 12ab5 (4:6ab5)
Func_12ae2: ; 12ae2 (4:6ae2)
push bc
push af
- call Func_3db7
+ call GetFirstSpriteAnimBufferProperty
pop af
push hl
ld bc, $0005
@@ -1335,12 +1336,12 @@ Func_12ae2: ; 12ae2 (4:6ae2)
farcall GetMapDataPointer
farcall Func_80229
pop hl
- ld a, [wd4c6]
+ ld a, [wTempPointerBank]
ld [hli], a
- ld a, [wd4c4]
+ ld a, [wTempPointer]
ld [hli], a
ld c, a
- ld a, [wd4c5]
+ ld a, [wTempPointer + 1]
ld [hli], a
ld b, a
ld a, $3
@@ -1362,15 +1363,15 @@ Func_12b13: ; 12b13 (4:6b13)
ld bc, $0006
add hl, bc
ld a, [hli]
- ld [wd4c6], a
+ ld [wTempPointerBank], a
inc hl
inc hl
ld a, [hl]
- ld [wd4c4], a
+ ld [wTempPointer], a
add $4
ld [hli], a
ld a, [hl]
- ld [wd4c5], a
+ ld [wTempPointer + 1], a
adc $0
ld [hl], a
ld de, wd23e
@@ -1423,11 +1424,11 @@ Func_12b6a: ; 12b6a (4:6b6a)
ld bc, $0006
add hl, bc
ld a, [hli]
- ld [wd4c6], a
+ ld [wTempPointerBank], a
ld a, [hli]
- ld [wd4c4], a
+ ld [wTempPointer], a
ld a, [hli]
- ld [wd4c5], a
+ ld [wTempPointer + 1], a
pop hl
call Func_3d72
pop de
@@ -1467,6 +1468,8 @@ Func_12ba7: ; 12ba7 (4:6ba7)
Func_12bcd: ; 12bcd (4:6bcd)
INCROM $12bcd, $12c05
+; gets some value based on the sprite in b and wd5d8
+; loads the sprites data if it doesn't already exist
Func_12c05: ; 12c05 (4:6c05)
push hl
push bc
@@ -1477,23 +1480,24 @@ Func_12c05: ; 12c05 (4:6c05)
ld c, a
ld hl, wd5d8
or a
- jr z, .asm_12c22
-.asm_12c15
+ jr z, .tryToAddSprite
+
+.findSpriteMatchLoop
inc hl
ld a, [hl]
cp b
- jr z, .asm_12c3a
+ jr z, .foundSpriteMatch
inc hl
ld a, [hli]
add [hl]
ld d, a
inc hl
dec c
- jr nz, .asm_12c15
-.asm_12c22
+ jr nz, .findSpriteMatchLoop
+.tryToAddSprite
ld a, [wd618]
cp $10
- jr nc, .asm_12c48
+ jr nc, .quitFail
inc a
ld [wd618], a
inc hl
@@ -1507,7 +1511,7 @@ Func_12c05: ; 12c05 (4:6c05)
pop af
ld [hl], a
pop hl
-.asm_12c3a
+.foundSpriteMatch
dec hl
inc [hl]
inc hl
@@ -1515,15 +1519,15 @@ Func_12c05: ; 12c05 (4:6c05)
ld a, [hli]
add [hl]
cp $81
- jr nc, .asm_12c48
+ jr nc, .quitFail
ld a, d
or a
- jr .asm_12c4b
-.asm_12c48
+ jr .quitSucceed
+.quitFail
debug_ret
xor a
scf
-.asm_12c4b
+.quitSucceed
pop de
pop bc
pop hl
@@ -1584,4 +1588,8 @@ Func_13485: ; 13485 (4:7485)
ret
; 0x134b1
- INCROM $134b1, $14000
+ INCROM $134b1, $1372f
+
+INCLUDE "data/npc_map_data.asm"
+
+ INCROM $13b04, $14000
diff --git a/src/engine/bank07.asm b/src/engine/bank07.asm
index 25534f1..0b2ec00 100644
--- a/src/engine/bank07.asm
+++ b/src/engine/bank07.asm
@@ -128,8 +128,83 @@ Func_1c477: ; 1c477 (7:4477)
pop hl
ret
+; Loads NPC Sprite Data
Func_1c485: ; 1c485 (7:4485)
- INCROM $1c485, $1c50a
+ push hl
+ push bc
+ push de
+ xor a
+ ld [wd3aa], a
+ ld b, a
+ ld c, $08
+ ld hl, wd34a
+ ld de, $c
+.findEmptyIndexLoop
+ ld a, [hl]
+ or a
+ jr z, .foundEmptyIndex
+ add hl, de
+ inc b
+ dec c
+ jr nz, .findEmptyIndexLoop
+ ld hl, wd34a
+ debug_ret
+ jr .exit
+.foundEmptyIndex
+ ld a, b
+ ld [wd3aa], a
+ ld a, [wd3b3]
+ farcall CreateSpriteAndAnimBufferEntry
+ jr c, .exit
+ ld a, [wd3aa]
+ call Func_39a7
+ push hl
+ ld a, [wTempNPC]
+ ld [hli], a
+ ld a, [wWhichSprite]
+ ld [hli], a
+ ld a, [wLoadNPCXPos]
+ ld [hli], a
+ ld a, [wLoadNPCYPos]
+ ld [hli], a
+ ld a, [wLoadNPCDirection]
+ ld [hli], a
+ ld a, [wd3b2]
+ ld [hli], a
+ ld a, [wd3b1]
+ ld [hli], a
+ ld a, [wLoadNPCDirection]
+ ld [hli], a
+ call Func_1c58e
+ call Func_1c5b9
+ ld hl, wd349
+ inc [hl]
+ pop hl
+ call Func_1c665
+ call Func_1c6e3
+ ld a, [wTempNPC]
+ call Func_1c4fa
+ jr nc, .exit
+ ld a, $01
+ ld [wd3b8], a
+.exit
+ pop de
+ pop bc
+ pop hl
+ ret
+
+Func_1c4fa: ; 1c4fa (7:44fa)
+ cp RONALD1
+ jr z, .asm_1c508
+ cp RONALD2
+ jr z, .asm_1c508
+ cp RONALD3
+ jr z, .asm_1c508
+ or a
+ ret
+.asm_1c508
+ scf
+ ret
Func_1c50a: ; 1c50a (7:450a)
push hl
@@ -190,10 +265,10 @@ Func_1c557: ; 1c557 (7:4557)
ld c, a
ld a, [wd3aa]
push af
- ld a, [wd3ab]
+ ld a, [wTempNPC]
push af
ld a, c
- ld [wd3ab], a
+ ld [wTempNPC], a
ld c, $0
call Func_39c3
jr c, .asm_1c570
@@ -202,7 +277,7 @@ Func_1c557: ; 1c557 (7:4557)
.asm_1c570
pop af
- ld [wd3ab], a
+ ld [wTempNPC], a
pop af
ld [wd3aa], a
ld a, c
@@ -253,6 +328,7 @@ Func_1c58e: ; 1c58e (7:458e)
ret
; 0x1c5b9
+Func_1c5b9: ; 1c5b9 (7:45b9)
INCROM $1c5b9, $1c5e9
Func_1c5e9: ; 1c5e9 (7:45e9)
@@ -274,7 +350,25 @@ Func_1c5e9: ; 1c5e9 (7:45e9)
INCROM $1c5ff, $1c610
Func_1c610: ; 1c610 (7:4610)
- INCROM $1c610, $1c6f8
+ INCROM $1c610, $1c665
+
+Func_1c665: ; 1c665 (7:4665)
+ INCROM $1c665, $1c6e3
+
+Func_1c6e3: ; 1c6e3 (7:46e3)
+ push hl
+ push bc
+ ld a, [$d3aa]
+ ld l, $02
+ call Func_39ad
+ ld a, [hli]
+ ld b, a
+ ld c, [hl]
+ ld a, $40
+ call SetPermissionOfMapPosition
+ pop bc
+ pop hl
+ ret
Func_1c6f8: ; 1c6f8 (7:46f8)
INCROM $1c6f8, $1c719
diff --git a/src/engine/bank20.asm b/src/engine/bank20.asm
index 1502ea4..0086f96 100644
--- a/src/engine/bank20.asm
+++ b/src/engine/bank20.asm
@@ -31,7 +31,7 @@ Func_80077: ; 80077 (20:4077)
inc hl
ld [hl], d
call Func_803b9
- ld a, [wd4c6]
+ ld a, [wTempPointerBank]
ld [wd23d], a
ld de, wd23e
ld bc, $0006
@@ -58,10 +58,10 @@ Func_800bd: ; 800bd (20:40bd)
push hl
push bc
push de
- ld a, [wd4c4]
+ ld a, [wTempPointer]
add $05
ld e, a
- ld a, [wd4c5]
+ ld a, [wTempPointer + 1]
adc $00
ld d, a
ld b, $c0
@@ -298,12 +298,12 @@ GetMapDataPointer: ; 8020f (20:420f)
Func_80229: ; 80229 (20:4229)
ld a, [hli]
- ld [wd4c4], a
+ ld [wTempPointer], a
ld a, [hli]
- ld [wd4c5], a
+ ld [wTempPointer + 1], a
ld a, [hli]
add $20
- ld [wd4c6], a
+ ld [wTempPointerBank], a
ret
; 0x80238
@@ -342,7 +342,7 @@ asm_8027c
ld e, [hl]
inc hl
ld d, [hl]
- ld hl, wd4c4
+ ld hl, wTempPointer
ld a, [hli]
ld h, [hl]
ld l, a
diff --git a/src/engine/home.asm b/src/engine/home.asm
index 8545b3d..adcbabd 100644
--- a/src/engine/home.asm
+++ b/src/engine/home.asm
@@ -10865,7 +10865,7 @@ GetPermissionByteOfMapPosition: ; 3946 (0:3946)
Func_395a: ; 395a (0:395a)
ldh a, [hBankROM]
push af
- ld a, [wd4c6]
+ ld a, [wTempPointerBank]
call BankswitchROM
call CopyGfxData
pop af
@@ -10934,6 +10934,9 @@ Func_39ad: ; 39ad (0:39ad)
pop bc
ret
+; Finds the index on wd34a table of the npc in wTempNPC
+; returns it in a and puts it into wd3aa
+; c flag set if no npc found
Func_39c3: ; 39c3 (0:39c3)
push hl
push bc
@@ -10944,21 +10947,21 @@ Func_39c3: ; 39c3 (0:39c3)
ld c, $8
ld de, $000c
ld hl, wd34a
- ld a, [wd3ab]
-.asm_39d6
+ ld a, [wTempNPC]
+.findNPCLoop
cp [hl]
- jr z, .asm_39e1
+ jr z, .foundNPCMatch
add hl, de
inc b
dec c
- jr nz, .asm_39d6
+ jr nz, .findNPCLoop
scf
- jr z, .asm_39e6
-.asm_39e1
+ jr z, .exit
+.foundNPCMatch
ld a, b
ld [wd3aa], a
or a
-.asm_39e6
+.exit
pop de
pop bc
pop hl
@@ -11059,7 +11062,7 @@ Func_3a5e: ; 3a5e (0:3a5e)
ldh a, [hBankROM]
push af
ld l, $4
- call Func_3abd
+ call GetMapScriptPointer
jr nc, .asm_3ab3
ld a, BANK(Func_c653)
call BankswitchROM
@@ -11113,7 +11116,10 @@ Func_3a5e: ; 3a5e (0:3a5e)
call $49c2
ret
-Func_3abd: ; 3abd (0:3abd)
+; returns a map script pointer in hl given
+; current map in wCurMap and which sub-script in l
+; sets c if pointer is found
+GetMapScriptPointer: ; 3abd (0:3abd)
push bc
push hl
ld a, [wCurMap]
@@ -11321,7 +11327,7 @@ ResetDoFrameFunction: ; 3bdb (0:3bdb)
Func_3be4: ; 3be4 (0:3be4)
ldh a, [hBankROM]
push af
- ld a, [wd4c6]
+ ld a, [wTempPointerBank]
call BankswitchROM
call Func_08de
pop af
@@ -11329,16 +11335,16 @@ Func_3be4: ; 3be4 (0:3be4)
ret
; 0x3bf5
-; Copies bc bytes from [wd4c4] to de
+; Copies bc bytes from [wTempPointer] to de
CopyBankedDataToDE: ; 3bf5 (0:3bf5)
ldh a, [hBankROM]
push af
push hl
- ld a, [wd4c6]
+ ld a, [wTempPointerBank]
call BankswitchROM
- ld a, [wd4c4]
+ ld a, [wTempPointer]
ld l, a
- ld a, [wd4c5]
+ ld a, [wTempPointer + 1]
ld h, a
call CopyDataHLtoDE_SaveRegisters
pop hl
@@ -11635,11 +11641,11 @@ Func_3d72: ; 3d72 (0:3d72)
xor a
jr .asm_3da1
.asm_3d84
- ld a, [wd4c4]
+ ld a, [wTempPointer]
ld l, a
- ld a, [wd4c5]
+ ld a, [wTempPointer + 1]
ld h, a
- ld a, [wd4c6]
+ ld a, [wTempPointerBank]
call BankswitchROM
ld a, [hli]
push af
@@ -11670,7 +11676,7 @@ Func_3d72: ; 3d72 (0:3d72)
call BankswitchROM
ret
-Func_3db7: ; 3db7 (0:3db7)
+GetFirstSpriteAnimBufferProperty: ; 3db7 (0:3db7)
push bc
ld c, SPRITE_ANIM_FIELD_00
call GetSpriteAnimBufferProperty
diff --git a/src/wram.asm b/src/wram.asm
index 4d71b86..0259c7a 100644
--- a/src/wram.asm
+++ b/src/wram.asm
@@ -2070,23 +2070,20 @@ wd34a:: ; d34a
wd3aa:: ; d3aa
ds $1
-wd3ab:: ; d3ab
+wTempNPC:: ; d3ab
ds $1
-wd3ac:: ; d3ac
+wLoadNPCXPos:: ; d3ac
ds $1
-wd3ad:: ; d3ad
+wLoadNPCYPos:: ; d3ad
ds $1
-wd3ae:: ; d3ae
+wLoadNPCDirection:: ; d3ae
ds $1
-wd3af:: ; d3af
- ds $1
-
-wd3b0:: ; d3b0
- ds $1
+wLoadNPCFunction:: ; d3af
+ ds $2
wd3b1:: ; d3b1
ds $1
@@ -2211,13 +2208,10 @@ wd4c3:: ; d4c3
ds $1
; these next 3 seem to be an address (bank @ end) for copying bg data
-wd4c4:: ; d4c4
- ds $1
-
-wd4c5:: ; d4c5
- ds $1
+wTempPointer:: ; d4c4
+ ds $2
-wd4c6:: ; d4c6
+wTempPointerBank:: ; d4c6
ds $1
wd4c7:: ; d4c7
@@ -2286,6 +2280,7 @@ wd5d7:: ; d5d7
wd5d8:: ; d5d8
ds $40
+; seems to be the amount of entries in wd5d8
wd618:: ; d618
ds $1