From a14614a1a3f2a4f172ab669af06c0a6b49477549 Mon Sep 17 00:00:00 2001 From: Ibot02 Date: Fri, 15 Jan 2021 22:46:43 +0100 Subject: [PATCH] executeScriptCommandSet: Split stuff into headers. --- include/functions.h | 18 + include/greatFairy.h | 2 +- include/script.h | 33 + include/structures.h | 21 + linker.ld | 4 +- src/enemy/helmasaur.c | 1 - ...e_0807DF74.c => executeScriptCommandSet.c} | 628 ++++++++---------- src/npc/goron.c | 3 +- src/npc/postman.c | 8 +- src/npc/townsperson.c | 3 +- src/npc/zelda.c | 5 +- src/object/greatFairy.c | 4 +- 12 files changed, 360 insertions(+), 370 deletions(-) create mode 100644 include/script.h rename src/{code_0807DF74.c => executeScriptCommandSet.c} (55%) diff --git a/include/functions.h b/include/functions.h index 05df1fac..abb22ffb 100644 --- a/include/functions.h +++ b/include/functions.h @@ -290,4 +290,22 @@ extern u32 sub_08079F8C(void); extern void sub_080A1ED0(u32, u32, u32); extern void DeleteManager(Manager*); extern bool32 CheckPlayerInRegion(u32 centerX, u32 centerY, u32 radiusX, u32 radiusY); +extern u32 sub_0806F5B0(u32); +extern void sub_0801DFB4(Entity*, u32, u32, u32); +extern void sub_0801E00C(); +extern void sub_08050038(u32); +extern void sub_080500F4(u32); +extern void sub_08050110(u32, u32, u32, u32); +extern u32 sub_08052734(); //has Dungeon Map? +extern u32 sub_08052764(); //has Dungeon Compass? +extern u32 sub_0805279C(); //has Dungeon Big Key? +extern u32 sub_080527CC(); //num Dungeon small keys? +extern u32 sub_08053FE0(); +extern void sub_08078790(Entity*, u32); +extern void sub_080788E0(Entity*); +extern void sub_08078AA8(u32, u32); +extern void sub_08078B48(void); +extern void sub_0807919C(); +extern void sub_0807CAA0(u32, u32); +extern void sub_08080964(u16, u32); #endif diff --git a/include/greatFairy.h b/include/greatFairy.h index 417f272d..f3eb845e 100644 --- a/include/greatFairy.h +++ b/include/greatFairy.h @@ -41,7 +41,7 @@ extern const s16 GreatFairy_RippleOffsets[10]; extern u32 gUnk_02034350; extern RoomVars gRoomVars; extern Screen gScreen; -extern u32 gUnk_02033280; +extern struct_02033280 gUnk_02033280; extern u8 gUnk_0812079C[8]; extern s16 gSineTable[]; extern s8 gUnk_081207AC[]; diff --git a/include/script.h b/include/script.h new file mode 100644 index 00000000..73d860e1 --- /dev/null +++ b/include/script.h @@ -0,0 +1,33 @@ +#ifndef SCRIPT_H +#define SCRIPT_H + +#include "global.h" + +typedef struct { + u16 * unk_00; + u32 unk_04; + u32 unk_08; + u8 unk_0C[0x4];//unused + u16 unk_10; + u16 unk_12; + u32 unk_14; + u8 unk_18; + u8 unk_19; + u8 unk_1A; + u8 unk_1B;//unused + union SplitWord unk_1C; + union SplitWord unk_20; +} ScriptExecutionContext; + +extern void ExecuteScriptCommandSet(Entity*, ScriptExecutionContext*); + +extern u32 GetNextScriptCommandHalfword(u16*); +extern u32 GetNextScriptCommandWord(u16*); +extern u32 GetNextScriptCommandWordAfterCommandMetadata(u16*); +extern u32 GetNextScriptCommandHalfwordAfterCommandMetadata(u16*); + +extern void StartPlayerScript(u32); + +extern void sub_0807DEDC(Entity*, ScriptExecutionContext*, u32, u32); + +#endif diff --git a/include/structures.h b/include/structures.h index bced40db..596fa9bb 100644 --- a/include/structures.h +++ b/include/structures.h @@ -13,6 +13,14 @@ typedef struct { u8 gameLanguage; } struct_02000000; +typedef struct { + u8 unk_00; + u8 unk_01; + u8 unk_02[0xE]; +} struct_02000040; + +extern struct_02000040 gUnk_02000040; + typedef struct { u16 field_0x0; u16 field_0x2; @@ -154,6 +162,16 @@ typedef struct { extern struct_02024490 gUnk_02024490; +typedef struct { + u32 unk_00; + u16 unk_04; + u8 unk_06; + u8 unk_07; + u8 unk_08; +} struct_02033280; + +extern struct_02033280 gUnk_02033280; + typedef struct { u16 unk_00; u8 unk_02[0xE]; @@ -191,4 +209,7 @@ extern BG3Buffer gBG3Buffer; static_assert(sizeof(BG3Buffer) == 0x1000); */ +extern u8 gUnk_02022740[]; +extern u8 gUnk_02034490; + #endif diff --git a/linker.ld b/linker.ld index 032bb32d..c785e9bc 100644 --- a/linker.ld +++ b/linker.ld @@ -674,7 +674,7 @@ SECTIONS { src/flags.o(.text); src/code_0807CC3C.o(.text); asm/code_0807CC3C.o(.text); - src/code_0807DF74.o(.text); + src/executeScriptCommandSet.o(.text); asm/code_0807F0D8.o(.text); src/code_0808091C.o(.text); asm/code_0808091C.o(.text); @@ -1013,7 +1013,7 @@ SECTIONS { data/data_0811BD44.o(.rodata); data/room_headers.o(.rodata); data/data_0811E454.o(.rodata); - src/code_0807DF74.o(.rodata); + src/executeScriptCommandSet.o(.rodata); data/data_0811E750.o(.rodata); src/object/greatFairy.o(.rodata); data/animations/greatFairy.o(.rodata); diff --git a/src/enemy/helmasaur.c b/src/enemy/helmasaur.c index 645924dc..3980c94c 100644 --- a/src/enemy/helmasaur.c +++ b/src/enemy/helmasaur.c @@ -14,7 +14,6 @@ void sub_0802C1C0(Entity*); u32 sub_0802C020(Entity*); void sub_0802C058(Entity*, u32); bool32 sub_0802C06C(Entity*); -void sub_08080964(u32, u32); void sub_0802C1CC(Entity*); bool32 sub_0802C0E8(Entity*); diff --git a/src/code_0807DF74.c b/src/executeScriptCommandSet.c similarity index 55% rename from src/code_0807DF74.c rename to src/executeScriptCommandSet.c index e098b76d..4e238655 100644 --- a/src/code_0807DF74.c +++ b/src/executeScriptCommandSet.c @@ -2,164 +2,149 @@ #include "flags.h" #include "entity.h" #include "area.h" +#include "script.h" #include "structures.h" #include "textbox.h" #include "functions.h" -typedef struct { - u16 * unk_00; - u32 unk_04; - u32 unk_08; - u8 unk_0C[0x4];//unused - u16 unk_10; - u16 unk_12; - u32 unk_14; - u8 unk_18; - u8 unk_19; - u8 unk_1A; - u8 unk_1B;//unused - union SplitWord unk_1C; - union SplitWord unk_20; -} unk_struct; - -void nullsub_507 (Entity*, unk_struct*); -void sub_0807E004(Entity*, unk_struct*); -void sub_0807E014(Entity*, unk_struct*); -void sub_0807E024(Entity*, unk_struct*); -void sub_0807E050(Entity*, unk_struct*); -void sub_0807E064(Entity*, unk_struct*); -void sub_0807E078(Entity*, unk_struct*); -void sub_0807E0A0(Entity*, unk_struct*); -void sub_0807E0B8(Entity*, unk_struct*); -void sub_0807E0CC(Entity*, unk_struct*); -void sub_0807E0E0(Entity*, unk_struct*); -void sub_0807E10C(Entity*, unk_struct*); -void sub_0807E124(Entity*, unk_struct*); -void sub_0807E148(Entity*, unk_struct*); -void sub_0807E158(Entity*, unk_struct*); -void sub_0807E188(Entity*, unk_struct*); -void sub_0807E1D8(Entity*, unk_struct*); -void sub_0807E200(Entity*, unk_struct*); -void sub_0807E220(Entity*, unk_struct*); -void sub_0807E240(Entity*, unk_struct*); -void sub_0807E260(Entity*, unk_struct*); -void sub_0807E280(Entity*, unk_struct*); -void sub_0807E2A8(Entity*, unk_struct*); -void sub_0807E2E4(Entity*, unk_struct*); -void sub_0807E30C(Entity*, unk_struct*); -void sub_0807E390(Entity*, unk_struct*); -void sub_0807E3BC(Entity*, unk_struct*); -void sub_0807E3E8(Entity*, unk_struct*); -void sub_0807E40C(Entity*, unk_struct*); -void sub_0807E42C(Entity*, unk_struct*); -void sub_0807E48C(Entity*, unk_struct*); -void sub_0807E4AC(Entity*, unk_struct*); -void sub_0807E4CC(Entity*, unk_struct*); -void sub_0807E4EC(Entity*, unk_struct*); -void sub_0807E514(Entity*, unk_struct*); -void sub_0807E538(Entity*, unk_struct*); -void sub_0807E564(Entity*, unk_struct*); -void sub_0807E584(Entity*, unk_struct*); -void sub_0807E5A0(Entity*, unk_struct*); -void sub_0807E5CC(Entity*, unk_struct*); -void sub_0807E5F8(Entity*, unk_struct*); -void sub_0807E610(Entity*, unk_struct*); -void sub_0807E628(Entity*, unk_struct*); -void sub_0807E634(Entity*, unk_struct*); -void sub_0807E644(Entity*, unk_struct*); -void sub_0807E650(Entity*, unk_struct*); -void sub_0807E65C(Entity*, unk_struct*); -void sub_0807E668(Entity*, unk_struct*); -void sub_0807E674(Entity*, unk_struct*); -void sub_0807E680(Entity*, unk_struct*); -void sub_0807E690(Entity*, unk_struct*); -void sub_0807E6AC(Entity*, unk_struct*); -void sub_0807E6DC(Entity*, unk_struct*); -void sub_0807E700(Entity*, unk_struct*); -void sub_0807E72C(Entity*, unk_struct*); -void sub_0807E75C(Entity*, unk_struct*); -void sub_0807E778(Entity*, unk_struct*); -void sub_0807E788(Entity*, unk_struct*); -void sub_0807E79C(Entity*, unk_struct*); -void nullsub_508 (Entity*, unk_struct*); -void sub_0807E7B0(Entity*, unk_struct*); -void sub_0807E7C4(Entity*, unk_struct*); -void sub_0807E7D8(Entity*, unk_struct*); -void sub_0807E7EC(Entity*, unk_struct*); -void sub_0807E800(Entity*, unk_struct*); -void sub_0807E80C(Entity*, unk_struct*); +void nullsub_507 (Entity*, ScriptExecutionContext*); +void sub_0807E004(Entity*, ScriptExecutionContext*); +void sub_0807E014(Entity*, ScriptExecutionContext*); +void sub_0807E024(Entity*, ScriptExecutionContext*); +void sub_0807E050(Entity*, ScriptExecutionContext*); +void sub_0807E064(Entity*, ScriptExecutionContext*); +void sub_0807E078(Entity*, ScriptExecutionContext*); +void sub_0807E0A0(Entity*, ScriptExecutionContext*); +void sub_0807E0B8(Entity*, ScriptExecutionContext*); +void sub_0807E0CC(Entity*, ScriptExecutionContext*); +void sub_0807E0E0(Entity*, ScriptExecutionContext*); +void sub_0807E10C(Entity*, ScriptExecutionContext*); +void sub_0807E124(Entity*, ScriptExecutionContext*); +void sub_0807E148(Entity*, ScriptExecutionContext*); +void sub_0807E158(Entity*, ScriptExecutionContext*); +void sub_0807E188(Entity*, ScriptExecutionContext*); +void sub_0807E1D8(Entity*, ScriptExecutionContext*); +void sub_0807E200(Entity*, ScriptExecutionContext*); +void sub_0807E220(Entity*, ScriptExecutionContext*); +void sub_0807E240(Entity*, ScriptExecutionContext*); +void sub_0807E260(Entity*, ScriptExecutionContext*); +void sub_0807E280(Entity*, ScriptExecutionContext*); +void sub_0807E2A8(Entity*, ScriptExecutionContext*); +void sub_0807E2E4(Entity*, ScriptExecutionContext*); +void sub_0807E30C(Entity*, ScriptExecutionContext*); +void sub_0807E390(Entity*, ScriptExecutionContext*); +void sub_0807E3BC(Entity*, ScriptExecutionContext*); +void sub_0807E3E8(Entity*, ScriptExecutionContext*); +void sub_0807E40C(Entity*, ScriptExecutionContext*); +void sub_0807E42C(Entity*, ScriptExecutionContext*); +void sub_0807E48C(Entity*, ScriptExecutionContext*); +void sub_0807E4AC(Entity*, ScriptExecutionContext*); +void sub_0807E4CC(Entity*, ScriptExecutionContext*); +void sub_0807E4EC(Entity*, ScriptExecutionContext*); +void sub_0807E514(Entity*, ScriptExecutionContext*); +void sub_0807E538(Entity*, ScriptExecutionContext*); +void sub_0807E564(Entity*, ScriptExecutionContext*); +void sub_0807E584(Entity*, ScriptExecutionContext*); +void sub_0807E5A0(Entity*, ScriptExecutionContext*); +void sub_0807E5CC(Entity*, ScriptExecutionContext*); +void sub_0807E5F8(Entity*, ScriptExecutionContext*); +void sub_0807E610(Entity*, ScriptExecutionContext*); +void sub_0807E628(Entity*, ScriptExecutionContext*); +void sub_0807E634(Entity*, ScriptExecutionContext*); +void sub_0807E644(Entity*, ScriptExecutionContext*); +void sub_0807E650(Entity*, ScriptExecutionContext*); +void sub_0807E65C(Entity*, ScriptExecutionContext*); +void sub_0807E668(Entity*, ScriptExecutionContext*); +void sub_0807E674(Entity*, ScriptExecutionContext*); +void sub_0807E680(Entity*, ScriptExecutionContext*); +void sub_0807E690(Entity*, ScriptExecutionContext*); +void sub_0807E6AC(Entity*, ScriptExecutionContext*); +void sub_0807E6DC(Entity*, ScriptExecutionContext*); +void sub_0807E700(Entity*, ScriptExecutionContext*); +void sub_0807E72C(Entity*, ScriptExecutionContext*); +void sub_0807E75C(Entity*, ScriptExecutionContext*); +void sub_0807E778(Entity*, ScriptExecutionContext*); +void sub_0807E788(Entity*, ScriptExecutionContext*); +void sub_0807E79C(Entity*, ScriptExecutionContext*); +void nullsub_508 (Entity*, ScriptExecutionContext*); +void sub_0807E7B0(Entity*, ScriptExecutionContext*); +void sub_0807E7C4(Entity*, ScriptExecutionContext*); +void sub_0807E7D8(Entity*, ScriptExecutionContext*); +void sub_0807E7EC(Entity*, ScriptExecutionContext*); +void sub_0807E800(Entity*, ScriptExecutionContext*); +void sub_0807E80C(Entity*, ScriptExecutionContext*); void sub_0807E818(u32); -void sub_0807E858(Entity*, unk_struct*); -void sub_0807E864(Entity*, unk_struct*); -void sub_0807E878(Entity*, unk_struct*); -void sub_0807E888(Entity*, unk_struct*); -void sub_0807E898(Entity*, unk_struct*); -void sub_0807E8C4(Entity*, unk_struct*); -void sub_0807E8D4(Entity*, unk_struct*); -void sub_0807E8E4(Entity*, unk_struct*); -void sub_0807E908(Entity*, unk_struct*); -void sub_0807E914(Entity*, unk_struct*); -void sub_0807E924(Entity*, unk_struct*); -void sub_0807E930(Entity*, unk_struct*); -void sub_0807E944(Entity*, unk_struct*); -void sub_0807E974(Entity*, unk_struct*); -void sub_0807E9D4(Entity*, unk_struct*); -void sub_0807E9DC(Entity*, unk_struct*); -void sub_0807E9E4(Entity*, unk_struct*); -void sub_0807E9F0(Entity*, unk_struct*); -void sub_0807EA4C(Entity*, unk_struct*); -void sub_0807EA88(Entity*, unk_struct*); -void sub_0807EA94(Entity*, unk_struct*); -void sub_0807EAB4(Entity*, unk_struct*); -void sub_0807EAC0(Entity*, unk_struct*); -void sub_0807EAD0(Entity*, unk_struct*); -void sub_0807EAF0(Entity*, unk_struct*); -void sub_0807EB18(Entity*, unk_struct*); -void sub_0807EB28(Entity*, unk_struct*); -void sub_0807EB38(Entity*, unk_struct*); -void sub_0807EB44(Entity*, unk_struct*); -void sub_0807EB4C(Entity*, unk_struct*); -void sub_0807EB74(Entity*, unk_struct*); -void sub_0807EB8C(Entity*, unk_struct*); -void sub_0807EBA8(Entity*, unk_struct*); -void sub_0807EBB0(Entity*, unk_struct*); -void sub_0807EBC0(Entity*, unk_struct*); -void sub_0807EBC8(Entity*, unk_struct*); -void sub_0807EBD8(Entity*, unk_struct*); -void sub_0807EBF4(Entity*, unk_struct*); -void sub_0807EC08(Entity*, unk_struct*); -void nullsub_509 (Entity*, unk_struct*); -void sub_0807EC1C(Entity*, unk_struct*); -void sub_0807EC44(Entity*, unk_struct*); -void sub_0807EC64(Entity*, unk_struct*); -void sub_0807EC94(Entity*, unk_struct*); -void sub_0807ECC4(Entity*, unk_struct*); -void sub_0807ECF4(Entity*, unk_struct*); -void sub_0807ED24(Entity*, unk_struct*); -void sub_0807EDD4(Entity*, unk_struct*); -void sub_0807EE04(Entity*, unk_struct*); -void sub_0807EE30(Entity*, unk_struct*); -void sub_0807EEB4(Entity*, unk_struct*); -void sub_0807EEF4(Entity*, unk_struct*); -void sub_0807EF3C(Entity*, unk_struct*); -void sub_0807EF80(Entity*, unk_struct*); -void sub_0807EF90(Entity*, unk_struct*); -void sub_0807EFA0(Entity*, unk_struct*); -void sub_0807EFAC(Entity*, unk_struct*); -void sub_0807EFD4(Entity*, unk_struct*); -void sub_0807EFE4(Entity*, unk_struct*); -void sub_0807EFF4(Entity*, unk_struct*); -void sub_0807F004(Entity*, unk_struct*); -void sub_0807F010(Entity*, unk_struct*); -void sub_0807F034(Entity*, unk_struct*); -void sub_0807F050(Entity*, unk_struct*); -void sub_0807F060(Entity*, unk_struct*); -void sub_0807F078(Entity*, unk_struct*); -void sub_0807F088(Entity*, unk_struct*); -void sub_0807F098(Entity*, unk_struct*); -void sub_0807F0A4(Entity*, unk_struct*); -void sub_0807F0B4(Entity*, unk_struct*); -void sub_0807F0C8(Entity*, unk_struct*); +void sub_0807E858(Entity*, ScriptExecutionContext*); +void sub_0807E864(Entity*, ScriptExecutionContext*); +void sub_0807E878(Entity*, ScriptExecutionContext*); +void sub_0807E888(Entity*, ScriptExecutionContext*); +void sub_0807E898(Entity*, ScriptExecutionContext*); +void sub_0807E8C4(Entity*, ScriptExecutionContext*); +void sub_0807E8D4(Entity*, ScriptExecutionContext*); +void sub_0807E8E4(Entity*, ScriptExecutionContext*); +void sub_0807E908(Entity*, ScriptExecutionContext*); +void sub_0807E914(Entity*, ScriptExecutionContext*); +void sub_0807E924(Entity*, ScriptExecutionContext*); +void sub_0807E930(Entity*, ScriptExecutionContext*); +void sub_0807E944(Entity*, ScriptExecutionContext*); +void sub_0807E974(Entity*, ScriptExecutionContext*); +void sub_0807E9D4(Entity*, ScriptExecutionContext*); +void sub_0807E9DC(Entity*, ScriptExecutionContext*); +void sub_0807E9E4(Entity*, ScriptExecutionContext*); +void sub_0807E9F0(Entity*, ScriptExecutionContext*); +void sub_0807EA4C(Entity*, ScriptExecutionContext*); +void sub_0807EA88(Entity*, ScriptExecutionContext*); +void sub_0807EA94(Entity*, ScriptExecutionContext*); +void sub_0807EAB4(Entity*, ScriptExecutionContext*); +void sub_0807EAC0(Entity*, ScriptExecutionContext*); +void sub_0807EAD0(Entity*, ScriptExecutionContext*); +void sub_0807EAF0(Entity*, ScriptExecutionContext*); +void sub_0807EB18(Entity*, ScriptExecutionContext*); +void sub_0807EB28(Entity*, ScriptExecutionContext*); +void sub_0807EB38(Entity*, ScriptExecutionContext*); +void sub_0807EB44(Entity*, ScriptExecutionContext*); +void sub_0807EB4C(Entity*, ScriptExecutionContext*); +void sub_0807EB74(Entity*, ScriptExecutionContext*); +void sub_0807EB8C(Entity*, ScriptExecutionContext*); +void sub_0807EBA8(Entity*, ScriptExecutionContext*); +void sub_0807EBB0(Entity*, ScriptExecutionContext*); +void sub_0807EBC0(Entity*, ScriptExecutionContext*); +void sub_0807EBC8(Entity*, ScriptExecutionContext*); +void sub_0807EBD8(Entity*, ScriptExecutionContext*); +void sub_0807EBF4(Entity*, ScriptExecutionContext*); +void sub_0807EC08(Entity*, ScriptExecutionContext*); +void nullsub_509 (Entity*, ScriptExecutionContext*); +void sub_0807EC1C(Entity*, ScriptExecutionContext*); +void sub_0807EC44(Entity*, ScriptExecutionContext*); +void sub_0807EC64(Entity*, ScriptExecutionContext*); +void sub_0807EC94(Entity*, ScriptExecutionContext*); +void sub_0807ECC4(Entity*, ScriptExecutionContext*); +void sub_0807ECF4(Entity*, ScriptExecutionContext*); +void sub_0807ED24(Entity*, ScriptExecutionContext*); +void sub_0807EDD4(Entity*, ScriptExecutionContext*); +void sub_0807EE04(Entity*, ScriptExecutionContext*); +void sub_0807EE30(Entity*, ScriptExecutionContext*); +void sub_0807EEB4(Entity*, ScriptExecutionContext*); +void sub_0807EEF4(Entity*, ScriptExecutionContext*); +void sub_0807EF3C(Entity*, ScriptExecutionContext*); +void sub_0807EF80(Entity*, ScriptExecutionContext*); +void sub_0807EF90(Entity*, ScriptExecutionContext*); +void sub_0807EFA0(Entity*, ScriptExecutionContext*); +void sub_0807EFAC(Entity*, ScriptExecutionContext*); +void sub_0807EFD4(Entity*, ScriptExecutionContext*); +void sub_0807EFE4(Entity*, ScriptExecutionContext*); +void sub_0807EFF4(Entity*, ScriptExecutionContext*); +void sub_0807F004(Entity*, ScriptExecutionContext*); +void sub_0807F010(Entity*, ScriptExecutionContext*); +void sub_0807F034(Entity*, ScriptExecutionContext*); +void sub_0807F050(Entity*, ScriptExecutionContext*); +void sub_0807F060(Entity*, ScriptExecutionContext*); +void sub_0807F078(Entity*, ScriptExecutionContext*); +void sub_0807F088(Entity*, ScriptExecutionContext*); +void sub_0807F098(Entity*, ScriptExecutionContext*); +void sub_0807F0A4(Entity*, ScriptExecutionContext*); +void sub_0807F0B4(Entity*, ScriptExecutionContext*); +void sub_0807F0C8(Entity*, ScriptExecutionContext*); void (* const gUnk_0811E524[])() = { nullsub_507, @@ -303,66 +288,9 @@ void (* const gUnk_0811E524[])() = { sub_0807F0C8 }; -typedef struct { - u32 unk_00; - u16 unk_04; - u8 unk_06; - u8 unk_07; - u8 unk_08; -} struct_02033280; - -extern struct_02033280 gUnk_02033280; - -extern u8 gUnk_02022740[]; -extern u8 gUnk_02034490; - -typedef struct { - u8 unk_00; - u8 unk_01; - u8 unk_02[0xE]; -} struct_02000040; - -extern struct_02000040 gUnk_02000040; - extern const u16 gUnk_08016984; -extern u32 GetNextScriptCommandHalfword(u16*); -extern u32 GetNextScriptCommandWord(u16*); -extern u32 GetNextScriptCommandWordAfterCommandMetadata(u16*); -extern u32 GetNextScriptCommandHalfwordAfterCommandMetadata(u16*); - -void StartPlayerScript(u32); - -extern u32 sub_08052734(); //has Dungeon Map? -extern u32 sub_08052764(); //has Dungeon Compass? -extern u32 sub_0805279C(); //has Dungeon Big Key? -extern u32 sub_080527CC(); //num Dungeon small keys? - -extern void sub_0801E00C(); -extern void sub_0807919C(); -extern void sub_0801DFB4(Entity*, u32, u32, u32); -extern void sub_08078790(Entity*, u32); -extern void sub_08078AA8(u32, u32); -extern void sub_0807DEDC(Entity*, unk_struct*, u32, u32); -extern void sub_0807CAA0(u32, u32); -extern void sub_08080964(u32, u32); - -extern u32 sub_08053FE0(); -extern void sub_080500F4(u32); -extern void sub_08050110(u32, u32, u32, u32); -extern void sub_08050038(u32); -extern void sub_08078B48(void); -extern void sub_080788E0(Entity*); - -void sub_0807E818(u32); -void sub_0807EC44(Entity*, unk_struct*); -void sub_0807EE04(Entity*, unk_struct*); -void sub_0807EE30(Entity*, unk_struct*); - -extern u32 CheckPlayerInRegion(u32, u32, u32, u32); -extern u32 sub_0806F5B0(u32); - -void ExecuteScriptCommandSet(Entity* unk1, unk_struct* unk2) { +void ExecuteScriptCommandSet(Entity* unk1, ScriptExecutionContext* unk2) { if (!unk2->unk_00) return; if (unk2->unk_10) { unk2->unk_10--; @@ -386,17 +314,17 @@ void ExecuteScriptCommandSet(Entity* unk1, unk_struct* unk2) { } } -void nullsub_507(Entity* unk1, unk_struct* unk2) {} +void nullsub_507(Entity* unk1, ScriptExecutionContext* unk2) {} -void sub_0807E004(Entity* unk1, unk_struct* unk2) { +void sub_0807E004(Entity* unk1, ScriptExecutionContext* unk2) { gUnk_02033280.unk_07 |= 2; } -void sub_0807E014(Entity* unk1, unk_struct* unk2) { +void sub_0807E014(Entity* unk1, ScriptExecutionContext* unk2) { gUnk_02033280.unk_07 &= ~2; } -void sub_0807E024(Entity* unk1, unk_struct* unk2) { +void sub_0807E024(Entity* unk1, ScriptExecutionContext* unk2) { s16 tmp; unk2->unk_00++; tmp = GetNextScriptCommandHalfword(unk2->unk_00); @@ -404,64 +332,64 @@ void sub_0807E024(Entity* unk1, unk_struct* unk2) { gUnk_02033280.unk_06 = 0; } -void sub_0807E050(Entity* unk1, unk_struct* unk2) { +void sub_0807E050(Entity* unk1, ScriptExecutionContext* unk2) { if (unk2->unk_14) { sub_0807E024(unk1, unk2); } } -void sub_0807E064(Entity* unk1, unk_struct* unk2) { +void sub_0807E064(Entity* unk1, ScriptExecutionContext* unk2) { if (!unk2->unk_14) { sub_0807E024(unk1, unk2); } } -void sub_0807E078(Entity* unk1, unk_struct* unk2) { +void sub_0807E078(Entity* unk1, ScriptExecutionContext* unk2) { if (gUnk_02033280.unk_06 > unk2->unk_04) { unk2->unk_00 += unk2->unk_04; sub_0807E024(unk1, unk2); } } -void sub_0807E0A0(Entity* unk1, unk_struct* unk2) { +void sub_0807E0A0(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_00 = (u16*) GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00); gUnk_02033280.unk_06 = 0; } -void sub_0807E0B8(Entity* unk1, unk_struct* unk2) { +void sub_0807E0B8(Entity* unk1, ScriptExecutionContext* unk2) { if (unk2->unk_14) { sub_0807E0A0(unk1, unk2); } } -void sub_0807E0CC(Entity* unk1, unk_struct* unk2) { +void sub_0807E0CC(Entity* unk1, ScriptExecutionContext* unk2) { if (!unk2->unk_14) { sub_0807E0A0(unk1, unk2); } } -void sub_0807E0E0(Entity* unk1, unk_struct* unk2) { +void sub_0807E0E0(Entity* unk1, ScriptExecutionContext* unk2) { if (gUnk_02033280.unk_06 > (unk2->unk_04 << 1) + 1) { unk2->unk_00 += unk2->unk_04 << 1; sub_0807E0A0(unk1, unk2); } } -void sub_0807E10C(Entity* unk1, unk_struct* unk2) { - ((void (*)(Entity*, unk_struct*)) GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00))(unk1, unk2); +void sub_0807E10C(Entity* unk1, ScriptExecutionContext* unk2) { + ((void (*)(Entity*, ScriptExecutionContext*)) GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00))(unk1, unk2); } -void sub_0807E124(Entity* unk1, unk_struct* unk2) { - void (* tmp)(Entity*, unk_struct*) = (void (*)(Entity*, unk_struct*)) GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00); +void sub_0807E124(Entity* unk1, ScriptExecutionContext* unk2) { + void (* tmp)(Entity*, ScriptExecutionContext*) = (void (*)(Entity*, ScriptExecutionContext*)) GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00); unk2->unk_04 = GetNextScriptCommandWord(unk2->unk_00 + 3); tmp(unk1, unk2); } -void sub_0807E148(Entity* unk1, unk_struct* unk2) { +void sub_0807E148(Entity* unk1, ScriptExecutionContext* unk2) { LoadRoomEntityList(GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00)); } -void sub_0807E158(Entity* unk1, unk_struct* unk2) { +void sub_0807E158(Entity* unk1, ScriptExecutionContext* unk2) { u32 tmp = GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00); u32 tmp2 = 0; u32 tmp3 = gUnk_02033280.unk_00; @@ -471,7 +399,7 @@ void sub_0807E158(Entity* unk1, unk_struct* unk2) { gUnk_02033280.unk_07 |= 1; } -void sub_0807E188(Entity* unk1, unk_struct* unk2) { +void sub_0807E188(Entity* unk1, ScriptExecutionContext* unk2) { u32 tmp; u32 tmp2 = GetNextScriptCommandHalfwordAfterCommandMetadata(unk2->unk_00); switch (tmp2) { @@ -494,32 +422,32 @@ void sub_0807E188(Entity* unk1, unk_struct* unk2) { gUnk_02033280.unk_07 |= 1; } -void sub_0807E1D8(Entity* unk1, unk_struct* unk2) { +void sub_0807E1D8(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_14 = GetInventoryValue(unk2->unk_00[1]) == 2; gUnk_02033280.unk_07 |= 1; } -void sub_0807E200(Entity* unk1, unk_struct* unk2) { +void sub_0807E200(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_14 = CheckLocalFlag(unk2->unk_00[1]); gUnk_02033280.unk_07 |= 1; } -void sub_0807E220(Entity* unk1, unk_struct* unk2) { +void sub_0807E220(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_14 = CheckLocalFlagByOffset(unk2->unk_00[1], unk2->unk_00[2]); gUnk_02033280.unk_07 |= 1; } -void sub_0807E240(Entity* unk1, unk_struct* unk2) { +void sub_0807E240(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_14 = CheckGlobalFlag(GetNextScriptCommandHalfwordAfterCommandMetadata(unk2->unk_00)); gUnk_02033280.unk_07 |= 1; } -void sub_0807E260(Entity* unk1, unk_struct* unk2) { +void sub_0807E260(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_14 = CheckRoomFlag(unk2->unk_00[1]); gUnk_02033280.unk_07 |= 1; } -void sub_0807E280(Entity* unk1, unk_struct* unk2) { +void sub_0807E280(Entity* unk1, ScriptExecutionContext* unk2) { u32 x, y, width, height; width = unk2->unk_00[3]; height = width >> 8; @@ -530,7 +458,7 @@ void sub_0807E280(Entity* unk1, unk_struct* unk2) { gUnk_02033280.unk_07 |= 1; } -void sub_0807E2A8(Entity* unk1, unk_struct* unk2) { +void sub_0807E2A8(Entity* unk1, ScriptExecutionContext* unk2) { u32 x, y, width, height; width = unk2->unk_00[1] & 0xFF; height = unk2->unk_00[1] >> 8; @@ -540,7 +468,7 @@ void sub_0807E2A8(Entity* unk1, unk_struct* unk2) { gUnk_02033280.unk_07 |= 1; } -void sub_0807E2E4(Entity* unk1, unk_struct* unk2) { +void sub_0807E2E4(Entity* unk1, ScriptExecutionContext* unk2) { if (unk1->interactType) { unk1->interactType = 0; unk2->unk_14 = 1; @@ -550,7 +478,7 @@ void sub_0807E2E4(Entity* unk1, unk_struct* unk2) { gUnk_02033280.unk_07 |= 1; } -void sub_0807E30C(Entity* unk1, unk_struct* unk2) { +void sub_0807E30C(Entity* unk1, ScriptExecutionContext* unk2) { if ((unk2->unk_1A & 0xF) == 0 && (gPlayerState.flags.all & 0x80) == 0 && sub_080041A0(unk1, &gPlayerEntity, 0x28, 0x28)) { @@ -567,27 +495,27 @@ void sub_0807E30C(Entity* unk1, unk_struct* unk2) { gUnk_02033280.unk_07 |= 1; } -void sub_0807E390(Entity* unk1, unk_struct* unk2) { +void sub_0807E390(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_14 = (unk2->unk_00[1] <= gUnk_02002A40.stats.rupees); gUnk_02033280.unk_07 |= 1; } -void sub_0807E3BC(Entity* unk1, unk_struct* unk2) { +void sub_0807E3BC(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_14 = (unk2->unk_00[1] <= gUnk_02002A40.stats.field_0x1a); gUnk_02033280.unk_07 |= 1; } -void sub_0807E3E8(Entity* unk1, unk_struct* unk2) { +void sub_0807E3E8(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_14 = !gUnk_02000040.unk_01; gUnk_02033280.unk_07 |= 1; } -void sub_0807E40C(Entity* unk1, unk_struct* unk2) { +void sub_0807E40C(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_14 = CheckKinstoneFused(unk2->unk_00[1]); gUnk_02033280.unk_07 |= 1; } -void sub_0807E42C(Entity* unk1, unk_struct* unk2) { +void sub_0807E42C(Entity* unk1, ScriptExecutionContext* unk2) { u32 tmp, tmp2; s32 tmp3; tmp = unk2->unk_00[1]; @@ -607,106 +535,106 @@ void sub_0807E42C(Entity* unk1, unk_struct* unk2) { gUnk_02033280.unk_07 |= 1; } -void sub_0807E48C(Entity* unk1, unk_struct* unk2) { +void sub_0807E48C(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_14 = sub_080544DC(unk2->unk_00[1]); gUnk_02033280.unk_07 |= 1; } -void sub_0807E4AC(Entity* unk1, unk_struct* unk2) { +void sub_0807E4AC(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_14 = !!gRoomVars.itemForSaleIndex; gUnk_02033280.unk_07 |= 1; } -void sub_0807E4CC(Entity* unk1, unk_struct* unk2) { +void sub_0807E4CC(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_14 = !!(unk2->unk_04 & unk2->unk_00[1]); gUnk_02033280.unk_07 |= 1; } -void sub_0807E4EC(Entity* unk1, unk_struct* unk2) { +void sub_0807E4EC(Entity* unk1, ScriptExecutionContext* unk2) { u32 tmp = unk2->unk_00[1]; unk2->unk_14 = tmp == (tmp & unk2->unk_04); gUnk_02033280.unk_07 |= 1; } -void sub_0807E514(Entity* unk1, unk_struct* unk2) { +void sub_0807E514(Entity* unk1, ScriptExecutionContext* unk2) { u32 tmp = unk2->unk_00[1]; unk2->unk_14 = tmp == unk2->unk_04; gUnk_02033280.unk_07 |= 1; } -void sub_0807E538(Entity* unk1, unk_struct* unk2) { +void sub_0807E538(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_14 = !!(GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00) & gPlayerState.flags.all); gUnk_02033280.unk_07 |= 1; } -void sub_0807E564(Entity* unk1, unk_struct* unk2) { +void sub_0807E564(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_14 = (gPlayerState.flags.all >> 7) & 1; gUnk_02033280.unk_07 |= 1; } -void sub_0807E584(Entity* unk1, unk_struct* unk2) { +void sub_0807E584(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_14 = unk1->height.WORD != 0; gUnk_02033280.unk_07 |= 1; } -void sub_0807E5A0(Entity* unk1, unk_struct* unk2) { +void sub_0807E5A0(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_14 = unk2->unk_00[1] == gPlayerEntity.action; gUnk_02033280.unk_07 |= 1; } -void sub_0807E5CC(Entity* unk1, unk_struct* unk2) { +void sub_0807E5CC(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_14 = unk2->unk_00[1] == gPlayerEntity.animationState; gUnk_02033280.unk_07 |= 1; } -void sub_0807E5F8(Entity* unk1, unk_struct* unk2) { +void sub_0807E5F8(Entity* unk1, ScriptExecutionContext* unk2) { gUnk_02033280.unk_00 |= GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00); } -void sub_0807E610(Entity* unk1, unk_struct* unk2) { +void sub_0807E610(Entity* unk1, ScriptExecutionContext* unk2) { gUnk_02033280.unk_00 &= ~GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00); } -void sub_0807E628(Entity* unk1, unk_struct* unk2) { +void sub_0807E628(Entity* unk1, ScriptExecutionContext* unk2) { SetLocalFlag(unk2->unk_00[1]); } -void sub_0807E634(Entity* unk1, unk_struct* unk2) { +void sub_0807E634(Entity* unk1, ScriptExecutionContext* unk2) { SetLocalFlagByOffset(unk2->unk_00[1], unk2->unk_00[2]); } -void sub_0807E644(Entity* unk1, unk_struct* unk2) { +void sub_0807E644(Entity* unk1, ScriptExecutionContext* unk2) { ClearLocalFlag(unk2->unk_00[1]); } -void sub_0807E650(Entity* unk1, unk_struct* unk2) { +void sub_0807E650(Entity* unk1, ScriptExecutionContext* unk2) { SetGlobalFlag(unk2->unk_00[1]); } -void sub_0807E65C(Entity* unk1, unk_struct* unk2) { +void sub_0807E65C(Entity* unk1, ScriptExecutionContext* unk2) { ClearGlobalFlag(unk2->unk_00[1]); } -void sub_0807E668(Entity* unk1, unk_struct* unk2) { +void sub_0807E668(Entity* unk1, ScriptExecutionContext* unk2) { SetRoomFlag(unk2->unk_00[1]); } -void sub_0807E674(Entity* unk1, unk_struct* unk2) { +void sub_0807E674(Entity* unk1, ScriptExecutionContext* unk2) { ClearRoomFlag(unk2->unk_00[1]); } -void sub_0807E680(Entity* unk1, unk_struct* unk2) { +void sub_0807E680(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_10 = GetNextScriptCommandHalfwordAfterCommandMetadata(unk2->unk_00); } -void sub_0807E690(Entity* unk1, unk_struct* unk2) { +void sub_0807E690(Entity* unk1, ScriptExecutionContext* unk2) { u32 tmp = GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00); if ((gUnk_02033280.unk_00 & tmp) != tmp) { gUnk_02033280.unk_06 = 0; } } -void sub_0807E6AC(Entity* unk1, unk_struct* unk2) { +void sub_0807E6AC(Entity* unk1, ScriptExecutionContext* unk2) { u32 tmp = GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00); if ((gUnk_02033280.unk_00 & tmp) != tmp) { gUnk_02033280.unk_06 = 0; @@ -716,7 +644,7 @@ void sub_0807E6AC(Entity* unk1, unk_struct* unk2) { } } -void sub_0807E6DC(Entity* unk1, unk_struct* unk2) { +void sub_0807E6DC(Entity* unk1, ScriptExecutionContext* unk2) { if (gPlayerEntity.action == 8) { gUnk_02033280.unk_06 = 0; } else { @@ -724,7 +652,7 @@ void sub_0807E6DC(Entity* unk1, unk_struct* unk2) { } } -void sub_0807E700(Entity* unk1, unk_struct* unk2) { +void sub_0807E700(Entity* unk1, ScriptExecutionContext* unk2) { if (gPlayerEntity.action != 0x17) { gUnk_02033280.unk_07 |= 1; } else { @@ -732,7 +660,7 @@ void sub_0807E700(Entity* unk1, unk_struct* unk2) { } } -void sub_0807E72C(Entity* unk1, unk_struct* unk2) { +void sub_0807E72C(Entity* unk1, ScriptExecutionContext* unk2) { if (gRoomControls.unk6 & 4) { gUnk_02033280.unk_06 = 0; } else { @@ -740,47 +668,47 @@ void sub_0807E72C(Entity* unk1, unk_struct* unk2) { } } -void sub_0807E75C(Entity* unk1, unk_struct* unk2) { +void sub_0807E75C(Entity* unk1, ScriptExecutionContext* unk2) { if (gFadeControl.active) { gUnk_02033280.unk_06 = 0; } } -void sub_0807E778(Entity* unk1, unk_struct* unk2) { +void sub_0807E778(Entity* unk1, ScriptExecutionContext* unk2) { gUnk_02033280.unk_08 = unk2->unk_00[1]; } -void sub_0807E788(Entity* unk1, unk_struct* unk2) { +void sub_0807E788(Entity* unk1, ScriptExecutionContext* unk2) { gFadeControl.field_0x4 = GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00); } -void sub_0807E79C(Entity* unk1, unk_struct* unk2) { +void sub_0807E79C(Entity* unk1, ScriptExecutionContext* unk2) { sub_080500F4(gUnk_02033280.unk_08); } -void nullsub_508(Entity* unk1, unk_struct* unk2) {} +void nullsub_508(Entity* unk1, ScriptExecutionContext* unk2) {} -void sub_0807E7B0(Entity* unk1, unk_struct* unk2) { +void sub_0807E7B0(Entity* unk1, ScriptExecutionContext* unk2) { DoFade(4, gUnk_02033280.unk_08); } -void sub_0807E7C4(Entity* unk1, unk_struct* unk2) { +void sub_0807E7C4(Entity* unk1, ScriptExecutionContext* unk2) { DoFade(5, gUnk_02033280.unk_08); } -void sub_0807E7D8(Entity* unk1, unk_struct* unk2) { +void sub_0807E7D8(Entity* unk1, ScriptExecutionContext* unk2) { DoFade(6, gUnk_02033280.unk_08); } -void sub_0807E7EC(Entity* unk1, unk_struct* unk2) { +void sub_0807E7EC(Entity* unk1, ScriptExecutionContext* unk2) { DoFade(7, gUnk_02033280.unk_08); } -void sub_0807E800(Entity* unk1, unk_struct* unk2) { +void sub_0807E800(Entity* unk1, ScriptExecutionContext* unk2) { sub_0807E818(0x10); } -void sub_0807E80C(Entity* unk1, unk_struct* unk2) { +void sub_0807E80C(Entity* unk1, ScriptExecutionContext* unk2) { sub_0807E818(0x11); } @@ -797,24 +725,24 @@ void sub_0807E818(u32 unk1) { sub_08050110(tmp2, tmp3, unk1, gUnk_02033280.unk_08); } -void sub_0807E858(Entity* unk1, unk_struct* unk2) { +void sub_0807E858(Entity* unk1, ScriptExecutionContext* unk2) { sub_08050038(unk2->unk_00[1]); } -void sub_0807E864(Entity* unk1, unk_struct* unk2) { +void sub_0807E864(Entity* unk1, ScriptExecutionContext* unk2) { gPlayerState.field_0x8b = 3; sub_08078B48(); } -void sub_0807E878(Entity* unk1, unk_struct* unk2) { +void sub_0807E878(Entity* unk1, ScriptExecutionContext* unk2) { gPlayerState.field_0x8b = 1; } -void sub_0807E888(Entity* unk1, unk_struct* unk2) { +void sub_0807E888(Entity* unk1, ScriptExecutionContext* unk2) { gPlayerState.field_0x8b = 3; } -void sub_0807E898(Entity* unk1, unk_struct* unk2) { +void sub_0807E898(Entity* unk1, ScriptExecutionContext* unk2) { u32 tmp = GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00); gPlayerState.playerAction = tmp; gPlayerState.field_0x38 = tmp >> 8; @@ -822,40 +750,40 @@ void sub_0807E898(Entity* unk1, unk_struct* unk2) { gPlayerState.field_0x3a = tmp >> 0x18; } -void sub_0807E8C4(Entity* unk1, unk_struct* unk2) { +void sub_0807E8C4(Entity* unk1, ScriptExecutionContext* unk2) { StartPlayerScript(GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00)); } -void sub_0807E8D4(Entity* unk1, unk_struct* unk2) { +void sub_0807E8D4(Entity* unk1, ScriptExecutionContext* unk2) { gPlayerState.field_0x8 = unk2->unk_00[1]; } -void sub_0807E8E4(Entity* unk1, unk_struct* unk2) { +void sub_0807E8E4(Entity* unk1, ScriptExecutionContext* unk2) { u32 tmp = (gUnk_08016984 & 0x3FF); u32 tmp2; gPlayerEntity.animationState = tmp2 = (unk2->unk_00[0] - tmp) << 1; } -void sub_0807E908(Entity* unk1, unk_struct* unk2) { +void sub_0807E908(Entity* unk1, ScriptExecutionContext* unk2) { unk1->action = unk2->unk_00[1]; unk1->previousActionFlag = 0; } -void sub_0807E914(Entity* unk1, unk_struct* unk2) { +void sub_0807E914(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_04 = GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00); } -void sub_0807E924(Entity* unk1, unk_struct* unk2) { +void sub_0807E924(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_04 = unk1->frames.all; unk1->frames.all = 0; } -void sub_0807E930(Entity* unk1, unk_struct* unk2) { +void sub_0807E930(Entity* unk1, ScriptExecutionContext* unk2) { unk1->field_0x80.HWORD = unk2->unk_00[1]; InitAnimationForceUpdate(unk1, unk2->unk_00[1]); } -void sub_0807E944(Entity* unk1, unk_struct* unk2) { +void sub_0807E944(Entity* unk1, ScriptExecutionContext* unk2) { if (unk1->interactType) { unk1->interactType = 0; gUnk_02033280.unk_07 |= 1; @@ -864,7 +792,7 @@ void sub_0807E944(Entity* unk1, unk_struct* unk2) { } } -void sub_0807E974(Entity* unk1, unk_struct* unk2) { +void sub_0807E974(Entity* unk1, ScriptExecutionContext* unk2) { switch (unk2->unk_18) { default: if (!--unk2->unk_19) return; @@ -884,19 +812,19 @@ void sub_0807E974(Entity* unk1, unk_struct* unk2) { gUnk_02033280.unk_06 = 0; } -void sub_0807E9D4(Entity* unk1, unk_struct* unk2) { +void sub_0807E9D4(Entity* unk1, ScriptExecutionContext* unk2) { sub_08078778(unk1); } -void sub_0807E9DC(Entity* unk1, unk_struct* unk2) { +void sub_0807E9DC(Entity* unk1, ScriptExecutionContext* unk2) { sub_080788E0(unk1); } -void sub_0807E9E4(Entity* unk1, unk_struct* unk2) { +void sub_0807E9E4(Entity* unk1, ScriptExecutionContext* unk2) { sub_08078784(unk1, unk2->unk_00[1]); } -void sub_0807E9F0(Entity* unk1, unk_struct* unk2) { +void sub_0807E9F0(Entity* unk1, ScriptExecutionContext* unk2) { u32 tmp; sub_0801E00C(); tmp = 1; @@ -921,7 +849,7 @@ void sub_0807E9F0(Entity* unk1, unk_struct* unk2) { } } -void sub_0807EA4C(Entity* unk1, unk_struct* unk2) { +void sub_0807EA4C(Entity* unk1, ScriptExecutionContext* unk2) { if (unk1->interactType == 2) { sub_0801DFB4(unk1, 0, 0, 0); unk1->interactType = 0; @@ -931,31 +859,31 @@ void sub_0807EA4C(Entity* unk1, unk_struct* unk2) { } } -void sub_0807EA88(Entity* unk1, unk_struct* unk2) { +void sub_0807EA88(Entity* unk1, ScriptExecutionContext* unk2) { sub_08078790(unk1, unk2->unk_00[1]); } -void sub_0807EA94(Entity* unk1, unk_struct* unk2) { +void sub_0807EA94(Entity* unk1, ScriptExecutionContext* unk2) { if (gTextBox.doTextBox & 0x7F) { gUnk_02033280.unk_06 = 0; } } -void sub_0807EAB4(Entity* unk1, unk_struct* unk2) { +void sub_0807EAB4(Entity* unk1, ScriptExecutionContext* unk2) { TextboxNoOverlapFollow(unk2->unk_00[1]); } -void sub_0807EAC0(Entity* unk1, unk_struct* unk2) { +void sub_0807EAC0(Entity* unk1, ScriptExecutionContext* unk2) { TextboxNoOverlap(unk2->unk_00[1], unk1); } -void sub_0807EAD0(Entity* unk1, unk_struct* unk2) { +void sub_0807EAD0(Entity* unk1, ScriptExecutionContext* unk2) { TextboxNoOverlapFollow(unk2->unk_00[1]); gTextBox.textWindowPosX = 1; gTextBox.textWindowPosY = unk2->unk_00[2]; } -void sub_0807EAF0(Entity* unk1, unk_struct* unk2) { +void sub_0807EAF0(Entity* unk1, ScriptExecutionContext* unk2) { if (gUnk_02033280.unk_06 > unk2->unk_04) { u16 * tmp = unk2->unk_00 + unk2->unk_04; TextboxNoOverlapFollow(tmp[1]); @@ -964,68 +892,68 @@ void sub_0807EAF0(Entity* unk1, unk_struct* unk2) { } } -void sub_0807EB18(Entity* unk1, unk_struct* unk2) { +void sub_0807EB18(Entity* unk1, ScriptExecutionContext* unk2) { TextboxNoOverlap(unk2->unk_04, unk1); } -void sub_0807EB28(Entity* unk1, unk_struct* unk2) { +void sub_0807EB28(Entity* unk1, ScriptExecutionContext* unk2) { sub_08078AA8(unk2->unk_00[1], 0); } -void sub_0807EB38(Entity* unk1, unk_struct* unk2) { +void sub_0807EB38(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_04 = gUnk_02000040.unk_01; } -void sub_0807EB44(Entity* unk1, unk_struct* unk2) { +void sub_0807EB44(Entity* unk1, ScriptExecutionContext* unk2) { unk1->animationState = unk2->unk_00[1]; } -void sub_0807EB4C(Entity* unk1, unk_struct* unk2) { +void sub_0807EB4C(Entity* unk1, ScriptExecutionContext* unk2) { unk1->animationState = sub_0806F5B0(sub_080045B4(unk1, unk2->unk_00[1] + gRoomControls.roomOriginX, unk2->unk_00[2] + gRoomControls.roomOriginY)); } -void sub_0807EB74(Entity* unk1, unk_struct* unk2) { +void sub_0807EB74(Entity* unk1, ScriptExecutionContext* unk2) { unk1->animationState = sub_0806F5B0(GetFacingDirection(unk1, &gPlayerEntity)); } -void sub_0807EB8C(Entity* unk1, unk_struct* unk2) { +void sub_0807EB8C(Entity* unk1, ScriptExecutionContext* unk2) { gPlayerEntity.animationState = sub_0806F5B0(GetFacingDirection(&gPlayerEntity, unk1)) & ~1; } -void sub_0807EBA8(Entity* unk1, unk_struct* unk2) { +void sub_0807EBA8(Entity* unk1, ScriptExecutionContext* unk2) { unk1->direction = unk2->unk_00[1]; } -void sub_0807EBB0(Entity* unk1, unk_struct* unk2) { +void sub_0807EBB0(Entity* unk1, ScriptExecutionContext* unk2) { unk1->direction = unk2->unk_00[1]; unk1->animationState = unk1->direction / 4; } -void sub_0807EBC0(Entity* unk1, unk_struct* unk2) { +void sub_0807EBC0(Entity* unk1, ScriptExecutionContext* unk2) { unk1->nonPlanarMovement = unk2->unk_00[1]; } -void sub_0807EBC8(Entity* unk1, unk_struct* unk2) { +void sub_0807EBC8(Entity* unk1, ScriptExecutionContext* unk2) { unk1->field_0x20 = GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00); } -void sub_0807EBD8(Entity* unk1, unk_struct* unk2) { +void sub_0807EBD8(Entity* unk1, ScriptExecutionContext* unk2) { unk1->x.HALF.HI = gRoomControls.roomOriginX + unk2->unk_00[1]; unk1->y.HALF.HI = gRoomControls.roomOriginY + unk2->unk_00[2]; } -void sub_0807EBF4(Entity* unk1, unk_struct* unk2) { +void sub_0807EBF4(Entity* unk1, ScriptExecutionContext* unk2) { unk1->x.HALF.HI += unk2->unk_00[1]; unk1->y.HALF.HI += unk2->unk_00[2]; } -void sub_0807EC08(Entity* unk1, unk_struct* unk2) { +void sub_0807EC08(Entity* unk1, ScriptExecutionContext* unk2) { CopyPosition(&gPlayerEntity, unk1); } -void nullsub_509(Entity* unk1, unk_struct* unk2) {} +void nullsub_509(Entity* unk1, ScriptExecutionContext* unk2) {} -void sub_0807EC1C(Entity* unk1, unk_struct* unk2) { +void sub_0807EC1C(Entity* unk1, ScriptExecutionContext* unk2) { if (!unk2->unk_18) { unk2->unk_18 = 1; unk2->unk_12 = unk2->unk_00[1]; @@ -1034,14 +962,14 @@ void sub_0807EC1C(Entity* unk1, unk_struct* unk2) { sub_0807EC44(unk1, unk2); } -void sub_0807EC44(Entity* unk1, unk_struct* unk2) { +void sub_0807EC44(Entity* unk1, ScriptExecutionContext* unk2) { sub_0806F69C(unk1); if (--unk2->unk_12) { gUnk_02033280.unk_06 = 0; } } -void sub_0807EC64(Entity* unk1, unk_struct* unk2) { +void sub_0807EC64(Entity* unk1, ScriptExecutionContext* unk2) { if (!unk2->unk_18) { unk2->unk_18 = 1; unk2->unk_12 = unk2->unk_00[1]; @@ -1052,7 +980,7 @@ void sub_0807EC64(Entity* unk1, unk_struct* unk2) { sub_0807EC44(unk1, unk2); } -void sub_0807EC94(Entity* unk1, unk_struct* unk2) { +void sub_0807EC94(Entity* unk1, ScriptExecutionContext* unk2) { if (!unk2->unk_18) { unk2->unk_18 = 1; unk2->unk_12 = unk2->unk_00[1]; @@ -1063,7 +991,7 @@ void sub_0807EC94(Entity* unk1, unk_struct* unk2) { sub_0807EC44(unk1, unk2); } -void sub_0807ECC4(Entity* unk1, unk_struct* unk2) { +void sub_0807ECC4(Entity* unk1, ScriptExecutionContext* unk2) { if (!unk2->unk_18) { unk2->unk_18 = 1; unk2->unk_12 = unk2->unk_00[1]; @@ -1074,7 +1002,7 @@ void sub_0807ECC4(Entity* unk1, unk_struct* unk2) { sub_0807EC44(unk1, unk2); } -void sub_0807ECF4(Entity* unk1, unk_struct* unk2) { +void sub_0807ECF4(Entity* unk1, ScriptExecutionContext* unk2) { if (!unk2->unk_18) { unk2->unk_18 = 1; unk2->unk_12 = unk2->unk_00[1]; @@ -1085,7 +1013,7 @@ void sub_0807ECF4(Entity* unk1, unk_struct* unk2) { sub_0807EC44(unk1, unk2); } -void sub_0807ED24(Entity* unk1, unk_struct* unk2) { +void sub_0807ED24(Entity* unk1, ScriptExecutionContext* unk2) { if (!unk2->unk_18) { s32 tmp, tmp2, tmp3; unk2->unk_18 = 1; @@ -1110,7 +1038,7 @@ void sub_0807ED24(Entity* unk1, unk_struct* unk2) { gUnk_02033280.unk_06 = 0; } -void sub_0807EDD4(Entity* unk1, unk_struct* unk2) { +void sub_0807EDD4(Entity* unk1, ScriptExecutionContext* unk2) { if (!unk2->unk_18) { unk2->unk_18 = 1; sub_0807EE04(unk1, unk2); @@ -1121,12 +1049,12 @@ void sub_0807EDD4(Entity* unk1, unk_struct* unk2) { } } -void sub_0807EE04(Entity* unk1, unk_struct* unk2) { +void sub_0807EE04(Entity* unk1, ScriptExecutionContext* unk2) { sub_0807DEDC(unk1, unk2, unk2->unk_00[1] + gRoomControls.roomOriginX, unk2->unk_00[2] + gRoomControls.roomOriginY); gUnk_02033280.unk_07 |= 1; } -void sub_0807EE30(Entity* unk1, unk_struct* unk2) { +void sub_0807EE30(Entity* unk1, ScriptExecutionContext* unk2) { s32 tmp, tmp2; if (!--unk2->unk_19) { unk2->unk_19 = 8; @@ -1146,7 +1074,7 @@ void sub_0807EE30(Entity* unk1, unk_struct* unk2) { } } -void sub_0807EEB4(Entity* unk1, unk_struct* unk2) { +void sub_0807EEB4(Entity* unk1, ScriptExecutionContext* unk2) { if (!unk2->unk_18) { unk2->unk_18 = 1; sub_0807DEDC(unk1, unk2, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI); @@ -1157,7 +1085,7 @@ void sub_0807EEB4(Entity* unk1, unk_struct* unk2) { } } -void sub_0807EEF4(Entity* unk1, unk_struct* unk2) { +void sub_0807EEF4(Entity* unk1, ScriptExecutionContext* unk2) { if (!unk2->unk_18) { unk2->unk_18 = 1; sub_0807DEDC(unk1, unk2, unk1->x.HALF.HI + ((s16)unk2->unk_00[1]), unk1->y.HALF.HI + ((s16)unk2->unk_00[2])); @@ -1168,7 +1096,7 @@ void sub_0807EEF4(Entity* unk1, unk_struct* unk2) { } } -void sub_0807EF3C(Entity* unk1, unk_struct* unk2) { +void sub_0807EF3C(Entity* unk1, ScriptExecutionContext* unk2) { if (!unk2->unk_18) { unk2->unk_18 = 1; unk1->field_0x20 = ((s16) unk2->unk_00[1]) << 8; @@ -1180,19 +1108,19 @@ void sub_0807EF3C(Entity* unk1, unk_struct* unk2) { gUnk_02033280.unk_06 = 0; } -void sub_0807EF80(Entity* unk1, unk_struct* unk2) { +void sub_0807EF80(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_08 |= 1 << unk2->unk_00[1]; } -void sub_0807EF90(Entity* unk1, unk_struct* unk2) { +void sub_0807EF90(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_08 |= 1 << unk2->unk_00[1]; } -void sub_0807EFA0(Entity* unk1, unk_struct* unk2) { +void sub_0807EFA0(Entity* unk1, ScriptExecutionContext* unk2) { PlaySFX(unk2->unk_00[1]); } -void sub_0807EFAC(Entity* unk1, unk_struct* unk2) { +void sub_0807EFAC(Entity* unk1, ScriptExecutionContext* unk2) { if (unk2->unk_00[1] >= 100) { PlaySFX(gArea.musicIndex); } else { @@ -1200,28 +1128,28 @@ void sub_0807EFAC(Entity* unk1, unk_struct* unk2) { } } -void sub_0807EFD4(Entity* unk1, unk_struct* unk2) { +void sub_0807EFD4(Entity* unk1, ScriptExecutionContext* unk2) { PlaySFX(GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00)); } -void sub_0807EFE4(Entity* unk1, unk_struct* unk2) { +void sub_0807EFE4(Entity* unk1, ScriptExecutionContext* unk2) { PlaySFX(0x80100000); } -void sub_0807EFF4(Entity* unk1, unk_struct* unk2) { +void sub_0807EFF4(Entity* unk1, ScriptExecutionContext* unk2) { ModRupees((s16)unk2->unk_00[1]); } -void sub_0807F004(Entity* unk1, unk_struct* unk2) { +void sub_0807F004(Entity* unk1, ScriptExecutionContext* unk2) { ModHealth(unk2->unk_00[1]); } -void sub_0807F010(Entity* unk1, unk_struct* unk2) { +void sub_0807F010(Entity* unk1, ScriptExecutionContext* unk2) { gUnk_02002A40.stats.maxHealth = min(gUnk_02002A40.stats.maxHealth + 8, 0xA0); gUnk_02002A40.stats.health = gUnk_02002A40.stats.maxHealth; } -void sub_0807F034(Entity* unk1, unk_struct* unk2) { +void sub_0807F034(Entity* unk1, ScriptExecutionContext* unk2) { u32 tmp = 0; if (unk2->unk_00[1] == 0x3F) { tmp = unk2->unk_04; @@ -1229,35 +1157,35 @@ void sub_0807F034(Entity* unk1, unk_struct* unk2) { sub_080A7C18(unk2->unk_00[1], tmp, 0); } -void sub_0807F050(Entity* unk1, unk_struct* unk2) { +void sub_0807F050(Entity* unk1, ScriptExecutionContext* unk2) { sub_080A7C18(0x5C, unk2->unk_00[1], 0); } -void sub_0807F060(Entity* unk1, unk_struct* unk2) { +void sub_0807F060(Entity* unk1, ScriptExecutionContext* unk2) { unk2->unk_04 = GetInventoryValue(unk2->unk_00[1]); unk2->unk_14 = unk2->unk_04 != 0; } -void sub_0807F078(Entity* unk1, unk_struct* unk2) { +void sub_0807F078(Entity* unk1, ScriptExecutionContext* unk2) { sub_0807CAA0(unk2->unk_00[1], unk2->unk_00[2]); } -void sub_0807F088(Entity* unk1, unk_struct* unk2) { +void sub_0807F088(Entity* unk1, ScriptExecutionContext* unk2) { sub_080A7C18(unk2->unk_00[1], 0, 3); } -void sub_0807F098(Entity* unk1, unk_struct* unk2) { +void sub_0807F098(Entity* unk1, ScriptExecutionContext* unk2) { gRoomControls.cameraTarget = unk1; } -void sub_0807F0A4(Entity* unk1, unk_struct* unk2) { +void sub_0807F0A4(Entity* unk1, ScriptExecutionContext* unk2) { gRoomControls.cameraTarget = &gPlayerEntity; } -void sub_0807F0B4(Entity* unk1, unk_struct* unk2) { +void sub_0807F0B4(Entity* unk1, ScriptExecutionContext* unk2) { gRoomControls.unk5 = unk2->unk_00[1] & 7; } -void sub_0807F0C8(Entity* unk1, unk_struct* unk2) { +void sub_0807F0C8(Entity* unk1, ScriptExecutionContext* unk2) { sub_08080964(unk2->unk_00[1], unk2->unk_00[2]); } diff --git a/src/npc/goron.c b/src/npc/goron.c index 08ddcc5a..33345e48 100644 --- a/src/npc/goron.c +++ b/src/npc/goron.c @@ -3,7 +3,6 @@ #include "functions.h" #include "textbox.h" -extern u8 gUnk_02033280[]; extern void (*gUnk_08111A80[])(Entity*); extern void (*gUnk_08111A8C[])(Entity*); extern Dialog gUnk_08111A94[]; @@ -99,7 +98,7 @@ u32 sub_08069480(Entity* this) { void sub_0806948C(Entity* this, u32* param_1) { param_1[5] = CheckKinstoneFused((sub_08069480(this) << 24) >> 24); - gUnk_02033280[7] |= 1; + gUnk_02033280.unk_07 |= 1; } void sub_080694B0(Entity* this) { diff --git a/src/npc/postman.c b/src/npc/postman.c index b1a328c1..0dd9fc1a 100644 --- a/src/npc/postman.c +++ b/src/npc/postman.c @@ -7,11 +7,6 @@ #include "room.h" #include "structures.h" -typedef struct { - u8 filler[7]; - u8 unk; -} struct_02033280; - extern void sub_08060528(Entity*); extern void* GetCurrentRoomProperty(u32); extern void sub_0806EE04(Entity*, void*, u32); @@ -43,7 +38,6 @@ extern s8* gUnk_0810A918[]; extern void (*const gUnk_0810AA24[])(Entity*); extern Dialog gUnk_0810AA30[]; -extern struct_02033280 gUnk_02033280; void Postman(Entity* this) { if ((this->flags & 2) != 0) { @@ -213,7 +207,7 @@ void sub_08060700(Entity* entity, u32 arg1) { u32 x = coords->x + gRoomControls.roomOriginX; u32 y = coords->y + gRoomControls.roomOriginY; sub_0807DEDC(entity, arg1, x, y); - gUnk_02033280.unk |= 1; + gUnk_02033280.unk_07 |= 1; } void sub_0806075C(Entity* this) { diff --git a/src/npc/townsperson.c b/src/npc/townsperson.c index 0edca56d..34e1ea16 100644 --- a/src/npc/townsperson.c +++ b/src/npc/townsperson.c @@ -42,7 +42,6 @@ extern SpriteLoadData* gUnk_0810B6EC[]; extern u8 gUnk_0810B78C[]; extern struct_0810B680 gUnk_0810B680[]; extern u16 gUnk_0810B74A[]; -extern u8 gUnk_02033280[]; extern u8 gUnk_0810B748[]; extern u32 gUnk_0810B740[]; extern u16 gUnk_0810B790[]; @@ -242,7 +241,7 @@ void sub_08061E90(Entity* this, Entity* arg1) { arg1->spriteIndex = 1; } if (--arg1->spriteIndex != 0) { - gUnk_02033280[6] = 0; + gUnk_02033280.unk_06 = 0; } } diff --git a/src/npc/zelda.c b/src/npc/zelda.c index 9ef2018e..b7dec220 100644 --- a/src/npc/zelda.c +++ b/src/npc/zelda.c @@ -22,7 +22,6 @@ extern Entity gPlayerEntity; extern RoomControls gRoomControls; extern void (*gUnk_08110BD8[])(Entity* ent); -extern u8 gUnk_02033280[]; extern u16 gUnk_08110BE0[]; void Zelda(Entity* ent) { @@ -165,12 +164,12 @@ void sub_08066E80(Entity* ent, u8* param_2) { case 4: UpdateAnimationSingleFrame(ent); if (ent->frames.b.f3) { - gUnk_02033280[7] |= 1; + gUnk_02033280.unk_07 |= 1; return; } } ent->field_0x80.HWORD = ent->animIndex; - gUnk_02033280[6] = 0; + gUnk_02033280.unk_06 = 0; } void sub_08066F94(void) { diff --git a/src/object/greatFairy.c b/src/object/greatFairy.c index 16664216..257e748e 100644 --- a/src/object/greatFairy.c +++ b/src/object/greatFairy.c @@ -2,8 +2,8 @@ #include "entity.h" #include "room.h" #include "screen.h" -#include "greatFairy.h" #include "structures.h" +#include "greatFairy.h" #include "functions.h" enum { @@ -169,7 +169,7 @@ void GreatFairy_WingsUpdate(Entity* this) { this->action = 2; sub_0805EC60(this); gRoomVars.greatFairyState |= 32; - gUnk_02033280 |= 4; + gUnk_02033280.unk_00 |= 4; } else { sub_0805EC9C(this, this->nonPlanarMovement, 256, 0); }