diff options
author | Andrew Martinek <andrewrmartinek@gmail.com> | 2019-10-06 11:24:18 -0400 |
---|---|---|
committer | Andrew Martinek <andrewrmartinek@gmail.com> | 2019-10-06 11:24:18 -0400 |
commit | fda59356c20813bb57d59de8d9b2b100f0fe275d (patch) | |
tree | fb5d2f8eab89278b81dc5081cf1f899746b9e386 /src | |
parent | 8c416b556348fe9a98e28fd0ba5628b5c74edcc8 (diff) |
Uncovered a lot of NPC map data and loading functions.
Diffstat (limited to 'src')
-rw-r--r-- | src/constants/map_constants.asm | 14 | ||||
-rw-r--r-- | src/constants/misc_constants.asm | 5 | ||||
-rw-r--r-- | src/constants/npc_constants.asm | 6 | ||||
-rw-r--r-- | src/data/map_scripts.asm | 72 | ||||
-rw-r--r-- | src/data/npc_map_data.asm | 418 | ||||
-rw-r--r-- | src/data/npcs.asm | 222 | ||||
-rw-r--r-- | src/engine/bank03.asm | 264 | ||||
-rw-r--r-- | src/engine/bank04.asm | 106 | ||||
-rw-r--r-- | src/engine/bank07.asm | 104 | ||||
-rw-r--r-- | src/engine/bank20.asm | 14 | ||||
-rw-r--r-- | src/engine/home.asm | 44 | ||||
-rw-r--r-- | src/wram.asm | 25 |
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 |