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