summaryrefslogtreecommitdiff
path: root/src/script.c
diff options
context:
space:
mode:
authorHenny022p <info@henny022.de>2021-03-15 22:56:23 +0100
committerHenny022p <info@henny022.de>2021-03-15 22:56:23 +0100
commita2cdfd6d8dd910aa402b7e6bdf32278ac9b80c50 (patch)
treedd9524198ad151c49eb01e92f46743e6e306673e /src/script.c
parentaac7eb743646634c1476141ba5d07da53ab56193 (diff)
parente09678c6ab4d6c1070495cf8b49b8b3dffefc4af (diff)
Merge branch 'master' into cleanup_declarations
Diffstat (limited to 'src/script.c')
-rw-r--r--src/script.c1563
1 files changed, 845 insertions, 718 deletions
diff --git a/src/script.c b/src/script.c
index 3033d528..26aff076 100644
--- a/src/script.c
+++ b/src/script.c
@@ -10,177 +10,294 @@
#include "random.h"
#include "functions.h"
-void sub_0807DAF0(Entity*, ScriptExecutionContext*, u16*);
-void sub_0807DB88(ScriptExecutionContext*, u16*);
+void InitScriptForEntity(Entity*, ScriptExecutionContext*, u16*);
+void InitScriptExecutionContext(ScriptExecutionContext* context, u16* script);
void sub_0807DE80(Entity*);
void sub_0807DF38(void);
-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 ScriptCommandNop(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_BeginBlock(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_EndBlock(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_Jump(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_JumpIf(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_JumpIfNot(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_JumpTable(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_JumpAbsolute(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_JumpAbsoluteIf(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_JumpAbsoluteIfNot(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_JumpAbsoluteTable(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_Call(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_CallWithArg(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_LoadRoomEntityList(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_TestBit(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_CheckInventory1(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_CheckInventory2(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_CheckLocalFlag(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_CheckLocalFlagByOffset(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_CheckGlobalFlag(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_CheckRoomFlag(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_CheckPlayerInRegion(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_CheckPlayerInRegion2(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_CheckEntityInteractType(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E30C(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_HasRupees(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E3BC(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E3E8(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_CheckKinstoneFused(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_BuyItem(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E48C(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_HasRoomItemForSale(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E4CC(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E4EC(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E514(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_CheckPlayerFlags(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E564(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_EntityHasHeight(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_ComparePlayerAction(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_ComparePlayerAnimationState(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E5F8(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E610(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_SetLocalFlag(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_SetLocalFlagByOffset(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_ClearLocalFlag(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_SetGlobalFlag(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_ClearGlobalFlag(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_SetRoomFlag(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_ClearRoomFlag(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_Wait(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_WaitForSomething(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_WaitForSomething2(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_WaitPlayerAction8(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_WaitForPlayerAction0x17(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_WaitFor_1(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_WaitFor_2(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E778(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E788(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E79C(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommandNop2(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_DoFade4(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_DoFade5(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_DoFade6(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_DoFade7(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E800(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E80C(Entity* entity, ScriptExecutionContext* context);
void sub_0807E818(u32);
-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 ScriptCommand_0807E858(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E864(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E878(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E888(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_SetPlayerAction(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_StartPlayerScript(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E8D4(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E8E4(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E908(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_SetIntVariable(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E924(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E930(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E944(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E974(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E9D4(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E9DC(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E9E4(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807E9F0(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807EA4C(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807EA88(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807EA94(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_TextboxNoOverlapFollow(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_TextboxNoOverlap(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_TextboxNoOverlapFollowPos(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_TextboxNoOverlapFollowTable(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_TextboxNoOverlapVar(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807EB28(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807EB38(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807EB44(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807EB4C(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807EB74(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807EB8C(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_SetEntityDirection(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_SetEntityDirectionWithAnimationState(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_SetEntitySpeed(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_SetEntity0x20(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_SetEntityPositionRelative(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_SetEntityPosition(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_MoveEntityToPlayer(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommandNop3(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807EC1C(Entity* entity, ScriptExecutionContext* context);
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 ScriptCommand_0807EC64(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807EC94(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807ECC4(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807ECF4(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807ED24(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807EDD4(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807EE04(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807EE30(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807EEB4(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807EEF4(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807EF3C(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_DoPostScriptAction(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_DoPostScriptAction2(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_SoundReq(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_SoundReq2(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_SoundReq3(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_SoundReq0x80100000(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_ModRupees(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_ModHealth(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_IncreaseMaxHealth(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807F034(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807F050(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_GetInventoryValue(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807F078(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807F088(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_CameraTargetEntity(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_CameraTargetPlayer(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807F0B4(Entity* entity, ScriptExecutionContext* context);
+void ScriptCommand_0807F0C8(Entity* entity, ScriptExecutionContext* context);
extern void CreateSpeechBubbleExclamationMark(Entity*, u32, u32);
extern void CreateSpeechBubbleQuestionMark(Entity*, u32, u32);
extern void sub_0801C4A0(u32);
-void (*const gUnk_0811E524[])() = {
- nullsub_507, sub_0807E004, sub_0807E014, sub_0807E024, sub_0807E050, sub_0807E064, sub_0807E078, sub_0807E0A0,
- sub_0807E0B8, sub_0807E0CC, sub_0807E0E0, sub_0807E10C, sub_0807E124, sub_0807E148, sub_0807E158, sub_0807E188,
- sub_0807E1D8,
- sub_0807E4AC, // defined out of order
- sub_0807E200, sub_0807E220, sub_0807E240, sub_0807E260, sub_0807E280, sub_0807E2A8, sub_0807E2E4, sub_0807E30C,
- sub_0807E390, sub_0807E3BC, sub_0807E3E8, sub_0807E40C, sub_0807E42C, sub_0807E48C, sub_0807E4CC, sub_0807E4EC,
- sub_0807E514, sub_0807E538, sub_0807E564, sub_0807E584, sub_0807E5A0, sub_0807E5CC, sub_0807E5F8, sub_0807E610,
- sub_0807E628, sub_0807E634, sub_0807E644, sub_0807E650, sub_0807E65C, sub_0807E668, sub_0807E674, sub_0807E680,
- sub_0807E690, sub_0807E6AC, sub_0807E6DC, sub_0807E700, sub_0807E72C, sub_0807E75C, sub_0807E778, sub_0807E788,
- sub_0807E79C, nullsub_508, sub_0807E7B0, sub_0807E7C4, sub_0807E7D8, sub_0807E7EC, sub_0807E800, sub_0807E80C,
- sub_0807E858, sub_0807E864, sub_0807E878, sub_0807E888, sub_0807E898, sub_0807E8C4, sub_0807E8D4, sub_0807E8E4,
- sub_0807E8E4, // duplicate
- sub_0807E8E4, // duplicate
- sub_0807E8E4, // duplicate
- sub_0807E908, sub_0807E914, sub_0807E924, sub_0807E930, sub_0807E944, sub_0807E974, sub_0807E9D4, sub_0807E9DC,
- sub_0807E9E4, sub_0807E9F0, sub_0807EA4C, sub_0807EA88, sub_0807EA94, sub_0807EAB4, sub_0807EAC0, sub_0807EAD0,
- sub_0807EAF0, sub_0807EB18, sub_0807EB28, sub_0807EB38, sub_0807EB44, sub_0807EB4C, sub_0807EB74, sub_0807EB8C,
- sub_0807EBA8, sub_0807EBB0, sub_0807EBC0, sub_0807EBC8, sub_0807EBD8, sub_0807EBF4, sub_0807EC08, nullsub_509,
- sub_0807EC1C, sub_0807EC64, sub_0807EC94, sub_0807ECC4, sub_0807ECF4, sub_0807ED24, sub_0807EDD4, sub_0807EE04,
- sub_0807EE30, sub_0807EEB4, sub_0807EEF4, sub_0807EF3C, sub_0807EF80, sub_0807EF90, sub_0807EFA0, sub_0807EFAC,
- sub_0807EFD4, sub_0807EFE4, sub_0807EFF4, sub_0807F004, sub_0807F010, sub_0807F034, sub_0807F050, sub_0807F060,
- sub_0807F078, sub_0807F088, sub_0807F098, sub_0807F0A4, sub_0807F0B4, sub_0807F0C8
-};
+typedef void (*ScriptCommand)(Entity*, ScriptExecutionContext*);
+
+const ScriptCommand gScriptCommands[] = { ScriptCommandNop,
+ ScriptCommand_BeginBlock,
+ ScriptCommand_EndBlock,
+ ScriptCommand_Jump,
+ ScriptCommand_JumpIf,
+ ScriptCommand_JumpIfNot,
+ ScriptCommand_JumpTable,
+ ScriptCommand_JumpAbsolute,
+ ScriptCommand_JumpAbsoluteIf,
+ ScriptCommand_JumpAbsoluteIfNot,
+ ScriptCommand_JumpAbsoluteTable,
+ ScriptCommand_Call,
+ ScriptCommand_CallWithArg,
+ ScriptCommand_LoadRoomEntityList,
+ ScriptCommand_TestBit,
+ ScriptCommand_CheckInventory1,
+ ScriptCommand_CheckInventory2,
+ ScriptCommand_HasRoomItemForSale,
+ ScriptCommand_CheckLocalFlag,
+ ScriptCommand_CheckLocalFlagByOffset,
+ ScriptCommand_CheckGlobalFlag,
+ ScriptCommand_CheckRoomFlag,
+ ScriptCommand_CheckPlayerInRegion,
+ ScriptCommand_CheckPlayerInRegion2,
+ ScriptCommand_CheckEntityInteractType,
+ ScriptCommand_0807E30C,
+ ScriptCommand_HasRupees,
+ ScriptCommand_0807E3BC,
+ ScriptCommand_0807E3E8,
+ ScriptCommand_CheckKinstoneFused,
+ ScriptCommand_BuyItem,
+ ScriptCommand_0807E48C,
+ ScriptCommand_0807E4CC,
+ ScriptCommand_0807E4EC,
+ ScriptCommand_0807E514,
+ ScriptCommand_CheckPlayerFlags,
+ ScriptCommand_0807E564,
+ ScriptCommand_EntityHasHeight,
+ ScriptCommand_ComparePlayerAction,
+ ScriptCommand_ComparePlayerAnimationState,
+ ScriptCommand_0807E5F8,
+ ScriptCommand_0807E610,
+ ScriptCommand_SetLocalFlag,
+ ScriptCommand_SetLocalFlagByOffset,
+ ScriptCommand_ClearLocalFlag,
+ ScriptCommand_SetGlobalFlag,
+ ScriptCommand_ClearGlobalFlag,
+ ScriptCommand_SetRoomFlag,
+ ScriptCommand_ClearRoomFlag,
+ ScriptCommand_Wait,
+ ScriptCommand_WaitForSomething,
+ ScriptCommand_WaitForSomething2,
+ ScriptCommand_WaitPlayerAction8,
+ ScriptCommand_WaitForPlayerAction0x17,
+ ScriptCommand_WaitFor_1,
+ ScriptCommand_WaitFor_2,
+ ScriptCommand_0807E778,
+ ScriptCommand_0807E788,
+ ScriptCommand_0807E79C,
+ ScriptCommandNop2,
+ ScriptCommand_DoFade4,
+ ScriptCommand_DoFade5,
+ ScriptCommand_DoFade6,
+ ScriptCommand_DoFade7,
+ ScriptCommand_0807E800,
+ ScriptCommand_0807E80C,
+ ScriptCommand_0807E858,
+ ScriptCommand_0807E864,
+ ScriptCommand_0807E878,
+ ScriptCommand_0807E888,
+ ScriptCommand_SetPlayerAction,
+ ScriptCommand_StartPlayerScript,
+ ScriptCommand_0807E8D4,
+ ScriptCommand_0807E8E4,
+ ScriptCommand_0807E8E4,
+ ScriptCommand_0807E8E4,
+ ScriptCommand_0807E8E4,
+ ScriptCommand_0807E908,
+ ScriptCommand_SetIntVariable,
+ ScriptCommand_0807E924,
+ ScriptCommand_0807E930,
+ ScriptCommand_0807E944,
+ ScriptCommand_0807E974,
+ ScriptCommand_0807E9D4,
+ ScriptCommand_0807E9DC,
+ ScriptCommand_0807E9E4,
+ ScriptCommand_0807E9F0,
+ ScriptCommand_0807EA4C,
+ ScriptCommand_0807EA88,
+ ScriptCommand_0807EA94,
+ ScriptCommand_TextboxNoOverlapFollow,
+ ScriptCommand_TextboxNoOverlap,
+ ScriptCommand_TextboxNoOverlapFollowPos,
+ ScriptCommand_TextboxNoOverlapFollowTable,
+ ScriptCommand_TextboxNoOverlapVar,
+ ScriptCommand_0807EB28,
+ ScriptCommand_0807EB38,
+ ScriptCommand_0807EB44,
+ ScriptCommand_0807EB4C,
+ ScriptCommand_0807EB74,
+ ScriptCommand_0807EB8C,
+ ScriptCommand_SetEntityDirection,
+ ScriptCommand_SetEntityDirectionWithAnimationState,
+ ScriptCommand_SetEntitySpeed,
+ ScriptCommand_SetEntity0x20,
+ ScriptCommand_SetEntityPositionRelative,
+ ScriptCommand_SetEntityPosition,
+ ScriptCommand_MoveEntityToPlayer,
+ ScriptCommandNop3,
+ ScriptCommand_0807EC1C,
+ ScriptCommand_0807EC64,
+ ScriptCommand_0807EC94,
+ ScriptCommand_0807ECC4,
+ ScriptCommand_0807ECF4,
+ ScriptCommand_0807ED24,
+ ScriptCommand_0807EDD4,
+ ScriptCommand_0807EE04,
+ ScriptCommand_0807EE30,
+ ScriptCommand_0807EEB4,
+ ScriptCommand_0807EEF4,
+ ScriptCommand_0807EF3C,
+ ScriptCommand_DoPostScriptAction,
+ ScriptCommand_DoPostScriptAction2,
+ ScriptCommand_SoundReq,
+ ScriptCommand_SoundReq2,
+ ScriptCommand_SoundReq3,
+ ScriptCommand_SoundReq0x80100000,
+ ScriptCommand_ModRupees,
+ ScriptCommand_ModHealth,
+ ScriptCommand_IncreaseMaxHealth,
+ ScriptCommand_0807F034,
+ ScriptCommand_0807F050,
+ ScriptCommand_GetInventoryValue,
+ ScriptCommand_0807F078,
+ ScriptCommand_0807F088,
+ ScriptCommand_CameraTargetEntity,
+ ScriptCommand_CameraTargetPlayer,
+ ScriptCommand_0807F0B4,
+ ScriptCommand_0807F0C8 };
extern const u16 gUnk_08016984;
extern u8 gUnk_0811E514[];
@@ -188,11 +305,11 @@ extern u8 gUnk_0811E510[];
extern ScriptExecutionContext gPlayerScriptExecutionContext;
extern ScriptExecutionContext gScriptExecutionContextArray[0x20];
-void sub_0807DA70(void) {
- MemClear(&gUnk_02033280, sizeof(gUnk_02033280));
+void InitScriptData(void) {
+ MemClear(&gActiveScriptInfo, sizeof(gActiveScriptInfo));
MemClear(&gScriptExecutionContextArray, sizeof(gScriptExecutionContextArray));
MemClear(&gPlayerScriptExecutionContext, sizeof(gPlayerScriptExecutionContext));
- gUnk_02033280.unk_08 = 8;
+ gActiveScriptInfo.unk_08 = 8;
}
ScriptExecutionContext* CreateScriptExecutionContext(void) {
@@ -200,7 +317,7 @@ ScriptExecutionContext* CreateScriptExecutionContext(void) {
context = gScriptExecutionContextArray;
do {
- if (context->unk_00 == 0) {
+ if (context->scriptInstructionPointer == 0) {
return context;
}
context++;
@@ -212,20 +329,20 @@ void DestroyScriptExecutionContext(ScriptExecutionContext* context) {
MemClear(context, sizeof(ScriptExecutionContext));
}
-ScriptExecutionContext* StartCutscene(Entity* entity, u16* unk_2) {
+ScriptExecutionContext* StartCutscene(Entity* entity, u16* script) {
ScriptExecutionContext* context;
context = CreateScriptExecutionContext();
if (context) {
- sub_0807DAF0(entity, context, unk_2);
+ InitScriptForEntity(entity, context, script);
}
return context;
}
-void sub_0807DAF0(Entity* entity, ScriptExecutionContext* context, u16* unk1) {
+void InitScriptForEntity(Entity* entity, ScriptExecutionContext* context, u16* script) {
entity->flags = entity->flags | 2;
*(ScriptExecutionContext**)&entity->cutsceneBeh = context;
- sub_0807DB88(context, unk1);
+ InitScriptExecutionContext(context, script);
}
void UnloadCutsceneData(Entity* entity) {
@@ -236,11 +353,11 @@ void UnloadCutsceneData(Entity* entity) {
}
}
-void StartPlayerScript(u16* unk1) {
+void StartPlayerScript(u16* script) {
Entity* player;
MemClear(&gPlayerScriptExecutionContext, sizeof(gPlayerScriptExecutionContext));
- gPlayerScriptExecutionContext.unk_00 = unk1;
+ gPlayerScriptExecutionContext.scriptInstructionPointer = script;
player = &gPlayerEntity;
*(ScriptExecutionContext**)&player->cutsceneBeh = &gPlayerScriptExecutionContext;
gPlayerState.playerAction = 0x1c;
@@ -249,89 +366,89 @@ void StartPlayerScript(u16* unk1) {
gPlayerState.field_0x38 = 0;
}
-ScriptExecutionContext* sub_0807DB68(Entity* entity, u16* unk1) {
+ScriptExecutionContext* StartCutscene2(Entity* entity, u16* script) {
ScriptExecutionContext* context;
context = CreateScriptExecutionContext();
if (context) {
entity->flags |= 2;
*(ScriptExecutionContext**)&entity->field_0x3c = context;
- context->unk_00 = unk1;
+ context->scriptInstructionPointer = script;
}
return context;
}
-void sub_0807DB88(ScriptExecutionContext* context, u16* unk1) {
+void InitScriptExecutionContext(ScriptExecutionContext* context, u16* script) {
MemClear(context, sizeof(ScriptExecutionContext));
- context->unk_00 = unk1;
+ context->scriptInstructionPointer = script;
}
-void sub_0807DB98(Entity* entity, ScriptExecutionContext* context) {
- u32 switchVar;
-
- while (context->unk_08) {
- switchVar = (~context->unk_08 + 1) & context->unk_08;
- context->unk_08 ^= switchVar;
- switch (switchVar) {
- case 1:
+void HandlePostScriptActions(Entity* entity, ScriptExecutionContext* context) {
+ u32 bit;
+ // iterate over bits of context->postScriptActions, LSB first
+ while (context->postScriptActions) {
+ bit = (~context->postScriptActions + 1) & context->postScriptActions;
+ context->postScriptActions ^= bit;
+ switch (bit) {
+ case 1 << 0x00:
entity->field_0x80.HWORD = 0;
break;
- case 2:
+ case 1 << 0x01:
entity->field_0x80.HWORD = 4;
break;
- case 4:
+ case 1 << 0x02:
break;
- case 8:
+ case 1 << 0x03:
entity->field_0x20 = 0x18000;
break;
- case 0x10:
+ case 1 << 0x04:
CreateSpeechBubbleExclamationMark(entity, 8, -0x18);
break;
- case 0x20:
+ case 1 << 0x05:
CreateSpeechBubbleQuestionMark(entity, 8, -0x18);
break;
- case 0x40:
+ case 1 << 0x06:
DestroyScriptExecutionContext(context);
DeleteThisEntity();
- case 0x80:
+ case 1 << 0x07:
entity->spriteSettings.b.draw = 1;
break;
- case 0x100:
+ case 1 << 0x08:
entity->spriteSettings.b.draw = 0;
break;
- case 0x200:
+ case 1 << 0x09:
entity->spriteOffsetY = 0;
entity->spriteOffsetX = 0;
entity->field_0x82.HWORD = 0;
break;
- case 0x400:
+ case 1 << 0x0a:
entity->field_0x82.HWORD |= 2;
break;
- case 0x800:
+ case 1 << 0x0b:
entity->field_0x82.HWORD &= 0xfffd;
break;
- case 0x1000:
+ case 1 << 0x0c:
entity->field_0x82.HWORD &= 0xfffe;
break;
- case 0x2000:
+ case 1 << 0x0d:
entity->field_0x82.HWORD |= 1;
break;
- case 0x4000:
+ case 1 << 0x0e:
entity->field_0x82.HWORD |= 8;
break;
- case 0x8000:
+ case 1 << 0x0f:
entity->field_0x82.HWORD ^= 4;
break;
- case 0x10000:
+ case 1 << 0x10:
entity->field_0x82.HWORD ^= 0x10;
break;
- case 0x20000:
+ case 1 << 0x11:
entity->spriteSettings.b.flipX ^= 1;
break;
- case 0x40000:
+ case 1 << 0x12:
entity->field_0x82.HWORD |= 0x20;
break;
- case 0x80000:
+ case 1 << 0x13:
entity->field_0x82.HWORD &= 0xffdf;
break;
default:
@@ -352,27 +469,27 @@ void sub_0807DD64(Entity* entity) {
entity->field_0x82.HWORD = 0;
}
-void sub_0807DD80(Entity* entity, u16* unk1) {
- sub_0807DB88(*(ScriptExecutionContext**)&entity->cutsceneBeh, unk1);
+void sub_0807DD80(Entity* entity, u16* script) {
+ InitScriptExecutionContext(*(ScriptExecutionContext**)&entity->cutsceneBeh, script);
sub_0807DD64(entity);
}
void sub_0807DD94(Entity* entity, void (*function)(Entity*, ScriptExecutionContext*)) {
- sub_0807DDAC(entity, function);
- sub_0807DDE4(entity);
+ ExecuteScriptForEntity(entity, function);
+ HandleEntity0x82Actions(entity);
sub_0807DE80(entity);
}
-void sub_0807DDAC(Entity* entity, void (*function)(Entity*, ScriptExecutionContext*)) {
+void ExecuteScriptForEntity(Entity* entity, void (*postScriptCallback)(Entity*, ScriptExecutionContext*)) {
ScriptExecutionContext** piVar1;
piVar1 = (ScriptExecutionContext**)&entity->cutsceneBeh;
if (*piVar1) {
- ExecuteScriptCommandSet(entity, *piVar1);
- if (function) {
- function(entity, *piVar1);
+ ExecuteScript(entity, *piVar1);
+ if (postScriptCallback) {
+ postScriptCallback(entity, *piVar1);
} else {
- sub_0807DB98(entity, *piVar1);
+ HandlePostScriptActions(entity, *piVar1);
}
if (!entity->next) {
DeleteThisEntity();
@@ -380,36 +497,36 @@ void sub_0807DDAC(Entity* entity, void (*function)(Entity*, ScriptExecutionConte
}
}
-void sub_0807DDE4(Entity* entity) {
+void HandleEntity0x82Actions(Entity* entity) {
u32 temp;
- u32 switchVar;
+ u32 bit;
u32 loopVar;
loopVar = entity->field_0x82.HWORD;
while (loopVar) {
- switchVar = (~loopVar + 1) & loopVar;
- loopVar = loopVar ^ switchVar;
- switch (switchVar) {
- case 2:
+ bit = (~loopVar + 1) & loopVar;
+ loopVar = loopVar ^ bit;
+ switch (bit) {
+ case 1 << 1:
if (entity->kind == 7) {
sub_0806ED78(entity);
} else {
sub_0800445C(entity);
}
break;
- case 8:
+ case 1 << 3:
if ((gScreenTransition.frameCount & 3) == 0) {
temp = (entity->field_0xf + 2U) & 7;
entity->animationState = temp;
entity->field_0xf = temp;
}
break;
- case 0x10:
+ case 1 << 4:
if ((gScreenTransition.frameCount & 1) == 0) {
entity->spriteOffsetX = gUnk_0811E510[Random() & 3];
}
break;
- case 0x20:
+ case 1 << 5:
sub_08003FC4(entity, 0x2000);
break;
}
@@ -448,20 +565,20 @@ void sub_0807DE80(Entity* entity) {
sub_080042BA(entity, local1);
}
-void sub_0807DEDC(Entity* entity, ScriptExecutionContext* context, u32 arg2, u32 arg3) {
- int temp;
- s32 t0, t1;
+void sub_0807DEDC(Entity* entity, ScriptExecutionContext* context, u32 x, u32 y) {
+ int direction;
+ s32 xOffset, yOffset;
context->unk_19 = 8;
- context->unk_08 |= 2;
- context->unk_14 = 0;
- context->unk_1C.HALF.HI = arg2;
- context->unk_20.HALF.HI = arg3;
- t0 = context->unk_1C.HALF.HI - entity->x.HALF.HI;
- t1 = context->unk_20.HALF.HI - entity->y.HALF.HI;
- temp = sub_080045DA(t0, t1);
- entity->direction = temp;
- entity->animationState = (entity->animationState & 0x80) | gUnk_0811E514[(u32)(temp << 0x18) >> 0x1c];
+ context->postScriptActions |= 2;
+ context->condition = 0;
+ context->x.HALF.HI = x;
+ context->y.HALF.HI = y;
+ xOffset = context->x.HALF.HI - entity->x.HALF.HI;
+ yOffset = context->y.HALF.HI - entity->y.HALF.HI;
+ direction = sub_080045DA(xOffset, yOffset);
+ entity->direction = direction;
+ entity->animationState = (entity->animationState & 0x80) | gUnk_0811E514[(u32)(direction << 0x18) >> 0x1c];
}
void sub_0807DF28(void) {
@@ -483,124 +600,126 @@ void sub_0807DF50(void) {
sub_08079184();
}
-void ExecuteScriptCommandSet(Entity* unk1, ScriptExecutionContext* unk2) {
- if (!unk2->unk_00)
+void ExecuteScript(Entity* entity, ScriptExecutionContext* context) {
+ if (!context->scriptInstructionPointer)
return;
- if (unk2->unk_10) {
- unk2->unk_10--;
+ if (context->wait) {
+ context->wait--;
} else {
- struct_02033280* tmp2 = &gUnk_02033280;
- tmp2->unk_07 = 0;
+ struct_02033280* activeScriptInfo = &gActiveScriptInfo;
+ activeScriptInfo->flags = 0;
do {
- u32 cmd = GetNextScriptCommandHalfword(unk2->unk_00);
- u16* tmp;
+ u32 cmd = GetNextScriptCommandHalfword(context->scriptInstructionPointer);
+ u16* lastInstruction;
if (cmd == 0xFFFF)
return;
- tmp2->unk_06 = cmd >> 0xA;
- tmp2->unk_04 = cmd & 0x3FF;
- tmp = unk2->unk_00;
- tmp2->unk_07 &= ~1;
- gUnk_0811E524[tmp2->unk_04](unk1, unk2);
- unk2->unk_00 += tmp2->unk_06;
- if (tmp != unk2->unk_00) {
- unk2->unk_18 = 0;
+ activeScriptInfo->commandSize = cmd >> 0xA;
+ activeScriptInfo->commandIndex = cmd & 0x3FF;
+ lastInstruction = context->scriptInstructionPointer;
+ activeScriptInfo->flags &= ~1;
+ gScriptCommands[activeScriptInfo->commandIndex](entity, context);
+ context->scriptInstructionPointer += activeScriptInfo->commandSize;
+ if (lastInstruction != context->scriptInstructionPointer) {
+ context->unk_18 = 0;
}
- } while (tmp2->unk_07 & 3);
+ } while (activeScriptInfo->flags & 3);
}
}
-void nullsub_507(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommandNop(Entity* entity, ScriptExecutionContext* context) {
}
-void sub_0807E004(Entity* unk1, ScriptExecutionContext* unk2) {
- gUnk_02033280.unk_07 |= 2;
+// not entirely sure this name is acurate
+void ScriptCommand_BeginBlock(Entity* entity, ScriptExecutionContext* context) {
+ gActiveScriptInfo.flags |= 2;
}
-void sub_0807E014(Entity* unk1, ScriptExecutionContext* unk2) {
- gUnk_02033280.unk_07 &= ~2;
+// not entirely sure this name is acurate
+void ScriptCommand_EndBlock(Entity* entity, ScriptExecutionContext* context) {
+ gActiveScriptInfo.flags &= ~2;
}
-void sub_0807E024(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_Jump(Entity* entity, ScriptExecutionContext* context) {
s16 tmp;
- unk2->unk_00++;
- tmp = GetNextScriptCommandHalfword(unk2->unk_00);
- unk2->unk_00 += (tmp / 2);
- gUnk_02033280.unk_06 = 0;
+ context->scriptInstructionPointer++;
+ tmp = GetNextScriptCommandHalfword(context->scriptInstructionPointer);
+ context->scriptInstructionPointer += (tmp / 2);
+ gActiveScriptInfo.commandSize = 0;
}
-void sub_0807E050(Entity* unk1, ScriptExecutionContext* unk2) {
- if (unk2->unk_14) {
- sub_0807E024(unk1, unk2);
+void ScriptCommand_JumpIf(Entity* entity, ScriptExecutionContext* context) {
+ if (context->condition) {
+ ScriptCommand_Jump(entity, context);
}
}
-void sub_0807E064(Entity* unk1, ScriptExecutionContext* unk2) {
- if (!unk2->unk_14) {
- sub_0807E024(unk1, unk2);
+void ScriptCommand_JumpIfNot(Entity* entity, ScriptExecutionContext* context) {
+ if (!context->condition) {
+ ScriptCommand_Jump(entity, context);
}
}
-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 ScriptCommand_JumpTable(Entity* entity, ScriptExecutionContext* context) {
+ if (gActiveScriptInfo.commandSize > context->intVariable) {
+ context->scriptInstructionPointer += context->intVariable;
+ ScriptCommand_Jump(entity, context);
}
}
-void sub_0807E0A0(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_00 = (u16*)GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00);
- gUnk_02033280.unk_06 = 0;
+void ScriptCommand_JumpAbsolute(Entity* entity, ScriptExecutionContext* context) {
+ context->scriptInstructionPointer =
+ (u16*)GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer);
+ gActiveScriptInfo.commandSize = 0;
}
-void sub_0807E0B8(Entity* unk1, ScriptExecutionContext* unk2) {
- if (unk2->unk_14) {
- sub_0807E0A0(unk1, unk2);
+void ScriptCommand_JumpAbsoluteIf(Entity* entity, ScriptExecutionContext* context) {
+ if (context->condition) {
+ ScriptCommand_JumpAbsolute(entity, context);
}
}
-void sub_0807E0CC(Entity* unk1, ScriptExecutionContext* unk2) {
- if (!unk2->unk_14) {
- sub_0807E0A0(unk1, unk2);
+void ScriptCommand_JumpAbsoluteIfNot(Entity* entity, ScriptExecutionContext* context) {
+ if (!context->condition) {
+ ScriptCommand_JumpAbsolute(entity, context);
}
}
-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 ScriptCommand_JumpAbsoluteTable(Entity* entity, ScriptExecutionContext* context) {
+ if (gActiveScriptInfo.commandSize > (context->intVariable << 1) + 1) {
+ context->scriptInstructionPointer += context->intVariable << 1;
+ ScriptCommand_JumpAbsolute(entity, context);
}
}
-void sub_0807E10C(Entity* unk1, ScriptExecutionContext* unk2) {
- ((void (*)(Entity*, ScriptExecutionContext*))GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00))(unk1,
- unk2);
+void ScriptCommand_Call(Entity* entity, ScriptExecutionContext* context) {
+ ((ScriptCommand)GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer))(entity, context);
}
-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);
+// the called function can read an argument from context->intVariable
+void ScriptCommand_CallWithArg(Entity* entity, ScriptExecutionContext* context) {
+ ScriptCommand tmp = (ScriptCommand)GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer);
+ context->intVariable = GetNextScriptCommandWord(context->scriptInstructionPointer + 3);
+ tmp(entity, context);
}
-void sub_0807E148(Entity* unk1, ScriptExecutionContext* unk2) {
- LoadRoomEntityList(GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00));
+void ScriptCommand_LoadRoomEntityList(Entity* entity, ScriptExecutionContext* context) {
+ LoadRoomEntityList(GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer));
}
-void sub_0807E158(Entity* unk1, ScriptExecutionContext* unk2) {
- u32 tmp = GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00);
+void ScriptCommand_TestBit(Entity* entity, ScriptExecutionContext* context) {
+ u32 tmp = GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer);
u32 tmp2 = 0;
- u32 tmp3 = gUnk_02033280.unk_00;
+ u32 tmp3 = gActiveScriptInfo.unk_00;
if ((tmp3 & tmp) == tmp)
tmp2 = 1;
- unk2->unk_14 = tmp2;
- gUnk_02033280.unk_00 = tmp3 & ~tmp;
- gUnk_02033280.unk_07 |= 1;
+ context->condition = tmp2;
+ gActiveScriptInfo.unk_00 = tmp3 & ~tmp;
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E188(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_CheckInventory1(Entity* entity, ScriptExecutionContext* context) {
u32 tmp;
- u32 tmp2 = GetNextScriptCommandHalfwordAfterCommandMetadata(unk2->unk_00);
+ u32 tmp2 = GetNextScriptCommandHalfwordAfterCommandMetadata(context->scriptInstructionPointer);
switch (tmp2) {
case 0x53:
tmp = sub_08052734();
@@ -617,416 +736,419 @@ void sub_0807E188(Entity* unk1, ScriptExecutionContext* unk2) {
default:
tmp = GetInventoryValue(tmp2);
}
- unk2->unk_14 = tmp;
- gUnk_02033280.unk_07 |= 1;
+ context->condition = tmp;
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E1D8(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_14 = GetInventoryValue(unk2->unk_00[1]) == 2;
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_CheckInventory2(Entity* entity, ScriptExecutionContext* context) {
+ context->condition = GetInventoryValue(context->scriptInstructionPointer[1]) == 2;
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E200(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_14 = CheckLocalFlag(unk2->unk_00[1]);
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_CheckLocalFlag(Entity* entity, ScriptExecutionContext* context) {
+ context->condition = CheckLocalFlag(context->scriptInstructionPointer[1]);
+ gActiveScriptInfo.flags |= 1;
}
-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 ScriptCommand_CheckLocalFlagByOffset(Entity* entity, ScriptExecutionContext* context) {
+ context->condition =
+ CheckLocalFlagByOffset(context->scriptInstructionPointer[1], context->scriptInstructionPointer[2]);
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E240(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_14 = CheckGlobalFlag(GetNextScriptCommandHalfwordAfterCommandMetadata(unk2->unk_00));
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_CheckGlobalFlag(Entity* entity, ScriptExecutionContext* context) {
+ context->condition =
+ CheckGlobalFlag(GetNextScriptCommandHalfwordAfterCommandMetadata(context->scriptInstructionPointer));
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E260(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_14 = CheckRoomFlag(unk2->unk_00[1]);
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_CheckRoomFlag(Entity* entity, ScriptExecutionContext* context) {
+ context->condition = CheckRoomFlag(context->scriptInstructionPointer[1]);
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E280(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_CheckPlayerInRegion(Entity* entity, ScriptExecutionContext* context) {
u32 x, y, width, height;
- width = unk2->unk_00[3];
+ width = context->scriptInstructionPointer[3];
height = width >> 8;
width &= 0xFF;
- x = unk2->unk_00[1];
- y = unk2->unk_00[2];
- unk2->unk_14 = CheckPlayerInRegion(x, y, width, height);
- gUnk_02033280.unk_07 |= 1;
+ x = context->scriptInstructionPointer[1];
+ y = context->scriptInstructionPointer[2];
+ context->condition = CheckPlayerInRegion(x, y, width, height);
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E2A8(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_CheckPlayerInRegion2(Entity* entity, ScriptExecutionContext* context) {
u32 x, y, width, height;
- width = unk2->unk_00[1] & 0xFF;
- height = unk2->unk_00[1] >> 8;
- x = unk1->x.HALF.HI - gRoomControls.roomOriginX;
- y = unk1->y.HALF.HI - gRoomControls.roomOriginY;
- unk2->unk_14 = CheckPlayerInRegion(x, y, width, height);
- gUnk_02033280.unk_07 |= 1;
-}
-
-void sub_0807E2E4(Entity* unk1, ScriptExecutionContext* unk2) {
- if (unk1->interactType) {
- unk1->interactType = 0;
- unk2->unk_14 = 1;
+ width = context->scriptInstructionPointer[1] & 0xFF;
+ height = context->scriptInstructionPointer[1] >> 8;
+ x = entity->x.HALF.HI - gRoomControls.roomOriginX;
+ y = entity->y.HALF.HI - gRoomControls.roomOriginY;
+ context->condition = CheckPlayerInRegion(x, y, width, height);
+ gActiveScriptInfo.flags |= 1;
+}
+
+void ScriptCommand_CheckEntityInteractType(Entity* entity, ScriptExecutionContext* context) {
+ if (entity->interactType) {
+ entity->interactType = 0;
+ context->condition = 1;
} else {
- unk2->unk_14 = 0;
+ context->condition = 0;
}
- gUnk_02033280.unk_07 |= 1;
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E30C(Entity* unk1, ScriptExecutionContext* unk2) {
- if ((unk2->unk_1A & 0xF) == 0 && (gPlayerState.flags.all & 0x80) == 0 &&
- sub_080041A0(unk1, &gPlayerEntity, 0x28, 0x28)) {
- unk1->animationState = sub_0806F5B0(GetFacingDirection(unk1, &gPlayerEntity));
+void ScriptCommand_0807E30C(Entity* entity, ScriptExecutionContext* context) {
+ if ((context->unk_1A & 0xF) == 0 && (gPlayerState.flags.all & 0x80) == 0 &&
+ sub_080041A0(entity, &gPlayerEntity, 0x28, 0x28)) {
+ entity->animationState = sub_0806F5B0(GetFacingDirection(entity, &gPlayerEntity));
}
- unk2->unk_1A++;
- if (unk1->interactType) {
- unk1->interactType = 0;
- unk2->unk_14 = 1;
- unk1->animationState = sub_0806F5B0(GetFacingDirection(unk1, &gPlayerEntity));
+ context->unk_1A++;
+ if (entity->interactType) {
+ entity->interactType = 0;
+ context->condition = 1;
+ entity->animationState = sub_0806F5B0(GetFacingDirection(entity, &gPlayerEntity));
} else {
- unk2->unk_14 = 0;
+ context->condition = 0;
}
- gUnk_02033280.unk_07 |= 1;
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E390(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_14 = (unk2->unk_00[1] <= gSave.stats.rupees);
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_HasRupees(Entity* entity, ScriptExecutionContext* context) {
+ context->condition = (context->scriptInstructionPointer[1] <= gSave.stats.rupees);
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E3BC(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_14 = (unk2->unk_00[1] <= gSave.stats.field_0x1a);
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_0807E3BC(Entity* entity, ScriptExecutionContext* context) {
+ context->condition = (context->scriptInstructionPointer[1] <= gSave.stats.field_0x1a);
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E3E8(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_14 = !gUnk_02000040.unk_01;
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_0807E3E8(Entity* entity, ScriptExecutionContext* context) {
+ context->condition = !gUnk_02000040.unk_01;
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E40C(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_14 = CheckKinstoneFused(unk2->unk_00[1]);
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_CheckKinstoneFused(Entity* entity, ScriptExecutionContext* context) {
+ context->condition = CheckKinstoneFused(context->scriptInstructionPointer[1]);
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E42C(Entity* unk1, ScriptExecutionContext* unk2) {
- u32 tmp, tmp2;
- s32 tmp3;
- tmp = unk2->unk_00[1];
- tmp2 = unk2->unk_00[2];
- if (!tmp) {
- tmp = gRoomVars.itemForSaleIndex;
+void ScriptCommand_BuyItem(Entity* entity, ScriptExecutionContext* context) {
+ u32 item, tmp2;
+ s32 price;
+ item = context->scriptInstructionPointer[1];
+ tmp2 = context->scriptInstructionPointer[2];
+ if (!item) {
+ item = gRoomVars.itemForSaleIndex;
tmp2 = gRoomVars.field_0x7;
}
- tmp3 = sub_08053FE0(tmp);
- unk2->unk_14 = (tmp3 <= gSave.stats.rupees);
- if (unk2->unk_14) {
- ModRupees(-tmp3);
- sub_080A7C18(tmp, tmp2, 0);
+ price = GetItemPrice(item);
+ context->condition = (price <= gSave.stats.rupees);
+ if (context->condition) {
+ ModRupees(-price);
+ sub_080A7C18(item, tmp2, 0);
gRoomVars.itemForSaleIndex = 0;
gRoomVars.field_0x7 = 0;
}
- gUnk_02033280.unk_07 |= 1;
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E48C(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_14 = sub_080544DC(unk2->unk_00[1]);
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_0807E48C(Entity* entity, ScriptExecutionContext* context) {
+ context->condition = sub_080544DC(context->scriptInstructionPointer[1]);
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E4AC(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_14 = !!gRoomVars.itemForSaleIndex;
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_HasRoomItemForSale(Entity* entity, ScriptExecutionContext* context) {
+ context->condition = !!gRoomVars.itemForSaleIndex;
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E4CC(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_14 = !!(unk2->unk_04 & unk2->unk_00[1]);
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_0807E4CC(Entity* entity, ScriptExecutionContext* context) {
+ context->condition = !!(context->intVariable & context->scriptInstructionPointer[1]);
+ gActiveScriptInfo.flags |= 1;
}
-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 ScriptCommand_0807E4EC(Entity* entity, ScriptExecutionContext* context) {
+ u32 tmp = context->scriptInstructionPointer[1];
+ context->condition = tmp == (tmp & context->intVariable);
+ gActiveScriptInfo.flags |= 1;
}
-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 ScriptCommand_0807E514(Entity* entity, ScriptExecutionContext* context) {
+ u32 tmp = context->scriptInstructionPointer[1];
+ context->condition = tmp == context->intVariable;
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E538(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_14 = !!(GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00) & gPlayerState.flags.all);
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_CheckPlayerFlags(Entity* entity, ScriptExecutionContext* context) {
+ context->condition =
+ !!(GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer) & gPlayerState.flags.all);
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E564(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_14 = (gPlayerState.flags.all >> 7) & 1;
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_0807E564(Entity* entity, ScriptExecutionContext* context) {
+ context->condition = (gPlayerState.flags.all >> 7) & 1;
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E584(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_14 = unk1->height.WORD != 0;
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_EntityHasHeight(Entity* entity, ScriptExecutionContext* context) {
+ context->condition = entity->height.WORD != 0;
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E5A0(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_14 = unk2->unk_00[1] == gPlayerEntity.action;
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_ComparePlayerAction(Entity* entity, ScriptExecutionContext* context) {
+ context->condition = context->scriptInstructionPointer[1] == gPlayerEntity.action;
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E5CC(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_14 = unk2->unk_00[1] == gPlayerEntity.animationState;
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_ComparePlayerAnimationState(Entity* entity, ScriptExecutionContext* context) {
+ context->condition = context->scriptInstructionPointer[1] == gPlayerEntity.animationState;
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807E5F8(Entity* unk1, ScriptExecutionContext* unk2) {
- gUnk_02033280.unk_00 |= GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00);
+void ScriptCommand_0807E5F8(Entity* entity, ScriptExecutionContext* context) {
+ gActiveScriptInfo.unk_00 |= GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer);
}
-void sub_0807E610(Entity* unk1, ScriptExecutionContext* unk2) {
- gUnk_02033280.unk_00 &= ~GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00);
+void ScriptCommand_0807E610(Entity* entity, ScriptExecutionContext* context) {
+ gActiveScriptInfo.unk_00 &= ~GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer);
}
-void sub_0807E628(Entity* unk1, ScriptExecutionContext* unk2) {
- SetLocalFlag(unk2->unk_00[1]);
+void ScriptCommand_SetLocalFlag(Entity* entity, ScriptExecutionContext* context) {
+ SetLocalFlag(context->scriptInstructionPointer[1]);
}
-void sub_0807E634(Entity* unk1, ScriptExecutionContext* unk2) {
- SetLocalFlagByOffset(unk2->unk_00[1], unk2->unk_00[2]);
+void ScriptCommand_SetLocalFlagByOffset(Entity* entity, ScriptExecutionContext* context) {
+ SetLocalFlagByOffset(context->scriptInstructionPointer[1], context->scriptInstructionPointer[2]);
}
-void sub_0807E644(Entity* unk1, ScriptExecutionContext* unk2) {
- ClearLocalFlag(unk2->unk_00[1]);
+void ScriptCommand_ClearLocalFlag(Entity* entity, ScriptExecutionContext* context) {
+ ClearLocalFlag(context->scriptInstructionPointer[1]);
}
-void sub_0807E650(Entity* unk1, ScriptExecutionContext* unk2) {
- SetGlobalFlag(unk2->unk_00[1]);
+void ScriptCommand_SetGlobalFlag(Entity* entity, ScriptExecutionContext* context) {
+ SetGlobalFlag(context->scriptInstructionPointer[1]);
}
-void sub_0807E65C(Entity* unk1, ScriptExecutionContext* unk2) {
- ClearGlobalFlag(unk2->unk_00[1]);
+void ScriptCommand_ClearGlobalFlag(Entity* entity, ScriptExecutionContext* context) {
+ ClearGlobalFlag(context->scriptInstructionPointer[1]);
}
-void sub_0807E668(Entity* unk1, ScriptExecutionContext* unk2) {
- SetRoomFlag(unk2->unk_00[1]);
+void ScriptCommand_SetRoomFlag(Entity* entity, ScriptExecutionContext* context) {
+ SetRoomFlag(context->scriptInstructionPointer[1]);
}
-void sub_0807E674(Entity* unk1, ScriptExecutionContext* unk2) {
- ClearRoomFlag(unk2->unk_00[1]);
+void ScriptCommand_ClearRoomFlag(Entity* entity, ScriptExecutionContext* context) {
+ ClearRoomFlag(context->scriptInstructionPointer[1]);
}
-void sub_0807E680(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_10 = GetNextScriptCommandHalfwordAfterCommandMetadata(unk2->unk_00);
+void ScriptCommand_Wait(Entity* entity, ScriptExecutionContext* context) {
+ context->wait = GetNextScriptCommandHalfwordAfterCommandMetadata(context->scriptInstructionPointer);
}
-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 ScriptCommand_WaitForSomething(Entity* entity, ScriptExecutionContext* context) {
+ u32 tmp = GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer);
+ if ((gActiveScriptInfo.unk_00 & tmp) != tmp) {
+ gActiveScriptInfo.commandSize = 0;
}
}
-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;
+void ScriptCommand_WaitForSomething2(Entity* entity, ScriptExecutionContext* context) {
+ u32 tmp = GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer);
+ if ((gActiveScriptInfo.unk_00 & tmp) != tmp) {
+ gActiveScriptInfo.commandSize = 0;
} else {
- gUnk_02033280.unk_00 &= ~tmp;
- gUnk_02033280.unk_07 |= 1;
+ gActiveScriptInfo.unk_00 &= ~tmp;
+ gActiveScriptInfo.flags |= 1;
}
}
-void sub_0807E6DC(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_WaitPlayerAction8(Entity* entity, ScriptExecutionContext* context) {
if (gPlayerEntity.action == 8) {
- gUnk_02033280.unk_06 = 0;
+ gActiveScriptInfo.commandSize = 0;
} else {
- unk2->unk_10 = 0x2D;
+ context->wait = 0x2D;
}
}
-void sub_0807E700(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_WaitForPlayerAction0x17(Entity* entity, ScriptExecutionContext* context) {
if (gPlayerEntity.action != 0x17) {
- gUnk_02033280.unk_07 |= 1;
+ gActiveScriptInfo.flags |= 1;
} else {
- gUnk_02033280.unk_06 = 0;
+ gActiveScriptInfo.commandSize = 0;
}
}
-void sub_0807E72C(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_WaitFor_1(Entity* entity, ScriptExecutionContext* context) {
if (gRoomControls.unk6 & 4) {
- gUnk_02033280.unk_06 = 0;
+ gActiveScriptInfo.commandSize = 0;
} else {
- gUnk_02033280.unk_07 |= 1;
+ gActiveScriptInfo.flags |= 1;
}
}
-void sub_0807E75C(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_WaitFor_2(Entity* entity, ScriptExecutionContext* context) {
if (gFadeControl.active) {
- gUnk_02033280.unk_06 = 0;
+ gActiveScriptInfo.commandSize = 0;
}
}
-void sub_0807E778(Entity* unk1, ScriptExecutionContext* unk2) {
- gUnk_02033280.unk_08 = unk2->unk_00[1];
+void ScriptCommand_0807E778(Entity* entity, ScriptExecutionContext* context) {
+ gActiveScriptInfo.unk_08 = context->scriptInstructionPointer[1];
}
-void sub_0807E788(Entity* unk1, ScriptExecutionContext* unk2) {
- gFadeControl.field_0x4 = GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00);
+void ScriptCommand_0807E788(Entity* entity, ScriptExecutionContext* context) {
+ gFadeControl.field_0x4 = GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer);
}
-void sub_0807E79C(Entity* unk1, ScriptExecutionContext* unk2) {
- sub_080500F4(gUnk_02033280.unk_08);
+void ScriptCommand_0807E79C(Entity* entity, ScriptExecutionContext* context) {
+ sub_080500F4(gActiveScriptInfo.unk_08);
}
-void nullsub_508(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommandNop2(Entity* entity, ScriptExecutionContext* context) {
}
-void sub_0807E7B0(Entity* unk1, ScriptExecutionContext* unk2) {
- DoFade(4, gUnk_02033280.unk_08);
+void ScriptCommand_DoFade4(Entity* entity, ScriptExecutionContext* context) {
+ DoFade(4, gActiveScriptInfo.unk_08);
}
-void sub_0807E7C4(Entity* unk1, ScriptExecutionContext* unk2) {
- DoFade(5, gUnk_02033280.unk_08);
+void ScriptCommand_DoFade5(Entity* entity, ScriptExecutionContext* context) {
+ DoFade(5, gActiveScriptInfo.unk_08);
}
-void sub_0807E7D8(Entity* unk1, ScriptExecutionContext* unk2) {
- DoFade(6, gUnk_02033280.unk_08);
+void ScriptCommand_DoFade6(Entity* entity, ScriptExecutionContext* context) {
+ DoFade(6, gActiveScriptInfo.unk_08);
}
-void sub_0807E7EC(Entity* unk1, ScriptExecutionContext* unk2) {
- DoFade(7, gUnk_02033280.unk_08);
+void ScriptCommand_DoFade7(Entity* entity, ScriptExecutionContext* context) {
+ DoFade(7, gActiveScriptInfo.unk_08);
}
-void sub_0807E800(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_0807E800(Entity* entity, ScriptExecutionContext* context) {
sub_0807E818(0x10);
}
-void sub_0807E80C(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_0807E80C(Entity* entity, ScriptExecutionContext* context) {
sub_0807E818(0x11);
}
void sub_0807E818(u32 unk1) {
- Entity* tmp = gRoomControls.cameraTarget;
- u32 tmp2, tmp3;
- if (tmp) {
- tmp2 = tmp->x.HALF.HI - gRoomControls.roomScrollX;
- tmp3 = tmp->y.HALF.HI - gRoomControls.roomScrollY;
+ Entity* cameraTarget = gRoomControls.cameraTarget;
+ u32 x, y;
+ if (cameraTarget) {
+ x = cameraTarget->x.HALF.HI - gRoomControls.roomScrollX;
+ y = cameraTarget->y.HALF.HI - gRoomControls.roomScrollY;
} else {
- tmp2 = 0x78;
- tmp3 = 0x50;
+ x = 0x78;
+ y = 0x50;
}
- sub_08050110(tmp2, tmp3, unk1, gUnk_02033280.unk_08);
+ sub_08050110(x, y, unk1, gActiveScriptInfo.unk_08);
}
-void sub_0807E858(Entity* unk1, ScriptExecutionContext* unk2) {
- sub_08050038(unk2->unk_00[1]);
+void ScriptCommand_0807E858(Entity* entity, ScriptExecutionContext* context) {
+ sub_08050038(context->scriptInstructionPointer[1]);
}
-void sub_0807E864(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_0807E864(Entity* entity, ScriptExecutionContext* context) {
gPlayerState.field_0x8b = 3;
sub_08078B48();
}
-void sub_0807E878(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_0807E878(Entity* entity, ScriptExecutionContext* context) {
gPlayerState.field_0x8b = 1;
}
-void sub_0807E888(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_0807E888(Entity* entity, ScriptExecutionContext* context) {
gPlayerState.field_0x8b = 3;
}
-void sub_0807E898(Entity* unk1, ScriptExecutionContext* unk2) {
- u32 tmp = GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00);
+void ScriptCommand_SetPlayerAction(Entity* entity, ScriptExecutionContext* context) {
+ u32 tmp = GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer);
gPlayerState.playerAction = tmp;
gPlayerState.field_0x38 = tmp >> 8;
gPlayerState.field_0x39 = tmp >> 0x10;
gPlayerState.field_0x3a = tmp >> 0x18;
}
-void sub_0807E8C4(Entity* unk1, ScriptExecutionContext* unk2) {
- StartPlayerScript((u16*)GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00));
+void ScriptCommand_StartPlayerScript(Entity* entity, ScriptExecutionContext* context) {
+ StartPlayerScript((u16*)GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer));
}
-void sub_0807E8D4(Entity* unk1, ScriptExecutionContext* unk2) {
- gPlayerState.field_0x8 = unk2->unk_00[1];
+void ScriptCommand_0807E8D4(Entity* entity, ScriptExecutionContext* context) {
+ gPlayerState.field_0x8 = context->scriptInstructionPointer[1];
}
-void sub_0807E8E4(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_0807E8E4(Entity* entity, ScriptExecutionContext* context) {
u32 tmp = (gUnk_08016984 & 0x3FF);
u32 tmp2;
- gPlayerEntity.animationState = tmp2 = (unk2->unk_00[0] - tmp) << 1;
+ gPlayerEntity.animationState = tmp2 = (context->scriptInstructionPointer[0] - tmp) << 1;
}
-void sub_0807E908(Entity* unk1, ScriptExecutionContext* unk2) {
- unk1->action = unk2->unk_00[1];
- unk1->previousActionFlag = 0;
+void ScriptCommand_0807E908(Entity* entity, ScriptExecutionContext* context) {
+ entity->action = context->scriptInstructionPointer[1];
+ entity->previousActionFlag = 0;
}
-void sub_0807E914(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_04 = GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00);
+void ScriptCommand_SetIntVariable(Entity* entity, ScriptExecutionContext* context) {
+ context->intVariable = GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer);
}
-void sub_0807E924(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_04 = unk1->frames.all;
- unk1->frames.all = 0;
+void ScriptCommand_0807E924(Entity* entity, ScriptExecutionContext* context) {
+ context->intVariable = entity->frames.all;
+ entity->frames.all = 0;
}
-void sub_0807E930(Entity* unk1, ScriptExecutionContext* unk2) {
- unk1->field_0x80.HWORD = unk2->unk_00[1];
- InitAnimationForceUpdate(unk1, unk2->unk_00[1]);
+void ScriptCommand_0807E930(Entity* entity, ScriptExecutionContext* context) {
+ entity->field_0x80.HWORD = context->scriptInstructionPointer[1];
+ InitAnimationForceUpdate(entity, context->scriptInstructionPointer[1]);
}
-void sub_0807E944(Entity* unk1, ScriptExecutionContext* unk2) {
- if (unk1->interactType) {
- unk1->interactType = 0;
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_0807E944(Entity* entity, ScriptExecutionContext* context) {
+ if (entity->interactType) {
+ entity->interactType = 0;
+ gActiveScriptInfo.flags |= 1;
} else {
- gUnk_02033280.unk_06 = 0;
+ gActiveScriptInfo.commandSize = 0;
}
}
-void sub_0807E974(Entity* unk1, ScriptExecutionContext* unk2) {
- switch (unk2->unk_18) {
+void ScriptCommand_0807E974(Entity* entity, ScriptExecutionContext* context) {
+ switch (context->unk_18) {
default:
- if (!--unk2->unk_19)
+ if (!--context->unk_19)
return;
break;
case 0:
- if (!unk1->interactType)
+ if (!entity->interactType)
break;
- unk1->interactType = 0;
- unk2->unk_18++;
- TextboxNoOverlapFollow(unk2->unk_00[1]);
+ entity->interactType = 0;
+ context->unk_18++;
+ TextboxNoOverlapFollow(context->scriptInstructionPointer[1]);
break;
case 1:
if (gTextBox.doTextBox & 0x7F)
break;
- unk2->unk_18 = 2;
- unk2->unk_19 = 0xF;
+ context->unk_18 = 2;
+ context->unk_19 = 0xF;
break;
}
- gUnk_02033280.unk_06 = 0;
+ gActiveScriptInfo.commandSize = 0;
}
-void sub_0807E9D4(Entity* unk1, ScriptExecutionContext* unk2) {
- sub_08078778(unk1);
+void ScriptCommand_0807E9D4(Entity* entity, ScriptExecutionContext* context) {
+ sub_08078778(entity);
}
-void sub_0807E9DC(Entity* unk1, ScriptExecutionContext* unk2) {
- sub_080788E0(unk1);
+void ScriptCommand_0807E9DC(Entity* entity, ScriptExecutionContext* context) {
+ sub_080788E0(entity);
}
-void sub_0807E9E4(Entity* unk1, ScriptExecutionContext* unk2) {
- sub_08078784(unk1, unk2->unk_00[1]);
+void ScriptCommand_0807E9E4(Entity* entity, ScriptExecutionContext* context) {
+ sub_08078784(entity, context->scriptInstructionPointer[1]);
}
-void sub_0807E9F0(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_0807E9F0(Entity* entity, ScriptExecutionContext* context) {
u32 tmp;
sub_0801E00C();
tmp = 1;
@@ -1034,10 +1156,10 @@ void sub_0807E9F0(Entity* unk1, ScriptExecutionContext* unk2) {
case 2:
gPlayerState.field_0x8b = 3;
gUnk_02034490[0] = tmp;
- unk2->unk_14 = tmp;
+ context->condition = tmp;
break;
case 1:
- unk2->unk_14 = 0;
+ context->condition = 0;
break;
default:
goto lbl;
@@ -1047,351 +1169,356 @@ void sub_0807E9F0(Entity* unk1, ScriptExecutionContext* unk2) {
gPlayerState.field_0x8b = 1;
} else {
lbl:
- gUnk_02033280.unk_06 = 0;
+ gActiveScriptInfo.commandSize = 0;
}
}
-void sub_0807EA4C(Entity* unk1, ScriptExecutionContext* unk2) {
- if (unk1->interactType == 2) {
- sub_0801DFB4(unk1, 0, 0, 0);
- unk1->interactType = 0;
- gUnk_02033280.unk_07 |= 1;
+void ScriptCommand_0807EA4C(Entity* entity, ScriptExecutionContext* context) {
+ if (entity->interactType == 2) {
+ sub_0801DFB4(entity, 0, 0, 0);
+ entity->interactType = 0;
+ gActiveScriptInfo.flags |= 1;
} else {
- gUnk_02033280.unk_06 = 0;
+ gActiveScriptInfo.commandSize = 0;
}
}
-void sub_0807EA88(Entity* unk1, ScriptExecutionContext* unk2) {
- sub_08078790(unk1, unk2->unk_00[1]);
+void ScriptCommand_0807EA88(Entity* entity, ScriptExecutionContext* context) {
+ sub_08078790(entity, context->scriptInstructionPointer[1]);
}
-void sub_0807EA94(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_0807EA94(Entity* entity, ScriptExecutionContext* context) {
if (gTextBox.doTextBox & 0x7F) {
- gUnk_02033280.unk_06 = 0;
+ gActiveScriptInfo.commandSize = 0;
}
}
-void sub_0807EAB4(Entity* unk1, ScriptExecutionContext* unk2) {
- TextboxNoOverlapFollow(unk2->unk_00[1]);
+void ScriptCommand_TextboxNoOverlapFollow(Entity* entity, ScriptExecutionContext* context) {
+ TextboxNoOverlapFollow(context->scriptInstructionPointer[1]);
}
-void sub_0807EAC0(Entity* unk1, ScriptExecutionContext* unk2) {
- TextboxNoOverlap(unk2->unk_00[1], unk1);
+void ScriptCommand_TextboxNoOverlap(Entity* entity, ScriptExecutionContext* context) {
+ TextboxNoOverlap(context->scriptInstructionPointer[1], entity);
}
-void sub_0807EAD0(Entity* unk1, ScriptExecutionContext* unk2) {
- TextboxNoOverlapFollow(unk2->unk_00[1]);
+void ScriptCommand_TextboxNoOverlapFollowPos(Entity* entity, ScriptExecutionContext* context) {
+ TextboxNoOverlapFollow(context->scriptInstructionPointer[1]);
gTextBox.textWindowPosX = 1;
- gTextBox.textWindowPosY = unk2->unk_00[2];
+ gTextBox.textWindowPosY = context->scriptInstructionPointer[2];
}
-void sub_0807EAF0(Entity* unk1, ScriptExecutionContext* unk2) {
- if (gUnk_02033280.unk_06 > unk2->unk_04) {
- u16* tmp = unk2->unk_00 + unk2->unk_04;
+void ScriptCommand_TextboxNoOverlapFollowTable(Entity* entity, ScriptExecutionContext* context) {
+ if (gActiveScriptInfo.commandSize > context->intVariable) {
+ u16* tmp = context->scriptInstructionPointer + context->intVariable;
TextboxNoOverlapFollow(tmp[1]);
} else {
TextboxNoOverlapFollow(0);
}
}
-void sub_0807EB18(Entity* unk1, ScriptExecutionContext* unk2) {
- TextboxNoOverlap(unk2->unk_04, unk1);
+void ScriptCommand_TextboxNoOverlapVar(Entity* entity, ScriptExecutionContext* context) {
+ TextboxNoOverlap(context->intVariable, entity);
}
-void sub_0807EB28(Entity* unk1, ScriptExecutionContext* unk2) {
- sub_08078AA8(unk2->unk_00[1], 0);
+void ScriptCommand_0807EB28(Entity* entity, ScriptExecutionContext* context) {
+ sub_08078AA8(context->scriptInstructionPointer[1], 0);
}
-void sub_0807EB38(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_04 = gUnk_02000040.unk_01;
+void ScriptCommand_0807EB38(Entity* entity, ScriptExecutionContext* context) {
+ context->intVariable = gUnk_02000040.unk_01;
}
-void sub_0807EB44(Entity* unk1, ScriptExecutionContext* unk2) {
- unk1->animationState = unk2->unk_00[1];
+void ScriptCommand_0807EB44(Entity* entity, ScriptExecutionContext* context) {
+ entity->animationState = context->scriptInstructionPointer[1];
}
-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 ScriptCommand_0807EB4C(Entity* entity, ScriptExecutionContext* context) {
+ entity->animationState =
+ sub_0806F5B0(sub_080045B4(entity, context->scriptInstructionPointer[1] + gRoomControls.roomOriginX,
+ context->scriptInstructionPointer[2] + gRoomControls.roomOriginY));
}
-void sub_0807EB74(Entity* unk1, ScriptExecutionContext* unk2) {
- unk1->animationState = sub_0806F5B0(GetFacingDirection(unk1, &gPlayerEntity));
+void ScriptCommand_0807EB74(Entity* entity, ScriptExecutionContext* context) {
+ entity->animationState = sub_0806F5B0(GetFacingDirection(entity, &gPlayerEntity));
}
-void sub_0807EB8C(Entity* unk1, ScriptExecutionContext* unk2) {
- gPlayerEntity.animationState = sub_0806F5B0(GetFacingDirection(&gPlayerEntity, unk1)) & ~1;
+void ScriptCommand_0807EB8C(Entity* entity, ScriptExecutionContext* context) {
+ gPlayerEntity.animationState = sub_0806F5B0(GetFacingDirection(&gPlayerEntity, entity)) & ~1;
}
-void sub_0807EBA8(Entity* unk1, ScriptExecutionContext* unk2) {
- unk1->direction = unk2->unk_00[1];
+void ScriptCommand_SetEntityDirection(Entity* entity, ScriptExecutionContext* context) {
+ entity->direction = context->scriptInstructionPointer[1];
}
-void sub_0807EBB0(Entity* unk1, ScriptExecutionContext* unk2) {
- unk1->direction = unk2->unk_00[1];
- unk1->animationState = unk1->direction / 4;
+void ScriptCommand_SetEntityDirectionWithAnimationState(Entity* entity, ScriptExecutionContext* context) {
+ entity->direction = context->scriptInstructionPointer[1];
+ entity->animationState = entity->direction / 4;
}
-void sub_0807EBC0(Entity* unk1, ScriptExecutionContext* unk2) {
- unk1->nonPlanarMovement = unk2->unk_00[1];
+void ScriptCommand_SetEntitySpeed(Entity* entity, ScriptExecutionContext* context) {
+ entity->speed = context->scriptInstructionPointer[1];
}
-void sub_0807EBC8(Entity* unk1, ScriptExecutionContext* unk2) {
- unk1->field_0x20 = GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00);
+void ScriptCommand_SetEntity0x20(Entity* entity, ScriptExecutionContext* context) {
+ entity->field_0x20 = GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer);
}
-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 ScriptCommand_SetEntityPositionRelative(Entity* entity, ScriptExecutionContext* context) {
+ entity->x.HALF.HI = gRoomControls.roomOriginX + context->scriptInstructionPointer[1];
+ entity->y.HALF.HI = gRoomControls.roomOriginY + context->scriptInstructionPointer[2];
}
-void sub_0807EBF4(Entity* unk1, ScriptExecutionContext* unk2) {
- unk1->x.HALF.HI += unk2->unk_00[1];
- unk1->y.HALF.HI += unk2->unk_00[2];
+void ScriptCommand_SetEntityPosition(Entity* entity, ScriptExecutionContext* context) {
+ entity->x.HALF.HI += context->scriptInstructionPointer[1];
+ entity->y.HALF.HI += context->scriptInstructionPointer[2];
}
-void sub_0807EC08(Entity* unk1, ScriptExecutionContext* unk2) {
- CopyPosition(&gPlayerEntity, unk1);
+void ScriptCommand_MoveEntityToPlayer(Entity* entity, ScriptExecutionContext* context) {
+ CopyPosition(&gPlayerEntity, entity);
}
-void nullsub_509(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommandNop3(Entity* entity, ScriptExecutionContext* context) {
}
-void sub_0807EC1C(Entity* unk1, ScriptExecutionContext* unk2) {
- if (!unk2->unk_18) {
- unk2->unk_18 = 1;
- unk2->unk_12 = unk2->unk_00[1];
- unk2->unk_08 |= 2;
+void ScriptCommand_0807EC1C(Entity* entity, ScriptExecutionContext* context) {
+ if (!context->unk_18) {
+ context->unk_18 = 1;
+ context->unk_12 = context->scriptInstructionPointer[1];
+ context->postScriptActions |= 2;
}
- sub_0807EC44(unk1, unk2);
+ sub_0807EC44(entity, context);
}
-void sub_0807EC44(Entity* unk1, ScriptExecutionContext* unk2) {
- sub_0806F69C(unk1);
- if (--unk2->unk_12) {
- gUnk_02033280.unk_06 = 0;
+void sub_0807EC44(Entity* entity, ScriptExecutionContext* context) {
+ sub_0806F69C(entity);
+ if (--context->unk_12) {
+ gActiveScriptInfo.commandSize = 0;
}
}
-void sub_0807EC64(Entity* unk1, ScriptExecutionContext* unk2) {
- if (!unk2->unk_18) {
- unk2->unk_18 = 1;
- unk2->unk_12 = unk2->unk_00[1];
- unk1->animationState = 0;
- unk1->direction = 0;
- unk2->unk_08 |= 2;
+void ScriptCommand_0807EC64(Entity* entity, ScriptExecutionContext* context) {
+ if (!context->unk_18) {
+ context->unk_18 = 1;
+ context->unk_12 = context->scriptInstructionPointer[1];
+ entity->animationState = 0;
+ entity->direction = 0;
+ context->postScriptActions |= 2;
}
- sub_0807EC44(unk1, unk2);
+ sub_0807EC44(entity, context);
}
-void sub_0807EC94(Entity* unk1, ScriptExecutionContext* unk2) {
- if (!unk2->unk_18) {
- unk2->unk_18 = 1;
- unk2->unk_12 = unk2->unk_00[1];
- unk1->animationState = 2;
- unk1->direction = 8;
- unk2->unk_08 |= 2;
+void ScriptCommand_0807EC94(Entity* entity, ScriptExecutionContext* context) {
+ if (!context->unk_18) {
+ context->unk_18 = 1;
+ context->unk_12 = context->scriptInstructionPointer[1];
+ entity->animationState = 2;
+ entity->direction = 8;
+ context->postScriptActions |= 2;
}
- sub_0807EC44(unk1, unk2);
+ sub_0807EC44(entity, context);
}
-void sub_0807ECC4(Entity* unk1, ScriptExecutionContext* unk2) {
- if (!unk2->unk_18) {
- unk2->unk_18 = 1;
- unk2->unk_12 = unk2->unk_00[1];
- unk1->animationState = 4;
- unk1->direction = 0x10;
- unk2->unk_08 |= 2;
+void ScriptCommand_0807ECC4(Entity* entity, ScriptExecutionContext* context) {
+ if (!context->unk_18) {
+ context->unk_18 = 1;
+ context->unk_12 = context->scriptInstructionPointer[1];
+ entity->animationState = 4;
+ entity->direction = 0x10;
+ context->postScriptActions |= 2;
}
- sub_0807EC44(unk1, unk2);
+ sub_0807EC44(entity, context);
}
-void sub_0807ECF4(Entity* unk1, ScriptExecutionContext* unk2) {
- if (!unk2->unk_18) {
- unk2->unk_18 = 1;
- unk2->unk_12 = unk2->unk_00[1];
- unk1->animationState = 6;
- unk1->direction = 0x18;
- unk2->unk_08 |= 2;
+void ScriptCommand_0807ECF4(Entity* entity, ScriptExecutionContext* context) {
+ if (!context->unk_18) {
+ context->unk_18 = 1;
+ context->unk_12 = context->scriptInstructionPointer[1];
+ entity->animationState = 6;
+ entity->direction = 0x18;
+ context->postScriptActions |= 2;
}
- sub_0807EC44(unk1, unk2);
+ sub_0807EC44(entity, context);
}
-void sub_0807ED24(Entity* unk1, ScriptExecutionContext* unk2) {
- if (!unk2->unk_18) {
+void ScriptCommand_0807ED24(Entity* entity, ScriptExecutionContext* context) {
+ if (!context->unk_18) {
s32 tmp, tmp2, tmp3;
- unk2->unk_18 = 1;
- unk2->unk_12 = unk2->unk_00[3];
- tmp = unk2->unk_00[1];
- tmp2 = unk1->x.HALF.HI - gRoomControls.roomOriginX;
- unk2->unk_1C.WORD = ((tmp - tmp2) << 0x10) / unk2->unk_12;
- tmp = unk2->unk_00[2];
- tmp3 = unk1->y.HALF.HI - gRoomControls.roomOriginY;
- unk2->unk_20.WORD = ((tmp - tmp3) << 0x10) / unk2->unk_12;
- unk1->animationState = sub_0806F5B0(sub_080045B4(unk1, unk2->unk_00[1] + gRoomControls.roomOriginX,
- unk2->unk_00[2] + gRoomControls.roomOriginY));
- unk2->unk_08 |= 2;
+ context->unk_18 = 1;
+ context->unk_12 = context->scriptInstructionPointer[3];
+ tmp = context->scriptInstructionPointer[1];
+ tmp2 = entity->x.HALF.HI - gRoomControls.roomOriginX;
+ context->x.WORD = ((tmp - tmp2) << 0x10) / context->unk_12;
+ tmp = context->scriptInstructionPointer[2];
+ tmp3 = entity->y.HALF.HI - gRoomControls.roomOriginY;
+ context->y.WORD = ((tmp - tmp3) << 0x10) / context->unk_12;
+ entity->animationState =
+ sub_0806F5B0(sub_080045B4(entity, context->scriptInstructionPointer[1] + gRoomControls.roomOriginX,
+ context->scriptInstructionPointer[2] + gRoomControls.roomOriginY));
+ context->postScriptActions |= 2;
} else {
- if (!--unk2->unk_12) {
- unk1->x.HALF.HI = unk2->unk_00[1] + gRoomControls.roomOriginX;
- unk1->y.HALF.HI = unk2->unk_00[2] + gRoomControls.roomOriginY;
+ if (!--context->unk_12) {
+ entity->x.HALF.HI = context->scriptInstructionPointer[1] + gRoomControls.roomOriginX;
+ entity->y.HALF.HI = context->scriptInstructionPointer[2] + gRoomControls.roomOriginY;
return;
}
- unk1->x.WORD += unk2->unk_1C.WORD;
- unk1->y.WORD += unk2->unk_20.WORD;
+ entity->x.WORD += context->x.WORD;
+ entity->y.WORD += context->y.WORD;
}
- gUnk_02033280.unk_06 = 0;
+ gActiveScriptInfo.commandSize = 0;
}
-void sub_0807EDD4(Entity* unk1, ScriptExecutionContext* unk2) {
- if (!unk2->unk_18) {
- unk2->unk_18 = 1;
- sub_0807EE04(unk1, unk2);
+void ScriptCommand_0807EDD4(Entity* entity, ScriptExecutionContext* context) {
+ if (!context->unk_18) {
+ context->unk_18 = 1;
+ ScriptCommand_0807EE04(entity, context);
}
- sub_0807EE30(unk1, unk2);
- if (!unk2->unk_14) {
- gUnk_02033280.unk_06 = 0;
+ ScriptCommand_0807EE30(entity, context);
+ if (!context->condition) {
+ gActiveScriptInfo.commandSize = 0;
}
}
-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 ScriptCommand_0807EE04(Entity* entity, ScriptExecutionContext* context) {
+ sub_0807DEDC(entity, context, context->scriptInstructionPointer[1] + gRoomControls.roomOriginX,
+ context->scriptInstructionPointer[2] + gRoomControls.roomOriginY);
+ gActiveScriptInfo.flags |= 1;
}
-void sub_0807EE30(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_0807EE30(Entity* entity, ScriptExecutionContext* context) {
s32 tmp, tmp2;
- if (!--unk2->unk_19) {
- unk2->unk_19 = 8;
- unk1->direction = sub_080045DA(unk2->unk_1C.HALF.HI - unk1->x.HALF.HI, unk2->unk_20.HALF.HI - unk1->y.HALF.HI);
+ if (!--context->unk_19) {
+ context->unk_19 = 8;
+ entity->direction =
+ sub_080045DA(context->x.HALF.HI - entity->x.HALF.HI, context->y.HALF.HI - entity->y.HALF.HI);
}
- tmp = unk1->x.HALF.HI - unk2->unk_1C.HALF.HI;
- tmp2 = unk1->y.HALF.HI - unk2->unk_20.HALF.HI;
- sub_0806F62C(unk1, unk1->nonPlanarMovement, unk1->direction);
- tmp *= unk1->x.HALF.HI - unk2->unk_1C.HALF.HI;
- tmp2 *= unk1->y.HALF.HI - unk2->unk_20.HALF.HI;
+ tmp = entity->x.HALF.HI - context->x.HALF.HI;
+ tmp2 = entity->y.HALF.HI - context->y.HALF.HI;
+ sub_0806F62C(entity, entity->speed, entity->direction);
+ tmp *= entity->x.HALF.HI - context->x.HALF.HI;
+ tmp2 *= entity->y.HALF.HI - context->y.HALF.HI;
if (tmp <= 0 && tmp2 <= 0) {
- unk1->x.HALF.HI = unk2->unk_1C.HALF.HI;
- unk1->y.HALF.HI = unk2->unk_20.HALF.HI;
- unk2->unk_14 = 1;
+ entity->x.HALF.HI = context->x.HALF.HI;
+ entity->y.HALF.HI = context->y.HALF.HI;
+ context->condition = 1;
} else {
- unk2->unk_14 = 0;
+ context->condition = 0;
}
}
-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);
+void ScriptCommand_0807EEB4(Entity* entity, ScriptExecutionContext* context) {
+ if (!context->unk_18) {
+ context->unk_18 = 1;
+ sub_0807DEDC(entity, context, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI);
}
- sub_0807EE30(unk1, unk2);
- if (!unk2->unk_14) {
- gUnk_02033280.unk_06 = 0;
+ ScriptCommand_0807EE30(entity, context);
+ if (!context->condition) {
+ gActiveScriptInfo.commandSize = 0;
}
}
-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]));
+void ScriptCommand_0807EEF4(Entity* entity, ScriptExecutionContext* context) {
+ if (!context->unk_18) {
+ context->unk_18 = 1;
+ sub_0807DEDC(entity, context, entity->x.HALF.HI + ((s16)context->scriptInstructionPointer[1]),
+ entity->y.HALF.HI + ((s16)context->scriptInstructionPointer[2]));
}
- sub_0807EE30(unk1, unk2);
- if (!unk2->unk_14) {
- gUnk_02033280.unk_06 = 0;
+ ScriptCommand_0807EE30(entity, context);
+ if (!context->condition) {
+ gActiveScriptInfo.commandSize = 0;
}
}
-void sub_0807EF3C(Entity* unk1, ScriptExecutionContext* unk2) {
- if (!unk2->unk_18) {
- unk2->unk_18 = 1;
- unk1->field_0x20 = ((s16)unk2->unk_00[1]) << 8;
- unk2->unk_1C.HALF.LO = unk2->unk_00[2] << 8;
- sub_08003FC4(unk1, (u16)unk2->unk_1C.HALF.LO);
+void ScriptCommand_0807EF3C(Entity* entity, ScriptExecutionContext* context) {
+ if (!context->unk_18) {
+ context->unk_18 = 1;
+ entity->field_0x20 = ((s16)context->scriptInstructionPointer[1]) << 8;
+ context->x.HALF.LO = context->scriptInstructionPointer[2] << 8;
+ sub_08003FC4(entity, (u16)context->x.HALF.LO);
} else {
- if (!sub_08003FC4(unk1, (u16)unk2->unk_1C.HALF.LO))
+ if (!sub_08003FC4(entity, (u16)context->x.HALF.LO))
return;
}
- gUnk_02033280.unk_06 = 0;
+ gActiveScriptInfo.commandSize = 0;
}
-void sub_0807EF80(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_08 |= 1 << unk2->unk_00[1];
+void ScriptCommand_DoPostScriptAction(Entity* entity, ScriptExecutionContext* context) {
+ context->postScriptActions |= 1 << context->scriptInstructionPointer[1];
}
-void sub_0807EF90(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_08 |= 1 << unk2->unk_00[1];
+void ScriptCommand_DoPostScriptAction2(Entity* entity, ScriptExecutionContext* context) {
+ context->postScriptActions |= 1 << context->scriptInstructionPointer[1];
}
-void sub_0807EFA0(Entity* unk1, ScriptExecutionContext* unk2) {
- SoundReq(unk2->unk_00[1]);
+void ScriptCommand_SoundReq(Entity* entity, ScriptExecutionContext* context) {
+ SoundReq(context->scriptInstructionPointer[1]);
}
-void sub_0807EFAC(Entity* unk1, ScriptExecutionContext* unk2) {
- if (unk2->unk_00[1] >= 100) {
+void ScriptCommand_SoundReq2(Entity* entity, ScriptExecutionContext* context) {
+ if (context->scriptInstructionPointer[1] >= 100) {
SoundReq(gArea.musicIndex);
} else {
- SoundReq(unk2->unk_00[1]);
+ SoundReq(context->scriptInstructionPointer[1]);
}
}
-void sub_0807EFD4(Entity* unk1, ScriptExecutionContext* unk2) {
- SoundReq(GetNextScriptCommandWordAfterCommandMetadata(unk2->unk_00));
+void ScriptCommand_SoundReq3(Entity* entity, ScriptExecutionContext* context) {
+ SoundReq(GetNextScriptCommandWordAfterCommandMetadata(context->scriptInstructionPointer));
}
-void sub_0807EFE4(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_SoundReq0x80100000(Entity* entity, ScriptExecutionContext* context) {
SoundReq(0x80100000);
}
-void sub_0807EFF4(Entity* unk1, ScriptExecutionContext* unk2) {
- ModRupees((s16)unk2->unk_00[1]);
+void ScriptCommand_ModRupees(Entity* entity, ScriptExecutionContext* context) {
+ ModRupees((s16)context->scriptInstructionPointer[1]);
}
-void sub_0807F004(Entity* unk1, ScriptExecutionContext* unk2) {
- ModHealth(unk2->unk_00[1]);
+void ScriptCommand_ModHealth(Entity* entity, ScriptExecutionContext* context) {
+ ModHealth(context->scriptInstructionPointer[1]);
}
-void sub_0807F010(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_IncreaseMaxHealth(Entity* entity, ScriptExecutionContext* context) {
gSave.stats.maxHealth = min(gSave.stats.maxHealth + 8, 0xA0);
gSave.stats.health = gSave.stats.maxHealth;
}
-void sub_0807F034(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_0807F034(Entity* entity, ScriptExecutionContext* context) {
u32 tmp = 0;
- if (unk2->unk_00[1] == 0x3F) {
- tmp = unk2->unk_04;
+ if (context->scriptInstructionPointer[1] == 0x3F) {
+ tmp = context->intVariable;
}
- sub_080A7C18(unk2->unk_00[1], tmp, 0);
+ sub_080A7C18(context->scriptInstructionPointer[1], tmp, 0);
}
-void sub_0807F050(Entity* unk1, ScriptExecutionContext* unk2) {
- sub_080A7C18(0x5C, unk2->unk_00[1], 0);
+void ScriptCommand_0807F050(Entity* entity, ScriptExecutionContext* context) {
+ sub_080A7C18(0x5C, context->scriptInstructionPointer[1], 0);
}
-void sub_0807F060(Entity* unk1, ScriptExecutionContext* unk2) {
- unk2->unk_04 = GetInventoryValue(unk2->unk_00[1]);
- unk2->unk_14 = unk2->unk_04 != 0;
+void ScriptCommand_GetInventoryValue(Entity* entity, ScriptExecutionContext* context) {
+ context->intVariable = GetInventoryValue(context->scriptInstructionPointer[1]);
+ context->condition = context->intVariable != 0;
}
-void sub_0807F078(Entity* unk1, ScriptExecutionContext* unk2) {
- sub_0807CAA0(unk2->unk_00[1], unk2->unk_00[2]);
+void ScriptCommand_0807F078(Entity* entity, ScriptExecutionContext* context) {
+ sub_0807CAA0(context->scriptInstructionPointer[1], context->scriptInstructionPointer[2]);
}
-void sub_0807F088(Entity* unk1, ScriptExecutionContext* unk2) {
- sub_080A7C18(unk2->unk_00[1], 0, 3);
+void ScriptCommand_0807F088(Entity* entity, ScriptExecutionContext* context) {
+ sub_080A7C18(context->scriptInstructionPointer[1], 0, 3);
}
-void sub_0807F098(Entity* unk1, ScriptExecutionContext* unk2) {
- gRoomControls.cameraTarget = unk1;
+void ScriptCommand_CameraTargetEntity(Entity* entity, ScriptExecutionContext* context) {
+ gRoomControls.cameraTarget = entity;
}
-void sub_0807F0A4(Entity* unk1, ScriptExecutionContext* unk2) {
+void ScriptCommand_CameraTargetPlayer(Entity* entity, ScriptExecutionContext* context) {
gRoomControls.cameraTarget = &gPlayerEntity;
}
-void sub_0807F0B4(Entity* unk1, ScriptExecutionContext* unk2) {
- gRoomControls.unk5 = unk2->unk_00[1] & 7;
+void ScriptCommand_0807F0B4(Entity* entity, ScriptExecutionContext* context) {
+ gRoomControls.unk5 = context->scriptInstructionPointer[1] & 7;
}
-void sub_0807F0C8(Entity* unk1, ScriptExecutionContext* unk2) {
- sub_08080964(unk2->unk_00[1], unk2->unk_00[2]);
+void ScriptCommand_0807F0C8(Entity* entity, ScriptExecutionContext* context) {
+ sub_08080964(context->scriptInstructionPointer[1], context->scriptInstructionPointer[2]);
}