diff --git a/assets/xml/interface/do_action_static.xml b/assets/xml/interface/do_action_static.xml
new file mode 100644
index 000000000..3fdd1e404
--- /dev/null
+++ b/assets/xml/interface/do_action_static.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/interface/week_static.xml b/assets/xml/interface/week_static.xml
index 6b21b80c0..12cc885fa 100644
--- a/assets/xml/interface/week_static.xml
+++ b/assets/xml/interface/week_static.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/assets/xml/misc/story_static.xml b/assets/xml/misc/story_static.xml
index d53f3f857..9a15d8c4f 100644
--- a/assets/xml/misc/story_static.xml
+++ b/assets/xml/misc/story_static.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/assets/xml/objects/object_efc_tw.xml b/assets/xml/objects/object_efc_tw.xml
index 4d4c1029c..3cb6468b9 100644
--- a/assets/xml/objects/object_efc_tw.xml
+++ b/assets/xml/objects/object_efc_tw.xml
@@ -1,10 +1,13 @@
-
+
+
+
+
-
-
-
+
+
+
diff --git a/assets/xml/objects/object_okuta.xml b/assets/xml/objects/object_okuta.xml
index e71f65a1c..e10afa135 100644
--- a/assets/xml/objects/object_okuta.xml
+++ b/assets/xml/objects/object_okuta.xml
@@ -1,59 +1,72 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_open_obj.xml b/assets/xml/objects/object_open_obj.xml
index ea1664a88..74a4101bd 100644
--- a/assets/xml/objects/object_open_obj.xml
+++ b/assets/xml/objects/object_open_obj.xml
@@ -4,11 +4,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/assets/xml/objects/object_shn.xml b/assets/xml/objects/object_shn.xml
index 1b94600ab..4a8e01867 100644
--- a/assets/xml/objects/object_shn.xml
+++ b/assets/xml/objects/object_shn.xml
@@ -1,97 +1,125 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_wf.xml b/assets/xml/objects/object_wf.xml
index 4775552e2..3d9ce392d 100644
--- a/assets/xml/objects/object_wf.xml
+++ b/assets/xml/objects/object_wf.xml
@@ -1,110 +1,142 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/overlays/ovl_En_Syateki_Okuta.xml b/assets/xml/overlays/ovl_En_Syateki_Okuta.xml
index 0f4de7c4e..0e5054c19 100644
--- a/assets/xml/overlays/ovl_En_Syateki_Okuta.xml
+++ b/assets/xml/overlays/ovl_En_Syateki_Okuta.xml
@@ -1,13 +1,13 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/include/functions.h b/include/functions.h
index 744354ec4..51bce7e20 100644
--- a/include/functions.h
+++ b/include/functions.h
@@ -2006,7 +2006,7 @@ s32 func_80123810(GlobalContext* globalCtx);
void func_80123AA4(Player* player, s32 arg1);
// void func_80123BD4(void);
// void func_80123C58(void);
-void Player_SetEquipmentData(GlobalContext* globalCtx, Player* this);
+void Player_SetEquipmentData(GlobalContext* globalCtx, Player* this);
void func_80123D50(GlobalContext* globalCtx, Player* player, UNK_TYPE arg2, UNK_TYPE arg3);
void func_80123DA4(Player* player);
// void func_80123DC0(void);
@@ -2298,26 +2298,7 @@ s32 Entrance_GetSceneNum(u16 entranceIndex);
s32 Entrance_GetSceneNumAbsolute(u16 entranceIndex);
s32 Entrance_GetSpawnNum(u16 entranceIndex);
s32 Entrance_GetTransitionFlags(u16 entranceIndex);
-// void func_801323D0(void);
-// void func_80132428(void);
-// void func_80132494(void);
-// void func_801326B8(void);
-// void func_801328F0(void);
-// void func_80132920(void);
-// void func_80132938(void);
-// void func_80132954(void);
-// void func_8013296C(void);
-// void func_80132A18(void);
-// void func_80132A3C(void);
-// void func_80132A80(void);
-// void func_80132AD8(void);
-// void func_80132B24(void);
-// void func_80132B84(void);
-// void func_80132D70(void);
-// void func_80132E9C(void);
-// void func_80132FDC(void);
-// void func_80133000(void);
-UNK_TYPE func_80133038(GlobalContext* globalCtx, UNK_TYPE* arg1, struct_80133038_arg2* arg2);
+s32 Schedule_RunScript(GlobalContext* globalCtx, u8* script, ScheduleResult* result);
void SkelAnime_DrawLimbLod(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor, s32 lod);
void SkelAnime_DrawLod(GlobalContext* globalCtx, void** skeleton, Vec3s* jointTable, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, Actor* actor, s32 lod);
void SkelAnime_DrawFlexLimbLod(GlobalContext* globalCtx, s32 limbIndex, void** skeleton, Vec3s* jointTable, OverrideLimbDrawFlex overrideLimbDraw, PostLimbDrawFlex postLimbDraw, Actor* actor, s32 lod, Mtx** mtx);
@@ -2565,7 +2546,7 @@ s32 func_80142440(SkyboxContext* skyboxCtx, Vtx* vtx, s32 arg2, s32 arg3, s32 ar
void func_80143148(SkyboxContext* skyboxCtx, s32 arg1);
void func_801431E8(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyType);
void func_80143324(GlobalContext* globalCtx, SkyboxContext* skyboxCtx, s16 skyType);
-void func_801434E4(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyType);
+void func_801434E4(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyType);
Mtx* SkyboxDraw_UpdateMatrix(SkyboxContext* skyboxCtx, f32 x, f32 y, f32 z);
void SkyboxDraw_SetColors(SkyboxContext* skyboxCtx, u8 primR, u8 primG, u8 primB, u8 envR, u8 envG, u8 envB);
void SkyboxDraw_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyboxId, s16 blend, f32 x, f32 y, f32 z);
diff --git a/include/z64.h b/include/z64.h
index 7e9315995..9578aedb3 100644
--- a/include/z64.h
+++ b/include/z64.h
@@ -39,6 +39,7 @@
#include "z64player.h"
#include "z64save.h"
#include "z64scene.h"
+#include "z64schedule.h"
#include "z64skin.h"
#include "z64subs.h"
#include "z64transition.h"
@@ -932,7 +933,7 @@ typedef struct {
/* 0x12070 */ s32 unk12070;
/* 0x12074 */ UNK_TYPE1 pad12074[0x4];
/* 0x12078 */ s32 bankRupeesSelected;
- /* 0x1207C */ s32 bankRupees;
+ /* 0x1207C */ s32 bankRupees;
/* 0x12080 */ MessageTableEntry* messageEntryTable;
/* 0x12084 */ MessageTableEntry* messageEntryTableNes;
/* 0x12088 */ UNK_TYPE4 unk12088;
@@ -1272,7 +1273,7 @@ typedef struct {
/* 0x12C */ UNK_TYPE1 pad_12C[0x4];
/* 0x130 */ OSThread thread;
} AudioMgr; // size = 0x2E0
-
+
typedef struct {
/* 0x00 */ MtxF displayMatrix;
/* 0x40 */ Actor* actor;
@@ -1448,12 +1449,6 @@ typedef struct {
/* 0x24 */ s16 unk_24;
} struct_800BD888_arg1; // size = 0x28
-typedef struct {
- /* 0x0 */ u8 unk0;
- /* 0x4 */ s32 unk4;
- /* 0x8 */ s32 unk8; // game script pointer?
-} struct_80133038_arg2; // size = 0xC
-
typedef struct {
/* 0x00 */ u32 type;
/* 0x04 */ u32 setScissor;
diff --git a/include/z64schedule.h b/include/z64schedule.h
new file mode 100644
index 000000000..f5dfb2be8
--- /dev/null
+++ b/include/z64schedule.h
@@ -0,0 +1,248 @@
+#ifndef Z64SCHEDULE_H
+#define Z64SCHEDULE_H
+
+#include "ultra64.h"
+
+/*
+ Schedule is a subsystem that acts as a way to make decisions based on the
+ time and scene (and a limited selection of items). It is utilized by writing
+ a script that is encoded into bytecode and ran, returning the result in a
+ struct. The returned result can be a value or a encoded time value.
+
+ The scripts contain 2 kinds of instructions:
+ - Checks with branches (relative offsets, either 1-byte offsets (short, *_S),
+ or 2-byte offsets (long, *_L))
+ - Returns
+
+ Scripts are stored as u8[]. They are built using the macros are the bottom of
+ this file. The scheduledis.py script can be used to convert any scripts in
+ actor data into the macros.
+*/
+
+// Macro to convert the time format used in the save struct into the format used in Schedule
+#define SCHEDULE_CONVERT_TIME(time) ((time) - 0x10000 / 360 * 90)
+#define SCHEDULE_TIME_NOW SCHEDULE_CONVERT_TIME(gSaveContext.save.time)
+
+typedef enum {
+ /* 00 */ SCHEDULE_CMD_ID_CHECK_FLAG_S, // Checks if a weekEventReg flag is set and branches if so, short range branch
+ /* 01 */ SCHEDULE_CMD_ID_CHECK_FLAG_L, // Checks if a weekEventReg flag is set and branches if so, long range branch
+ /* 02 */ SCHEDULE_CMD_ID_CHECK_TIME_RANGE_S, // Checks if the current time is within the range of the two provided times and branches if so, short range branch
+ /* 03 */ SCHEDULE_CMD_ID_CHECK_TIME_RANGE_L, // Checks if the current time is within the range of the two provided times and branches if so, long range branch
+ /* 04 */ SCHEDULE_CMD_ID_RET_VAL_L, // Ends script and returns 2-byte value (Note: bugged as the return value size is only 1 byte in the struct)
+ /* 05 */ SCHEDULE_CMD_ID_RET_NONE, // Ends script without returning anything
+ /* 06 */ SCHEDULE_CMD_ID_RET_EMPTY, // Ends script and indicates return without changing existing value
+ /* 07 */ SCHEDULE_CMD_ID_NOP, // No-Op
+ /* 08 */ SCHEDULE_CMD_ID_CHECK_MISC_S, // Special check based on items or masks and branches if check passes, short range branch
+ /* 09 */ SCHEDULE_CMD_ID_RET_VAL_S, // Ends script and returns byte value
+ /* 10 */ SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_S, // Checks if the current scene is not SceneNum and branches if so, short range branch
+ /* 11 */ SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_L, // Checks if the current scene is not SceneNum and branches if so, long range branch
+ /* 12 */ SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_S, // Checks if the current day is not Day and branches if so, short range branch
+ /* 13 */ SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_L, // Checks if the current day is not Day and branches if so, long range branch
+ /* 14 */ SCHEDULE_CMD_ID_RET_TIME, // Returns 2 time values
+ /* 15 */ SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_S, // Branches if the current time is less than the command time, short range branch
+ /* 16 */ SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_L, // Branches if the current time is less than the command time, long range branch
+ /* 17 */ SCHEDULE_CMD_ID_BRANCH_S, // Always branch, short range branch
+ /* 18 */ SCHEDULE_CMD_ID_BRANCH_L, // Always branch, long range branch
+} ScheduleCommandId;
+
+typedef enum {
+ /* 0 */ SCHEDULE_CHECK_MISC_ROOM_KEY,
+ /* 1 */ SCHEDULE_CHECK_MISC_LETTER_TO_KAFEI,
+ /* 2 */ SCHEDULE_CHECK_MISC_MASK_ROMANI,
+} ScheduleCheckMisc;
+
+typedef struct {
+ /* 0x0 */ u8 result;
+ /* 0x4 */ s32 time0;
+ /* 0x8 */ s32 time1;
+ /* 0xC */ s32 hasResult;
+} ScheduleResult; // size = 0x10
+
+typedef struct {
+ /* 0x0 */ u8 cmd;
+} ScheduleCmdBase; // size = 0x1
+
+typedef struct {
+ /* 0x0 */ ScheduleCmdBase base;
+ /* 0x1 */ u8 flagByte;
+ /* 0x2 */ u8 flagMask;
+ /* 0x3 */ s8 offset;
+} ScheduleCmdCheckFlagS; // size = 0x4
+
+typedef struct {
+ /* 0x0 */ ScheduleCmdBase base;
+ /* 0x1 */ u8 flagByte;
+ /* 0x2 */ u8 flagMask;
+ /* 0x3 */ u8 offsetH;
+ /* 0x4 */ u8 offsetL;
+} ScheduleCmdCheckFlagL; // size = 0x5
+
+typedef struct {
+ /* 0x0 */ ScheduleCmdBase base;
+ /* 0x1 */ u8 startHr;
+ /* 0x2 */ u8 startMin;
+ /* 0x3 */ u8 endHr;
+ /* 0x4 */ u8 endMin;
+ /* 0x5 */ s8 offset;
+} ScheduleCmdCheckTimeRangeS; // size = 0x6
+
+typedef struct {
+ /* 0x0 */ ScheduleCmdBase base;
+ /* 0x1 */ u8 startHr;
+ /* 0x2 */ u8 startMin;
+ /* 0x3 */ u8 endHr;
+ /* 0x4 */ u8 endMin;
+ /* 0x5 */ u8 offsetH;
+ /* 0x6 */ u8 offsetL;
+} ScheduleCmdCheckTimeRangeL; // size = 0x7
+
+typedef struct {
+ /* 0x0 */ ScheduleCmdBase base;
+ /* 0x1 */ u8 retH;
+ /* 0x2 */ u8 retL;
+} ScheduleCmdReturnValueL; // size = 0x3
+
+typedef struct {
+ /* 0x0 */ ScheduleCmdBase base;
+ /* 0x1 */ u8 unk1;
+ /* 0x2 */ u8 unk2;
+ /* 0x3 */ u8 unk3;
+} ScheduleCmdNop; // size = 0x4
+
+typedef struct {
+ /* 0x0 */ ScheduleCmdBase base;
+ /* 0x1 */ u8 which;
+ /* 0x2 */ s8 offset;
+} ScheduleCmdCheckMiscS; // size = 0x3
+
+typedef struct {
+ /* 0x0 */ ScheduleCmdBase base;
+ /* 0x1 */ u8 result;
+} ScheduleCmdReturnValueS; // size = 0x2
+
+typedef struct {
+ /* 0x0 */ ScheduleCmdBase base;
+ /* 0x1 */ u8 sceneH;
+ /* 0x2 */ u8 sceneL;
+ /* 0x3 */ s8 offset;
+} ScheduleCmdCheckNotInSceneS; // size = 0x4
+
+typedef struct {
+ /* 0x0 */ ScheduleCmdBase base;
+ /* 0x1 */ u8 sceneH;
+ /* 0x2 */ u8 sceneL;
+ /* 0x3 */ u8 offsetH;
+ /* 0x4 */ u8 offsetL;
+} ScheduleCmdCheckNotInSceneL; // size = 0x5
+
+typedef struct {
+ /* 0x0 */ ScheduleCmdBase base;
+ /* 0x1 */ u8 dayH;
+ /* 0x2 */ u8 dayL;
+ /* 0x3 */ s8 offset;
+} ScheduleCmdCheckNotInDayS; // size = 0x4
+
+typedef struct {
+ /* 0x0 */ ScheduleCmdBase base;
+ /* 0x1 */ u8 dayH;
+ /* 0x2 */ u8 dayL;
+ /* 0x3 */ u8 offsetH;
+ /* 0x4 */ u8 offsetL;
+} ScheduleCmdCheckNotInDayL; // size = 0x5
+
+typedef struct {
+ /* 0x0 */ ScheduleCmdBase base;
+ /* 0x1 */ u8 time0Hr;
+ /* 0x2 */ u8 time0Min;
+ /* 0x3 */ u8 time1Hr;
+ /* 0x4 */ u8 time1Min;
+ /* 0x5 */ u8 result;
+} ScheduleCmdReturnTime; // size = 0x6
+
+typedef struct {
+ /* 0x0 */ ScheduleCmdBase base;
+ /* 0x1 */ u8 timeHr;
+ /* 0x2 */ u8 timeMin;
+ /* 0x3 */ s8 offset;
+} ScheduleCmdCheckBeforeTimeS; // size = 0x4
+
+typedef struct {
+ /* 0x0 */ ScheduleCmdBase base;
+ /* 0x1 */ u8 timeHr;
+ /* 0x2 */ u8 timeMin;
+ /* 0x3 */ u8 offsetH;
+ /* 0x4 */ u8 offsetL;
+} ScheduleCmdCheckBeforeTimeL; // size = 0x5
+
+typedef struct {
+ /* 0x0 */ ScheduleCmdBase base;
+ /* 0x1 */ s8 offset;
+} ScheduleCmdBranchS; // size = 0x2
+
+typedef struct {
+ /* 0x0 */ ScheduleCmdBase base;
+ /* 0x1 */ u8 offsetH;
+ /* 0x2 */ u8 offsetL;
+} ScheduleCmdBranchL; // size = 0x3
+
+#define SCHEDULE_PACK_S16(val) \
+ ((val) >> 8) & 0xFF, (val) & 0xFF
+
+#define SCHEDULE_CMD_CHECK_FLAG_S(index, mask, offset) \
+ SCHEDULE_CMD_ID_CHECK_FLAG_S, (index), (mask), (offset)
+
+#define SCHEDULE_CMD_CHECK_FLAG_L(index, mask, offset) \
+ SCHEDULE_CMD_ID_CHECK_FLAG_L, (index), (mask), SCHEDULE_PACK_S16(offset)
+
+#define SCHEDULE_CMD_CHECK_TIME_RANGE_S(startHr, startMin, endHr, endMin, offset) \
+ SCHEDULE_CMD_ID_CHECK_TIME_RANGE_S, (startHr), (startMin), (endHr), (endMin), (offset)
+
+#define SCHEDULE_CMD_CHECK_TIME_RANGE_L(startHr, startMin, endHr, endMin, offset) \
+ SCHEDULE_CMD_ID_CHECK_TIME_RANGE_L, (startHr), (startMin), (endHr), (endMin), SCHEDULE_PACK_S16(offset)
+
+#define SCHEDULE_CMD_RET_VAL_L(result) \
+ SCHEDULE_CMD_ID_RET_VAL_L, SCHEDULE_PACK_S16(result)
+
+#define SCHEDULE_CMD_RET_NONE() \
+ SCHEDULE_CMD_ID_RET_NONE
+
+#define SCHEDULE_CMD_RET_EMPTY() \
+ SCHEDULE_CMD_ID_RET_EMPTY,
+
+#define SCHEDULE_CMD_NOP(unk0, unk1, unk2) \
+ SCHEDULE_CMD_ID_NOP, (unk0), (unk1), (unk2)
+
+#define SCHEDULE_CMD_CHECK_MISC_S(which, offset) \
+ SCHEDULE_CMD_ID_CHECK_MISC_S, (which), (offset)
+
+#define SCHEDULE_CMD_RET_VAL_S(result) \
+ SCHEDULE_CMD_ID_RET_VAL_S, (result)
+
+#define SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(scene, offset) \
+ SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_S, SCHEDULE_PACK_S16(scene), (offset)
+
+#define SCHEDULE_CMD_CHECK_NOT_IN_SCENE_L(scene, offset) \
+ SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_L, SCHEDULE_PACK_S16(scene), SCHEDULE_PACK_S16(offset)
+
+#define SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(day, offset) \
+ SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_S, SCHEDULE_PACK_S16(day), (offset)
+
+#define SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(day, offset) \
+ SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_L, SCHEDULE_PACK_S16(day), SCHEDULE_PACK_S16(offset)
+
+#define SCHEDULE_CMD_RET_TIME(time0Hr, time0Min, time1Hr, time1Min, result) \
+ SCHEDULE_CMD_ID_RET_TIME, (time0Hr), (time0Min), (time1Hr), (time1Min), (result)
+
+#define SCHEDULE_CMD_CHECK_BEFORE_TIME_S(timeHr, timeMin, offset) \
+ SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_S, (timeHr), (timeMin), (offset)
+
+#define SCHEDULE_CMD_CHECK_BEFORE_TIME_L(timeHr, timeMin, offset) \
+ SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_L, (timeHr), (timeMin), SCHEDULE_PACK_S16(offset)
+
+#define SCHEDULE_CMD_BRANCH_S(offset) \
+ SCHEDULE_CMD_ID_BRANCH_S, (offset)
+
+#define SCHEDULE_CMD_BRANCH_L(offset) \
+ SCHEDULE_CMD_ID_BRANCH_L, SCHEDULE_PACK_S16(offset)
+
+#endif
diff --git a/spec b/spec
index 5c8da2164..a7b8a32af 100644
--- a/spec
+++ b/spec
@@ -376,13 +376,15 @@ beginseg
name "story_static"
compress
romalign 0x1000
- include "build/baserom/story_static.o"
+ include "build/assets/misc/story_static/story_static.o"
+ number 7
endseg
beginseg
name "do_action_static"
romalign 0x1000
- include "build/baserom/do_action_static.o"
+ include "build/assets/interface/do_action_static/do_action_static.o"
+ number 9
endseg
beginseg
@@ -518,8 +520,7 @@ beginseg
include "build/data/code/code_801C2730.data.o"
include "build/src/code/z_scene_proc.o"
include "build/src/code/z_scene_table.o"
- include "build/src/code/code_801323D0.o"
- include "build/data/code/code_801C5C50.data.o"
+ include "build/src/code/z_schedule.o"
include "build/src/code/z_skelanime.o"
include "build/src/code/z_skin.o"
include "build/src/code/z_skin_awb.o"
@@ -1114,8 +1115,7 @@ beginseg
name "ovl_Demo_Effect"
compress
include "build/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.o"
- include "build/data/ovl_Demo_Effect/ovl_Demo_Effect.data.o"
- include "build/data/ovl_Demo_Effect/ovl_Demo_Effect.reloc.o"
+ include "build/src/overlays/actors/ovl_Demo_Effect/ovl_Demo_Effect_reloc.o"
endseg
beginseg
@@ -3436,8 +3436,7 @@ beginseg
name "ovl_Bg_Open_Spot"
compress
include "build/src/overlays/actors/ovl_Bg_Open_Spot/z_bg_open_spot.o"
- include "build/data/ovl_Bg_Open_Spot/ovl_Bg_Open_Spot.data.o"
- include "build/data/ovl_Bg_Open_Spot/ovl_Bg_Open_Spot.reloc.o"
+ include "build/src/overlays/actors/ovl_Bg_Open_Spot/ovl_Bg_Open_Spot_reloc.o"
endseg
beginseg
@@ -9144,7 +9143,8 @@ endseg
beginseg
name "week_static"
romalign 0x1000
- include "build/baserom/week_static.o"
+ include "build/assets/interface/week_static/week_static.o"
+ number 9
endseg
beginseg
diff --git a/src/boot_O2_g3/idle.c b/src/boot_O2_g3/idle.c
index 942435fa7..da93f13fd 100644
--- a/src/boot_O2_g3/idle.c
+++ b/src/boot_O2_g3/idle.c
@@ -1,3 +1,4 @@
+#include "prevent_bss_reordering.h"
#include "global.h"
u8 D_80096B20 = 1;
diff --git a/src/code/code_801323D0.c b/src/code/code_801323D0.c
deleted file mode 100644
index 1457f537d..000000000
--- a/src/code/code_801323D0.c
+++ /dev/null
@@ -1,41 +0,0 @@
-#include "global.h"
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_801323D0.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_80132428.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_80132494.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_801326B8.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_801328F0.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_80132920.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_80132938.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_80132954.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_8013296C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_80132A18.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_80132A3C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_80132A80.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_80132AD8.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_80132B24.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_80132B84.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_80132D70.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_80132E9C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_80132FDC.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_80133000.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/code_801323D0/func_80133038.s")
diff --git a/src/code/z_bgcheck.c b/src/code/z_bgcheck.c
index 028f68011..f0ebe5911 100644
--- a/src/code/z_bgcheck.c
+++ b/src/code/z_bgcheck.c
@@ -1,4 +1,3 @@
-#include "prevent_bss_reordering.h"
#include "global.h"
#include "vt.h"
diff --git a/src/code/z_collision_check.c b/src/code/z_collision_check.c
index 4b7f48696..a08e3f822 100644
--- a/src/code/z_collision_check.c
+++ b/src/code/z_collision_check.c
@@ -1,4 +1,3 @@
-#include "prevent_bss_reordering.h"
#include "global.h"
Vec3f D_801EDE00;
diff --git a/src/code/z_demo.c b/src/code/z_demo.c
index 0a666e64d..01ed87e70 100644
--- a/src/code/z_demo.c
+++ b/src/code/z_demo.c
@@ -1,4 +1,3 @@
-#include "prevent_bss_reordering.h"
#include "global.h"
#include "overlays/gamestates/ovl_daytelop/z_daytelop.h"
diff --git a/src/code/z_schedule.c b/src/code/z_schedule.c
new file mode 100644
index 000000000..4c57a57d4
--- /dev/null
+++ b/src/code/z_schedule.c
@@ -0,0 +1,283 @@
+#include "global.h"
+
+#define SCHEDULE_CALC_TIME(hour, minute, dest, temp) \
+ (temp) = (hour)*60.0f; \
+ (temp) += (minute); \
+ (dest) = (temp) * (0x10000 / 60 / 24.0f); \
+ (dest) = SCHEDULE_CONVERT_TIME(dest);
+
+s32 Schedule_CheckFlagS(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ ScheduleCmdCheckFlagS* cmd = (ScheduleCmdCheckFlagS*)*script;
+ u16 flag = (cmd->flagByte << 8) | cmd->flagMask;
+
+ if (gSaveContext.save.weekEventReg[flag >> 8] & (flag & 0xFF)) {
+ *script += cmd->offset;
+ }
+
+ return false;
+}
+
+s32 Schedule_CheckFlagL(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ ScheduleCmdCheckFlagL* cmd = (ScheduleCmdCheckFlagL*)*script;
+ u16 flag = (cmd->flagByte << 8) | cmd->flagMask;
+
+ if (gSaveContext.save.weekEventReg[flag >> 8] & (flag & 0xFF)) {
+ *script += (s16)((cmd->offsetH << 8) | cmd->offsetL);
+ }
+
+ return false;
+}
+
+s32 Schedule_CheckTimeRangeS(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ s32 inRange = false;
+ ScheduleCmdCheckTimeRangeS* cmd = (ScheduleCmdCheckTimeRangeS*)*script;
+ f32 f;
+ u16 start;
+ u16 end;
+ u16 now;
+
+ SCHEDULE_CALC_TIME(cmd->startHr, cmd->startMin, start, f);
+
+ SCHEDULE_CALC_TIME(cmd->endHr, cmd->endMin, end, f);
+ end--;
+
+ now = SCHEDULE_TIME_NOW;
+
+ if ((start <= now) && (now <= end)) {
+ inRange = true;
+ }
+
+ if (inRange == true) {
+ *script += cmd->offset;
+ }
+
+ return false;
+}
+
+s32 Schedule_CheckTimeRangeL(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ s32 inRange = false;
+ ScheduleCmdCheckTimeRangeL* cmd = (ScheduleCmdCheckTimeRangeL*)*script;
+ f32 f;
+ u16 start;
+ u16 end;
+ u16 now;
+
+ SCHEDULE_CALC_TIME(cmd->startHr, cmd->startMin, start, f);
+
+ SCHEDULE_CALC_TIME(cmd->endHr, cmd->endMin, end, f);
+ end--;
+
+ now = SCHEDULE_TIME_NOW;
+
+ if ((start <= now) && (now <= end)) {
+ inRange = true;
+ }
+
+ if (inRange == true) {
+ *script += (s16)((cmd->offsetH << 8) | cmd->offsetL);
+ }
+
+ return false;
+}
+
+s32 Schedule_ReturnValueL(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ ScheduleCmdReturnValueL* cmd = (ScheduleCmdReturnValueL*)*script;
+
+ //! @bug result is a u8, value is truncated
+ result->result = (cmd->retH << 8) | cmd->retL;
+ result->hasResult = true;
+
+ return true;
+}
+
+s32 Schedule_ReturnNone(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ result->hasResult = false;
+
+ return true;
+}
+
+s32 Schedule_ReturnEmpty(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ result->hasResult = true;
+
+ return true;
+}
+
+s32 Schedule_Nop(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ return false;
+}
+
+s32 Schedule_CheckMiscS(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ ScheduleCmdCheckMiscS* cmd = (ScheduleCmdCheckMiscS*)*script;
+
+ if (((cmd->which == SCHEDULE_CHECK_MISC_ROOM_KEY) && (INV_CONTENT(ITEM_ROOM_KEY) == ITEM_ROOM_KEY)) ||
+ ((cmd->which == SCHEDULE_CHECK_MISC_LETTER_TO_KAFEI) &&
+ (INV_CONTENT(ITEM_LETTER_TO_KAFEI) == ITEM_LETTER_TO_KAFEI)) ||
+ ((cmd->which == SCHEDULE_CHECK_MISC_MASK_ROMANI) && (Player_GetMask(globalCtx) == PLAYER_MASK_ROMANI))) {
+ *script += cmd->offset;
+ }
+
+ return false;
+}
+
+s32 Schedule_ReturnValueS(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ ScheduleCmdReturnValueS* cmd = (ScheduleCmdReturnValueS*)*script;
+
+ result->result = cmd->result;
+ result->hasResult = true;
+
+ return true;
+}
+
+s32 Schedule_CheckNotInSceneS(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ ScheduleCmdCheckNotInSceneS* cmd = (ScheduleCmdCheckNotInSceneS*)*script;
+ s16 scene = (cmd->sceneH << 8) | cmd->sceneL;
+
+ if (scene != globalCtx->sceneNum) {
+ *script += cmd->offset;
+ }
+
+ return false;
+}
+
+s32 Schedule_CheckNotInSceneL(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ ScheduleCmdCheckNotInSceneL* cmd = (ScheduleCmdCheckNotInSceneL*)*script;
+ s16 scene = (cmd->sceneH << 8) | cmd->sceneL;
+
+ if (scene != globalCtx->sceneNum) {
+ *script = *script + (s16)((cmd->offsetH << 8) | cmd->offsetL);
+ }
+
+ return false;
+}
+
+s32 Schedule_CheckNotInDayS(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ ScheduleCmdCheckNotInDayS* cmd = (ScheduleCmdCheckNotInDayS*)*script;
+ s16 day = (cmd->dayH << 8) | cmd->dayL;
+
+ if (day != (s16)gSaveContext.save.day) {
+ *script += cmd->offset;
+ }
+
+ return false;
+}
+
+s32 Schedule_CheckNotInDayL(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ ScheduleCmdCheckNotInDayL* cmd = (ScheduleCmdCheckNotInDayL*)*script;
+ s16 day = (cmd->dayH << 8) | cmd->dayL;
+
+ if (day != (s16)gSaveContext.save.day) {
+ *script += (s16)((cmd->offsetH << 8) | cmd->offsetL);
+ }
+
+ return false;
+}
+
+s32 Schedule_ReturnTime(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ ScheduleCmdReturnTime* cmd = (ScheduleCmdReturnTime*)*script;
+ f32 f;
+ u16 time0;
+ u16 time1;
+
+ SCHEDULE_CALC_TIME(cmd->time0Hr, cmd->time0Min, time0, f);
+
+ SCHEDULE_CALC_TIME(cmd->time1Hr, cmd->time1Min, time1, f);
+ time1--;
+
+ result->result = cmd->result;
+ result->time0 = time0;
+ result->time1 = time1;
+ result->hasResult = true;
+
+ return true;
+}
+
+s32 Schedule_CheckBeforeTimeS(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ ScheduleCmdCheckBeforeTimeS* cmd = (ScheduleCmdCheckBeforeTimeS*)*script;
+ f32 f;
+ u16 testTime;
+ u16 now;
+
+ SCHEDULE_CALC_TIME(cmd->timeHr, cmd->timeMin, testTime, f);
+
+ now = SCHEDULE_TIME_NOW;
+
+ if (now < testTime) {
+ *script += cmd->offset;
+ }
+
+ return false;
+}
+
+s32 Schedule_CheckBeforeTimeL(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ ScheduleCmdCheckBeforeTimeL* cmd = (ScheduleCmdCheckBeforeTimeL*)*script;
+ f32 f;
+ u16 testTime;
+ u16 now;
+
+ SCHEDULE_CALC_TIME(cmd->timeHr, cmd->timeMin, testTime, f);
+
+ now = SCHEDULE_TIME_NOW;
+
+ if (now < testTime) {
+ *script += (s16)((cmd->offsetH << 8) | cmd->offsetL);
+ }
+
+ return false;
+}
+
+s32 Schedule_BranchS(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ ScheduleCmdBranchS* cmd = (ScheduleCmdBranchS*)*script;
+
+ *script += cmd->offset;
+ return false;
+}
+
+s32 Schedule_BranchL(GlobalContext* globalCtx, u8** script, ScheduleResult* result) {
+ ScheduleCmdBranchL* cmd = (ScheduleCmdBranchL*)*script;
+
+ *script += (s16)((cmd->offsetH << 8) | cmd->offsetL);
+ return false;
+}
+
+static s32 (*sScheduleCmdFuncs[])(GlobalContext*, u8**, ScheduleResult*) = {
+ Schedule_CheckFlagS, Schedule_CheckFlagL, Schedule_CheckTimeRangeS, Schedule_CheckTimeRangeL,
+ Schedule_ReturnValueL, Schedule_ReturnNone, Schedule_ReturnEmpty, Schedule_Nop,
+ Schedule_CheckMiscS, Schedule_ReturnValueS, Schedule_CheckNotInSceneS, Schedule_CheckNotInSceneL,
+ Schedule_CheckNotInDayS, Schedule_CheckNotInDayL, Schedule_ReturnTime, Schedule_CheckBeforeTimeS,
+ Schedule_CheckBeforeTimeL, Schedule_BranchS, Schedule_BranchL,
+};
+
+static u8 sScheduleCmdSizes[] = {
+ sizeof(ScheduleCmdCheckFlagS),
+ sizeof(ScheduleCmdCheckFlagL),
+ sizeof(ScheduleCmdCheckTimeRangeS),
+ sizeof(ScheduleCmdCheckTimeRangeL),
+ sizeof(ScheduleCmdReturnValueL),
+ sizeof(ScheduleCmdBase),
+ sizeof(ScheduleCmdBase),
+ sizeof(ScheduleCmdNop),
+ sizeof(ScheduleCmdCheckMiscS),
+ sizeof(ScheduleCmdReturnValueS),
+ sizeof(ScheduleCmdCheckNotInSceneS),
+ sizeof(ScheduleCmdCheckNotInSceneL),
+ sizeof(ScheduleCmdCheckNotInDayS),
+ sizeof(ScheduleCmdCheckNotInDayL),
+ sizeof(ScheduleCmdReturnTime),
+ sizeof(ScheduleCmdCheckBeforeTimeS),
+ sizeof(ScheduleCmdCheckBeforeTimeL),
+ sizeof(ScheduleCmdBranchS),
+ sizeof(ScheduleCmdBranchL),
+};
+
+s32 Schedule_RunScript(GlobalContext* globalCtx, u8* script, ScheduleResult* result) {
+ u8 size;
+ s32 stop;
+
+ do {
+ size = sScheduleCmdSizes[*script];
+ stop = (*sScheduleCmdFuncs[*script])(globalCtx, &script, result);
+ script += size;
+ } while (!stop);
+
+ return result->hasResult;
+}
diff --git a/src/overlays/actors/ovl_Bg_Open_Spot/z_bg_open_spot.c b/src/overlays/actors/ovl_Bg_Open_Spot/z_bg_open_spot.c
index b776253e6..48d2cd4f2 100644
--- a/src/overlays/actors/ovl_Bg_Open_Spot/z_bg_open_spot.c
+++ b/src/overlays/actors/ovl_Bg_Open_Spot/z_bg_open_spot.c
@@ -1,10 +1,11 @@
/*
* File: z_bg_open_spot.c
* Overlay: ovl_Bg_Open_Spot
- * Description: Star Light Rays in Intro Scene
+ * Description: Spotlights that shine on the Skull Kid when he turns Link
+ * into a Deku Scrub.
*/
-
#include "z_bg_open_spot.h"
+#include "objects/object_open_obj/object_open_obj.h"
#define FLAGS (ACTOR_FLAG_10)
@@ -13,8 +14,8 @@
void BgOpenSpot_Init(Actor* thisx, GlobalContext* globalCtx);
void BgOpenSpot_Destroy(Actor* thisx, GlobalContext* globalCtx);
void BgOpenSpot_Update(Actor* thisx, GlobalContext* globalCtx);
+void BgOpenSpot_Draw(Actor* thisx, GlobalContext* globalCtx);
-#if 0
const ActorInit Bg_Open_Spot_InitVars = {
ACTOR_BG_OPEN_SPOT,
ACTORCAT_PROP,
@@ -27,25 +28,49 @@ const ActorInit Bg_Open_Spot_InitVars = {
(ActorFunc)NULL,
};
-// static InitChainEntry sInitChain[] = {
-static InitChainEntry D_80ACB3B0[] = {
+static InitChainEntry sInitChain[] = {
ICHAIN_F32(uncullZoneForward, 4000, ICHAIN_CONTINUE),
ICHAIN_F32(uncullZoneScale, 560, ICHAIN_CONTINUE),
ICHAIN_F32(uncullZoneDownward, 800, ICHAIN_CONTINUE),
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP),
};
-#endif
+void BgOpenSpot_Init(Actor* thisx, GlobalContext* globalCtx) {
+ BgOpenSpot* this = THIS;
-extern InitChainEntry D_80ACB3B0[];
+ Actor_ProcessInitChain(&this->actor, sInitChain);
+ this->texScrolls = Lib_SegmentedToVirtual(gSpotlightTexAnim);
+}
-extern UNK_TYPE D_06001A60;
-extern UNK_TYPE D_06002CE0;
+void BgOpenSpot_Destroy(Actor* thisx, GlobalContext* globalCtx) {
+}
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Bg_Open_Spot/BgOpenSpot_Init.s")
+void BgOpenSpot_Update(Actor* thisx, GlobalContext* globalCtx) {
+ BgOpenSpot* this = THIS;
+ u32 action;
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Bg_Open_Spot/BgOpenSpot_Destroy.s")
+ if (Cutscene_CheckActorAction(globalCtx, 0x7D)) {
+ action = globalCtx->csCtx.actorActions[Cutscene_GetActorActionIndex(globalCtx, 0x7D)]->action;
+ if (action == 1) {
+ this->actor.draw = NULL;
+ } else if (action == 2) {
+ this->actor.draw = BgOpenSpot_Draw;
+ }
+ }
+}
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Bg_Open_Spot/BgOpenSpot_Update.s")
+void BgOpenSpot_Draw(Actor* thisx, GlobalContext* globalCtx) {
+ s32 pad;
+ BgOpenSpot* this = (BgOpenSpot*)thisx;
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Bg_Open_Spot/func_80ACB2B0.s")
+ AnimatedMat_Draw(globalCtx, this->texScrolls);
+ OPEN_DISPS(globalCtx->state.gfxCtx);
+
+ func_8012C2DC(globalCtx->state.gfxCtx);
+ gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_MODELVIEW | G_MTX_LOAD);
+ gDPSetColorDither(POLY_XLU_DISP++, G_CD_BAYER);
+ gSPDisplayList(POLY_XLU_DISP++, gSpotlightLeftDL);
+ gSPDisplayList(POLY_XLU_DISP++, gSpotlightRightDL);
+
+ CLOSE_DISPS(globalCtx->state.gfxCtx);
+}
diff --git a/src/overlays/actors/ovl_Bg_Open_Spot/z_bg_open_spot.h b/src/overlays/actors/ovl_Bg_Open_Spot/z_bg_open_spot.h
index cf4fa2f8d..3a2b92125 100644
--- a/src/overlays/actors/ovl_Bg_Open_Spot/z_bg_open_spot.h
+++ b/src/overlays/actors/ovl_Bg_Open_Spot/z_bg_open_spot.h
@@ -7,7 +7,7 @@ struct BgOpenSpot;
typedef struct BgOpenSpot {
/* 0x000 */ Actor actor;
- /* 0x144 */ char unk_144[0x4];
+ /* 0x144 */ AnimatedMaterial* texScrolls;
} BgOpenSpot; // size = 0x148
extern const ActorInit Bg_Open_Spot_InitVars;
diff --git a/src/overlays/actors/ovl_Boss_06/z_boss_06.c b/src/overlays/actors/ovl_Boss_06/z_boss_06.c
index 5a88f67c6..311d07a75 100644
--- a/src/overlays/actors/ovl_Boss_06/z_boss_06.c
+++ b/src/overlays/actors/ovl_Boss_06/z_boss_06.c
@@ -4,6 +4,7 @@
* Description: Igos du Ikana window - curtains and ray effects
*/
+#include "prevent_bss_reordering.h"
#include "z_boss_06.h"
#include "overlays/actors/ovl_En_Knight/z_en_knight.h"
#include "objects/gameplay_keep/gameplay_keep.h"
diff --git a/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c b/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c
index 18be6991c..108f128ae 100644
--- a/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c
+++ b/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c
@@ -5,6 +5,8 @@
*/
#include "z_demo_effect.h"
+#include "objects/gameplay_keep/gameplay_keep.h"
+#include "objects/object_efc_tw/object_efc_tw.h"
#define FLAGS (ACTOR_FLAG_10 | ACTOR_FLAG_20)
@@ -15,11 +17,14 @@ void DemoEffect_Destroy(Actor* thisx, GlobalContext* globalCtx);
void DemoEffect_Update(Actor* thisx, GlobalContext* globalCtx);
void func_808CD940(DemoEffect* this, GlobalContext* globalCtx);
+void func_808CD998(DemoEffect* this, GlobalContext* globalCtx);
void func_808CDBDC(DemoEffect* this, GlobalContext* globalCtx);
void func_808CDCEC(DemoEffect* this, GlobalContext* globalCtx);
void func_808CDD70(DemoEffect* this, GlobalContext* globalCtx);
+void func_808CDDE0(DemoEffect* this, GlobalContext* globalCtx);
+void func_808CDFF8(Actor* thisx, GlobalContext* globalCtx);
+void func_808CE078(Actor* thisx, GlobalContext* globalCtx2);
-#if 0
const ActorInit Demo_Effect_InitVars = {
ACTOR_DEMO_EFFECT,
ACTORCAT_BG,
@@ -32,33 +37,287 @@ const ActorInit Demo_Effect_InitVars = {
(ActorFunc)NULL,
};
-#endif
+void DemoEffect_Init(Actor* thisx, GlobalContext* globalCtx) {
+ static s16 D_808CE2C0[] = {
+ OBJECT_EFC_TW, OBJECT_EFC_TW, OBJECT_EFC_TW, OBJECT_EFC_TW, GAMEPLAY_KEEP,
+ GAMEPLAY_KEEP, GAMEPLAY_KEEP, GAMEPLAY_KEEP, GAMEPLAY_KEEP,
+ };
+ s32 pad;
+ DemoEffect* this = THIS;
+ s32 sp3C = DEMOEFFECT_GET_FF(&this->actor);
+ s32 phi_v1;
+ s32 pad2;
+ Color_RGB8 sp24[] = {
+ { 200, 200, 0 }, { 255, 40, 100 }, { 50, 255, 0 }, { 0, 0, 255 }, { 255, 255, 80 },
+ };
-extern UNK_TYPE D_06000050;
-extern UNK_TYPE D_06000060;
+ if (D_808CE2C0[sp3C] == 1) {
+ phi_v1 = 0;
+ } else {
+ phi_v1 = Object_GetIndex(&globalCtx->objectCtx, D_808CE2C0[sp3C]);
+ }
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Demo_Effect/DemoEffect_Init.s")
+ if (phi_v1 >= 0) {
+ this->unk_164 = phi_v1;
+ }
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Demo_Effect/DemoEffect_Destroy.s")
+ Actor_SetScale(&this->actor, 0.2f);
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Demo_Effect/func_808CD940.s")
+ switch (sp3C) {
+ case 0:
+ case 1:
+ this->actor.flags |= ACTOR_FLAG_2000000;
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Demo_Effect/func_808CD998.s")
+ case 2:
+ case 3:
+ this->unk_174 = func_808CDFF8;
+ this->unk_170 = func_808CD998;
+ this->unk_168[0] = 0;
+ this->unk_168[1] = 100;
+ this->unk_168[2] = 255;
+ SkelCurve_Clear(&this->skelCurve);
+ this->unk_16C = 0;
+ break;
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Demo_Effect/func_808CDAD0.s")
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ this->unk_168[0] = sp24[sp3C - 4].r;
+ this->unk_168[1] = sp24[sp3C - 4].g;
+ this->unk_168[2] = sp24[sp3C - 4].b;
+ Actor_SetScale(&this->actor, 0.0f);
+ this->unk_174 = func_808CE078;
+ this->unk_170 = func_808CDDE0;
+ this->unk_16C = 0;
+ break;
+ }
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Demo_Effect/func_808CDBDC.s")
+ ActorShape_Init(&this->actor.shape, 0.0f, NULL, 0.0f);
+ this->actionFunc = func_808CD940;
+}
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Demo_Effect/func_808CDCEC.s")
+u8 D_808CE2D4[] = {
+ 1, 1, 2, 0, 1, 1, 2, 0, 1, 2, 0, 2, 1, 0, 1, 0, 2, 0, 2, 2, 0,
+};
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Demo_Effect/func_808CDD70.s")
+void DemoEffect_Destroy(Actor* thisx, GlobalContext* globalCtx) {
+ DemoEffect* this = THIS;
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Demo_Effect/func_808CDDE0.s")
+ switch (DEMOEFFECT_GET_FF(&this->actor)) {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ SkelCurve_Destroy(globalCtx, &this->skelCurve);
+ break;
+ }
+}
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Demo_Effect/DemoEffect_Update.s")
+void func_808CD940(DemoEffect* this, GlobalContext* globalCtx) {
+ if (Object_IsLoaded(&globalCtx->objectCtx, this->unk_164)) {
+ this->actor.objBankIndex = this->unk_164;
+ this->actor.draw = this->unk_174;
+ this->actionFunc = this->unk_170;
+ }
+}
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Demo_Effect/func_808CDE78.s")
+void func_808CD998(DemoEffect* this, GlobalContext* globalCtx) {
+ s32 sp34 = DEMOEFFECT_GET_FF(&this->actor);
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Demo_Effect/func_808CDFF8.s")
+ if (SkelCurve_Init(globalCtx, &this->skelCurve, &object_efc_tw_Skel_0012E8, &object_efc_tw_CurveAnim_000050)) {}
-#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Demo_Effect/func_808CE078.s")
+ SkelCurve_SetAnim(&this->skelCurve, &object_efc_tw_CurveAnim_000050, 1.0f, 59.0f, 1.0f, 1.7f);
+ SkelCurve_Update(globalCtx, &this->skelCurve);
+ this->actionFunc = func_808CDCEC;
+
+ switch (sp34) {
+ case 0:
+ Actor_SetScale(&this->actor, 0.16800001f);
+ break;
+
+ case 1:
+ Actor_SetScale(&this->actor, 0.08400001f);
+ break;
+
+ case 2:
+ Actor_SetScale(&this->actor, 0.16800001f);
+ break;
+
+ case 3:
+ Actor_SetScale(&this->actor, 0.28f);
+ break;
+
+ default:
+ Actor_SetScale(&this->actor, 0.014f);
+ break;
+ }
+}
+
+void func_808CDAD0(f32 arg0) {
+ s32 i;
+ Vtx* temp_v0 = Lib_SegmentedToVirtual(object_efc_tw_Vtx_000060);
+ u8 sp24[3];
+
+ sp24[0] = 0;
+ sp24[1] = (s8)(202.0f * arg0);
+ sp24[2] = (s8)(255.0f * arg0);
+
+ for (i = 0; i < ARRAY_COUNT(D_808CE2D4); i++) {
+ if (D_808CE2D4[i] != 0) {
+ temp_v0[i].v.cn[3] = sp24[D_808CE2D4[i]];
+ }
+ }
+}
+
+void func_808CDBDC(DemoEffect* this, GlobalContext* globalCtx) {
+ s32 params = DEMOEFFECT_GET_FF(&this->actor);
+ f32 temp_f0;
+ f32 temp_f12;
+
+ this->unk_16C++;
+ if (this->unk_16C <= 100) {
+ temp_f12 = (100 - this->unk_16C) * 0.01f;
+ temp_f0 = temp_f12 * 0.14f;
+
+ switch (params) {
+ case 0:
+ temp_f0 *= 1.2f;
+ break;
+
+ case 1:
+ temp_f0 *= 0.6f;
+ break;
+
+ case 2:
+ temp_f0 *= 1.2f;
+ break;
+
+ case 3:
+ temp_f0 *= 2.0f;
+ break;
+ }
+
+ this->actor.scale.x = temp_f0;
+ this->actor.scale.z = temp_f0;
+ func_808CDAD0(temp_f12);
+ func_800B8FE8(&this->actor, NA_SE_EV_TIMETRIP_LIGHT - SFX_FLAG);
+ } else {
+ func_808CDAD0(1.0f);
+ Actor_MarkForDeath(&this->actor);
+ }
+}
+
+void func_808CDCEC(DemoEffect* this, GlobalContext* globalCtx) {
+ func_800B8FE8(&this->actor, NA_SE_EV_TIMETRIP_LIGHT - SFX_FLAG);
+
+ if (SkelCurve_Update(globalCtx, &this->skelCurve)) {
+ SkelCurve_SetAnim(&this->skelCurve, &object_efc_tw_CurveAnim_000050, 1.0f, 60.0f, 59.0f, 0.0f);
+ this->actionFunc = func_808CDBDC;
+ this->unk_16C = 0;
+ }
+}
+
+void func_808CDD70(DemoEffect* this, GlobalContext* globalCtx) {
+ Actor_SetScale(&this->actor, this->actor.scale.x - 0.02f);
+
+ this->unk_16C++;
+ if (this->actor.scale.x < 0.02f) {
+ Actor_MarkForDeath(&this->actor);
+ }
+}
+
+void func_808CDDE0(DemoEffect* this, GlobalContext* globalCtx) {
+ Actor_SetScale(&this->actor, (this->actor.scale.x * 0.5f) + 0.2f);
+
+ this->unk_16C++;
+ if (this->unk_16C >= 3) {
+ this->actionFunc = func_808CDD70;
+ }
+}
+
+void DemoEffect_Update(Actor* thisx, GlobalContext* globalCtx) {
+ DemoEffect* this = THIS;
+
+ this->actionFunc(this, globalCtx);
+}
+
+s32 func_808CDE78(GlobalContext* globalCtx, SkelAnimeCurve* skelCuve, s32 limbIndex, Actor* thisx) {
+ s32 pad;
+ DemoEffect* this = THIS;
+ u32 sp4C = globalCtx->gameplayFrames;
+
+ OPEN_DISPS(globalCtx->state.gfxCtx);
+
+ func_8012C2DC(globalCtx->state.gfxCtx);
+
+ gDPSetPrimColor(POLY_XLU_DISP++, 0, 0x80, 170, 255, 255, 255);
+ gDPSetEnvColor(POLY_XLU_DISP++, this->unk_168[0], this->unk_168[1], this->unk_168[2], 255);
+ gSPSegment(POLY_XLU_DISP++, 0x08,
+ Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, (sp4C * 6) % 1024, 255 - ((sp4C * 16) % 256), 0x100, 0x40,
+ 1, (sp4C * 4) % 512, 127 - ((sp4C * 12) % 128), 0x80, 0x20));
+
+ CLOSE_DISPS(globalCtx->state.gfxCtx);
+
+ if (limbIndex == 0) {
+ LimbTransform* transform = skelCuve->transforms;
+
+ transform->scale.x = 0x400;
+ transform->scale.y = 0x400;
+ transform->scale.z = transform->scale.x;
+ }
+
+ return true;
+}
+
+void func_808CDFF8(Actor* thisx, GlobalContext* globalCtx) {
+ GraphicsContext* gfxCtx = globalCtx->state.gfxCtx;
+ DemoEffect* this = THIS;
+
+ OPEN_DISPS(gfxCtx);
+
+ POLY_XLU_DISP = Gfx_CallSetupDL(POLY_XLU_DISP, 25);
+
+ Matrix_Scale(2.0f, 2.0f, 2.0f, MTXMODE_APPLY);
+ SkelCurve_Draw(&this->actor, globalCtx, &this->skelCurve, func_808CDE78, NULL, 1, &this->actor);
+
+ CLOSE_DISPS(gfxCtx);
+}
+
+void func_808CE078(Actor* thisx, GlobalContext* globalCtx2) {
+ GlobalContext* globalCtx = globalCtx2;
+ DemoEffect* this = THIS;
+ s16 sp46 = (this->unk_16C * 0x400) & 0xFFFF;
+
+ OPEN_DISPS(globalCtx->state.gfxCtx);
+
+ func_8012C2DC(globalCtx->state.gfxCtx);
+
+ gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 0x80, 255, 255, 255, 255);
+ gDPSetEnvColor(POLY_XLU_DISP++, this->unk_168[0], this->unk_168[1], this->unk_168[2], 255);
+
+ Matrix_InsertMatrix(&globalCtx->billboardMtxF, MTXMODE_APPLY);
+ Matrix_StatePush();
+ Matrix_InsertZRotation_s(sp46, MTXMODE_APPLY);
+
+ gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
+ gSPDisplayList(POLY_XLU_DISP++, gameplay_keep_DL_023288);
+
+ Matrix_StatePop();
+ Matrix_InsertZRotation_s(sp46 * -1, MTXMODE_APPLY);
+
+ gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
+ gSPDisplayList(POLY_XLU_DISP++, gameplay_keep_DL_023288);
+
+ CLOSE_DISPS(globalCtx->state.gfxCtx);
+
+ D_801F4E32 = 1;
+ D_801F4E38.x = thisx->world.pos.x;
+ D_801F4E38.y = thisx->world.pos.y;
+ D_801F4E38.z = thisx->world.pos.z;
+
+ D_801F4E44 = thisx->scale.x * 60.0f;
+ D_801F4E48 = thisx->scale.x * 50.0f;
+ D_801F4E4C = thisx->scale.x * 250.0f;
+}
diff --git a/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.h b/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.h
index 1943f4387..8216708c5 100644
--- a/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.h
+++ b/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.h
@@ -6,10 +6,20 @@
struct DemoEffect;
typedef void (*DemoEffectActionFunc)(struct DemoEffect*, GlobalContext*);
+typedef void (*DemoEffectUnkFunc)(struct DemoEffect*, GlobalContext*);
+typedef void (*DemoEffectUnkFunc2)(Actor*, GlobalContext*);
+
+#define DEMOEFFECT_GET_FF(thisx) ((thisx)->params & 0xFF)
typedef struct DemoEffect {
/* 0x0000 */ Actor actor;
- /* 0x0144 */ char unk_144[0x34];
+ /* 0x0144 */ SkelAnimeCurve skelCurve;
+ /* 0x0164 */ u8 unk_164;
+ /* 0x0165 */ UNK_TYPE1 unk_165[3];
+ /* 0x0168 */ u8 unk_168[3];
+ /* 0x016C */ s16 unk_16C;
+ /* 0x0170 */ DemoEffectUnkFunc unk_170;
+ /* 0x0174 */ DemoEffectUnkFunc2 unk_174;
/* 0x0178 */ DemoEffectActionFunc actionFunc;
} DemoEffect; // size = 0x17C
diff --git a/src/overlays/actors/ovl_En_Ah/z_en_ah.c b/src/overlays/actors/ovl_En_Ah/z_en_ah.c
index 5f0f7a5b2..732b3e37b 100644
--- a/src/overlays/actors/ovl_En_Ah/z_en_ah.c
+++ b/src/overlays/actors/ovl_En_Ah/z_en_ah.c
@@ -19,9 +19,24 @@ void EnAh_Draw(Actor* thisx, GlobalContext* globalCtx);
void func_80BD36B8(EnAh* this, GlobalContext* globalCtx);
void func_80BD3768(EnAh* this, GlobalContext* globalCtx);
-s32 D_80BD3DB0[] = {
- 0x0A00611D, 0x0C000303, 0x0400010C, 0x00021102, 0x15001700, 0x08003220, 0x03040001,
- 0x05040003, 0x050A0010, 0x120C0003, 0x0D021200, 0x06000105, 0x0E120006, 0x00020505,
+static u8 D_80BD3DB0[] = {
+ /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x21 - 0x04),
+ /* 0x04 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x0B - 0x08),
+ /* 0x08 */ SCHEDULE_CMD_RET_VAL_L(1),
+ /* 0x0B */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x20 - 0x0F),
+ /* 0x0F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 0, 23, 0, 0x1D - 0x15),
+ /* 0x15 */ SCHEDULE_CMD_CHECK_FLAG_S(0x32, 0x20, 0x1C - 0x19),
+ /* 0x19 */ SCHEDULE_CMD_RET_VAL_L(1),
+ /* 0x1C */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x1D */ SCHEDULE_CMD_RET_VAL_L(3),
+ /* 0x20 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x21 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_OMOYA, 0x37 - 0x25),
+ /* 0x25 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x36 - 0x29),
+ /* 0x29 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x30 - 0x2F),
+ /* 0x2F */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x30 */ SCHEDULE_CMD_RET_TIME(18, 0, 6, 0, 2),
+ /* 0x36 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x37 */ SCHEDULE_CMD_RET_NONE(),
};
s32 D_80BD3DE8[] = { 0x0E28FF0C, 0x10000000 };
@@ -361,7 +376,7 @@ s32 func_80BD3320(EnAh* this, GlobalContext* globalCtx, u8 actorCat, s16 actorId
return ret;
}
-s32 func_80BD3374(EnAh* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BD3374(EnAh* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 pad;
Math_Vec3f_Copy(&this->actor.world.pos, &D_80BD3EC4.pos);
@@ -373,7 +388,7 @@ s32 func_80BD3374(EnAh* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return true;
}
-s32 func_80BD33FC(EnAh* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BD33FC(EnAh* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 pad;
Math_Vec3f_Copy(&this->actor.world.pos, &D_80BD3ED8.pos);
@@ -385,7 +400,7 @@ s32 func_80BD33FC(EnAh* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return true;
}
-s32 func_80BD3484(EnAh* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BD3484(EnAh* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret = false;
if (func_80BD3320(this, globalCtx, ACTORCAT_NPC, ACTOR_EN_AN)) {
@@ -404,12 +419,12 @@ s32 func_80BD3484(EnAh* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_80BD3548(EnAh* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BD3548(EnAh* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret;
this->unk_2D8 = 0;
- switch (arg2->unk0) {
+ switch (arg2->result) {
default:
ret = false;
break;
@@ -457,19 +472,18 @@ void func_80BD3658(EnAh* this, GlobalContext* globalCtx) {
}
void func_80BD36B8(EnAh* this, GlobalContext* globalCtx) {
- s32 pad;
- struct_80133038_arg2 sp18;
+ ScheduleResult sp18;
- if (!func_80133038(globalCtx, D_80BD3DB0, &sp18) ||
- ((this->unk_1DC != sp18.unk0) && !func_80BD3548(this, globalCtx, &sp18))) {
+ if (!Schedule_RunScript(globalCtx, D_80BD3DB0, &sp18) ||
+ ((this->unk_1DC != sp18.result) && !func_80BD3548(this, globalCtx, &sp18))) {
this->actor.shape.shadowDraw = NULL;
this->actor.flags &= ~ACTOR_FLAG_1;
- sp18.unk0 = 0;
+ sp18.result = 0;
} else {
this->actor.shape.shadowDraw = ActorShadow_DrawCircle;
this->actor.flags |= ACTOR_FLAG_1;
}
- this->unk_1DC = sp18.unk0;
+ this->unk_1DC = sp18.result;
func_80BD3658(this, globalCtx);
}
diff --git a/src/overlays/actors/ovl_En_Al/z_en_al.c b/src/overlays/actors/ovl_En_Al/z_en_al.c
index 259c52614..149f82d45 100644
--- a/src/overlays/actors/ovl_En_Al/z_en_al.c
+++ b/src/overlays/actors/ovl_En_Al/z_en_al.c
@@ -19,10 +19,22 @@ void EnAl_Draw(Actor* thisx, GlobalContext* globalCtx);
void func_80BDF5E8(EnAl* this, GlobalContext* globalCtx);
void func_80BDF6C4(EnAl* this, GlobalContext* globalCtx);
-s32 D_80BDFC70[] = {
- 0x0C00030D, 0x02120006, 0x0001050E, 0x12000600, 0x02020800, 0x0A002F02, 0x0A000A37,
- 0x23020A37, 0x0B2D0D02, 0x0B2D1400, 0x01050E0B, 0x2D140001, 0x0C000206, 0x0E0A370B,
- 0x2D010E0A, 0x370B2D03, 0x0E0A000A, 0x37010400, 0x01000000,
+static u8 D_80BDFC70[] = {
+ /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x11 - 0x04),
+ /* 0x04 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x0B - 0x0A),
+ /* 0x0A */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x0B */ SCHEDULE_CMD_RET_TIME(18, 0, 6, 0, 2),
+ /* 0x11 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(8, 0, 10, 0, 0x46 - 0x17),
+ /* 0x17 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 0, 10, 55, 0x40 - 0x1D),
+ /* 0x1D */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 55, 11, 45, 0x30 - 0x23),
+ /* 0x23 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 45, 20, 0, 0x2A - 0x29),
+ /* 0x29 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x2A */ SCHEDULE_CMD_RET_TIME(11, 45, 20, 0, 1),
+ /* 0x30 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x3A - 0x34),
+ /* 0x34 */ SCHEDULE_CMD_RET_TIME(10, 55, 11, 45, 1),
+ /* 0x3A */ SCHEDULE_CMD_RET_TIME(10, 55, 11, 45, 3),
+ /* 0x40 */ SCHEDULE_CMD_RET_TIME(10, 0, 10, 55, 1),
+ /* 0x46 */ SCHEDULE_CMD_RET_VAL_L(1),
};
s32 D_80BDFCBC[] = {
@@ -623,7 +635,7 @@ s32 func_80BDF064(EnAl* this, GlobalContext* globalCtx) {
return false;
}
-s32 func_80BDF244(EnAl* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BDF244(EnAl* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret = false;
Actor* sp20 = func_80BDE1A0(this, globalCtx, ACTORCAT_NPC, ACTOR_EN_GM);
Actor* temp_v0 = func_80BDE1A0(this, globalCtx, ACTORCAT_NPC, ACTOR_EN_TOTO);
@@ -638,10 +650,10 @@ s32 func_80BDF244(EnAl* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_80BDF308(EnAl* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BDF308(EnAl* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
SubS_UpdateFlags(&this->unk_4C2, 3, 7);
- switch (arg2->unk0) {
+ switch (arg2->result) {
case 1:
func_80BDE27C(this, 0);
break;
@@ -655,7 +667,7 @@ s32 func_80BDF308(EnAl* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return true;
}
-s32 func_80BDF390(EnAl* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BDF390(EnAl* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret;
this->actor.flags |= ACTOR_FLAG_1;
@@ -664,7 +676,7 @@ s32 func_80BDF390(EnAl* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
this->unk_4C2 = 0;
this->unk_4D4 = 40.0f;
- switch (arg2->unk0) {
+ switch (arg2->result) {
case 3:
ret = func_80BDF244(this, globalCtx, arg2);
break;
@@ -734,20 +746,19 @@ void func_80BDF578(EnAl* this, GlobalContext* globalCtx) {
}
void func_80BDF5E8(EnAl* this, GlobalContext* globalCtx) {
- u32* unk14 = &gSaveContext.save.daySpeed;
- struct_80133038_arg2 sp20;
+ ScheduleResult sp20;
- this->unk_4E0 = REG(15) + *unk14;
- if (!func_80133038(globalCtx, D_80BDFC70, &sp20) ||
- ((this->unk_35C != sp20.unk0) && !func_80BDF390(this, globalCtx, &sp20))) {
+ this->unk_4E0 = REG(15) + ((void)0, gSaveContext.save.daySpeed);
+ if (!Schedule_RunScript(globalCtx, D_80BDFC70, &sp20) ||
+ ((this->unk_35C != sp20.result) && !func_80BDF390(this, globalCtx, &sp20))) {
this->actor.shape.shadowDraw = NULL;
this->actor.flags &= ~ACTOR_FLAG_1;
- sp20.unk0 = 0;
+ sp20.result = 0;
} else {
this->actor.shape.shadowDraw = ActorShadow_DrawCircle;
this->actor.flags |= ACTOR_FLAG_1;
}
- this->unk_35C = sp20.unk0;
+ this->unk_35C = sp20.result;
this->unk_368 = func_80BDE384(this, globalCtx);
func_80BDF578(this, globalCtx);
}
diff --git a/src/overlays/actors/ovl_En_Baba/z_en_baba.c b/src/overlays/actors/ovl_En_Baba/z_en_baba.c
index a2f28a6dd..4d9c7bad3 100644
--- a/src/overlays/actors/ovl_En_Baba/z_en_baba.c
+++ b/src/overlays/actors/ovl_En_Baba/z_en_baba.c
@@ -107,8 +107,16 @@ static DamageTable sDamageTable = {
/* Powder Keg */ DMG_ENTRY(1, 0x0),
};
-s32 D_80BAA488[] = {
- 0x0C000119, 0x0A006E14, 0x02000000, 0x1E080F00, 0x1E030400, 0x01050E00, 0x00001E02, 0x05050000,
+static u8 D_80BAA488[] = {
+ /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(1, 0x1D - 0x04),
+ /* 0x04 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_BACKTOWN, 0x1C - 0x08),
+ /* 0x08 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 0, 30, 0x16 - 0x0E),
+ /* 0x0E */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(0, 30, 0x15 - 0x12),
+ /* 0x12 */ SCHEDULE_CMD_RET_VAL_L(1),
+ /* 0x15 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x16 */ SCHEDULE_CMD_RET_TIME(0, 0, 0, 30, 2),
+ /* 0x1C */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x1D */ SCHEDULE_CMD_RET_NONE(),
};
s32 D_80BAA4A8[] = { -1, -1, 0 };
@@ -305,13 +313,13 @@ void func_80BA8DF4(EnBaba* this, GlobalContext* globalCtx) {
}
}
-s32 func_80BA8F88(EnBaba* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BA8F88(EnBaba* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
u16 sp26 = (u16)(gSaveContext.save.time - 0x3FFC);
u16 temp;
u8 sp23 = ENBABA_GET_3F00(&this->actor);
- if (D_80BAA4A8[arg2->unk0] >= 0) {
- this->unk_410 = SubS_GetAdditionalPath(globalCtx, sp23, D_80BAA4A8[arg2->unk0]);
+ if (D_80BAA4A8[arg2->result] >= 0) {
+ this->unk_410 = SubS_GetAdditionalPath(globalCtx, sp23, D_80BAA4A8[arg2->result]);
}
if (this->unk_410 == NULL) {
@@ -321,13 +329,13 @@ s32 func_80BA8F88(EnBaba* this, GlobalContext* globalCtx, struct_80133038_arg2*
if ((this->unk_434 != 0) && (this->unk_436 >= 0)) {
temp = sp26;
} else {
- temp = arg2->unk4;
+ temp = arg2->time0;
}
- if (arg2->unk8 < temp) {
- this->unk_424 = (temp - arg2->unk8) + 0xFFFF;
+ if (arg2->time1 < temp) {
+ this->unk_424 = (temp - arg2->time1) + 0xFFFF;
} else {
- this->unk_424 = arg2->unk8 - temp;
+ this->unk_424 = arg2->time1 - temp;
}
this->unk_430 = sp26 - temp;
@@ -339,10 +347,10 @@ s32 func_80BA8F88(EnBaba* this, GlobalContext* globalCtx, struct_80133038_arg2*
return true;
}
-s32 func_80BA9110(EnBaba* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BA9110(EnBaba* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret;
- switch (arg2->unk0) {
+ switch (arg2->result) {
default:
ret = false;
break;
@@ -583,21 +591,20 @@ void func_80BA9B24(EnBaba* this, GlobalContext* globalCtx) {
}
void func_80BA9B80(EnBaba* this, GlobalContext* globalCtx) {
- u32* unk14 = &gSaveContext.save.daySpeed;
- struct_80133038_arg2 sp20;
+ ScheduleResult sp20;
- this->unk_436 = REG(15) + *unk14;
+ this->unk_436 = REG(15) + ((void)0, gSaveContext.save.daySpeed);
- if (!func_80133038(globalCtx, D_80BAA488, &sp20) ||
- ((this->unk_434 != sp20.unk0) && !func_80BA9110(this, globalCtx, &sp20))) {
+ if (!Schedule_RunScript(globalCtx, D_80BAA488, &sp20) ||
+ ((this->unk_434 != sp20.result) && !func_80BA9110(this, globalCtx, &sp20))) {
this->unk_40A &= ~0x80;
this->actor.flags &= ~ACTOR_FLAG_1;
- sp20.unk0 = false;
+ sp20.result = false;
} else {
this->unk_40A |= 0x80;
this->actor.flags |= ACTOR_FLAG_1;
}
- this->unk_434 = sp20.unk0;
+ this->unk_434 = sp20.result;
func_80BA93AC(this, globalCtx);
diff --git a/src/overlays/actors/ovl_En_Door/z_en_door.c b/src/overlays/actors/ovl_En_Door/z_en_door.c
index bb1c574e2..fe65bb30d 100644
--- a/src/overlays/actors/ovl_En_Door/z_en_door.c
+++ b/src/overlays/actors/ovl_En_Door/z_en_door.c
@@ -38,104 +38,243 @@ void func_808670F0(EnDoor*, GlobalContext*);
void func_80866A5C(EnDoor*, GlobalContext*);
u8 D_808675D0[] = {
- 0x0C, 0x00, 0x03, 0x0E, 0x02, 0x06, 0x00, 0x17, 0x00, 0x08,
- 0x02, 0x00, 0x00, 0x06, 0x00, 0x02, 0x09, 0x07, 0x05, 0x00,
+ /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x12 - 0x04),
+ /* 0x04 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 23, 0, 0x12 - 0x0A),
+ /* 0x0A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 6, 0, 0x12 - 0x10),
+ /* 0x10 */ SCHEDULE_CMD_RET_VAL_S(7),
+ /* 0x12 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_808675E4[] = {
- 0x0F, 0x09, 0x00, 0x47, 0x0F, 0x0C, 0x00, 0x15, 0x0C, 0x00, 0x01, 0x13, 0x11, 0x00, 0x0F, 0x0D,
- 0x00, 0x0A, 0x0F, 0x0F, 0x00, 0x07, 0x0F, 0x00, 0x00, 0x02, 0x09, 0x09, 0x05, 0x09, 0x08, 0x0C,
- 0x00, 0x02, 0x19, 0x00, 0x1C, 0x08, 0x07, 0x0F, 0x0D, 0x00, 0x02, 0x09, 0x09, 0x05, 0x0F, 0x0D,
- 0x00, 0xEA, 0x0F, 0x11, 0x00, 0xE7, 0x0F, 0x00, 0x00, 0xE2, 0x09, 0x09, 0x0F, 0x0D, 0x00, 0xDC,
- 0x0F, 0x0D, 0x00, 0xD9, 0x0F, 0x12, 0x00, 0x01, 0x05, 0x09, 0x09, 0x09, 0x09, 0x00, 0x00, 0x00,
+ /* 0x00 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(9, 0, 0x4B - 0x04),
+ /* 0x04 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(12, 0, 0x1D - 0x08),
+ /* 0x08 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(1, 0x1F - 0x0C),
+ /* 0x0C */ SCHEDULE_CMD_BRANCH_S(0x0),
+ /* 0x0E */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(13, 0, 0x1C - 0x12),
+ /* 0x12 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(15, 0, 0x1D - 0x16),
+ /* 0x16 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(0, 0, 0x1C - 0x1A),
+ /* 0x1A */ SCHEDULE_CMD_RET_VAL_S(9),
+ /* 0x1C */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x1D */ SCHEDULE_CMD_RET_VAL_S(8),
+ /* 0x1F */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x3C - 0x23),
+ /* 0x23 */ SCHEDULE_CMD_CHECK_FLAG_S(0x1C, 0x08, 0x2E - 0x27),
+ /* 0x27 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(13, 0, 0x2D - 0x2B),
+ /* 0x2B */ SCHEDULE_CMD_RET_VAL_S(9),
+ /* 0x2D */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x2E */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(13, 0, 0x1C - 0x32),
+ /* 0x32 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(17, 0, 0x1D - 0x36),
+ /* 0x36 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(0, 0, 0x1C - 0x3A),
+ /* 0x3A */ SCHEDULE_CMD_RET_VAL_S(9),
+ /* 0x3C */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(13, 0, 0x1C - 0x40),
+ /* 0x40 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(13, 0, 0x1D - 0x44),
+ /* 0x44 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(18, 0, 0x49 - 0x48),
+ /* 0x48 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x49 */ SCHEDULE_CMD_RET_VAL_S(9),
+ /* 0x4B */ SCHEDULE_CMD_RET_VAL_S(9),
};
u8 D_80867634[] = {
- 0x02, 0x06, 0x00, 0x17, 0x00, 0x02, 0x09, 0x1C, 0x05, 0x00, 0x00, 0x00,
+ /* 0x0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 23, 0, 0x8 - 0x6),
+ /* 0x6 */ SCHEDULE_CMD_RET_VAL_S(28),
+ /* 0x8 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_80867640[] = {
- 0x02, 0x15, 0x00, 0x16, 0x00, 0x01, 0x05, 0x09, 0x0B, 0x00, 0x00, 0x00,
+ /* 0x0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 0, 22, 0, 0x7 - 0x6),
+ /* 0x6 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x7 */ SCHEDULE_CMD_RET_VAL_S(11),
};
+
u8 D_8086764C[] = {
- 0x02, 0x16, 0x00, 0x05, 0x00, 0x02, 0x09, 0x0A, 0x05, 0x00, 0x00, 0x00,
+ /* 0x0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(22, 0, 5, 0, 0x8 - 0x6),
+ /* 0x6 */ SCHEDULE_CMD_RET_VAL_S(10),
+ /* 0x8 */ SCHEDULE_CMD_RET_NONE(),
};
+
u8 D_80867658[] = {
- 0x0C, 0x00, 0x02, 0x0F, 0x00, 0x1C, 0x08, 0x02, 0x09, 0x0C, 0x02, 0x0F, 0x0A, 0x16, 0x00,
- 0x02, 0x09, 0x0C, 0x05, 0x0C, 0x00, 0x03, 0x11, 0x0F, 0x0D, 0x00, 0x0D, 0x00, 0x33, 0x08,
- 0x02, 0x09, 0x0C, 0x0F, 0x16, 0x00, 0x02, 0x09, 0x0C, 0x05, 0x09, 0x0C, 0x00, 0x00,
+ /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x13 - 0x04),
+ /* 0x04 */ SCHEDULE_CMD_CHECK_FLAG_S(0x1C, 0x08, 0x0A - 0x08),
+ /* 0x08 */ SCHEDULE_CMD_RET_VAL_S(12),
+ /* 0x0A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 10, 22, 0, 0x12 - 0x10),
+ /* 0x10 */ SCHEDULE_CMD_RET_VAL_S(12),
+ /* 0x12 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x13 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x28 - 0x17),
+ /* 0x17 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(13, 0, 0x28 - 0x1B),
+ /* 0x1B */ SCHEDULE_CMD_CHECK_FLAG_S(0x33, 0x08, 0x21 - 0x1F),
+ /* 0x1F */ SCHEDULE_CMD_RET_VAL_S(12),
+ /* 0x21 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(22, 0, 0x27 - 0x25),
+ /* 0x25 */ SCHEDULE_CMD_RET_VAL_S(12),
+ /* 0x27 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x28 */ SCHEDULE_CMD_RET_VAL_S(12),
};
-u8 D_80867684[] = { 0x05, 0x00, 0x00, 0x00 };
+u8 D_80867684[] = {
+ /* 0x0 */ SCHEDULE_CMD_RET_NONE(),
+};
-u8 D_80867688[] = { 0x0F, 0x16, 0x00, 0x02, 0x09, 0x0F, 0x05, 0x00 };
+u8 D_80867688[] = {
+ /* 0x0 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(22, 0, 0x6 - 0x4),
+ /* 0x4 */ SCHEDULE_CMD_RET_VAL_S(15),
+ /* 0x6 */ SCHEDULE_CMD_RET_NONE(),
+};
-u8 D_80867690[] = { 0x0F, 0x16, 0x00, 0x02, 0x09, 0x10, 0x05, 0x00 };
+u8 D_80867690[] = {
+ /* 0x0 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(22, 0, 0x6 - 0x4),
+ /* 0x4 */ SCHEDULE_CMD_RET_VAL_S(16),
+ /* 0x6 */ SCHEDULE_CMD_RET_NONE(),
+};
-u8 D_80867698[] = { 0x0F, 0x16, 0x00, 0x02, 0x09, 0x11, 0x05, 0x00 };
+u8 D_80867698[] = {
+ /* 0x0 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(22, 0, 0x6 - 0x4),
+ /* 0x4 */ SCHEDULE_CMD_RET_VAL_S(17),
+ /* 0x6 */ SCHEDULE_CMD_RET_NONE(),
+};
u8 D_808676A0[] = {
- 0x02, 0x0A, 0x00, 0x15, 0x00, 0x0F, 0x02, 0x16, 0x00, 0x05, 0x00, 0x02,
- 0x09, 0x12, 0x08, 0x02, 0x02, 0x09, 0x22, 0x09, 0x21, 0x05, 0x00, 0x00,
+ /* 0x00 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 0, 21, 0, 0x15 - 0x06),
+ /* 0x06 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(22, 0, 5, 0, 0x0E - 0x0C),
+ /* 0x0C */ SCHEDULE_CMD_RET_VAL_S(18),
+ /* 0x0E */ SCHEDULE_CMD_CHECK_MISC_S(SCHEDULE_CHECK_MISC_MASK_ROMANI, 0x13 - 0x11),
+ /* 0x11 */ SCHEDULE_CMD_RET_VAL_S(34),
+ /* 0x13 */ SCHEDULE_CMD_RET_VAL_S(33),
+ /* 0x15 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_808676B8[] = {
- 0x08, 0x00, 0x14, 0x0C, 0x00, 0x03, 0x07, 0x0F, 0x08, 0x00, 0x01, 0x05,
- 0x09, 0x13, 0x02, 0x08, 0x00, 0x14, 0x1E, 0x02, 0x09, 0x13, 0x05, 0x05,
+ /* 0x00 */ SCHEDULE_CMD_CHECK_MISC_S(SCHEDULE_CHECK_MISC_ROOM_KEY, 0x17 - 0x03),
+ /* 0x03 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x0E - 0x07),
+ /* 0x07 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(8, 0, 0x0C - 0x0B),
+ /* 0x0B */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x0C */ SCHEDULE_CMD_RET_VAL_S(19),
+ /* 0x0E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(8, 0, 20, 30, 0x16 - 0x14),
+ /* 0x14 */ SCHEDULE_CMD_RET_VAL_S(19),
+ /* 0x16 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x17 */ SCHEDULE_CMD_RET_NONE(),
};
-u8 D_808676D0[] = { 0x05, 0x00, 0x00, 0x00 };
+u8 D_808676D0[] = {
+ /* 0x0 */ SCHEDULE_CMD_RET_NONE(),
+};
-u8 D_808676D4[] = { 0x05, 0x00, 0x00, 0x00 };
+u8 D_808676D4[] = {
+ /* 0x0 */ SCHEDULE_CMD_RET_NONE(),
+};
-u8 D_808676D8[] = { 0x0C, 0x00, 0x03, 0x05, 0x0F, 0x12, 0x00, 0x01, 0x05, 0x09, 0x14, 0x00 };
+u8 D_808676D8[] = {
+ /* 0x0 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x9 - 0x4),
+ /* 0x4 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(18, 0, 0x9 - 0x8),
+ /* 0x8 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x9 */ SCHEDULE_CMD_RET_VAL_S(20),
+};
-u8 D_808676E4[] = { 0x08, 0x00, 0x02, 0x09, 0x16, 0x05, 0x00, 0x00 };
+u8 D_808676E4[] = {
+ /* 0x0 */ SCHEDULE_CMD_CHECK_MISC_S(SCHEDULE_CHECK_MISC_ROOM_KEY, 0x5 - 0x3),
+ /* 0x3 */ SCHEDULE_CMD_RET_VAL_S(22),
+ /* 0x5 */ SCHEDULE_CMD_RET_NONE(),
+};
-u8 D_808676EC[] = { 0x05, 0x00, 0x00, 0x00 };
+u8 D_808676EC[] = {
+ /* 0x0 */ SCHEDULE_CMD_RET_NONE(),
+};
u8 D_808676F0[] = {
- 0x0C, 0x00, 0x03, 0x05, 0x0F, 0x0A, 0x00, 0x07, 0x05, 0x02,
- 0x0A, 0x00, 0x14, 0x00, 0xF9, 0x09, 0x15, 0x00, 0x00, 0x00,
+ /* 0x0 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x9 - 0x4),
+ /* 0x4 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(10, 0, 0xF - 0x8),
+ /* 0x8 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x9 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 0, 20, 0, 0x8 - 0xF),
+ /* 0xF */ SCHEDULE_CMD_RET_VAL_S(21),
};
-u8 D_80867704[] = { 0x05, 0x00, 0x00, 0x00 };
-u8 D_80867708[] = { 0x05, 0x00, 0x00, 0x00 };
-u8 D_8086770C[] = { 0x05, 0x00, 0x00, 0x00 };
-u8 D_80867710[] = { 0x05, 0x00, 0x00, 0x00 };
+u8 D_80867704[] = {
+ /* 0x0 */ SCHEDULE_CMD_RET_NONE(),
+};
-u8 D_80867714[] = { 0x0F, 0x14, 0x00, 0x02, 0x09, 0x17, 0x05, 0x00 };
+u8 D_80867708[] = {
+ /* 0x0 */ SCHEDULE_CMD_RET_NONE(),
+};
+
+u8 D_8086770C[] = {
+ /* 0x0 */ SCHEDULE_CMD_RET_NONE(),
+};
+
+u8 D_80867710[] = {
+ /* 0x0 */ SCHEDULE_CMD_RET_NONE(),
+};
+
+u8 D_80867714[] = {
+ /* 0x0 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(20, 0, 0x6 - 0x4),
+ /* 0x4 */ SCHEDULE_CMD_RET_VAL_S(23),
+ /* 0x6 */ SCHEDULE_CMD_RET_NONE(),
+};
u8 D_8086771C[] = {
- 0x0C, 0x00, 0x01, 0x07, 0x0F, 0x02, 0x1E, 0x02, 0x09, 0x18, 0x05, 0x0C,
- 0x00, 0x03, 0xFB, 0x0F, 0x14, 0x00, 0xF7, 0x09, 0x0C, 0x00, 0x00, 0x00,
+ /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(1, 0x0B - 0x04),
+ /* 0x04 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(2, 30, 0x0A - 0x08),
+ /* 0x08 */ SCHEDULE_CMD_RET_VAL_S(24),
+ /* 0x0A */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x0B */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x0A - 0x0F),
+ /* 0x0F */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(20, 0, 0x0A - 0x13),
+ /* 0x13 */ SCHEDULE_CMD_RET_VAL_S(12),
};
-u8 D_80867734[] = { 0x0F, 0x14, 0x00, 0x02, 0x09, 0x19, 0x05, 0x00 };
+u8 D_80867734[] = {
+ /* 0x0 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(20, 0, 0x6 - 0x4),
+ /* 0x4 */ SCHEDULE_CMD_RET_VAL_S(25),
+ /* 0x6 */ SCHEDULE_CMD_RET_NONE(),
+};
-u8 D_8086773C[] = { 0x0F, 0x14, 0x00, 0x02, 0x09, 0x1A, 0x05, 0x00 };
+u8 D_8086773C[] = {
+ /* 0x0 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(20, 0, 0x6 - 0x4),
+ /* 0x4 */ SCHEDULE_CMD_RET_VAL_S(26),
+ /* 0x6 */ SCHEDULE_CMD_RET_NONE(),
+};
u8 D_80867744[] = {
- 0x0C, 0x00, 0x02, 0x04, 0x00, 0x63, 0x80, 0x06, 0x0F, 0x14, 0x00, 0x08,
- 0x09, 0x1B, 0x0F, 0x12, 0x00, 0x02, 0x09, 0x1B, 0x05, 0x00, 0x00, 0x00,
+ /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x08 - 0x04),
+ /* 0x04 */ SCHEDULE_CMD_CHECK_FLAG_S(0x63, 0x80, 0x0E - 0x08),
+ /* 0x08 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(20, 0, 0x14 - 0x0C),
+ /* 0x0C */ SCHEDULE_CMD_RET_VAL_S(27),
+ /* 0x0E */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(18, 0, 0x14 - 0x12),
+ /* 0x12 */ SCHEDULE_CMD_RET_VAL_S(27),
+ /* 0x14 */ SCHEDULE_CMD_RET_NONE(),
};
u8 D_8086775C[] = {
- 0x00, 0x34, 0x20, 0x17, 0x00, 0x4B, 0x20, 0x13, 0x00, 0x0E, 0x04, 0x02, 0x09, 0x1D,
- 0x00, 0x3B, 0x01, 0x08, 0x00, 0x3D, 0x02, 0x02, 0x09, 0x1E, 0x09, 0x1F, 0x05, 0x05,
+ /* 0x00 */ SCHEDULE_CMD_CHECK_FLAG_S(0x34, 0x20, 0x1B - 0x04),
+ /* 0x04 */ SCHEDULE_CMD_CHECK_FLAG_S(0x4B, 0x20, 0x1B - 0x08),
+ /* 0x08 */ SCHEDULE_CMD_CHECK_FLAG_S(0x0E, 0x04, 0x0E - 0x0C),
+ /* 0x0C */ SCHEDULE_CMD_RET_VAL_S(29),
+ /* 0x0E */ SCHEDULE_CMD_CHECK_FLAG_S(0x3B, 0x01, 0x1A - 0x12),
+ /* 0x12 */ SCHEDULE_CMD_CHECK_FLAG_S(0x3D, 0x02, 0x18 - 0x16),
+ /* 0x16 */ SCHEDULE_CMD_RET_VAL_S(30),
+ /* 0x18 */ SCHEDULE_CMD_RET_VAL_S(31),
+ /* 0x1A */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x1B */ SCHEDULE_CMD_RET_NONE(),
};
-u8 D_80867778[] = { 0x09, 0x20, 0x00, 0x00 };
-u8 D_8086777C[] = { 0x05, 0x00, 0x00, 0x00 };
-u8 D_80867780[] = { 0x05, 0x00, 0x00, 0x00 };
-u8 D_80867784[] = { 0x0F, 0x16, 0x00, 0x02, 0x09, 0x23, 0x05, 0x00 };
+u8 D_80867778[] = {
+ /* 0x0 */ SCHEDULE_CMD_RET_VAL_S(32),
+};
-// void* seems to keep the compiler happy.
-void* D_8086778C[] = {
- &D_808675D0, &D_808675E4, &D_80867634, &D_80867640, &D_8086764C, &D_80867658, &D_80867684, &D_80867688,
- &D_80867690, &D_80867698, &D_808676A0, &D_808676B8, &D_808676D0, &D_808676D4, &D_808676D8, &D_808676E4,
- &D_808676EC, &D_808676F0, &D_80867704, &D_80867708, &D_8086770C, &D_80867710, &D_80867714, &D_8086771C,
- &D_80867734, &D_8086773C, &D_80867744, &D_8086775C, &D_80867778, &D_8086777C, &D_80867780, &D_80867784,
+u8 D_8086777C[] = {
+ /* 0x0 */ SCHEDULE_CMD_RET_NONE(),
+};
+
+u8 D_80867780[] = {
+ /* 0x0 */ SCHEDULE_CMD_RET_NONE(),
+};
+
+u8 D_80867784[] = {
+ /* 0x0 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(22, 0, 0x6 - 0x4),
+ /* 0x4 */ SCHEDULE_CMD_RET_VAL_S(35),
+ /* 0x6 */ SCHEDULE_CMD_RET_NONE(),
+};
+
+u8* D_8086778C[] = {
+ D_808675D0, D_808675E4, D_80867634, D_80867640, D_8086764C, D_80867658, D_80867684, D_80867688,
+ D_80867690, D_80867698, D_808676A0, D_808676B8, D_808676D0, D_808676D4, D_808676D8, D_808676E4,
+ D_808676EC, D_808676F0, D_80867704, D_80867708, D_8086770C, D_80867710, D_80867714, D_8086771C,
+ D_80867734, D_8086773C, D_80867744, D_8086775C, D_80867778, D_8086777C, D_80867780, D_80867784,
};
const ActorInit En_Door_InitVars = {
@@ -336,7 +475,6 @@ void func_80866B20(EnDoor* this, GlobalContext* globalCtx) {
s32 temp_a1_2;
s32 temp_t0;
u8 temp_a1;
- s32 pad;
if (Actor_ProcessTalkRequest(&this->dyna.actor, &globalCtx->state) && (this->dyna.actor.textId == 0x1821)) {
D_80867BC0[0] = 1;
@@ -396,10 +534,10 @@ void func_80866B20(EnDoor* this, GlobalContext* globalCtx) {
this->dyna.actor.textId = baseTextId + textIdOffset;
}
} else if ((this->unk_1A4 == 5) && (playerPosRelToDoor.z > 0.0f)) {
- struct_80133038_arg2 sp30;
+ ScheduleResult sp30;
- if (func_80133038(globalCtx, D_8086778C[this->switchFlag], &sp30) != 0) {
- this->dyna.actor.textId = sp30.unk0 + 0x1800;
+ if (Schedule_RunScript(globalCtx, D_8086778C[this->switchFlag], &sp30) != 0) {
+ this->dyna.actor.textId = sp30.result + 0x1800;
player->doorType = ((this->dyna.actor.textId == 0x1821) && (D_80867BC0[0] != 0)) ? 5 : -1;
}
diff --git a/src/overlays/actors/ovl_En_Gm/z_en_gm.c b/src/overlays/actors/ovl_En_Gm/z_en_gm.c
index 0c80ce319..e598fe78f 100644
--- a/src/overlays/actors/ovl_En_Gm/z_en_gm.c
+++ b/src/overlays/actors/ovl_En_Gm/z_en_gm.c
@@ -20,21 +20,102 @@ void EnGm_Draw(Actor* thisx, GlobalContext* globalCtx);
void func_80950CDC(EnGm* this, GlobalContext* globalCtx);
void func_80950DB8(EnGm* this, GlobalContext* globalCtx);
-static u32 D_80951820[] = {
- 0x0D000101, 0x360A0061, 0x25020600, 0x09001902, 0x0900090A, 0x0D02090A, 0x090F0105, 0x0E090A09, 0x0F0F0E09,
- 0x00090A18, 0x0E060009, 0x00060A00, 0x6C490209, 0x0A090F3D, 0x02090F0A, 0x0031020A, 0x000A0525, 0x020C0F0C,
- 0x1419020C, 0x140C320D, 0x020C320C, 0x3701050E, 0x0C320C37, 0x0C0E0C14, 0x0C32160E, 0x0C0F0C14, 0x0B0E0A00,
- 0x0A050A0E, 0x090F0A00, 0x150E090A, 0x090F090B, 0x00120085, 0x020A000A, 0x0579020A, 0x050A0A6D, 0x020A0A0A,
- 0x1E61020A, 0x1E0A2855, 0x020A280A, 0x2D49020A, 0x2D0A373D, 0x020A370B, 0x2D31020B, 0x2D0B3725, 0x020B370C,
- 0x0019020C, 0x000C0F0D, 0x020C0F0C, 0x1401050E, 0x0C0F0C14, 0x110E0C00, 0x0C0F1D0E, 0x0B370C00, 0x130E0B2D,
- 0x0B371C0E, 0x0A370B2D, 0x020E0A2D, 0x0A371B0E, 0x0A280A2D, 0x120E0A1E, 0x0A281A0E, 0x0A0A0A1E, 0x010E0A05,
- 0x0A0A190E, 0x0A000A05, 0x100A0015, 0x31020C37, 0x0D002502, 0x0D000D19, 0x19020D19, 0x15050D02, 0x15370505,
- 0x01050E15, 0x37050505, 0x0E0D1915, 0x05030E0D, 0x000D191E, 0x0E0C370D, 0x0014050D, 0x000200AB, 0x01320100,
- 0x880A0061, 0x31020600, 0x12002502, 0x12001500, 0x19021500, 0x150A0D02, 0x150A150F, 0x01050E15, 0x0A150F0F,
- 0x0E150015, 0x0A180E12, 0x00150006, 0x0E060012, 0x00070A00, 0x6C250215, 0x0A150F19, 0x02150F15, 0x190D0215,
- 0x19151E01, 0x050E1519, 0x151E0E0E, 0x150F1519, 0x170E150A, 0x150F0D0A, 0x00152502, 0x151E152D, 0x1902152D,
- 0x160A0D02, 0x160A0600, 0x01050E16, 0x0A060005, 0x0E152D16, 0x0A1E0E15, 0x1E152D14, 0x050A0061, 0x19020600,
- 0x12000D02, 0x12000600, 0x01050E00, 0x00000008, 0x0E060012, 0x00070505,
+static u8 D_80951820[] = {
+ /* 0x000 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(1, 0x13B - 0x005),
+ /* 0x005 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x02E - 0x009),
+ /* 0x009 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 9, 0, 0x028 - 0x00F),
+ /* 0x00F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 0, 9, 10, 0x022 - 0x015),
+ /* 0x015 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 10, 9, 15, 0x01C - 0x01B),
+ /* 0x01B */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x01C */ SCHEDULE_CMD_RET_TIME(9, 10, 9, 15, 15),
+ /* 0x022 */ SCHEDULE_CMD_RET_TIME(9, 0, 9, 10, 24),
+ /* 0x028 */ SCHEDULE_CMD_RET_TIME(6, 0, 9, 0, 6),
+ /* 0x02E */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x07B - 0x032),
+ /* 0x032 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 10, 9, 15, 0x075 - 0x038),
+ /* 0x038 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 15, 10, 0, 0x06F - 0x03E),
+ /* 0x03E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 0, 10, 5, 0x069 - 0x044),
+ /* 0x044 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 15, 12, 20, 0x063 - 0x04A),
+ /* 0x04A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 20, 12, 50, 0x05D - 0x050),
+ /* 0x050 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 50, 12, 55, 0x057 - 0x056),
+ /* 0x056 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x057 */ SCHEDULE_CMD_RET_TIME(12, 50, 12, 55, 12),
+ /* 0x05D */ SCHEDULE_CMD_RET_TIME(12, 20, 12, 50, 22),
+ /* 0x063 */ SCHEDULE_CMD_RET_TIME(12, 15, 12, 20, 11),
+ /* 0x069 */ SCHEDULE_CMD_RET_TIME(10, 0, 10, 5, 10),
+ /* 0x06F */ SCHEDULE_CMD_RET_TIME(9, 15, 10, 0, 21),
+ /* 0x075 */ SCHEDULE_CMD_RET_TIME(9, 10, 9, 15, 9),
+ /* 0x07B */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_L(SCENE_SONCHONOIE, 0x105 - 0x080),
+ /* 0x080 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 0, 10, 5, 0x0FF - 0x086),
+ /* 0x086 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 5, 10, 10, 0x0F9 - 0x08C),
+ /* 0x08C */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 10, 10, 30, 0x0F3 - 0x092),
+ /* 0x092 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 30, 10, 40, 0x0ED - 0x098),
+ /* 0x098 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 40, 10, 45, 0x0E7 - 0x09E),
+ /* 0x09E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 45, 10, 55, 0x0E1 - 0x0A4),
+ /* 0x0A4 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 55, 11, 45, 0x0DB - 0x0AA),
+ /* 0x0AA */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 45, 11, 55, 0x0D5 - 0x0B0),
+ /* 0x0B0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 55, 12, 0, 0x0CF - 0x0B6),
+ /* 0x0B6 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 0, 12, 15, 0x0C9 - 0x0BC),
+ /* 0x0BC */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 15, 12, 20, 0x0C3 - 0x0C2),
+ /* 0x0C2 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x0C3 */ SCHEDULE_CMD_RET_TIME(12, 15, 12, 20, 17),
+ /* 0x0C9 */ SCHEDULE_CMD_RET_TIME(12, 0, 12, 15, 29),
+ /* 0x0CF */ SCHEDULE_CMD_RET_TIME(11, 55, 12, 0, 19),
+ /* 0x0D5 */ SCHEDULE_CMD_RET_TIME(11, 45, 11, 55, 28),
+ /* 0x0DB */ SCHEDULE_CMD_RET_TIME(10, 55, 11, 45, 2),
+ /* 0x0E1 */ SCHEDULE_CMD_RET_TIME(10, 45, 10, 55, 27),
+ /* 0x0E7 */ SCHEDULE_CMD_RET_TIME(10, 40, 10, 45, 18),
+ /* 0x0ED */ SCHEDULE_CMD_RET_TIME(10, 30, 10, 40, 26),
+ /* 0x0F3 */ SCHEDULE_CMD_RET_TIME(10, 10, 10, 30, 1),
+ /* 0x0F9 */ SCHEDULE_CMD_RET_TIME(10, 5, 10, 10, 25),
+ /* 0x0FF */ SCHEDULE_CMD_RET_TIME(10, 0, 10, 5, 16),
+ /* 0x105 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_MILK_BAR, 0x13A - 0x109),
+ /* 0x109 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 55, 13, 0, 0x134 - 0x10F),
+ /* 0x10F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 0, 13, 25, 0x12E - 0x115),
+ /* 0x115 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 25, 21, 5, 0x128 - 0x11B),
+ /* 0x11B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 55, 5, 5, 0x122 - 0x121),
+ /* 0x121 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x122 */ SCHEDULE_CMD_RET_TIME(21, 55, 5, 5, 5),
+ /* 0x128 */ SCHEDULE_CMD_RET_TIME(13, 25, 21, 5, 3),
+ /* 0x12E */ SCHEDULE_CMD_RET_TIME(13, 0, 13, 25, 30),
+ /* 0x134 */ SCHEDULE_CMD_RET_TIME(12, 55, 13, 0, 20),
+ /* 0x13A */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x13B */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(2, 0x1EB - 0x140),
+ /* 0x140 */ SCHEDULE_CMD_CHECK_FLAG_L(0x32, 0x01, 0x1CD - 0x145),
+ /* 0x145 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x17A - 0x149),
+ /* 0x149 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 18, 0, 0x174 - 0x14F),
+ /* 0x14F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 21, 0, 0x16E - 0x155),
+ /* 0x155 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 0, 21, 10, 0x168 - 0x15B),
+ /* 0x15B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 10, 21, 15, 0x162 - 0x161),
+ /* 0x161 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x162 */ SCHEDULE_CMD_RET_TIME(21, 10, 21, 15, 15),
+ /* 0x168 */ SCHEDULE_CMD_RET_TIME(21, 0, 21, 10, 24),
+ /* 0x16E */ SCHEDULE_CMD_RET_TIME(18, 0, 21, 0, 6),
+ /* 0x174 */ SCHEDULE_CMD_RET_TIME(6, 0, 18, 0, 7),
+ /* 0x17A */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x1A3 - 0x17E),
+ /* 0x17E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 10, 21, 15, 0x19D - 0x184),
+ /* 0x184 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 15, 21, 25, 0x197 - 0x18A),
+ /* 0x18A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 25, 21, 30, 0x191 - 0x190),
+ /* 0x190 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x191 */ SCHEDULE_CMD_RET_TIME(21, 25, 21, 30, 14),
+ /* 0x197 */ SCHEDULE_CMD_RET_TIME(21, 15, 21, 25, 23),
+ /* 0x19D */ SCHEDULE_CMD_RET_TIME(21, 10, 21, 15, 13),
+ /* 0x1A3 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_MILK_BAR, 0x1CC - 0x1A7),
+ /* 0x1A7 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 30, 21, 45, 0x1C6 - 0x1AD),
+ /* 0x1AD */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 45, 22, 10, 0x1C0 - 0x1B3),
+ /* 0x1B3 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(22, 10, 6, 0, 0x1BA - 0x1B9),
+ /* 0x1B9 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x1BA */ SCHEDULE_CMD_RET_TIME(22, 10, 6, 0, 5),
+ /* 0x1C0 */ SCHEDULE_CMD_RET_TIME(21, 45, 22, 10, 30),
+ /* 0x1C6 */ SCHEDULE_CMD_RET_TIME(21, 30, 21, 45, 20),
+ /* 0x1CC */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x1CD */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x1EA - 0x1D1),
+ /* 0x1D1 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 18, 0, 0x1E4 - 0x1D7),
+ /* 0x1D7 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x1DE - 0x1DD),
+ /* 0x1DD */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x1DE */ SCHEDULE_CMD_RET_TIME(0, 0, 0, 0, 8),
+ /* 0x1E4 */ SCHEDULE_CMD_RET_TIME(6, 0, 18, 0, 7),
+ /* 0x1EA */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x1EB */ SCHEDULE_CMD_RET_NONE(),
};
static s32 D_80951A0C[] = {
@@ -889,7 +970,7 @@ s32 func_8094F53C(EnGm* this, GlobalContext* globalCtx) {
return false;
}
-s32 func_8094F7D0(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2, u8 arg3, s16 arg4) {
+s32 func_8094F7D0(EnGm* this, GlobalContext* globalCtx, ScheduleResult* arg2, u8 arg3, s16 arg4) {
u8 sp4F = ENGM_GET_FF(&this->actor);
Vec3s* sp48;
Vec3f sp3C;
@@ -901,8 +982,8 @@ s32 func_8094F7D0(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
this->unk_234 = NULL;
actor = func_8094DEE0(this, globalCtx, arg3, arg4);
- if (D_80951A0C[arg2->unk0] >= 0) {
- this->unk_234 = SubS_GetAdditionalPath(globalCtx, sp4F, D_80951A0C[arg2->unk0]);
+ if (D_80951A0C[arg2->result] >= 0) {
+ this->unk_234 = SubS_GetAdditionalPath(globalCtx, sp4F, D_80951A0C[arg2->result]);
}
if ((actor != NULL) && (actor->update != NULL)) {
@@ -919,8 +1000,8 @@ s32 func_8094F7D0(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_8094F904(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
- u16 sp56 = gSaveContext.save.time - 0x3FFC;
+s32 func_8094F904(EnGm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
+ u16 sp56 = SCHEDULE_TIME_NOW;
u8 sp55 = ENGM_GET_FF(&this->actor);
EnDoor* door;
Vec3s* sp4C;
@@ -930,10 +1011,10 @@ s32 func_8094F904(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
s32 ret = false;
this->unk_234 = NULL;
- door = func_8094DF90(globalCtx, arg2->unk0);
+ door = func_8094DF90(globalCtx, arg2->result);
- if (D_80951A0C[arg2->unk0] >= 0) {
- this->unk_234 = SubS_GetAdditionalPath(globalCtx, sp55, D_80951A0C[arg2->unk0]);
+ if (D_80951A0C[arg2->result] >= 0) {
+ this->unk_234 = SubS_GetAdditionalPath(globalCtx, sp55, D_80951A0C[arg2->result]);
}
if ((door != NULL) && (door->dyna.actor.update != NULL)) {
@@ -952,8 +1033,8 @@ s32 func_8094F904(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
this->unk_261 = 75;
}
- this->unk_3B8 = arg2->unk8 - arg2->unk4;
- this->unk_3BA = sp56 - arg2->unk4;
+ this->unk_3B8 = arg2->time1 - arg2->time0;
+ this->unk_3BA = sp56 - arg2->time0;
this->actor.flags &= ~ACTOR_FLAG_1;
this->unk_3A4 |= 0x100;
this->unk_3A4 |= 0x200;
@@ -965,16 +1046,16 @@ s32 func_8094F904(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_8094FAC4(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
- u16 sp2E = gSaveContext.save.time - 0x3FFC;
+s32 func_8094FAC4(EnGm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
+ u16 sp2E = SCHEDULE_TIME_NOW;
u16 phi_v1;
u8 sp2B = ENGM_GET_FF(&this->actor);
s32 pad;
s32 ret = false;
this->unk_234 = NULL;
- if (D_80951A0C[arg2->unk0] >= 0) {
- this->unk_234 = SubS_GetAdditionalPath(globalCtx, sp2B, D_80951A0C[arg2->unk0]);
+ if (D_80951A0C[arg2->result] >= 0) {
+ this->unk_234 = SubS_GetAdditionalPath(globalCtx, sp2B, D_80951A0C[arg2->result]);
}
if ((this->unk_234 != NULL) && (this->unk_234->count < 3)) {
@@ -985,13 +1066,13 @@ s32 func_8094FAC4(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
if ((this->unk_258 < 9) && (this->unk_258 != 0) && (this->unk_3C4 >= 0)) {
phi_v1 = sp2E;
} else {
- phi_v1 = arg2->unk4;
+ phi_v1 = arg2->time0;
}
- if (arg2->unk8 < phi_v1) {
- this->unk_248 = (phi_v1 - arg2->unk8) + 0xFFFF;
+ if (arg2->time1 < phi_v1) {
+ this->unk_248 = (phi_v1 - arg2->time1) + 0xFFFF;
} else {
- this->unk_248 = arg2->unk8 - phi_v1;
+ this->unk_248 = arg2->time1 - phi_v1;
}
this->unk_254 = sp2E - phi_v1;
@@ -1010,7 +1091,7 @@ s32 func_8094FAC4(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_8094FCC4(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_8094FCC4(EnGm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
static Vec3f D_80951D90 = { 64.0f, 0.0f, -122.0f };
s32 ret = false;
@@ -1030,7 +1111,7 @@ s32 func_8094FCC4(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_8094FD88(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_8094FD88(EnGm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret = false;
if (func_8094F7D0(this, globalCtx, arg2, ACTORCAT_NPC, ACTOR_EN_RECEPGIRL)) {
@@ -1043,7 +1124,7 @@ s32 func_8094FD88(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_8094FE10(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_8094FE10(EnGm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret = false;
Actor* al;
@@ -1064,7 +1145,7 @@ s32 func_8094FE10(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_8094FF04(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_8094FF04(EnGm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
static Vec3f D_80951D9C = { 64.0f, 0.0f, -122.0f };
u8 sp4F = ENGM_GET_FF(&this->actor);
Vec3s* sp48;
@@ -1075,8 +1156,8 @@ s32 func_8094FF04(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
this->unk_234 = NULL;
- if (D_80951A0C[arg2->unk0] >= 0) {
- this->unk_234 = SubS_GetAdditionalPath(globalCtx, sp4F, D_80951A0C[arg2->unk0]);
+ if (D_80951A0C[arg2->result] >= 0) {
+ this->unk_234 = SubS_GetAdditionalPath(globalCtx, sp4F, D_80951A0C[arg2->result]);
}
if (this->unk_234 != NULL) {
@@ -1106,7 +1187,7 @@ s32 func_8094FF04(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_80950088(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80950088(EnGm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
static Vec3f D_80951DA8 = { 278.0f, 0.0f, 223.0f };
static Vec3s D_80951DB4 = { 0x0000, 0xC000, 0x0000 };
s32 pad;
@@ -1121,7 +1202,7 @@ s32 func_80950088(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return true;
}
-s32 func_80950120(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80950120(EnGm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
static Vec3f D_80951DBC = { -525.0f, 214.0f, 515.0f };
static Vec3s D_80951DC8 = { 0x0000, 0x38E0, 0x0000 };
s32 pad;
@@ -1136,7 +1217,7 @@ s32 func_80950120(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return true;
}
-s32 func_809501B8(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_809501B8(EnGm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
static Vec3f D_80951DD0 = { -334.0f, 225.0f, 903.0f };
static Vec3s D_80951DDC = { 0x0000, 0x7FFF, 0x0000 };
s32 pad;
@@ -1157,7 +1238,7 @@ s32 func_809501B8(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return true;
}
-s32 func_80950280(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80950280(EnGm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 phi_v1;
this->actor.flags |= ACTOR_FLAG_1;
@@ -1168,7 +1249,7 @@ s32 func_80950280(EnGm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
this->unk_3CC = 8;
this->unk_3B4 = 40.0f;
- switch (arg2->unk0) {
+ switch (arg2->result) {
case 1:
phi_v1 = func_8094FD88(this, globalCtx, arg2);
break;
@@ -1493,21 +1574,20 @@ void func_80950C24(EnGm* this, GlobalContext* globalCtx) {
}
void func_80950CDC(EnGm* this, GlobalContext* globalCtx) {
- u32* unk_14 = &gSaveContext.save.daySpeed;
- struct_80133038_arg2 sp20;
+ ScheduleResult sp20;
- this->unk_3C4 = REG(15) + *unk_14;
+ this->unk_3C4 = REG(15) + ((void)0, gSaveContext.save.daySpeed);
- if (!func_80133038(globalCtx, (void*)&D_80951820, &sp20) ||
- ((this->unk_258 != sp20.unk0) && !func_80950280(this, globalCtx, &sp20))) {
+ if (!Schedule_RunScript(globalCtx, D_80951820, &sp20) ||
+ ((this->unk_258 != sp20.result) && !func_80950280(this, globalCtx, &sp20))) {
this->actor.shape.shadowDraw = NULL;
this->actor.flags &= ~ACTOR_FLAG_1;
- sp20.unk0 = 0;
+ sp20.result = 0;
} else {
this->actor.shape.shadowDraw = ActorShadow_DrawCircle;
this->actor.flags |= ACTOR_FLAG_1;
}
- this->unk_258 = sp20.unk0;
+ this->unk_258 = sp20.result;
this->unk_268 = func_8094F074(this, globalCtx);
func_80950C24(this, globalCtx);
}
diff --git a/src/overlays/actors/ovl_En_Ig/z_en_ig.c b/src/overlays/actors/ovl_En_Ig/z_en_ig.c
index a96b35523..bbb706326 100644
--- a/src/overlays/actors/ovl_En_Ig/z_en_ig.c
+++ b/src/overlays/actors/ovl_En_Ig/z_en_ig.c
@@ -20,13 +20,44 @@ void EnIg_Draw(Actor* thisx, GlobalContext* globalCtx);
void func_80BF2AF8(EnIg* this, GlobalContext* globalCtx);
void func_80BF2BD4(EnIg* this, GlobalContext* globalCtx);
-static s32 D_80BF3260[] = {
- 0x0D000100, 0xB10A006C, 0x4E020F19, 0x0F2D4202, 0x0F2D0F32, 0x36004B10, 0x1050210, 0x32103725,
- 0x02103711, 0x0F190211, 0x0F12000D, 0x02120006, 0x0001050E, 0x12000600, 0x040E110F, 0x0600020E,
- 0x1037110F, 0x0B0E1032, 0x1037060E, 0x0F2D0F32, 0x050E0F19, 0x0F2D0A0A, 0x00615A02, 0x0F2D0F32,
- 0x4E020F32, 0x100A4202, 0x100A101E, 0x36004B10, 0x1902101E, 0x10320D02, 0x10321037, 0x01050E10,
- 0x32103708, 0x0E101E10, 0x320D0210, 0x1E10320D, 0x02103210, 0x3701050E, 0x10321037, 0x090E101E,
- 0x10320E0E, 0x100A101E, 0x030E0F32, 0x100A0C0E, 0x0F2D0F32, 0x07050500,
+static u8 D_80BF3260[] = {
+ /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(1, 0xB6 - 0x05),
+ /* 0x05 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x57 - 0x09),
+ /* 0x09 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 25, 15, 45, 0x51 - 0x0F),
+ /* 0x0F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 45, 15, 50, 0x4B - 0x15),
+ /* 0x15 */ SCHEDULE_CMD_CHECK_FLAG_S(0x4B, 0x10, 0x1A - 0x19),
+ /* 0x19 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x1A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 50, 16, 55, 0x45 - 0x20),
+ /* 0x20 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 55, 17, 15, 0x3F - 0x26),
+ /* 0x26 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(17, 15, 18, 0, 0x39 - 0x2C),
+ /* 0x2C */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x33 - 0x32),
+ /* 0x32 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x33 */ SCHEDULE_CMD_RET_TIME(18, 0, 6, 0, 4),
+ /* 0x39 */ SCHEDULE_CMD_RET_TIME(17, 15, 6, 0, 2),
+ /* 0x3F */ SCHEDULE_CMD_RET_TIME(16, 55, 17, 15, 11),
+ /* 0x45 */ SCHEDULE_CMD_RET_TIME(16, 50, 16, 55, 6),
+ /* 0x4B */ SCHEDULE_CMD_RET_TIME(15, 45, 15, 50, 5),
+ /* 0x51 */ SCHEDULE_CMD_RET_TIME(15, 25, 15, 45, 10),
+ /* 0x57 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0xB5 - 0x5B),
+ /* 0x5B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 45, 15, 50, 0xAF - 0x61),
+ /* 0x61 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 50, 16, 10, 0xA9 - 0x67),
+ /* 0x67 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 10, 16, 30, 0xA3 - 0x6D),
+ /* 0x6D */ SCHEDULE_CMD_CHECK_FLAG_S(0x4B, 0x10, 0x8A - 0x71),
+ /* 0x71 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 30, 16, 50, 0x84 - 0x77),
+ /* 0x77 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 50, 16, 55, 0x7E - 0x7D),
+ /* 0x7D */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x7E */ SCHEDULE_CMD_RET_TIME(16, 50, 16, 55, 8),
+ /* 0x84 */ SCHEDULE_CMD_RET_TIME(16, 30, 16, 50, 13),
+ /* 0x8A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 30, 16, 50, 0x9D - 0x90),
+ /* 0x90 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 50, 16, 55, 0x97 - 0x96),
+ /* 0x96 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x97 */ SCHEDULE_CMD_RET_TIME(16, 50, 16, 55, 9),
+ /* 0x9D */ SCHEDULE_CMD_RET_TIME(16, 30, 16, 50, 14),
+ /* 0xA3 */ SCHEDULE_CMD_RET_TIME(16, 10, 16, 30, 3),
+ /* 0xA9 */ SCHEDULE_CMD_RET_TIME(15, 50, 16, 10, 12),
+ /* 0xAF */ SCHEDULE_CMD_RET_TIME(15, 45, 15, 50, 7),
+ /* 0xB5 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0xB6 */ SCHEDULE_CMD_RET_NONE(),
};
static s32 D_80BF3318[] = { -1, -1, 3, 1, 3, 1, 2, 0, 3, 5, 0, 3, 1, 2, 4 };
@@ -233,7 +264,7 @@ void func_80BF13E4(EnIg* this) {
Actor* func_80BF146C(EnIg* this, GlobalContext* globalCtx) {
Actor* retActor;
- if (this->unk_298.unk0 == 3) {
+ if (this->scheduleResult == 3) {
retActor = func_80BF1150(this, globalCtx, ACTORCAT_NPC, ACTOR_EN_AN);
} else {
retActor = &GET_PLAYER(globalCtx)->actor;
@@ -361,7 +392,7 @@ s32 func_80BF17BC(EnIg* this, GlobalContext* globalCtx) {
}
s32* func_80BF1920(EnIg* this, GlobalContext* globalCtx) {
- switch (this->unk_298.unk0) {
+ switch (this->scheduleResult) {
case 3:
this->unk_3F8 = func_80BF17BC;
return D_80BF335C;
@@ -395,8 +426,8 @@ s32 func_80BF19A0(EnIg* this, GlobalContext* globalCtx) {
this->unk_3F6 = 0;
this->unk_3F8 = NULL;
this->actor.child = this->unk_2A8;
- this->unk_298.unk4 = func_80BF1920(this, globalCtx);
- if ((this->unk_298.unk0 != 2) && (this->unk_298.unk0 != 3) && (this->unk_298.unk0 != 4)) {
+ this->unk_29C = func_80BF1920(this, globalCtx);
+ if ((this->scheduleResult != 2) && (this->scheduleResult != 3) && (this->scheduleResult != 4)) {
this->unk_3D0 |= 0x20;
}
this->actionFunc = func_80BF2BD4;
@@ -417,7 +448,7 @@ void func_80BF1A60(EnIg* this, GlobalContext* globalCtx) {
}
s32 func_80BF1AE0(EnIg* this, GlobalContext* globalCtx) {
- switch (this->unk_298.unk0) {
+ switch (this->scheduleResult) {
case 3:
func_80BF1284(this, 0);
break;
@@ -465,7 +496,7 @@ s32 func_80BF1B40(EnIg* this, GlobalContext* globalCtx) {
return false;
}
-s32 func_80BF1C44(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2, s32 arg3, s32 arg4) {
+s32 func_80BF1C44(EnIg* this, GlobalContext* globalCtx, ScheduleResult* arg2, s32 arg3, s32 arg4) {
u8 sp4F = ENIG_GET_FF(&this->actor);
Vec3s* sp48;
Vec3f sp3C;
@@ -477,8 +508,8 @@ s32 func_80BF1C44(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
sp2C = func_80BF1150(this, globalCtx, arg3, arg4);
this->unk_274 = NULL;
- if (D_80BF3318[arg2->unk0] >= 0) {
- this->unk_274 = SubS_GetAdditionalPath(globalCtx, sp4F, D_80BF3318[arg2->unk0]);
+ if (D_80BF3318[arg2->result] >= 0) {
+ this->unk_274 = SubS_GetAdditionalPath(globalCtx, sp4F, D_80BF3318[arg2->result]);
}
if ((sp2C != NULL) && (sp2C->update != NULL)) {
@@ -495,7 +526,7 @@ s32 func_80BF1C44(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return sp24;
}
-s32 func_80BF1D78(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BF1D78(EnIg* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 sp2C = 0;
if (func_80BF1C44(this, globalCtx, arg2, ACTORCAT_NPC, ACTOR_EN_AN)) {
@@ -508,8 +539,8 @@ s32 func_80BF1D78(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return sp2C;
}
-s32 func_80BF1DF4(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
- u16 sp56 = gSaveContext.save.time - 0x3FFC;
+s32 func_80BF1DF4(EnIg* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
+ u16 sp56 = SCHEDULE_TIME_NOW;
u8 sp55 = ENIG_GET_FF(&this->actor);
EnDoor* door;
Vec3s* sp4C;
@@ -519,10 +550,10 @@ s32 func_80BF1DF4(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
s32 ret = false;
this->unk_274 = NULL;
- door = func_80BF1200(globalCtx, arg2->unk0);
+ door = func_80BF1200(globalCtx, arg2->result);
- if (D_80BF3318[arg2->unk0] >= 0) {
- this->unk_274 = SubS_GetAdditionalPath(globalCtx, sp55, D_80BF3318[arg2->unk0]);
+ if (D_80BF3318[arg2->result] >= 0) {
+ this->unk_274 = SubS_GetAdditionalPath(globalCtx, sp55, D_80BF3318[arg2->result]);
}
if ((door != NULL) && (door->dyna.actor.update != NULL)) {
@@ -541,8 +572,8 @@ s32 func_80BF1DF4(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
this->unk_2A4 = 75;
}
- this->unk_3E0 = arg2->unk8 - arg2->unk4;
- this->unk_3E2 = sp56 - arg2->unk4;
+ this->unk_3E0 = arg2->time1 - arg2->time0;
+ this->unk_3E2 = sp56 - arg2->time0;
this->actor.flags &= ~ACTOR_FLAG_1;
this->unk_3D0 |= 0x100;
func_80BF1284(this, 3);
@@ -553,8 +584,8 @@ s32 func_80BF1DF4(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_80BF1FA8(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
- u16 sp2E = gSaveContext.save.time - 0x3FFC;
+s32 func_80BF1FA8(EnIg* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
+ u16 sp2E = SCHEDULE_TIME_NOW;
u16 phi_v1;
u8 sp2B = ENIG_GET_FF(&this->actor);
s32 temp_t8;
@@ -562,8 +593,8 @@ s32 func_80BF1FA8(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
this->unk_274 = NULL;
- if (D_80BF3318[arg2->unk0] >= 0) {
- this->unk_274 = SubS_GetAdditionalPath(globalCtx, sp2B, D_80BF3318[arg2->unk0]);
+ if (D_80BF3318[arg2->result] >= 0) {
+ this->unk_274 = SubS_GetAdditionalPath(globalCtx, sp2B, D_80BF3318[arg2->result]);
}
if ((this->unk_274 != NULL) && (this->unk_274->count < 3)) {
@@ -571,17 +602,17 @@ s32 func_80BF1FA8(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
}
if (this->unk_274 != NULL) {
- temp_t8 = this->unk_298.unk0;
+ temp_t8 = this->scheduleResult;
if ((temp_t8 < 10) && (temp_t8 != 0) && (this->unk_3EC >= 0)) {
phi_v1 = sp2E;
} else {
- phi_v1 = arg2->unk4;
+ phi_v1 = arg2->time0;
}
- if (arg2->unk8 < phi_v1) {
- this->unk_288 = (phi_v1 - arg2->unk8) + 0xFFFF;
+ if (arg2->time1 < phi_v1) {
+ this->unk_288 = (phi_v1 - arg2->time1) + 0xFFFF;
} else {
- this->unk_288 = arg2->unk8 - phi_v1;
+ this->unk_288 = arg2->time1 - phi_v1;
}
this->unk_294 = sp2E - phi_v1;
@@ -602,7 +633,7 @@ s32 func_80BF1FA8(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_80BF219C(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BF219C(EnIg* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
u8 sp4F = ENIG_GET_FF(&this->actor);
Vec3f sp40;
Vec3f sp34;
@@ -612,8 +643,8 @@ s32 func_80BF219C(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
this->unk_274 = NULL;
- if (D_80BF3318[arg2->unk0] >= 0) {
- this->unk_274 = SubS_GetAdditionalPath(globalCtx, sp4F, D_80BF3318[arg2->unk0]);
+ if (D_80BF3318[arg2->result] >= 0) {
+ this->unk_274 = SubS_GetAdditionalPath(globalCtx, sp4F, D_80BF3318[arg2->result]);
}
if ((this->unk_274 != 0) && (this->unk_274->count >= 2)) {
@@ -625,7 +656,7 @@ s32 func_80BF219C(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
Math_Vec3f_Copy(&this->actor.world.pos, &sp40);
Math_Vec3f_Copy(&this->actor.prevPos, &sp40);
- switch (arg2->unk0) {
+ switch (arg2->result) {
case 2:
this->actor.home.rot.y = this->actor.world.rot.y;
this->actor.home.rot.y += 0x8000;
@@ -647,14 +678,14 @@ s32 func_80BF219C(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_80BF2368(EnIg* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BF2368(EnIg* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret = false;
this->actor.targetMode = 0;
this->unk_3D0 = 0;
this->actor.flags |= ACTOR_FLAG_1;
- switch (arg2->unk0) {
+ switch (arg2->result) {
case 5:
case 6:
case 7:
@@ -697,7 +728,7 @@ s32 func_80BF2400(EnIg* this, GlobalContext* globalCtx) {
}
s32 func_80BF2470(EnIg* this, GlobalContext* globalCtx) {
- EnDoor* door = func_80BF1200(globalCtx, this->unk_298.unk0);
+ EnDoor* door = func_80BF1200(globalCtx, this->scheduleResult);
Vec3f sp38;
f32 temp;
s32 pad;
@@ -807,7 +838,7 @@ s32 func_80BF293C(EnIg* this, GlobalContext* globalCtx) {
}
void func_80BF2A50(EnIg* this, GlobalContext* globalCtx) {
- switch (this->unk_298.unk0) {
+ switch (this->scheduleResult) {
case 10:
case 11:
case 12:
@@ -840,22 +871,21 @@ void func_80BF2A50(EnIg* this, GlobalContext* globalCtx) {
}
void func_80BF2AF8(EnIg* this, GlobalContext* globalCtx) {
- u32* daySpeed = &gSaveContext.save.daySpeed;
- struct_80133038_arg2 sp20;
+ ScheduleResult sp20;
- this->unk_3EC = REG(15) + *daySpeed;
+ this->unk_3EC = REG(15) + ((void)0, gSaveContext.save.daySpeed);
- if (!func_80133038(globalCtx, D_80BF3260, &sp20) ||
- ((this->unk_298.unk0 != sp20.unk0) && !func_80BF2368(this, globalCtx, &sp20))) {
+ if (!Schedule_RunScript(globalCtx, D_80BF3260, &sp20) ||
+ ((this->scheduleResult != sp20.result) && !func_80BF2368(this, globalCtx, &sp20))) {
this->actor.shape.shadowDraw = NULL;
this->actor.flags &= ~ACTOR_FLAG_1;
- sp20.unk0 = 0;
+ sp20.result = 0;
} else {
this->actor.shape.shadowDraw = ActorShadow_DrawCircle;
this->actor.flags |= ACTOR_FLAG_1;
}
this->unk_2A8 = func_80BF146C(this, globalCtx);
- this->unk_298.unk0 = sp20.unk0;
+ this->scheduleResult = sp20.result;
func_80BF2A50(this, globalCtx);
}
@@ -864,14 +894,14 @@ void func_80BF2BD4(EnIg* this, GlobalContext* globalCtx) {
Vec3f sp38;
Vec3f sp2C;
- if (func_8010BF58(&this->actor, globalCtx, this->unk_298.unk4, this->unk_3F8, &this->unk_298.unk8)) {
+ if (func_8010BF58(&this->actor, globalCtx, this->unk_29C, this->unk_3F8, &this->unk_2A0)) {
SubS_UpdateFlags(&this->unk_3D0, 3, 7);
this->unk_3D0 &= ~0x20;
this->unk_3D0 |= 0x200;
this->unk_3EE = 20;
- this->unk_298.unk8 = 0;
+ this->unk_2A0 = 0;
this->actionFunc = func_80BF2AF8;
- } else if (((this->unk_298.unk0 != 2) && (this->unk_298.unk0 != 4)) &&
+ } else if (((this->scheduleResult != 2) && (this->scheduleResult != 4)) &&
((this->unk_2A8 != NULL) && (this->unk_2A8->update != NULL))) {
Math_Vec3f_Copy(&sp38, &this->unk_2A8->world.pos);
Math_Vec3f_Copy(&sp2C, &this->actor.world.pos);
@@ -892,7 +922,7 @@ void EnIg_Init(Actor* thisx, GlobalContext* globalCtx) {
Collider_InitAndSetSphere(globalCtx, &this->collider2, &this->actor, &sSphereInit);
CollisionCheck_SetInfo2(&this->actor.colChkInfo, DamageTable_Get(0x16), &sColChkInfoInit);
Actor_SetScale(&this->actor, 0.01f);
- this->unk_298.unk0 = 0;
+ this->scheduleResult = 0;
this->actor.gravity = 0.0f;
this->actionFunc = func_80BF2AF8;
this->actionFunc(this, globalCtx);
@@ -914,7 +944,7 @@ void EnIg_Update(Actor* thisx, GlobalContext* globalCtx) {
func_80BF1B40(this, globalCtx);
- if (this->unk_298.unk0 != 0) {
+ if (this->scheduleResult != 0) {
func_80BF1258(this);
func_80BF13E4(this);
func_80BF15EC(this);
@@ -1003,7 +1033,7 @@ void EnIg_Draw(Actor* thisx, GlobalContext* globalCtx) {
s32 pad;
EnIg* this = THIS;
- if (this->unk_298.unk0 != 0) {
+ if (this->scheduleResult != 0) {
func_8012C28C(globalCtx->state.gfxCtx);
OPEN_DISPS(globalCtx->state.gfxCtx);
diff --git a/src/overlays/actors/ovl_En_Ig/z_en_ig.h b/src/overlays/actors/ovl_En_Ig/z_en_ig.h
index 200c751b1..21abb08ac 100644
--- a/src/overlays/actors/ovl_En_Ig/z_en_ig.h
+++ b/src/overlays/actors/ovl_En_Ig/z_en_ig.h
@@ -26,7 +26,9 @@ typedef struct EnIg {
/* 0x028C */ s32 unk_28C;
/* 0x0290 */ s32 unk_290;
/* 0x0294 */ s32 unk_294;
- /* 0x0298 */ struct_80133038_arg2 unk_298;
+ /* 0x0298 */ u8 scheduleResult;
+ /* 0x029C */ s32* unk_29C;
+ /* 0x02A0 */ s32 unk_2A0;
/* 0x02A4 */ s8 unk_2A4;
/* 0x02A8 */ Actor* unk_2A8;
/* 0x02AC */ UNK_TYPE1 unk2AC[0x4];
diff --git a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c
index 22ced1f8f..557b96b31 100644
--- a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c
+++ b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c
@@ -3,6 +3,8 @@
* Overlay: ovl_En_Invadepoh
* Description: Ranch nighttime actors
*/
+
+#include "prevent_bss_reordering.h"
#include "z_en_invadepoh.h"
#include "overlays/actors/ovl_En_Door/z_en_door.h"
#include "objects/gameplay_keep/gameplay_keep.h"
diff --git a/src/overlays/actors/ovl_En_Ja/z_en_ja.c b/src/overlays/actors/ovl_En_Ja/z_en_ja.c
index 5c57c883f..b02b6f4ee 100644
--- a/src/overlays/actors/ovl_En_Ja/z_en_ja.c
+++ b/src/overlays/actors/ovl_En_Ja/z_en_ja.c
@@ -22,8 +22,16 @@ void func_80BC2EA4(EnJa* this);
void func_80BC32D8(EnJa* this, GlobalContext* globalCtx);
void func_80BC3594(EnJa* this, GlobalContext* globalCtx);
-s32 D_80BC35F0[] = {
- 0x0C000301, 0x05020600, 0x1200080A, 0x00610304, 0x0002050A, 0x006C0304, 0x00010500,
+static u8 D_80BC35F0[] = {
+ /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x05 - 0x04),
+ /* 0x04 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x05 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(6, 0, 18, 0, 0x13 - 0x0B),
+ /* 0x0B */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x12 - 0x0F),
+ /* 0x0F */ SCHEDULE_CMD_RET_VAL_L(2),
+ /* 0x12 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x13 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x1A - 0x17),
+ /* 0x17 */ SCHEDULE_CMD_RET_VAL_L(1),
+ /* 0x1A */ SCHEDULE_CMD_RET_NONE(),
};
s32 D_80BC360C[] = {
@@ -231,7 +239,7 @@ void func_80BC1E40(EnJa* this, GlobalContext* globalCtx) {
this->unk_374 = sp20;
}
-s32 func_80BC1FC8(EnJa* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BC1FC8(EnJa* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret = false;
if (func_80BC1AE0(this, globalCtx)) {
@@ -244,7 +252,7 @@ s32 func_80BC1FC8(EnJa* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_80BC203C(EnJa* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BC203C(EnJa* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret = false;
if (func_80BC1AE0(this, globalCtx)) {
@@ -261,12 +269,12 @@ s32 func_80BC203C(EnJa* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_80BC20D0(EnJa* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BC20D0(EnJa* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret = false;
this->unk_340 = 0;
- switch (arg2->unk0) {
+ switch (arg2->result) {
case 1:
ret = func_80BC1FC8(this, globalCtx, arg2);
if (ret == 1) {}
@@ -291,20 +299,19 @@ void func_80BC2150(EnJa* this, GlobalContext* globalCtx) {
}
void func_80BC21A8(EnJa* this, GlobalContext* globalCtx) {
- u32* unk_14 = &gSaveContext.save.daySpeed;
- struct_80133038_arg2 sp18;
+ ScheduleResult sp18;
- this->unk_35C = REG(15) + *unk_14;
- if (!func_80133038(globalCtx, D_80BC35F0, &sp18) ||
- ((this->unk_1D8.unk_00 != sp18.unk0) && !func_80BC20D0(this, globalCtx, &sp18))) {
+ this->unk_35C = REG(15) + ((void)0, gSaveContext.save.daySpeed);
+ if (!Schedule_RunScript(globalCtx, D_80BC35F0, &sp18) ||
+ ((this->unk_1D8.unk_00 != sp18.result) && !func_80BC20D0(this, globalCtx, &sp18))) {
this->actor.shape.shadowDraw = NULL;
this->actor.flags &= ~ACTOR_FLAG_1;
- sp18.unk0 = 0;
+ sp18.result = 0;
} else {
this->actor.shape.shadowDraw = ActorShadow_DrawCircle;
this->actor.flags |= ACTOR_FLAG_1;
}
- this->unk_1D8.unk_00 = sp18.unk0;
+ this->unk_1D8.unk_00 = sp18.result;
func_80BC2150(this, globalCtx);
}
diff --git a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c
index 02bd93aef..4c9f10ff8 100644
--- a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c
+++ b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c
@@ -4,6 +4,7 @@
* Description: Grass / Bush
*/
+#include "prevent_bss_reordering.h"
#include "z_en_kusa.h"
#include "objects/object_kusa/object_kusa.h"
#include "objects/gameplay_keep/gameplay_keep.h"
diff --git a/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c b/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c
index 1b8d1ccbc..e4e821427 100644
--- a/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c
+++ b/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c
@@ -4,6 +4,7 @@
* Description: Keaton grass
*/
+#include "prevent_bss_reordering.h"
#include "z_en_kusa2.h"
#include "objects/gameplay_field_keep/gameplay_field_keep.h"
#include "objects/gameplay_keep/gameplay_keep.h"
diff --git a/src/overlays/actors/ovl_En_Pm/z_en_pm.c b/src/overlays/actors/ovl_En_Pm/z_en_pm.c
index e43e55091..045421449 100644
--- a/src/overlays/actors/ovl_En_Pm/z_en_pm.c
+++ b/src/overlays/actors/ovl_En_Pm/z_en_pm.c
@@ -20,69 +20,365 @@ void EnPm_Draw(Actor* thisx, GlobalContext* globalCtx);
void func_80AFA4D0(EnPm* this, GlobalContext* globalCtx);
void func_80AFA5FC(EnPm* this, GlobalContext* globalCtx);
-// Game scripts
-static UNK_TYPE D_80AFAD80[] = {
- 0x0D000102, 0x3B030900, 0x0C00010B, 0x030C000D, 0x0100F902, 0x0D010F00, 0x12020F00, 0x00050105, 0x0A002E06,
- 0x0E0F0000, 0x0508050A, 0x006D3102, 0x0D010D04, 0x25020D04, 0x0D151902, 0x0E300E38, 0x0D020E38, 0x0F000105,
- 0x0E0E380F, 0x00020E0E, 0x300E383E, 0x0E0D040D, 0x15350E0D, 0x010D0401, 0x0A006F31, 0x020D040D, 0x1525020D,
- 0x150D2719, 0x020E260E, 0x300D020E, 0x300E3801, 0x050E0E30, 0x0E383D0E, 0x0E260E30, 0x3C0E0D15, 0x0D27370E,
- 0x0D040D15, 0x360A006C, 0x31020D27, 0x0D382502, 0x0D380E00, 0x19020E1A, 0x0E1E0D02, 0x0E1E0E26, 0x01050E0E,
- 0x1E0E263B, 0x0E0E1A0E, 0x1E0B0E0D, 0x380E000A, 0x0E0D270D, 0x38380A00, 0x613D020D, 0x380E0031, 0x020E000E,
- 0x0825020E, 0x080E1219, 0x020E120E, 0x1A0D020E, 0x1A0E1E01, 0x050E0E1A, 0x0E1E0D0E, 0x0E120E1A, 0x3A0E0E08,
- 0x0E12100E, 0x0E000E08, 0x390E0D38, 0x0E000C05, 0x0A002E06, 0x0E0C000D, 0x0109050A, 0x006D3102, 0x09000903,
- 0x25020903, 0x09111902, 0x0B2B0B39, 0x0D020B39, 0x0C000105, 0x0E0B390C, 0x00020E0B, 0x2B0B3934, 0x0E090309,
- 0x11260E09, 0x00090301, 0x0A006F61, 0x02090309, 0x11550209, 0x11091F49, 0x02091F09, 0x233D0209, 0x23093131,
- 0x020A390B, 0x0B25020B, 0x0B0B1919, 0x020B190B, 0x1D0D020B, 0x1D0B2B01, 0x050E0B1D, 0x0B2B320E, 0x0B190B1D,
- 0x070E0B0B, 0x0B19300E, 0x0A390B0B, 0x2F0E0923, 0x0931290E, 0x091F0923, 0x030E0911, 0x091F280E, 0x09030911,
- 0x270A006E, 0x25020931, 0x0A031902, 0x0A030A07, 0x0D020A07, 0x0A150105, 0x0E0A070A, 0x152B0E0A, 0x030A0704,
- 0x0E09310A, 0x032A0A00, 0x6C61020A, 0x150A2355, 0x020A230A, 0x2749020A, 0x270A353D, 0x020A350A, 0x3931020A,
- 0x390B0B25, 0x020B0B0B, 0x1919020B, 0x190B1D0D, 0x020B1D0B, 0x2B01050E, 0x0B1D0B2B, 0x330E0B19, 0x0B1D070E,
- 0x0B0B0B19, 0x310E0A39, 0x0B0B2E0E, 0x0A350A39, 0x060E0A27, 0x0A352D0E, 0x0A230A27, 0x050E0A15, 0x0A232C05,
- 0x0D000201, 0xCF011C08, 0x00A50309, 0x000C00FE, 0xC6030C00, 0x0D01008C, 0x020D010F, 0x007E0200, 0x00020001,
- 0x050A006D, 0x31020000, 0x00042502, 0x0004001F, 0x1902011D, 0x01380D02, 0x01380200, 0x01050E01, 0x38020002,
- 0x0E011D01, 0x384F0E00, 0x04001F4A, 0x0E000000, 0x04010A00, 0x6F3D0200, 0x04001F31, 0x02001F00, 0x3A250200,
- 0x3A010219, 0x02010201, 0x1D0D0201, 0x1D013801, 0x050E011D, 0x01384E0E, 0x0102011D, 0x4D0E003A, 0x0102120E,
- 0x001F003A, 0x4C0E0004, 0x001F4B05, 0x0A002E03, 0x04000E05, 0x0A002E06, 0x0E0C000D, 0x01140503, 0x09000C00,
- 0xFE21030C, 0x000D0101, 0x0C020D01, 0x11001202, 0x11000005, 0x01050A00, 0x2E060E11, 0x00000508, 0x050A006D,
- 0x31020D01, 0x0D042502, 0x0D040D0F, 0x19021023, 0x10390D02, 0x10391100, 0x01050E10, 0x39110002, 0x0E102310,
- 0x39490E0D, 0x040D0F3F, 0x0E0D010D, 0x04010A00, 0x6F31020D, 0x040D0F25, 0x020D0F0D, 0x1E19020D, 0x340E2D0D,
- 0x02100F10, 0x2301050E, 0x100F1023, 0x480E0D34, 0x0E2D430E, 0x0D0F0D1E, 0x410E0D04, 0x0D0F400A, 0x006C1902,
- 0x0D1E0D34, 0x0D020D34, 0x0E320105, 0x0E0D340E, 0x32440E0D, 0x1E0D3442, 0x0A007068, 0x020E2D0F, 0x055C0C00,
- 0x0231020F, 0x050F1425, 0x020F140F, 0x1919020F, 0x190F280D, 0x020F2810, 0x0F01050E, 0x0F28100F, 0x510E0F19,
- 0x0F28110E, 0x0F140F19, 0x500E0F05, 0x0F141702, 0x0F050F14, 0x1B020F14, 0x0F320F02, 0x0F32100F, 0x03040000,
- 0x0E0F3210, 0x0F470E0F, 0x140F3219, 0x0E0F050F, 0x14170E0E, 0x2D0F0546, 0x050A002E, 0x060E0C00, 0x0D011505,
- 0x0D000301, 0x6F011C08, 0x013F011C, 0x10010C03, 0x09000C00, 0xFCED030C, 0x000D0100, 0xF6020D01, 0x0F000F02,
- 0x12000600, 0x01050A00, 0x2E030400, 0x18050A00, 0x6D31020D, 0x000D0125, 0x020D050D, 0x0F19020E, 0x2D0E370D,
- 0x020E370F, 0x0001050E, 0x0E370F00, 0x020E0E2D, 0x0E37340E, 0x0D050D0F, 0x260E0D00, 0x0D01010A, 0x006F4902,
- 0x0D050D0F, 0x3D020D0F, 0x0D193102, 0x0D190D23, 0x25020E0F, 0x0E191902, 0x0E190E23, 0x0D020E23, 0x0E2D0105,
- 0x0E0E230E, 0x2D320E0E, 0x190E2330, 0x0E0E0F0E, 0x192F0E0D, 0x190D2329, 0x0E0D0F0D, 0x19280E0D, 0x050D0F27,
- 0x0A006E19, 0x020D230D, 0x2D0D020D, 0x2D0D3701, 0x050E0D2D, 0x0D372B0E, 0x0D230D2D, 0x2A0A006C, 0x3D020D37,
- 0x0E053102, 0x0E050E0F, 0x25020E0F, 0x0E191902, 0x0E190E23, 0x0D020E23, 0x0E2D0105, 0x0E0E230E, 0x2D330E0E,
- 0x190E2331, 0x0E0E0F0E, 0x192E0E0E, 0x050E0F2D, 0x0E0D370E, 0x052C050A, 0x002E0304, 0x00160503, 0x09000C00,
- 0xFBE1020C, 0x000D0116, 0x030D0111, 0x00FDD202, 0x12000600, 0x01050A00, 0x2E030400, 0x18050A00, 0x2E060E0C,
- 0x000D0115, 0x05030900, 0x0C00FBB3, 0x020C000D, 0x0116030D, 0x010F00FE, 0xD5021200, 0x06000105, 0x0A002E03,
- 0x04001805, 0x0A002E03, 0x04001405, 0x05000000,
+static u8 D_80AFAD80[] = {
+ /* 0x000 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(1, 0x240 - 0x005),
+ /* 0x005 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(9, 0, 12, 0, 0x117 - 0x00C),
+ /* 0x00C */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(12, 0, 13, 1, 0x10C - 0x013),
+ /* 0x013 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 1, 15, 0, 0x02B - 0x019),
+ /* 0x019 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 0, 0, 5, 0x020 - 0x01F),
+ /* 0x01F */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x020 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x02A - 0x024),
+ /* 0x024 */ SCHEDULE_CMD_RET_TIME(15, 0, 0, 5, 8),
+ /* 0x02A */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x02B */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ICHIBA, 0x060 - 0x02F),
+ /* 0x02F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 1, 13, 4, 0x05A - 0x035),
+ /* 0x035 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 4, 13, 21, 0x054 - 0x03B),
+ /* 0x03B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 48, 14, 56, 0x04E - 0x041),
+ /* 0x041 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 56, 15, 0, 0x048 - 0x047),
+ /* 0x047 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x048 */ SCHEDULE_CMD_RET_TIME(14, 56, 15, 0, 2),
+ /* 0x04E */ SCHEDULE_CMD_RET_TIME(14, 48, 14, 56, 62),
+ /* 0x054 */ SCHEDULE_CMD_RET_TIME(13, 4, 13, 21, 53),
+ /* 0x05A */ SCHEDULE_CMD_RET_TIME(13, 1, 13, 4, 1),
+ /* 0x060 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_CLOCKTOWER, 0x095 - 0x064),
+ /* 0x064 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 4, 13, 21, 0x08F - 0x06A),
+ /* 0x06A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 21, 13, 39, 0x089 - 0x070),
+ /* 0x070 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 38, 14, 48, 0x083 - 0x076),
+ /* 0x076 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 48, 14, 56, 0x07D - 0x07C),
+ /* 0x07C */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x07D */ SCHEDULE_CMD_RET_TIME(14, 48, 14, 56, 61),
+ /* 0x083 */ SCHEDULE_CMD_RET_TIME(14, 38, 14, 48, 60),
+ /* 0x089 */ SCHEDULE_CMD_RET_TIME(13, 21, 13, 39, 55),
+ /* 0x08F */ SCHEDULE_CMD_RET_TIME(13, 4, 13, 21, 54),
+ /* 0x095 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x0CA - 0x099),
+ /* 0x099 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 39, 13, 56, 0x0C4 - 0x09F),
+ /* 0x09F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 56, 14, 0, 0x0BE - 0x0A5),
+ /* 0x0A5 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 26, 14, 30, 0x0B8 - 0x0AB),
+ /* 0x0AB */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 30, 14, 38, 0x0B2 - 0x0B1),
+ /* 0x0B1 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x0B2 */ SCHEDULE_CMD_RET_TIME(14, 30, 14, 38, 59),
+ /* 0x0B8 */ SCHEDULE_CMD_RET_TIME(14, 26, 14, 30, 11),
+ /* 0x0BE */ SCHEDULE_CMD_RET_TIME(13, 56, 14, 0, 10),
+ /* 0x0C4 */ SCHEDULE_CMD_RET_TIME(13, 39, 13, 56, 56),
+ /* 0x0CA */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x10B - 0x0CE),
+ /* 0x0CE */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 56, 14, 0, 0x105 - 0x0D4),
+ /* 0x0D4 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 0, 14, 8, 0x0FF - 0x0DA),
+ /* 0x0DA */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 8, 14, 18, 0x0F9 - 0x0E0),
+ /* 0x0E0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 18, 14, 26, 0x0F3 - 0x0E6),
+ /* 0x0E6 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 26, 14, 30, 0x0ED - 0x0EC),
+ /* 0x0EC */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x0ED */ SCHEDULE_CMD_RET_TIME(14, 26, 14, 30, 13),
+ /* 0x0F3 */ SCHEDULE_CMD_RET_TIME(14, 18, 14, 26, 58),
+ /* 0x0F9 */ SCHEDULE_CMD_RET_TIME(14, 8, 14, 18, 16),
+ /* 0x0FF */ SCHEDULE_CMD_RET_TIME(14, 0, 14, 8, 57),
+ /* 0x105 */ SCHEDULE_CMD_RET_TIME(13, 56, 14, 0, 12),
+ /* 0x10B */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x10C */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x116 - 0x110),
+ /* 0x110 */ SCHEDULE_CMD_RET_TIME(12, 0, 13, 1, 9),
+ /* 0x116 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x117 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ICHIBA, 0x14C - 0x11B),
+ /* 0x11B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 0, 9, 3, 0x146 - 0x121),
+ /* 0x121 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 3, 9, 17, 0x140 - 0x127),
+ /* 0x127 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 43, 11, 57, 0x13A - 0x12D),
+ /* 0x12D */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 57, 12, 0, 0x134 - 0x133),
+ /* 0x133 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x134 */ SCHEDULE_CMD_RET_TIME(11, 57, 12, 0, 2),
+ /* 0x13A */ SCHEDULE_CMD_RET_TIME(11, 43, 11, 57, 52),
+ /* 0x140 */ SCHEDULE_CMD_RET_TIME(9, 3, 9, 17, 38),
+ /* 0x146 */ SCHEDULE_CMD_RET_TIME(9, 0, 9, 3, 1),
+ /* 0x14C */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_CLOCKTOWER, 0x1B1 - 0x150),
+ /* 0x150 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 3, 9, 17, 0x1AB - 0x156),
+ /* 0x156 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 17, 9, 31, 0x1A5 - 0x15C),
+ /* 0x15C */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 31, 9, 35, 0x19F - 0x162),
+ /* 0x162 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 35, 9, 49, 0x199 - 0x168),
+ /* 0x168 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 57, 11, 11, 0x193 - 0x16E),
+ /* 0x16E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 11, 11, 25, 0x18D - 0x174),
+ /* 0x174 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 25, 11, 29, 0x187 - 0x17A),
+ /* 0x17A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 29, 11, 43, 0x181 - 0x180),
+ /* 0x180 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x181 */ SCHEDULE_CMD_RET_TIME(11, 29, 11, 43, 50),
+ /* 0x187 */ SCHEDULE_CMD_RET_TIME(11, 25, 11, 29, 7),
+ /* 0x18D */ SCHEDULE_CMD_RET_TIME(11, 11, 11, 25, 48),
+ /* 0x193 */ SCHEDULE_CMD_RET_TIME(10, 57, 11, 11, 47),
+ /* 0x199 */ SCHEDULE_CMD_RET_TIME(9, 35, 9, 49, 41),
+ /* 0x19F */ SCHEDULE_CMD_RET_TIME(9, 31, 9, 35, 3),
+ /* 0x1A5 */ SCHEDULE_CMD_RET_TIME(9, 17, 9, 31, 40),
+ /* 0x1AB */ SCHEDULE_CMD_RET_TIME(9, 3, 9, 17, 39),
+ /* 0x1B1 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_BACKTOWN, 0x1DA - 0x1B5),
+ /* 0x1B5 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 49, 10, 3, 0x1D4 - 0x1BB),
+ /* 0x1BB */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 3, 10, 7, 0x1CE - 0x1C1),
+ /* 0x1C1 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 7, 10, 21, 0x1C8 - 0x1C7),
+ /* 0x1C7 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x1C8 */ SCHEDULE_CMD_RET_TIME(10, 7, 10, 21, 43),
+ /* 0x1CE */ SCHEDULE_CMD_RET_TIME(10, 3, 10, 7, 4),
+ /* 0x1D4 */ SCHEDULE_CMD_RET_TIME(9, 49, 10, 3, 42),
+ /* 0x1DA */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x23F - 0x1DE),
+ /* 0x1DE */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 21, 10, 35, 0x239 - 0x1E4),
+ /* 0x1E4 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 35, 10, 39, 0x233 - 0x1EA),
+ /* 0x1EA */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 39, 10, 53, 0x22D - 0x1F0),
+ /* 0x1F0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 53, 10, 57, 0x227 - 0x1F6),
+ /* 0x1F6 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(10, 57, 11, 11, 0x221 - 0x1FC),
+ /* 0x1FC */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 11, 11, 25, 0x21B - 0x202),
+ /* 0x202 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 25, 11, 29, 0x215 - 0x208),
+ /* 0x208 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(11, 29, 11, 43, 0x20F - 0x20E),
+ /* 0x20E */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x20F */ SCHEDULE_CMD_RET_TIME(11, 29, 11, 43, 51),
+ /* 0x215 */ SCHEDULE_CMD_RET_TIME(11, 25, 11, 29, 7),
+ /* 0x21B */ SCHEDULE_CMD_RET_TIME(11, 11, 11, 25, 49),
+ /* 0x221 */ SCHEDULE_CMD_RET_TIME(10, 57, 11, 11, 46),
+ /* 0x227 */ SCHEDULE_CMD_RET_TIME(10, 53, 10, 57, 6),
+ /* 0x22D */ SCHEDULE_CMD_RET_TIME(10, 39, 10, 53, 45),
+ /* 0x233 */ SCHEDULE_CMD_RET_TIME(10, 35, 10, 39, 5),
+ /* 0x239 */ SCHEDULE_CMD_RET_TIME(10, 21, 10, 35, 44),
+ /* 0x23F */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x240 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(2, 0x414 - 0x245),
+ /* 0x245 */ SCHEDULE_CMD_CHECK_FLAG_L(0x1C, 0x08, 0x2EF - 0x24A),
+ /* 0x24A */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(9, 0, 12, 0, 0x117 - 0x251),
+ /* 0x251 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(12, 0, 13, 1, 0x2E4 - 0x258),
+ /* 0x258 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 1, 15, 0, 0x2DC - 0x25E),
+ /* 0x25E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 2, 0, 0x265 - 0x264),
+ /* 0x264 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x265 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ICHIBA, 0x29A - 0x269),
+ /* 0x269 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 0, 4, 0x294 - 0x26F),
+ /* 0x26F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 4, 0, 31, 0x28E - 0x275),
+ /* 0x275 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 29, 1, 56, 0x288 - 0x27B),
+ /* 0x27B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 56, 2, 0, 0x282 - 0x281),
+ /* 0x281 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x282 */ SCHEDULE_CMD_RET_TIME(1, 56, 2, 0, 2),
+ /* 0x288 */ SCHEDULE_CMD_RET_TIME(1, 29, 1, 56, 79),
+ /* 0x28E */ SCHEDULE_CMD_RET_TIME(0, 4, 0, 31, 74),
+ /* 0x294 */ SCHEDULE_CMD_RET_TIME(0, 0, 0, 4, 1),
+ /* 0x29A */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_CLOCKTOWER, 0x2DB - 0x29E),
+ /* 0x29E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 4, 0, 31, 0x2D5 - 0x2A4),
+ /* 0x2A4 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 31, 0, 58, 0x2CF - 0x2AA),
+ /* 0x2AA */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 58, 1, 2, 0x2C9 - 0x2B0),
+ /* 0x2B0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 2, 1, 29, 0x2C3 - 0x2B6),
+ /* 0x2B6 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 29, 1, 56, 0x2BD - 0x2BC),
+ /* 0x2BC */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x2BD */ SCHEDULE_CMD_RET_TIME(1, 29, 1, 56, 78),
+ /* 0x2C3 */ SCHEDULE_CMD_RET_TIME(1, 2, 1, 29, 77),
+ /* 0x2C9 */ SCHEDULE_CMD_RET_TIME(0, 58, 1, 2, 18),
+ /* 0x2CF */ SCHEDULE_CMD_RET_TIME(0, 31, 0, 58, 76),
+ /* 0x2D5 */ SCHEDULE_CMD_RET_TIME(0, 4, 0, 31, 75),
+ /* 0x2DB */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x2DC */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x2E3 - 0x2E0),
+ /* 0x2E0 */ SCHEDULE_CMD_RET_VAL_L(14),
+ /* 0x2E3 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x2E4 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x2EE - 0x2E8),
+ /* 0x2E8 */ SCHEDULE_CMD_RET_TIME(12, 0, 13, 1, 20),
+ /* 0x2EE */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x2EF */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(9, 0, 12, 0, 0x117 - 0x2F6),
+ /* 0x2F6 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(12, 0, 13, 1, 0x409 - 0x2FD),
+ /* 0x2FD */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 1, 17, 0, 0x315 - 0x303),
+ /* 0x303 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(17, 0, 0, 5, 0x30A - 0x309),
+ /* 0x309 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x30A */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x314 - 0x30E),
+ /* 0x30E */ SCHEDULE_CMD_RET_TIME(17, 0, 0, 5, 8),
+ /* 0x314 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x315 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ICHIBA, 0x34A - 0x319),
+ /* 0x319 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 1, 13, 4, 0x344 - 0x31F),
+ /* 0x31F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 4, 13, 15, 0x33E - 0x325),
+ /* 0x325 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 35, 16, 57, 0x338 - 0x32B),
+ /* 0x32B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 57, 17, 0, 0x332 - 0x331),
+ /* 0x331 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x332 */ SCHEDULE_CMD_RET_TIME(16, 57, 17, 0, 2),
+ /* 0x338 */ SCHEDULE_CMD_RET_TIME(16, 35, 16, 57, 73),
+ /* 0x33E */ SCHEDULE_CMD_RET_TIME(13, 4, 13, 15, 63),
+ /* 0x344 */ SCHEDULE_CMD_RET_TIME(13, 1, 13, 4, 1),
+ /* 0x34A */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_CLOCKTOWER, 0x37F - 0x34E),
+ /* 0x34E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 4, 13, 15, 0x379 - 0x354),
+ /* 0x354 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 15, 13, 30, 0x373 - 0x35A),
+ /* 0x35A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 52, 14, 45, 0x36D - 0x360),
+ /* 0x360 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 15, 16, 35, 0x367 - 0x366),
+ /* 0x366 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x367 */ SCHEDULE_CMD_RET_TIME(16, 15, 16, 35, 72),
+ /* 0x36D */ SCHEDULE_CMD_RET_TIME(13, 52, 14, 45, 67),
+ /* 0x373 */ SCHEDULE_CMD_RET_TIME(13, 15, 13, 30, 65),
+ /* 0x379 */ SCHEDULE_CMD_RET_TIME(13, 4, 13, 15, 64),
+ /* 0x37F */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x39C - 0x383),
+ /* 0x383 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 30, 13, 52, 0x396 - 0x389),
+ /* 0x389 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 52, 14, 50, 0x390 - 0x38F),
+ /* 0x38F */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x390 */ SCHEDULE_CMD_RET_TIME(13, 52, 14, 50, 68),
+ /* 0x396 */ SCHEDULE_CMD_RET_TIME(13, 30, 13, 52, 66),
+ /* 0x39C */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ALLEY, 0x408 - 0x3A0),
+ /* 0x3A0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 45, 15, 5, 0x402 - 0x3A6),
+ /* 0x3A6 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x3DB - 0x3AA),
+ /* 0x3AA */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 5, 15, 20, 0x3D5 - 0x3B0),
+ /* 0x3B0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 20, 15, 25, 0x3CF - 0x3B6),
+ /* 0x3B6 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 25, 15, 40, 0x3C9 - 0x3BC),
+ /* 0x3BC */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 40, 16, 15, 0x3C3 - 0x3C2),
+ /* 0x3C2 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x3C3 */ SCHEDULE_CMD_RET_TIME(15, 40, 16, 15, 81),
+ /* 0x3C9 */ SCHEDULE_CMD_RET_TIME(15, 25, 15, 40, 17),
+ /* 0x3CF */ SCHEDULE_CMD_RET_TIME(15, 20, 15, 25, 80),
+ /* 0x3D5 */ SCHEDULE_CMD_RET_TIME(15, 5, 15, 20, 23),
+ /* 0x3DB */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 5, 15, 20, 0x3FC - 0x3E1),
+ /* 0x3E1 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 20, 15, 50, 0x3F6 - 0x3E7),
+ /* 0x3E7 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 50, 16, 15, 0x3F0 - 0x3ED),
+ /* 0x3ED */ SCHEDULE_CMD_RET_VAL_L(0),
+ /* 0x3F0 */ SCHEDULE_CMD_RET_TIME(15, 50, 16, 15, 71),
+ /* 0x3F6 */ SCHEDULE_CMD_RET_TIME(15, 20, 15, 50, 25),
+ /* 0x3FC */ SCHEDULE_CMD_RET_TIME(15, 5, 15, 20, 23),
+ /* 0x402 */ SCHEDULE_CMD_RET_TIME(14, 45, 15, 5, 70),
+ /* 0x408 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x409 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x413 - 0x40D),
+ /* 0x40D */ SCHEDULE_CMD_RET_TIME(12, 0, 13, 1, 21),
+ /* 0x413 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x414 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(3, 0x588 - 0x419),
+ /* 0x419 */ SCHEDULE_CMD_CHECK_FLAG_L(0x1C, 0x08, 0x55D - 0x41E),
+ /* 0x41E */ SCHEDULE_CMD_CHECK_FLAG_L(0x1C, 0x10, 0x52F - 0x423),
+ /* 0x423 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(9, 0, 12, 0, 0x117 - 0x42A),
+ /* 0x42A */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(12, 0, 13, 1, 0x527 - 0x431),
+ /* 0x431 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 1, 15, 0, 0x446 - 0x437),
+ /* 0x437 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x43E - 0x43D),
+ /* 0x43D */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x43E */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x445 - 0x442),
+ /* 0x442 */ SCHEDULE_CMD_RET_VAL_L(24),
+ /* 0x445 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x446 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ICHIBA, 0x47B - 0x44A),
+ /* 0x44A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 0, 13, 1, 0x475 - 0x450),
+ /* 0x450 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 5, 13, 15, 0x46F - 0x456),
+ /* 0x456 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 45, 14, 55, 0x469 - 0x45C),
+ /* 0x45C */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 55, 15, 0, 0x463 - 0x462),
+ /* 0x462 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x463 */ SCHEDULE_CMD_RET_TIME(14, 55, 15, 0, 2),
+ /* 0x469 */ SCHEDULE_CMD_RET_TIME(14, 45, 14, 55, 52),
+ /* 0x46F */ SCHEDULE_CMD_RET_TIME(13, 5, 13, 15, 38),
+ /* 0x475 */ SCHEDULE_CMD_RET_TIME(13, 0, 13, 1, 1),
+ /* 0x47B */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_CLOCKTOWER, 0x4C8 - 0x47F),
+ /* 0x47F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 5, 13, 15, 0x4C2 - 0x485),
+ /* 0x485 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 15, 13, 25, 0x4BC - 0x48B),
+ /* 0x48B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 25, 13, 35, 0x4B6 - 0x491),
+ /* 0x491 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 15, 14, 25, 0x4B0 - 0x497),
+ /* 0x497 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 25, 14, 35, 0x4AA - 0x49D),
+ /* 0x49D */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 35, 14, 45, 0x4A4 - 0x4A3),
+ /* 0x4A3 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x4A4 */ SCHEDULE_CMD_RET_TIME(14, 35, 14, 45, 50),
+ /* 0x4AA */ SCHEDULE_CMD_RET_TIME(14, 25, 14, 35, 48),
+ /* 0x4B0 */ SCHEDULE_CMD_RET_TIME(14, 15, 14, 25, 47),
+ /* 0x4B6 */ SCHEDULE_CMD_RET_TIME(13, 25, 13, 35, 41),
+ /* 0x4BC */ SCHEDULE_CMD_RET_TIME(13, 15, 13, 25, 40),
+ /* 0x4C2 */ SCHEDULE_CMD_RET_TIME(13, 5, 13, 15, 39),
+ /* 0x4C8 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_BACKTOWN, 0x4E5 - 0x4CC),
+ /* 0x4CC */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 35, 13, 45, 0x4DF - 0x4D2),
+ /* 0x4D2 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 45, 13, 55, 0x4D9 - 0x4D8),
+ /* 0x4D8 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x4D9 */ SCHEDULE_CMD_RET_TIME(13, 45, 13, 55, 43),
+ /* 0x4DF */ SCHEDULE_CMD_RET_TIME(13, 35, 13, 45, 42),
+ /* 0x4E5 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x526 - 0x4E9),
+ /* 0x4E9 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(13, 55, 14, 5, 0x520 - 0x4EF),
+ /* 0x4EF */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 5, 14, 15, 0x51A - 0x4F5),
+ /* 0x4F5 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 15, 14, 25, 0x514 - 0x4FB),
+ /* 0x4FB */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 25, 14, 35, 0x50E - 0x501),
+ /* 0x501 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(14, 35, 14, 45, 0x508 - 0x507),
+ /* 0x507 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x508 */ SCHEDULE_CMD_RET_TIME(14, 35, 14, 45, 51),
+ /* 0x50E */ SCHEDULE_CMD_RET_TIME(14, 25, 14, 35, 49),
+ /* 0x514 */ SCHEDULE_CMD_RET_TIME(14, 15, 14, 25, 46),
+ /* 0x51A */ SCHEDULE_CMD_RET_TIME(14, 5, 14, 15, 45),
+ /* 0x520 */ SCHEDULE_CMD_RET_TIME(13, 55, 14, 5, 44),
+ /* 0x526 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x527 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x52E - 0x52B),
+ /* 0x52B */ SCHEDULE_CMD_RET_VAL_L(22),
+ /* 0x52E */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x52F */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(9, 0, 12, 0, 0x117 - 0x536),
+ /* 0x536 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 0, 13, 1, 0x552 - 0x53C),
+ /* 0x53C */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(13, 1, 17, 0, 0x315 - 0x543),
+ /* 0x543 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x54A - 0x549),
+ /* 0x549 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x54A */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x551 - 0x54E),
+ /* 0x54E */ SCHEDULE_CMD_RET_VAL_L(24),
+ /* 0x551 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x552 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x55C - 0x556),
+ /* 0x556 */ SCHEDULE_CMD_RET_TIME(12, 0, 13, 1, 21),
+ /* 0x55C */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x55D */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(9, 0, 12, 0, 0x117 - 0x564),
+ /* 0x564 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(12, 0, 13, 1, 0x580 - 0x56A),
+ /* 0x56A */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(13, 1, 15, 0, 0x446 - 0x571),
+ /* 0x571 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x578 - 0x577),
+ /* 0x577 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x578 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x57F - 0x57C),
+ /* 0x57C */ SCHEDULE_CMD_RET_VAL_L(24),
+ /* 0x57F */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x580 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x587 - 0x584),
+ /* 0x584 */ SCHEDULE_CMD_RET_VAL_L(20),
+ /* 0x587 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x588 */ SCHEDULE_CMD_RET_NONE(),
};
-static UNK_TYPE D_80AFB30C[] = {
- 0x0A002E2E, 0x02000000, 0x0A220200, 0x0A000D19, 0x02000D00, 0x170D0200, 0x17001A01, 0x050E0017, 0x001A200E,
- 0x000D0017, 0x5304001B, 0x0E000000, 0x0A520A00, 0x6D190200, 0x17001A0D, 0x02001A00, 0x2401050E, 0x001A0024,
- 0x540E0017, 0x001A210A, 0x006F1902, 0x001A0024, 0x0D020024, 0x002E0105, 0x0E002400, 0x2E560E00, 0x1A002455,
- 0x0A006C19, 0x02002E00, 0x380D0200, 0x38003B01, 0x050E0038, 0x003B220E, 0x002E0038, 0x570A0015, 0x25020038,
- 0x003B1902, 0x003B0109, 0x0D020109, 0x01280105, 0x0E010901, 0x281C0E00, 0x3B010958, 0x0E003800, 0x3B240500,
+static u8 D_80AFB30C[] = {
+ /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_POSTHOUSE, 0x32 - 0x04),
+ /* 0x04 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 0, 10, 0x2C - 0x0A),
+ /* 0x0A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 10, 0, 13, 0x29 - 0x10),
+ /* 0x10 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 13, 0, 23, 0x23 - 0x16),
+ /* 0x16 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 23, 0, 26, 0x1D - 0x1C),
+ /* 0x1C */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x1D */ SCHEDULE_CMD_RET_TIME(0, 23, 0, 26, 32),
+ /* 0x23 */ SCHEDULE_CMD_RET_TIME(0, 13, 0, 23, 83),
+ /* 0x29 */ SCHEDULE_CMD_RET_VAL_L(27),
+ /* 0x2C */ SCHEDULE_CMD_RET_TIME(0, 0, 0, 10, 82),
+ /* 0x32 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ICHIBA, 0x4F - 0x36),
+ /* 0x36 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 23, 0, 26, 0x49 - 0x3C),
+ /* 0x3C */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 26, 0, 36, 0x43 - 0x42),
+ /* 0x42 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x43 */ SCHEDULE_CMD_RET_TIME(0, 26, 0, 36, 84),
+ /* 0x49 */ SCHEDULE_CMD_RET_TIME(0, 23, 0, 26, 33),
+ /* 0x4F */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_CLOCKTOWER, 0x6C - 0x53),
+ /* 0x53 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 26, 0, 36, 0x66 - 0x59),
+ /* 0x59 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 36, 0, 46, 0x60 - 0x5F),
+ /* 0x5F */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x60 */ SCHEDULE_CMD_RET_TIME(0, 36, 0, 46, 86),
+ /* 0x66 */ SCHEDULE_CMD_RET_TIME(0, 26, 0, 36, 85),
+ /* 0x6C */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x89 - 0x70),
+ /* 0x70 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 46, 0, 56, 0x83 - 0x76),
+ /* 0x76 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 56, 0, 59, 0x7D - 0x7C),
+ /* 0x7C */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x7D */ SCHEDULE_CMD_RET_TIME(0, 56, 0, 59, 34),
+ /* 0x83 */ SCHEDULE_CMD_RET_TIME(0, 46, 0, 56, 87),
+ /* 0x89 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_MILK_BAR, 0xB2 - 0x8D),
+ /* 0x8D */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 56, 0, 59, 0xAC - 0x93),
+ /* 0x93 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 59, 1, 9, 0xA6 - 0x99),
+ /* 0x99 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 9, 1, 40, 0xA0 - 0x9F),
+ /* 0x9F */ SCHEDULE_CMD_RET_NONE(),
+ /* 0xA0 */ SCHEDULE_CMD_RET_TIME(1, 9, 1, 40, 28),
+ /* 0xA6 */ SCHEDULE_CMD_RET_TIME(0, 59, 1, 9, 88),
+ /* 0xAC */ SCHEDULE_CMD_RET_TIME(0, 56, 0, 59, 36),
+ /* 0xB2 */ SCHEDULE_CMD_RET_NONE(),
};
-static UNK_TYPE D_80AFB3C0[] = {
- 0x0A006C19, 0x02000A00, 0x0D0D0200, 0x0D001701, 0x050E000D, 0x00175A0E, 0x000A000D, 0x230A0015,
- 0x19020000, 0x000A0D02, 0x000A000D, 0x01050E00, 0x0A000D25, 0x0E000000, 0x0A590500,
+static u8 D_80AFB3C0[] = {
+ /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x1D - 0x04),
+ /* 0x04 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 10, 0, 13, 0x17 - 0x0A),
+ /* 0x0A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 13, 0, 23, 0x11 - 0x10),
+ /* 0x10 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x11 */ SCHEDULE_CMD_RET_TIME(0, 13, 0, 23, 90),
+ /* 0x17 */ SCHEDULE_CMD_RET_TIME(0, 10, 0, 13, 35),
+ /* 0x1D */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_MILK_BAR, 0x3A - 0x21),
+ /* 0x21 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 0, 10, 0x34 - 0x27),
+ /* 0x27 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 10, 0, 13, 0x2E - 0x2D),
+ /* 0x2D */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x2E */ SCHEDULE_CMD_RET_TIME(0, 10, 0, 13, 37),
+ /* 0x34 */ SCHEDULE_CMD_RET_TIME(0, 0, 0, 10, 89),
+ /* 0x3A */ SCHEDULE_CMD_RET_NONE(),
};
-static UNK_TYPE D_80AFB3FC[] = {
- 0x0A006C19, 0x02120006, 0x000D0205, 0x00050A01, 0x050E0500, 0x050A5B0E, 0x12000600, 0x1D050000,
+static u8 D_80AFB3FC[] = {
+ /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x1D - 0x04),
+ /* 0x04 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x17 - 0x0A),
+ /* 0x0A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(5, 0, 5, 10, 0x11 - 0x10),
+ /* 0x10 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x11 */ SCHEDULE_CMD_RET_TIME(5, 0, 5, 10, 91),
+ /* 0x17 */ SCHEDULE_CMD_RET_TIME(18, 0, 6, 0, 29),
+ /* 0x1D */ SCHEDULE_CMD_RET_NONE(),
};
-static UNK_TYPE D_80AFB41C[] = {
- 0x0A006C0D, 0x02000000, 0x0A01050E, 0x0000000A, 0x5B050000,
+static u8 D_80AFB41C[] = {
+ /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x11 - 0x04),
+ /* 0x04 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 0, 10, 0x0B - 0x0A),
+ /* 0x0A */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x0B */ SCHEDULE_CMD_RET_TIME(0, 0, 0, 10, 91),
+ /* 0x11 */ SCHEDULE_CMD_RET_NONE(),
};
static s32 D_80AFB430[] = {
@@ -903,7 +1199,7 @@ s32 func_80AF8DD4(EnPm* this, GlobalContext* globalCtx) {
return 0;
}
-s32 func_80AF8ED4(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2, u8 actorCat, s16 actorId) {
+s32 func_80AF8ED4(EnPm* this, GlobalContext* globalCtx, ScheduleResult* arg2, u8 actorCat, s16 actorId) {
u8 sp4F = this->actor.params & 0xFF;
Vec3s* sp48;
Vec3f sp3C;
@@ -914,8 +1210,8 @@ s32 func_80AF8ED4(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
this->unk_234 = NULL;
sp2C = func_80AF7CB0(this, globalCtx, actorCat, actorId);
- if (D_80AFB430[arg2->unk0] >= 0) {
- this->unk_234 = SubS_GetAdditionalPath(globalCtx, sp4F, D_80AFB430[arg2->unk0]);
+ if (D_80AFB430[arg2->result] >= 0) {
+ this->unk_234 = SubS_GetAdditionalPath(globalCtx, sp4F, D_80AFB430[arg2->result]);
}
if ((sp2C != NULL) && (sp2C->update != NULL)) {
@@ -933,8 +1229,8 @@ s32 func_80AF8ED4(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_80AF9008(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
- u16 sp56 = gSaveContext.save.time - 0x3FFC;
+s32 func_80AF9008(EnPm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
+ u16 sp56 = SCHEDULE_TIME_NOW;
u8 sp55 = this->actor.params & 0xFF;
EnDoor* door;
Vec3s* sp4C;
@@ -944,9 +1240,9 @@ s32 func_80AF9008(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
s32 ret = false;
this->unk_234 = NULL;
- door = func_80AF7D60(globalCtx, arg2->unk0);
- if (D_80AFB430[arg2->unk0] >= 0) {
- this->unk_234 = SubS_GetAdditionalPath(globalCtx, sp55, D_80AFB430[arg2->unk0]);
+ door = func_80AF7D60(globalCtx, arg2->result);
+ if (D_80AFB430[arg2->result] >= 0) {
+ this->unk_234 = SubS_GetAdditionalPath(globalCtx, sp55, D_80AFB430[arg2->result]);
}
if ((door != NULL) && (door->dyna.actor.update != NULL)) {
@@ -965,8 +1261,8 @@ s32 func_80AF9008(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
this->unk_260 = 0x4B;
}
- this->unk_36C = arg2->unk8 - arg2->unk4;
- this->unk_36E = sp56 - arg2->unk4;
+ this->unk_36C = arg2->time1 - arg2->time0;
+ this->unk_36E = sp56 - arg2->time0;
this->actor.flags &= ~ACTOR_FLAG_1;
if (gSaveContext.save.weekEventReg[90] & 8) {
this->unk_356 |= 0x800;
@@ -981,8 +1277,8 @@ s32 func_80AF9008(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_80AF91E8(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
- u16 sp2E = (u16)(gSaveContext.save.time - 0x3FFC);
+s32 func_80AF91E8(EnPm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
+ u16 sp2E = SCHEDULE_TIME_NOW;
u16 phi_v1;
u8 sp2B = this->actor.params & 0xFF;
s32 pad;
@@ -990,8 +1286,8 @@ s32 func_80AF91E8(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
this->unk_234 = NULL;
- if (D_80AFB430[arg2->unk0] >= 0) {
- this->unk_234 = SubS_GetAdditionalPath(globalCtx, sp2B, D_80AFB430[arg2->unk0]);
+ if (D_80AFB430[arg2->result] >= 0) {
+ this->unk_234 = SubS_GetAdditionalPath(globalCtx, sp2B, D_80AFB430[arg2->result]);
}
if ((this->unk_234 != NULL) && (this->unk_234->count < 3)) {
@@ -1002,13 +1298,13 @@ s32 func_80AF91E8(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
if ((this->unk_258 < 38) && (this->unk_258 != 0) && (this->unk_374 >= 0)) {
phi_v1 = sp2E;
} else {
- phi_v1 = arg2->unk4;
+ phi_v1 = arg2->time0;
}
- if (arg2->unk8 < phi_v1) {
- this->unk_248 = (phi_v1 - arg2->unk8) + 0xFFFF;
+ if (arg2->time1 < phi_v1) {
+ this->unk_248 = (phi_v1 - arg2->time1) + 0xFFFF;
} else {
- this->unk_248 = arg2->unk8 - phi_v1;
+ this->unk_248 = arg2->time1 - phi_v1;
}
this->unk_254 = sp2E - phi_v1;
@@ -1022,7 +1318,7 @@ s32 func_80AF91E8(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
Flags_UnsetSwitch(globalCtx, 0);
}
- switch (arg2->unk0) {
+ switch (arg2->result) {
case 83:
case 84:
case 85:
@@ -1061,7 +1357,7 @@ s32 func_80AF91E8(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_80AF94AC(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80AF94AC(EnPm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
u8 sp4F = this->actor.params & 0xFF;
Vec3f sp40;
Vec3f sp34;
@@ -1070,8 +1366,8 @@ s32 func_80AF94AC(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
s32 ret = false;
this->unk_234 = NULL;
- if (D_80AFB430[arg2->unk0] >= 0) {
- this->unk_234 = SubS_GetAdditionalPath(globalCtx, sp4F, D_80AFB430[arg2->unk0]);
+ if (D_80AFB430[arg2->result] >= 0) {
+ this->unk_234 = SubS_GetAdditionalPath(globalCtx, sp4F, D_80AFB430[arg2->result]);
}
if ((this->unk_234 != 0) && (this->unk_234->count >= 2)) {
@@ -1082,7 +1378,7 @@ s32 func_80AF94AC(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
Math_Vec3s_Copy(&this->actor.shape.rot, &this->actor.world.rot);
Math_Vec3f_Copy(&this->actor.world.pos, &sp40);
Math_Vec3f_Copy(&this->actor.prevPos, &sp40);
- if (arg2->unk0 == 24) {
+ if (arg2->result == 24) {
Flags_UnsetSwitch(globalCtx, 0);
Flags_UnsetSwitch(globalCtx, 1);
this->unk_394 = EXCH_ITEM_NONE;
@@ -1094,7 +1390,7 @@ s32 func_80AF94AC(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_80AF95E8(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80AF95E8(EnPm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
u8 sp4F = this->actor.params & 0xFF;
Vec3f sp40;
Vec3f sp34;
@@ -1103,13 +1399,13 @@ s32 func_80AF95E8(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
s32 ret = false;
s32 phi_a3 = -1;
- switch (arg2->unk0) {
+ switch (arg2->result) {
case 3:
case 4:
case 5:
case 6:
case 7:
- phi_a3 = arg2->unk0 - 3;
+ phi_a3 = arg2->result - 3;
break;
case 19:
@@ -1122,7 +1418,7 @@ s32 func_80AF95E8(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
}
this->unk_234 = NULL;
- phi_a3 = D_80AFB430[arg2->unk0];
+ phi_a3 = D_80AFB430[arg2->result];
if (phi_a3 >= 0) {
this->unk_234 = SubS_GetAdditionalPath(globalCtx, sp4F, phi_a3);
}
@@ -1136,7 +1432,7 @@ s32 func_80AF95E8(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
Math_Vec3f_Copy(&this->actor.world.pos, &sp40);
Math_Vec3f_Copy(&this->actor.prevPos, &sp40);
- switch (arg2->unk0) {
+ switch (arg2->result) {
case 27:
Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_ROOM_CARTAIN);
Flags_SetSwitch(globalCtx, 0);
@@ -1168,7 +1464,7 @@ s32 func_80AF95E8(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
gSaveContext.save.weekEventReg[60] |= 4;
default:
- if (arg2->unk0 == 0x1D) {
+ if (arg2->result == 0x1D) {
this->actor.world.rot.y = BINANG_ROT180(this->actor.world.rot.y);
}
SubS_UpdateFlags(&this->unk_356, 3, 7);
@@ -1181,7 +1477,7 @@ s32 func_80AF95E8(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_80AF98A0(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80AF98A0(EnPm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret = false;
if (Actor_SpawnAsChild(&globalCtx->actorCtx, &this->actor, globalCtx, ACTOR_EN_MM3, 116.0f, 26.0f, -219.0f, 0,
@@ -1192,7 +1488,7 @@ s32 func_80AF98A0(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_80AF992C(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80AF992C(EnPm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
static Vec3f D_80AFB8EC = { 116.0f, 26.0f, -219.0f };
static Vec3s D_80AFB8F8 = { 0x0000, 0xC0BA, 0x0000 };
s32 pad;
@@ -1204,7 +1500,7 @@ s32 func_80AF992C(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
this->actor.targetMode = 6;
this->actor.gravity = -1.0f;
this->unk_368 = 80.0f;
- if (arg2->unk0 == 14) {
+ if (arg2->result == 14) {
this->unk_356 &= ~0x200;
func_80AF7E98(this, 13);
} else {
@@ -1214,7 +1510,7 @@ s32 func_80AF992C(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return true;
}
-s32 func_80AF9A0C(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80AF9A0C(EnPm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret = false;
if (func_80AF8ED4(this, globalCtx, arg2, ACTORCAT_NPC, ACTOR_EN_AN)) {
@@ -1232,7 +1528,7 @@ s32 func_80AF9A0C(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_80AF9AB0(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80AF9AB0(EnPm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret = false;
if (func_80AF8ED4(this, globalCtx, arg2, ACTORCAT_NPC, ACTOR_EN_TEST3)) {
@@ -1250,7 +1546,7 @@ s32 func_80AF9AB0(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_80AF9B54(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80AF9B54(EnPm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret = false;
if (func_80AF8ED4(this, globalCtx, arg2, ACTORCAT_NPC, ACTOR_EN_AL)) {
@@ -1268,7 +1564,7 @@ s32 func_80AF9B54(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
return ret;
}
-s32 func_80AF9BF8(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80AF9BF8(EnPm* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret;
this->actor.flags |= ACTOR_FLAG_1;
@@ -1277,7 +1573,7 @@ s32 func_80AF9BF8(EnPm* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
this->unk_356 = 0;
this->unk_368 = 40.0f;
- switch (arg2->unk0) {
+ switch (arg2->result) {
case 16:
ret = func_80AF9A0C(this, globalCtx, arg2);
break;
@@ -1687,13 +1983,13 @@ void func_80AFA438(EnPm* this, GlobalContext* globalCtx) {
}
void func_80AFA4D0(EnPm* this, GlobalContext* globalCtx) {
- static UNK_PTR D_80AFB900[] = {
+ static u8* D_80AFB900[] = {
D_80AFAD80, D_80AFB30C, D_80AFB3C0, D_80AFB3FC, D_80AFB41C,
};
u16 time = gSaveContext.save.time;
u16 sp3C = 0;
+ ScheduleResult sp2C;
u32* unk_14 = &gSaveContext.save.daySpeed;
- struct_80133038_arg2 sp2C;
this->unk_374 = REG(15) + *unk_14;
if (this->unk_38C != 0) {
@@ -1702,17 +1998,17 @@ void func_80AFA4D0(EnPm* this, GlobalContext* globalCtx) {
gSaveContext.save.time = time;
}
- if (!func_80133038(globalCtx, D_80AFB900[this->unk_38C], &sp2C) ||
- ((this->unk_258 != sp2C.unk0) && !func_80AF9BF8(this, globalCtx, &sp2C))) {
+ if (!Schedule_RunScript(globalCtx, D_80AFB900[this->unk_38C], &sp2C) ||
+ ((this->unk_258 != sp2C.result) && !func_80AF9BF8(this, globalCtx, &sp2C))) {
this->actor.shape.shadowDraw = NULL;
this->actor.flags &= ~ACTOR_FLAG_1;
- sp2C.unk0 = 0;
+ sp2C.result = 0;
} else {
this->actor.shape.shadowDraw = ActorShadow_DrawCircle;
this->actor.flags |= ACTOR_FLAG_1;
}
- this->unk_258 = sp2C.unk0;
+ this->unk_258 = sp2C.result;
this->unk_268 = func_80AF8040(this, globalCtx);
func_80AFA438(this, globalCtx);
if (this->unk_38C != 0) {
diff --git a/src/overlays/actors/ovl_En_Shn/z_en_shn.c b/src/overlays/actors/ovl_En_Shn/z_en_shn.c
index b6b595549..bc5f24ee2 100644
--- a/src/overlays/actors/ovl_En_Shn/z_en_shn.c
+++ b/src/overlays/actors/ovl_En_Shn/z_en_shn.c
@@ -64,10 +64,10 @@ const ActorInit En_Shn_InitVars = {
};
static AnimationInfoS sAnimations[] = {
- { &object_shn_Anim_00D9D0, 1.0f, 0, -1, 0, 0 },
- { &object_shn_Anim_00D9D0, 1.0f, 0, -1, 0, -4 },
- { &object_shn_Anim_00E6C4, 1.0f, 0, -1, 0, 0 },
- { &object_shn_Anim_00E6C4, 1.0f, 0, -1, 0, -4 },
+ { &gBurlyGuyHandsOnTableAnim, 1.0f, 0, -1, 0, 0 },
+ { &gBurlyGuyHandsOnTableAnim, 1.0f, 0, -1, 0, -4 },
+ { &gSwampGuideChinScratchAnim, 1.0f, 0, -1, 0, 0 },
+ { &gSwampGuideChinScratchAnim, 1.0f, 0, -1, 0, -4 },
};
static s32 D_80AE7258[] = { 0, 2, 3, 8, 10, 1 };
@@ -345,8 +345,8 @@ void EnShn_Init(Actor* thisx, GlobalContext* globalCtx) {
EnShn* this = THIS;
ActorShape_Init(&this->actor.shape, 0.0f, NULL, 0.0f);
- SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gObjectShnSkel, NULL, this->jointTable, this->morphTable,
- OBJECT_SHN_LIMB_MAX);
+ SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gBurlyGuySkel, NULL, this->jointTable, this->morphTable,
+ BURLY_GUY_LIMB_MAX);
this->unk_2E8 = -1;
if (gSaveContext.save.weekEventReg[23] & 8) {
func_80AE615C(this, 0);
@@ -386,16 +386,16 @@ void EnShn_Update(Actor* thisx, GlobalContext* globalCtx) {
s32 EnShn_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
EnShn* this = THIS;
- if (limbIndex == OBJECT_SHN_LIMB_HEAD) {
+ if (limbIndex == BURLY_GUY_LIMB_HEAD) {
func_80AE6488(this, globalCtx);
- *dList = gObjectShnSwampGuideHead;
+ *dList = gSwampGuideHeadDL;
}
return false;
}
Vec3f D_80AE7270 = { 1200.0f, 0.0f, 0.0f };
void EnShn_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
- if (limbIndex == OBJECT_SHN_LIMB_HEAD) {
+ if (limbIndex == BURLY_GUY_LIMB_HEAD) {
Matrix_MultiplyVector3fByState(&D_80AE7270, &thisx->focus.pos);
Math_Vec3s_Copy(&thisx->focus.rot, &thisx->world.rot);
}
@@ -418,7 +418,7 @@ void EnShn_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thi
phi_v0 = 0;
}
- if (limbIndex == OBJECT_SHN_LIMB_HEAD) {
+ if (limbIndex == BURLY_GUY_LIMB_HEAD) {
func_8013AD9C((this->unk_2BA + 0x4000), (this->unk_2BC + this->actor.shape.rot.y + 0x4000), &this->unk_1E8,
&this->unk_1F4, phi_v0, phi_v1);
Matrix_StatePop();
diff --git a/src/overlays/actors/ovl_En_Shn/z_en_shn.h b/src/overlays/actors/ovl_En_Shn/z_en_shn.h
index bb54a8815..22e10ca32 100644
--- a/src/overlays/actors/ovl_En_Shn/z_en_shn.h
+++ b/src/overlays/actors/ovl_En_Shn/z_en_shn.h
@@ -20,8 +20,8 @@ typedef struct EnShn {
/* 0x1E4 */ Player* shnPlayerRef;
/* 0x1E8 */ Vec3f unk_1E8;
/* 0x1F4 */ Vec3s unk_1F4;
- /* 0x1FA */ Vec3s jointTable[OBJECT_SHN_LIMB_MAX];
- /* 0x25A */ Vec3s morphTable[OBJECT_SHN_LIMB_MAX];
+ /* 0x1FA */ Vec3s jointTable[BURLY_GUY_LIMB_MAX];
+ /* 0x25A */ Vec3s morphTable[BURLY_GUY_LIMB_MAX];
/* 0x2BA */ s16 unk_2BA;
/* 0x2BC */ s16 unk_2BC;
/* 0x2BE */ s16 unk_2BE;
diff --git a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c
index 10296484d..613e6d6c7 100644
--- a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c
+++ b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c
@@ -124,13 +124,54 @@ static u16 D_80BAE800[] = {
4000, 4, 1, 3, 6000, 4, 1, 6, 4000, 4, 1, 3, 6000, 4, 1, 6,
};
-static UNK_TYPE D_80BAE820[] = {
- 0xC00027C, 0x210877, 0xA006D31, 0x2000000, 0x19250200, 0x19001E19, 0x2010F01, 0x140D0201, 0x14012D01,
- 0x50E0114, 0x12D0E0E, 0x10F0114, 0x70E0019, 0x1E060E, 0x19, 0xD0A000D, 0x3D020019, 0x1E3102,
- 0x1E002D, 0x2502002D, 0x1001902, 0x100010F, 0xD02010F, 0x1140105, 0xE010F01, 0x14090E01, 0x10F0B,
- 0xE002D01, 0x20E00, 0x1E002D0A, 0xE001900, 0x1E080505, 0xC000125, 0xA006E20, 0x2120000, 0x14140200,
- 0x14001E08, 0xF001E03, 0x4000405, 0xE001400, 0x1E0F0E12, 0x1403, 0x50C0003, 0x270A0013, 0x22021200,
- 0x13001602, 0x13001319, 0xD021319, 0x105, 0xE131900, 0x10400, 0x50E1200, 0x13000C05, 0x5000000,
+static u8 D_80BAE820[] = {
+ /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x80 - 0x04),
+ /* 0x04 */ SCHEDULE_CMD_CHECK_FLAG_S(0x21, 0x08, 0x7F - 0x08),
+ /* 0x08 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_ICHIBA, 0x3D - 0x0C),
+ /* 0x0C */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 0, 0, 25, 0x37 - 0x12),
+ /* 0x12 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 25, 0, 30, 0x31 - 0x18),
+ /* 0x18 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 15, 1, 20, 0x2B - 0x1E),
+ /* 0x1E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 20, 1, 45, 0x25 - 0x24),
+ /* 0x24 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x25 */ SCHEDULE_CMD_RET_TIME(1, 20, 1, 45, 14),
+ /* 0x2B */ SCHEDULE_CMD_RET_TIME(1, 15, 1, 20, 7),
+ /* 0x31 */ SCHEDULE_CMD_RET_TIME(0, 25, 0, 30, 6),
+ /* 0x37 */ SCHEDULE_CMD_RET_TIME(0, 0, 0, 25, 13),
+ /* 0x3D */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_AYASHIISHOP, 0x7E - 0x41),
+ /* 0x41 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 25, 0, 30, 0x78 - 0x47),
+ /* 0x47 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 30, 0, 45, 0x72 - 0x4D),
+ /* 0x4D */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 45, 1, 0, 0x6C - 0x53),
+ /* 0x53 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 0, 1, 15, 0x66 - 0x59),
+ /* 0x59 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(1, 15, 1, 20, 0x60 - 0x5F),
+ /* 0x5F */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x60 */ SCHEDULE_CMD_RET_TIME(1, 15, 1, 20, 9),
+ /* 0x66 */ SCHEDULE_CMD_RET_TIME(1, 0, 1, 15, 11),
+ /* 0x6C */ SCHEDULE_CMD_RET_TIME(0, 45, 1, 0, 2),
+ /* 0x72 */ SCHEDULE_CMD_RET_TIME(0, 30, 0, 45, 10),
+ /* 0x78 */ SCHEDULE_CMD_RET_TIME(0, 25, 0, 30, 8),
+ /* 0x7E */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x7F */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x80 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(1, 0xA9 - 0x84),
+ /* 0x84 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_BACKTOWN, 0xA8 - 0x88),
+ /* 0x88 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 0, 20, 0xA2 - 0x8E),
+ /* 0x8E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(0, 20, 0, 30, 0x9C - 0x94),
+ /* 0x94 */ SCHEDULE_CMD_CHECK_BEFORE_TIME_S(0, 30, 0x9B - 0x98),
+ /* 0x98 */ SCHEDULE_CMD_RET_VAL_L(4),
+ /* 0x9B */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x9C */ SCHEDULE_CMD_RET_TIME(0, 20, 0, 30, 15),
+ /* 0xA2 */ SCHEDULE_CMD_RET_TIME(18, 0, 0, 20, 3),
+ /* 0xA8 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0xA9 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0xD4 - 0xAD),
+ /* 0xAD */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_IKANA, 0xD3 - 0xB1),
+ /* 0xB1 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 19, 0, 0xCD - 0xB7),
+ /* 0xB7 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(19, 0, 19, 25, 0xCA - 0xBD),
+ /* 0xBD */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(19, 25, 0, 0, 0xC4 - 0xC3),
+ /* 0xC3 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0xC4 */ SCHEDULE_CMD_RET_TIME(19, 25, 0, 0, 1),
+ /* 0xCA */ SCHEDULE_CMD_RET_VAL_L(5),
+ /* 0xCD */ SCHEDULE_CMD_RET_TIME(18, 0, 19, 0, 12),
+ /* 0xD3 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0xD4 */ SCHEDULE_CMD_RET_NONE(),
};
static s32 D_80BAE8F8[] = {
@@ -629,12 +670,12 @@ void func_80BABB90(EnSuttari* this, s32 arg1) {
}
}
-s32 func_80BABC48(EnSuttari* this, GlobalContext* globalCtx, struct_80133038_arg2* unkStruct) {
- u16 sp26 = gSaveContext.save.time - 0x3FFC;
+s32 func_80BABC48(EnSuttari* this, GlobalContext* globalCtx, ScheduleResult* unkStruct) {
+ u16 sp26 = SCHEDULE_TIME_NOW;
u16 pad1;
u8 sp23 = ENSUTTARI_GET_PATH(&this->actor);
u16 pad2;
- UNK_TYPE sp1C = D_80BAE8F8[unkStruct->unk0];
+ UNK_TYPE sp1C = D_80BAE8F8[unkStruct->result];
u16 phi_a0;
if (sp1C >= 0) {
@@ -646,12 +687,12 @@ s32 func_80BABC48(EnSuttari* this, GlobalContext* globalCtx, struct_80133038_arg
if ((this->unk428 != 0 && this->unk428 < 0xC) && (this->unk42A >= 0)) {
phi_a0 = sp26;
} else {
- phi_a0 = unkStruct->unk4;
+ phi_a0 = unkStruct->time0;
}
- if (unkStruct->unk8 < phi_a0) {
- this->unk418 = (phi_a0 - unkStruct->unk8) + 0xFFFF;
+ if (unkStruct->time1 < phi_a0) {
+ this->unk418 = (phi_a0 - unkStruct->time1) + 0xFFFF;
} else {
- this->unk418 = unkStruct->unk8 - phi_a0;
+ this->unk418 = unkStruct->time1 - phi_a0;
}
this->unk424 = sp26 - phi_a0;
phi_a0 = this->unk404->count - 2;
@@ -662,7 +703,7 @@ s32 func_80BABC48(EnSuttari* this, GlobalContext* globalCtx, struct_80133038_arg
return 1;
}
-s32 func_80BABDD8(EnSuttari* this, GlobalContext* globalCtx, struct_80133038_arg2* unkStruct) {
+s32 func_80BABDD8(EnSuttari* this, GlobalContext* globalCtx, ScheduleResult* unkStruct) {
s32 pad;
EnDoor* sp48;
u8 sp47;
@@ -673,12 +714,12 @@ s32 func_80BABDD8(EnSuttari* this, GlobalContext* globalCtx, struct_80133038_arg
UNK_TYPE sp24;
sp47 = ENSUTTARI_GET_PATH(&this->actor);
- sp44 = gSaveContext.save.time - 0x3FFC;
+ sp44 = SCHEDULE_TIME_NOW;
if (this->unk428 == 10 || this->unk428 == 11 || this->unk428 == 2) {
return 0;
}
sp48 = (EnDoor*)SubS_FindNearestActor(&this->actor, globalCtx, ACTORCAT_DOOR, ACTOR_EN_DOOR);
- sp24 = D_80BAE8F8[unkStruct->unk0];
+ sp24 = D_80BAE8F8[unkStruct->result];
if ((sp48 != NULL) && (sp24 >= 0)) {
this->unk404 = SubS_GetAdditionalPath(globalCtx, sp47, sp24);
}
@@ -688,9 +729,9 @@ s32 func_80BABDD8(EnSuttari* this, GlobalContext* globalCtx, struct_80133038_arg
sp28 = Lib_SegmentedToVirtual(this->unk404->points);
Math_Vec3s_ToVec3f(&sp38, &sp28[0]);
Math_Vec3s_ToVec3f(&sp2C, &sp28[1]);
- this->unk434 = sp44 - unkStruct->unk4;
- this->unk436 = unkStruct->unk8 - unkStruct->unk4;
- if (unkStruct->unk0 != 10 && unkStruct->unk0 != 11) {
+ this->unk434 = sp44 - unkStruct->time0;
+ this->unk436 = unkStruct->time1 - unkStruct->time0;
+ if (unkStruct->result != 10 && unkStruct->result != 11) {
sp48->unk_1A7 = 0x4B;
}
Math_Vec3f_Copy(&this->unk438, &sp38);
@@ -700,10 +741,10 @@ s32 func_80BABDD8(EnSuttari* this, GlobalContext* globalCtx, struct_80133038_arg
return 1;
}
-s32 func_80BABF64(EnSuttari* this, GlobalContext* globalCtx, struct_80133038_arg2* unkStruct) {
+s32 func_80BABF64(EnSuttari* this, GlobalContext* globalCtx, ScheduleResult* unkStruct) {
s32 ret;
- switch (unkStruct->unk0) {
+ switch (unkStruct->result) {
case 15:
case 14:
case 13:
@@ -1056,18 +1097,17 @@ void func_80BACE4C(EnSuttari* this, GlobalContext* globalCtx) {
}
void func_80BACEE0(EnSuttari* this, GlobalContext* globalCtx) {
- u32* unk_14 = &gSaveContext.save.daySpeed;
- struct_80133038_arg2 unkStruct;
+ ScheduleResult unkStruct;
- this->unk42A = REG(15) + *unk_14;
- if (!func_80133038(globalCtx, D_80BAE820, &unkStruct) ||
- ((this->unk428 != unkStruct.unk0) && !func_80BABF64(this, globalCtx, &unkStruct))) {
+ this->unk42A = REG(15) + ((void)0, gSaveContext.save.daySpeed);
+ if (!Schedule_RunScript(globalCtx, D_80BAE820, &unkStruct) ||
+ ((this->unk428 != unkStruct.result) && !func_80BABF64(this, globalCtx, &unkStruct))) {
this->actor.flags &= ~ACTOR_FLAG_1;
- unkStruct.unk0 = 0;
+ unkStruct.result = 0;
} else {
this->actor.flags |= ACTOR_FLAG_1;
}
- this->unk428 = unkStruct.unk0;
+ this->unk428 = unkStruct.result;
func_80BAC2FC(this, globalCtx);
func_80BAB434(this);
if (this->unk428 == 5) {
@@ -1081,18 +1121,17 @@ void func_80BACEE0(EnSuttari* this, GlobalContext* globalCtx) {
}
void func_80BAD004(EnSuttari* this, GlobalContext* globalCtx) {
- u32* unk_14 = &gSaveContext.save.daySpeed;
- struct_80133038_arg2 unkStruct;
+ ScheduleResult unkStruct;
- this->unk42A = REG(15) + *unk_14;
- if (!func_80133038(globalCtx, D_80BAE820, &unkStruct) ||
- ((this->unk428 != unkStruct.unk0) && !func_80BABF64(this, globalCtx, &unkStruct))) {
+ this->unk42A = REG(15) + ((void)0, gSaveContext.save.daySpeed);
+ if (!Schedule_RunScript(globalCtx, D_80BAE820, &unkStruct) ||
+ ((this->unk428 != unkStruct.result) && !func_80BABF64(this, globalCtx, &unkStruct))) {
this->actor.flags &= ~ACTOR_FLAG_1;
- unkStruct.unk0 = 0;
+ unkStruct.result = 0;
} else {
this->actor.flags |= ACTOR_FLAG_1;
}
- this->unk428 = unkStruct.unk0;
+ this->unk428 = unkStruct.result;
func_80BAC2FC(this, globalCtx);
if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) {
Message_StartTextbox(globalCtx, 0x2A3A, &this->actor);
@@ -1203,8 +1242,7 @@ void func_80BAD380(EnSuttari* this, GlobalContext* globalCtx) {
}
void func_80BAD5F8(EnSuttari* this, GlobalContext* globalCtx) {
- u32* unk_14 = &gSaveContext.save.daySpeed;
- struct_80133038_arg2 unkStruct;
+ ScheduleResult unkStruct;
s16 curFrame = this->skelAnime.curFrame;
s16 frameCount = Animation_GetLastFrame(sAnimations[this->animationIndex].animation);
@@ -1212,22 +1250,22 @@ void func_80BAD5F8(EnSuttari* this, GlobalContext* globalCtx) {
this->animationIndex = 2;
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, this->animationIndex);
}
- this->unk42A = REG(15) + *unk_14;
- if (!func_80133038(globalCtx, D_80BAE820, &unkStruct) ||
- ((this->unk428 != unkStruct.unk0) && !func_80BABF64(this, globalCtx, &unkStruct))) {
+ this->unk42A = REG(15) + ((void)0, gSaveContext.save.daySpeed);
+ if (!Schedule_RunScript(globalCtx, D_80BAE820, &unkStruct) ||
+ ((this->unk428 != unkStruct.result) && !func_80BABF64(this, globalCtx, &unkStruct))) {
this->actor.flags &= ~ACTOR_FLAG_1;
- unkStruct.unk0 = 0;
+ unkStruct.result = 0;
} else {
this->actor.flags |= ACTOR_FLAG_1;
}
- this->unk428 = unkStruct.unk0;
+ this->unk428 = unkStruct.result;
func_80BAC2FC(this, globalCtx);
if ((this->unk430 == 1) && (this->unk404->unk1 == 0xFF)) {
Actor_MarkForDeath(&this->actor);
return;
}
func_80BAB434(this);
- if ((this->flags1 & 0x20) && (this->unk430 == 0) && (unkStruct.unk0 != 7)) {
+ if ((this->flags1 & 0x20) && (this->unk430 == 0) && (unkStruct.result != 7)) {
if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) {
Message_StartTextbox(globalCtx, 0x2A02, &this->actor);
this->actionFunc = func_80BAD130;
@@ -1239,8 +1277,7 @@ void func_80BAD5F8(EnSuttari* this, GlobalContext* globalCtx) {
}
void func_80BAD7F8(EnSuttari* this, GlobalContext* globalCtx) {
- u32* unk_14 = &gSaveContext.save.daySpeed;
- struct_80133038_arg2 unkStruct;
+ ScheduleResult unkStruct;
s16 curFrame = this->skelAnime.curFrame;
s16 frameCount = Animation_GetLastFrame(sAnimations[this->animationIndex].animation);
@@ -1251,21 +1288,21 @@ void func_80BAD7F8(EnSuttari* this, GlobalContext* globalCtx) {
this->animationIndex = 2;
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, this->animationIndex);
}
- this->unk42A = REG(15) + *unk_14;
- if (!func_80133038(globalCtx, D_80BAE820, &unkStruct) ||
- ((this->unk428 != unkStruct.unk0) && !func_80BABF64(this, globalCtx, &unkStruct))) {
+ this->unk42A = REG(15) + ((void)0, gSaveContext.save.daySpeed);
+ if (!Schedule_RunScript(globalCtx, D_80BAE820, &unkStruct) ||
+ ((this->unk428 != unkStruct.result) && !func_80BABF64(this, globalCtx, &unkStruct))) {
this->actor.flags &= ~ACTOR_FLAG_1;
- unkStruct.unk0 = 0;
+ unkStruct.result = 0;
} else {
this->actor.flags |= ACTOR_FLAG_1;
}
- this->unk428 = unkStruct.unk0;
+ this->unk428 = unkStruct.result;
func_80BAC2FC(this, globalCtx);
if ((this->unk430 == 1) && (this->unk404->unk1 == 0xFF)) {
Actor_MarkForDeath(&this->actor);
return;
}
- if ((this->flags1 & 0x20) && (unkStruct.unk0 != 9)) {
+ if ((this->flags1 & 0x20) && (unkStruct.result != 9)) {
if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) {
Message_StartTextbox(globalCtx, 0x2A02, &this->actor);
this->actionFunc = func_80BAD130;
diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c
index 29766a709..cd3dd7b07 100644
--- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c
+++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c
@@ -5,7 +5,6 @@
*/
#include "z_en_syateki_man.h"
-#include "objects/object_shn/object_shn.h"
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8 | ACTOR_FLAG_10 | ACTOR_FLAG_8000000)
@@ -48,9 +47,9 @@ const ActorInit En_Syateki_Man_InitVars = {
};
static AnimationInfo sAnimations[] = {
- { &object_shn_Anim_00D9D0, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -8.0f },
- { &object_shn_Anim_00DFEC, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -8.0f },
- { &object_shn_Anim_00D2F8, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -8.0f },
+ { &gBurlyGuyHandsOnTableAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -8.0f },
+ { &gSwampShootingGalleryManHeadScratchLoopAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -8.0f },
+ { &gSwampShootingGalleryManHeadScratchEndAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -8.0f },
};
static s16 D_809C91C8[] = {
@@ -132,11 +131,11 @@ void EnSyatekiMan_Init(Actor* thisx, GlobalContext* globalCtx) {
this->actor.targetMode = 1;
Actor_SetScale(&this->actor, 0.01f);
if (globalCtx->sceneNum == SCENE_SYATEKI_MORI) {
- SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gObjectShnSkel, &object_shn_Anim_00DFEC, this->jointTable,
- this->morphTable, OBJECT_SHN_LIMB_MAX);
+ SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gBurlyGuySkel, &gSwampShootingGalleryManHeadScratchLoopAnim,
+ this->jointTable, this->morphTable, BURLY_GUY_LIMB_MAX);
} else {
- SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gObjectShnSkel, &object_shn_Anim_00D9D0, this->jointTable,
- this->morphTable, OBJECT_SHN_LIMB_MAX);
+ SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gBurlyGuySkel, &gBurlyGuyHandsOnTableAnim, this->jointTable,
+ this->morphTable, BURLY_GUY_LIMB_MAX);
}
this->actor.colChkInfo.cylRadius = 100;
@@ -154,8 +153,8 @@ void EnSyatekiMan_Init(Actor* thisx, GlobalContext* globalCtx) {
this->unk_284 = 0;
this->unk_194 = 0;
this->unk_282 = 0;
- this->unk_264 = 0;
- this->unk_266 = 0;
+ this->eyeIndex = 0;
+ this->blinkTimer = 0;
if (globalCtx->sceneNum == SCENE_SYATEKI_MORI) {
this->path = sp34;
@@ -408,7 +407,7 @@ void func_809C6E30(EnSyatekiMan* this, GlobalContext* globalCtx) {
break;
}
- if (this->skelAnime.animation == &object_shn_Anim_00D2F8) {
+ if (this->skelAnime.animation == &gSwampShootingGalleryManHeadScratchEndAnim) {
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, 0);
}
@@ -1196,32 +1195,32 @@ void func_809C8BF0(EnSyatekiMan* this, GlobalContext* globalCtx) {
}
}
-void func_809C8DE8(EnSyatekiMan* this) {
- switch (this->unk_266) {
+void EnSyatekiMan_Blink(EnSyatekiMan* this) {
+ switch (this->blinkTimer) {
case 1:
- this->unk_264 = 2;
+ this->eyeIndex = 2;
break;
case 2:
- this->unk_264 = 1;
+ this->eyeIndex = 1;
break;
case 40:
- this->unk_266 = 0;
+ this->blinkTimer = 0;
default:
- this->unk_264 = 0;
+ this->eyeIndex = 0;
break;
}
- this->unk_266++;
+ this->blinkTimer++;
}
void EnSyatekiMan_Update(Actor* thisx, GlobalContext* globalCtx) {
EnSyatekiMan* this = THIS;
this->actionFunc(this, globalCtx);
- func_809C8DE8(this);
+ EnSyatekiMan_Blink(this);
this->actor.focus.pos.y = 70.0f;
Actor_SetFocus(&this->actor, 70.0f);
if (this->unk_26A != 1) {
@@ -1234,16 +1233,16 @@ s32 EnSyatekiMan_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx**
Actor* thisx) {
EnSyatekiMan* this = THIS;
- if ((globalCtx->sceneNum == SCENE_SYATEKI_MIZU) && (limbIndex == 15)) {
- *dList = object_shn_DL_00F2D0;
+ if ((globalCtx->sceneNum == SCENE_SYATEKI_MIZU) && (limbIndex == BURLY_GUY_LIMB_HEAD)) {
+ *dList = gTownShootingGalleryManHeadDL;
}
- if (limbIndex == 15) {
+ if (limbIndex == BURLY_GUY_LIMB_HEAD) {
Matrix_InsertTranslation(3000.0f, 0.0f, 0.0f, MTXMODE_APPLY);
Matrix_InsertZRotation_s(this->unk_258.x, MTXMODE_APPLY);
Matrix_InsertXRotation_s(this->unk_258.y, MTXMODE_APPLY);
Matrix_InsertTranslation(-3000.0f, 0.0f, 0.0f, MTXMODE_APPLY);
- } else if (limbIndex == 8) {
+ } else if (limbIndex == BURLY_GUY_LIMB_TORSO) {
Matrix_InsertXRotation_s(-this->unk_25E.y, MTXMODE_APPLY);
}
@@ -1254,36 +1253,36 @@ void EnSyatekiMan_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dL
EnSyatekiMan* this = THIS;
Vec3f sp18 = { 1600.0f, 0.0f, 0.0f };
- if (limbIndex == 15) {
+ if (limbIndex == BURLY_GUY_LIMB_HEAD) {
Matrix_MultiplyVector3fByState(&sp18, &this->actor.focus.pos);
}
}
void EnSyatekiMan_Draw(Actor* thisx, GlobalContext* globalCtx) {
- static TexturePtr D_809C94B8[] = {
- object_shn_Tex_005AC8,
- object_shn_Tex_0062C8,
- object_shn_Tex_0062C8,
+ static TexturePtr sEyeTextures[] = {
+ gSwampShootingGalleryManEyeOpenTex,
+ gSwampShootingGalleryManEyeHalfTex,
+ gSwampShootingGalleryManEyeHalfTex,
};
EnSyatekiMan* this = THIS;
s32 pad;
if (globalCtx->sceneNum == SCENE_SYATEKI_MIZU) {
- D_809C94B8[0] = object_shn_Tex_00FB90;
- D_809C94B8[1] = object_shn_Tex_010390;
- D_809C94B8[2] = object_shn_Tex_010390;
+ sEyeTextures[0] = gTownShootingGalleryManEyeOpenTex;
+ sEyeTextures[1] = gTownShootingGalleryManEyeClosedTex;
+ sEyeTextures[2] = gTownShootingGalleryManEyeClosedTex;
} else {
- D_809C94B8[0] = object_shn_Tex_005AC8;
- D_809C94B8[1] = object_shn_Tex_0062C8;
- D_809C94B8[2] = object_shn_Tex_0062C8;
+ sEyeTextures[0] = gSwampShootingGalleryManEyeOpenTex;
+ sEyeTextures[1] = gSwampShootingGalleryManEyeHalfTex;
+ sEyeTextures[2] = gSwampShootingGalleryManEyeHalfTex;
}
OPEN_DISPS(globalCtx->state.gfxCtx);
func_8012C5B0(globalCtx->state.gfxCtx);
- gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_809C94B8[this->unk_264]));
- gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(D_809C94B8[this->unk_264]));
+ gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sEyeTextures[this->eyeIndex]));
+ gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(sEyeTextures[this->eyeIndex]));
SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
EnSyatekiMan_OverrideLimbDraw, EnSyatekiMan_PostLimbDraw, &this->actor);
diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.h b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.h
index 80f2a1068..16585ac84 100644
--- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.h
+++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.h
@@ -2,6 +2,8 @@
#define Z_EN_SYATEKI_MAN_H
#include "global.h"
+#include "objects/object_shn/object_shn.h"
+
struct EnSyatekiMan;
@@ -24,12 +26,12 @@ typedef struct EnSyatekiMan {
/* 0x018C */ Path* path;
/* 0x0190 */ s32 unk_190;
/* 0x0194 */ s32 unk_194;
- /* 0x0198 */ Vec3s jointTable[16];
- /* 0x01F8 */ Vec3s morphTable[16];
+ /* 0x0198 */ Vec3s jointTable[BURLY_GUY_LIMB_MAX];
+ /* 0x01F8 */ Vec3s morphTable[BURLY_GUY_LIMB_MAX];
/* 0x0258 */ Vec3s unk_258;
/* 0x025E */ Vec3s unk_25E;
- /* 0x0264 */ s16 unk_264;
- /* 0x0266 */ s16 unk_266;
+ /* 0x0264 */ s16 eyeIndex;
+ /* 0x0266 */ s16 blinkTimer;
/* 0x0268 */ UNK_TYPE1 unk268[0x2];
/* 0x026A */ s16 unk_26A;
/* 0x026C */ s16 unk_26C;
diff --git a/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.c b/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.c
index 94f2f3495..617577884 100644
--- a/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.c
+++ b/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.c
@@ -61,12 +61,12 @@ static ColliderCylinderInit sCylinderInit = {
};
static AnimationInfo sAnimations[] = {
- { &object_okuta_Anim_00044C, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
- { &object_okuta_Anim_003958, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
- { &object_okuta_Anim_003B24, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
- { &object_okuta_Anim_003EE4, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -1.0f },
- { &object_okuta_Anim_00466C, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
- { &object_okuta_Anim_004204, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
+ { &gOctorokShootAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
+ { &gOctorokDieAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
+ { &gOctorokHideAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
+ { &gOctorokFloatAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -1.0f },
+ { &gOctorokAppearAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
+ { &gOctorokHitAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
};
#include "assets/overlays/ovl_En_Syateki_Okuta/ovl_En_Syateki_Okuta.c"
@@ -94,8 +94,8 @@ void EnSyatekiOkuta_Init(Actor* thisx, GlobalContext* globalCtx) {
s32 bgId;
Actor_ProcessInitChain(&this->actor, sInitChain);
- SkelAnime_Init(globalCtx, &this->skelAnime, &object_okuta_Skel_0033D0, &object_okuta_Anim_00466C, this->jointTable,
- this->morphTable, OBJECT_OKUTA_LIMB_MAX);
+ SkelAnime_Init(globalCtx, &this->skelAnime, &gOctorokSkel, &gOctorokAppearAnim, this->jointTable, this->morphTable,
+ OCTOROK_LIMB_MAX);
Collider_InitCylinder(globalCtx, &this->collider);
Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit);
@@ -153,7 +153,7 @@ s32 func_80A361F4(EnSyatekiOkuta* this) {
}
void func_80A36260(EnSyatekiOkuta* this) {
- Animation_PlayOnceSetSpeed(&this->skelAnime, &object_okuta_Anim_00466C, 0.0f);
+ Animation_PlayOnceSetSpeed(&this->skelAnime, &gOctorokAppearAnim, 0.0f);
this->actor.draw = NULL;
this->actionFunc = func_80A362A8;
}
@@ -173,7 +173,7 @@ void func_80A362A8(EnSyatekiOkuta* this, GlobalContext* globalCtx) {
}
void func_80A362F8(EnSyatekiOkuta* this) {
- Animation_PlayOnceSetSpeed(&this->skelAnime, &object_okuta_Anim_00466C, 0.0f);
+ Animation_PlayOnceSetSpeed(&this->skelAnime, &gOctorokAppearAnim, 0.0f);
this->actor.draw = NULL;
Actor_SetScale(&this->actor, 0.01f);
this->actionFunc = func_80A36350;
@@ -474,10 +474,10 @@ s32 EnSyatekiOkuta_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx
curFrame += this->unk_2A4;
}
- if (limbIndex == OBJECT_OKUTA_LIMB_0E) {
+ if (limbIndex == OCTOROK_LIMB_HEAD) {
sp20 = this->unk_1D8;
Matrix_Scale(sp20.x, sp20.y, sp20.z, MTXMODE_APPLY);
- } else if ((limbIndex == OBJECT_OKUTA_LIMB_0F) && (func_80A370EC(this, curFrame, &sp20))) {
+ } else if ((limbIndex == OCTOROK_LIMB_SNOUT) && (func_80A370EC(this, curFrame, &sp20))) {
Matrix_Scale(sp20.x, sp20.y, sp20.z, MTXMODE_APPLY);
}
@@ -493,7 +493,7 @@ void EnSyatekiOkuta_Draw(Actor* thisx, GlobalContext* globalCtx) {
if (this->unk_2A6 == 1) {
gSPSegment(POLY_OPA_DISP++, 0x08, D_801AEFA0);
} else {
- gSPSegment(POLY_OPA_DISP++, 0x08, ovl_En_Syateki_Okuta_DL_001640);
+ gSPSegment(POLY_OPA_DISP++, 0x08, gShootingGalleryOctorokBlueMaterialDL);
}
SkelAnime_DrawOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, EnSyatekiOkuta_OverrideLimbDraw,
@@ -512,9 +512,9 @@ void EnSyatekiOkuta_Draw(Actor* thisx, GlobalContext* globalCtx) {
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
if (this->unk_2A6 == 2) {
- gSPDisplayList(POLY_XLU_DISP++, ovl_En_Syateki_Okuta_DL_001A98);
+ gSPDisplayList(POLY_XLU_DISP++, gShootingGalleryOctorokCrossDL);
} else {
- gSPDisplayList(POLY_XLU_DISP++, ovl_En_Syateki_Okuta_DL_001B18);
+ gSPDisplayList(POLY_XLU_DISP++, gShootingGalleryOctorokCircleDL);
}
}
diff --git a/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.h b/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.h
index e083f26e1..17fafe94d 100644
--- a/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.h
+++ b/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.h
@@ -16,8 +16,8 @@ typedef struct EnSyatekiOkuta {
/* 0x188 */ EnSyatekiOkutaActionFunc actionFunc;
/* 0x18C */ ColliderCylinder collider;
/* 0x1DC */ Vec3f unk_1D8;
- /* 0x1E4 */ Vec3s jointTable[OBJECT_OKUTA_LIMB_MAX];
- /* 0x244 */ Vec3s morphTable[OBJECT_OKUTA_LIMB_MAX];
+ /* 0x1E4 */ Vec3s jointTable[OCTOROK_LIMB_MAX];
+ /* 0x244 */ Vec3s morphTable[OCTOROK_LIMB_MAX];
/* 0x2A4 */ s16 unk_2A4;
/* 0x2A6 */ s16 unk_2A6;
/* 0x2A8 */ UNK_TYPE1 unk_2A8[0x2];
diff --git a/src/overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.c b/src/overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.c
index ff6595044..e72cb296d 100644
--- a/src/overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.c
+++ b/src/overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.c
@@ -6,7 +6,6 @@
#include "z_en_syateki_wf.h"
#include "overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.h"
-#include "objects/object_wf/object_wf.h"
#define FLAGS (ACTOR_FLAG_10 | ACTOR_FLAG_20 | ACTOR_FLAG_8000000)
@@ -115,13 +114,13 @@ const ActorInit En_Syateki_Wf_InitVars = {
};
static AnimationInfo sAnimations[] = {
- { &object_wf_Anim_00A3CC, 2.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -1.0f },
- { &object_wf_Anim_005700, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -8.0f },
- { &object_wf_Anim_005700, 1.0f, 0.0f, 4.0f, ANIMMODE_ONCE, 1.0f },
- { &object_wf_Anim_005700, 1.0f, 4.0f, 8.0f, ANIMMODE_ONCE, 1.0f },
- { &object_wf_Anim_004A90, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
- { &object_wf_Anim_009A50, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 8.0f },
- { &object_wf_Anim_0053D0, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
+ { &gWolfosWaitingAnim, 2.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -1.0f },
+ { &gWolfosRunningAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -8.0f },
+ { &gWolfosRunningAnim, 1.0f, 0.0f, 4.0f, ANIMMODE_ONCE, 1.0f },
+ { &gWolfosRunningAnim, 1.0f, 4.0f, 8.0f, ANIMMODE_ONCE, 1.0f },
+ { &gWolfosBackflippingAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
+ { &gWolfosDamagedAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 8.0f },
+ { &gWolfosRearingUpFallingOverAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
};
static InitChainEntry sInitChain[] = {
@@ -134,10 +133,10 @@ static Vec3f D_80A20FC4 = { 0.0f, 0.5f, 0.0f };
static Vec3f D_80A20FD0 = { 1200.0f, 0.0f, 0.0f };
static TexturePtr sEyeTextures[] = {
- object_wf_Tex_007AA8,
- object_wf_Tex_0082A8,
- object_wf_Tex_0084A8,
- object_wf_Tex_0082A8,
+ gWolfosNormalEyeOpenTex,
+ gWolfosNormalEyeHalfTex,
+ gWolfosNormalEyeNarrowTex,
+ gWolfosNormalEyeHalfTex,
};
void EnSyatekiWf_Init(Actor* thisx, GlobalContext* globalCtx) {
@@ -181,11 +180,11 @@ void EnSyatekiWf_Init(Actor* thisx, GlobalContext* globalCtx) {
Collider_InitCylinder(globalCtx, &this->unk_300);
Collider_SetCylinder(globalCtx, &this->unk_300, &this->actor, &sCylinderInit2);
Collider_InitJntSph(globalCtx, &this->unk_34C);
- Collider_SetJntSph(globalCtx, &this->unk_34C, &this->actor, &sJntSphInit, &this->unk_36C);
+ Collider_SetJntSph(globalCtx, &this->unk_34C, &this->actor, &sJntSphInit, this->unk_36C);
this->unk_34C.elements->dim.worldSphere.radius = sJntSphInit.elements[0].dim.modelSphere.radius;
- SkelAnime_InitFlex(globalCtx, &this->skelAnime, &object_wf_Skel_0095D0, &object_wf_Anim_00A3CC, this->jointTable,
- this->morphTable, 22);
+ SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gWolfosNormalSkel, &gWolfosWaitingAnim, this->jointTable,
+ this->morphTable, WOLFOS_NORMAL_LIMB_MAX);
Actor_SetScale(&this->actor, 0.01f);
this->actor.hintId = 0x4C;
@@ -461,7 +460,7 @@ void EnSyatekiWf_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dLi
Vec3f sp18;
Collider_UpdateSpheres(limbIndex, &this->unk_34C);
- if (limbIndex == OBJECT_WF_2_LIMB_06) {
+ if (limbIndex == WOLFOS_NORMAL_LIMB_TAIL) {
Matrix_MultiplyVector3fByState(&D_80A20FD0, &sp18);
this->unk_300.dim.pos.x = sp18.x;
this->unk_300.dim.pos.y = sp18.y;
diff --git a/src/overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.h b/src/overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.h
index 23977fa02..a43c76f77 100644
--- a/src/overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.h
+++ b/src/overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.h
@@ -2,6 +2,7 @@
#define Z_EN_SYATEKI_WF_H
#include "global.h"
+#include "objects/object_wf/object_wf.h"
#define EN_SYATEKI_WF_GET_PARAM_F0(thisx) (((thisx)->params & 0xF0) >> 4)
#define EN_SYATEKI_WF_GET_PARAM_FF00(thisx) (((thisx)->params & 0xFF00) >> 8)
@@ -13,8 +14,8 @@ typedef void (*EnSyatekiWfActionFunc)(struct EnSyatekiWf*, GlobalContext*);
typedef struct EnSyatekiWf {
/* 0x000 */ Actor actor;
/* 0x144 */ SkelAnime skelAnime;
- /* 0x188 */ Vec3s jointTable[22];
- /* 0x20C */ Vec3s morphTable[22];
+ /* 0x188 */ Vec3s jointTable[WOLFOS_NORMAL_LIMB_MAX];
+ /* 0x20C */ Vec3s morphTable[WOLFOS_NORMAL_LIMB_MAX];
/* 0x290 */ UNK_TYPE1 unk_290[0x4];
/* 0x294 */ EnSyatekiWfActionFunc actionFunc;
/* 0x298 */ s16 unk_298;
@@ -29,7 +30,7 @@ typedef struct EnSyatekiWf {
/* 0x2B4 */ ColliderCylinder unk_2B4;
/* 0x300 */ ColliderCylinder unk_300;
/* 0x34C */ ColliderJntSph unk_34C;
- /* 0x36C */ ColliderJntSphElement unk_36C;
+ /* 0x36C */ ColliderJntSphElement unk_36C[1];
/* 0x3AC */ UNK_TYPE1 unk_3AC[0x20];
} EnSyatekiWf; // size = 0x3CC
diff --git a/src/overlays/actors/ovl_En_Tab/z_en_tab.c b/src/overlays/actors/ovl_En_Tab/z_en_tab.c
index 8edc05db3..e12f03c33 100644
--- a/src/overlays/actors/ovl_En_Tab/z_en_tab.c
+++ b/src/overlays/actors/ovl_En_Tab/z_en_tab.c
@@ -20,9 +20,22 @@ void EnTab_Draw(Actor* thisx, GlobalContext* globalCtx);
void func_80BE127C(EnTab* this, GlobalContext* globalCtx);
void func_80BE1348(EnTab* this, GlobalContext* globalCtx);
-s32 D_80BE18D0[] = {
- 0x0C000320, 0x0A00151B, 0x02093212, 0x010F0212, 0x00060003, 0x0400000E, 0x12000600, 0x020E0932, 0x12010105,
- 0x0A001519, 0x02093215, 0x050D0215, 0x37050501, 0x050E1537, 0x0505020E, 0x09321505, 0x01050000,
+static u8 D_80BE18D0[] = {
+ /* 0x00 */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(3, 0x24 - 0x04),
+ /* 0x04 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_MILK_BAR, 0x23 - 0x08),
+ /* 0x08 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 50, 18, 1, 0x1D - 0x0E),
+ /* 0x0E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(18, 0, 6, 0, 0x17 - 0x14),
+ /* 0x14 */ SCHEDULE_CMD_RET_VAL_L(0),
+ /* 0x17 */ SCHEDULE_CMD_RET_TIME(18, 0, 6, 0, 2),
+ /* 0x1D */ SCHEDULE_CMD_RET_TIME(9, 50, 18, 1, 1),
+ /* 0x23 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x24 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_MILK_BAR, 0x41 - 0x28),
+ /* 0x28 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(9, 50, 21, 5, 0x3B - 0x2E),
+ /* 0x2E */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 55, 5, 5, 0x35 - 0x34),
+ /* 0x34 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x35 */ SCHEDULE_CMD_RET_TIME(21, 55, 5, 5, 2),
+ /* 0x3B */ SCHEDULE_CMD_RET_TIME(9, 50, 21, 5, 1),
+ /* 0x41 */ SCHEDULE_CMD_RET_NONE(),
};
s32 D_80BE1914[] = {
@@ -353,7 +366,7 @@ s32* func_80BE0E04(EnTab* this, GlobalContext* globalCtx) {
return NULL;
}
-s32 func_80BE0F04(EnTab* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BE0F04(EnTab* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret = false;
EnGm* sp28 = func_80BE04E0(this, globalCtx, ACTORCAT_NPC, ACTOR_EN_GM);
@@ -372,7 +385,7 @@ s32 func_80BE0F04(EnTab* this, GlobalContext* globalCtx, struct_80133038_arg2* a
return ret;
}
-s32 func_80BE0FC4(EnTab* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BE0FC4(EnTab* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 pad;
Math_Vec3f_Copy(&this->actor.world.pos, &D_80BE1B04);
@@ -386,12 +399,12 @@ s32 func_80BE0FC4(EnTab* this, GlobalContext* globalCtx, struct_80133038_arg2* a
return true;
}
-s32 func_80BE1060(EnTab* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80BE1060(EnTab* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 ret;
this->unk_2FC = 0;
- switch (arg2->unk0) {
+ switch (arg2->result) {
case 1:
ret = func_80BE0F04(this, globalCtx, arg2);
break;
@@ -459,21 +472,20 @@ void func_80BE1224(EnTab* this, GlobalContext* globalCtx) {
}
void func_80BE127C(EnTab* this, GlobalContext* globalCtx) {
- u32* unk_14 = &gSaveContext.save.daySpeed;
- struct_80133038_arg2 sp18;
+ ScheduleResult sp18;
- this->unk_31A = REG(15) + *unk_14;
+ this->unk_31A = REG(15) + ((void)0, gSaveContext.save.daySpeed);
- if (!func_80133038(globalCtx, D_80BE18D0, &sp18) ||
- ((this->unk_1D8 != sp18.unk0) && !func_80BE1060(this, globalCtx, &sp18))) {
+ if (!Schedule_RunScript(globalCtx, D_80BE18D0, &sp18) ||
+ ((this->unk_1D8 != sp18.result) && !func_80BE1060(this, globalCtx, &sp18))) {
this->actor.shape.shadowDraw = NULL;
this->actor.flags &= ~ACTOR_FLAG_1;
- sp18.unk0 = 0;
+ sp18.result = 0;
} else {
this->actor.shape.shadowDraw = ActorShadow_DrawCircle;
this->actor.flags |= ACTOR_FLAG_1;
}
- this->unk_1D8 = sp18.unk0;
+ this->unk_1D8 = sp18.result;
func_80BE1224(this, globalCtx);
}
diff --git a/src/overlays/actors/ovl_En_Tk/z_en_tk.c b/src/overlays/actors/ovl_En_Tk/z_en_tk.c
index 1ca9b0d6e..3bc00d6c2 100644
--- a/src/overlays/actors/ovl_En_Tk/z_en_tk.c
+++ b/src/overlays/actors/ovl_En_Tk/z_en_tk.c
@@ -24,8 +24,8 @@ void func_80AECB0C(EnTk* this, GlobalContext* globalCtx);
void func_80AECB6C(EnTk* this, GlobalContext* globalCtx);
void func_80AECE0C(EnTk* this, GlobalContext* globalCtx);
s32 func_80AECE60(EnTk* this, GlobalContext* globalCtx);
-s32 func_80AED354(EnTk* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2);
-s32 func_80AED38C(EnTk* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2);
+s32 func_80AED354(EnTk* this, GlobalContext* globalCtx, ScheduleResult* arg2);
+s32 func_80AED38C(EnTk* this, GlobalContext* globalCtx, ScheduleResult* arg2);
void func_80AED4F8(EnTk* this, GlobalContext* globalCtx);
void func_80AED610(EnTk* this, GlobalContext* globalCtx);
void func_80AED898(EnTk* this, GlobalContext* globalCtx);
@@ -62,11 +62,11 @@ void func_80AEF5F4(Actor* thisx, GlobalContext* globalCtx);
static s32 D_80AF0050;
-static u32 D_80AEF800[] = {
- 0x03060012,
- 0x00000105,
- 0x0E060012,
- 0x00010500,
+static u8 D_80AEF800[] = {
+ /* 0x0 */ SCHEDULE_CMD_CHECK_TIME_RANGE_L(6, 0, 18, 0, 0x8 - 0x7),
+ /* 0x7 */ SCHEDULE_CMD_RET_NONE(),
+ /* 0x8 */ SCHEDULE_CMD_RET_TIME(6, 0, 18, 0, 1),
+ /* 0xE */ SCHEDULE_CMD_RET_NONE(),
};
const ActorInit En_Tk_InitVars = {
@@ -313,8 +313,8 @@ void func_80AECB6C(EnTk* this, GlobalContext* globalCtx) {
s32 temp3;
f32 sp48;
f32 sp44;
+ ScheduleResult sp34;
u8 temp4;
- struct_80133038_arg2 sp34;
this->actor.textId = 0;
if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) {
@@ -347,14 +347,14 @@ void func_80AECB6C(EnTk* this, GlobalContext* globalCtx) {
this->unk_2DC -= temp3;
this->unk_2E0 += REG(15);
- if (func_80133038(globalCtx, (UNK_TYPE*)D_80AEF800, &sp34)) {
- if ((this->unk_3CC != sp34.unk0) && !func_80AED354(this, globalCtx, &sp34)) {
+ if (Schedule_RunScript(globalCtx, D_80AEF800, &sp34)) {
+ if ((this->unk_3CC != sp34.result) && !func_80AED354(this, globalCtx, &sp34)) {
return;
}
- temp4 = sp34.unk0;
+ temp4 = sp34.result;
} else {
- sp34.unk0 = 0;
- temp4 = sp34.unk0;
+ sp34.result = 0;
+ temp4 = sp34.result;
}
if (!temp4 && (this->unk_3CC != 0)) {
@@ -365,7 +365,7 @@ void func_80AECB6C(EnTk* this, GlobalContext* globalCtx) {
this->actor.draw = EnTk_Draw;
}
- this->unk_3CC = sp34.unk0;
+ this->unk_3CC = sp34.result;
func_80AECE0C(this, globalCtx);
if (this->unk_3CE & 8) {
@@ -492,20 +492,20 @@ s32 func_80AECE60(EnTk* this, GlobalContext* globalCtx) {
return false;
}
-s32 func_80AED354(EnTk* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
+s32 func_80AED354(EnTk* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
s32 phi_v1 = false;
- if (arg2->unk0 != 0) {
+ if (arg2->result != 0) {
phi_v1 = func_80AED38C(this, globalCtx, arg2);
}
return phi_v1;
}
-s32 func_80AED38C(EnTk* this, GlobalContext* globalCtx, struct_80133038_arg2* arg2) {
- u16 sp1E = gSaveContext.save.time - 0x3FFC;
+s32 func_80AED38C(EnTk* this, GlobalContext* globalCtx, ScheduleResult* arg2) {
+ u16 sp1E = SCHEDULE_TIME_NOW;
u8 params = ENTK_GET_F800(&this->actor);
u16 phi_a1;
- s32 idx = arg2->unk0 - 1;
+ s32 idx = arg2->result - 1;
this->unk_3C8 = SubS_GetAdditionalPath(globalCtx, params, D_80AEF8E8[idx + 1]);
if (this->unk_3C8 == 0) {
@@ -515,10 +515,10 @@ s32 func_80AED38C(EnTk* this, GlobalContext* globalCtx, struct_80133038_arg2* ar
if ((this->unk_3CC <= 0) && (this->unk_3CC != 0) && (this->unk_3D0 >= 0)) {
phi_a1 = sp1E;
} else {
- phi_a1 = arg2->unk4;
+ phi_a1 = arg2->time0;
}
- this->unk_3E4 = arg2->unk8 - phi_a1;
+ this->unk_3E4 = arg2->time1 - phi_a1;
this->unk_3F0 = sp1E - phi_a1;
phi_a1 = this->unk_3C8->count - 2;
this->unk_3E8 = this->unk_3E4 / phi_a1;
diff --git a/src/overlays/actors/ovl_En_Wf/z_en_wf.c b/src/overlays/actors/ovl_En_Wf/z_en_wf.c
index 3b92a8eab..fdd82b864 100644
--- a/src/overlays/actors/ovl_En_Wf/z_en_wf.c
+++ b/src/overlays/actors/ovl_En_Wf/z_en_wf.c
@@ -7,7 +7,6 @@
#include "z_en_wf.h"
#include "overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.h"
#include "overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.h"
-#include "objects/object_wf/object_wf.h"
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4 | ACTOR_FLAG_10 | ACTOR_FLAG_400)
@@ -240,18 +239,18 @@ static DamageTable sDamageTable2 = {
static CollisionCheckInfoInit sColChkInfoInit = { 8, 50, 100, MASS_HEAVY };
-static TexturePtr D_809942B0[] = {
- object_wf_Tex_007AA8,
- object_wf_Tex_0082A8,
- object_wf_Tex_0084A8,
- object_wf_Tex_0082A8,
+static TexturePtr sNormalEyeTextures[] = {
+ gWolfosNormalEyeOpenTex,
+ gWolfosNormalEyeHalfTex,
+ gWolfosNormalEyeNarrowTex,
+ gWolfosNormalEyeHalfTex,
};
-static TexturePtr D_809942C0[] = {
- object_wf_Tex_000300,
- object_wf_Tex_0027D8,
- object_wf_Tex_0029D8,
- object_wf_Tex_0027D8,
+static TexturePtr sWhiteEyeTextures[] = {
+ gWolfosWhiteEyeOpenTex,
+ gWolfosWhiteEyeHalfTex,
+ gWolfosWhiteEyeNarrowTex,
+ gWolfosWhiteEyeHalfTex,
};
static InitChainEntry sInitChain[] = {
@@ -318,16 +317,16 @@ void EnWf_Init(Actor* thisx, GlobalContext* globalCtx) {
Actor_SetScale(&this->actor, 0.0075f);
if (this->actor.params == 0) {
- SkelAnime_InitFlex(globalCtx, &this->skelAnime, &object_wf_Skel_0095D0, &object_wf_Anim_00A3CC,
- this->jointTable, this->morphTable, 22);
+ SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gWolfosNormalSkel, &gWolfosWaitingAnim, this->jointTable,
+ this->morphTable, WOLFOS_NORMAL_LIMB_MAX);
this->actor.hintId = 0x4C;
CollisionCheck_SetInfo(&this->actor.colChkInfo, &sDamageTable2, &sColChkInfoInit);
this->collider1.elements[0].info.toucher.damage = 8;
this->collider1.elements[1].info.toucher.damage = 8;
this->actor.colChkInfo.health = 6;
} else {
- SkelAnime_InitFlex(globalCtx, &this->skelAnime, &object_wf_Skel_003BC0, &object_wf_Anim_00A3CC,
- this->jointTable, this->morphTable, 22);
+ SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gWolfosWhiteSkel, &gWolfosWaitingAnim, this->jointTable,
+ this->morphTable, WOLFOS_WHITE_LIMB_MAX);
this->actor.hintId = 0x57;
CollisionCheck_SetInfo(&this->actor.colChkInfo, &sDamageTable1, &sColChkInfoInit);
}
@@ -342,9 +341,9 @@ void EnWf_Init(Actor* thisx, GlobalContext* globalCtx) {
func_800BC154(globalCtx, &globalCtx->actorCtx, &this->actor, 5);
if (D_809942D8 == 0) {
- for (i = 0; i < ARRAY_COUNT(D_809942B0); i++) {
- D_809942B0[i] = Lib_SegmentedToVirtual(D_809942B0[i]);
- D_809942C0[i] = Lib_SegmentedToVirtual(D_809942C0[i]);
+ for (i = 0; i < ARRAY_COUNT(sNormalEyeTextures); i++) {
+ sNormalEyeTextures[i] = Lib_SegmentedToVirtual(sNormalEyeTextures[i]);
+ sWhiteEyeTextures[i] = Lib_SegmentedToVirtual(sWhiteEyeTextures[i]);
}
D_809942D8 = 1;
}
@@ -382,14 +381,14 @@ void func_80990854(EnWf* this, GlobalContext* globalCtx) {
}
}
-void func_809908E0(EnWf* this) {
- if (this->unk_294 != 0) {
- this->unk_294++;
- if (this->unk_294 == 4) {
- this->unk_294 = 0;
+void EnWf_Blink(EnWf* this) {
+ if (this->eyeIndex != 0) {
+ this->eyeIndex++;
+ if (this->eyeIndex == 4) {
+ this->eyeIndex = 0;
}
} else if (Rand_ZeroOne() < 0.05f) {
- this->unk_294 = 1;
+ this->eyeIndex = 1;
}
}
@@ -550,7 +549,7 @@ void func_80990F50(EnWf* this, GlobalContext* globalCtx) {
}
void func_80990FC8(EnWf* this) {
- Animation_Change(&this->skelAnime, &object_wf_Anim_0053D0, 0.5f, 0.0f, 7.0f, 3, 0.0f);
+ Animation_Change(&this->skelAnime, &gWolfosRearingUpFallingOverAnim, 0.5f, 0.0f, 7.0f, 3, 0.0f);
this->unk_2A0 = 5;
this->actor.flags |= ACTOR_FLAG_1;
this->actionFunc = func_80991040;
@@ -573,7 +572,7 @@ void func_80991040(EnWf* this, GlobalContext* globalCtx) {
void func_809910F0(EnWf* this) {
this->collider2.base.acFlags &= ~AC_ON;
this->actor.speedXZ = 0.0f;
- Animation_Change(&this->skelAnime, &object_wf_Anim_0053D0, 0.5f, 0.0f, 7.0f, 3, -5.0f);
+ Animation_Change(&this->skelAnime, &gWolfosRearingUpFallingOverAnim, 0.5f, 0.0f, 7.0f, 3, -5.0f);
this->unk_2A0 = 5;
this->actionFunc = func_80991174;
}
@@ -592,7 +591,7 @@ void func_80991174(EnWf* this, GlobalContext* globalCtx) {
void func_80991200(EnWf* this) {
this->collider2.base.acFlags |= AC_ON;
- Animation_MorphToLoop(&this->skelAnime, &object_wf_Anim_00A3CC, -4.0f);
+ Animation_MorphToLoop(&this->skelAnime, &gWolfosWaitingAnim, -4.0f);
this->unk_2A0 = (s32)Rand_ZeroFloat(10.0f) + 2;
this->actor.world.rot.y = this->actor.shape.rot.y;
this->actionFunc = func_80991280;
@@ -643,7 +642,7 @@ void func_80991280(EnWf* this, GlobalContext* globalCtx) {
void func_80991438(EnWf* this) {
this->collider2.base.acFlags |= AC_ON;
- Animation_MorphToLoop(&this->skelAnime, &object_wf_Anim_005700, -4.0f);
+ Animation_MorphToLoop(&this->skelAnime, &gWolfosRunningAnim, -4.0f);
this->actor.world.rot.y = this->actor.shape.rot.y;
this->actor.speedXZ = 8.0f;
this->actionFunc = func_8099149C;
@@ -704,7 +703,7 @@ void func_8099149C(EnWf* this, GlobalContext* globalCtx) {
}
void func_80991738(EnWf* this) {
- Animation_MorphToLoop(&this->skelAnime, &object_wf_Anim_009808, -4.0f);
+ Animation_MorphToLoop(&this->skelAnime, &gWolfosSidesteppingAnim, -4.0f);
this->actionFunc = func_8099177C;
}
@@ -756,7 +755,7 @@ void func_8099177C(EnWf* this, GlobalContext* globalCtx) {
void func_80991948(EnWf* this) {
this->collider2.base.acFlags |= AC_ON;
- Animation_MorphToLoop(&this->skelAnime, &object_wf_Anim_005700, -4.0f);
+ Animation_MorphToLoop(&this->skelAnime, &gWolfosRunningAnim, -4.0f);
if (Rand_ZeroOne() > 0.5f) {
this->unk_29A = 16000;
} else {
@@ -810,7 +809,7 @@ void func_809919F4(EnWf* this, GlobalContext* globalCtx) {
void func_80991C04(EnWf* this) {
this->collider2.base.acFlags |= AC_ON;
- Animation_PlayOnce(&this->skelAnime, &object_wf_Anim_004638);
+ Animation_PlayOnce(&this->skelAnime, &gWolfosSlashingAnim);
this->collider1.base.atFlags &= ~AT_BOUNCED;
this->actor.shape.rot.y = this->actor.yawTowardsPlayer;
this->unk_2A0 = 7;
@@ -880,7 +879,7 @@ void func_80991FD8(EnWf* this) {
if (this->skelAnime.curFrame > 15.0f) {
phi_f0 = 15.0f;
}
- Animation_Change(&this->skelAnime, &object_wf_Anim_004638, -0.5f, this->skelAnime.curFrame - 1.0f, phi_f0, 3, 0.0f);
+ Animation_Change(&this->skelAnime, &gWolfosSlashingAnim, -0.5f, this->skelAnime.curFrame - 1.0f, phi_f0, 3, 0.0f);
this->collider1.base.atFlags &= ~AT_ON;
this->actionFunc = func_80992068;
}
@@ -923,7 +922,7 @@ void func_80992068(EnWf* this, GlobalContext* globalCtx) {
void func_8099223C(EnWf* this) {
this->collider2.base.acFlags &= ~AC_ON;
- Animation_MorphToPlayOnce(&this->skelAnime, &object_wf_Anim_004A90, -3.0f);
+ Animation_MorphToPlayOnce(&this->skelAnime, &gWolfosBackflippingAnim, -3.0f);
this->unk_2A0 = 0;
this->actor.speedXZ = -6.0f;
this->actor.shape.rot.y = this->actor.yawTowardsPlayer;
@@ -973,7 +972,7 @@ void func_809923E4(EnWf* this, GlobalContext* globalCtx) {
void func_8099245C(EnWf* this) {
this->collider2.base.acFlags &= ~AC_ON;
- Animation_MorphToPlayOnce(&this->skelAnime, &object_wf_Anim_009A50, -4.0f);
+ Animation_MorphToPlayOnce(&this->skelAnime, &gWolfosDamagedAnim, -4.0f);
if (this->actor.bgCheckFlags & 1) {
this->actor.speedXZ = -4.0f;
}
@@ -1021,8 +1020,8 @@ void func_809924EC(EnWf* this, GlobalContext* globalCtx) {
void func_809926D0(EnWf* this) {
this->collider2.base.acFlags &= ~AC_ON;
- Animation_Change(&this->skelAnime, &object_wf_Anim_004A90, -1.0f,
- Animation_GetLastFrame(&object_wf_Anim_004A90.common), 0.0f, 2, -3.0f);
+ Animation_Change(&this->skelAnime, &gWolfosBackflippingAnim, -1.0f,
+ Animation_GetLastFrame(&gWolfosBackflippingAnim.common), 0.0f, 2, -3.0f);
this->unk_2A0 = 0;
this->actor.speedXZ = 6.5f;
this->actor.velocity.y = 15.0f;
@@ -1053,8 +1052,8 @@ void func_8099282C(EnWf* this) {
this->collider1.base.atFlags &= ~AT_ON;
this->unk_2A0 = 10;
this->actor.speedXZ = 0.0f;
- Animation_Change(&this->skelAnime, &object_wf_Anim_004C44, -1.0f,
- Animation_GetLastFrame(&object_wf_Anim_004C44.common), 0.0f, 2, -2.0f);
+ Animation_Change(&this->skelAnime, &gWolfosBlockingAnim, -1.0f, Animation_GetLastFrame(&gWolfosBlockingAnim.common),
+ 0.0f, 2, -2.0f);
this->actionFunc = func_809928CC;
}
@@ -1091,7 +1090,7 @@ void func_80992A74(EnWf* this, GlobalContext* globalCtx) {
f32 temp_f0;
this->collider2.base.acFlags |= AC_ON;
- Animation_MorphToLoop(&this->skelAnime, &object_wf_Anim_005700, -4.0f);
+ Animation_MorphToLoop(&this->skelAnime, &gWolfosRunningAnim, -4.0f);
player = GET_PLAYER(globalCtx);
temp_f0 = Math_SinS((player->actor.shape.rot.y + this->unk_29A) - this->actor.yawTowardsPlayer);
if (temp_f0 > 0.0f) {
@@ -1153,7 +1152,7 @@ void func_80992B8C(EnWf* this, GlobalContext* globalCtx) {
void func_80992D6C(EnWf* this) {
this->collider2.base.acFlags &= ~AC_ON;
- Animation_MorphToPlayOnce(&this->skelAnime, &object_wf_Anim_0053D0, -4.0f);
+ Animation_MorphToPlayOnce(&this->skelAnime, &gWolfosRearingUpFallingOverAnim, -4.0f);
this->actor.world.rot.y = this->actor.yawTowardsPlayer;
if (this->actor.bgCheckFlags & 1) {
this->actor.speedXZ = -6.0f;
@@ -1205,7 +1204,7 @@ void func_80992E0C(EnWf* this, GlobalContext* globalCtx) {
}
void func_80992FD4(EnWf* this) {
- Animation_MorphToLoop(&this->skelAnime, &object_wf_Anim_00A3CC, -4.0f);
+ Animation_MorphToLoop(&this->skelAnime, &gWolfosWaitingAnim, -4.0f);
this->actionFunc = func_80993018;
}
@@ -1232,7 +1231,7 @@ void func_80993018(EnWf* this, GlobalContext* globalCtx) {
}
void func_80993148(EnWf* this) {
- Animation_MorphToLoop(&this->skelAnime, &object_wf_Anim_005700, -4.0f);
+ Animation_MorphToLoop(&this->skelAnime, &gWolfosRunningAnim, -4.0f);
this->actor.speedXZ = 0.0f;
this->actionFunc = func_80993194;
}
@@ -1277,7 +1276,7 @@ void func_80993194(EnWf* this, GlobalContext* globalCtx) {
}
void func_80993350(EnWf* this) {
- Animation_MorphToLoop(&this->skelAnime, &object_wf_Anim_005700, -4.0f);
+ Animation_MorphToLoop(&this->skelAnime, &gWolfosRunningAnim, -4.0f);
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_WOLFOS_APPEAR);
this->actionFunc = func_809933A0;
}
@@ -1317,7 +1316,7 @@ void func_809933A0(EnWf* this, GlobalContext* globalCtx) {
}
void func_80993524(EnWf* this) {
- Animation_MorphToLoop(&this->skelAnime, &object_wf_Anim_005700, -4.0f);
+ Animation_MorphToLoop(&this->skelAnime, &gWolfosRunningAnim, -4.0f);
this->actor.speedXZ = 6.0f;
this->actor.world.rot.y = this->actor.shape.rot.y;
this->actionFunc = func_8099357C;
@@ -1477,7 +1476,7 @@ void EnWf_Update(Actor* thisx, GlobalContext* globalCtx) {
func_8099386C(this, globalCtx);
if (this->actionFunc != func_809923E4) {
- func_809908E0(this);
+ EnWf_Blink(this);
}
this->actionFunc(this, globalCtx);
@@ -1535,7 +1534,7 @@ void EnWf_Update(Actor* thisx, GlobalContext* globalCtx) {
s32 EnWf_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
EnWf* this = THIS;
- if ((limbIndex == 17) || (limbIndex == 18)) {
+ if ((limbIndex == WOLFOS_NORMAL_LIMB_HEAD) || (limbIndex == WOLFOS_NORMAL_LIMB_EYES)) {
rot->y -= this->unk_29E;
}
return false;
@@ -1554,7 +1553,7 @@ void EnWf_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec
Matrix_GetStateTranslation(&this->limbPos[D_809942FC[limbIndex]]);
}
- if (limbIndex == 6) {
+ if (limbIndex == WOLFOS_NORMAL_LIMB_TAIL) {
Matrix_GetStateTranslationAndScaledX(1200.0f, &sp20);
this->collider3.dim.pos.x = sp20.x;
this->collider3.dim.pos.y = sp20.y;
@@ -1571,9 +1570,9 @@ void EnWf_Draw(Actor* thisx, GlobalContext* globalCtx) {
func_8012C28C(globalCtx->state.gfxCtx);
if (this->actor.params == 0) {
- gSPSegment(POLY_OPA_DISP++, 0x08, D_809942B0[this->unk_294]);
+ gSPSegment(POLY_OPA_DISP++, 0x08, sNormalEyeTextures[this->eyeIndex]);
} else {
- gSPSegment(POLY_OPA_DISP++, 0x08, D_809942C0[this->unk_294]);
+ gSPSegment(POLY_OPA_DISP++, 0x08, sWhiteEyeTextures[this->eyeIndex]);
}
CLOSE_DISPS(globalCtx->state.gfxCtx);
diff --git a/src/overlays/actors/ovl_En_Wf/z_en_wf.h b/src/overlays/actors/ovl_En_Wf/z_en_wf.h
index e697ef072..94cfb18e7 100644
--- a/src/overlays/actors/ovl_En_Wf/z_en_wf.h
+++ b/src/overlays/actors/ovl_En_Wf/z_en_wf.h
@@ -2,6 +2,7 @@
#define Z_EN_WF_H
#include "global.h"
+#include "objects/object_wf/object_wf.h"
struct EnWf;
@@ -12,10 +13,10 @@ typedef void (*EnWfActionFunc)(struct EnWf*, GlobalContext*);
typedef struct EnWf {
/* 0x0000 */ Actor actor;
/* 0x0144 */ SkelAnime skelAnime;
- /* 0x0188 */ Vec3s jointTable[22];
- /* 0x020C */ Vec3s morphTable[22];
+ /* 0x0188 */ Vec3s jointTable[WOLFOS_NORMAL_LIMB_MAX];
+ /* 0x020C */ Vec3s morphTable[WOLFOS_NORMAL_LIMB_MAX];
/* 0x0290 */ EnWfActionFunc actionFunc;
- /* 0x0294 */ u8 unk_294;
+ /* 0x0294 */ u8 eyeIndex;
/* 0x0295 */ u8 unk_295;
/* 0x0296 */ u8 drawDmgEffType;
/* 0x0298 */ s16 unk_298;
diff --git a/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.c b/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.c
index a8745c015..f91385daa 100644
--- a/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.c
+++ b/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.c
@@ -4,6 +4,7 @@
* Description: Unused OoT Saria's Song Ocarina Effect
*/
+#include "prevent_bss_reordering.h"
#include "z_oceff_wipe3.h"
#define FLAGS (ACTOR_FLAG_10 | ACTOR_FLAG_2000000)
diff --git a/tools/disasm/files.txt b/tools/disasm/files.txt
index 7cb0f2be1..00d0a80f2 100644
--- a/tools/disasm/files.txt
+++ b/tools/disasm/files.txt
@@ -418,7 +418,7 @@
0x8012F2E0 : "z_scene",
0x801307C0 : "z_scene_proc",
0x801322C0 : "z_scene_table",
- 0x801323D0 : "code_801323D0",
+ 0x801323D0 : "z_schedule",
0x801330E0 : "z_skelanime",
0x80137970 : "z_skin",
0x80138410 : "z_skin_awb",
@@ -554,7 +554,7 @@
0x801C2730 : "",
0x801C3B60 : "z_scene_proc",
0x801C3CA0 : "z_scene_table",
- 0x801C5C50 : "",
+ 0x801C5C50 : "z_schedule",
0x801C5CB0 : "z_skelanime",
0x801C5CD0 : "z_skin_matrix",
0x801C5D10 : "z_sub_s",
diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt
index 7d2b4a438..26186ce34 100644
--- a/tools/disasm/functions.txt
+++ b/tools/disasm/functions.txt
@@ -2499,26 +2499,26 @@
0x80132338:("Entrance_GetSceneNumAbsolute",),
0x80132374:("Entrance_GetSpawnNum",),
0x801323A0:("Entrance_GetTransitionFlags",),
- 0x801323D0:("func_801323D0",),
- 0x80132428:("func_80132428",),
- 0x80132494:("func_80132494",),
- 0x801326B8:("func_801326B8",),
- 0x801328F0:("func_801328F0",),
- 0x80132920:("func_80132920",),
- 0x80132938:("func_80132938",),
- 0x80132954:("func_80132954",),
- 0x8013296C:("func_8013296C",),
- 0x80132A18:("func_80132A18",),
- 0x80132A3C:("func_80132A3C",),
- 0x80132A80:("func_80132A80",),
- 0x80132AD8:("func_80132AD8",),
- 0x80132B24:("func_80132B24",),
- 0x80132B84:("func_80132B84",),
- 0x80132D70:("func_80132D70",),
- 0x80132E9C:("func_80132E9C",),
- 0x80132FDC:("func_80132FDC",),
- 0x80133000:("func_80133000",),
- 0x80133038:("func_80133038",),
+ 0x801323D0:("Schedule_CheckFlagS",),
+ 0x80132428:("Schedule_CheckFlagL",),
+ 0x80132494:("Schedule_CheckTimeRangeS",),
+ 0x801326B8:("Schedule_CheckTimeRangeL",),
+ 0x801328F0:("Schedule_ReturnValueL",),
+ 0x80132920:("Schedule_ReturnNone",),
+ 0x80132938:("Schedule_ReturnEmpty",),
+ 0x80132954:("Schedule_Nop",),
+ 0x8013296C:("Schedule_CheckMiscS",),
+ 0x80132A18:("Schedule_ReturnValueS",),
+ 0x80132A3C:("Schedule_CheckSceneS",),
+ 0x80132A80:("Schedule_CheckSceneL",),
+ 0x80132AD8:("Schedule_CheckDayS",),
+ 0x80132B24:("Schedule_CheckDayL",),
+ 0x80132B84:("Schedule_ReturnTime",),
+ 0x80132D70:("Schedule_CheckBeforeTimeS",),
+ 0x80132E9C:("Schedule_CheckBeforeTimeL",),
+ 0x80132FDC:("Schedule_BranchL",),
+ 0x80133000:("Schedule_JumpL",),
+ 0x80133038:("Schedule_RunScript",),
0x801330E0:("SkelAnime_DrawLimbLod",),
0x801332F0:("SkelAnime_DrawLod",),
0x801334A0:("SkelAnime_DrawFlexLimbLod",),
@@ -8429,7 +8429,7 @@
0x80990784:("EnWf_Destroy",),
0x809907D4:("func_809907D4",),
0x80990854:("func_80990854",),
- 0x809908E0:("func_809908E0",),
+ 0x809908E0:("EnWf_Blink",),
0x80990948:("func_80990948",),
0x80990C6C:("func_80990C6C",),
0x80990E4C:("func_80990E4C",),
@@ -9107,7 +9107,7 @@
0x809C8808:("func_809C8808",),
0x809C898C:("func_809C898C",),
0x809C8BF0:("func_809C8BF0",),
- 0x809C8DE8:("func_809C8DE8",),
+ 0x809C8DE8:("EnSyatekiMan_Blink",),
0x809C8E44:("EnSyatekiMan_Update",),
0x809C8EE4:("EnSyatekiMan_OverrideLimbDraw",),
0x809C8FAC:("EnSyatekiMan_PostLimbDraw",),
diff --git a/tools/namefixer.py b/tools/namefixer.py
index 5e0114881..2dcc23187 100755
--- a/tools/namefixer.py
+++ b/tools/namefixer.py
@@ -510,7 +510,7 @@ wordReplace = {
"func_80158FB0": "Message_LoadTimeNES",
"func_8015926C": "Message_LoadAreaTextNES",
"func_8015E750": "Message_FindCreditsMessage",
-
+ "func_80133038": "Schedule_RunScript",
# Struct members
"skelAnime.unk03": "skelAnime.taper",
diff --git a/tools/overlayhelpers/scheduledis.py b/tools/overlayhelpers/scheduledis.py
new file mode 100755
index 000000000..b441b94c7
--- /dev/null
+++ b/tools/overlayhelpers/scheduledis.py
@@ -0,0 +1,264 @@
+#!/usr/bin/env python3
+#
+# MM Event Script Disassembler
+#
+
+import argparse, os, struct, math
+from actor_symbols import resolve_symbol
+
+cmd_info = [
+ ('SCHEDULE_CMD_CHECK_FLAG_S', 0x04, '>BBb', (2, )),
+ ('SCHEDULE_CMD_CHECK_FLAG_L', 0x05, '>BBh', (2, )),
+ ('SCHEDULE_CMD_CHECK_TIME_RANGE_S', 0x06, '>BBBBb', (4, )),
+ ('SCHEDULE_CMD_CHECK_TIME_RANGE_L', 0x07, '>BBBBh', (4, )),
+ ('SCHEDULE_CMD_RET_VAL_L', 0x03, '>H', ( )),
+ ('SCHEDULE_CMD_RET_NONE', 0x01, '', ( )),
+ ('SCHEDULE_CMD_RET_EMPTY', 0x01, '', ( )),
+ ('SCHEDULE_CMD_NOP', 0x04, '>BBB', ( )),
+ ('SCHEDULE_CMD_CHECK_MISC_S', 0x03, '>Bb', (1, )),
+ ('SCHEDULE_CMD_RET_VAL_S', 0x02, '>B', ( )),
+ ('SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S', 0x04, '>Hb', (1, )),
+ ('SCHEDULE_CMD_CHECK_NOT_IN_SCENE_L', 0x05, '>Hh', (1, )),
+ ('SCHEDULE_CMD_CHECK_NOT_IN_DAY_S', 0x04, '>Hb', (1, )),
+ ('SCHEDULE_CMD_CHECK_NOT_IN_DAY_L', 0x05, '>Hh', (1, )),
+ ('SCHEDULE_CMD_RET_TIME', 0x06, '>BBBBB', ( )),
+ ('SCHEDULE_CMD_CHECK_BEFORE_TIME_S', 0x04, '>BBb', (2, )),
+ ('SCHEDULE_CMD_CHECK_BEFORE_TIME_L', 0x05, '>BBh', (2, )),
+ ('SCHEDULE_CMD_BRANCH_S', 0x02, '>b', (0, )),
+ ('SCHEDULE_CMD_BRANCH_L', 0x03, '>h', (0, )),
+]
+
+scene_names = [
+ 'SCENE_20SICHITAI2',
+ 'SCENE_UNSET_1',
+ 'SCENE_UNSET_2',
+ 'SCENE_UNSET_3',
+ 'SCENE_UNSET_4',
+ 'SCENE_UNSET_5',
+ 'SCENE_UNSET_6',
+ 'SCENE_KAKUSIANA',
+ 'SCENE_SPOT00',
+ 'SCENE_UNSET_9',
+ 'SCENE_WITCH_SHOP',
+ 'SCENE_LAST_BS',
+ 'SCENE_HAKASHITA',
+ 'SCENE_AYASHIISHOP',
+ 'SCENE_UNSET_E',
+ 'SCENE_UNSET_F',
+ 'SCENE_OMOYA',
+ 'SCENE_BOWLING',
+ 'SCENE_SONCHONOIE',
+ 'SCENE_IKANA',
+ 'SCENE_KAIZOKU',
+ 'SCENE_MILK_BAR',
+ 'SCENE_INISIE_N',
+ 'SCENE_TAKARAYA',
+ 'SCENE_INISIE_R',
+ 'SCENE_OKUJOU',
+ 'SCENE_OPENINGDAN',
+ 'SCENE_MITURIN',
+ 'SCENE_13HUBUKINOMITI',
+ 'SCENE_CASTLE',
+ 'SCENE_DEKUTES',
+ 'SCENE_MITURIN_BS',
+ 'SCENE_SYATEKI_MIZU',
+ 'SCENE_HAKUGIN',
+ 'SCENE_ROMANYMAE',
+ 'SCENE_PIRATE',
+ 'SCENE_SYATEKI_MORI',
+ 'SCENE_SINKAI',
+ 'SCENE_YOUSEI_IZUMI',
+ 'SCENE_KINSTA1',
+ 'SCENE_KINDAN2',
+ 'SCENE_TENMON_DAI',
+ 'SCENE_LAST_DEKU',
+ 'SCENE_22DEKUCITY',
+ 'SCENE_KAJIYA',
+ 'SCENE_00KEIKOKU',
+ 'SCENE_POSTHOUSE',
+ 'SCENE_LABO',
+ 'SCENE_DANPEI2TEST',
+ 'SCENE_UNSET_31',
+ 'SCENE_16GORON_HOUSE',
+ 'SCENE_33ZORACITY',
+ 'SCENE_8ITEMSHOP',
+ 'SCENE_F01',
+ 'SCENE_INISIE_BS',
+ 'SCENE_30GYOSON',
+ 'SCENE_31MISAKI',
+ 'SCENE_TAKARAKUJI',
+ 'SCENE_UNSET_3A',
+ 'SCENE_TORIDE',
+ 'SCENE_FISHERMAN',
+ 'SCENE_GORONSHOP',
+ 'SCENE_DEKU_KING',
+ 'SCENE_LAST_GORON',
+ 'SCENE_24KEMONOMITI',
+ 'SCENE_F01_B',
+ 'SCENE_F01C',
+ 'SCENE_BOTI',
+ 'SCENE_HAKUGIN_BS',
+ 'SCENE_20SICHITAI',
+ 'SCENE_21MITURINMAE',
+ 'SCENE_LAST_ZORA',
+ 'SCENE_11GORONNOSATO2',
+ 'SCENE_SEA',
+ 'SCENE_35TAKI',
+ 'SCENE_REDEAD',
+ 'SCENE_BANDROOM',
+ 'SCENE_11GORONNOSATO',
+ 'SCENE_GORON_HAKA',
+ 'SCENE_SECOM',
+ 'SCENE_10YUKIYAMANOMURA',
+ 'SCENE_TOUGITES',
+ 'SCENE_DANPEI',
+ 'SCENE_IKANAMAE',
+ 'SCENE_DOUJOU',
+ 'SCENE_MUSICHOUSE',
+ 'SCENE_IKNINSIDE',
+ 'SCENE_MAP_SHOP',
+ 'SCENE_F40',
+ 'SCENE_F41',
+ 'SCENE_10YUKIYAMANOMURA2',
+ 'SCENE_14YUKIDAMANOMITI',
+ 'SCENE_12HAKUGINMAE',
+ 'SCENE_17SETUGEN',
+ 'SCENE_17SETUGEN2',
+ 'SCENE_SEA_BS',
+ 'SCENE_RANDOM',
+ 'SCENE_YADOYA',
+ 'SCENE_KONPEKI_ENT',
+ 'SCENE_INSIDETOWER',
+ 'SCENE_26SARUNOMORI',
+ 'SCENE_LOST_WOODS',
+ 'SCENE_LAST_LINK',
+ 'SCENE_SOUGEN',
+ 'SCENE_BOMYA',
+ 'SCENE_KYOJINNOMA',
+ 'SCENE_KOEPONARACE',
+ 'SCENE_GORONRACE',
+ 'SCENE_TOWN',
+ 'SCENE_ICHIBA',
+ 'SCENE_BACKTOWN',
+ 'SCENE_CLOCKTOWER',
+ 'SCENE_ALLEY'
+]
+
+def read_bytes(data_file, offset, len):
+ data_file.seek(offset)
+ return bytearray(data_file.read(len))
+
+def calc_length(data_file, offset):
+ off = 0
+ cmd = None
+ branch_targets = []
+
+ # Parse script, just keeping track of branches, until we find the end
+ while any([branch >= off for branch in branch_targets]) or cmd not in [0x04, 0x05, 0x06, 0x09]:
+ cmd = read_bytes(data_file, offset + off, 1)[0]
+
+ cmd_len = cmd_info[cmd][1]
+ cmd_args = cmd_info[cmd][2]
+
+ if len(cmd_args) > 1:
+ arg_values = struct.unpack(cmd_args, read_bytes(data_file, offset + off + 1, cmd_len - 1))
+ for i in cmd_info[cmd][3]:
+ branch_targets.append(off + arg_values[i] + cmd_len)
+
+ off += cmd_len
+
+ return off
+
+def disassemble_unk_script(data_file, offset):
+ off = 0
+ cmd = None
+ branch_targets = []
+ script_len = calc_length(data_file, offset);
+ script_len_num_digits = 0 if script_len == 1 else int(math.ceil(math.log(script_len - 1, 16)))
+
+ out = "static u8 sScheduleScript[] = {\n"
+
+ # Keep trying to disassemble until it hits a terminator and no commands branch past it
+ while any([branch >= off for branch in branch_targets]) or cmd not in [0x04, 0x05, 0x06, 0x09]:
+ cmd = read_bytes(data_file, offset + off, 1)[0]
+
+ cmd_name = cmd_info[cmd][0]
+ cmd_len = cmd_info[cmd][1]
+ cmd_args = cmd_info[cmd][2]
+
+ args_formatted = []
+ if len(cmd_args) > 1: # handle args
+ arg_values = struct.unpack(cmd_args, read_bytes(data_file, offset + off + 1, cmd_len - 1))
+ for i,(arg_value,arg_type) in enumerate(zip(arg_values, cmd_args[1:]),0):
+ arg_formatted = ""
+ if arg_type == "h":
+ arg_formatted = f"{arg_value:#x}"
+ elif arg_type == "b":
+ arg_formatted = f"{arg_value:#x}"
+ elif arg_type == "H":
+ if (cmd == 0x0A or cmd == 0x0B) and (arg_value < len(scene_names)):
+ arg_formatted = scene_names[arg_value]
+ else:
+ arg_formatted = f"{arg_value}"
+ elif arg_type == "B":
+ if cmd == 0x00 or cmd == 0x01:
+ arg_formatted = f"0x{arg_value:02X}"
+ elif cmd == 0x08:
+ if arg_value == 0:
+ arg_formatted = "SCHEDULE_CHECK_MISC_ROOM_KEY"
+ elif arg_value == 1:
+ arg_formatted = "SCHEDULE_CHECK_MISC_LETTER_TO_KAFEI"
+ elif arg_value == 2:
+ arg_formatted = "SCHEDULE_CHECK_MISC_MASK_ROMANI"
+ else:
+ arg_formatted = f"0x{arg_value:02X}"
+ else:
+ arg_formatted = f"{arg_value:2}"
+ elif arg_type == "S":
+ if arg_value < len(scene_names):
+ arg_formatted = scene_names[arg_value]
+ else:
+ arg_formatted = f"0x{arg_value:04X}"
+
+ if i in cmd_info[cmd][3]: # skip argument indices
+ # add skip args to branch targets, and change the output to absolute differences rather than relative offsets
+ arg_value += cmd_len
+ branch_targets.append(off + arg_value)
+ if arg_value == cmd_len:
+ arg_formatted == "0"
+ else:
+ arg_formatted = f"0x{off + arg_value:0{script_len_num_digits}X} - 0x{off + cmd_len:0{script_len_num_digits}X}"
+ args_formatted.append(arg_formatted)
+
+ args = ", ".join(args_formatted) if len(args_formatted) != 0 else ""
+
+ out += f" /* 0x{off:0{script_len_num_digits}X} */ {cmd_name}({args}),\n"
+
+ off += cmd_len
+
+ out = out.strip()
+ out += "\n};"
+
+ print(out)
+
+def hex_parse(s):
+ return int(s, 16)
+
+def main():
+ parser = argparse.ArgumentParser(description="Disassembles MM event scripts")
+ parser.add_argument('address', help="VRAM or ROM address to disassemble at", type=hex_parse)
+ args = parser.parse_args()
+
+ file_result = resolve_symbol(args.address)
+
+ if file_result[0] is None:
+ print("Invalid address")
+ return
+
+ print(hex(file_result[1]), "in", file_result[0].split(os.sep)[-1])
+
+ with open(file_result[0],"rb") as data_file:
+ disassemble_unk_script(data_file, file_result[1])
+
+if __name__ == "__main__":
+ main()
diff --git a/undefined_syms.txt b/undefined_syms.txt
index 2ffe4ad8c..1ef7e6942 100644
--- a/undefined_syms.txt
+++ b/undefined_syms.txt
@@ -679,11 +679,10 @@ D_06000098 = 0x06000098;
D_060003E8 = 0x060003E8;
D_06001640 = 0x06001640;
-// ovl_Bg_Open_Spot
-D_06001A60 = 0x06001A60;
-D_06001B40 = 0x06001B40;
-D_06002CE0 = 0x06002CE0;
+// ovl_Bg_Sinkai_Kabe
+
+D_06000048 = 0x06000048;
// ovl_Bg_Spout_Fire
@@ -840,12 +839,6 @@ D_060134D0 = 0x060134D0;
D_06013828 = 0x06013828;
D_06014040 = 0x06014040;
-// ovl_Demo_Effect
-
-D_06000050 = 0x06000050;
-D_06000060 = 0x06000060;
-D_060012E8 = 0x060012E8;
-
// ovl_Demo_Moonend
D_06001214 = 0x06001214;