diff --git a/include/functions.h b/include/functions.h index 66265e454..a810eafeb 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1005,58 +1005,58 @@ void Map_Destroy(PlayState* play); void Map_Init(PlayState* play); void Minimap_Draw(PlayState* play); void Map_Update(PlayState* play); -// void func_8010A760(void); -// void func_8010A7CC(void); -// void func_8010A814(void); -// void func_8010A85C(void); -// void func_8010A8A4(void); -// void func_8010A8EC(void); -// void func_8010A990(void); -// void func_8010AA54(void); -// void func_8010AB30(void); -// void func_8010AB94(void); -// void func_8010AC00(void); -// void func_8010AD24(void); -// void func_8010ADD4(void); -// void func_8010AE48(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); -// UNK_TYPE4 func_8010AECC(UNK_TYPE4 param_1, s32 param_2, s32* param_3); -// void func_8010AF20(void); -// void func_8010AF6C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); -// void func_8010AF94(void); -// void func_8010AFE0(void); -// void func_8010B010(void); -// void func_8010B06C(void); -// void func_8010B0B4(void); -// void func_8010B0DC(void); -// void func_8010B108(void); -// void func_8010B140(void); -// void func_8010B180(void); -// void func_8010B1BC(void); -// void func_8010B22C(void); -// void func_8010B284(void); -// void func_8010B2C0(void); -// void func_8010B300(void); -// void func_8010B434(void); -// void func_8010B4A4(void); -// void func_8010B520(void); -// void func_8010B664(void); -// void func_8010B7A8(void); -// void func_8010B828(void); -// void func_8010B878(void); -// void func_8010B8E4(void); -// void func_8010BB0C(void); -// void func_8010BB6C(void); -// void func_8010BBCC(void); -// void func_8010BC28(void); -// void func_8010BC7C(void); -// void func_8010BD48(void); -// void func_8010BD90(void); -// void func_8010BDDC(void); -// void func_8010BE78(void); -// void func_8010BEBC(void); -// void func_8010BEF0(void); -// void func_8010BF24(void); -s32 func_8010BF58(Actor* actor, PlayState* play, void* param_3, UNK_PTR param_4, s32* param_5); +// void MsgEvent_Cmd00(void); +// void MsgEvent_Cmd01(void); +// void MsgEvent_Cmd02(void); +// void MsgEvent_Cmd03(void); +// void MsgEvent_Cmd04(void); +// void MsgEvent_Cmd05(void); +// void MsgEvent_Cmd06(void); +// void MsgEvent_Cmd07(void); +// void MsgEvent_Cmd08(void); +// void MsgEvent_Cmd09(void); +// void MsgEvent_Cmd10(void); +// void MsgEvent_Cmd11(void); +// void MsgEvent_Cmd12(void); +// void MsgEvent_Cmd13(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); +// UNK_TYPE4 MsgEvent_Cmd14(UNK_TYPE4 param_1, s32 param_2, s32* param_3); +// void MsgEvent_Cmd15(void); +// void MsgEvent_Cmd16(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); +// void MsgEvent_Cmd17(void); +// void MsgEvent_Cmd18(void); +// void MsgEvent_Cmd19(void); +// void MsgEvent_Cmd20(void); +// void MsgEvent_Cmd21(void); +// void MsgEvent_Cmd22(void); +// void MsgEvent_Cmd23(void); +// void MsgEvent_Cmd24(void); +// void MsgEvent_Cmd25(void); +// void MsgEvent_Cmd26(void); +// void MsgEvent_Cmd27(void); +// void MsgEvent_Cmd28(void); +// void MsgEvent_Cmd29(void); +// void MsgEvent_Cmd30(void); +// void MsgEvent_Cmd31(void); +// void MsgEvent_Cmd32(void); +// void MsgEvent_Cmd33(void); +// void MsgEvent_Cmd34(void); +// void MsgEvent_Cmd35(void); +// void MsgEvent_Cmd36(void); +// void MsgEvent_Cmd37(void); +// void MsgEvent_Cmd38(void); +// void MsgEvent_Cmd39(void); +// void MsgEvent_Cmd40(void); +// void MsgEvent_Cmd41(void); +// void MsgEvent_Cmd42(void); +// void MsgEvent_Cmd43(void); +// void MsgEvent_Cmd44(void); +// void MsgEvent_Cmd45(void); +// void MsgEvent_Cmd46(void); +// void MsgEvent_Cmd47(void); +// void MsgEvent_Cmd48(void); +// void MsgEvent_Cmd49(void); +// void MsgEvent_Cmd50(void); +s32 MsgEvent_RunScript(Actor* actor, PlayState* play, MsgScript* script, MsgEventCallback callback, s32* pos); void Nmi_Init(void); void Nmi_SetPrenmiStart(void); // s32 Nmi_GetPrenmiHasStarted(void); @@ -1125,7 +1125,7 @@ void func_80123E90(PlayState* play, Actor* actor); s32 func_80123F2C(PlayState* play, s32 ammo); s32 Player_IsBurningStickInRange(PlayState* play, Vec3f* pos, f32 xzRange, f32 yRange); u8 Player_GetStrength(void); -u8 Player_GetMask(PlayState* play); +s32 Player_GetMask(PlayState* play); void Player_RemoveMask(PlayState* play); s32 Player_HasMirrorShieldEquipped(PlayState* play); s32 Player_IsHoldingMirrorShield(PlayState* play); diff --git a/include/variables.h b/include/variables.h index 6b2522e4b..17172fbe8 100644 --- a/include/variables.h +++ b/include/variables.h @@ -326,7 +326,6 @@ extern UNK_PTR D_801BEC14; // extern UNK_TYPE4 D_801BF594; // extern UNK_TYPE4 D_801BF5A4; // extern UNK_TYPE2 D_801BF5B0; -extern UNK_PTR D_801BF5C0; // extern UNK_TYPE1 D_801BF68C; extern FlexSkeletonHeader* gPlayerSkeletons[PLAYER_FORM_MAX]; diff --git a/include/z64.h b/include/z64.h index ba2d5ffc3..259becb9c 100644 --- a/include/z64.h +++ b/include/z64.h @@ -64,6 +64,7 @@ #include "z64subs.h" #include "z64transition.h" #include "z64view.h" +#include "z64msgevent.h" #include "regs.h" typedef struct { diff --git a/include/z64msgevent.h b/include/z64msgevent.h new file mode 100644 index 000000000..09d35a7c6 --- /dev/null +++ b/include/z64msgevent.h @@ -0,0 +1,395 @@ +#ifndef Z64MSGEVENT_H +#define Z64MSGEVENT_H + +#include "PR/ultratypes.h" + +struct PlayState; +struct Actor; + +typedef enum { + MSCRIPT_CMD_00, + MSCRIPT_CMD_01, + MSCRIPT_CMD_02, + MSCRIPT_CMD_03, + MSCRIPT_CMD_04, + MSCRIPT_CMD_05, + MSCRIPT_CMD_06, + MSCRIPT_CMD_07, + MSCRIPT_CMD_08, + MSCRIPT_CMD_09, + MSCRIPT_CMD_10, + MSCRIPT_CMD_11, + MSCRIPT_CMD_12, + MSCRIPT_CMD_13, + MSCRIPT_CMD_14, + MSCRIPT_CMD_15, + MSCRIPT_CMD_16, + MSCRIPT_CMD_17, + MSCRIPT_CMD_18, + MSCRIPT_CMD_19, + MSCRIPT_CMD_20, + MSCRIPT_CMD_21, + MSCRIPT_CMD_22, + MSCRIPT_CMD_23, + MSCRIPT_CMD_24, + MSCRIPT_CMD_25, + MSCRIPT_CMD_26, + MSCRIPT_CMD_27, + MSCRIPT_CMD_28, + MSCRIPT_CMD_29, + MSCRIPT_CMD_30, + MSCRIPT_CMD_31, + MSCRIPT_CMD_32, + MSCRIPT_CMD_33, + MSCRIPT_CMD_34, + MSCRIPT_CMD_35, + MSCRIPT_CMD_36, + MSCRIPT_CMD_BRANCH_ON_ITEM, + MSCRIPT_CMD_38, + MSCRIPT_CMD_39, + MSCRIPT_CMD_40, + MSCRIPT_CMD_41, + MSCRIPT_CMD_DEL_ITEM, + MSCRIPT_CMD_43, + MSCRIPT_CMD_44, + MSCRIPT_CMD_45, + MSCRIPT_CMD_46, + MSCRIPT_CMD_47, + MSCRIPT_CMD_48, + MSCRIPT_CMD_49, + MSCRIPT_CMD_50 +} MsgScriptCmd; + +typedef u8 MsgScript; + +typedef s32 (*MsgEventCallback)(struct Actor* thisx, struct PlayState* play); + +typedef s32 (*MsgEventHandler)(struct Actor* actor, struct PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32*); + +#define MSCRIPT_GET_8(script, i) ((script)[i]) +#define MSCRIPT_GET_16(script, i) ((((script)[i + 1] | ((script)[i] << 8)))) + +// Command macros + +#define MSCRIPT_PACK_8(v) (u8)(v) +#define MSCRIPT_PACK_16(v) (u8)_SHIFTR(v, 8, 8), (u8)_SHIFTR(v, 0, 8) + +/** + * + * Size = 5 + */ +#define MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(flags, test, skip) \ + MSCRIPT_CMD_00, MSCRIPT_PACK_8(flags), MSCRIPT_PACK_8(test), MSCRIPT_PACK_16(skip) + +#define MSCRIPT_BRANCH_ON_WEEK_EVENT_REG_LENGTH 5 + +/** + * + * Size = 3 + */ +#define MSCRIPT_BRANCH_IF_GORON(skip) \ + MSCRIPT_CMD_01, MSCRIPT_PACK_16(skip) + +/** + * + * Size = 3 + */ +#define MSCRIPT_BRANCH_IF_ZORA(skip) \ + MSCRIPT_CMD_02, MSCRIPT_PACK_16(skip) + +/** + * + * Size = 3 + */ +#define MSCRIPT_BRANCH_IF_DEKU(skip) \ + MSCRIPT_CMD_03, MSCRIPT_PACK_16(skip) + +/** + * + * Size = 3 + */ +#define MSCRIPT_BRANCH_IF_HUMAN(skip) \ + MSCRIPT_CMD_04, MSCRIPT_PACK_16(skip) + +/** + * + * Size = 7 + */ +#define MSCRIPT_BRANCH_ON_TEXT_CHOICE(skip0, skip1, skip2) \ + MSCRIPT_CMD_05, MSCRIPT_PACK_16(skip0), MSCRIPT_PACK_16(skip1), MSCRIPT_PACK_16(skip2) + +/** + * + * Size = 5 + */ +#define MSCRIPT_OFFER_ITEM(unk, skip) \ + MSCRIPT_CMD_06, MSCRIPT_PACK_16(unk), MSCRIPT_PACK_16(skip) + +/** + * Size = 3 + */ +#define MSCRIPT_CMD07(skip) \ + MSCRIPT_CMD_07, MSCRIPT_PACK_16(skip) + +/** + * Size = 5 + */ +#define MSCRIPT_BRANCH_ON_RUPEES(rupees, skip) \ + MSCRIPT_CMD_08, MSCRIPT_PACK_16(rupees), MSCRIPT_PACK_16(skip) + +/** + * Size = 3 + */ +#define MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(skip) \ + MSCRIPT_CMD_09, MSCRIPT_PACK_16(skip) + +/** + * Size = 13 + */ +#define MSCRIPT_BRANCH_ON_DAY(skipDay1, skipNight1, skipDay2, skipNight2, skipDay3, skipNight3) \ + MSCRIPT_CMD_10, \ + MSCRIPT_PACK_16(skipDay1), MSCRIPT_PACK_16(skipNight1), \ + MSCRIPT_PACK_16(skipDay2), MSCRIPT_PACK_16(skipNight2), \ + MSCRIPT_PACK_16(skipDay3), MSCRIPT_PACK_16(skipNight3) + +/** + * Size = 3 + */ +#define MSCRIPT_CMD11(skip) \ + MSCRIPT_CMD_11, MSCRIPT_PACK_16(skip) + +/** + * Size = 1 + */ +#define MSCRIPT_AWAIT_TEXT() \ + MSCRIPT_CMD_12 + +/** + * Size = 1 + */ +#define MSCRIPT_CMD13() \ + MSCRIPT_CMD_13 + +/** + * Size = 3 + */ +#define MSCRIPT_BEGIN_TEXT(arg) \ + MSCRIPT_CMD_14, MSCRIPT_PACK_16(arg) + +/** + * Size = 3 + */ +#define MSCRIPT_CONTINUE_TEXT(arg) \ + MSCRIPT_CMD_15, MSCRIPT_PACK_16(arg) + +/** + * Size = 1 + */ +#define MSCRIPT_DONE() \ + MSCRIPT_CMD_16 + +/** + * Size = 3 + */ +#define MSCRIPT_WEEK_EVENT_REG_SET(flags, value) \ + MSCRIPT_CMD_17, MSCRIPT_PACK_8(flags), MSCRIPT_PACK_8(value) + +/** + * Size = 1 + */ +#define MSCRIPT_CLOSE_TEXT() \ + MSCRIPT_CMD_18 + +/** + * Size = 3 + */ +#define MSCRIPT_COLLECT_SET(collectFlag) \ + MSCRIPT_CMD_19, MSCRIPT_PACK_16(collectFlag) + +/** + * Size = 3 + */ +#define MSCRIPT_CHANGE_RUPEES(unk) \ + MSCRIPT_CMD_20, MSCRIPT_PACK_16(unk) + +/** + * Size = 1 + */ +#define MSCRIPT_PAUSE() \ + MSCRIPT_CMD_21 + +/** + * Size = 1 + */ +#define MSCRIPT_CMD22() \ + MSCRIPT_CMD_22 + +/** + * Size = 1 + */ +#define MSCRIPT_FOCUS_TO_CHILD() \ + MSCRIPT_CMD_23 + +/** + * Size = 1 + */ +#define MSCRIPT_FOCUS_TO_SELF() \ + MSCRIPT_CMD_24 + +/** + * Size = 3 + */ +#define MSCRIPT_JUMP(skip) \ + MSCRIPT_CMD_25, MSCRIPT_PACK_16(skip) + +/** + * Size = 5 + */ +#define MSCRIPT_BRANCH_ON_QUEST_ITEM(questItem, skip) \ + MSCRIPT_CMD_26, MSCRIPT_PACK_16(questItem), MSCRIPT_PACK_16(skip) + +/** + * Size = 5 + */ +#define MSCRIPT_BRANCH_ON_EVENT_INF(flag, value, skip) \ + MSCRIPT_CMD_27, MSCRIPT_PACK_8(flag), MSCRIPT_PACK_8(value), MSCRIPT_PACK_16(skip) + +/** + * Size = 3 + */ +#define MSCRIPT_SET_EVENT_INF(flag, value) \ + MSCRIPT_CMD_28, MSCRIPT_PACK_8(flag), MSCRIPT_PACK_8(value) + +/** + * Size = 3 + */ +#define MSCRIPT_UNSET_EVENT_INF(flag, value) \ + MSCRIPT_CMD_29, MSCRIPT_PACK_8(flag), MSCRIPT_PACK_8(value) + +/** + * Size = 9 + */ +#define MSCRIPT_BRANCH_ON_ITEMACTION(unk, skipEqual, skipDefault, skipUnk) \ + MSCRIPT_CMD_30, MSCRIPT_PACK_16(unk), MSCRIPT_PACK_16(skipEqual), MSCRIPT_PACK_16(skipDefault), MSCRIPT_PACK_16(skipUnk) + +/** + * Size = 5 + */ +#define MSCRIPT_BRANCH_ON_SONG_OBTAINED(questItem, skip) \ + MSCRIPT_CMD_31, MSCRIPT_PACK_16(questItem), MSCRIPT_PACK_16(skip) + +/** + * Size = 5 + */ +#define MSCRIPT_BRANCH_ON_WORN_MASK(mask, skip) \ + MSCRIPT_CMD_32, MSCRIPT_PACK_16(mask), MSCRIPT_PACK_16(skip) + +/** + * Size = 5 + */ +#define MSCRIPT_BRANCH_ON_TIME_GT(hours, minutes, skip) \ + MSCRIPT_CMD_33, MSCRIPT_PACK_8(hours), MSCRIPT_PACK_8(minutes), MSCRIPT_PACK_16(skip) + +/** + * Size = 5 + */ +#define MSCRIPT_BRANCH_ON_TIME_LEQ(hours, minutes, skip) \ + MSCRIPT_CMD_34, MSCRIPT_PACK_8(hours), MSCRIPT_PACK_8(minutes), MSCRIPT_PACK_16(skip) + +/** + * Size = 5 + */ +#define MSCRIPT_BRANCH_ON_SWITCH_FLAG(switchFlag, skip) \ + MSCRIPT_CMD_35, MSCRIPT_PACK_16(switchFlag), MSCRIPT_PACK_16(skip) + +/** + * Size = 3 + */ +#define MSCRIPT_SET_SWITCH_FLAG(switchFlag) \ + MSCRIPT_CMD_36, MSCRIPT_PACK_16(switchFlag) + +/** + * Size = 5 + */ +#define MSCRIPT_BRANCH_ON_ITEM(item, skip) \ + MSCRIPT_CMD_BRANCH_ON_ITEM, MSCRIPT_PACK_16(item), MSCRIPT_PACK_16(skip) + +/** + * Size = 7 + */ +#define MSCRIPT_BRANCH_ON_TIME_INTERVAL(hours1, minutes1, hours2, minutes2, skip) \ + MSCRIPT_CMD_38, MSCRIPT_PACK_8(hours1), MSCRIPT_PACK_8(minutes1), MSCRIPT_PACK_8(hours2), MSCRIPT_PACK_8(minutes2), MSCRIPT_PACK_16(skip) + +/** + * Size = 5 + */ +#define MSCRIPT_BRANCH_IF_DAY(day, skip) \ + MSCRIPT_CMD_39, MSCRIPT_PACK_16(day), MSCRIPT_PACK_16(skip) + +/** + * Size = 3 + */ +#define MSCRIPT_BRANCH_ON_CALLBACK_2(skip) \ + MSCRIPT_CMD_40, MSCRIPT_PACK_16(skip) + +/** + * Size = 3 + */ +#define MSCRIPT_HAS_POWDER_KEG(skip) \ + MSCRIPT_CMD_41, MSCRIPT_PACK_16(skip) + +/** + * Size = 3 + */ +#define MSCRIPT_DEL_ITEM(item) \ + MSCRIPT_CMD_DEL_ITEM, MSCRIPT_PACK_16(item) + +/** + * Size = 7 + */ +#define MSCRIPT_BRANCH_ON_CALLBACK(skip1, skip2, skip3) \ + MSCRIPT_CMD_43, MSCRIPT_PACK_16(skip1), MSCRIPT_PACK_16(skip2), MSCRIPT_PACK_16(skip3) + +/** + * Size = 3 + */ +#define MSCRIPT_CMD44(textId) \ + MSCRIPT_CMD_44, MSCRIPT_PACK_16(textId) + +/** + * Size = 3 + */ +#define MSCRIPT_NOTEBOOK_EVENT(event) \ + MSCRIPT_CMD_45, MSCRIPT_PACK_16(event) + +/** + * Size = 1 + */ +#define MSCRIPT_CMD46() \ + MSCRIPT_CMD_46 + +/** + * Size = 3 + */ +#define MSCRIPT_JUMP_3(skip) \ + MSCRIPT_CMD_47, MSCRIPT_PACK_16(skip) + +/** + * Size = 1 + */ +#define MSCRIPT_PLAY_DECIDE() \ + MSCRIPT_CMD_48 + +/** + * Size = 1 + */ +#define MSCRIPT_PLAY_CANCEL() \ + MSCRIPT_CMD_49 + +/** + * Size = 1 + */ +#define MSCRIPT_PLAY_ERROR() \ + MSCRIPT_CMD_50 + +#endif diff --git a/spec b/spec index 3e7b86be0..db875b223 100644 --- a/spec +++ b/spec @@ -489,7 +489,6 @@ beginseg include "build/src/code/z_map_data.o" include "build/src/code/z_map_exp.o" include "build/src/code/z_msgevent.o" - include "build/data/code/z_msgevent.data.o" include "build/src/code/z_nmi_buff.o" include "build/src/code/code_8010C1B0.o" include "build/src/code/z_olib.o" diff --git a/src/code/z_msgevent.c b/src/code/z_msgevent.c index e3e45f900..d6923f07f 100644 --- a/src/code/z_msgevent.c +++ b/src/code/z_msgevent.c @@ -1,105 +1,1151 @@ #include "global.h" -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010A760.s") +#define MSCRIPT_CONTINUE 0 +#define MSCRIPT_STOP 1 -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010A7CC.s") +/** + * Branch forward if the provided week_event_reg flag is set + * + * Command structure: + * 0:(u8) cmd + * 1:(u16) flag + * 3:(s16) skip + * Command size: 5 + */ +s32 MsgEvent_Cmd00(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + u16 flag = MSCRIPT_GET_16(script, 1); + s16 skip = MSCRIPT_GET_16(script, 3); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010A814.s") + if (CHECK_WEEKEVENTREG(flag)) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010A85C.s") +/** + * Branch forward if the player is currently in goron form + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) skip + * Command size: 3 + */ +s32 MsgEvent_Cmd01(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + Player* player = GET_PLAYER(play); + u8* script = *scriptPtr; + s16 skip = MSCRIPT_GET_16(script, 1); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010A8A4.s") + if (player->transformation == PLAYER_FORM_GORON) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010A8EC.s") +/** + * Branch forward if the player is currently in zora form + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) skip + * Command size: 3 + */ +s32 MsgEvent_Cmd02(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + Player* player = GET_PLAYER(play); + u8* script = *scriptPtr; + s16 skip = MSCRIPT_GET_16(script, 1); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010A990.s") + if (player->transformation == PLAYER_FORM_ZORA) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010AA54.s") +/** + * Branch forward if the player is currently in deku form + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) skip + * Command size: 3 + */ +s32 MsgEvent_Cmd03(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + Player* player = GET_PLAYER(play); + u8* script = *scriptPtr; + s16 skip = MSCRIPT_GET_16(script, 1); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010AB30.s") + if (player->transformation == PLAYER_FORM_DEKU) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010AB94.s") +/** + * Branch forward if the player is currently in human form + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) skip + * Command size: 3 + */ +s32 MsgEvent_Cmd04(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + Player* player = GET_PLAYER(play); + u8* script = *scriptPtr; + s16 skip = MSCRIPT_GET_16(script, 1); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010AC00.s") + if (player->transformation == PLAYER_FORM_HUMAN) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010AD24.s") +/** + * Branch forward depending on the message choice index + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) skipChoice1 + * 3:(s16) skipChoice2 + * 5:(s16) skipChoice3 + * Command size: 7 + */ +s32 MsgEvent_Cmd05(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 skip = 0; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010ADD4.s") + switch (play->msgCtx.choiceIndex) { + case 0: + skip = MSCRIPT_GET_16(script, 1); + break; + case 1: + skip = MSCRIPT_GET_16(script, 3); + break; + case 2: + skip = MSCRIPT_GET_16(script, 5); + break; + } + *scriptPtr += skip; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010AE48.s") + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010AECC.s") +/** + * Branch forward if the actor has a parent, else get item? + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) getItemId + * 3:(s16) skip + * Command size: 5 + */ +s32 MsgEvent_Cmd06(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s32 getItemId = MSCRIPT_GET_16(script, 1); + f32 xzRange = actor->xzDistToPlayer + 1.0f; + f32 yRange = fabsf(actor->playerHeightRel) + 1.0f; + s16 skip = MSCRIPT_GET_16(script, 3); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010AF20.s") + if (Actor_HasParent(actor, play)) { + *scriptPtr += skip; + } else { + Actor_OfferGetItem(actor, play, getItemId, xzRange, yRange); + return MSCRIPT_STOP; + } + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010AF6C.s") +/** + * Branch forward by 1(s16) if there is a talk request, else get item? + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) skip + * Command size: 3 + */ +s32 MsgEvent_Cmd07(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + f32 xzRange = actor->xzDistToPlayer + 1.0f; + f32 yRange = fabsf(actor->playerHeightRel) + 1.0f; + f32 xzDist; + s16 skip = MSCRIPT_GET_16(script, 1); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010AF94.s") + if (Actor_ProcessTalkRequest(actor, &play->state)) { + *scriptPtr += skip; + } else { + actor->flags |= ACTOR_FLAG_10000; + xzDist = actor->xzDistToPlayer; + actor->xzDistToPlayer = 0.0f; + func_800B8500(actor, play, xzRange, yRange, PLAYER_IA_NONE); + actor->xzDistToPlayer = xzDist; + return MSCRIPT_STOP; + } + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010AFE0.s") +/** + * Branch forward if the player currently has more rupees than 1(u16) + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) rupees + * 3:(s16) skip + * Command size: 5 + */ +s32 MsgEvent_Cmd08(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 rupees = MSCRIPT_GET_16(script, 1); + s16 skip = MSCRIPT_GET_16(script, 3); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B010.s") + if (gSaveContext.save.saveInfo.playerData.rupees >= rupees) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B06C.s") +/** + * Branch forward if the callback is null or returns non-zero + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) skip + * Command size: 3 + */ +s32 MsgEvent_Cmd09(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 skip = MSCRIPT_GET_16(script, 1); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B0B4.s") + if (callback == NULL || callback(actor, play) != 0) { + *scriptPtr += skip; + } else { + return MSCRIPT_STOP; + } + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B0DC.s") +/** + * Branch forward based on time of day + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) skipDay1 + * 3:(s16) skipNight1 + * 5:(s16) skipDay2 + * 7:(s16) skipNight2 + * 9:(s16) skipDay3 + * 11:(s16) skipNight3 + * Command size: 13 + */ +s32 MsgEvent_Cmd10(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 skip = 0; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B108.s") + switch (gSaveContext.save.day) { + case 1: + if (!gSaveContext.save.isNight) { + skip = MSCRIPT_GET_16(script, 1); + } else { + skip = MSCRIPT_GET_16(script, 3); + } + break; + case 2: + if (!gSaveContext.save.isNight) { + skip = MSCRIPT_GET_16(script, 5); + } else { + skip = MSCRIPT_GET_16(script, 7); + } + break; + case 3: + if (!gSaveContext.save.isNight) { + skip = MSCRIPT_GET_16(script, 9); + } else { + skip = MSCRIPT_GET_16(script, 11); + } + break; + } + *scriptPtr += skip; + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B140.s") +/** + * Wait on choice text, skip forward when text closes. + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) skip + * Command size: 3 + */ +s32 MsgEvent_Cmd11(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 skip; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B180.s") + switch (Message_GetState(&play->msgCtx)) { + case TEXT_STATE_CHOICE: + case TEXT_STATE_5: + if (!Message_ShouldAdvance(play)) { + return MSCRIPT_STOP; + } + case TEXT_STATE_CLOSING: + skip = MSCRIPT_GET_16(script, 1); + break; + default: + return MSCRIPT_STOP; + } + *scriptPtr += skip; + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B1BC.s") +/** + * Stop script if textbox active? + * + * Command structure: + * 0:(u8) cmd + * Command size: 1 + */ +s32 MsgEvent_Cmd12(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + switch (Message_GetState(&play->msgCtx)) { + case TEXT_STATE_CHOICE: + case TEXT_STATE_5: + if (!Message_ShouldAdvance(play)) { + return MSCRIPT_STOP; + } + break; + case TEXT_STATE_CLOSING: + break; + default: + return MSCRIPT_STOP; + } + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B22C.s") +/** + * End script when textbox is done? + * + * Command structure: + * 0:(u8) cmd + * Command size: 1 + */ +s32 MsgEvent_Cmd13(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + s32 state = Message_GetState(&play->msgCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B284.s") + *endScript = false; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B2C0.s") + switch (state) { + case TEXT_STATE_CHOICE: + case TEXT_STATE_5: + if (!Message_ShouldAdvance(play)) { + break; + } + case TEXT_STATE_CLOSING: + *endScript = true; + break; + default: + return MSCRIPT_STOP; + } + return MSCRIPT_STOP; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B300.s") +/** + * + * Command structure: + * 0:(u8) cmd + * 1:(u16) textId + * Command size: 3 + */ +s32 MsgEvent_Cmd14(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B434.s") + Message_StartTextbox(play, MSCRIPT_GET_16(script, 1), NULL); + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B4A4.s") +/** + * + * Command structure: + * 0:(u8) cmd + * 1:(u16) textId + * Command size: 3 + */ +s32 MsgEvent_Cmd15(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B520.s") + Message_ContinueTextbox(play, MSCRIPT_GET_16(script, 1)); + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B664.s") +/** + * Script Terminator + * + * Command structure: + * 0:(u8) cmd + * Command size: 1 + */ +s32 MsgEvent_Cmd16(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + *endScript = true; + return MSCRIPT_STOP; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B7A8.s") +/** + * Sets week_event_reg flags + * + * Command structure: + * 0:(u8) cmd + * 1:(u16) flag + * Command size: 3 + */ +s32 MsgEvent_Cmd17(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + u16 flag = MSCRIPT_GET_16(script, 1); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B828.s") + SET_WEEKEVENTREG(flag); + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B878.s") +/** + * + * Command structure: + * 0:(u8) cmd + * Command size: 1 + */ +s32 MsgEvent_Cmd18(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + Message_CloseTextbox(play); + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010B8E4.s") +/** + * + * Command structure: + * 0:(u8) cmd + * 0:(u16) flag + * Command size: 3 + */ +s32 MsgEvent_Cmd19(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s32 flag = MSCRIPT_GET_16(script, 1); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010BB0C.s") + if (!Flags_GetCollectible(play, flag)) { + Flags_SetCollectible(play, flag); + } + actor->parent = NULL; + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010BB6C.s") +/** + * + * Command structure: + * 0:(u8) cmd + * 0:(s16) rupees + * Command size: 3 + */ +s32 MsgEvent_Cmd20(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 rupees = MSCRIPT_GET_16(script, 1); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010BBCC.s") + Rupees_ChangeBy(rupees); + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010BC28.s") +/** + * Pause the message system + * + * Command structure: + * 0:(u8) cmd + * Command size: 1 + */ +s32 MsgEvent_Cmd21(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + play->msgCtx.msgMode = 0x44; + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010BC7C.s") +/** + * Unsets ACTOR_FLAG_10000 for the actor executing the script + * + * Command structure: + * 0:(u8) cmd + * Command size: 1 + */ +s32 MsgEvent_Cmd22(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + actor->flags &= ~ACTOR_FLAG_10000; + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010BD48.s") +/** + * Sets player focus & talk actor to the child of the actor executing the script + * + * Command structure: + * 0:(u8) cmd + * Command size: 1 + */ +s32 MsgEvent_Cmd23(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + if (actor->child != NULL) { + Actor_ChangeFocus(actor, play, actor->child); + } + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010BD90.s") +/** + * Sets player focus & talk actor to the actor executing the script + * + * Command structure: + * 0:(u8) cmd + * Command size: 1 + */ +s32 MsgEvent_Cmd24(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + if (actor->child != NULL) { + Actor_ChangeFocus(actor->child, play, actor); + } + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010BDDC.s") +/** + * Unconditional branch by `skip` + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) skip + * Command size: 3 + */ +s32 MsgEvent_Cmd25(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 skip = MSCRIPT_GET_16(script, 1); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010BE78.s") + *scriptPtr += skip; + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010BEBC.s") +/** + * Branch forwards if the specified quest item is obtained + * + * Command structure: + * 0:(u8) cmd + * 1:(u16) questItem + * 3:(s16) skip + * Command size: 5 + */ +s32 MsgEvent_Cmd26(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + u16 questItem = MSCRIPT_GET_16(script, 1); + s16 skip = MSCRIPT_GET_16(script, 3); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010BEF0.s") + if (CHECK_QUEST_ITEM(questItem)) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010BF24.s") +/** + * Branch forwards if event_inf flag is set + * + * Command structure: + * 0:(u8) cmd + * 1:(u16) event_inf flag + * 3:(s16) skip + * Command size: 5 + */ +s32 MsgEvent_Cmd27(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 skip = MSCRIPT_GET_16(script, 3); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_msgevent/func_8010BF58.s") + if (MSCRIPT_GET_8(script, 2) & gSaveContext.eventInf[MSCRIPT_GET_8(script, 1)]) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} + +/** + * Sets event_inf flag + * + * Command structure: + * 0:(u8) cmd + * 1:(u16) event_inf flag + * Command size: 3 + */ +s32 MsgEvent_Cmd28(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + + gSaveContext.eventInf[MSCRIPT_GET_8(script, 1)] |= MSCRIPT_GET_8(script, 2); + return MSCRIPT_CONTINUE; +} + +/** + * Unsets event_inf flag + * + * Command structure: + * 0:(u8) cmd + * 1:(u16) event_inf flag + * Command size: 3 + */ +s32 MsgEvent_Cmd29(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + + gSaveContext.eventInf[MSCRIPT_GET_8(script, 1)] &= MSCRIPT_GET_8(script, 2) ^ 0xFF; + return MSCRIPT_CONTINUE; +} + +/** + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) input player item-action + * 3:(s16) skip if player item-action matches input player item-action + * 5:(s16) skip if player item-action does not match input player item-action + * 7:(s16) skip if player item-action is negative + * Command size: 9 + */ +s32 MsgEvent_Cmd30(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + PlayerItemAction checkItemAction = MSCRIPT_GET_16(script, 1); + s16 skip; + PlayerItemAction curItemAction; + + switch (Message_GetState(&play->msgCtx)) { + case TEXT_STATE_CHOICE: + case TEXT_STATE_5: + if (!Message_ShouldAdvance(play)) { + return MSCRIPT_STOP; + } + case TEXT_STATE_16: + curItemAction = func_80123810(play); + + if (curItemAction == PLAYER_IA_NONE) { + return MSCRIPT_STOP; + } else if (curItemAction < 0) { + skip = MSCRIPT_GET_16(script, 7); + } else if (curItemAction == checkItemAction) { + skip = MSCRIPT_GET_16(script, 3); + } else { + skip = MSCRIPT_GET_16(script, 5); + } + break; + default: + return MSCRIPT_STOP; + } + *scriptPtr += skip; + return MSCRIPT_CONTINUE; +} + +/** + * Branches forward if song is obtained + * + * Command structure: + * 0:(u8) cmd + * 1:(u16) song + * 3:(s16) skip + * Command size: 9 + */ +s32 MsgEvent_Cmd31(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + u16 song = MSCRIPT_GET_16(script, 1); + s16 skip = MSCRIPT_GET_16(script, 3); + + if (CHECK_QUEST_ITEM(QUEST_SONG_SONATA + song)) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} + +/** + * Branches forward if the player's current mask matches + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) mask + * 3:(s16) skip + * Command size: 9 + */ +s32 MsgEvent_Cmd32(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s32 mask = MSCRIPT_GET_16(script, 1); + s16 skip = MSCRIPT_GET_16(script, 3); + + if (Player_GetMask(play) == mask) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} + +#define MSCRIPT_GET_TIME(hour, minute, dest, temp) \ + (temp) = (hour)*60.0f; \ + (temp) += (minute); \ + (dest) = (temp) * (0x10000 / 60 / 24.0f); \ + (dest) = ((dest)-0x10000 / 360 * 90) + +#define MSCRIPT_TIME_NOW ((gSaveContext.save.time) - 0x10000 / 360 * 90) + +/** + * Branches forward if the current time is greater than the provided time + * + * Command structure: + * 0:(u8) cmd + * 1:(u8) hour + * 1:(u8) min + * 3:(s16) skip + * Command size: 5 + */ +s32 MsgEvent_Cmd33(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 skip = MSCRIPT_GET_16(script, 3); + f32 f; + u16 time; + u16 now; + + MSCRIPT_GET_TIME(MSCRIPT_GET_8(script, 1), MSCRIPT_GET_8(script, 2), time, f); + now = MSCRIPT_TIME_NOW; + + if (time < now) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} + +/** + * Branches forward if the current time is less or equal to the provided time + * + * Command structure: + * 0:(u8) cmd + * 1:(u8) hour + * 1:(u8) min + * 3:(s16) skip + * Command size: 5 + */ +s32 MsgEvent_Cmd34(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 skip = MSCRIPT_GET_16(script, 3); + f32 f; + u16 time; + u16 now; + + MSCRIPT_GET_TIME(MSCRIPT_GET_8(script, 1), MSCRIPT_GET_8(script, 2), time, f); + now = MSCRIPT_TIME_NOW; + + if (time >= now) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} + +/** + * Branches forward if switch flag is set + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) flag + * 3:(s16) skip + * Command size: 5 + */ +s32 MsgEvent_Cmd35(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 flag = MSCRIPT_GET_16(script, 1); + s16 skip = MSCRIPT_GET_16(script, 3); + + if (Flags_GetSwitch(play, flag)) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} + +/** + * Sets switch flag + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) flag + * Command size: 3 + */ +s32 MsgEvent_Cmd36(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 flag = MSCRIPT_GET_16(script, 1); + + Flags_SetSwitch(play, flag); + return MSCRIPT_CONTINUE; +} + +/** + * Branches forward if item is in inventory + * + * Command structure: + * 0:(u8) cmd + * 1:(u16) item + * 3:(s16) skip + * Command size: 5 + */ +s32 MsgEvent_Cmd37(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + u16 item = MSCRIPT_GET_16(script, 1); + s16 skip = MSCRIPT_GET_16(script, 3); + + if (INV_CONTENT(item) == item) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} + +/** + * Branches forward if current time is within the specified interval + * + * Command structure: + * 0:(u8) cmd + * 1:(u16) startTime + * 3:(u16) endTime + * 5:(s16) skip + * Command size: 7 + */ +s32 MsgEvent_Cmd38(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 skip = MSCRIPT_GET_16(script, 5); + f32 f; + u16 startTime; + u16 endTime; + u16 now; + + MSCRIPT_GET_TIME(MSCRIPT_GET_8(script, 1), MSCRIPT_GET_8(script, 2), startTime, f); + MSCRIPT_GET_TIME(MSCRIPT_GET_8(script, 3), MSCRIPT_GET_8(script, 4), endTime, f); + endTime--; + now = MSCRIPT_TIME_NOW; + + if (startTime >= now || now >= endTime) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} + +/** + * Branches forward if the current day matches + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) day + * 3:(s16) skip + * Command size: 5 + */ +s32 MsgEvent_Cmd39(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 day = MSCRIPT_GET_16(script, 1); + s16 skip = MSCRIPT_GET_16(script, 3); + + if (gSaveContext.save.day == day) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} + +/** + * Branches forward if callback exists and returns non-zero + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) skip + * Command size: 3 + */ +s32 MsgEvent_Cmd40(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 skip = MSCRIPT_GET_16(script, 1); + + if (callback != NULL && callback(actor, play) != 0) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} + +/** + * Skip forward if a powder keg is in inventory or if a powder keg actor exists + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) skip + * Command size: 3 + */ +s32 MsgEvent_Cmd41(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 skip = MSCRIPT_GET_16(script, 1); + + if (AMMO(ITEM_POWDER_KEG) != 0 || (play->actorCtx.flags & ACTORCTX_FLAG_0)) { + *scriptPtr += skip; + } + return MSCRIPT_CONTINUE; +} + +/** + * Deletes the specified item + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) item + * Command size: 3 + */ +s32 MsgEvent_Cmd42(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 item = MSCRIPT_GET_16(script, 1); + + Inventory_DeleteItem(item, SLOT(item)); + return MSCRIPT_CONTINUE; +} + +/** + * Runs the callback and selects a skip based on the result, default skip is the first one + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) skip + * 3:(s16) skip + * 5:(s16) skip + * Command size: 7 + */ +s32 MsgEvent_Cmd43(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s32 ret = 1; + s16 skip; + + if (callback != NULL) { + ret = callback(actor, play); + } + switch (ret) { + case 3: + skip = MSCRIPT_GET_16(script, 5); + break; + case 2: + skip = MSCRIPT_GET_16(script, 3); + break; + case 1: + skip = MSCRIPT_GET_16(script, 1); + break; + default: + return MSCRIPT_STOP; + } + *scriptPtr += skip; + return MSCRIPT_CONTINUE; +} + +/** + * Close the current textbox and set the player actor text id + * + * Command structure: + * 0:(u8) cmd + * 1:(u16) textId + * Command size: 3 + */ +s32 MsgEvent_Cmd44(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + Player* player = GET_PLAYER(play); + u8* script = *scriptPtr; + u16 textId = MSCRIPT_GET_16(script, 1); + + player->actor.textId = textId; + Message_CloseTextbox(play); + return MSCRIPT_CONTINUE; +} + +/** + * Queue a bomber's notebook event + * + * Command structure: + * 0:(u8) cmd + * 1:(u16) event + * Command size: 3 + */ +s32 MsgEvent_Cmd45(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + u16 event = MSCRIPT_GET_16(script, 1); + + Message_BombersNotebookQueueEvent(play, event); + return MSCRIPT_CONTINUE; +} + +/** + * + * + * Command structure: + * 0:(u8) cmd + * Command size: 1 + */ +s32 MsgEvent_Cmd46(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + switch (Message_GetState(&play->msgCtx)) { + case TEXT_STATE_CLOSING: + break; + case TEXT_STATE_CHOICE: + case TEXT_STATE_5: + if (!Message_ShouldAdvance(play)) { + return MSCRIPT_STOP; + } + case TEXT_STATE_DONE: + if (!Message_ShouldAdvance(play)) { + return MSCRIPT_STOP; + } + break; + default: + return MSCRIPT_STOP; + } + return MSCRIPT_CONTINUE; +} + +/** + * + * Command structure: + * 0:(u8) cmd + * 1:(s16) skip + * Command size: 3 + */ +s32 MsgEvent_Cmd47(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + u8* script = *scriptPtr; + s16 skip = MSCRIPT_GET_16(script, 1); + + *scriptPtr += skip; + *scriptPtr += 3; + return MSCRIPT_STOP; +} + +/** + * Plays Decide sfx + * + * Command structure: + * 0:(u8) cmd + * Command size: 1 + */ +s32 MsgEvent_Cmd48(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + Audio_PlaySfx_MessageDecide(); + return MSCRIPT_CONTINUE; +} + +/** + * Plays Cancel sfx + * + * Command structure: + * 0:(u8) cmd + * Command size: 1 + */ +s32 MsgEvent_Cmd49(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + Audio_PlaySfx_MessageCancel(); + return MSCRIPT_CONTINUE; +} + +/** + * Plays NA_SE_SY_ERROR sfx + * + * Command structure: + * 0:(u8) cmd + * Command size: 1 + */ +s32 MsgEvent_Cmd50(Actor* actor, PlayState* play, u8** scriptPtr, MsgEventCallback callback, s32* endScript) { + Audio_PlaySfx(NA_SE_SY_ERROR); + return MSCRIPT_CONTINUE; +} + +MsgEventHandler sMsgEventCmdHandlers[51] = { + MsgEvent_Cmd00, MsgEvent_Cmd01, MsgEvent_Cmd02, MsgEvent_Cmd03, MsgEvent_Cmd04, MsgEvent_Cmd05, MsgEvent_Cmd06, + MsgEvent_Cmd07, MsgEvent_Cmd08, MsgEvent_Cmd09, MsgEvent_Cmd10, MsgEvent_Cmd11, MsgEvent_Cmd12, MsgEvent_Cmd13, + MsgEvent_Cmd14, MsgEvent_Cmd15, MsgEvent_Cmd16, MsgEvent_Cmd17, MsgEvent_Cmd18, MsgEvent_Cmd19, MsgEvent_Cmd20, + MsgEvent_Cmd21, MsgEvent_Cmd22, MsgEvent_Cmd23, MsgEvent_Cmd24, MsgEvent_Cmd25, MsgEvent_Cmd26, MsgEvent_Cmd27, + MsgEvent_Cmd28, MsgEvent_Cmd29, MsgEvent_Cmd30, MsgEvent_Cmd31, MsgEvent_Cmd32, MsgEvent_Cmd33, MsgEvent_Cmd34, + MsgEvent_Cmd35, MsgEvent_Cmd36, MsgEvent_Cmd37, MsgEvent_Cmd38, MsgEvent_Cmd39, MsgEvent_Cmd40, MsgEvent_Cmd41, + MsgEvent_Cmd42, MsgEvent_Cmd43, MsgEvent_Cmd44, MsgEvent_Cmd45, MsgEvent_Cmd46, MsgEvent_Cmd47, MsgEvent_Cmd48, + MsgEvent_Cmd49, MsgEvent_Cmd50, +}; + +u8 sMsgEventCmdLengths[51] = { + MSCRIPT_BRANCH_ON_WEEK_EVENT_REG_LENGTH, + 3, + 3, + 3, + 3, + 7, + 5, + 3, + 5, + 3, + 13, + 3, + 1, + 1, + 3, + 3, + 1, + 3, + 1, + 3, + 3, + 1, + 1, + 1, + 1, + 3, + 5, + 5, + 3, + 3, + 9, + 5, + 5, + 5, + 5, + 5, + 3, + 5, + 7, + 5, + 3, + 3, + 3, + 7, + 3, + 3, + 1, + 3, + 1, + 1, + 1, +}; + +/** + * Runs a message event script + * + * @param actor The actor associated with the script + * @param play Play game state + * @param script The script to run + * @param callback Callback function used by various commands for different purposes + * @param[in,out] pos Position to resume the script from, the point at which the script stops executing is also + * written out here + * @return s32 Whether the script has reached an endpoint + */ +s32 MsgEvent_RunScript(Actor* actor, PlayState* play, MsgScript* script, MsgEventCallback callback, s32* pos) { + u8* start; + u8* cur; + s32 scriptDone = false; + s32 i; + s32 cmdLen; + u8 cmdId; + s32 pad; + start = script; + script += *pos; + + if (sREG(95) != 0) {} + + cmdLen = 0; + do { + // Skip data from previous command + script += cmdLen; + + // Get command id + cmdId = *script; + + // Get command length + if (cmdId < ARRAY_COUNTU(sMsgEventCmdLengths)) { + cmdLen = sMsgEventCmdLengths[cmdId]; + } else { + cmdLen = -1; + //! @bug command handler still runs even if cmdId is invalid + } + + // Debug loop? + if (sREG(95) != 0) { + for (i = 0; i < cmdLen; i++) {} + } + + // Run command handler + } while (sMsgEventCmdHandlers[cmdId](actor, play, &script, callback, &scriptDone) == MSCRIPT_CONTINUE); + + cur = script; + if (!scriptDone) { + *pos = cur - start; + } else { + *pos = 0; + } + return scriptDone; +} diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index bd8a5b94e..581e883b4 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -1378,7 +1378,7 @@ u8 Player_GetStrength(void) { return sPlayerStrengths[GET_PLAYER_FORM]; } -u8 Player_GetMask(PlayState* play) { +s32 Player_GetMask(PlayState* play) { Player* player = GET_PLAYER(play); return player->currentMask; diff --git a/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c b/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c index 584edd42e..bc8980a77 100644 --- a/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c +++ b/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c @@ -30,20 +30,43 @@ ActorInit Dm_Tag_InitVars = { (ActorFunc)NULL, }; -s32 D_80C22BF0[] = { - 0x0E28F00C, - 0x15090000, - 0x10000000, +MsgScript D_80C22BF0[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x28F0), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_PAUSE(), + /* 0x0005 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0008 0x01 */ MSCRIPT_DONE(), }; -s32 D_80C22BFC[] = { - 0x0900000E, 0x28F10C09, 0x00000E28, 0xF20C0900, 0x000E28F3, 0x0C090000, 0x0E28F40C, - 0x0900000E, 0x28F50C09, 0x00000E28, 0xF60C1511, 0x55040900, 0x00100000, +MsgScript D_80C22BFC[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0003 0x03 */ MSCRIPT_BEGIN_TEXT(0x28F1), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x000A 0x03 */ MSCRIPT_BEGIN_TEXT(0x28F2), + /* 0x000D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000E 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0011 0x03 */ MSCRIPT_BEGIN_TEXT(0x28F3), + /* 0x0014 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0015 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0018 0x03 */ MSCRIPT_BEGIN_TEXT(0x28F4), + /* 0x001B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001C 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x001F 0x03 */ MSCRIPT_BEGIN_TEXT(0x28F5), + /* 0x0022 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0023 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0026 0x03 */ MSCRIPT_BEGIN_TEXT(0x28F6), + /* 0x0029 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002A 0x01 */ MSCRIPT_PAUSE(), + /* 0x002B 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x55, 0x04), + /* 0x002E 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0031 0x01 */ MSCRIPT_DONE(), }; -s32 D_80C22C30[] = { - 0x0E28EF0C, - 0x10000000, +MsgScript D_80C22C30[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x28EF), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_DONE(), }; Actor* func_80C22350(DmTag* this, PlayState* play, u8 actorCat, s16 actorId) { @@ -91,8 +114,8 @@ s16 func_80C2247C(DmTag* this, s32 numCutscenes) { return csId; } -s32 func_80C224D8(DmTag* this, PlayState* play) { - s32 pad; +s32 func_80C224D8(Actor* thisx, PlayState* play) { + DmTag* this = THIS; Actor* sp30; Actor* sp2C; s16 csId = this->actor.csId; @@ -169,7 +192,9 @@ s32 func_80C224D8(DmTag* this, PlayState* play) { return ret; } -s32 func_80C227E8(DmTag* this, PlayState* play) { +s32 func_80C227E8(Actor* thisx, PlayState* play) { + DmTag* this = THIS; + if (this->unk_1A4 == 0) { func_800B7298(play, &this->actor, PLAYER_CSMODE_WAIT); play->nextEntrance = ENTRANCE(STOCK_POT_INN, 4); @@ -182,7 +207,7 @@ s32 func_80C227E8(DmTag* this, PlayState* play) { return false; } -s32* func_80C22880(DmTag* this, PlayState* play) { +MsgScript* func_80C22880(DmTag* this, PlayState* play) { s32 time; switch (this->unk_18E) { @@ -228,7 +253,7 @@ void DmTag_DoNothing(DmTag* this, PlayState* play) { } void func_80C229FC(DmTag* this, PlayState* play) { - if (func_8010BF58(&this->actor, play, this->msgEventScript, this->msgEventCallback, &this->msgEventArg4)) { + if (MsgEvent_RunScript(&this->actor, play, this->msgEventScript, this->msgEventCallback, &this->msgEventArg4)) { this->actionFunc = func_80C229AC; } } diff --git a/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.h b/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.h index eec741df6..63c2caa16 100644 --- a/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.h +++ b/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.h @@ -6,7 +6,6 @@ struct DmTag; typedef void (*DmTagActionFunc)(struct DmTag*, PlayState*); -typedef s32 (*DmTagMsgEventFunc)(struct DmTag*, PlayState*); typedef struct DmTag { /* 0x000 */ Actor actor; @@ -14,11 +13,11 @@ typedef struct DmTag { /* 0x188 */ DmTagActionFunc actionFunc; /* 0x18C */ u16 unk_18C; /* 0x18E */ u8 unk_18E; - /* 0x190 */ s32* msgEventScript; + /* 0x190 */ MsgScript* msgEventScript; /* 0x194 */ s32 msgEventArg4; /* 0x198 */ UNK_TYPE1 pad198[0xC]; /* 0x1A4 */ s16 unk_1A4; - /* 0x1A8 */ DmTagMsgEventFunc msgEventCallback; + /* 0x1A8 */ MsgEventCallback msgEventCallback; } DmTag; // size = 0x1AC #endif // Z_DM_TAG_H 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 0a8df4f40..073b1a074 100644 --- a/src/overlays/actors/ovl_En_Ah/z_en_ah.c +++ b/src/overlays/actors/ovl_En_Ah/z_en_ah.c @@ -39,13 +39,36 @@ static u8 D_80BD3DB0[] = { /* 0x37 */ SCHEDULE_CMD_RET_NONE(), }; -s32 D_80BD3DE8[] = { 0x0E28FF0C, 0x10000000 }; +MsgScript D_80BD3DE8[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x28FF), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_DONE(), +}; -s32 D_80BD3DF0[] = { 0x0E29000C, 0x10000000 }; +MsgScript D_80BD3DF0[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2900), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_DONE(), +}; -s32 D_80BD3DF8[] = { 0x00330100, 0x050E28FE, 0x0C100E28, -0x03F3F000 }; +MsgScript D_80BD3DF8[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x33, 0x01, 0x000A - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x28FE), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x01 */ MSCRIPT_DONE(), -s32 D_80BD3E08[] = { 0x0E28FD0C, 0x0F29540C, 0x10000000 }; + /* 0x000A 0x03 */ MSCRIPT_BEGIN_TEXT(0x28FC), + /* 0x000D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000E 0x01 */ MSCRIPT_DONE(), +}; + +MsgScript D_80BD3E08[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x28FD), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2954), + /* 0x0007 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0008 0x01 */ MSCRIPT_DONE(), +}; ActorInit En_Ah_InitVars = { ACTOR_EN_AH, @@ -344,7 +367,7 @@ s32 func_80BD3198(EnAh* this, PlayState* play) { return false; } -s32* func_80BD3294(EnAh* this, PlayState* play) { +MsgScript* func_80BD3294(EnAh* this, PlayState* play) { s32 mask = Player_GetMask(play); if (PLAYER_MASK_KAFEIS_MASK == mask) { @@ -492,7 +515,7 @@ void func_80BD3768(EnAh* this, PlayState* play) { Vec3f sp40; Vec3f sp34; - if (func_8010BF58(&this->actor, play, func_80BD3294(this, play), NULL, &this->unk_1E0)) { + if (MsgEvent_RunScript(&this->actor, play, func_80BD3294(this, play), NULL, &this->unk_1E0)) { SubS_UpdateFlags(&this->unk_2D8, 3, 7); this->unk_2D8 &= ~8; this->unk_2D8 |= 0x80; 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 2568d6617..5ca3dafe4 100644 --- a/src/overlays/actors/ovl_En_Al/z_en_al.c +++ b/src/overlays/actors/ovl_En_Al/z_en_al.c @@ -37,52 +37,360 @@ static u8 D_80BDFC70[] = { /* 0x46 */ SCHEDULE_CMD_RET_VAL_L(1), }; -s32 D_80BDFCBC[] = { - 0x09000017, 0x0E27A50C, 0x09000018, 0x0E27A60C, 0x09000017, 0x0E27A70C, 0x09000018, 0x0E27A80C, - 0x09000017, 0x0E27A90C, 0x09000018, 0x0E27AA0C, 0x09000017, 0x0E27AB0C, 0x09000018, 0x0E27AC0C, - 0x09000017, 0x0E27AD2D, 0x000B2D00, 0x080C1159, 0x08090000, 0x10000000, +MsgScript D_80BDFCBC[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0003 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0004 0x03 */ MSCRIPT_BEGIN_TEXT(0x27A5), + /* 0x0007 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0008 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x000B 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x000C 0x03 */ MSCRIPT_BEGIN_TEXT(0x27A6), + /* 0x000F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0010 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0013 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0014 0x03 */ MSCRIPT_BEGIN_TEXT(0x27A7), + /* 0x0017 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0018 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x001B 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x001C 0x03 */ MSCRIPT_BEGIN_TEXT(0x27A8), + /* 0x001F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0020 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0023 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0024 0x03 */ MSCRIPT_BEGIN_TEXT(0x27A9), + /* 0x0027 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0028 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x002B 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x002C 0x03 */ MSCRIPT_BEGIN_TEXT(0x27AA), + /* 0x002F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0030 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0033 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0034 0x03 */ MSCRIPT_BEGIN_TEXT(0x27AB), + /* 0x0037 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0038 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x003B 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x003C 0x03 */ MSCRIPT_BEGIN_TEXT(0x27AC), + /* 0x003F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0040 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0043 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0044 0x03 */ MSCRIPT_BEGIN_TEXT(0x27AD), + /* 0x0047 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x004A 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x004D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004E 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x59, 0x08), + /* 0x0051 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0054 0x01 */ MSCRIPT_DONE(), }; -s32 D_80BDFD14[] = { - 0x00562000, 0xA2090000, 0x170E2AA6, 0x0C090000, 0x180E2AA7, 0x0C090000, 0x170E2AA8, 0x0C090000, - 0x180E2AA9, 0x0C090000, 0x170E2AAA, 0x0C090000, 0x180E2AAB, 0x0C090000, 0x170E2AAC, 0x0C090000, - 0x170E2AAD, 0x0C0F2AAE, 0x0C090000, 0x180E2AAF, 0x0C090000, 0x170E2AB0, 0x0C090000, 0x170E2AB1, - 0x0C090000, 0x180E2AB2, 0x0C090000, 0x170E2AB3, 0x0C090000, 0x180E2AB4, 0x0C090000, 0x170E2AB5, - 0x0C090000, 0x180E2AB6, 0x0C090000, 0x170E2AB7, 0x0C090000, 0x180E2AB8, 0x2D00082D, 0x00092D00, - 0x0A0C1156, 0x20121009, 0x0000170E, 0x2AEA0C09, 0x0000180E, 0x2AEB0C09, 0x00001210, +MsgScript D_80BDFD14[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x56, 0x20, 0x00A7 - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0008 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0009 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AA6), + /* 0x000C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000D 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0010 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0011 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AA7), + /* 0x0014 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0015 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0018 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0019 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AA8), + /* 0x001C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001D 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0020 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0021 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AA9), + /* 0x0024 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0025 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0028 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0029 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AAA), + /* 0x002C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002D 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0030 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0031 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AAB), + /* 0x0034 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0035 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0038 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0039 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AAC), + /* 0x003C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003D 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0040 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0041 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AAD), + /* 0x0044 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0045 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2AAE), + /* 0x0048 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0049 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x004C 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x004D 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AAF), + /* 0x0050 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0051 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0054 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0055 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB0), + /* 0x0058 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0059 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x005C 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x005D 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB1), + /* 0x0060 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0061 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0064 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0065 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB2), + /* 0x0068 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0069 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x006C 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x006D 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB3), + /* 0x0070 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0071 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0074 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0075 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB4), + /* 0x0078 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0079 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x007C 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x007D 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB5), + /* 0x0080 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0081 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0084 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0085 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB6), + /* 0x0088 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0089 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x008C 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x008D 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB7), + /* 0x0090 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0091 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0094 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0095 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB8), + /* 0x0098 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x009B 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_TOTO), + /* 0x009E 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_GORMAN), + /* 0x00A1 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00A2 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x56, 0x20), + /* 0x00A5 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00A6 0x01 */ MSCRIPT_DONE(), + + /* 0x00A7 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x00AA 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x00AB 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AEA), + /* 0x00AE 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00AF 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x00B2 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x00B3 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AEB), + /* 0x00B6 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00B7 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x00BA 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00BB 0x01 */ MSCRIPT_DONE(), }; -s32 D_80BDFDD0[] = { 0x005C0800, 0x0B0E2AE5, 0x2D000811, 0x5C080C10, 0x0E2AE62D, 0x00080C10 }; +MsgScript D_80BDFDD0[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x5C, 0x08, 0x0010 - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AE5), + /* 0x0008 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x000B 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x5C, 0x08), + /* 0x000E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000F 0x01 */ MSCRIPT_DONE(), -s32 D_80BDFDE8[] = { 0x0900000E, 0x2B192D00, 0x080C1509, 0x00001210 }; - -s32 D_80BDFDF8[] = { - 0x09000000, 0x39040071, 0x0E2B1A0C, 0x0F00FF1E, 0x00330018, 0x000D0000, 0x0E2B1B2D, 0x00080C15, 0x09000012, - 0x102C2B1C, 0x0C2F0000, 0x0C19FFDC, 0x2C2B1D0C, 0x2F00000C, 0x0F2B1E0C, 0x0F2B1F0C, 0x122A002E, 0x00390800, - 0x1306006F, 0x00001300, 0x6F2F0000, 0x2E2D0023, 0x0C07000C, 0x06000500, 0x00130005, 0x0C070000, 0x0E2B202D, - 0x00080C16, 0x11390411, 0x390819FF, 0xA60E2B3C, 0x2D00080C, 0x19FF9C00, + /* 0x0010 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AE6), + /* 0x0013 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x0016 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0017 0x01 */ MSCRIPT_DONE(), }; -s32 D_80BDFE7C[] = { 0x0E2A9C2D, 0x00080C10 }; - -s32 D_80BDFE84[] = { 0x0E2A9D2D, 0x00080C10 }; - -s32 D_80BDFE8C[] = { - 0x00390200, 0x0F0E2A9E, 0x0C0F2A9F, 0x0C0F2AA0, 0x0C190004, 0x0E2AA00C, 0x05000000, 0x1A001A30, 0x0E2AA20C, - 0x1206008F, 0x00001300, 0x8F2F0000, 0x2E2D002C, 0x2D00080C, 0x10310E2A, 0xA12D0008, 0x0C113902, 0x10000000, +MsgScript D_80BDFDE8[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0003 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B19), + /* 0x0006 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x0009 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000A 0x01 */ MSCRIPT_PAUSE(), + /* 0x000B 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x000E 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x000F 0x01 */ MSCRIPT_DONE(), }; -s32 D_80BDFED4[] = { - 0x0900002C, 0x2B1D0C2F, 0x00000C0F, 0x2B1E0C0F, 0x2B1F0C12, 0x2A002E00, 0x39080013, - 0x06006F00, 0x0013006F, 0x2F00002E, 0x2D00230C, 0x07000C06, 0x00050000, 0x1300050C, - 0x0700000E, 0x2B202D00, 0x080C1611, 0x39041139, 0x08150900, 0x00121000, +MsgScript D_80BDFDF8[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0003 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x39, 0x04, 0x0079 - 0x0008), + /* 0x0008 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B1A), + /* 0x000B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000C 0x03 */ MSCRIPT_CONTINUE_TEXT(0x00FF), + /* 0x000F 0x09 */ MSCRIPT_BRANCH_ON_ITEMACTION(0x0033, 0x0030 - 0x0018, 0x0025 - 0x0018, 0x0), + /* 0x0018 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B1B), + /* 0x001B 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x001E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001F 0x01 */ MSCRIPT_PAUSE(), + /* 0x0020 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0023 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0024 0x01 */ MSCRIPT_DONE(), + + /* 0x0025 0x03 */ MSCRIPT_CMD44(0x2B1C), + /* 0x0028 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0029 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x002C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002D 0x03 */ MSCRIPT_JUMP(0x000C - 0x0030), + + /* 0x0030 0x03 */ MSCRIPT_CMD44(0x2B1D), + /* 0x0033 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0034 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0037 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0038 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2B1E), + /* 0x003B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003C 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2B1F), + /* 0x003F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0040 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0041 0x03 */ MSCRIPT_DEL_ITEM(ITEM_LETTER_MAMA), + /* 0x0044 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x39, 0x08, 0x005C - 0x0049), + /* 0x0049 0x05 */ MSCRIPT_OFFER_ITEM(GI_CHATEAU_BOTTLE, 0x0), + /* 0x004E 0x03 */ MSCRIPT_COLLECT_SET(0x006F), + /* 0x0051 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0054 0x01 */ MSCRIPT_CMD46(), + /* 0x0055 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DELIVERED_PRIORITY_MAIL), + /* 0x0058 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0059 0x03 */ MSCRIPT_CMD07(0x0068 - 0x005C), + /* 0x005C 0x05 */ MSCRIPT_OFFER_ITEM(GI_RUPEE_PURPLE, 0x0), + /* 0x0061 0x03 */ MSCRIPT_COLLECT_SET(0x0005), + /* 0x0064 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0065 0x03 */ MSCRIPT_CMD07(0x0), + /* 0x0068 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B20), + /* 0x006B 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x006E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x006F 0x01 */ MSCRIPT_CMD22(), + /* 0x0070 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x39, 0x04), + /* 0x0073 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x39, 0x08), + /* 0x0076 0x03 */ MSCRIPT_JUMP(0x001F - 0x0079), + + /* 0x0079 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B3C), + /* 0x007C 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x007F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0080 0x03 */ MSCRIPT_JUMP(0x001F - 0x0083), }; -s32 D_80BDFF24[] = { - 0x0900002C, 0x2B1C0C0F, 0x00FF1E00, 0x33000DFF, 0xF000000E, 0x2B1B2D00, 0x080C1509, 0x00001210, - 0x2C2B1D0C, 0x2F00000C, 0x0F2B1E0C, 0x0F2B1F0C, 0x122A002E, 0x00390800, 0x1306006F, 0x00001300, - 0x6F2F0000, 0x2E2D0023, 0x0C07000C, 0x06000500, 0x00130005, 0x0C070000, 0x0E2B202D, 0x00080C16, - 0x11390411, 0x390819FF, 0xB10E2B3C, 0x2D00080C, 0x19FFA700, +MsgScript D_80BDFE7C[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2A9C), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_DONE(), +}; + +MsgScript D_80BDFE84[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2A9D), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_DONE(), +}; + +MsgScript D_80BDFE8C[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x39, 0x02, 0x0014 - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x2A9E), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2A9F), + /* 0x000C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000D 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2AA0), + /* 0x0010 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0011 0x03 */ MSCRIPT_JUMP(0x0018 - 0x0014), + /* 0x0014 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AA0), + /* 0x0017 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0018 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x0, 0x0039 - 0x001F, 0x0039 - 0x001F), + /* 0x001F 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x0020 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AA2), + /* 0x0023 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0024 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0025 0x05 */ MSCRIPT_OFFER_ITEM(GI_MASK_KAFEIS_MASK, 0x0), + /* 0x002A 0x03 */ MSCRIPT_COLLECT_SET(0x008F), + /* 0x002D 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0030 0x01 */ MSCRIPT_CMD46(), + /* 0x0031 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAFEIS_MASK), + /* 0x0034 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x0037 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0038 0x01 */ MSCRIPT_DONE(), + + /* 0x0039 0x01 */ MSCRIPT_PLAY_CANCEL(), + /* 0x003A 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AA1), + /* 0x003D 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x0040 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0041 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x39, 0x02), + /* 0x0044 0x01 */ MSCRIPT_DONE(), +}; + +MsgScript D_80BDFED4[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0003 0x03 */ MSCRIPT_CMD44(0x2B1D), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x000A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000B 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2B1E), + /* 0x000E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000F 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2B1F), + /* 0x0012 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0013 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0014 0x03 */ MSCRIPT_DEL_ITEM(ITEM_LETTER_MAMA), + /* 0x0017 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x39, 0x08, 0x002F - 0x001C), + /* 0x001C 0x05 */ MSCRIPT_OFFER_ITEM(GI_CHATEAU_BOTTLE, 0x0), + /* 0x0021 0x03 */ MSCRIPT_COLLECT_SET(0x006F), + /* 0x0024 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0027 0x01 */ MSCRIPT_CMD46(), + /* 0x0028 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DELIVERED_PRIORITY_MAIL), + /* 0x002B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002C 0x03 */ MSCRIPT_CMD07(0x003B - 0x002F), + /* 0x002F 0x05 */ MSCRIPT_OFFER_ITEM(GI_RUPEE_PURPLE, 0x0), + /* 0x0034 0x03 */ MSCRIPT_COLLECT_SET(0x0005), + /* 0x0037 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0038 0x03 */ MSCRIPT_CMD07(0x0), + /* 0x003B 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B20), + /* 0x003E 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x0041 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0042 0x01 */ MSCRIPT_CMD22(), + /* 0x0043 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x39, 0x04), + /* 0x0046 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x39, 0x08), + /* 0x0049 0x01 */ MSCRIPT_PAUSE(), + /* 0x004A 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x004D 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x004E 0x01 */ MSCRIPT_DONE(), +}; + +MsgScript D_80BDFF24[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0003 0x03 */ MSCRIPT_CMD44(0x2B1C), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x03 */ MSCRIPT_CONTINUE_TEXT(0x00FF), + /* 0x000A 0x09 */ MSCRIPT_BRANCH_ON_ITEMACTION(0x0033, 0x0020 - 0x0013, 0x0003 - 0x0013, 0x0), + /* 0x0013 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B1B), + /* 0x0016 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x0019 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001A 0x01 */ MSCRIPT_PAUSE(), + /* 0x001B 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x001E 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x001F 0x01 */ MSCRIPT_DONE(), + + /* 0x0020 0x03 */ MSCRIPT_CMD44(0x2B1D), + /* 0x0023 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0024 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0027 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0028 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2B1E), + /* 0x002B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002C 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2B1F), + /* 0x002F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0030 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0031 0x03 */ MSCRIPT_DEL_ITEM(ITEM_LETTER_MAMA), + /* 0x0034 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x39, 0x08, 0x004C - 0x0039), + /* 0x0039 0x05 */ MSCRIPT_OFFER_ITEM(GI_CHATEAU_BOTTLE, 0x0), + /* 0x003E 0x03 */ MSCRIPT_COLLECT_SET(0x006F), + /* 0x0041 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0044 0x01 */ MSCRIPT_CMD46(), + /* 0x0045 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DELIVERED_PRIORITY_MAIL), + /* 0x0048 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0049 0x03 */ MSCRIPT_CMD07(0x0058 - 0x004C), + /* 0x004C 0x05 */ MSCRIPT_OFFER_ITEM(GI_RUPEE_PURPLE, 0x0), + /* 0x0051 0x03 */ MSCRIPT_COLLECT_SET(0x0005), + /* 0x0054 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0055 0x03 */ MSCRIPT_CMD07(0x0), + /* 0x0058 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B20), + /* 0x005B 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x005E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x005F 0x01 */ MSCRIPT_CMD22(), + /* 0x0060 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x39, 0x04), + /* 0x0063 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x39, 0x08), + /* 0x0066 0x03 */ MSCRIPT_JUMP(0x001A - 0x0069), + + // Unreachable + /* 0x0069 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B3C), + /* 0x006C 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x006F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0070 0x03 */ MSCRIPT_JUMP(0x001A - 0x0073), }; ActorInit En_Al_InitVars = { @@ -315,8 +623,8 @@ s32 func_80BDE678(EnAl* this, s16* arg1, s16 arg2) { return ret; } -s32 func_80BDE7FC(EnAl* this, PlayState* play) { - s32 pad; +s32 func_80BDE7FC(Actor* thisx, PlayState* play) { + EnAl* this = THIS; s16 csId = func_80BDE484(this, 0); s32 pad2; s32 sp20 = false; @@ -357,8 +665,9 @@ s32 func_80BDE7FC(EnAl* this, PlayState* play) { return sp20; } -s32 func_80BDE92C(EnAl* this, PlayState* play) { - s32 pad[2]; +s32 func_80BDE92C(Actor* thisx, PlayState* play) { + s32 pad; + EnAl* this = THIS; Actor* sp1C = func_80BDE1A0(this, play, ACTORCAT_NPC, ACTOR_EN_GM); Actor* temp_v0 = func_80BDE1A0(this, play, ACTORCAT_NPC, ACTOR_EN_TOTO); @@ -404,8 +713,8 @@ s32 func_80BDE92C(EnAl* this, PlayState* play) { return true; } -s32 func_80BDEA14(EnAl* this, PlayState* play) { - s32 pad; +s32 func_80BDEA14(Actor* thisx, PlayState* play) { + EnAl* this = THIS; s32 sp18 = false; switch (this->unk_4E6) { @@ -428,7 +737,7 @@ s32 func_80BDEA14(EnAl* this, PlayState* play) { return sp18; } -s32* func_80BDEABC(EnAl* this, PlayState* play) { +MsgScript* func_80BDEABC(EnAl* this, PlayState* play) { Player* player = GET_PLAYER(play); if (this->unk_35C == 3) { @@ -489,7 +798,7 @@ s32 func_80BDEC2C(EnAl* this, PlayState* play) { } SubS_UpdateFlags(&this->unk_4C2, 0, 7); this->unk_4E6 = 0; - this->unk_4EC = 0; + this->unk_4EC = NULL; this->actor.child = this->unk_368; this->unk_360 = func_80BDEABC(this, play); this->unk_4C2 |= 0x20; @@ -765,7 +1074,7 @@ void func_80BDF5E8(EnAl* this, PlayState* play) { } void func_80BDF6C4(EnAl* this, PlayState* play) { - if (func_8010BF58(&this->actor, play, this->unk_360, this->unk_4EC, &this->unk_364)) { + if (MsgEvent_RunScript(&this->actor, play, this->unk_360, this->unk_4EC, &this->unk_364)) { SubS_UpdateFlags(&this->unk_4C2, 3, 7); this->unk_4C2 &= ~0x20; this->unk_4C2 |= 0x200; diff --git a/src/overlays/actors/ovl_En_Al/z_en_al.h b/src/overlays/actors/ovl_En_Al/z_en_al.h index 77e1011bf..4c94fa446 100644 --- a/src/overlays/actors/ovl_En_Al/z_en_al.h +++ b/src/overlays/actors/ovl_En_Al/z_en_al.h @@ -6,7 +6,6 @@ struct EnAl; typedef void (*EnAlActionFunc)(struct EnAl*, PlayState*); -typedef s32 (*EnAlUnkFunc)(struct EnAl*, PlayState*); typedef void (*EnAlUnkFunc2)(struct EnAl*, PlayState*); typedef struct EnAl { @@ -17,7 +16,7 @@ typedef struct EnAl { /* 0x190 */ MtxF unk_190[6]; /* 0x310 */ ColliderCylinder unk_310; /* 0x35C */ u8 unk_35C; - /* 0x360 */ s32* unk_360; + /* 0x360 */ MsgScript* unk_360; /* 0x364 */ s32 unk_364; /* 0x368 */ Actor* unk_368; /* 0x36C */ Vec3f unk_36C; @@ -38,7 +37,7 @@ typedef struct EnAl { /* 0x4E6 */ s16 unk_4E6; /* 0x4E8 */ s16 unk_4E8; /* 0x4EA */ s16 unk_4EA; - /* 0x4EC */ EnAlUnkFunc unk_4EC; + /* 0x4EC */ MsgEventCallback unk_4EC; /* 0x4F0 */ s32 unk_4F0; /* 0x4F4 */ s32 unk_4F4; /* 0x4F8 */ s32 unk_4F8; diff --git a/src/overlays/actors/ovl_En_Bjt/z_en_bjt.c b/src/overlays/actors/ovl_En_Bjt/z_en_bjt.c index dbcd864b1..16ca50c04 100644 --- a/src/overlays/actors/ovl_En_Bjt/z_en_bjt.c +++ b/src/overlays/actors/ovl_En_Bjt/z_en_bjt.c @@ -37,13 +37,58 @@ static u8 sScheduleScript[] = { /* 0x11 */ SCHEDULE_CMD_RET_NONE(), }; -static u8 sMsgEventScript[] = { - 0x0E, 0x29, 0x48, 0x0C, 0x0E, 0x00, 0xFF, 0x2B, 0x00, 0x00, 0x00, 0x52, 0x00, 0x5F, 0x2C, 0x29, 0x4A, 0x0C, 0x2F, - 0x00, 0x00, 0x0C, 0x15, 0x09, 0x00, 0x00, 0x0E, 0x29, 0x4B, 0x0C, 0x15, 0x09, 0x00, 0x00, 0x0E, 0x29, 0x4C, 0x0C, - 0x12, 0x00, 0x49, 0x08, 0x00, 0x1D, 0x09, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x00, 0x13, 0x00, 0x0C, 0x2F, 0x00, - 0x00, 0x2E, 0x2D, 0x00, 0x28, 0x2D, 0x00, 0x0D, 0x0C, 0x11, 0x49, 0x08, 0x11, 0x5A, 0x80, 0x10, 0x09, 0x00, 0x00, - 0x06, 0x00, 0x02, 0x00, 0x00, 0x13, 0x00, 0x02, 0x2F, 0x00, 0x00, 0x2E, 0x2D, 0x00, 0x0D, 0x0C, 0x11, 0x5A, 0x80, - 0x10, 0x2C, 0x29, 0x49, 0x0C, 0x2F, 0x00, 0x00, 0x0C, 0x2D, 0x00, 0x0D, 0x12, 0x10, 0x2D, 0x00, 0x0D, 0x12, 0x10, +static MsgScript sMsgEventScript[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2948), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x03 */ MSCRIPT_BEGIN_TEXT(0x00FF), + /* 0x0007 0x07 */ MSCRIPT_BRANCH_ON_CALLBACK(0x0, 0x0060 - 0x000E, 0x006D - 0x000E), + /* 0x000E 0x03 */ MSCRIPT_CMD44(0x294A), + /* 0x0011 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0012 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0015 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0016 0x01 */ MSCRIPT_PAUSE(), + /* 0x0017 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x001A 0x03 */ MSCRIPT_BEGIN_TEXT(0x294B), + /* 0x001D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001E 0x01 */ MSCRIPT_PAUSE(), + /* 0x001F 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0022 0x03 */ MSCRIPT_BEGIN_TEXT(0x294C), + /* 0x0025 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0026 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0027 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x49, 0x08, 0x0049 - 0x002C), + /* 0x002C 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x002F 0x05 */ MSCRIPT_OFFER_ITEM(GI_HEART_PIECE, 0x0), + /* 0x0034 0x03 */ MSCRIPT_COLLECT_SET(0x000C), + /* 0x0037 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x003A 0x01 */ MSCRIPT_CMD46(), + /* 0x003B 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_TOILET_HAND_HP), + /* 0x003E 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_TOLIET_HAND), + /* 0x0041 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0042 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x49, 0x08), + /* 0x0045 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x5A, 0x80), + /* 0x0048 0x01 */ MSCRIPT_DONE(), + + /* 0x0049 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x004C 0x05 */ MSCRIPT_OFFER_ITEM(GI_RUPEE_BLUE, 0x0), + /* 0x0051 0x03 */ MSCRIPT_COLLECT_SET(0x0002), + /* 0x0054 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0057 0x01 */ MSCRIPT_CMD46(), + /* 0x0058 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_TOLIET_HAND), + /* 0x005B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x005C 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x5A, 0x80), + /* 0x005F 0x01 */ MSCRIPT_DONE(), + + /* 0x0060 0x03 */ MSCRIPT_CMD44(0x2949), + /* 0x0063 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0064 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0067 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0068 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_TOLIET_HAND), + /* 0x006B 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x006C 0x01 */ MSCRIPT_DONE(), + + /* 0x006D 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_TOLIET_HAND), + /* 0x0070 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0071 0x01 */ MSCRIPT_DONE(), }; ActorInit En_Bjt_InitVars = { @@ -362,7 +407,7 @@ s32 EnBjt_ChooseAnimation(EnBjt* this, PlayState* play) { void EnBjt_Talk(EnBjt* this, PlayState* play) { s16 yaw = this->actor.yawTowardsPlayer; - if (func_8010BF58(&this->actor, play, sMsgEventScript, this->msgEventCallback, &this->msgEventArg4)) { + if (MsgEvent_RunScript(&this->actor, play, sMsgEventScript, this->msgEventCallback, &this->msgEventArg4)) { this->actor.flags &= ~ACTOR_FLAG_TALK_REQUESTED; SubS_UpdateFlags(&this->stateFlags, 3, 7); this->stateFlags &= ~TOILET_HAND_STATE_TALKING; diff --git a/src/overlays/actors/ovl_En_Bjt/z_en_bjt.h b/src/overlays/actors/ovl_En_Bjt/z_en_bjt.h index 9ce5adf0e..0603b7111 100644 --- a/src/overlays/actors/ovl_En_Bjt/z_en_bjt.h +++ b/src/overlays/actors/ovl_En_Bjt/z_en_bjt.h @@ -7,7 +7,6 @@ struct EnBjt; typedef void (*EnBjtActionFunc)(struct EnBjt*, PlayState*); -typedef s32 (*MsgEventFunc)(Actor*, PlayState*); typedef struct EnBjt { /* 0x000 */ Actor actor; @@ -26,7 +25,7 @@ typedef struct EnBjt { /* 0x242 */ s16 timer; /* 0x244 */ UNK_TYPE1 unk_244[4]; /* 0x248 */ s32 playedSfx; // to only play once - /* 0x24C */ MsgEventFunc msgEventCallback; + /* 0x24C */ MsgEventCallback msgEventCallback; /* 0x250 */ s32 animIndex; /* 0x254 */ UNK_TYPE1 pad_254[8]; } EnBjt; // size = 0x25C diff --git a/src/overlays/actors/ovl_En_Dai/z_en_dai.c b/src/overlays/actors/ovl_En_Dai/z_en_dai.c index 434cb07cf..47bcaca5d 100644 --- a/src/overlays/actors/ovl_En_Dai/z_en_dai.c +++ b/src/overlays/actors/ovl_En_Dai/z_en_dai.c @@ -234,10 +234,28 @@ void func_80B3E834(EnDai* this) { } } -// Some kind of struct? -static s32 D_80B3FC8C[] = { - 0x0100060E, 0x0C900C12, 0x10005520, 0x00110E0C, 0x910C0F0C, - 0x920C0F0C, 0x930C1211, 0x5520100E, 0x0C940C12, 0x10000000, +static MsgScript D_80B3FC8C[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_IF_GORON(0x0009 - 0x0003), + /* 0x0003 0x03 */ MSCRIPT_BEGIN_TEXT(0x0C90), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0008 0x01 */ MSCRIPT_DONE(), + + /* 0x0009 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x55, 0x20, 0x001F - 0x000E), + /* 0x000E 0x03 */ MSCRIPT_BEGIN_TEXT(0x0C91), + /* 0x0011 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0012 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0C92), + /* 0x0015 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0016 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0C93), + /* 0x0019 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001A 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x001B 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x55, 0x20), + /* 0x001E 0x01 */ MSCRIPT_DONE(), + + /* 0x001F 0x03 */ MSCRIPT_BEGIN_TEXT(0x0C94), + /* 0x0022 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0023 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0024 0x01 */ MSCRIPT_DONE(), }; s16 func_80B3E8BC(EnDai* this, s32 cueId) { @@ -428,7 +446,7 @@ void func_80B3EEDC(EnDai* this, PlayState* play) { } void func_80B3EF90(EnDai* this, PlayState* play) { - if (func_8010BF58(&this->actor, play, D_80B3FC8C, NULL, &this->unk_1D0)) { + if (MsgEvent_RunScript(&this->actor, play, D_80B3FC8C, NULL, &this->unk_1D0)) { SubS_UpdateFlags(&this->unk_1CE, 3, 7); this->unk_1D0 = 0; this->actionFunc = func_80B3F00C; diff --git a/src/overlays/actors/ovl_En_Dnh/z_en_dnh.c b/src/overlays/actors/ovl_En_Dnh/z_en_dnh.c index 8f67395b3..d1dfcd8eb 100644 --- a/src/overlays/actors/ovl_En_Dnh/z_en_dnh.c +++ b/src/overlays/actors/ovl_En_Dnh/z_en_dnh.c @@ -18,28 +18,203 @@ void EnDnh_Draw(Actor* thisx, PlayState* play); void func_80A50F38(EnDnh* this, PlayState* play); void EnDnh_DoNothing(EnDnh* this, PlayState* play); -UNK_TYPE D_80A51250[] = { - 0x000C0800, 0x080E0862, 0x0C111101, 0x10040005, 0x0E08670C, 0x10001402, 0x007A0019, 0x1000300E, 0x08590C25, - 0x000D0018, 0x0F08630C, 0x12060043, 0x00001300, 0x430C0700, 0x000E088D, 0x0C190007, 0x0F088D0C, 0x19000012, - 0x11191009, 0x00001000, 0x1A100016, 0x0E085A11, 0x1A100C0F, 0x085B0C0F, 0x085C0C05, 0x00060024, 0x00060E08, - 0x5B19FFEE, 0x300F085E, 0x0C08000A, 0x00050F08, 0x750C1014, 0xFFF60F08, 0x600C1211, 0x19100900, 0x0010310F, - 0x085F0C10, 0x00192000, 0x49001A10, 0x003D0E08, 0x68111A10, 0x0C0F0869, 0x0C0F086A, 0x0C0F086B, 0x0C0F086C, - 0x0C050000, 0x00190000, 0x300E086E, 0x1119201C, 0x03201D03, 0x401D0380, 0x1D04010C, 0x12090000, 0x10310E08, - 0x6D0C100E, 0x08700C19, 0xFFCB0019, 0x2000070E, 0x08710C19, 0xFFBB0E08, 0x720C0F08, 0x730C0500, 0x00001700, - 0x0008000A, 0x0006320F, 0x08750C10, 0x3014FFF6, 0x001A4000, 0x0919FFA8, 0x310E0874, 0x0C100E08, 0x76111920, - 0x1C03201D, 0x03401D03, 0x801D0401, 0x0C120900, 0x00100000, +MsgScript D_80A51250[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x0C, 0x08, 0x000D - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x0862), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x11, 0x01), + /* 0x000C 0x01 */ MSCRIPT_DONE(), + + /* 0x000D 0x03 */ MSCRIPT_BRANCH_IF_HUMAN(0x0015 - 0x0010), + /* 0x0010 0x03 */ MSCRIPT_BEGIN_TEXT(0x0867), + /* 0x0013 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0014 0x01 */ MSCRIPT_DONE(), + + /* 0x0015 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x14, 0x02, 0x0094 - 0x001A), + /* 0x001A 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x19, 0x10, 0x004F - 0x001F), + /* 0x001F 0x03 */ MSCRIPT_BEGIN_TEXT(0x0859), + /* 0x0022 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0023 0x05 */ MSCRIPT_BRANCH_ON_ITEM(ITEM_PICTOGRAPH_BOX, 0x0040 - 0x0028), + /* 0x0028 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0863), + /* 0x002B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002C 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x002D 0x05 */ MSCRIPT_OFFER_ITEM(GI_PICTOGRAPH_BOX, 0x0), + /* 0x0032 0x03 */ MSCRIPT_COLLECT_SET(0x0043), + /* 0x0035 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0036 0x03 */ MSCRIPT_CMD07(0x0), + /* 0x0039 0x03 */ MSCRIPT_BEGIN_TEXT(0x088D), + /* 0x003C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003D 0x03 */ MSCRIPT_JUMP(0x0047 - 0x0040), + /* 0x0040 0x03 */ MSCRIPT_CONTINUE_TEXT(0x088D), + /* 0x0043 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0044 0x03 */ MSCRIPT_JUMP(0x0), + /* 0x0047 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0048 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x19, 0x10), + /* 0x004B 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x004E 0x01 */ MSCRIPT_DONE(), + + /* 0x004F 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x1A, 0x10, 0x006A - 0x0054), + /* 0x0054 0x03 */ MSCRIPT_BEGIN_TEXT(0x085A), + /* 0x0057 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x1A, 0x10), + /* 0x005A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x005B 0x03 */ MSCRIPT_CONTINUE_TEXT(0x085B), + /* 0x005E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x005F 0x03 */ MSCRIPT_CONTINUE_TEXT(0x085C), + /* 0x0062 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0063 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x0070 - 0x006A, 0x008E - 0x006A, 0x0070 - 0x006A), + /* 0x006A 0x03 */ MSCRIPT_BEGIN_TEXT(0x085B), + /* 0x006D 0x03 */ MSCRIPT_JUMP(0x005E - 0x0070), + + /* 0x0070 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x0071 0x03 */ MSCRIPT_CONTINUE_TEXT(0x085E), + /* 0x0074 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0075 0x05 */ MSCRIPT_BRANCH_ON_RUPEES(0x000A, 0x007F - 0x007A), + /* 0x007A 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0875), + /* 0x007D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x007E 0x01 */ MSCRIPT_DONE(), + + /* 0x007F 0x03 */ MSCRIPT_CHANGE_RUPEES(0xFFF6), + /* 0x0082 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0860), + /* 0x0085 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0086 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0087 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x19, 0x10), + /* 0x008A 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x008D 0x01 */ MSCRIPT_DONE(), + + /* 0x008E 0x01 */ MSCRIPT_PLAY_CANCEL(), + /* 0x008F 0x03 */ MSCRIPT_CONTINUE_TEXT(0x085F), + /* 0x0092 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0093 0x01 */ MSCRIPT_DONE(), + + /* 0x0094 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x19, 0x20, 0x00E2 - 0x0099), + /* 0x0099 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x1A, 0x10, 0x00DB - 0x009E), + /* 0x009E 0x03 */ MSCRIPT_BEGIN_TEXT(0x0868), + /* 0x00A1 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x1A, 0x10), + /* 0x00A4 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00A5 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0869), + /* 0x00A8 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00A9 0x03 */ MSCRIPT_CONTINUE_TEXT(0x086A), + /* 0x00AC 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00AD 0x03 */ MSCRIPT_CONTINUE_TEXT(0x086B), + /* 0x00B0 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00B1 0x03 */ MSCRIPT_CONTINUE_TEXT(0x086C), + /* 0x00B4 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00B5 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x0, 0x00D5 - 0x00BC, 0x0), + /* 0x00BC 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x00BD 0x03 */ MSCRIPT_BEGIN_TEXT(0x086E), + /* 0x00C0 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x19, 0x20), + /* 0x00C3 0x03 */ MSCRIPT_SET_EVENT_INF(0x03, 0x20), + /* 0x00C6 0x03 */ MSCRIPT_UNSET_EVENT_INF(0x03, 0x40), + /* 0x00C9 0x03 */ MSCRIPT_UNSET_EVENT_INF(0x03, 0x80), + /* 0x00CC 0x03 */ MSCRIPT_UNSET_EVENT_INF(0x04, 0x01), + /* 0x00CF 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00D0 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00D1 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x00D4 0x01 */ MSCRIPT_DONE(), + + /* 0x00D5 0x01 */ MSCRIPT_PLAY_CANCEL(), + /* 0x00D6 0x03 */ MSCRIPT_BEGIN_TEXT(0x086D), + /* 0x00D9 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00DA 0x01 */ MSCRIPT_DONE(), + + /* 0x00DB 0x03 */ MSCRIPT_BEGIN_TEXT(0x0870), + /* 0x00DE 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00DF 0x03 */ MSCRIPT_JUMP(0x00AD - 0x00E2), + + /* 0x00E2 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x19, 0x20, 0x00EE - 0x00E7), + /* 0x00E7 0x03 */ MSCRIPT_BEGIN_TEXT(0x0871), + /* 0x00EA 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00EB 0x03 */ MSCRIPT_JUMP(0x00A9 - 0x00EE), + + /* 0x00EE 0x03 */ MSCRIPT_BEGIN_TEXT(0x0872), + /* 0x00F1 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00F2 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0873), + /* 0x00F5 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00F6 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x0, 0x0114 - 0x00FD, 0x0), + /* 0x00FD 0x05 */ MSCRIPT_BRANCH_ON_RUPEES(0x000A, 0x0108 - 0x0102), + /* 0x0102 0x01 */ MSCRIPT_PLAY_ERROR(), + /* 0x0103 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0875), + /* 0x0106 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0107 0x01 */ MSCRIPT_DONE(), + + /* 0x0108 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x0109 0x03 */ MSCRIPT_CHANGE_RUPEES(0xFFF6), + /* 0x010C 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x1A, 0x40, 0x011A - 0x0111), + /* 0x0111 0x03 */ MSCRIPT_JUMP(0x00BC - 0x0114), + + /* 0x0114 0x01 */ MSCRIPT_PLAY_CANCEL(), + /* 0x0115 0x03 */ MSCRIPT_BEGIN_TEXT(0x0874), + /* 0x0118 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0119 0x01 */ MSCRIPT_DONE(), + + /* 0x011A 0x03 */ MSCRIPT_BEGIN_TEXT(0x0876), + /* 0x011D 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x19, 0x20), + /* 0x0120 0x03 */ MSCRIPT_SET_EVENT_INF(0x03, 0x20), + /* 0x0123 0x03 */ MSCRIPT_UNSET_EVENT_INF(0x03, 0x40), + /* 0x0126 0x03 */ MSCRIPT_UNSET_EVENT_INF(0x03, 0x80), + /* 0x0129 0x03 */ MSCRIPT_UNSET_EVENT_INF(0x04, 0x01), + /* 0x012C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x012D 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x012E 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0131 0x01 */ MSCRIPT_DONE(), }; -UNK_TYPE D_80A51384[] = { - 0x0E08610C, - 0x16100000, +MsgScript D_80A51384[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x0861), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_CMD22(), + /* 0x0005 0x01 */ MSCRIPT_DONE(), }; -UNK_TYPE D_80A5138C[] = { - 0x1B034000, 0x67001A40, 0x003A1B03, 0x80001A0E, 0x087C0C00, 0x5B20000A, 0x0F087E0C, 0x115B2019, - 0x004E0F08, 0x7B0C1900, 0x470E087D, 0x0C120600, 0x0C000013, 0x000C0C07, 0x00000E08, 0x7E0C111A, - 0x4019002C, 0x1B038000, 0x0B0E087A, 0x0C0F087B, 0x0C19001C, 0x0E08780C, 0x12060005, 0x00001300, - 0x050C0700, 0x000E0879, 0x0C190004, 0x0E08770C, 0x1D03201D, 0x03401D03, 0x801D0401, 0x16100000, +MsgScript D_80A5138C[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_EVENT_INF(0x03, 0x40, 0x006C - 0x0005), + /* 0x0005 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x1A, 0x40, 0x0044 - 0x000A), + /* 0x000A 0x05 */ MSCRIPT_BRANCH_ON_EVENT_INF(0x03, 0x80, 0x0029 - 0x000F), + /* 0x000F 0x03 */ MSCRIPT_BEGIN_TEXT(0x087C), + /* 0x0012 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0013 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x5B, 0x20, 0x0022 - 0x0018), + /* 0x0018 0x03 */ MSCRIPT_CONTINUE_TEXT(0x087E), + /* 0x001B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001C 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x5B, 0x20), + /* 0x001F 0x03 */ MSCRIPT_JUMP(0x0070 - 0x0022), + /* 0x0022 0x03 */ MSCRIPT_CONTINUE_TEXT(0x087B), + /* 0x0025 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0026 0x03 */ MSCRIPT_JUMP(0x0070 - 0x0029), + /* 0x0029 0x03 */ MSCRIPT_BEGIN_TEXT(0x087D), + /* 0x002C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002D 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x002E 0x05 */ MSCRIPT_OFFER_ITEM(GI_HEART_PIECE, 0x0), + /* 0x0033 0x03 */ MSCRIPT_COLLECT_SET(0x000C), + /* 0x0036 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0037 0x03 */ MSCRIPT_CMD07(0x0), + /* 0x003A 0x03 */ MSCRIPT_BEGIN_TEXT(0x087E), + /* 0x003D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003E 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x1A, 0x40), + /* 0x0041 0x03 */ MSCRIPT_JUMP(0x0070 - 0x0044), + /* 0x0044 0x05 */ MSCRIPT_BRANCH_ON_EVENT_INF(0x03, 0x80, 0x0054 - 0x0049), + /* 0x0049 0x03 */ MSCRIPT_BEGIN_TEXT(0x087A), + /* 0x004C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004D 0x03 */ MSCRIPT_CONTINUE_TEXT(0x087B), + /* 0x0050 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0051 0x03 */ MSCRIPT_JUMP(0x0070 - 0x0054), + /* 0x0054 0x03 */ MSCRIPT_BEGIN_TEXT(0x0878), + /* 0x0057 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0058 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0059 0x05 */ MSCRIPT_OFFER_ITEM(GI_RUPEE_PURPLE, 0x0), + /* 0x005E 0x03 */ MSCRIPT_COLLECT_SET(0x0005), + /* 0x0061 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0062 0x03 */ MSCRIPT_CMD07(0x0), + /* 0x0065 0x03 */ MSCRIPT_BEGIN_TEXT(0x0879), + /* 0x0068 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0069 0x03 */ MSCRIPT_JUMP(0x0070 - 0x006C), + /* 0x006C 0x03 */ MSCRIPT_BEGIN_TEXT(0x0877), + /* 0x006F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0070 0x03 */ MSCRIPT_UNSET_EVENT_INF(0x03, 0x20), + /* 0x0073 0x03 */ MSCRIPT_UNSET_EVENT_INF(0x03, 0x40), + /* 0x0076 0x03 */ MSCRIPT_UNSET_EVENT_INF(0x03, 0x80), + /* 0x0079 0x03 */ MSCRIPT_UNSET_EVENT_INF(0x04, 0x01), + /* 0x007C 0x01 */ MSCRIPT_CMD22(), + /* 0x007D 0x01 */ MSCRIPT_DONE(), }; ActorInit En_Dnh_InitVars = { @@ -65,8 +240,8 @@ static TexturePtr sEyeTextures[] = { gKioskKoumeEyeHalfTex, }; -s32 func_80A50D40(Actor* actor, PlayState* play) { - func_800B7298(play, actor, PLAYER_CSMODE_WAIT); +s32 func_80A50D40(Actor* thisx, PlayState* play) { + func_800B7298(play, thisx, PLAYER_CSMODE_WAIT); if (CHECK_EVENTINF(EVENTINF_35)) { play->nextEntrance = ENTRANCE(SOUTHERN_SWAMP_CLEARED, 6); } else { @@ -81,7 +256,7 @@ s32 func_80A50D40(Actor* actor, PlayState* play) { return 1; } -void* func_80A50DF8(EnDnh* this, PlayState* play) { +MsgScript* func_80A50DF8(EnDnh* this, PlayState* play) { switch (this->unk198) { case 1: return D_80A51384; @@ -115,7 +290,7 @@ s32 func_80A50EC0(EnDnh* this) { } void func_80A50F38(EnDnh* this, PlayState* play) { - if (func_8010BF58(&this->actor, play, this->msgEventScript, this->msgEventCallback, &this->unk194)) { + if (MsgEvent_RunScript(&this->actor, play, this->msgEventScript, this->msgEventCallback, &this->unk194)) { SubS_UpdateFlags(&this->unk18C, 3, 7); this->unk194 = 0; this->unk198 = 0; diff --git a/src/overlays/actors/ovl_En_Dnh/z_en_dnh.h b/src/overlays/actors/ovl_En_Dnh/z_en_dnh.h index b7acca739..01fe80dfa 100644 --- a/src/overlays/actors/ovl_En_Dnh/z_en_dnh.h +++ b/src/overlays/actors/ovl_En_Dnh/z_en_dnh.h @@ -7,7 +7,6 @@ struct EnDnh; typedef void (*EnDnhActionFunc)(struct EnDnh*, PlayState*); -typedef s32 (*MsgEventFunc)(Actor*, PlayState*); typedef struct EnDnh { /* 0x000 */ Actor actor; @@ -20,7 +19,7 @@ typedef struct EnDnh { /* 0x19A */ UNK_TYPE1 pad19A[0x2]; /* 0x19C */ s16 blinkTimer; /* 0x19E */ s16 eyeTexIndex; - /* 0x1A0 */ MsgEventFunc msgEventCallback; + /* 0x1A0 */ MsgEventCallback msgEventCallback; /* 0x1A4 */ Vec3s jointTable[KIOSK_KOUME_LIMB_MAX]; /* 0x1B0 */ Vec3s morphTable[KIOSK_KOUME_LIMB_MAX]; } EnDnh; // size = 0x1BC diff --git a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c index 1dd5dac34..5645b0b18 100644 --- a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c +++ b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c @@ -125,8 +125,22 @@ static AnimationInfoS sAnimationInfo[] = { { &gDekuPrincessGlareLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, }; -static s32 D_80B3DE58[] = { - 0x00172000, 0x0D040005, 0x0E09670C, 0x100E0968, 0x0C100E09, 0x6F0C0F09, 0x700C1000, +static MsgScript D_80B3DE58[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x17, 0x20, 0x0012 - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BRANCH_IF_HUMAN(0x000D - 0x0008), + /* 0x0008 0x03 */ MSCRIPT_BEGIN_TEXT(0x0967), + /* 0x000B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000C 0x01 */ MSCRIPT_DONE(), + + /* 0x000D 0x03 */ MSCRIPT_BEGIN_TEXT(0x0968), + /* 0x0010 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0011 0x01 */ MSCRIPT_DONE(), + + /* 0x0012 0x03 */ MSCRIPT_BEGIN_TEXT(0x096F), + /* 0x0015 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0016 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0970), + /* 0x0019 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001A 0x01 */ MSCRIPT_DONE(), }; s32 func_80B3CA20(EnDnp* this) { @@ -361,7 +375,7 @@ void func_80B3D338(EnDnp* this, PlayState* play) { } void func_80B3D3F8(EnDnp* this, PlayState* play) { - if (func_8010BF58(&this->actor, play, D_80B3DE58, NULL, &this->unk_328)) { + if (MsgEvent_RunScript(&this->actor, play, D_80B3DE58, NULL, &this->unk_328)) { SubS_UpdateFlags(&this->unk_322, 3, 7); this->unk_322 &= ~8; this->actionFunc = func_80B3D2D4; diff --git a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c index 667f1eafb..57efb89e8 100644 --- a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c +++ b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c @@ -20,9 +20,45 @@ void EnDnq_Draw(Actor* thisx, PlayState* play); void func_80A52FB8(EnDnq* this, PlayState* play); -static s32 D_80A53400[] = { - 0x00120100, 0x150E0899, 0x0C120F08, 0x9A0C0F08, 0x9B0C0F08, 0x9C0C1112, 0x01100E08, 0x980C1000, 0x00120200, - 0x0C0E089D, 0x0C0F089E, 0x0C111202, 0x100E089F, 0x0C100000, 0x0E08A10C, 0x0F08A20C, 0x10000000, +static MsgScript D_80A53400[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x12, 0x01, 0x001A - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x0899), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x000A 0x03 */ MSCRIPT_CONTINUE_TEXT(0x089A), + /* 0x000D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000E 0x03 */ MSCRIPT_CONTINUE_TEXT(0x089B), + /* 0x0011 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0012 0x03 */ MSCRIPT_CONTINUE_TEXT(0x089C), + /* 0x0015 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0016 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x12, 0x01), + /* 0x0019 0x01 */ MSCRIPT_DONE(), + + /* 0x001A 0x03 */ MSCRIPT_BEGIN_TEXT(0x0898), + /* 0x001D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001E 0x01 */ MSCRIPT_DONE(), +}; + +static MsgScript D_80A53420[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x12, 0x02, 0x0011 - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x089D), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x03 */ MSCRIPT_CONTINUE_TEXT(0x089E), + /* 0x000C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000D 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x12, 0x02), + /* 0x0010 0x01 */ MSCRIPT_DONE(), + + /* 0x0011 0x03 */ MSCRIPT_BEGIN_TEXT(0x089F), + /* 0x0014 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0015 0x01 */ MSCRIPT_DONE(), +}; + +static MsgScript D_80A53438[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x08A1), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x03 */ MSCRIPT_CONTINUE_TEXT(0x08A2), + /* 0x0007 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0008 0x01 */ MSCRIPT_DONE(), }; ActorInit En_Dnq_InitVars = { @@ -308,16 +344,16 @@ void func_80A52C6C(EnDnq* this, PlayState* play) { this->picto.actor.xzDistToPlayer = Math_Vec3f_DistXZ(&sp28, &sp1C); } -s32* func_80A52CF8(EnDnq* this, PlayState* play) { +MsgScript* func_80A52CF8(EnDnq* this, PlayState* play) { if (CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20)) { - return &D_80A53400[14]; + return D_80A53438; } if (this->unk_3A4 != 0) { - return &D_80A53400[8]; + return D_80A53420; } - return &D_80A53400[0]; + return D_80A53400; } s32 func_80A52D44(EnDnq* this, PlayState* play) { @@ -378,7 +414,7 @@ void func_80A52DC8(EnDnq* this, PlayState* play) { void func_80A52FB8(EnDnq* this, PlayState* play) { s16 sp2E = this->picto.actor.yawTowardsPlayer; - if (func_8010BF58(&this->picto.actor, play, this->unk_380, NULL, &this->unk_1E0)) { + if (MsgEvent_RunScript(&this->picto.actor, play, this->unk_380, NULL, &this->unk_1E0)) { SubS_UpdateFlags(&this->unk_37C, 3, 7); this->unk_386 = 0; this->actionFunc = func_80A52DC8; diff --git a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.h b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.h index 6ede37a55..1e5fe1a48 100644 --- a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.h +++ b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.h @@ -21,7 +21,7 @@ typedef struct EnDnq { /* 0x370 */ Vec3f unk_370; /* 0x37C */ u16 unk_37C; /* 0x37E */ s16 unk_37E; - /* 0x380 */ s32* unk_380; + /* 0x380 */ MsgScript* unk_380; /* 0x384 */ s16 unk_384; /* 0x386 */ s16 unk_386; /* 0x388 */ s16 unk_388; diff --git a/src/overlays/actors/ovl_En_Dns/z_en_dns.c b/src/overlays/actors/ovl_En_Dns/z_en_dns.c index a9552c73e..91af60574 100644 --- a/src/overlays/actors/ovl_En_Dns/z_en_dns.c +++ b/src/overlays/actors/ovl_En_Dns/z_en_dns.c @@ -33,10 +33,64 @@ typedef enum { /* 10 */ EN_DNS_ANIM_MAX } EnDnsAnimation; -static s32 D_8092DCB0[] = { - 0x00172000, 0x050E082F, 0x0C100E08, 0x200C1000, 0x00172000, 0x050E0830, 0x0C100E08, 0x210C1000, - 0x00172000, 0x050E0831, 0x0C100E08, 0x220C1000, 0x00172000, 0x050E0832, 0x0C100E08, 0x230C1000, - 0x0E08330C, 0x09000015, 0x1C014016, 0x10000000, 0x0E082E0C, 0x10000000, +static MsgScript D_8092DCB0[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x17, 0x20, 0x000A - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x082F), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x01 */ MSCRIPT_DONE(), + + /* 0x000A 0x03 */ MSCRIPT_BEGIN_TEXT(0x0820), + /* 0x000D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000E 0x01 */ MSCRIPT_DONE(), +}; + +static MsgScript D_8092DCC0[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x17, 0x20, 0x000A - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x0830), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x01 */ MSCRIPT_DONE(), + + /* 0x000A 0x03 */ MSCRIPT_BEGIN_TEXT(0x0821), + /* 0x000D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000E 0x01 */ MSCRIPT_DONE(), +}; + +static MsgScript D_8092DCD0[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x17, 0x20, 0x000A - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x0831), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x01 */ MSCRIPT_DONE(), + + /* 0x000A 0x03 */ MSCRIPT_BEGIN_TEXT(0x0822), + /* 0x000D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000E 0x01 */ MSCRIPT_DONE(), +}; + +static MsgScript D_8092DCE0[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x17, 0x20, 0x000A - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x0832), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x01 */ MSCRIPT_DONE(), + + /* 0x000A 0x03 */ MSCRIPT_BEGIN_TEXT(0x0823), + /* 0x000D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000E 0x01 */ MSCRIPT_DONE(), +}; + +static MsgScript D_8092DCF0[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x0833), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0007 0x01 */ MSCRIPT_PAUSE(), + /* 0x0008 0x03 */ MSCRIPT_SET_EVENT_INF(0x01, 0x40), + /* 0x000B 0x01 */ MSCRIPT_CMD22(), + /* 0x000C 0x01 */ MSCRIPT_DONE(), +}; + +static MsgScript D_8092DD00[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x082E), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_DONE(), }; ActorInit En_Dns_InitVars = { @@ -177,29 +231,29 @@ void func_8092C934(EnDns* this) { } } -s32* func_8092C9BC(EnDns* this, PlayState* play) { +MsgScript* func_8092C9BC(EnDns* this, PlayState* play) { Player* player = GET_PLAYER(play); if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20)) { if (player->transformation != PLAYER_FORM_DEKU) { - return &D_8092DCB0[16]; + return D_8092DCF0; } else if (this->unk_2FC != 0) { - return &D_8092DCB0[20]; + return D_8092DD00; } } switch (ENDNS_GET_7(&this->actor)) { case ENDNS_GET_7_0: - return &D_8092DCB0[0]; + return D_8092DCB0; case ENDNS_GET_7_1: - return &D_8092DCB0[4]; + return D_8092DCC0; case ENDNS_GET_7_2: - return &D_8092DCB0[8]; + return D_8092DCD0; case ENDNS_GET_7_3: - return &D_8092DCB0[12]; + return D_8092DCE0; } return 0; @@ -283,9 +337,9 @@ s32 func_8092CC68(PlayState* play) { return ret; } -s32 func_8092CCEC(EnDns* this, PlayState* play) { +s32 func_8092CCEC(Actor* thisx, PlayState* play) { Player* player = GET_PLAYER(play); - s32 pad; + EnDns* this = THIS; Vec3f sp3C = player->actor.world.pos; Vec3f sp30 = this->actor.world.pos; s16 sp2E; @@ -408,7 +462,7 @@ void func_8092D1B8(EnDns* this, PlayState* play) { func_8092C63C(this, EN_DNS_ANIM_WALK_1); this->actionFunc = EnDns_DoNothing; } else if (CHECK_EVENTINF(EVENTINF_16)) { - func_8092CCEC(this, play); + func_8092CCEC(&this->actor, play); func_8092C63C(this, EN_DNS_ANIM_WALK_1); this->actionFunc = func_8092D330; } @@ -453,7 +507,7 @@ void func_8092D4D8(EnDns* this, PlayState* play) { if (func_8092CE38(this)) { func_8092C63C(this, EN_DNS_ANIM_WALK_1); } - } else if (func_8010BF58(&this->actor, play, this->unk_1E0, this->unk_2F4, &this->unk_1DC)) { + } else if (MsgEvent_RunScript(&this->actor, play, this->unk_1E0, this->unk_2F4, &this->unk_1DC)) { SubS_UpdateFlags(&this->unk_2C6, 3, 7); this->unk_2F4 = NULL; if (ENDNS_GET_4000(&this->actor)) { diff --git a/src/overlays/actors/ovl_En_Dns/z_en_dns.h b/src/overlays/actors/ovl_En_Dns/z_en_dns.h index ade8b6174..9cd0a73a2 100644 --- a/src/overlays/actors/ovl_En_Dns/z_en_dns.h +++ b/src/overlays/actors/ovl_En_Dns/z_en_dns.h @@ -7,7 +7,6 @@ struct EnDns; typedef void (*EnDnsActionFunc)(struct EnDns*, PlayState*); -typedef s32 (*EnDnsFunc)(struct EnDns*, PlayState*); #define ENDNS_GET_7(thisx) ((thisx)->params & 7) #define ENDNS_GET_4000(thisx) ((thisx)->params & 0x4000) @@ -27,7 +26,7 @@ typedef struct EnDns { /* 0x18C */ ColliderCylinder collider; /* 0x1D8 */ u8 cueId; /* 0x1DC */ s32 unk_1DC; - /* 0x1E0 */ s32* unk_1E0; + /* 0x1E0 */ MsgScript* unk_1E0; /* 0x1E4 */ Gfx* unk_1E4[13]; /* 0x218 */ Vec3f unk_218; /* 0x224 */ Vec3s unk_224; @@ -51,7 +50,7 @@ typedef struct EnDns { /* 0x2E8 */ UNK_TYPE1 unk_2E8[0x4]; /* 0x2EC */ f32 unk_2EC; /* 0x2F0 */ f32 unk_2F0; - /* 0x2F4 */ EnDnsFunc unk_2F4; + /* 0x2F4 */ MsgEventCallback unk_2F4; /* 0x2F8 */ s32 animIndex; /* 0x2FC */ s32 unk_2FC; } EnDns; // size = 0x300 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 ab0afe844..1ad9c77bd 100644 --- a/src/overlays/actors/ovl_En_Gm/z_en_gm.c +++ b/src/overlays/actors/ovl_En_Gm/z_en_gm.c @@ -122,38 +122,234 @@ static s32 D_80951A0C[] = { -1, 1, 4, 1, -1, 1, -1, -1, -1, 0, 2, 3, 5, 6, 8, 1, 0, 8, 3, 6, 0, 1, 4, 7, 0, 1, 2, 4, 5, 7, 1, }; -static s32 D_80951A88[] = { 0x0E2AB92D, 0x000A0C10 }; - -static s32 D_80951A90[] = { 0x0E2ABA2D, 0x000A0C10 }; - -static s32 D_80951A98[] = { - 0x00564000, 0x1A090000, 0x0E2AA40C, 0x09000017, 0x0E2AA52D, 0x000A0C09, 0x00001211, 0x56401009, - 0x00000E2A, 0xEC0C0900, 0x00170E2A, 0xED0C0900, 0x00180E2A, 0xEE2D000A, 0x0C090000, 0x12100000, +static MsgScript D_80951A88[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB9), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_GORMAN), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_DONE(), }; -static s32 D_80951AD8[] = { - 0x00562000, 0xA1090000, 0x0E2AA60C, 0x09000017, 0x0E2AA70C, 0x09000018, 0x0E2AA80C, 0x09000017, - 0x0E2AA90C, 0x09000018, 0x0E2AAA0C, 0x09000017, 0x0E2AAB0C, 0x09000018, 0x0E2AAC0C, 0x09000017, - 0x0E2AAD0C, 0x0F2AAE0C, 0x09000017, 0x0E2AAF0C, 0x09000017, 0x0E2AB00C, 0x09000018, 0x0E2AB10C, - 0x09000017, 0x0E2AB20C, 0x09000017, 0x0E2AB30C, 0x09000017, 0x0E2AB40C, 0x09000018, 0x0E2AB50C, - 0x09000017, 0x0E2AB60C, 0x09000018, 0x0E2AB70C, 0x09000017, 0x0E2AB82D, 0x00082D00, 0x092D000A, - 0x0C115620, 0x12100900, 0x000E2AEA, 0x0C090000, 0x170E2AEB, 0x2D00082D, 0x000A0C09, 0x00001210, +static MsgScript D_80951A90[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2ABA), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_GORMAN), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_DONE(), }; -static s32 D_80951B98[] = { - 0x004B0100, 0x42090000, 0x0900000E, 0x2B010C09, 0x0000170E, 0x2B020C09, 0x0000180E, - 0x2B030C09, 0x0000170E, 0x2B040C0F, 0x2B050C09, 0x0000180E, 0x2B060C09, 0x0000170E, - 0x2B072D00, 0x0A0C114B, 0x01150900, 0x0012100E, 0x2B082D00, 0x0A0C1210, +static MsgScript D_80951A98[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x56, 0x40, 0x001F - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0008 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AA4), + /* 0x000B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000C 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x000F 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0010 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AA5), + /* 0x0013 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_GORMAN), + /* 0x0016 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0017 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x001A 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x001B 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x56, 0x40), + /* 0x001E 0x01 */ MSCRIPT_DONE(), + + /* 0x001F 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0022 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AEC), + /* 0x0025 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0026 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0029 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x002A 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AED), + /* 0x002D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002E 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0031 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0032 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AEE), + /* 0x0035 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_GORMAN), + /* 0x0038 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0039 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x003C 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x003D 0x01 */ MSCRIPT_DONE(), }; -static s32 D_80951BE8[] = { - 0x09000000, 0x32010031, 0x00338000, 0x2C004B02, 0x000D0E2B, 0x132D000A, 0x0C114B02, 0x1900150E, 0x2B140C0F, - 0x2B150C0F, 0x2B160C0F, 0x2B170C0F, 0x2B180C15, 0x09000012, 0x100E2B12, 0x2D000A0C, 0x10000000, +static MsgScript D_80951AD8[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x56, 0x20, 0x00A6 - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0008 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AA6), + /* 0x000B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000C 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x000F 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0010 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AA7), + /* 0x0013 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0014 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0017 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0018 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AA8), + /* 0x001B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001C 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x001F 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0020 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AA9), + /* 0x0023 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0024 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0027 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0028 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AAA), + /* 0x002B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002C 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x002F 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0030 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AAB), + /* 0x0033 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0034 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0037 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0038 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AAC), + /* 0x003B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003C 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x003F 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0040 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AAD), + /* 0x0043 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0044 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2AAE), + /* 0x0047 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0048 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x004B 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x004C 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AAF), + /* 0x004F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0050 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0053 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0054 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB0), + /* 0x0057 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0058 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x005B 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x005C 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB1), + /* 0x005F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0060 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0063 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0064 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB2), + /* 0x0067 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0068 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x006B 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x006C 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB3), + /* 0x006F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0070 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0073 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0074 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB4), + /* 0x0077 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0078 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x007B 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x007C 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB5), + /* 0x007F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0080 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0083 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0084 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB6), + /* 0x0087 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0088 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x008B 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x008C 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB7), + /* 0x008F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0090 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0093 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0094 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AB8), + /* 0x0097 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x009A 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_TOTO), + /* 0x009D 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_GORMAN), + /* 0x00A0 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00A1 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x56, 0x20), + /* 0x00A4 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00A5 0x01 */ MSCRIPT_DONE(), + + /* 0x00A6 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x00A9 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AEA), + /* 0x00AC 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00AD 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x00B0 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x00B1 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AEB), + /* 0x00B4 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x00B7 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_GORMAN), + /* 0x00BA 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00BB 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x00BE 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00BF 0x01 */ MSCRIPT_DONE(), }; -static s32 D_80951C2C[] = { 0x0E295A2D, 0x000A0C10 }; +static MsgScript D_80951B98[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x4B, 0x01, 0x0047 - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0008 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x000B 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B01), + /* 0x000E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000F 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0012 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0013 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B02), + /* 0x0016 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0017 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x001A 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x001B 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B03), + /* 0x001E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001F 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0022 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0023 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B04), + /* 0x0026 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0027 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2B05), + /* 0x002A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002B 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x002E 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x002F 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B06), + /* 0x0032 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0033 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0036 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0037 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B07), + /* 0x003A 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_GORMAN), + /* 0x003D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003E 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x4B, 0x01), + /* 0x0041 0x01 */ MSCRIPT_PAUSE(), + /* 0x0042 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0045 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0046 0x01 */ MSCRIPT_DONE(), -static s32 D_80951C34[] = { 0x0E29622D, 0x000A0C10 }; + /* 0x0047 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B08), + /* 0x004A 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_GORMAN), + /* 0x004D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004E 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x004F 0x01 */ MSCRIPT_DONE(), +}; + +static MsgScript D_80951BE8[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0003 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x32, 0x01, 0x0039 - 0x0008), + /* 0x0008 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x33, 0x80, 0x0039 - 0x000D), + /* 0x000D 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x4B, 0x02, 0x001F - 0x0012), + /* 0x0012 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B13), + /* 0x0015 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_GORMAN), + /* 0x0018 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0019 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x4B, 0x02), + /* 0x001C 0x03 */ MSCRIPT_JUMP(0x0034 - 0x001F), + /* 0x001F 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B14), + /* 0x0022 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0023 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2B15), + /* 0x0026 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0027 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2B16), + /* 0x002A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002B 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2B17), + /* 0x002E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002F 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2B18), + /* 0x0032 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0033 0x01 */ MSCRIPT_PAUSE(), + /* 0x0034 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0037 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0038 0x01 */ MSCRIPT_DONE(), + + /* 0x0039 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B12), + /* 0x003C 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_GORMAN), + /* 0x003F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0040 0x01 */ MSCRIPT_DONE(), +}; + +static MsgScript D_80951C2C[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x295A), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_GORMAN), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_DONE(), +}; + +static MsgScript D_80951C34[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2962), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_GORMAN), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_DONE(), +}; ActorInit En_Gm_InitVars = { ACTOR_EN_GM, @@ -451,8 +647,8 @@ s16 func_8094E4D0(EnGm* this, s32 numCutscenes) { return csId; } -s32 func_8094E52C(EnGm* this, PlayState* play) { - s32 pad; +s32 func_8094E52C(Actor* thisx, PlayState* play) { + EnGm* this = THIS; s16 csId = func_8094E4D0(this, 0); s32 ret = false; @@ -576,8 +772,9 @@ s32 func_8094E69C(EnGm* this, PlayState* play) { return ret; } -s32 func_8094EA34(EnGm* this, PlayState* play) { - s32 pad[2]; +s32 func_8094EA34(Actor* thisx, PlayState* play) { + EnGm* this = THIS; + s32 pad; Actor* al; Actor* toto; @@ -626,8 +823,9 @@ s32 func_8094EA34(EnGm* this, PlayState* play) { return true; } -s32 func_8094EB1C(EnGm* this, PlayState* play) { - s32 pad[2]; +s32 func_8094EB1C(Actor* thisx, PlayState* play) { + EnGm* this = THIS; + s32 pad; s32 ret = false; s16 oldYaw; @@ -680,7 +878,7 @@ s32 func_8094EB1C(EnGm* this, PlayState* play) { return ret; } -s32* func_8094EDBC(EnGm* this, PlayState* play) { +MsgScript* func_8094EDBC(EnGm* this, PlayState* play) { switch (this->unk_258) { case 1: this->unk_3E4 = func_8094E52C; @@ -691,7 +889,8 @@ s32* func_8094EDBC(EnGm* this, PlayState* play) { return D_80951AD8; case 3: - this->unk_3E4 = func_8094E69C; + // TODO ideally func_8094E69C should take Actor* and cast to EnGm* rather than cast here + this->unk_3E4 = (MsgEventCallback)func_8094E69C; return D_80951B98; case 5: @@ -1605,7 +1804,7 @@ void func_80950DB8(EnGm* this, PlayState* play) { Vec3f sp34; Actor* al; - if (func_8010BF58(&this->actor, play, this->unk_264, this->unk_3E4, &this->unk_25C)) { + if (MsgEvent_RunScript(&this->actor, play, this->unk_264, this->unk_3E4, &this->unk_25C)) { SubS_UpdateFlags(&this->unk_3A4, 3, 7); al = func_8094DEE0(this, play, ACTORCAT_NPC, ACTOR_EN_AL); if ((this->unk_258 == 2) && (al != NULL) && (al->update != NULL)) { diff --git a/src/overlays/actors/ovl_En_Gm/z_en_gm.h b/src/overlays/actors/ovl_En_Gm/z_en_gm.h index 572fa322f..3ac1f5938 100644 --- a/src/overlays/actors/ovl_En_Gm/z_en_gm.h +++ b/src/overlays/actors/ovl_En_Gm/z_en_gm.h @@ -6,7 +6,6 @@ struct EnGm; typedef void (*EnGmActionFunc)(struct EnGm*, PlayState*); -typedef s32 (*EnGmUnkFunc)(struct EnGm*, PlayState*); typedef void (*EnGmUnkFunc2)(struct EnGm*, PlayState*); #define ENGM_GET_PATH_INDEX(thisx) ((thisx)->params & 0xFF) @@ -33,7 +32,7 @@ typedef struct EnGm { /* 0x260 */ s8 unk_260; /* 0x261 */ s8 unk_261; /* 0x262 */ s8 unk_262; - /* 0x264 */ s32* unk_264; + /* 0x264 */ MsgScript* unk_264; /* 0x268 */ Actor* unk_268; /* 0x26C */ UNK_TYPE1 unk_26C[0xC]; /* 0x278 */ Vec3f unk_278; @@ -68,7 +67,7 @@ typedef struct EnGm { /* 0x3DE */ s16 unk_3DE; /* 0x3E0 */ s16 unk_3E0; /* 0x3E2 */ s16 unk_3E2; - /* 0x3E4 */ EnGmUnkFunc unk_3E4; + /* 0x3E4 */ MsgEventCallback unk_3E4; /* 0x3E8 */ s32 unk_3E8; /* 0x3EC */ UNK_TYPE1 unk3EC[0x4]; /* 0x3F0 */ s32 prevTalkState; diff --git a/src/overlays/actors/ovl_En_Go/z_en_go.c b/src/overlays/actors/ovl_En_Go/z_en_go.c index 346753059..ddf07edbf 100644 --- a/src/overlays/actors/ovl_En_Go/z_en_go.c +++ b/src/overlays/actors/ovl_En_Go/z_en_go.c @@ -123,70 +123,451 @@ void EnGo_Snowball(EnGo* this, PlayState* play); void EnGo_Talk(EnGo* this, PlayState* play); // MsgEvent script for the Goron who made Darmani's grave in the mountain village. -static s32 sMsgScriptGoronGravemaker[] = { - 0x00150800, 0x40010022, 0x00150200, 0x180E0E10, 0x0C0F0E11, 0x0C0F0E12, 0x0C0F0E13, 0x0C0F0E14, 0x0C111502, - 0x100E0E15, 0x0C100015, 0x0400110E, 0x0E160C0F, 0x0E170C0F, 0x0E180C11, 0x15041610, 0x0E0E190C, 0x10001504, - 0x000D0100, 0x050E0E31, 0x0C100E0E, 0x2F0C1001, 0x00050E0E, 0x2D0C100E, 0x0E2B0C10, +static MsgScript sMsgScriptGoronGravemaker[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x15, 0x08, 0x0045 - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BRANCH_IF_GORON(0x002A - 0x0008), + /* 0x0008 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x15, 0x02, 0x0025 - 0x000D), + /* 0x000D 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E10), + /* 0x0010 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0011 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E11), + /* 0x0014 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0015 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E12), + /* 0x0018 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0019 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E13), + /* 0x001C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001D 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E14), + /* 0x0020 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0021 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x15, 0x02), + /* 0x0024 0x01 */ MSCRIPT_DONE(), + + /* 0x0025 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E15), + /* 0x0028 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0029 0x01 */ MSCRIPT_DONE(), + + /* 0x002A 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x15, 0x04, 0x0040 - 0x002F), + /* 0x002F 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E16), + /* 0x0032 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0033 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E17), + /* 0x0036 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0037 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E18), + /* 0x003A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003B 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x15, 0x04), + /* 0x003E 0x01 */ MSCRIPT_CMD22(), + /* 0x003F 0x01 */ MSCRIPT_DONE(), + + /* 0x0040 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E19), + /* 0x0043 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0044 0x01 */ MSCRIPT_DONE(), + + /* 0x0045 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x15, 0x04, 0x0057 - 0x004A), + /* 0x004A 0x03 */ MSCRIPT_BRANCH_IF_GORON(0x0052 - 0x004D), + /* 0x004D 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E31), + /* 0x0050 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0051 0x01 */ MSCRIPT_DONE(), + + /* 0x0052 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E2F), + /* 0x0055 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0056 0x01 */ MSCRIPT_DONE(), + + /* 0x0057 0x03 */ MSCRIPT_BRANCH_IF_GORON(0x005F - 0x005A), + /* 0x005A 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E2D), + /* 0x005D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x005E 0x01 */ MSCRIPT_DONE(), + + /* 0x005F 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E2B), + /* 0x0062 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0063 0x01 */ MSCRIPT_DONE(), }; // MsgEvent script for the frozen Goron aside the gravemaker in the mountain village. -static s32 sMsgScriptGoronFrozen[] = { - 0x00150800, 0x7E01004D, 0x00150400, 0x180E0E1A, 0x0C170F0E, 0x230C180F, 0x0E240C0F, 0x0E250C12, 0x16111508, - 0x100E0E1A, 0x0C170F0E, 0x230C180F, 0x0E240C0F, 0x0E250C17, 0x0F0E260C, 0x180F0E27, 0x0C170F0E, 0x280C180F, - 0x0E290C17, 0x0F0E2A0C, 0x16111508, 0x100E0E1A, 0x0C170F0E, 0x1B0C180F, 0x0E1C0C0F, 0x0E1D0C0F, 0x0E1E0C17, - 0x0F0E1F0C, 0x180F0E20, 0x0C170F0E, 0x210C0F0E, 0x220C1611, 0x15081000, 0x1504000D, 0x0100050E, 0x0E320C10, - 0x0E0E300C, 0x10010005, 0x0E0E2E0C, 0x100E0E2C, 0x0C100000, +static MsgScript sMsgScriptGoronFrozen[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x15, 0x08, 0x0083 - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BRANCH_IF_GORON(0x0055 - 0x0008), + /* 0x0008 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x15, 0x04, 0x0025 - 0x000D), + /* 0x000D 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E1A), + /* 0x0010 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0011 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0012 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E23), + /* 0x0015 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0016 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0017 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E24), + /* 0x001A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001B 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E25), + /* 0x001E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001F 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0020 0x01 */ MSCRIPT_CMD22(), + /* 0x0021 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x15, 0x08), + /* 0x0024 0x01 */ MSCRIPT_DONE(), + + /* 0x0025 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E1A), + /* 0x0028 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0029 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x002A 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E23), + /* 0x002D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002E 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x002F 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E24), + /* 0x0032 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0033 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E25), + /* 0x0036 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0037 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0038 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E26), + /* 0x003B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003C 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x003D 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E27), + /* 0x0040 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0041 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0042 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E28), + /* 0x0045 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0046 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0047 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E29), + /* 0x004A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004B 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x004C 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E2A), + /* 0x004F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0050 0x01 */ MSCRIPT_CMD22(), + /* 0x0051 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x15, 0x08), + /* 0x0054 0x01 */ MSCRIPT_DONE(), + + /* 0x0055 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E1A), + /* 0x0058 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0059 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x005A 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E1B), + /* 0x005D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x005E 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x005F 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E1C), + /* 0x0062 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0063 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E1D), + /* 0x0066 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0067 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E1E), + /* 0x006A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x006B 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x006C 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E1F), + /* 0x006F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0070 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0071 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E20), + /* 0x0074 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0075 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0076 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E21), + /* 0x0079 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x007A 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E22), + /* 0x007D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x007E 0x01 */ MSCRIPT_CMD22(), + /* 0x007F 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x15, 0x08), + /* 0x0082 0x01 */ MSCRIPT_DONE(), + + /* 0x0083 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x15, 0x04, 0x0095 - 0x0088), + /* 0x0088 0x03 */ MSCRIPT_BRANCH_IF_GORON(0x0090 - 0x008B), + /* 0x008B 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E32), + /* 0x008E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x008F 0x01 */ MSCRIPT_DONE(), + + /* 0x0090 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E30), + /* 0x0093 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0094 0x01 */ MSCRIPT_DONE(), + + /* 0x0095 0x03 */ MSCRIPT_BRANCH_IF_GORON(0x009D - 0x0098), + /* 0x0098 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E2E), + /* 0x009B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x009C 0x01 */ MSCRIPT_DONE(), + + /* 0x009D 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E2C), + /* 0x00A0 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00A1 0x01 */ MSCRIPT_DONE(), }; // MsgEvent script for the shrine Goron standing aside the store. -static s32 sMsgScriptGoronAsideStore[] = { 0xE0E520C, 0x10000000 }; +static MsgScript sMsgScriptGoronAsideStore[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E52), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_DONE(), +}; // MsgEvent script for the shrine Goron standing aside the Elder's son. -static s32 sMsgScriptGoronAsideEldersSon[] = { - 0x160400, 0x38010010, 0xE0E430C, 0xF0E440C, 0xF0E450C, 0x11188010, 0x160800, 0x1B0E0E46, 0xC0F0E47, - 0xC0F0E48, 0xC0F0E49, 0xC0F0E4A, 0xC111608, 0x11188010, 0xE0E4B0C, 0x100E0E42, 0xC100000, +static MsgScript sMsgScriptGoronAsideEldersSon[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x16, 0x04, 0x003D - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BRANCH_IF_GORON(0x0018 - 0x0008), + /* 0x0008 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E43), + /* 0x000B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000C 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E44), + /* 0x000F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0010 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E45), + /* 0x0013 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0014 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x18, 0x80), + /* 0x0017 0x01 */ MSCRIPT_DONE(), + + /* 0x0018 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x16, 0x08, 0x0038 - 0x001D), + /* 0x001D 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E46), + /* 0x0020 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0021 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E47), + /* 0x0024 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0025 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E48), + /* 0x0028 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0029 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E49), + /* 0x002C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002D 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E4A), + /* 0x0030 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0031 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x16, 0x08), + /* 0x0034 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x18, 0x80), + /* 0x0037 0x01 */ MSCRIPT_DONE(), + + /* 0x0038 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E4B), + /* 0x003B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003C 0x01 */ MSCRIPT_DONE(), + + /* 0x003D 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E42), + /* 0x0040 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0041 0x01 */ MSCRIPT_DONE(), }; // MsgEvent script for the shrine Goron standing aside the Elder's room. -static s32 sMsgScriptGoronAsideEldersRoom[] = { - 0x160400, 0x22010009, 0xE0E4D0C, 0xF0E4E0C, 0x10001701, 0xC0E0E, - 0x4F0C0F0E, 0x500C1117, 0x1100E0E, 0x510C100E, 0xE4C0C10, +static MsgScript sMsgScriptGoronAsideEldersRoom[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x16, 0x04, 0x0027 - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BRANCH_IF_GORON(0x0011 - 0x0008), + /* 0x0008 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E4D), + /* 0x000B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000C 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E4E), + /* 0x000F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0010 0x01 */ MSCRIPT_DONE(), + + /* 0x0011 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x17, 0x01, 0x0022 - 0x0016), + /* 0x0016 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E4F), + /* 0x0019 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001A 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0E50), + /* 0x001D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001E 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x17, 0x01), + /* 0x0021 0x01 */ MSCRIPT_DONE(), + + /* 0x0022 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E51), + /* 0x0025 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0026 0x01 */ MSCRIPT_DONE(), + + /* 0x0027 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E4C), + /* 0x002A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002B 0x01 */ MSCRIPT_DONE(), }; // MsgEvent script for the Goron in Goron Village who sells Powder Kegs. -static s32 sMsgScriptGoronMedigoron[] = { - 0x1001200, 0x12200008, 0xE0C8E0C, 0x11122010, 0xE0C8F0C, 0x10001240, 0x1D0E0C, 0x800C1112, 0x40001280, - 0x742500, 0xC006F00, 0x13010045, 0xF0C810C, 0x19001300, 0x1280005E, 0x25000C00, 0x59001301, 0x2F0E0C, - 0x810C0F0C, 0x820C0500, 0x1A00, 0x1A300E0C, 0x830C1209, 0x700, 0xE0C84, 0x160C1113, 0x1100E0C, - 0x840C1031, 0xE0C850C, 0x1029FFF2, 0x130200, 0xF0E0C88, 0xC0F0C89, 0xC05000A, 0xFFE3FFE3, 0xE0C860C, - 0x11128019, 0x213019, 0xFFC02900, 0x2C0E0C8C, 0xC050000, 0x50000, 0x8006400, 0x6320E0C, 0x8D0C1030, - 0x14FF9C12, 0x6003400, 0x130034, 0x700000E, 0xC870C16, 0x100E0C8B, 0xC100000, +static MsgScript sMsgScriptGoronMedigoron[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_IF_GORON(0x0015 - 0x0003), + /* 0x0003 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x12, 0x20, 0x0010 - 0x0008), + /* 0x0008 0x03 */ MSCRIPT_BEGIN_TEXT(0x0C8E), + /* 0x000B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000C 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x12, 0x20), + /* 0x000F 0x01 */ MSCRIPT_DONE(), + + /* 0x0010 0x03 */ MSCRIPT_BEGIN_TEXT(0x0C8F), + /* 0x0013 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0014 0x01 */ MSCRIPT_DONE(), + + /* 0x0015 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x12, 0x40, 0x0037 - 0x001A), + /* 0x001A 0x03 */ MSCRIPT_BEGIN_TEXT(0x0C80), + /* 0x001D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001E 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x12, 0x40), + /* 0x0021 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x12, 0x80, 0x009A - 0x0026), + /* 0x0026 0x05 */ MSCRIPT_BRANCH_ON_ITEM(ITEM_POWDER_KEG, 0x009A - 0x002B), + /* 0x002B 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x13, 0x01, 0x0075 - 0x0030), + /* 0x0030 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0C81), + /* 0x0033 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0034 0x03 */ MSCRIPT_JUMP(0x004A - 0x0037), + /* 0x0037 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x12, 0x80, 0x009A - 0x003C), + /* 0x003C 0x05 */ MSCRIPT_BRANCH_ON_ITEM(ITEM_POWDER_KEG, 0x009A - 0x0041), + /* 0x0041 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x13, 0x01, 0x0075 - 0x0046), + /* 0x0046 0x03 */ MSCRIPT_BEGIN_TEXT(0x0C81), + /* 0x0049 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004A 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0C82), + /* 0x004D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004E 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x0, 0x006F - 0x0055, 0x006F - 0x0055), + /* 0x0055 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x0056 0x03 */ MSCRIPT_BEGIN_TEXT(0x0C83), + /* 0x0059 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x005A 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x005B 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x005E 0x03 */ MSCRIPT_CMD07(0x0), + /* 0x0061 0x03 */ MSCRIPT_BEGIN_TEXT(0x0C84), + /* 0x0064 0x01 */ MSCRIPT_CMD22(), + /* 0x0065 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0066 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x13, 0x01), + /* 0x0069 0x01 */ MSCRIPT_DONE(), + + /* 0x006A 0x03 */ MSCRIPT_BEGIN_TEXT(0x0C84), + /* 0x006D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x006E 0x01 */ MSCRIPT_DONE(), + + /* 0x006F 0x01 */ MSCRIPT_PLAY_CANCEL(), + /* 0x0070 0x03 */ MSCRIPT_BEGIN_TEXT(0x0C85), + /* 0x0073 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0074 0x01 */ MSCRIPT_DONE(), + + /* 0x0075 0x03 */ MSCRIPT_HAS_POWDER_KEG(0x006A - 0x0078), + + /* 0x0078 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x13, 0x02, 0x008C - 0x007D), + /* 0x007D 0x03 */ MSCRIPT_BEGIN_TEXT(0x0C88), + /* 0x0080 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0081 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0C89), + /* 0x0084 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0085 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x0096 - 0x008C, 0x006F - 0x008C, 0x006F - 0x008C), + + /* 0x008C 0x03 */ MSCRIPT_BEGIN_TEXT(0x0C86), + /* 0x008F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0090 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x12, 0x80), + /* 0x0093 0x03 */ MSCRIPT_JUMP(0x00B7 - 0x0096), + /* 0x0096 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x0097 0x03 */ MSCRIPT_JUMP(0x005A - 0x009A), + + /* 0x009A 0x03 */ MSCRIPT_HAS_POWDER_KEG(0x00C9 - 0x009D), + /* 0x009D 0x03 */ MSCRIPT_BEGIN_TEXT(0x0C8C), + /* 0x00A0 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00A1 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x0, 0x00AD - 0x00A8, 0x0), + /* 0x00A8 0x05 */ MSCRIPT_BRANCH_ON_RUPEES(0x0064, 0x00B3 - 0x00AD), + /* 0x00AD 0x01 */ MSCRIPT_PLAY_ERROR(), + /* 0x00AE 0x03 */ MSCRIPT_BEGIN_TEXT(0x0C8D), + /* 0x00B1 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00B2 0x01 */ MSCRIPT_DONE(), + + /* 0x00B3 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x00B4 0x03 */ MSCRIPT_CHANGE_RUPEES(0xFF9C), + /* 0x00B7 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00B8 0x05 */ MSCRIPT_OFFER_ITEM(GI_POWDER_KEG, 0x0), + /* 0x00BD 0x03 */ MSCRIPT_COLLECT_SET(0x0034), + /* 0x00C0 0x03 */ MSCRIPT_CMD07(0x0), + /* 0x00C3 0x03 */ MSCRIPT_BEGIN_TEXT(0x0C87), + /* 0x00C6 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00C7 0x01 */ MSCRIPT_CMD22(), + /* 0x00C8 0x01 */ MSCRIPT_DONE(), + + /* 0x00C9 0x03 */ MSCRIPT_BEGIN_TEXT(0x0C8B), + /* 0x00CC 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00CD 0x01 */ MSCRIPT_DONE(), }; // MsgEvent script for the gatekeeper Goron in Goron Village who opens the shrine gate. -static s32 sMsgScriptGoronGatekeeper[] = { - 0x584000, 0x2903000E, 0x2001301, 0x180058, 0x80005119, 0x1E0059, 0x1004919, 0x160059, 0x2004119, - 0xE0059, 0x4003919, 0x2F0E0D, 0x4D0C1210, 0xE0D480C, 0xF0D490C, 0xF0D4A0C, 0x5000000, 0xF000F30, - 0xE0D4B0C, 0x15090000, 0xE0D4D0C, 0x1210310E, 0xD4C0C12, 0x100E0D4E, 0xC19FFD8, 0xE0D4F0C, 0x19FFD500, +static MsgScript sMsgScriptGoronGatekeeper[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x58, 0x40, 0x002E - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BRANCH_IF_DEKU(0x0016 - 0x0008), + /* 0x0008 0x03 */ MSCRIPT_BRANCH_IF_ZORA(0x001E - 0x000B), + /* 0x000B 0x03 */ MSCRIPT_BRANCH_IF_GORON(0x0026 - 0x000E), + /* 0x000E 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x58, 0x80, 0x0064 - 0x0013), + /* 0x0013 0x03 */ MSCRIPT_JUMP(0x0034 - 0x0016), + /* 0x0016 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x59, 0x01, 0x0064 - 0x001B), + /* 0x001B 0x03 */ MSCRIPT_JUMP(0x0034 - 0x001E), + /* 0x001E 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x59, 0x02, 0x0064 - 0x0023), + /* 0x0023 0x03 */ MSCRIPT_JUMP(0x0034 - 0x0026), + /* 0x0026 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x59, 0x04, 0x0064 - 0x002B), + /* 0x002B 0x03 */ MSCRIPT_JUMP(0x005D - 0x002E), + /* 0x002E 0x03 */ MSCRIPT_BEGIN_TEXT(0x0D4D), + /* 0x0031 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0032 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0033 0x01 */ MSCRIPT_DONE(), + + /* 0x0034 0x03 */ MSCRIPT_BEGIN_TEXT(0x0D48), + /* 0x0037 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0038 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0D49), + /* 0x003B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003C 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0D4A), + /* 0x003F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0040 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x0, 0x0056 - 0x0047, 0x0056 - 0x0047), + /* 0x0047 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x0048 0x03 */ MSCRIPT_BEGIN_TEXT(0x0D4B), + /* 0x004B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004C 0x01 */ MSCRIPT_PAUSE(), + /* 0x004D 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0050 0x03 */ MSCRIPT_BEGIN_TEXT(0x0D4D), + /* 0x0053 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0054 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0055 0x01 */ MSCRIPT_DONE(), + + /* 0x0056 0x01 */ MSCRIPT_PLAY_CANCEL(), + /* 0x0057 0x03 */ MSCRIPT_BEGIN_TEXT(0x0D4C), + /* 0x005A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x005B 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x005C 0x01 */ MSCRIPT_DONE(), + + /* 0x005D 0x03 */ MSCRIPT_BEGIN_TEXT(0x0D4E), + /* 0x0060 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0061 0x03 */ MSCRIPT_JUMP(0x003C - 0x0064), + + /* 0x0064 0x03 */ MSCRIPT_BEGIN_TEXT(0x0D4F), + /* 0x0067 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0068 0x03 */ MSCRIPT_JUMP(0x0040 - 0x006B), }; // MsgEvent script for one of the Goron stretchers at the racetrack (Initially stretching side to side while squatting). -static s32 sMsgScriptGoronAthleticA[] = { 0x100060E, 0xDFE0C12, 0x100E0DFF, 0xC121000 }; +static MsgScript sMsgScriptGoronAthleticA[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_IF_GORON(0x0009 - 0x0003), + /* 0x0003 0x03 */ MSCRIPT_BEGIN_TEXT(0x0DFE), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0008 0x01 */ MSCRIPT_DONE(), + + /* 0x0009 0x03 */ MSCRIPT_BEGIN_TEXT(0x0DFF), + /* 0x000C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000D 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x000E 0x01 */ MSCRIPT_DONE(), +}; // MsgEvent script for one of the Goron stretchers at the racetrack (Initially doing sidebend stretches with one arm). -static s32 sMsgScriptGoronAthleticB[] = { 0x100060E, 0xE000C12, 0x100E0E01, 0xC121000 }; +static MsgScript sMsgScriptGoronAthleticB[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_IF_GORON(0x0009 - 0x0003), + /* 0x0003 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E00), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0008 0x01 */ MSCRIPT_DONE(), + + /* 0x0009 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E01), + /* 0x000C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000D 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x000E 0x01 */ MSCRIPT_DONE(), +}; // MsgEvent script for one of the Goron stretchers at the racetrack (Initially shaking out their limbs). -static s32 sMsgScriptGoronAthleticC[] = { 0x100060E, 0xE020C12, 0x100E0E03, 0xC121000 }; +static MsgScript sMsgScriptGoronAthleticC[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_IF_GORON(0x0009 - 0x0003), + /* 0x0003 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E02), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0008 0x01 */ MSCRIPT_DONE(), + + /* 0x0009 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E03), + /* 0x000C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000D 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x000E 0x01 */ MSCRIPT_DONE(), +}; // MsgEvent script for one of the Goron stretchers (Initially doing sidebend stretches with both arms). -static s32 sMsgScriptGoronAthleticD[] = { 0x100060E, 0xE040C12, 0x100E0E05, 0xC121000 }; +static MsgScript sMsgScriptGoronAthleticD[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_IF_GORON(0x0009 - 0x0003), + /* 0x0003 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E04), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0008 0x01 */ MSCRIPT_DONE(), + + /* 0x0009 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E05), + /* 0x000C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000D 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x000E 0x01 */ MSCRIPT_DONE(), +}; // MsgEvent script for the pair of Gorons stretching one Goron's hamstrings. -static s32 sMsgScriptGoronAthleticHamstring[] = { 0x100060E, 0xE060C12, 0x100E0E07, 0xC121000 }; +static MsgScript sMsgScriptGoronAthleticHamstring[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_IF_GORON(0x0009 - 0x0003), + /* 0x0003 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E06), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0008 0x01 */ MSCRIPT_DONE(), + + /* 0x0009 0x03 */ MSCRIPT_BEGIN_TEXT(0x0E07), + /* 0x000C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000D 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x000E 0x01 */ MSCRIPT_DONE(), +}; // MsgEvent script for any sleeping Goron. -static s32 sMsgScriptGoronSleeping[] = { 0xE023A0C, 0x12100000 }; +static MsgScript sMsgScriptGoronSleeping[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x023A), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0005 0x01 */ MSCRIPT_DONE(), +}; ActorInit En_Go_InitVars = { ACTOR_EN_GO, @@ -1820,11 +2201,11 @@ void EnGo_SetupGatekeeper(EnGo* this, PlayState* play) { } EnGo_ChangeToSnowballAnimation(this, play); this->actionFunc = EnGo_Snowball; - this->msgEventFunc = EnGo_HandleOpenShrineCutscene; + this->msgEventCallback = EnGo_HandleOpenShrineCutscene; } else { EnGo_ChangeToShiveringAnimation(this, play); this->actionFunc = EnGo_Idle; - this->msgEventFunc = EnGo_HandleOpenShrineCutscene; + this->msgEventCallback = EnGo_HandleOpenShrineCutscene; } } @@ -1881,7 +2262,7 @@ void EnGo_SetupMedigoron(EnGo* this, PlayState* play) { SubS_UpdateFlags(&this->actionFlags, 3, 7); this->actionFlags |= ENGO_FLAG_LOST_ATTENTION; this->actionFlags |= ENGO_FLAG_EYES_OPEN; - this->msgEventFunc = EnGo_HandleGivePowderKegCutscene; + this->msgEventCallback = EnGo_HandleGivePowderKegCutscene; this->actionFunc = EnGo_Idle; } @@ -1908,7 +2289,7 @@ void EnGo_SetupInitialAction(EnGo* this, PlayState* play) { this->actor.targetMode = 1; this->scaleFactor = ENGO_NORMAL_SCALE; - this->msgEventFunc = NULL; + this->msgEventCallback = NULL; switch (ENGO_GET_TYPE(&this->actor)) { case ENGO_ATHLETIC: @@ -2314,8 +2695,8 @@ void EnGo_Snowball(EnGo* this, PlayState* play) { /** * Return the MsgEvent script appropriate for the actor. */ -s32* EnGo_GetMsgEventScript(EnGo* this, PlayState* play) { - static s32 sMsgScriptGraveyard[] = { +MsgScript* EnGo_GetMsgEventScript(EnGo* this, PlayState* play) { + static MsgScript* sMsgScriptGraveyard[] = { sMsgScriptGoronGravemaker, sMsgScriptGoronFrozen, }; @@ -2381,8 +2762,8 @@ void EnGo_Talk(EnGo* this, PlayState* play) { Vec3f targetPos; Vec3f thisPos; - if (!func_8010BF58(&this->actor, play, EnGo_GetMsgEventScript(this, play), this->msgEventFunc, - &this->msgScriptResumePos)) { + if (!MsgEvent_RunScript(&this->actor, play, EnGo_GetMsgEventScript(this, play), this->msgEventCallback, + &this->msgScriptResumePos)) { if ((ENGO_GET_TYPE(&this->actor) != ENGO_ATHLETIC) && !(this->actionFlags & ENGO_FLAG_ROLLED_UP)) { Math_Vec3f_Copy(&targetPos, &this->attentionTarget->world.pos); Math_Vec3f_Copy(&thisPos, &this->actor.world.pos); diff --git a/src/overlays/actors/ovl_En_Go/z_en_go.h b/src/overlays/actors/ovl_En_Go/z_en_go.h index 0ada7fe1e..96550ed44 100644 --- a/src/overlays/actors/ovl_En_Go/z_en_go.h +++ b/src/overlays/actors/ovl_En_Go/z_en_go.h @@ -7,7 +7,6 @@ struct EnGo; typedef void (*EnGoActionFunc)(struct EnGo*, PlayState*); -typedef s32 (*MsgEventFunc)(Actor*, PlayState*); #define ENGO_GET_TYPE(thisx) (((thisx)->params & 0xF) & 0xFF) #define ENGO_GET_SUBTYPE(thisx) ((((thisx)->params & 0x70) >> 4) & 0xFF) @@ -131,7 +130,7 @@ typedef struct EnGo { /* 0x3C8 */ s16 fidgetTableZ[ENGO_FIDGET_TABLE_LEN]; /* 0x3CE */ s16 fidgetTableY[ENGO_FIDGET_TABLE_LEN]; /* 0x3D4 */ s16 surprisePhase; - /* 0x3D8 */ MsgEventFunc msgEventFunc; + /* 0x3D8 */ MsgEventCallback msgEventCallback; /* 0x3DC */ s32 curAnimIndex; /* 0x3E0 */ UNK_TYPE1 unk3E0[0x4]; /* 0x3E4 */ s32 indexPathPoint; 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 abdf870b9..6dfeca540 100644 --- a/src/overlays/actors/ovl_En_Ig/z_en_ig.c +++ b/src/overlays/actors/ovl_En_Ig/z_en_ig.c @@ -62,31 +62,94 @@ static u8 D_80BF3260[] = { static s32 D_80BF3318[] = { -1, -1, 3, 1, 3, 1, 2, 0, 3, 5, 0, 3, 1, 2, 4 }; -static s32 D_80BF3354[] = { - 0x0E28B00C, - 0x10000000, +static MsgScript D_80BF3354[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x28B0), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_DONE(), }; -static s32 D_80BF335C[] = { - 0x09000000, 0x4B10001F, 0x170E28B1, 0x0C090000, 0x180E28B2, 0x0C090000, 0x170E28B3, 0x2D000111, 0x37020C09, - 0x00001000, 0x5610002F, 0x170E28B1, 0x0C090000, 0x180E28B5, 0x0C090000, 0x170E28B6, 0x0C090000, 0x180E28B7, - 0x0C090000, 0x170E28B8, 0x2D00010C, 0x09000011, 0x56101009, 0x0000180E, 0x29560C09, 0x0000170E, 0x29570C09, - 0x0000180E, 0x29580C09, 0x0000170E, 0x29592D00, 0x010C0900, 0x00121000, +static MsgScript D_80BF335C[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0003 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x4B, 0x10, 0x0027 - 0x0008), + /* 0x0008 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0009 0x03 */ MSCRIPT_BEGIN_TEXT(0x28B1), + /* 0x000C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000D 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0010 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0011 0x03 */ MSCRIPT_BEGIN_TEXT(0x28B2), + /* 0x0014 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0015 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0018 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0019 0x03 */ MSCRIPT_BEGIN_TEXT(0x28B3), + /* 0x001C 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJU), + /* 0x001F 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x37, 0x02), + /* 0x0022 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0023 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0026 0x01 */ MSCRIPT_DONE(), + + /* 0x0027 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x56, 0x10, 0x005B - 0x002C), + /* 0x002C 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x002D 0x03 */ MSCRIPT_BEGIN_TEXT(0x28B1), + /* 0x0030 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0031 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0034 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0035 0x03 */ MSCRIPT_BEGIN_TEXT(0x28B5), + /* 0x0038 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0039 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x003C 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x003D 0x03 */ MSCRIPT_BEGIN_TEXT(0x28B6), + /* 0x0040 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0041 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0044 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0045 0x03 */ MSCRIPT_BEGIN_TEXT(0x28B7), + /* 0x0048 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0049 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x004C 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x004D 0x03 */ MSCRIPT_BEGIN_TEXT(0x28B8), + /* 0x0050 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJU), + /* 0x0053 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0054 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0057 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x56, 0x10), + /* 0x005A 0x01 */ MSCRIPT_DONE(), + + /* 0x005B 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x005E 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x005F 0x03 */ MSCRIPT_BEGIN_TEXT(0x2956), + /* 0x0062 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0063 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0066 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0067 0x03 */ MSCRIPT_BEGIN_TEXT(0x2957), + /* 0x006A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x006B 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x006E 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x006F 0x03 */ MSCRIPT_BEGIN_TEXT(0x2958), + /* 0x0072 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0073 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0076 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0077 0x03 */ MSCRIPT_BEGIN_TEXT(0x2959), + /* 0x007A 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJU), + /* 0x007D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x007E 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0081 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0082 0x01 */ MSCRIPT_DONE(), }; -static s32 D_80BF33E0[] = { - 0x0E28B90C, - 0x10000000, +static MsgScript D_80BF33E0[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x28B9), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_DONE(), }; -static s32 D_80BF33E8[] = { - 0x0E28B40C, - 0x10000000, +static MsgScript D_80BF33E8[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x28B4), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_DONE(), }; -static s32 D_80BF33F0[] = { - 0x0E295B0C, - 0x10000000, +static MsgScript D_80BF33F0[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x295B), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_DONE(), }; ActorInit En_Ig_InitVars = { @@ -348,8 +411,8 @@ s16 func_80BF1744(EnIg* this, s32 numCutscenes) { return csId; } -s32 func_80BF17BC(EnIg* this, PlayState* play) { - s32 pad; +s32 func_80BF17BC(Actor* thisx, PlayState* play) { + EnIg* this = THIS; s16 csId; s32 ret; @@ -391,7 +454,7 @@ s32 func_80BF17BC(EnIg* this, PlayState* play) { return ret; } -s32* func_80BF1920(EnIg* this, PlayState* play) { +MsgScript* func_80BF1920(EnIg* this, PlayState* play) { switch (this->scheduleResult) { case 3: this->unk_3F8 = func_80BF17BC; @@ -897,7 +960,7 @@ void func_80BF2BD4(EnIg* this, PlayState* play) { Vec3f sp38; Vec3f sp2C; - if (func_8010BF58(&this->actor, play, this->unk_29C, this->unk_3F8, &this->unk_2A0)) { + if (MsgEvent_RunScript(&this->actor, play, this->unk_29C, this->unk_3F8, &this->unk_2A0)) { SubS_UpdateFlags(&this->unk_3D0, 3, 7); this->unk_3D0 &= ~0x20; this->unk_3D0 |= 0x200; 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 274338a11..c755940f0 100644 --- a/src/overlays/actors/ovl_En_Ig/z_en_ig.h +++ b/src/overlays/actors/ovl_En_Ig/z_en_ig.h @@ -6,7 +6,6 @@ struct EnIg; typedef void (*EnIgActionFunc)(struct EnIg*, PlayState*); -typedef s32 (*EnIgUnkFunc)(struct EnIg*, PlayState*); typedef void (*EnIgUnkFunc2)(struct EnIg*, PlayState*); #define ENIG_GET_PATH_INDEX(thisx) ((thisx)->params & 0xFF) @@ -27,7 +26,7 @@ typedef struct EnIg { /* 0x290 */ s32 timePathWaypoint; /* 0x294 */ s32 timePathElapsedTime; /* 0x298 */ u8 scheduleResult; - /* 0x29C */ s32* unk_29C; + /* 0x29C */ MsgScript* unk_29C; /* 0x2A0 */ s32 unk_2A0; /* 0x2A4 */ s8 unk_2A4; /* 0x2A8 */ Actor* unk_2A8; @@ -56,7 +55,7 @@ typedef struct EnIg { /* 0x3F2 */ s16 unk_3F2; /* 0x3F4 */ s16 unk_3F4; /* 0x3F6 */ s16 unk_3F6; - /* 0x3F8 */ EnIgUnkFunc unk_3F8; + /* 0x3F8 */ MsgEventCallback unk_3F8; /* 0x3FC */ s32 unk_3FC; /* 0x400 */ UNK_TYPE1 unk400[0x8]; /* 0x408 */ s32 unk_408; 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 fcbd26b2f..3f7d90783 100644 --- a/src/overlays/actors/ovl_En_Ja/z_en_ja.c +++ b/src/overlays/actors/ovl_En_Ja/z_en_ja.c @@ -34,20 +34,84 @@ static u8 D_80BC35F0[] = { /* 0x1A */ SCHEDULE_CMD_RET_NONE(), }; -s32 D_80BC360C[] = { - 0x0E29370C, 0x170E2938, 0x0C180E29, 0x390C170E, 0x293A0C09, 0x0000180E, 0x293B0C09, 0x00001000, +MsgScript D_80BC360C[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2937), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x2938), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x000A 0x03 */ MSCRIPT_BEGIN_TEXT(0x2939), + /* 0x000D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000E 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x000F 0x03 */ MSCRIPT_BEGIN_TEXT(0x293A), + /* 0x0012 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0013 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0016 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0017 0x03 */ MSCRIPT_BEGIN_TEXT(0x293B), + /* 0x001A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001B 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x001E 0x01 */ MSCRIPT_DONE(), }; -s32 D_80BC362C[] = { - 0x0E29400C, 0x170E2941, 0x0C180E29, 0x420C170E, 0x29430C09, 0x0000180E, 0x293B0C09, 0x00001000, +MsgScript D_80BC362C[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2940), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x2941), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x000A 0x03 */ MSCRIPT_BEGIN_TEXT(0x2942), + /* 0x000D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000E 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x000F 0x03 */ MSCRIPT_BEGIN_TEXT(0x2943), + /* 0x0012 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0013 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0016 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0017 0x03 */ MSCRIPT_BEGIN_TEXT(0x293B), + /* 0x001A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001B 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x001E 0x01 */ MSCRIPT_DONE(), }; -s32 D_80BC364C[] = { - 0x0E293C0C, 0x170E293D, 0x0C180E29, 0x3E0C170E, 0x293F0C09, 0x0000180E, 0x293B0C09, 0x00001000, +MsgScript D_80BC364C[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x293C), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x293D), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x000A 0x03 */ MSCRIPT_BEGIN_TEXT(0x293E), + /* 0x000D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000E 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x000F 0x03 */ MSCRIPT_BEGIN_TEXT(0x293F), + /* 0x0012 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0013 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0016 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0017 0x03 */ MSCRIPT_BEGIN_TEXT(0x293B), + /* 0x001A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001B 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x001E 0x01 */ MSCRIPT_DONE(), }; -s32 D_80BC366C[] = { - 0x0E29440C, 0x170E2945, 0x0C180E29, 0x460C170E, 0x29470C09, 0x0000180E, 0x293B0C09, 0x00001000, +MsgScript D_80BC366C[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2944), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x2945), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x000A 0x03 */ MSCRIPT_BEGIN_TEXT(0x2946), + /* 0x000D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000E 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x000F 0x03 */ MSCRIPT_BEGIN_TEXT(0x2947), + /* 0x0012 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0013 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0016 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0017 0x03 */ MSCRIPT_BEGIN_TEXT(0x293B), + /* 0x001A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001B 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x001E 0x01 */ MSCRIPT_DONE(), }; ActorInit En_Ja_InitVars = { @@ -315,7 +379,7 @@ void func_80BC21A8(EnJa* this, PlayState* play) { func_80BC2150(this, play); } -s32* func_80BC2274(EnJa* this, PlayState* play) { +MsgScript* func_80BC2274(EnJa* this, PlayState* play) { switch (this->unk_1D8.unk_00) { case 1: if (ENJA_GET_3(&this->actor) == 0) { @@ -333,7 +397,7 @@ s32* func_80BC2274(EnJa* this, PlayState* play) { } void func_80BC22F4(EnJa* this, PlayState* play) { - if (func_8010BF58(&this->actor, play, func_80BC2274(this, play), this->unk_368, &this->unk_1D8.unk_04)) { + if (MsgEvent_RunScript(&this->actor, play, func_80BC2274(this, play), this->unk_368, &this->unk_1D8.unk_04)) { this->unk_340 &= ~8; SubS_UpdateFlags(&this->unk_340, 3, 7); this->unk_1D8.unk_04 = 0; diff --git a/src/overlays/actors/ovl_En_Ja/z_en_ja.h b/src/overlays/actors/ovl_En_Ja/z_en_ja.h index 00746ec63..748019e19 100644 --- a/src/overlays/actors/ovl_En_Ja/z_en_ja.h +++ b/src/overlays/actors/ovl_En_Ja/z_en_ja.h @@ -54,7 +54,7 @@ typedef struct EnJa { /* 0x362 */ s16 unk_362; /* 0x364 */ s16 unk_364; /* 0x366 */ s16 unk_366; - /* 0x368 */ void* unk_368; + /* 0x368 */ MsgEventCallback unk_368; /* 0x36C */ s32 unk_36C; /* 0x370 */ UNK_TYPE1 unk_370[4]; /* 0x374 */ s32 prevTalkState; diff --git a/src/overlays/actors/ovl_En_Nb/z_en_nb.c b/src/overlays/actors/ovl_En_Nb/z_en_nb.c index 133624f0f..52f01d284 100644 --- a/src/overlays/actors/ovl_En_Nb/z_en_nb.c +++ b/src/overlays/actors/ovl_En_Nb/z_en_nb.c @@ -80,34 +80,176 @@ static u8 sScheduleScript[] = { /* 0x72 */ SCHEDULE_CMD_RET_NONE(), }; -u8 D_80BC1464[] = { - 0x1B, 0x04, 0x08, 0x00, 0x6A, 0x0A, 0x00, 0x10, 0x00, 0x08, 0x00, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x0E, - 0x29, 0x12, 0x2D, 0x00, 0x0E, 0x0C, 0x10, 0x0E, 0x29, 0x01, 0x2D, 0x00, 0x0E, 0x0C, 0x10, 0x0E, 0x29, 0x02, 0x0C, - 0x0F, 0x29, 0x03, 0x0C, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x22, 0x31, 0x2D, 0x00, 0x0E, 0x12, 0x10, 0x30, 0x1C, - 0x04, 0x04, 0x0E, 0x29, 0x04, 0x0C, 0x20, 0x00, 0x03, 0x00, 0x04, 0x15, 0x09, 0x00, 0xC4, 0x09, 0x00, 0x00, 0x0F, - 0x29, 0x05, 0x0C, 0x15, 0x09, 0x00, 0xB9, 0x30, 0x1D, 0x04, 0x04, 0x0E, 0x29, 0x0B, 0x0C, 0x20, 0x00, 0x03, 0x00, - 0x04, 0x15, 0x09, 0x00, 0xA8, 0x09, 0x00, 0x00, 0x0F, 0x29, 0x0C, 0x0C, 0x15, 0x09, 0x00, 0x9D, 0x20, 0x00, 0x03, - 0x00, 0x17, 0x1B, 0x04, 0x04, 0x00, 0x09, 0x0E, 0x29, 0x11, 0x2D, 0x00, 0x0E, 0x0C, 0x16, 0x10, 0x0E, 0x29, 0x0A, - 0x2D, 0x00, 0x0E, 0x0C, 0x16, 0x10, 0x1B, 0x04, 0x04, 0x00, 0x3B, 0x0E, 0x29, 0x0D, 0x0C, 0x05, 0x00, 0x00, 0x00, - 0x0A, 0x00, 0x00, 0x0E, 0x29, 0x10, 0x2D, 0x00, 0x0E, 0x0C, 0x12, 0x16, 0x10, 0x0E, 0x29, 0x0E, 0x00, 0x32, 0x04, - 0x00, 0x59, 0x0C, 0x0F, 0x29, 0x0F, 0x0C, 0x12, 0x06, 0x00, 0x0C, 0x00, 0x00, 0x13, 0x00, 0x0C, 0x2F, 0x00, 0x00, - 0x2E, 0x2D, 0x00, 0x2A, 0x2D, 0x00, 0x0E, 0x11, 0x32, 0x04, 0x0C, 0x16, 0x10, 0x0E, 0x29, 0x06, 0x0C, 0x05, 0x00, - 0x0A, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x29, 0x07, 0x2D, 0x00, 0x0E, 0x0C, 0x12, 0x16, 0x10, 0x0E, 0x29, 0x08, 0x00, - 0x32, 0x02, 0x00, 0x1E, 0x0C, 0x0F, 0x29, 0x09, 0x0C, 0x12, 0x06, 0x00, 0x0C, 0x00, 0x00, 0x13, 0x00, 0x0C, 0x2F, - 0x00, 0x00, 0x2E, 0x2D, 0x00, 0x29, 0x2D, 0x00, 0x0E, 0x11, 0x32, 0x02, 0x0C, 0x16, 0x10, 0x2D, 0x00, 0x0E, 0x0C, - 0x12, 0x16, 0x10, 0x00, 0x00, 0x00, +MsgScript D_80BC1464[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_EVENT_INF(0x04, 0x08, 0x006F - 0x0005), + /* 0x0005 0x0D */ MSCRIPT_BRANCH_ON_DAY(0x0022 - 0x0012, 0x001A - 0x0012, 0x0022 - 0x0012, 0x001A - 0x0012, 0x0, 0x001A - 0x0012), + /* 0x0012 0x03 */ MSCRIPT_BEGIN_TEXT(0x2912), + /* 0x0015 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER), + /* 0x0018 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0019 0x01 */ MSCRIPT_DONE(), + + /* 0x001A 0x03 */ MSCRIPT_BEGIN_TEXT(0x2901), + /* 0x001D 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER), + /* 0x0020 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0021 0x01 */ MSCRIPT_DONE(), + + /* 0x0022 0x03 */ MSCRIPT_BEGIN_TEXT(0x2902), + /* 0x0025 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0026 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2903), + /* 0x0029 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002A 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x0, 0x0037 - 0x0031, 0x0053 - 0x0031), + /* 0x0031 0x01 */ MSCRIPT_PLAY_CANCEL(), + /* 0x0032 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER), + /* 0x0035 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0036 0x01 */ MSCRIPT_DONE(), + + /* 0x0037 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x0038 0x03 */ MSCRIPT_SET_EVENT_INF(0x04, 0x04), + /* 0x003B 0x03 */ MSCRIPT_BEGIN_TEXT(0x2904), + /* 0x003E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003F 0x05 */ MSCRIPT_BRANCH_ON_WORN_MASK(0x0003, 0x0048 - 0x0044), + /* 0x0044 0x01 */ MSCRIPT_PAUSE(), + /* 0x0045 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x010C - 0x0048), + /* 0x0048 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x004B 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2905), + /* 0x004E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004F 0x01 */ MSCRIPT_PAUSE(), + /* 0x0050 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x010C - 0x0053), + /* 0x0053 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x0054 0x03 */ MSCRIPT_UNSET_EVENT_INF(0x04, 0x04), + /* 0x0057 0x03 */ MSCRIPT_BEGIN_TEXT(0x290B), + /* 0x005A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x005B 0x05 */ MSCRIPT_BRANCH_ON_WORN_MASK(0x0003, 0x0064 - 0x0060), + /* 0x0060 0x01 */ MSCRIPT_PAUSE(), + /* 0x0061 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x010C - 0x0064), + /* 0x0064 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0067 0x03 */ MSCRIPT_CONTINUE_TEXT(0x290C), + /* 0x006A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x006B 0x01 */ MSCRIPT_PAUSE(), + /* 0x006C 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x010C - 0x006F), + /* 0x006F 0x05 */ MSCRIPT_BRANCH_ON_WORN_MASK(0x0003, 0x008B - 0x0074), + /* 0x0074 0x05 */ MSCRIPT_BRANCH_ON_EVENT_INF(0x04, 0x04, 0x0082 - 0x0079), + /* 0x0079 0x03 */ MSCRIPT_BEGIN_TEXT(0x2911), + /* 0x007C 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER), + /* 0x007F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0080 0x01 */ MSCRIPT_CMD22(), + /* 0x0081 0x01 */ MSCRIPT_DONE(), + + /* 0x0082 0x03 */ MSCRIPT_BEGIN_TEXT(0x290A), + /* 0x0085 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER), + /* 0x0088 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0089 0x01 */ MSCRIPT_CMD22(), + /* 0x008A 0x01 */ MSCRIPT_DONE(), + + /* 0x008B 0x05 */ MSCRIPT_BRANCH_ON_EVENT_INF(0x04, 0x04, 0x00CB - 0x0090), + /* 0x0090 0x03 */ MSCRIPT_BEGIN_TEXT(0x290D), + /* 0x0093 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0094 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x0, 0x00A5 - 0x009B, 0x0), + /* 0x009B 0x03 */ MSCRIPT_BEGIN_TEXT(0x2910), + /* 0x009E 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER), + /* 0x00A1 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00A2 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00A3 0x01 */ MSCRIPT_CMD22(), + /* 0x00A4 0x01 */ MSCRIPT_DONE(), + + /* 0x00A5 0x03 */ MSCRIPT_BEGIN_TEXT(0x290E), + /* 0x00A8 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x32, 0x04, 0x0106 - 0x00AD), + /* 0x00AD 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00AE 0x03 */ MSCRIPT_CONTINUE_TEXT(0x290F), + /* 0x00B1 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00B2 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00B3 0x05 */ MSCRIPT_OFFER_ITEM(GI_HEART_PIECE, 0x0), + /* 0x00B8 0x03 */ MSCRIPT_COLLECT_SET(0x000C), + /* 0x00BB 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x00BE 0x01 */ MSCRIPT_CMD46(), + /* 0x00BF 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_LONG_STORY_HP), + /* 0x00C2 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER), + /* 0x00C5 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x32, 0x04), + /* 0x00C8 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00C9 0x01 */ MSCRIPT_CMD22(), + /* 0x00CA 0x01 */ MSCRIPT_DONE(), + + /* 0x00CB 0x03 */ MSCRIPT_BEGIN_TEXT(0x2906), + /* 0x00CE 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00CF 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x00E0 - 0x00D6, 0x0, 0x0), + /* 0x00D6 0x03 */ MSCRIPT_BEGIN_TEXT(0x2907), + /* 0x00D9 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER), + /* 0x00DC 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00DD 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00DE 0x01 */ MSCRIPT_CMD22(), + /* 0x00DF 0x01 */ MSCRIPT_DONE(), + + /* 0x00E0 0x03 */ MSCRIPT_BEGIN_TEXT(0x2908), + /* 0x00E3 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x32, 0x02, 0x0106 - 0x00E8), + /* 0x00E8 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00E9 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2909), + /* 0x00EC 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00ED 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00EE 0x05 */ MSCRIPT_OFFER_ITEM(GI_HEART_PIECE, 0x0), + /* 0x00F3 0x03 */ MSCRIPT_COLLECT_SET(0x000C), + /* 0x00F6 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x00F9 0x01 */ MSCRIPT_CMD46(), + /* 0x00FA 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_SHORT_STORY_HP), + /* 0x00FD 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER), + /* 0x0100 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x32, 0x02), + /* 0x0103 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0104 0x01 */ MSCRIPT_CMD22(), + /* 0x0105 0x01 */ MSCRIPT_DONE(), + + /* 0x0106 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER), + /* 0x0109 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x010A 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x010B 0x01 */ MSCRIPT_CMD22(), + /* 0x010C 0x01 */ MSCRIPT_DONE(), }; -u8 D_80BC1574[] = { - 0x09, 0x00, 0x00, 0x0E, 0x28, 0xC7, 0x0C, 0x09, 0x00, 0x00, 0x17, 0x0E, 0x28, 0xC8, 0x0C, 0x09, 0x00, - 0x00, 0x18, 0x0E, 0x28, 0xC9, 0x0C, 0x09, 0x00, 0x00, 0x17, 0x0E, 0x28, 0xCA, 0x0C, 0x09, 0x00, 0x00, - 0x18, 0x0E, 0x28, 0xCB, 0x0C, 0x09, 0x00, 0x00, 0x17, 0x0E, 0x28, 0xCC, 0x0C, 0x09, 0x00, 0x00, 0x18, - 0x0E, 0x28, 0xCD, 0x0C, 0x09, 0x00, 0x00, 0x17, 0x0E, 0x28, 0xCE, 0x0C, 0x09, 0x00, 0x00, 0x18, 0x0E, - 0x28, 0xCF, 0x2D, 0x00, 0x01, 0x2D, 0x00, 0x0E, 0x0C, 0x09, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, +MsgScript D_80BC1574[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0003 0x03 */ MSCRIPT_BEGIN_TEXT(0x28C7), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x000A 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x000B 0x03 */ MSCRIPT_BEGIN_TEXT(0x28C8), + /* 0x000E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000F 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0012 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0013 0x03 */ MSCRIPT_BEGIN_TEXT(0x28C9), + /* 0x0016 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0017 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x001A 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x001B 0x03 */ MSCRIPT_BEGIN_TEXT(0x28CA), + /* 0x001E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001F 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0022 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0023 0x03 */ MSCRIPT_BEGIN_TEXT(0x28CB), + /* 0x0026 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0027 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x002A 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x002B 0x03 */ MSCRIPT_BEGIN_TEXT(0x28CC), + /* 0x002E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002F 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0032 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0033 0x03 */ MSCRIPT_BEGIN_TEXT(0x28CD), + /* 0x0036 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0037 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x003A 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x003B 0x03 */ MSCRIPT_BEGIN_TEXT(0x28CE), + /* 0x003E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003F 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0042 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0043 0x03 */ MSCRIPT_BEGIN_TEXT(0x28CF), + /* 0x0046 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJU), + /* 0x0049 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER), + /* 0x004C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004D 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0050 0x01 */ MSCRIPT_DONE(), }; -u8 D_80BC15C8[] = { - 0x0E, 0x23, 0x62, 0x2D, 0x00, 0x0E, 0x0C, 0x10, +MsgScript D_80BC15C8[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2362), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_DONE(), }; ActorInit En_Nb_InitVars = { @@ -385,7 +527,7 @@ s32 func_80BC01DC(Actor* thisx, PlayState* play) { return ret; } -u8* func_80BC045C(EnNb* this, PlayState* play) { +MsgScript* func_80BC045C(EnNb* this, PlayState* play) { if (CHECK_EVENTINF(EVENTINF_43)) { this->msgEventCallback = func_80BC01DC; return D_80BC1464; @@ -662,7 +804,7 @@ void EnNb_FollowSchedule(EnNb* this, PlayState* play) { } void func_80BC0EAC(EnNb* this, PlayState* play) { - if (func_8010BF58(&this->actor, play, this->msgEventScript, this->msgEventCallback, &this->msgEventArg4)) { + if (MsgEvent_RunScript(&this->actor, play, this->msgEventScript, this->msgEventCallback, &this->msgEventArg4)) { if (CHECK_EVENTINF(EVENTINF_43)) { CLEAR_EVENTINF(EVENTINF_42); CLEAR_EVENTINF(EVENTINF_43); diff --git a/src/overlays/actors/ovl_En_Nb/z_en_nb.h b/src/overlays/actors/ovl_En_Nb/z_en_nb.h index 2a784e096..f498881a6 100644 --- a/src/overlays/actors/ovl_En_Nb/z_en_nb.h +++ b/src/overlays/actors/ovl_En_Nb/z_en_nb.h @@ -7,7 +7,6 @@ struct EnNb; typedef void (*EnNbActionFunc)(struct EnNb*, PlayState*); -typedef s32 (*EnNbUnkFunc)(Actor*, PlayState*); typedef void (*EnNbUnkFunc2)(struct EnNb*, PlayState*); typedef enum EnNbAnimation { @@ -27,7 +26,7 @@ typedef struct EnNb { /* 0x18C */ EnNbUnkFunc2 unk_18C; /* 0x190 */ ColliderCylinder collider; /* 0x1DC */ u8 scheduleResult; - /* 0x1E0 */ u8* msgEventScript; + /* 0x1E0 */ MsgScript* msgEventScript; /* 0x1E4 */ s32 msgEventArg4; /* 0x1E8 */ Actor* unk_1E8; /* 0x1EC */ UNK_TYPE1 unk_1EC[4]; @@ -49,7 +48,7 @@ typedef struct EnNb { /* 0x284 */ s16 unk_284; // storyState? /* 0x286 */ s16 storyTimer; /* 0x288 */ s16 behaviour; - /* 0x28C */ EnNbUnkFunc msgEventCallback; + /* 0x28C */ MsgEventCallback msgEventCallback; /* 0x290 */ EnNbAnimation animIndex; /* 0x294 */ UNK_TYPE1 unk_294[4]; /* 0x294 */ TextState prevTalkState; 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 072f6d6ac..31b0dda8b 100644 --- a/src/overlays/actors/ovl_En_Pm/z_en_pm.c +++ b/src/overlays/actors/ovl_En_Pm/z_en_pm.c @@ -387,89 +387,268 @@ static s32 D_80AFB430[] = { 2, 1, 0, 6, 7, 9, 8, -1, 0, 1, 10, 3, 1, 0, 11, 12, 8, 2, 2, 3, 0, 1, 1, 0, 6, 9, 1, 2, 12, 13, }; -// Game scripts -static UNK_TYPE D_80AFB5A0[] = { - 0x00560800, 0x45090000, 0x170E28BA, 0x0C090000, 0x180E28BB, 0x0C090000, 0x170E28BC, 0x0C090000, 0x180E28BD, - 0x0C090000, 0x170E28BE, 0x0C090000, 0x180E28BF, 0x0C090000, 0x170E28C0, 0x2D00012D, 0x000B0C09, 0x00001156, - 0x08100900, 0x00170E29, 0x5C0C0900, 0x00180E29, 0x5D0C0900, 0x00170E29, 0x5E2D0001, 0x2D000B0C, 0x09000010, +static MsgScript D_80AFB5A0[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x56, 0x08, 0x004A - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0008 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0009 0x03 */ MSCRIPT_BEGIN_TEXT(0x28BA), + /* 0x000C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000D 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0010 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0011 0x03 */ MSCRIPT_BEGIN_TEXT(0x28BB), + /* 0x0014 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0015 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0018 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0019 0x03 */ MSCRIPT_BEGIN_TEXT(0x28BC), + /* 0x001C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001D 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0020 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0021 0x03 */ MSCRIPT_BEGIN_TEXT(0x28BD), + /* 0x0024 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0025 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0028 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0029 0x03 */ MSCRIPT_BEGIN_TEXT(0x28BE), + /* 0x002C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002D 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0030 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0031 0x03 */ MSCRIPT_BEGIN_TEXT(0x28BF), + /* 0x0034 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0035 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0038 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x0039 0x03 */ MSCRIPT_BEGIN_TEXT(0x28C0), + /* 0x003C 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJU), + /* 0x003F 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x0042 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0043 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0046 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x56, 0x08), + /* 0x0049 0x01 */ MSCRIPT_DONE(), + + /* 0x004A 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x004D 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x004E 0x03 */ MSCRIPT_BEGIN_TEXT(0x295C), + /* 0x0051 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0052 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0055 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0056 0x03 */ MSCRIPT_BEGIN_TEXT(0x295D), + /* 0x0059 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x005A 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x005D 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x005E 0x03 */ MSCRIPT_BEGIN_TEXT(0x295E), + /* 0x0061 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_ANJU), + /* 0x0064 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x0067 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0068 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x006B 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80AFB60C[] = { - 0x0E27742D, - 0x000B0C10, +static MsgScript D_80AFB60C[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2774), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80AFB614[] = { - 0x0E27752D, - 0x000B0C10, +static MsgScript D_80AFB614[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2775), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80AFB61C[] = { - 0x0E27772D, - 0x000B0C10, +static MsgScript D_80AFB61C[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2777), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80AFB624[] = { - 0x0E27782D, - 0x000B0C10, +static MsgScript D_80AFB624[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2778), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80AFB62C[] = { - 0x0E27792D, - 0x000B0C10, +static MsgScript D_80AFB62C[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2779), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80AFB634[] = { - 0x0E27812D, - 0x000B0C10, +static MsgScript D_80AFB634[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2781), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80AFB63C[] = { - 0x0E277A2D, - 0x000B0C10, +static MsgScript D_80AFB63C[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x277A), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80AFB644[] = { - 0x0E27822D, - 0x000B0C11, - 0x58021000, +static MsgScript D_80AFB644[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2782), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x58, 0x02), + /* 0x000A 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80AFB650[] = { - 0x0E27832D, - 0x000B0C10, +static MsgScript D_80AFB650[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2783), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80AFB658[] = { - 0x25002E00, 0x1A005280, 0x000C0E27, 0x7C2D000B, 0x0C115280, 0x12100E27, 0x7D2D000B, 0x0C12100E, 0x277C0C0E, - 0x00FF1E00, 0x33000000, 0x1800282C, 0xFFFF0900, 0x000E277E, 0x2D000B0C, 0x11528011, 0x56012A00, 0x2E12102C, - 0x277D0C2F, 0x00002D00, 0x0B0C1152, 0x8012100E, 0x277D2D00, 0x0B0C1152, 0x80121000, +static MsgScript D_80AFB658[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_ITEM(ITEM_LETTER_MAMA, 0x001F - 0x0005), + /* 0x0005 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x52, 0x80, 0x0016 - 0x000A), + /* 0x000A 0x03 */ MSCRIPT_BEGIN_TEXT(0x277C), + /* 0x000D 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x0010 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0011 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x52, 0x80), + /* 0x0014 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0015 0x01 */ MSCRIPT_DONE(), + + /* 0x0016 0x03 */ MSCRIPT_BEGIN_TEXT(0x277D), + /* 0x0019 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x001C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001D 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x001E 0x01 */ MSCRIPT_DONE(), + + /* 0x001F 0x03 */ MSCRIPT_BEGIN_TEXT(0x277C), + /* 0x0022 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0023 0x03 */ MSCRIPT_BEGIN_TEXT(0x00FF), + /* 0x0026 0x09 */ MSCRIPT_BRANCH_ON_ITEMACTION(0x0033, 0x0, 0x0047 - 0x002F, 0x0057 - 0x002F), + /* 0x002F 0x03 */ MSCRIPT_CMD44(0xFFFF), + /* 0x0032 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0035 0x03 */ MSCRIPT_BEGIN_TEXT(0x277E), + /* 0x0038 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x003B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003C 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x52, 0x80), + /* 0x003F 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x56, 0x01), + /* 0x0042 0x03 */ MSCRIPT_DEL_ITEM(ITEM_LETTER_MAMA), + /* 0x0045 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0046 0x01 */ MSCRIPT_DONE(), + + /* 0x0047 0x03 */ MSCRIPT_CMD44(0x277D), + /* 0x004A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004B 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x004E 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x0051 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0052 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x52, 0x80), + /* 0x0055 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0056 0x01 */ MSCRIPT_DONE(), + + /* 0x0057 0x03 */ MSCRIPT_BEGIN_TEXT(0x277D), + /* 0x005A 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x005D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x005E 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x52, 0x80), + /* 0x0061 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0062 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80AFB6BC[] = { - 0x0900000E, 0x27A50C09, 0x0000170E, 0x27A60C09, 0x0000180E, 0x27A70C09, 0x0000170E, - 0x27A80C09, 0x0000180E, 0x27A90C09, 0x0000170E, 0x27AA0C09, 0x0000180E, 0x27AB0C09, - 0x0000170E, 0x27AC0C09, 0x0000180E, 0x27AD2D00, 0x0B2D0008, 0x0C115908, 0x09000010, +static MsgScript D_80AFB6BC[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0003 0x03 */ MSCRIPT_BEGIN_TEXT(0x27A5), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x000A 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x000B 0x03 */ MSCRIPT_BEGIN_TEXT(0x27A6), + /* 0x000E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000F 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0012 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0013 0x03 */ MSCRIPT_BEGIN_TEXT(0x27A7), + /* 0x0016 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0017 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x001A 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x001B 0x03 */ MSCRIPT_BEGIN_TEXT(0x27A8), + /* 0x001E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001F 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0022 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0023 0x03 */ MSCRIPT_BEGIN_TEXT(0x27A9), + /* 0x0026 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0027 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x002A 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x002B 0x03 */ MSCRIPT_BEGIN_TEXT(0x27AA), + /* 0x002E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002F 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0032 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0033 0x03 */ MSCRIPT_BEGIN_TEXT(0x27AB), + /* 0x0036 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0037 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x003A 0x01 */ MSCRIPT_FOCUS_TO_CHILD(), + /* 0x003B 0x03 */ MSCRIPT_BEGIN_TEXT(0x27AC), + /* 0x003E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003F 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0042 0x01 */ MSCRIPT_FOCUS_TO_SELF(), + /* 0x0043 0x03 */ MSCRIPT_BEGIN_TEXT(0x27AD), + /* 0x0046 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x0049 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 0x004C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004D 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x59, 0x08), + /* 0x0050 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0053 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80AFB710[] = { - 0x25003E00, 0x230E2780, 0x0C0F27AE, 0x0C120600, 0x84000013, 0x0084115A, 0x042F0000, - 0x2E2D000B, 0x2D00310C, 0x115A0110, 0x0E27802D, 0x000B0C11, 0x5A011210, +static MsgScript D_80AFB710[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_ITEM(ITEM_MASK_POSTMAN, 0x0028 - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x2780), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x03 */ MSCRIPT_CONTINUE_TEXT(0x27AE), + /* 0x000C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000D 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x000E 0x05 */ MSCRIPT_OFFER_ITEM(GI_MASK_POSTMAN, 0x0), + /* 0x0013 0x03 */ MSCRIPT_COLLECT_SET(0x0084), + /* 0x0016 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x5A, 0x04), + /* 0x0019 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x001C 0x01 */ MSCRIPT_CMD46(), + /* 0x001D 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x0020 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMANS_HAT), + /* 0x0023 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0024 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x5A, 0x01), + /* 0x0027 0x01 */ MSCRIPT_DONE(), + + /* 0x0028 0x03 */ MSCRIPT_BEGIN_TEXT(0x2780), + /* 0x002B 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x002E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002F 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x5A, 0x01), + /* 0x0032 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0033 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80AFB744[] = { - 0x0E23692D, - 0x000B0C10, +static MsgScript D_80AFB744[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2369), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80AFB74C[] = { - 0x2CFFFF09, 0x00000E27, 0x7E2D000B, 0x0C115280, 0x1156012A, 0x002E1210, +static MsgScript D_80AFB74C[] = { + /* 0x0000 0x03 */ MSCRIPT_CMD44(0xFFFF), + /* 0x0003 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0006 0x03 */ MSCRIPT_BEGIN_TEXT(0x277E), + /* 0x0009 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x000C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000D 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x52, 0x80), + /* 0x0010 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x56, 0x01), + /* 0x0013 0x03 */ MSCRIPT_DEL_ITEM(ITEM_LETTER_MAMA), + /* 0x0016 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0017 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80AFB764[] = { - 0x2C277D2D, - 0x000B0C11, - 0x52801210, +static MsgScript D_80AFB764[] = { + /* 0x0000 0x03 */ MSCRIPT_CMD44(0x277D), + /* 0x0003 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x52, 0x80), + /* 0x000A 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x000B 0x01 */ MSCRIPT_DONE(), }; ActorInit En_Pm_InitVars = { @@ -818,8 +997,8 @@ s16 func_80AF8170(EnPm* this, s32 numCutscenes) { return csId; } -s32 func_80AF81E8(EnPm* this, PlayState* play) { - s32 pad; +s32 func_80AF81E8(Actor* thisx, PlayState* play) { + EnPm* this = THIS; s16 csId = func_80AF8170(this, 0); s32 ret = false; @@ -861,8 +1040,8 @@ s32 func_80AF81E8(EnPm* this, PlayState* play) { return ret; } -s32 func_80AF8348(EnPm* this, PlayState* play) { - s32 pad; +s32 func_80AF8348(Actor* thisx, PlayState* play) { + EnPm* this = THIS; s16 csId = func_80AF8170(this, 0); s32 ret = false; @@ -903,8 +1082,8 @@ s32 func_80AF8348(EnPm* this, PlayState* play) { return ret; } -s32 func_80AF8478(EnPm* this, PlayState* play) { - s32 pad; +s32 func_80AF8478(Actor* thisx, PlayState* play) { + EnPm* this = THIS; s32 ret = false; switch (this->unk_378) { @@ -928,7 +1107,7 @@ s32 func_80AF8478(EnPm* this, PlayState* play) { return ret; } -UNK_TYPE* func_80AF8540(EnPm* this, PlayState* play) { +MsgScript* func_80AF8540(EnPm* this, PlayState* play) { switch (this->unk_258) { case 28: this->unk_37C = func_80AF8348; @@ -2023,7 +2202,7 @@ void func_80AFA5FC(EnPm* this, PlayState* play) { Vec3f sp38; Vec3f sp2C; - if (func_8010BF58(&this->actor, play, this->unk_25C, this->unk_37C, &this->unk_264)) { + if (MsgEvent_RunScript(&this->actor, play, this->unk_25C, this->unk_37C, &this->unk_264)) { SubS_UpdateFlags(&this->unk_356, 3, 7); this->unk_356 &= ~0x20; this->unk_356 |= 0x200; diff --git a/src/overlays/actors/ovl_En_Pm/z_en_pm.h b/src/overlays/actors/ovl_En_Pm/z_en_pm.h index bf7bbe859..a9bce738d 100644 --- a/src/overlays/actors/ovl_En_Pm/z_en_pm.h +++ b/src/overlays/actors/ovl_En_Pm/z_en_pm.h @@ -6,7 +6,6 @@ struct EnPm; typedef void (*EnPmActionFunc)(struct EnPm*, PlayState*); -typedef s32 (*EnPmFunc)(struct EnPm*, PlayState*); typedef s32 (*EnPmFunc2)(struct EnPm*, PlayState*); #define ENPM_GET_PATH_INDEX(thisx) ((thisx)->params & 0xFF) @@ -26,7 +25,7 @@ typedef struct EnPm { /* 0x250 */ s32 timePathWaypoint; /* 0x254 */ s32 timePathElapsedTime; /* 0x258 */ u8 unk_258; - /* 0x25C */ UNK_TYPE* unk_25C; + /* 0x25C */ MsgScript* unk_25C; /* 0x260 */ s8 unk_260; /* 0x264 */ s32 unk_264; /* 0x268 */ Actor* unk_268; @@ -49,7 +48,7 @@ typedef struct EnPm { /* 0x374 */ s16 timePathTimeSpeed; /* 0x376 */ s16 unk_376; /* 0x378 */ s16 unk_378; - /* 0x37C */ EnPmFunc unk_37C; + /* 0x37C */ MsgEventCallback unk_37C; /* 0x380 */ s32 unk_380; /* 0x384 */ s32 unk_384; /* 0x388 */ s32 prevTalkState; diff --git a/src/overlays/actors/ovl_En_Pst/z_en_pst.c b/src/overlays/actors/ovl_En_Pst/z_en_pst.c index 7a507e0ef..67ac800e7 100644 --- a/src/overlays/actors/ovl_En_Pst/z_en_pst.c +++ b/src/overlays/actors/ovl_En_Pst/z_en_pst.c @@ -59,64 +59,329 @@ static u8 D_80B2C230[] = { /* 0x9 */ SCHEDULE_CMD_RET_VAL_L(POSTBOX_SCH_CHECKED_BY_POSTMAN), }; -s32 D_80B2C23C[] = { - 0x0E27840C, 0x0E00FF2B, 0x00000031, 0x00392800, 0x0A122C27, 0xA40C2F00, 0x000C1012, - 0x2C27870C, 0x2F00000C, 0x111B022A, 0x002F001B, 0x4000080F, 0x27882D00, 0x180C100F, - 0x27892D00, 0x180C1012, 0x2C27850C, 0x2FFFD20E, 0x27860C10, +MsgScript D_80B2C23C[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2784), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x03 */ MSCRIPT_BEGIN_TEXT(0x00FF), + /* 0x0007 0x07 */ MSCRIPT_BRANCH_ON_CALLBACK(0x0, 0x003F - 0x000E, 0x0047 - 0x000E), + /* 0x000E 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x001B - 0x0011), + /* 0x0011 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0012 0x03 */ MSCRIPT_CMD44(0x27A4), + /* 0x0015 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0016 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0019 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001A 0x01 */ MSCRIPT_DONE(), + + /* 0x001B 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x001C 0x03 */ MSCRIPT_CMD44(0x2787), + /* 0x001F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0020 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0023 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0024 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x1B, 0x02), + /* 0x0027 0x03 */ MSCRIPT_DEL_ITEM(ITEM_LETTER_TO_KAFEI), + /* 0x002A 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x1B, 0x40, 0x0037 - 0x002F), + /* 0x002F 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2788), + /* 0x0032 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x0035 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0036 0x01 */ MSCRIPT_DONE(), + + /* 0x0037 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2789), + /* 0x003A 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x003D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003E 0x01 */ MSCRIPT_DONE(), + + /* 0x003F 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0040 0x03 */ MSCRIPT_CMD44(0x2785), + /* 0x0043 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0044 0x03 */ MSCRIPT_JUMP_3(0x0019 - 0x0047), + + /* 0x0047 0x03 */ MSCRIPT_BEGIN_TEXT(0x2786), + /* 0x004A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004B 0x01 */ MSCRIPT_DONE(), }; -s32 D_80B2C288[] = { - 0x0E27840C, 0x0E00FF2B, 0x00000031, 0x00392800, 0x0A122C27, 0xA40C2F00, 0x000C1012, - 0x2C27870C, 0x2F00000C, 0x111B042A, 0x002F001B, 0x8000080F, 0x27882D00, 0x180C100F, - 0x27892D00, 0x180C1012, 0x2C27850C, 0x2FFFD20E, 0x27860C10, +MsgScript D_80B2C288[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2784), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x03 */ MSCRIPT_BEGIN_TEXT(0x00FF), + /* 0x0007 0x07 */ MSCRIPT_BRANCH_ON_CALLBACK(0x0, 0x003F - 0x000E, 0x0047 - 0x000E), + /* 0x000E 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x001B - 0x0011), + /* 0x0011 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0012 0x03 */ MSCRIPT_CMD44(0x27A4), + /* 0x0015 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0016 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0019 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001A 0x01 */ MSCRIPT_DONE(), + + /* 0x001B 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x001C 0x03 */ MSCRIPT_CMD44(0x2787), + /* 0x001F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0020 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0023 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0024 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x1B, 0x04), + /* 0x0027 0x03 */ MSCRIPT_DEL_ITEM(ITEM_LETTER_TO_KAFEI), + /* 0x002A 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x1B, 0x80, 0x0037 - 0x002F), + /* 0x002F 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2788), + /* 0x0032 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x0035 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0036 0x01 */ MSCRIPT_DONE(), + + /* 0x0037 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2789), + /* 0x003A 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x003D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003E 0x01 */ MSCRIPT_DONE(), + + /* 0x003F 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0040 0x03 */ MSCRIPT_CMD44(0x2785), + /* 0x0043 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0044 0x03 */ MSCRIPT_JUMP_3(0x0019 - 0x0047), + + /* 0x0047 0x03 */ MSCRIPT_BEGIN_TEXT(0x2786), + /* 0x004A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004B 0x01 */ MSCRIPT_DONE(), }; -s32 D_80B2C2D4[] = { - 0x0E27840C, 0x0E00FF2B, 0x00000031, 0x00392800, 0x0A122C27, 0xA40C2F00, 0x000C1012, - 0x2C27870C, 0x2F00000C, 0x111B082A, 0x002F001C, 0x0100080F, 0x27882D00, 0x180C100F, - 0x27892D00, 0x180C1012, 0x2C27850C, 0x2FFFD20E, 0x27860C10, +MsgScript D_80B2C2D4[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2784), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x03 */ MSCRIPT_BEGIN_TEXT(0x00FF), + /* 0x0007 0x07 */ MSCRIPT_BRANCH_ON_CALLBACK(0x0, 0x003F - 0x000E, 0x0047 - 0x000E), + /* 0x000E 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x001B - 0x0011), + /* 0x0011 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0012 0x03 */ MSCRIPT_CMD44(0x27A4), + /* 0x0015 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0016 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0019 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001A 0x01 */ MSCRIPT_DONE(), + + /* 0x001B 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x001C 0x03 */ MSCRIPT_CMD44(0x2787), + /* 0x001F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0020 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0023 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0024 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x1B, 0x08), + /* 0x0027 0x03 */ MSCRIPT_DEL_ITEM(ITEM_LETTER_TO_KAFEI), + /* 0x002A 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x1C, 0x01, 0x0037 - 0x002F), + /* 0x002F 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2788), + /* 0x0032 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x0035 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0036 0x01 */ MSCRIPT_DONE(), + + /* 0x0037 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2789), + /* 0x003A 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x003D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003E 0x01 */ MSCRIPT_DONE(), + + /* 0x003F 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0040 0x03 */ MSCRIPT_CMD44(0x2785), + /* 0x0043 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0044 0x03 */ MSCRIPT_JUMP_3(0x0019 - 0x0047), + + /* 0x0047 0x03 */ MSCRIPT_BEGIN_TEXT(0x2786), + /* 0x004A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004B 0x01 */ MSCRIPT_DONE(), }; -s32 D_80B2C320[] = { - 0x0E27840C, 0x0E00FF2B, 0x00000031, 0x00392800, 0x0A122C27, 0xA40C2F00, 0x000C1012, - 0x2C27870C, 0x2F00000C, 0x111B102A, 0x002F001C, 0x0200080F, 0x27882D00, 0x180C100F, - 0x27892D00, 0x180C1012, 0x2C27850C, 0x2FFFD20E, 0x27860C10, +MsgScript D_80B2C320[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2784), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x03 */ MSCRIPT_BEGIN_TEXT(0x00FF), + /* 0x0007 0x07 */ MSCRIPT_BRANCH_ON_CALLBACK(0x0, 0x003F - 0x000E, 0x0047 - 0x000E), + /* 0x000E 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x001B - 0x0011), + /* 0x0011 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0012 0x03 */ MSCRIPT_CMD44(0x27A4), + /* 0x0015 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0016 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0019 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001A 0x01 */ MSCRIPT_DONE(), + + /* 0x001B 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x001C 0x03 */ MSCRIPT_CMD44(0x2787), + /* 0x001F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0020 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0023 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0024 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x1B, 0x10), + /* 0x0027 0x03 */ MSCRIPT_DEL_ITEM(ITEM_LETTER_TO_KAFEI), + /* 0x002A 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x1C, 0x02, 0x0037 - 0x002F), + /* 0x002F 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2788), + /* 0x0032 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x0035 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0036 0x01 */ MSCRIPT_DONE(), + + /* 0x0037 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2789), + /* 0x003A 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x003D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003E 0x01 */ MSCRIPT_DONE(), + + /* 0x003F 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0040 0x03 */ MSCRIPT_CMD44(0x2785), + /* 0x0043 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0044 0x03 */ MSCRIPT_JUMP_3(0x0019 - 0x0047), + + /* 0x0047 0x03 */ MSCRIPT_BEGIN_TEXT(0x2786), + /* 0x004A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004B 0x01 */ MSCRIPT_DONE(), }; -s32 D_80B2C36C[] = { - 0x0E27840C, 0x0E00FF2B, 0x00000031, 0x00392800, 0x0A122C27, 0xA40C2F00, 0x000C1012, - 0x2C27870C, 0x2F00000C, 0x111B202A, 0x002F001C, 0x0400080F, 0x27882D00, 0x180C100F, - 0x27892D00, 0x180C1012, 0x2C27850C, 0x2FFFD20E, 0x27860C10, +MsgScript D_80B2C36C[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2784), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x03 */ MSCRIPT_BEGIN_TEXT(0x00FF), + /* 0x0007 0x07 */ MSCRIPT_BRANCH_ON_CALLBACK(0x0, 0x003F - 0x000E, 0x0047 - 0x000E), + /* 0x000E 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x001B - 0x0011), + /* 0x0011 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0012 0x03 */ MSCRIPT_CMD44(0x27A4), + /* 0x0015 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0016 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0019 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001A 0x01 */ MSCRIPT_DONE(), + + /* 0x001B 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x001C 0x03 */ MSCRIPT_CMD44(0x2787), + /* 0x001F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0020 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0023 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0024 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x1B, 0x20), + /* 0x0027 0x03 */ MSCRIPT_DEL_ITEM(ITEM_LETTER_TO_KAFEI), + /* 0x002A 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x1C, 0x04, 0x0037 - 0x002F), + /* 0x002F 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2788), + /* 0x0032 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x0035 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0036 0x01 */ MSCRIPT_DONE(), + + /* 0x0037 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2789), + /* 0x003A 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x003D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003E 0x01 */ MSCRIPT_DONE(), + + /* 0x003F 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0040 0x03 */ MSCRIPT_CMD44(0x2785), + /* 0x0043 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0044 0x03 */ MSCRIPT_JUMP_3(0x0019 - 0x0047), + + /* 0x0047 0x03 */ MSCRIPT_BEGIN_TEXT(0x2786), + /* 0x004A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004B 0x01 */ MSCRIPT_DONE(), }; -s32 D_80B2C3B8[] = { - 0x0E27A10C, 0x0F27A20C, 0x12005108, 0x000F0600, 0x0C000013, 0x000C0C11, - 0x51080700, 0x0C060001, 0x00001300, 0x010C0700, 0x000E27A3, 0x0C161000, +MsgScript D_80B2C3B8[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x27A1), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x03 */ MSCRIPT_CONTINUE_TEXT(0x27A2), + /* 0x0007 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0008 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0009 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x51, 0x08, 0x001D - 0x000E), + /* 0x000E 0x05 */ MSCRIPT_OFFER_ITEM(GI_HEART_PIECE, 0x0), + /* 0x0013 0x03 */ MSCRIPT_COLLECT_SET(0x000C), + /* 0x0016 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0017 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x51, 0x08), + /* 0x001A 0x03 */ MSCRIPT_CMD07(0x0029 - 0x001D), + /* 0x001D 0x05 */ MSCRIPT_OFFER_ITEM(GI_RUPEE_GREEN, 0x0), + /* 0x0022 0x03 */ MSCRIPT_COLLECT_SET(0x0001), + /* 0x0025 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0026 0x03 */ MSCRIPT_CMD07(0x0), + /* 0x0029 0x03 */ MSCRIPT_BEGIN_TEXT(0x27A3), + /* 0x002C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002D 0x01 */ MSCRIPT_CMD22(), + /* 0x002E 0x01 */ MSCRIPT_DONE(), }; -s32 D_80B2C3E8[] = { - 0x2C27870C, 0x111B022A, 0x002F001B, 0x4000080F, 0x27882D00, 0x180C100F, 0x27892D00, 0x180C1000, +MsgScript D_80B2C3E8[] = { + /* 0x0000 0x03 */ MSCRIPT_CMD44(0x2787), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x1B, 0x02), + /* 0x0007 0x03 */ MSCRIPT_DEL_ITEM(ITEM_LETTER_TO_KAFEI), + /* 0x000A 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x1B, 0x40, 0x0017 - 0x000F), + /* 0x000F 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2788), + /* 0x0012 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x0015 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0016 0x01 */ MSCRIPT_DONE(), + + /* 0x0017 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2789), + /* 0x001A 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x001D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001E 0x01 */ MSCRIPT_DONE(), }; -s32 D_80B2C408[] = { - 0x2C27870C, 0x111B042A, 0x002F001B, 0x8000080F, 0x27882D00, 0x180C100F, 0x27892D00, 0x180C1000, +MsgScript D_80B2C408[] = { + /* 0x0000 0x03 */ MSCRIPT_CMD44(0x2787), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x1B, 0x04), + /* 0x0007 0x03 */ MSCRIPT_DEL_ITEM(ITEM_LETTER_TO_KAFEI), + /* 0x000A 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x1B, 0x80, 0x0017 - 0x000F), + /* 0x000F 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2788), + /* 0x0012 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x0015 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0016 0x01 */ MSCRIPT_DONE(), + + /* 0x0017 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2789), + /* 0x001A 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x001D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001E 0x01 */ MSCRIPT_DONE(), }; -s32 D_80B2C428[] = { - 0x2C27870C, 0x111B082A, 0x002F001C, 0x0100080F, 0x27882D00, 0x180C100F, 0x27892D00, 0x180C1000, +MsgScript D_80B2C428[] = { + /* 0x0000 0x03 */ MSCRIPT_CMD44(0x2787), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x1B, 0x08), + /* 0x0007 0x03 */ MSCRIPT_DEL_ITEM(ITEM_LETTER_TO_KAFEI), + /* 0x000A 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x1C, 0x01, 0x0017 - 0x000F), + /* 0x000F 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2788), + /* 0x0012 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x0015 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0016 0x01 */ MSCRIPT_DONE(), + + /* 0x0017 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2789), + /* 0x001A 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x001D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001E 0x01 */ MSCRIPT_DONE(), }; -s32 D_80B2C448[] = { - 0x2C27870C, 0x111B102A, 0x002F001C, 0x0200080F, 0x27882D00, 0x180C100F, 0x27892D00, 0x180C1000, +MsgScript D_80B2C448[] = { + /* 0x0000 0x03 */ MSCRIPT_CMD44(0x2787), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x1B, 0x10), + /* 0x0007 0x03 */ MSCRIPT_DEL_ITEM(ITEM_LETTER_TO_KAFEI), + /* 0x000A 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x1C, 0x02, 0x0017 - 0x000F), + /* 0x000F 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2788), + /* 0x0012 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x0015 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0016 0x01 */ MSCRIPT_DONE(), + + /* 0x0017 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2789), + /* 0x001A 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x001D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001E 0x01 */ MSCRIPT_DONE(), }; -s32 D_80B2C468[] = { - 0x2C27870C, 0x111B202A, 0x002F001C, 0x0400080F, 0x27882D00, 0x180C100F, 0x27892D00, 0x180C1000, +MsgScript D_80B2C468[] = { + /* 0x0000 0x03 */ MSCRIPT_CMD44(0x2787), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x1B, 0x20), + /* 0x0007 0x03 */ MSCRIPT_DEL_ITEM(ITEM_LETTER_TO_KAFEI), + /* 0x000A 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x1C, 0x04, 0x0017 - 0x000F), + /* 0x000F 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2788), + /* 0x0012 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x0015 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0016 0x01 */ MSCRIPT_DONE(), + + /* 0x0017 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2789), + /* 0x001A 0x03 */ MSCRIPT_NOTEBOOK_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI), + /* 0x001D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001E 0x01 */ MSCRIPT_DONE(), }; -s32 D_80B2C488[] = { 0x2C27A40C, 0x10000000 }; +MsgScript D_80B2C488[] = { + /* 0x0000 0x03 */ MSCRIPT_CMD44(0x27A4), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_DONE(), +}; -s32 D_80B2C490[] = { 0x2C27850C, 0x10000000 }; +MsgScript D_80B2C490[] = { + /* 0x0000 0x03 */ MSCRIPT_CMD44(0x2785), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_DONE(), +}; ActorInit En_Pst_InitVars = { ACTOR_EN_PST, @@ -231,7 +496,7 @@ s32 EnPst_ChooseBehaviour(Actor* thisx, PlayState* play) { return scriptBranch; } -s32* EnPst_GetMsgEventScript(EnPst* this, PlayState* play) { +MsgScript* EnPst_GetMsgEventScript(EnPst* this, PlayState* play) { if (Player_GetMask(play) == PLAYER_MASK_POSTMAN) { return D_80B2C3B8; } @@ -353,7 +618,7 @@ void EnPst_FollowSchedule(EnPst* this, PlayState* play) { } void EnPst_Talk(EnPst* this, PlayState* play) { - if (func_8010BF58(&this->actor, play, this->msgEventScript, this->msgEventCallback, &this->msgEventArg4)) { + if (MsgEvent_RunScript(&this->actor, play, this->msgEventScript, this->msgEventCallback, &this->msgEventArg4)) { if (EnPst_HandleLetterDay1(this) != this->isLetterToKafeiDeposited) { switch (gSaveContext.save.day) { case 1: diff --git a/src/overlays/actors/ovl_En_Pst/z_en_pst.h b/src/overlays/actors/ovl_En_Pst/z_en_pst.h index c3ebd58a8..5294c6842 100644 --- a/src/overlays/actors/ovl_En_Pst/z_en_pst.h +++ b/src/overlays/actors/ovl_En_Pst/z_en_pst.h @@ -15,7 +15,6 @@ typedef enum { struct EnPst; typedef void (*EnPstActionFunc)(struct EnPst*, PlayState*); -typedef s32 (*MsgEventFunc)(Actor*, PlayState*); typedef struct EnPst { /* 0x000 */ Actor actor; @@ -23,14 +22,14 @@ typedef struct EnPst { /* 0x188 */ EnPstActionFunc actionFunc; /* 0x18C */ ColliderCylinder collider; /* 0x1D8 */ u8 scheduleResult; - /* 0x1DC */ s32* msgEventScript; + /* 0x1DC */ MsgScript* msgEventScript; /* 0x1E0 */ s32 msgEventArg4; /* 0x1E4 */ Vec3s jointTable[POSTBOX_LIMB_MAX]; /* 0x1F6 */ Vec3s morphTable[POSTBOX_LIMB_MAX]; /* 0x208 */ u16 stateFlags; /* 0x20A */ UNK_TYPE1 pad20A[4]; /* 0x20E */ s16 behaviour; - /* 0x210 */ MsgEventFunc msgEventCallback; + /* 0x210 */ MsgEventCallback msgEventCallback; /* 0x214 */ s32 unk214; // Set and not used /* 0x218 */ s32 exchangeItemId; /* 0x21C */ s32 isLetterToKafeiDeposited; 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 93a663838..8b43f83ab 100644 --- a/src/overlays/actors/ovl_En_Shn/z_en_shn.c +++ b/src/overlays/actors/ovl_En_Shn/z_en_shn.c @@ -19,37 +19,378 @@ void EnShn_Draw(Actor* thisx, PlayState* play); void func_80AE6A64(EnShn* this, PlayState* play); -// Could be something related to text/dialogue? -static UNK_TYPE D_80AE6F00[] = { - 0x00170800, 0x0B0E09C4, 0x0C0F09C5, 0x0C111708, 0x03018C04, 0x018E1901, 0x860F00FF, 0x1E001300, 0x00011501, - 0x47280012, 0x28001928, 0x002D2800, 0x5D280093, 0x28003319, 0x00472C09, 0xE70C2F00, 0x000C1210, 0x2C09CB0C, - 0x2F00000C, 0x0F09CC0C, 0x0F09CD0C, 0x0500A500, 0xCB00CB2C, 0x09D10C2F, 0x00000C0F, 0x09D20C19, 0xFFE62C09, - 0xD30C2F00, 0x000C0F09, 0xD40C0F09, 0xD50C0500, 0x9200B200, 0xB22C09D9, 0x0C2F0000, 0x0C0F09DA, 0x0C102C09, - 0xE80C2F00, 0x000C0F09, 0xE90C0F09, 0xEA0C0057, 0x04001712, 0x06000C00, 0x0013000C, 0x0C115704, 0x0700000E, - 0x09EB0C12, 0x16101206, 0x00060000, 0x1300060C, 0x07FFEC2C, 0x09EC0C2F, 0x00000C0F, 0x09ED0C0F, 0x09EE0C00, - 0x57040017, 0x1206000C, 0x00001300, 0x0C0C1157, 0x04070000, 0x0E09EF0C, 0x12161012, 0x06000600, 0x00130006, - 0x0C07FFEC, 0x12060004, 0x00001300, 0x040C0700, 0x000E09CE, 0x0C161012, 0x06000200, 0x00130002, 0x0C070000, - 0x0E09D80C, 0x16100C0F, 0x09CF0C1C, 0x05011509, 0x0000100E, 0x09D60C19, 0xFFF10037, 0x40001C2C, 0x09DB0C2F, - 0x00000C0F, 0x09DC0C0F, 0x09DD0C0F, 0x09DE0C0F, 0x09DF0C11, 0x3740102C, 0x09E00C2F, 0x00000C0F, 0x09E10C0F, - 0x09E20C10, 0x00374000, 0x180E09DB, 0x0C0F09DC, 0x0C0F09DD, 0x0C0F09DE, 0x0C0F09DF, 0x0C113740, 0x100E09E0, - 0x0C0F09E1, 0x0C0F09E2, 0x0C100E09, 0xC90C0F09, 0xCA0C100E, 0x09C60C10, 0x001402FF, 0xED0E09C8, 0x0C19FE69 +static MsgScript D_80AE6F00[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x17, 0x08, 0x0010 - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x09C4), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09C5), + /* 0x000C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000D 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x17, 0x08), + /* 0x0010 0x03 */ MSCRIPT_BRANCH_IF_DEKU(0x019F - 0x0013), + /* 0x0013 0x03 */ MSCRIPT_BRANCH_IF_HUMAN(0x01A4 - 0x0016), + /* 0x0016 0x03 */ MSCRIPT_JUMP(0x019F - 0x0019), + /* 0x0019 0x03 */ MSCRIPT_CONTINUE_TEXT(0x00FF), + /* 0x001C 0x09 */ MSCRIPT_BRANCH_ON_ITEMACTION(0x0013, 0x0, 0x013A - 0x0025, 0x016C - 0x0025), + /* 0x0025 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x003A - 0x0028), + /* 0x0028 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x0044 - 0x002B), + /* 0x002B 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x005B - 0x002E), + /* 0x002E 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x008E - 0x0031), + /* 0x0031 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x00C7 - 0x0034), + /* 0x0034 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x006A - 0x0037), + /* 0x0037 0x03 */ MSCRIPT_JUMP(0x0081 - 0x003A), + /* 0x003A 0x03 */ MSCRIPT_CMD44(0x09E7), + /* 0x003D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003E 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0041 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0042 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0043 0x01 */ MSCRIPT_DONE(), + + /* 0x0044 0x03 */ MSCRIPT_CMD44(0x09CB), + /* 0x0047 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0048 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x004B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004C 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09CC), + /* 0x004F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0050 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09CD), + /* 0x0053 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0054 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x0100 - 0x005B, 0x0126 - 0x005B, 0x0126 - 0x005B), + /* 0x005B 0x03 */ MSCRIPT_CMD44(0x09D1), + /* 0x005E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x005F 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0062 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0063 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09D2), + /* 0x0066 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0067 0x03 */ MSCRIPT_JUMP(0x0050 - 0x006A), + + /* 0x006A 0x03 */ MSCRIPT_CMD44(0x09D3), + /* 0x006D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x006E 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0071 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0072 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09D4), + /* 0x0075 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0076 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09D5), + /* 0x0079 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x007A 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x0113 - 0x0081, 0x0133 - 0x0081, 0x0133 - 0x0081), + /* 0x0081 0x03 */ MSCRIPT_CMD44(0x09D9), + /* 0x0084 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0085 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0088 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0089 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09DA), + /* 0x008C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x008D 0x01 */ MSCRIPT_DONE(), + + /* 0x008E 0x03 */ MSCRIPT_CMD44(0x09E8), + /* 0x0091 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0092 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0095 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0096 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09E9), + /* 0x0099 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x009A 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09EA), + /* 0x009D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x009E 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x57, 0x04, 0x00BA - 0x00A3), + /* 0x00A3 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00A4 0x05 */ MSCRIPT_OFFER_ITEM(GI_HEART_PIECE, 0x0), + /* 0x00A9 0x03 */ MSCRIPT_COLLECT_SET(0x000C), + /* 0x00AC 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00AD 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x57, 0x04), + /* 0x00B0 0x03 */ MSCRIPT_CMD07(0x0), + /* 0x00B3 0x03 */ MSCRIPT_BEGIN_TEXT(0x09EB), + /* 0x00B6 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00B7 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00B8 0x01 */ MSCRIPT_CMD22(), + /* 0x00B9 0x01 */ MSCRIPT_DONE(), + + /* 0x00BA 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00BB 0x05 */ MSCRIPT_OFFER_ITEM(GI_RUPEE_SILVER, 0x0), + /* 0x00C0 0x03 */ MSCRIPT_COLLECT_SET(0x0006), + /* 0x00C3 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00C4 0x03 */ MSCRIPT_CMD07(0x00B3 - 0x00C7), + + /* 0x00C7 0x03 */ MSCRIPT_CMD44(0x09EC), + /* 0x00CA 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00CB 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x00CE 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00CF 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09ED), + /* 0x00D2 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00D3 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09EE), + /* 0x00D6 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00D7 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x57, 0x04, 0x00F3 - 0x00DC), + /* 0x00DC 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00DD 0x05 */ MSCRIPT_OFFER_ITEM(GI_HEART_PIECE, 0x0), + /* 0x00E2 0x03 */ MSCRIPT_COLLECT_SET(0x000C), + /* 0x00E5 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00E6 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x57, 0x04), + /* 0x00E9 0x03 */ MSCRIPT_CMD07(0x0), + /* 0x00EC 0x03 */ MSCRIPT_BEGIN_TEXT(0x09EF), + /* 0x00EF 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00F0 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00F1 0x01 */ MSCRIPT_CMD22(), + /* 0x00F2 0x01 */ MSCRIPT_DONE(), + + /* 0x00F3 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00F4 0x05 */ MSCRIPT_OFFER_ITEM(GI_RUPEE_SILVER, 0x0), + /* 0x00F9 0x03 */ MSCRIPT_COLLECT_SET(0x0006), + /* 0x00FC 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00FD 0x03 */ MSCRIPT_CMD07(0x00EC - 0x0100), + + /* 0x0100 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0101 0x05 */ MSCRIPT_OFFER_ITEM(GI_RUPEE_RED, 0x0), + /* 0x0106 0x03 */ MSCRIPT_COLLECT_SET(0x0004), + /* 0x0109 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x010A 0x03 */ MSCRIPT_CMD07(0x0), + /* 0x010D 0x03 */ MSCRIPT_BEGIN_TEXT(0x09CE), + /* 0x0110 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0111 0x01 */ MSCRIPT_CMD22(), + /* 0x0112 0x01 */ MSCRIPT_DONE(), + + /* 0x0113 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0114 0x05 */ MSCRIPT_OFFER_ITEM(GI_RUPEE_BLUE, 0x0), + /* 0x0119 0x03 */ MSCRIPT_COLLECT_SET(0x0002), + /* 0x011C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x011D 0x03 */ MSCRIPT_CMD07(0x0), + /* 0x0120 0x03 */ MSCRIPT_BEGIN_TEXT(0x09D8), + /* 0x0123 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0124 0x01 */ MSCRIPT_CMD22(), + /* 0x0125 0x01 */ MSCRIPT_DONE(), + + /* 0x0126 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0127 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09CF), + /* 0x012A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x012B 0x03 */ MSCRIPT_SET_EVENT_INF(0x05, 0x01), + /* 0x012E 0x01 */ MSCRIPT_PAUSE(), + /* 0x012F 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0132 0x01 */ MSCRIPT_DONE(), + + /* 0x0133 0x03 */ MSCRIPT_BEGIN_TEXT(0x09D6), + /* 0x0136 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0137 0x03 */ MSCRIPT_JUMP(0x012B - 0x013A), + + /* 0x013A 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x37, 0x40, 0x015B - 0x013F), + /* 0x013F 0x03 */ MSCRIPT_CMD44(0x09DB), + /* 0x0142 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0143 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0146 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0147 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09DC), + /* 0x014A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x014B 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09DD), + /* 0x014E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x014F 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09DE), + /* 0x0152 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0153 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09DF), + /* 0x0156 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0157 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x37, 0x40), + /* 0x015A 0x01 */ MSCRIPT_DONE(), + + /* 0x015B 0x03 */ MSCRIPT_CMD44(0x09E0), + /* 0x015E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x015F 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0162 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0163 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09E1), + /* 0x0166 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0167 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09E2), + /* 0x016A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x016B 0x01 */ MSCRIPT_DONE(), + + /* 0x016C 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x37, 0x40, 0x0189 - 0x0171), + /* 0x0171 0x03 */ MSCRIPT_BEGIN_TEXT(0x09DB), + /* 0x0174 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0175 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09DC), + /* 0x0178 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0179 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09DD), + /* 0x017C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x017D 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09DE), + /* 0x0180 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0181 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09DF), + /* 0x0184 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0185 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x37, 0x40), + /* 0x0188 0x01 */ MSCRIPT_DONE(), + + /* 0x0189 0x03 */ MSCRIPT_BEGIN_TEXT(0x09E0), + /* 0x018C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x018D 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09E1), + /* 0x0190 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0191 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09E2), + /* 0x0194 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0195 0x01 */ MSCRIPT_DONE(), + + /* 0x0196 0x03 */ MSCRIPT_BEGIN_TEXT(0x09C9), + /* 0x0199 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x019A 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09CA), + /* 0x019D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x019E 0x01 */ MSCRIPT_DONE(), + + /* 0x019F 0x03 */ MSCRIPT_BEGIN_TEXT(0x09C6), + /* 0x01A2 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x01A3 0x01 */ MSCRIPT_DONE(), + + /* 0x01A4 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x14, 0x02, 0x0196 - 0x01A9), + /* 0x01A9 0x03 */ MSCRIPT_BEGIN_TEXT(0x09C8), + /* 0x01AC 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x01AD 0x03 */ MSCRIPT_JUMP(0x0019 - 0x01B0), }; -static UNK_TYPE D_80AE70B0[] = { 0x0E09D00C, 0x16100000 }; - -static UNK_TYPE D_80AE70B8[] = { - 0x28001228, 0x00152800, 0x28280055, 0x28008A28, 0x002D1900, 0x402C09E7, 0x0C12102C, 0x09CB2F00, 0x000C0F09, - 0xCC0C0F09, 0xCD0C0500, 0xA000C600, 0xC62C09D1, 0x2F00000C, 0x0F09D20C, 0x19FFE72C, 0x09D32F00, 0x000C0F09, - 0xD40C0F09, 0xD50C0500, 0x8F00AF00, 0xAF2C09D9, 0x2F00000C, 0x0F09DA0C, 0x102C09E8, 0x2F00000C, 0x0F09E90C, - 0x0F09EA0C, 0x00570400, 0x17120600, 0x0C000013, 0x000C0C11, 0x57040700, 0x000E09EB, 0x0C121610, 0x12060006, - 0x00001300, 0x060C07FF, 0xEC2C09EC, 0x2F00000C, 0x0F09ED0C, 0x0F09EE0C, 0x00570800, 0x17120600, 0x0C000013, - 0x000C0C11, 0x57080700, 0x000E09EF, 0x0C121610, 0x12060006, 0x00001300, 0x060C07FF, 0xEC120600, 0x04000013, - 0x00040C07, 0x00000E09, 0xCE0C1610, 0x12060002, 0x00001300, 0x020C0700, 0x000E09D8, 0x0C16100C, 0x0F09CF0C, - 0x1C050115, 0x09000010, 0x0E09D60C, 0x19FFF100, +static MsgScript D_80AE70B0[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x09D0), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_CMD22(), + /* 0x0005 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80AE71C4[] = { 0x00374000, 0x1C2C09DB, 0x0C2F0000, 0x0C0F09DC, 0x0C0F09DD, 0x0C0F09DE, 0x0C0F09DF, - 0x0C113740, 0x102C09E0, 0x0C2F0000, 0x0C0F09E1, 0x0C0F09E2, 0x0C100000 }; +static MsgScript D_80AE70B8[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x0015 - 0x0003), + /* 0x0003 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x001B - 0x0006), + /* 0x0006 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x0031 - 0x0009), + /* 0x0009 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x0061 - 0x000C), + /* 0x000C 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x0099 - 0x000F), + /* 0x000F 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x003F - 0x0012), + /* 0x0012 0x03 */ MSCRIPT_JUMP(0x0055 - 0x0015), + /* 0x0015 0x03 */ MSCRIPT_CMD44(0x09E7), + /* 0x0018 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0019 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x001A 0x01 */ MSCRIPT_DONE(), + + /* 0x001B 0x03 */ MSCRIPT_CMD44(0x09CB), + /* 0x001E 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0021 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0022 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09CC), + /* 0x0025 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0026 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09CD), + /* 0x0029 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002A 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x00D1 - 0x0031, 0x00F7 - 0x0031, 0x00F7 - 0x0031), + /* 0x0031 0x03 */ MSCRIPT_CMD44(0x09D1), + /* 0x0034 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0037 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0038 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09D2), + /* 0x003B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003C 0x03 */ MSCRIPT_JUMP(0x0026 - 0x003F), + + /* 0x003F 0x03 */ MSCRIPT_CMD44(0x09D3), + /* 0x0042 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0045 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0046 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09D4), + /* 0x0049 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004A 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09D5), + /* 0x004D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004E 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x00E4 - 0x0055, 0x0104 - 0x0055, 0x0104 - 0x0055), + /* 0x0055 0x03 */ MSCRIPT_CMD44(0x09D9), + /* 0x0058 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x005B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x005C 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09DA), + /* 0x005F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0060 0x01 */ MSCRIPT_DONE(), + + /* 0x0061 0x03 */ MSCRIPT_CMD44(0x09E8), + /* 0x0064 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0067 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0068 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09E9), + /* 0x006B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x006C 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09EA), + /* 0x006F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0070 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x57, 0x04, 0x008C - 0x0075), + /* 0x0075 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0076 0x05 */ MSCRIPT_OFFER_ITEM(GI_HEART_PIECE, 0x0), + /* 0x007B 0x03 */ MSCRIPT_COLLECT_SET(0x000C), + /* 0x007E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x007F 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x57, 0x04), + /* 0x0082 0x03 */ MSCRIPT_CMD07(0x0), + /* 0x0085 0x03 */ MSCRIPT_BEGIN_TEXT(0x09EB), + /* 0x0088 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0089 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x008A 0x01 */ MSCRIPT_CMD22(), + /* 0x008B 0x01 */ MSCRIPT_DONE(), + + /* 0x008C 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x008D 0x05 */ MSCRIPT_OFFER_ITEM(GI_RUPEE_SILVER, 0x0), + /* 0x0092 0x03 */ MSCRIPT_COLLECT_SET(0x0006), + /* 0x0095 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0096 0x03 */ MSCRIPT_CMD07(0x0085 - 0x0099), + + /* 0x0099 0x03 */ MSCRIPT_CMD44(0x09EC), + /* 0x009C 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x009F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00A0 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09ED), + /* 0x00A3 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00A4 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09EE), + /* 0x00A7 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00A8 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x57, 0x08, 0x00C4 - 0x00AD), + /* 0x00AD 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00AE 0x05 */ MSCRIPT_OFFER_ITEM(GI_HEART_PIECE, 0x0), + /* 0x00B3 0x03 */ MSCRIPT_COLLECT_SET(0x000C), + /* 0x00B6 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00B7 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x57, 0x08), + /* 0x00BA 0x03 */ MSCRIPT_CMD07(0x0), + /* 0x00BD 0x03 */ MSCRIPT_BEGIN_TEXT(0x09EF), + /* 0x00C0 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00C1 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00C2 0x01 */ MSCRIPT_CMD22(), + /* 0x00C3 0x01 */ MSCRIPT_DONE(), + + /* 0x00C4 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00C5 0x05 */ MSCRIPT_OFFER_ITEM(GI_RUPEE_SILVER, 0x0), + /* 0x00CA 0x03 */ MSCRIPT_COLLECT_SET(0x0006), + /* 0x00CD 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00CE 0x03 */ MSCRIPT_CMD07(0x00BD - 0x00D1), + + /* 0x00D1 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00D2 0x05 */ MSCRIPT_OFFER_ITEM(GI_RUPEE_RED, 0x0), + /* 0x00D7 0x03 */ MSCRIPT_COLLECT_SET(0x0004), + /* 0x00DA 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00DB 0x03 */ MSCRIPT_CMD07(0x0), + /* 0x00DE 0x03 */ MSCRIPT_BEGIN_TEXT(0x09CE), + /* 0x00E1 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00E2 0x01 */ MSCRIPT_CMD22(), + /* 0x00E3 0x01 */ MSCRIPT_DONE(), + + /* 0x00E4 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x00E5 0x05 */ MSCRIPT_OFFER_ITEM(GI_RUPEE_BLUE, 0x0), + /* 0x00EA 0x03 */ MSCRIPT_COLLECT_SET(0x0002), + /* 0x00ED 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00EE 0x03 */ MSCRIPT_CMD07(0x0), + /* 0x00F1 0x03 */ MSCRIPT_BEGIN_TEXT(0x09D8), + /* 0x00F4 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00F5 0x01 */ MSCRIPT_CMD22(), + /* 0x00F6 0x01 */ MSCRIPT_DONE(), + + /* 0x00F7 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00F8 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09CF), + /* 0x00FB 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x00FC 0x03 */ MSCRIPT_SET_EVENT_INF(0x05, 0x01), + /* 0x00FF 0x01 */ MSCRIPT_PAUSE(), + /* 0x0100 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0103 0x01 */ MSCRIPT_DONE(), + + /* 0x0104 0x03 */ MSCRIPT_BEGIN_TEXT(0x09D6), + /* 0x0107 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0108 0x03 */ MSCRIPT_JUMP(0x00FC - 0x010B), +}; + +static MsgScript D_80AE71C4[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x37, 0x40, 0x0021 - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_CMD44(0x09DB), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x000C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000D 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09DC), + /* 0x0010 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0011 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09DD), + /* 0x0014 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0015 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09DE), + /* 0x0018 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0019 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09DF), + /* 0x001C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001D 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x37, 0x40), + /* 0x0020 0x01 */ MSCRIPT_DONE(), + + /* 0x0021 0x03 */ MSCRIPT_CMD44(0x09E0), + /* 0x0024 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0025 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0028 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0029 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09E1), + /* 0x002C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002D 0x03 */ MSCRIPT_CONTINUE_TEXT(0x09E2), + /* 0x0030 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0031 0x01 */ MSCRIPT_DONE(), +}; ActorInit En_Shn_InitVars = { ACTOR_EN_SHN, @@ -271,18 +612,18 @@ s32 func_80AE6704(Actor* thisx, PlayState* play) { return ret; } -UNK_TYPE* func_80AE6880(EnShn* this, PlayState* play) { +MsgScript* func_80AE6880(EnShn* this, PlayState* play) { if (this->unk_2BE != 0) { return D_80AE70B0; } if (this->unk_1D8 & 0x80) { - this->unk_2D8 = func_80AE6704; + this->msgEventCallback = func_80AE6704; return D_80AE70B8; } if (this->unk_1D8 & 0x100) { return D_80AE71C4; } - this->unk_2D8 = func_80AE6704; + this->msgEventCallback = func_80AE6704; return D_80AE6F00; } @@ -327,7 +668,7 @@ void func_80AE6A64(EnShn* this, PlayState* play) { Vec3f playerPos; Vec3f shnPos; - if (func_8010BF58(&this->actor, play, this->unk_1DC, this->unk_2D8, &this->unk_1E0)) { + if (MsgEvent_RunScript(&this->actor, play, this->unk_1DC, this->msgEventCallback, &this->unk_1E0)) { SubS_UpdateFlags(&this->unk_1D8, 3, 7); this->unk_1D8 &= ~8; this->unk_1D8 |= 0x20; @@ -358,7 +699,7 @@ void EnShn_Init(Actor* thisx, PlayState* play) { this->actor.targetMode = 6; Actor_SetScale(&this->actor, 0.01f); this->unk_2E0 = 0; - this->unk_2D8 = 0; + this->msgEventCallback = NULL; this->unk_1D8 = 0; if (gSaveContext.save.entrance != ENTRANCE(TOURIST_INFORMATION, 2)) { SubS_UpdateFlags(&this->unk_1D8, 3, 7); 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 bb4740142..941c4fc11 100644 --- a/src/overlays/actors/ovl_En_Shn/z_en_shn.h +++ b/src/overlays/actors/ovl_En_Shn/z_en_shn.h @@ -7,7 +7,6 @@ struct EnShn; typedef void (*EnShnActionFunc)(struct EnShn*, PlayState*); -typedef s32 (*MsgEventFunc)(Actor*, PlayState*); typedef struct EnShn { /* 0x000 */ Actor actor; @@ -16,7 +15,7 @@ typedef struct EnShn { /* 0x18C */ UNK_TYPE1 pad_18C[0x4C]; /* 0x1D8 */ u16 unk_1D8; /* 0x1DA */ u16 unk_1DA; - /* 0x1DC */ UNK_TYPE* unk_1DC; + /* 0x1DC */ MsgScript* unk_1DC; /* 0x1E0 */ s32 unk_1E0; /* 0x1E4 */ Player* shnPlayerRef; /* 0x1E8 */ Vec3f unk_1E8; @@ -35,7 +34,7 @@ typedef struct EnShn { /* 0x2CC */ f32 playSpeed; /* 0x2D0 */ f32 unk_2D0; /* 0x2D4 */ f32 unk_2D4; - /* 0x2D8 */ MsgEventFunc unk_2D8; + /* 0x2D8 */ MsgEventCallback msgEventCallback; /* 0x2DC */ s32 prevTalkState; /* 0x2E0 */ s32 unk_2E0; /* 0x2E4 */ s32 unk_2E4; 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 1f97e5c57..4f514109d 100644 --- a/src/overlays/actors/ovl_En_Tab/z_en_tab.c +++ b/src/overlays/actors/ovl_En_Tab/z_en_tab.c @@ -38,32 +38,194 @@ static u8 D_80BE18D0[] = { /* 0x41 */ SCHEDULE_CMD_RET_NONE(), }; -s32 D_80BE1914[] = { - 0x003A0200, 0x080E2AF9, 0x0C113A02, 0x100E2AFA, 0x0C150900, 0x000E2AFB, - 0x0C003401, 0x00090F2A, 0xFD0C0F2A, 0xFE0C100F, 0x2AFC0C10, +MsgScript D_80BE1914[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x3A, 0x02, 0x000D - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AF9), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x3A, 0x02), + /* 0x000C 0x01 */ MSCRIPT_DONE(), + + /* 0x000D 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AFA), + /* 0x0010 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0011 0x01 */ MSCRIPT_PAUSE(), + /* 0x0012 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0015 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AFB), + /* 0x0018 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0019 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x34, 0x01, 0x0027 - 0x001E), + /* 0x001E 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2AFD), + /* 0x0021 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0022 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2AFE), + /* 0x0025 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0026 0x01 */ MSCRIPT_DONE(), + + /* 0x0027 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2AFC), + /* 0x002A 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002B 0x01 */ MSCRIPT_DONE(), }; -s32 D_80BE1940[] = { - 0x003F0400, 0x080E2B3D, 0x0C113F04, 0x100E2B3E, 0x0C0F2AFA, 0x0C150900, - 0x000E2AFB, 0x0C003401, 0x00090F2A, 0xFD0C0F2A, 0xFE0C100F, 0x2AFC0C10, +MsgScript D_80BE1940[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x3F, 0x04, 0x000D - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B3D), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x3F, 0x04), + /* 0x000C 0x01 */ MSCRIPT_DONE(), + + /* 0x000D 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B3E), + /* 0x0010 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0011 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2AFA), + /* 0x0014 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0015 0x01 */ MSCRIPT_PAUSE(), + /* 0x0016 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0019 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AFB), + /* 0x001C 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001D 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x34, 0x01, 0x002B - 0x0022), + /* 0x0022 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2AFD), + /* 0x0025 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0026 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2AFE), + /* 0x0029 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002A 0x01 */ MSCRIPT_DONE(), + + /* 0x002B 0x03 */ MSCRIPT_CONTINUE_TEXT(0x2AFC), + /* 0x002E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x002F 0x01 */ MSCRIPT_DONE(), }; -s32 D_80BE1970[] = { 0x003A0100, 0x080E2AFF, 0x0C113A01, 0x100E2B00, 0x0C100000 }; +MsgScript D_80BE1970[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x3A, 0x01, 0x000D - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x2AFF), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x3A, 0x01), + /* 0x000C 0x01 */ MSCRIPT_DONE(), -s32 D_80BE1984[] = { 0x00500100, 0x080E2B3F, 0x0C115001, 0x100E2B40, 0x0C100000 }; - -s32 D_80BE1998[] = { 0x0E2B090C, 0x10000000 }; - -s32 D_80BE19A0[] = { - 0x0E2B0A0C, 0x05004E00, 0x00004E30, 0x2800050E, 0x2B0E0C10, 0x0E2B0B0C, 0x05000000, 0x08001008, 0x00140026, - 0x19000E08, 0x00C8000F, 0x19000631, 0x0E2B0D0C, 0x10320E2B, 0x0C0C1030, 0x1214FF38, 0x06009100, 0x00130091, - 0x0C103012, 0x14FFEC06, 0x00920000, 0x1300920C, 0x10300034, 0x0100050E, 0x2B0F0C10, 0x0E2B110C, 0x10000000, + /* 0x000D 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B00), + /* 0x0010 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0011 0x01 */ MSCRIPT_DONE(), }; -s32 D_80BE1A0C[] = { - 0x0E2B0A0C, 0x05004E00, 0x00004E30, 0x2800050E, 0x2B0E0C10, 0x0E2B0B0C, 0x05000000, 0x08001008, 0x00140026, - 0x19000E08, 0x00C8000F, 0x19000631, 0x0E2B0D0C, 0x10320E2B, 0x0C0C1030, 0x1214FF38, 0x06009100, 0x00130091, - 0x0C103012, 0x14FFEC06, 0x00920000, 0x1300920C, 0x10300034, 0x0100050E, 0x2B100C10, 0x0E2B110C, 0x10000000, +MsgScript D_80BE1984[] = { + /* 0x0000 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x50, 0x01, 0x000D - 0x0005), + /* 0x0005 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B3F), + /* 0x0008 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0009 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x50, 0x01), + /* 0x000C 0x01 */ MSCRIPT_DONE(), + + /* 0x000D 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B40), + /* 0x0010 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0011 0x01 */ MSCRIPT_DONE(), +}; + +MsgScript D_80BE1998[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B09), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_DONE(), +}; + +MsgScript D_80BE19A0[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B0A), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x0059 - 0x000B, 0x0, 0x0059 - 0x000B), + /* 0x000B 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x000C 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x0014 - 0x000F), + /* 0x000F 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B0E), + /* 0x0012 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0013 0x01 */ MSCRIPT_DONE(), + + /* 0x0014 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B0B), + /* 0x0017 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0018 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x0, 0x0027 - 0x001F, 0x002F - 0x001F), + /* 0x001F 0x05 */ MSCRIPT_BRANCH_ON_RUPEES(0x0014, 0x004A - 0x0024), + /* 0x0024 0x03 */ MSCRIPT_JUMP(0x0035 - 0x0027), + /* 0x0027 0x05 */ MSCRIPT_BRANCH_ON_RUPEES(0x00C8, 0x003B - 0x002C), + /* 0x002C 0x03 */ MSCRIPT_JUMP(0x0035 - 0x002F), + /* 0x002F 0x01 */ MSCRIPT_PLAY_CANCEL(), + /* 0x0030 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B0D), + /* 0x0033 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0034 0x01 */ MSCRIPT_DONE(), + + /* 0x0035 0x01 */ MSCRIPT_PLAY_ERROR(), + /* 0x0036 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B0C), + /* 0x0039 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003A 0x01 */ MSCRIPT_DONE(), + + /* 0x003B 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x003C 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x003D 0x03 */ MSCRIPT_CHANGE_RUPEES(0xFF38), + /* 0x0040 0x05 */ MSCRIPT_OFFER_ITEM(GI_CHATEAU, 0x0), + /* 0x0045 0x03 */ MSCRIPT_COLLECT_SET(0x0091), + /* 0x0048 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0049 0x01 */ MSCRIPT_DONE(), + + /* 0x004A 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x004B 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x004C 0x03 */ MSCRIPT_CHANGE_RUPEES(0xFFEC), + /* 0x004F 0x05 */ MSCRIPT_OFFER_ITEM(GI_MILK, 0x0), + /* 0x0054 0x03 */ MSCRIPT_COLLECT_SET(0x0092), + /* 0x0057 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0058 0x01 */ MSCRIPT_DONE(), + + /* 0x0059 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x005A 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x34, 0x01, 0x0064 - 0x005F), + /* 0x005F 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B0F), + /* 0x0062 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0063 0x01 */ MSCRIPT_DONE(), + + /* 0x0064 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B11), + /* 0x0067 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0068 0x01 */ MSCRIPT_DONE(), +}; + +MsgScript D_80BE1A0C[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B0A), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x0059 - 0x000B, 0x0, 0x0059 - 0x000B), + /* 0x000B 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x000C 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_2(0x0014 - 0x000F), + /* 0x000F 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B0E), + /* 0x0012 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0013 0x01 */ MSCRIPT_DONE(), + + /* 0x0014 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B0B), + /* 0x0017 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0018 0x07 */ MSCRIPT_BRANCH_ON_TEXT_CHOICE(0x0, 0x0027 - 0x001F, 0x002F - 0x001F), + /* 0x001F 0x05 */ MSCRIPT_BRANCH_ON_RUPEES(0x0014, 0x004A - 0x0024), + /* 0x0024 0x03 */ MSCRIPT_JUMP(0x0035 - 0x0027), + /* 0x0027 0x05 */ MSCRIPT_BRANCH_ON_RUPEES(0x00C8, 0x003B - 0x002C), + /* 0x002C 0x03 */ MSCRIPT_JUMP(0x0035 - 0x002F), + /* 0x002F 0x01 */ MSCRIPT_PLAY_CANCEL(), + /* 0x0030 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B0D), + /* 0x0033 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0034 0x01 */ MSCRIPT_DONE(), + + /* 0x0035 0x01 */ MSCRIPT_PLAY_ERROR(), + /* 0x0036 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B0C), + /* 0x0039 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003A 0x01 */ MSCRIPT_DONE(), + + /* 0x003B 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x003C 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x003D 0x03 */ MSCRIPT_CHANGE_RUPEES(0xFF38), + /* 0x0040 0x05 */ MSCRIPT_OFFER_ITEM(GI_CHATEAU, 0x0), + /* 0x0045 0x03 */ MSCRIPT_COLLECT_SET(0x0091), + /* 0x0048 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0049 0x01 */ MSCRIPT_DONE(), + + /* 0x004A 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x004B 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x004C 0x03 */ MSCRIPT_CHANGE_RUPEES(0xFFEC), + /* 0x004F 0x05 */ MSCRIPT_OFFER_ITEM(GI_MILK, 0x0), + /* 0x0054 0x03 */ MSCRIPT_COLLECT_SET(0x0092), + /* 0x0057 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0058 0x01 */ MSCRIPT_DONE(), + + /* 0x0059 0x01 */ MSCRIPT_PLAY_DECIDE(), + /* 0x005A 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x34, 0x01, 0x0064 - 0x005F), + /* 0x005F 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B10), + /* 0x0062 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0063 0x01 */ MSCRIPT_DONE(), + + /* 0x0064 0x03 */ MSCRIPT_BEGIN_TEXT(0x2B11), + /* 0x0067 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0068 0x01 */ MSCRIPT_DONE(), }; ActorInit En_Tab_InitVars = { @@ -313,12 +475,12 @@ s32 func_80BE0C04(EnTab* this, Actor* actor, f32 arg2) { return ret; } -s32 func_80BE0D38(EnTab* this, PlayState* play) { +s32 func_80BE0D38(Actor* thisx, PlayState* play) { return Inventory_HasEmptyBottle(); } -s32 func_80BE0D60(EnTab* this, PlayState* play) { - s32 pad; +s32 func_80BE0D60(Actor* thisx, PlayState* play) { + EnTab* this = THIS; s32 ret = false; this->unk_320++; @@ -332,7 +494,7 @@ s32 func_80BE0D60(EnTab* this, PlayState* play) { return ret; } -s32* func_80BE0E04(EnTab* this, PlayState* play) { +MsgScript* func_80BE0E04(EnTab* this, PlayState* play) { Player* player = GET_PLAYER(play); if (player->transformation == PLAYER_FORM_DEKU) { @@ -493,7 +655,7 @@ void func_80BE1348(EnTab* this, PlayState* play) { Vec3f sp40; Vec3f sp34; - if (func_8010BF58(&this->actor, play, func_80BE0E04(this, play), this->unk_328, &this->unk_1DC)) { + if (MsgEvent_RunScript(&this->actor, play, func_80BE0E04(this, play), this->unk_328, &this->unk_1DC)) { SubS_UpdateFlags(&this->unk_2FC, 3, 7); this->unk_2FC &= ~8; this->unk_2FC |= 0x40; diff --git a/src/overlays/actors/ovl_En_Tab/z_en_tab.h b/src/overlays/actors/ovl_En_Tab/z_en_tab.h index 6bb0503a7..e93cb5802 100644 --- a/src/overlays/actors/ovl_En_Tab/z_en_tab.h +++ b/src/overlays/actors/ovl_En_Tab/z_en_tab.h @@ -7,7 +7,6 @@ struct EnTab; typedef void (*EnTabActionFunc)(struct EnTab*, PlayState*); -typedef s32 (*EnTabUnkFunc)(struct EnTab*, PlayState*); typedef struct EnTab { /* 0x000 */ Actor actor; @@ -38,7 +37,7 @@ typedef struct EnTab { /* 0x320 */ s16 unk_320; /* 0x322 */ s16 unk_322; /* 0x324 */ s16 unk_324; - /* 0x328 */ EnTabUnkFunc unk_328; + /* 0x328 */ MsgEventCallback unk_328; /* 0x32C */ s32 unk_32C; /* 0x330 */ UNK_TYPE1 unk330[4]; /* 0x334 */ s32 prevTalkState; diff --git a/src/overlays/actors/ovl_En_Tru/z_en_tru.c b/src/overlays/actors/ovl_En_Tru/z_en_tru.c index 895d1d406..7122189bf 100644 --- a/src/overlays/actors/ovl_En_Tru/z_en_tru.c +++ b/src/overlays/actors/ovl_En_Tru/z_en_tru.c @@ -44,36 +44,99 @@ typedef enum { /* 0x10 */ KOUME_ANIM_MAX } KoumeAnimation; -static UNK_TYPE D_80A88910[] = { - 0x0E08520C, - 0x16100000, +static MsgScript D_80A88910[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x0852), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_CMD22(), + /* 0x0005 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80A88918[] = { - 0x0900000E, - 0x08630C12, - 0x16100000, +static MsgScript D_80A88918[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0003 0x03 */ MSCRIPT_BEGIN_TEXT(0x0863), + /* 0x0006 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0007 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0008 0x01 */ MSCRIPT_CMD22(), + /* 0x0009 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80A88924[] = { - 0x0E08660C, - 0x10000000, +static MsgScript D_80A88924[] = { + /* 0x0000 0x03 */ MSCRIPT_BEGIN_TEXT(0x0866), + /* 0x0003 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0004 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80A8892C[] = { - 0x09000004, 0x00050E08, 0x650C1000, 0x1010000B, 0x0E08530C, 0x0F08540C, 0x1900040E, 0x08560C11, - 0x10100E00, 0xFF2B0000, 0x001E0027, 0x2C08640C, 0x2F00000C, 0x15090000, 0x0E08570C, 0x15090000, - 0x0E08580C, 0x15090000, 0x12102C08, 0x550C2F00, 0x000C100E, 0x08550C10, +static MsgScript D_80A8892C[] = { + /* 0x0000 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0003 0x03 */ MSCRIPT_BRANCH_IF_HUMAN(0x000B - 0x0006), + /* 0x0006 0x03 */ MSCRIPT_BEGIN_TEXT(0x0865), + /* 0x0009 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000A 0x01 */ MSCRIPT_DONE(), + + /* 0x000B 0x05 */ MSCRIPT_BRANCH_ON_WEEK_EVENT_REG(0x10, 0x10, 0x001B - 0x0010), + /* 0x0010 0x03 */ MSCRIPT_BEGIN_TEXT(0x0853), + /* 0x0013 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0014 0x03 */ MSCRIPT_CONTINUE_TEXT(0x0854), + /* 0x0017 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0018 0x03 */ MSCRIPT_JUMP(0x001F - 0x001B), + /* 0x001B 0x03 */ MSCRIPT_BEGIN_TEXT(0x0856), + /* 0x001E 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001F 0x03 */ MSCRIPT_WEEK_EVENT_REG_SET(0x10, 0x10), + /* 0x0022 0x03 */ MSCRIPT_BEGIN_TEXT(0x00FF), + /* 0x0025 0x07 */ MSCRIPT_BRANCH_ON_CALLBACK(0x0, 0x004A - 0x002C, 0x0053 - 0x002C), + /* 0x002C 0x03 */ MSCRIPT_CMD44(0x0864), + /* 0x002F 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0030 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0033 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0034 0x01 */ MSCRIPT_PAUSE(), + /* 0x0035 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0038 0x03 */ MSCRIPT_BEGIN_TEXT(0x0857), + /* 0x003B 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x003C 0x01 */ MSCRIPT_PAUSE(), + /* 0x003D 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0040 0x03 */ MSCRIPT_BEGIN_TEXT(0x0858), + /* 0x0043 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0044 0x01 */ MSCRIPT_PAUSE(), + /* 0x0045 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0048 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x0049 0x01 */ MSCRIPT_DONE(), + + /* 0x004A 0x03 */ MSCRIPT_CMD44(0x0855), + /* 0x004D 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x004E 0x03 */ MSCRIPT_JUMP_3(0x0), + /* 0x0051 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0052 0x01 */ MSCRIPT_DONE(), + + /* 0x0053 0x03 */ MSCRIPT_BEGIN_TEXT(0x0855), + /* 0x0056 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0057 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80A88984[] = { - 0x2CFFFF09, 0x00000E08, 0x640C1509, 0x00000E08, 0x570C1509, 0x00000E08, 0x580C1509, 0x00001210, +static MsgScript D_80A88984[] = { + /* 0x0000 0x03 */ MSCRIPT_CMD44(0xFFFF), + /* 0x0003 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0006 0x03 */ MSCRIPT_BEGIN_TEXT(0x0864), + /* 0x0009 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000A 0x01 */ MSCRIPT_PAUSE(), + /* 0x000B 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x000E 0x03 */ MSCRIPT_BEGIN_TEXT(0x0857), + /* 0x0011 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x0012 0x01 */ MSCRIPT_PAUSE(), + /* 0x0013 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0016 0x03 */ MSCRIPT_BEGIN_TEXT(0x0858), + /* 0x0019 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x001A 0x01 */ MSCRIPT_PAUSE(), + /* 0x001B 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x001E 0x01 */ MSCRIPT_CLOSE_TEXT(), + /* 0x001F 0x01 */ MSCRIPT_DONE(), }; -static UNK_TYPE D_80A889A4[] = { - 0x2CFFFF09, - 0x00000E08, - 0x550C1000, +static MsgScript D_80A889A4[] = { + /* 0x0000 0x03 */ MSCRIPT_CMD44(0xFFFF), + /* 0x0003 0x03 */ MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL(0x0), + /* 0x0006 0x03 */ MSCRIPT_BEGIN_TEXT(0x0855), + /* 0x0009 0x01 */ MSCRIPT_AWAIT_TEXT(), + /* 0x000A 0x01 */ MSCRIPT_DONE(), }; ActorInit En_Tru_InitVars = { @@ -652,7 +715,7 @@ s32 func_80A86DB8(EnTru* this) { return false; } -UNK_TYPE* func_80A871E0(EnTru* this, PlayState* play) { +MsgScript* func_80A871E0(EnTru* this, PlayState* play) { if (this->unk_34E & 0x2000) { if (this->unk_38C == 35) { this->unk_390 = 1; @@ -1097,7 +1160,7 @@ void func_80A87FD0(EnTru* this, PlayState* play) { void func_80A881E0(EnTru* this, PlayState* play) { Player* player = GET_PLAYER(play); - if (func_8010BF58(&this->actor, play, this->unk_354, this->unk_378, &this->unk_1E8)) { + if (MsgEvent_RunScript(&this->actor, play, this->unk_354, this->unk_378, &this->unk_1E8)) { if (player->transformation != PLAYER_FORM_HUMAN) { this->unk_34E |= 0x80; } diff --git a/src/overlays/actors/ovl_En_Tru/z_en_tru.h b/src/overlays/actors/ovl_En_Tru/z_en_tru.h index e7c06e127..df6c9ad86 100644 --- a/src/overlays/actors/ovl_En_Tru/z_en_tru.h +++ b/src/overlays/actors/ovl_En_Tru/z_en_tru.h @@ -7,7 +7,6 @@ struct EnTru; typedef void (*EnTruActionFunc)(struct EnTru*, PlayState*); -typedef s32 (*EnTruUnkFunc)(Actor*, PlayState*); #define ENTRU_GET_PATH_INDEX(thisx) ((thisx)->params & 0xFF) @@ -38,7 +37,7 @@ typedef struct EnTru { /* 0x2AC */ Vec3s morphTable[KOUME_LIMB_MAX]; /* 0x34E */ u16 unk_34E; /* 0x350 */ UNK_TYPE1 unk350[0x4]; - /* 0x354 */ s32* unk_354; + /* 0x354 */ MsgScript* unk_354; /* 0x358 */ f32 playSpeed; /* 0x35C */ f32 unk_35C; /* 0x360 */ s16 unk_360; @@ -52,7 +51,7 @@ typedef struct EnTru { /* 0x370 */ s16 unk_370; /* 0x372 */ s16 unk_372; /* 0x374 */ s16 csId; - /* 0x378 */ EnTruUnkFunc unk_378; + /* 0x378 */ MsgEventCallback unk_378; /* 0x37C */ s32 animIndex; /* 0x380 */ UNK_TYPE1 unk380[0x4]; /* 0x384 */ s32 unk_384; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 9ef37a3e4..effa69b71 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2009,58 +2009,58 @@ 0x8010A430:("Map_Init",), 0x8010A54C:("Minimap_Draw",), 0x8010A580:("Map_Update",), - 0x8010A760:("func_8010A760",), - 0x8010A7CC:("func_8010A7CC",), - 0x8010A814:("func_8010A814",), - 0x8010A85C:("func_8010A85C",), - 0x8010A8A4:("func_8010A8A4",), - 0x8010A8EC:("func_8010A8EC",), - 0x8010A990:("func_8010A990",), - 0x8010AA54:("func_8010AA54",), - 0x8010AB30:("func_8010AB30",), - 0x8010AB94:("func_8010AB94",), - 0x8010AC00:("func_8010AC00",), - 0x8010AD24:("func_8010AD24",), - 0x8010ADD4:("func_8010ADD4",), - 0x8010AE48:("func_8010AE48",), - 0x8010AECC:("func_8010AECC",), - 0x8010AF20:("func_8010AF20",), - 0x8010AF6C:("func_8010AF6C",), - 0x8010AF94:("func_8010AF94",), - 0x8010AFE0:("func_8010AFE0",), - 0x8010B010:("func_8010B010",), - 0x8010B06C:("func_8010B06C",), - 0x8010B0B4:("func_8010B0B4",), - 0x8010B0DC:("func_8010B0DC",), - 0x8010B108:("func_8010B108",), - 0x8010B140:("func_8010B140",), - 0x8010B180:("func_8010B180",), - 0x8010B1BC:("func_8010B1BC",), - 0x8010B22C:("func_8010B22C",), - 0x8010B284:("func_8010B284",), - 0x8010B2C0:("func_8010B2C0",), - 0x8010B300:("func_8010B300",), - 0x8010B434:("func_8010B434",), - 0x8010B4A4:("func_8010B4A4",), - 0x8010B520:("func_8010B520",), - 0x8010B664:("func_8010B664",), - 0x8010B7A8:("func_8010B7A8",), - 0x8010B828:("func_8010B828",), - 0x8010B878:("func_8010B878",), - 0x8010B8E4:("func_8010B8E4",), - 0x8010BB0C:("func_8010BB0C",), - 0x8010BB6C:("func_8010BB6C",), - 0x8010BBCC:("func_8010BBCC",), - 0x8010BC28:("func_8010BC28",), - 0x8010BC7C:("func_8010BC7C",), - 0x8010BD48:("func_8010BD48",), - 0x8010BD90:("func_8010BD90",), - 0x8010BDDC:("func_8010BDDC",), - 0x8010BE78:("func_8010BE78",), - 0x8010BEBC:("func_8010BEBC",), - 0x8010BEF0:("func_8010BEF0",), - 0x8010BF24:("func_8010BF24",), - 0x8010BF58:("func_8010BF58",), + 0x8010A760:("MsgEvent_Cmd00",), + 0x8010A7CC:("MsgEvent_Cmd01",), + 0x8010A814:("MsgEvent_Cmd02",), + 0x8010A85C:("MsgEvent_Cmd03",), + 0x8010A8A4:("MsgEvent_Cmd04",), + 0x8010A8EC:("MsgEvent_Cmd05",), + 0x8010A990:("MsgEvent_Cmd06",), + 0x8010AA54:("MsgEvent_Cmd07",), + 0x8010AB30:("MsgEvent_Cmd08",), + 0x8010AB94:("MsgEvent_Cmd09",), + 0x8010AC00:("MsgEvent_Cmd10",), + 0x8010AD24:("MsgEvent_Cmd11",), + 0x8010ADD4:("MsgEvent_Cmd12",), + 0x8010AE48:("MsgEvent_Cmd13",), + 0x8010AECC:("MsgEvent_Cmd14",), + 0x8010AF20:("MsgEvent_Cmd15",), + 0x8010AF6C:("MsgEvent_Cmd16",), + 0x8010AF94:("MsgEvent_Cmd17",), + 0x8010AFE0:("MsgEvent_Cmd18",), + 0x8010B010:("MsgEvent_Cmd19",), + 0x8010B06C:("MsgEvent_Cmd20",), + 0x8010B0B4:("MsgEvent_Cmd21",), + 0x8010B0DC:("MsgEvent_Cmd22",), + 0x8010B108:("MsgEvent_Cmd23",), + 0x8010B140:("MsgEvent_Cmd24",), + 0x8010B180:("MsgEvent_Cmd25",), + 0x8010B1BC:("MsgEvent_Cmd26",), + 0x8010B22C:("MsgEvent_Cmd27",), + 0x8010B284:("MsgEvent_Cmd28",), + 0x8010B2C0:("MsgEvent_Cmd29",), + 0x8010B300:("MsgEvent_Cmd30",), + 0x8010B434:("MsgEvent_Cmd31",), + 0x8010B4A4:("MsgEvent_Cmd32",), + 0x8010B520:("MsgEvent_Cmd33",), + 0x8010B664:("MsgEvent_Cmd34",), + 0x8010B7A8:("MsgEvent_Cmd35",), + 0x8010B828:("MsgEvent_Cmd36",), + 0x8010B878:("MsgEvent_Cmd37",), + 0x8010B8E4:("MsgEvent_Cmd38",), + 0x8010BB0C:("MsgEvent_Cmd39",), + 0x8010BB6C:("MsgEvent_Cmd40",), + 0x8010BBCC:("MsgEvent_Cmd41",), + 0x8010BC28:("MsgEvent_Cmd42",), + 0x8010BC7C:("MsgEvent_Cmd43",), + 0x8010BD48:("MsgEvent_Cmd44",), + 0x8010BD90:("MsgEvent_Cmd45",), + 0x8010BDDC:("MsgEvent_Cmd46",), + 0x8010BE78:("MsgEvent_Cmd47",), + 0x8010BEBC:("MsgEvent_Cmd48",), + 0x8010BEF0:("MsgEvent_Cmd49",), + 0x8010BF24:("MsgEvent_Cmd50",), + 0x8010BF58:("MsgEvent_RunScript",), 0x8010C0C0:("Nmi_Init",), 0x8010C164:("Nmi_SetPrenmiStart",), 0x8010C19C:("Nmi_GetPrenmiHasStarted",), diff --git a/tools/overlayhelpers/mscriptdis.py b/tools/overlayhelpers/mscriptdis.py new file mode 100644 index 000000000..cb7819d4d --- /dev/null +++ b/tools/overlayhelpers/mscriptdis.py @@ -0,0 +1,589 @@ +#!/usr/bin/env python3 +# +# Message Event Script Disassembler +# + +import argparse, os, struct +from actor_symbols import resolve_symbol + +cmd_info = [ + ('MSCRIPT_BRANCH_ON_WEEK_EVENT_REG', 0x05, '', '>BBh', (2,)), + ('MSCRIPT_BRANCH_IF_GORON', 0x03, '', '>h', (0,)), + ('MSCRIPT_BRANCH_IF_ZORA', 0x03, '', '>h', (0,)), + ('MSCRIPT_BRANCH_IF_DEKU', 0x03, '', '>h', (0,)), + ('MSCRIPT_BRANCH_IF_HUMAN', 0x03, '', '>h', (0,)), + ('MSCRIPT_BRANCH_ON_TEXT_CHOICE', 0x07, '', '>hhh', (0,1,2)), + ('MSCRIPT_OFFER_ITEM', 0x05, '', '>Hh', (1,)), + ('MSCRIPT_CMD07', 0x03, '', '>h', (0,)), + ('MSCRIPT_BRANCH_ON_RUPEES', 0x05, '', '>Hh', (1,)), + ('MSCRIPT_BRANCH_ON_CALLBACK_OPTIONAL', 0x03, '', '>h', (0,)), + ('MSCRIPT_BRANCH_ON_DAY', 0x0d, '', '>hhhhhh', (0,1,2,3,4,5)), + ('MSCRIPT_CMD11', 0x03, '', '>h', (0,)), + ('MSCRIPT_AWAIT_TEXT', 0x01, '', '', ()), + ('MSCRIPT_CMD13', 0x01, '', '', ()), + ('MSCRIPT_BEGIN_TEXT', 0x03, '', '>H', ()), + ('MSCRIPT_CONTINUE_TEXT', 0x03, '', '>H', ()), + ('MSCRIPT_DONE', 0x01, '', '', ()), + ('MSCRIPT_WEEK_EVENT_REG_SET', 0x03, '', '>BB', ()), + ('MSCRIPT_CLOSE_TEXT', 0x01, '', '', ()), + ('MSCRIPT_COLLECT_SET', 0x03, '', '>H', ()), + ('MSCRIPT_CHANGE_RUPEES', 0x03, '', '>H', ()), + ('MSCRIPT_PAUSE', 0x01, '', '', ()), + ('MSCRIPT_CMD22', 0x01, '', '', ()), + ('MSCRIPT_FOCUS_TO_CHILD', 0x01, '', '', ()), + ('MSCRIPT_FOCUS_TO_SELF', 0x01, '', '', ()), + ('MSCRIPT_JUMP', 0x03, '', '>h', (0,)), + ('MSCRIPT_BRANCH_ON_QUEST_ITEM', 0x05, '', '>Hh', (1,)), + ('MSCRIPT_BRANCH_ON_EVENT_INF', 0x05, '', '>BBh', (2,)), + ('MSCRIPT_SET_EVENT_INF', 0x03, '', '>BB', ()), + ('MSCRIPT_UNSET_EVENT_INF', 0x03, '', '>BB', ()), + ('MSCRIPT_BRANCH_ON_ITEMACTION', 0x09, '', '>Hhhh', (1,2,3)), + ('MSCRIPT_BRANCH_ON_SONG_OBTAINED', 0x05, '', '>Hh', (1,)), + ('MSCRIPT_BRANCH_ON_WORN_MASK', 0x05, '', '>Hh', (1,)), + ('MSCRIPT_BRANCH_ON_TIME_GT', 0x05, '', '>BBh', (2,)), + ('MSCRIPT_BRANCH_ON_TIME_LEQ', 0x05, '', '>BBh', (2,)), + ('MSCRIPT_BRANCH_ON_SWITCH_FLAG', 0x05, '', '>Hh', (1,)), + ('MSCRIPT_SET_SWITCH_FLAG', 0x03, '', '>H', ()), + ('MSCRIPT_BRANCH_ON_ITEM', 0x05, '', '>Hh', (1,)), + ('MSCRIPT_BRANCH_ON_TIME_INTERVAL', 0x07, '', '>BBBBh', (4,)), + ('MSCRIPT_BRANCH_IF_DAY', 0x05, '', '>Hh', (1,)), + ('MSCRIPT_BRANCH_ON_CALLBACK_2', 0x03, '', '>h', (0,)), + ('MSCRIPT_HAS_POWDER_KEG', 0x03, '', '>h', (0,)), + ('MSCRIPT_DEL_ITEM', 0x03, '', '>h', ()), + ('MSCRIPT_BRANCH_ON_CALLBACK', 0x07, '', '>hhh', (0,1,2)), + ('MSCRIPT_CMD44', 0x03, '', '>H', ()), + ('MSCRIPT_NOTEBOOK_EVENT', 0x03, '', '>H', ()), + ('MSCRIPT_CMD46', 0x01, '', '', ()), + ('MSCRIPT_JUMP_3', 0x03, '', '>h', (0,)), + ('MSCRIPT_PLAY_DECIDE', 0x01, '', '', ()), + ('MSCRIPT_PLAY_CANCEL', 0x01, '', '', ()), + ('MSCRIPT_PLAY_ERROR', 0x01, '', '', ()), +] + +item_names = ( + "ITEM_OCARINA", + "ITEM_BOW", + "ITEM_ARROW_FIRE", + "ITEM_ARROW_ICE", + "ITEM_ARROW_LIGHT", + "ITEM_OCARINA_FAIRY", + "ITEM_BOMB", + "ITEM_BOMBCHU", + "ITEM_STICK", + "ITEM_NUT", + "ITEM_MAGIC_BEANS", + "ITEM_SLINGSHOT", + "ITEM_POWDER_KEG", + "ITEM_PICTOGRAPH_BOX", + "ITEM_LENS", + "ITEM_HOOKSHOT", + "ITEM_SWORD_GREAT_FAIRY", + "ITEM_LONGSHOT", + "ITEM_BOTTLE", + "ITEM_POTION_RED", + "ITEM_POTION_GREEN", + "ITEM_POTION_BLUE", + "ITEM_FAIRY", + "ITEM_DEKU_PRINCESS", + "ITEM_MILK_BOTTLE", + "ITEM_MILK_HALF", + "ITEM_FISH", + "ITEM_BUG", + "ITEM_BLUE_FIRE", + "ITEM_POE", + "ITEM_BIG_POE", + "ITEM_SPRING_WATER", + "ITEM_HOT_SPRING_WATER", + "ITEM_ZORA_EGG", + "ITEM_GOLD_DUST", + "ITEM_MUSHROOM", + "ITEM_SEA_HORSE", + "ITEM_CHATEAU", + "ITEM_HYLIAN_LOACH", + "ITEM_OBABA_DRINK", + "ITEM_MOON_TEAR", + "ITEM_DEED_LAND", + "ITEM_DEED_SWAMP", + "ITEM_DEED_MOUNTAIN", + "ITEM_DEED_OCEAN", + "ITEM_ROOM_KEY", + "ITEM_LETTER_MAMA", + "ITEM_LETTER_TO_KAFEI", + "ITEM_PENDANT_MEMORIES", + "ITEM_TINGLE_MAP", + "ITEM_MASK_DEKU", + "ITEM_MASK_GORON", + "ITEM_MASK_ZORA", + "ITEM_MASK_FIERCE_DEITY", + "ITEM_MASK_TRUTH", + "ITEM_MASK_KAFEIS_MASK", + "ITEM_MASK_ALL_NIGHT", + "ITEM_MASK_BUNNY", + "ITEM_MASK_KEATON", + "ITEM_MASK_GARO", + "ITEM_MASK_ROMANI", + "ITEM_MASK_CIRCUS_LEADER", + "ITEM_MASK_POSTMAN", + "ITEM_MASK_COUPLE", + "ITEM_MASK_GREAT_FAIRY", + "ITEM_MASK_GIBDO", + "ITEM_MASK_DON_GERO", + "ITEM_MASK_KAMARO", + "ITEM_MASK_CAPTAIN", + "ITEM_MASK_STONE", + "ITEM_MASK_BREMEN", + "ITEM_MASK_BLAST", + "ITEM_MASK_SCENTS", + "ITEM_MASK_GIANT", + "ITEM_BOW_ARROW_FIRE", + "ITEM_BOW_ARROW_ICE", + "ITEM_BOW_ARROW_LIGHT", + "ITEM_SWORD_KOKIRI", + "ITEM_SWORD_RAZOR", + "ITEM_SWORD_GILDED", + "ITEM_SWORD_DEITY", + "ITEM_SHIELD_HERO", + "ITEM_SHIELD_MIRROR", + "ITEM_QUIVER_30", + "ITEM_QUIVER_40", + "ITEM_QUIVER_50", + "ITEM_BOMB_BAG_20", + "ITEM_BOMB_BAG_30", + "ITEM_BOMB_BAG_40", + "ITEM_WALLET_DEFAULT", + "ITEM_WALLET_ADULT", + "ITEM_WALLET_GIANT", + "ITEM_FISHING_POLE", + "ITEM_REMAINS_ODOLWA", + "ITEM_REMAINS_GOHT", + "ITEM_REMAINS_GYORG", + "ITEM_REMAINS_TWINMOLD", + "ITEM_SONG_SONATA", + "ITEM_SONG_LULLABY", + "ITEM_SONG_NOVA", + "ITEM_SONG_ELEGY", + "ITEM_SONG_OATH", + "ITEM_SONG_SARIA", + "ITEM_SONG_TIME", + "ITEM_SONG_HEALING", + "ITEM_SONG_EPONA", + "ITEM_SONG_SOARING", + "ITEM_SONG_STORMS", + "ITEM_SONG_SUN", + "ITEM_BOMBERS_NOTEBOOK", + "ITEM_SKULL_TOKEN", + "ITEM_HEART_CONTAINER", + "ITEM_HEART_PIECE", + None, + None, + "ITEM_SONG_LULLABY_INTRO", + "ITEM_KEY_BOSS", + "ITEM_COMPASS", + "ITEM_DUNGEON_MAP", + "ITEM_STRAY_FAIRIES", + "ITEM_KEY_SMALL", + "ITEM_MAGIC_SMALL", + "ITEM_MAGIC_LARGE", + "ITEM_HEART_PIECE_2", + "ITEM_INVALID_1", + "ITEM_INVALID_2", + "ITEM_INVALID_3", + "ITEM_INVALID_4", + "ITEM_INVALID_5", + "ITEM_INVALID_6", + "ITEM_INVALID_7", + "ITEM_HEART", + "ITEM_RUPEE_GREEN", + "ITEM_RUPEE_BLUE", + "ITEM_RUPEE_10", + "ITEM_RUPEE_RED", + "ITEM_RUPEE_PURPLE", + "ITEM_RUPEE_SILVER", + "ITEM_RUPEE_HUGE", + "ITEM_STICKS_5", + "ITEM_STICKS_10", + "ITEM_NUTS_5", + "ITEM_NUTS_10", + "ITEM_BOMBS_5", + "ITEM_BOMBS_10", + "ITEM_BOMBS_20", + "ITEM_BOMBS_30", + "ITEM_ARROWS_10", + "ITEM_ARROWS_30", + "ITEM_ARROWS_40", + "ITEM_ARROWS_50", + "ITEM_BOMBCHUS_20", + "ITEM_BOMBCHUS_10", + "ITEM_BOMBCHUS_1", + "ITEM_BOMBCHUS_5", + "ITEM_STICK_UPGRADE_20", + "ITEM_STICK_UPGRADE_30", + "ITEM_NUT_UPGRADE_30", + "ITEM_NUT_UPGRADE_40", + "ITEM_CHATEAU_2", + "ITEM_MILK", + "ITEM_GOLD_DUST_2", + "ITEM_HYLIAN_LOACH_2", + "ITEM_SEA_HORSE_CAUGHT", +) + +gi_names = ( + "GI_NONE", + "GI_RUPEE_GREEN", + "GI_RUPEE_BLUE", + "GI_RUPEE_10", + "GI_RUPEE_RED", + "GI_RUPEE_PURPLE", + "GI_RUPEE_SILVER", + "GI_RUPEE_HUGE", + "GI_WALLET_ADULT", + "GI_WALLET_GIANT", + "GI_RECOVERY_HEART", + None, + "GI_HEART_PIECE", + "GI_HEART_CONTAINER", + "GI_MAGIC_SMALL", + "GI_MAGIC_LARGE", + None, + "GI_STRAY_FAIRY", + None, + None, + "GI_BOMBS_1", + "GI_BOMBS_5", + "GI_BOMBS_10", + "GI_BOMBS_20", + "GI_BOMBS_30", + "GI_STICKS_1", + "GI_BOMBCHUS_10", + "GI_BOMB_BAG_20", + "GI_BOMB_BAG_30", + "GI_BOMB_BAG_40", + "GI_ARROWS_10", + "GI_ARROWS_30", + "GI_ARROWS_40", + "GI_ARROWS_50", + "GI_QUIVER_30", + "GI_QUIVER_40", + "GI_QUIVER_50", + "GI_ARROW_FIRE", + "GI_ARROW_ICE", + "GI_ARROW_LIGHT", + "GI_NUTS_1", + "GI_NUTS_5", + "GI_NUTS_10", + None, + None, + None, + "GI_BOMBCHUS_20", + None, + None, + None, + "GI_SHIELD_HERO", + "GI_SHIELD_MIRROR", + "GI_POWDER_KEG", + "GI_MAGIC_BEANS", + "GI_BOMBCHUS_1", + "GI_SWORD_KOKIRI", + "GI_SWORD_RAZOR", + "GI_SWORD_GILDED", + "GI_BOMBCHUS_5", + "GI_SWORD_GREAT_FAIRY", + "GI_KEY_SMALL", + "GI_KEY_BOSS", + "GI_MAP", + "GI_COMPASS", + "GI_40", + "GI_HOOKSHOT", + "GI_LENS", + "GI_PICTOGRAPH_BOX", + None, + None, + None, + None, + None, + None, + None, + None, + "GI_OCARINA", + None, + None, + None, + "GI_BOMBERS_NOTEBOOK", + None, + "GI_SKULL_TOKEN", + None, + None, + "GI_REMAINS_ODOLWA", + "GI_REMAINS_GOHT", + "GI_REMAINS_GYORG", + "GI_REMAINS_TWINMOLD", + "GI_POTION_RED_BOTTLE", + "GI_BOTTLE", + "GI_POTION_RED", + "GI_POTION_GREEN", + "GI_POTION_BLUE", + "GI_FAIRY", + "GI_DEKU_PRINCESS", + "GI_MILK_BOTTLE", + "GI_MILK_HALF", + "GI_FISH", + "GI_BUG", + "GI_BLUE_FIRE", + "GI_POE", + "GI_BIG_POE", + "GI_SPRING_WATER", + "GI_HOT_SPRING_WATER", + "GI_ZORA_EGG", + "GI_GOLD_DUST", + "GI_MUSHROOM", + "GI_6C", + "GI_6D", + "GI_SEAHORSE", + "GI_CHATEAU_BOTTLE", + "GI_HYLIAN_LOACH", + None, + None, + None, + None, + "GI_75", + "GI_ICE_TRAP", + None, + "GI_MASK_DEKU", + "GI_MASK_GORON", + "GI_MASK_ZORA", + "GI_MASK_FIERCE_DEITY", + "GI_MASK_CAPTAIN", + "GI_MASK_GIANT", + "GI_MASK_ALL_NIGHT", + "GI_MASK_BUNNY", + "GI_MASK_KEATON", + "GI_MASK_GARO", + "GI_MASK_ROMANI", + "GI_MASK_CIRCUS_LEADER", + "GI_MASK_POSTMAN", + "GI_MASK_COUPLE", + "GI_MASK_GREAT_FAIRY", + "GI_MASK_GIBDO", + "GI_MASK_DON_GERO", + "GI_MASK_KAMARO", + "GI_MASK_TRUTH", + "GI_MASK_STONE", + "GI_MASK_BREMEN", + "GI_MASK_BLAST", + "GI_MASK_SCENTS", + "GI_MASK_KAFEIS_MASK", + "GI_CHATEAU", + "GI_MILK", + "GI_GOLD_DUST_2", + "GI_HYLIAN_LOACH_2", + "GI_SEAHORSE_CAUGHT", + "GI_MOON_TEAR", + "GI_DEED_LAND", + "GI_DEED_SWAMP", + "GI_DEED_MOUNTAIN", + "GI_DEED_OCEAN", + "GI_SWORD_GREAT_FAIRY_STOLEN", + "GI_SWORD_KOKIRI_STOLEN", + "GI_SWORD_RAZOR_STOLEN", + "GI_SWORD_GILDED_STOLEN", + "GI_SHIELD_HERO_STOLEN", + "GI_ROOM_KEY", + "GI_LETTER_TO_MAMA", + "GI_A2", + "GI_A3", + "GI_A4", + "GI_A5", + "GI_A6", + "GI_A7", + "GI_A8", + "GI_BOTTLE_STOLEN", + "GI_LETTER_TO_KAFEI", + "GI_PENDANT_OF_MEMORIES", + "GI_TINGLE_MAP_CLOCK_TOWN", + "GI_TINGLE_MAP_WOODFALL", + "GI_TINGLE_MAP_SNOWHEAD", + "GI_TINGLE_MAP_ROMANI_RANCH", + "GI_TINGLE_MAP_GREAT_BAY", + "GI_TINGLE_MAP_STONE_TOWER", + "GI_MAX", +) + +notebook_event = ( + "BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS", + "BOMBERS_NOTEBOOK_EVENT_MET_ANJU", + "BOMBERS_NOTEBOOK_EVENT_MET_KAFEI", + "BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN", + "BOMBERS_NOTEBOOK_EVENT_MET_BOMB_SHOP_LADY", + "BOMBERS_NOTEBOOK_EVENT_MET_ROMANI", + "BOMBERS_NOTEBOOK_EVENT_MET_CREMIA", + "BOMBERS_NOTEBOOK_EVENT_MET_MAYOR_DOTOUR", + "BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA", + "BOMBERS_NOTEBOOK_EVENT_MET_TOTO", + "BOMBERS_NOTEBOOK_EVENT_MET_GORMAN", + "BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN", + "BOMBERS_NOTEBOOK_EVENT_MET_ROSA_SISTERS", + "BOMBERS_NOTEBOOK_EVENT_MET_TOLIET_HAND", + "BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER", + "BOMBERS_NOTEBOOK_EVENT_MET_KAMARO", + "BOMBERS_NOTEBOOK_EVENT_MET_GROG", + "BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS", + "BOMBERS_NOTEBOOK_EVENT_MET_SHIRO", + "BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU", + + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROOM_KEY", + "BOMBERS_NOTEBOOK_EVENT_PROMISED_MIDNIGHT_MEETING", + "BOMBERS_NOTEBOOK_EVENT_PROMISED_TO_MEET_KAFEI", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_LETTER_TO_KAFEI", + "BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_PENDANT_OF_MEMORIES", + "BOMBERS_NOTEBOOK_EVENT_DELIVERED_PENDANT_OF_MEMORIES", + "BOMBERS_NOTEBOOK_EVENT_ESCAPED_SAKONS_HIDEOUT", + "BOMBERS_NOTEBOOK_EVENT_PROMISED_TO_HELP_WITH_THEM", + "BOMBERS_NOTEBOOK_EVENT_DEFENDED_AGAINST_THEM", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_MILK_BOTTLE", + "BOMBERS_NOTEBOOK_EVENT_ESCORTED_CREMIA", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROMANIS_MASK", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_KEATON_MASK", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_PRIORITY_MAIL", + "BOMBERS_NOTEBOOK_EVENT_DELIVERED_PRIORITY_MAIL", + "BOMBERS_NOTEBOOK_EVENT_LEARNED_SECRET_CODE", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_BOMBERS_NOTEBOOK", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_MAYOR_HP", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROSA_SISTERS_HP", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_TOILET_HAND_HP", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_SHORT_STORY_HP", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_LONG_STORY_HP", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMAN_HP", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAFEIS_MASK", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_ALL_NIGHT_MASK", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_BUNNY_HOOD", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_GAROS_MASK", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_CIRCUS_LEADERS_MASK", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMANS_HAT", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_COUPLES_MASK", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_BLAST_MASK", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAMAROS_MASK", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_STONE_MASK", + "BOMBERS_NOTEBOOK_EVENT_RECEIVED_BREMEN_MASK", +) + +def read_bytes(data_file, offset, len): + with open(data_file,"rb") as infile: + infile.seek(offset) + return bytearray(infile.read(len)) + +def disassemble_msg_script(data_file, script_start, offset, length): + out = "" + cmd = None + branch_targets = [] + + # Keep trying to disassemble until it hits the terminator and no commands branch past it + while any([branch >= offset for branch in branch_targets]) or cmd != 0x10: + # print(offset) + cmd = read_bytes(data_file, script_start + offset, 1)[0] + # print(cmd) + + cmd_name = cmd_info[cmd][0] + cmd_len = cmd_info[cmd][1] + cmd_args = cmd_info[cmd][3] + + is_branch = False + + args_formatted = [] + if len(cmd_args) > 1: # handle args + raw_args = read_bytes(data_file, script_start + offset + 1, cmd_len - 1) + arg_values = struct.unpack(cmd_args, raw_args) + + # print(len(raw_args) + 1, f"0x{cmd:02X}", [f"0x{b:02X}" for b in raw_args]) + + for i,(arg_value,arg_type) in enumerate(zip(arg_values, cmd_args[1:]),0): + arg_formatted = "" + + if cmd == 6 and i == 0: + arg_formatted = gi_names[arg_value] + assert arg_formatted is not None + elif cmd == 37 and i == 0: + arg_formatted = item_names[arg_value] + assert arg_formatted is not None + elif cmd == 42 and i == 0: + arg_formatted = item_names[arg_value] + assert arg_formatted is not None + elif cmd == 45 and i == 0: + arg_formatted = notebook_event[arg_value] + assert arg_formatted is not None + else: + if arg_type == "h": + arg_formatted = f"{arg_value:#x}" + elif arg_type == "H": + arg_formatted = f"0x{arg_value:04X}" + elif arg_type == "B": + arg_formatted = f"0x{arg_value:02X}" + + if i in cmd_info[cmd][4]: # skip argument indices + # add skip args to branch targets, and change the output to absolute differences rather than relative offsets + arg_value += cmd_len + + is_branch = True + branch_pos = offset + cmd_len + branch_target = offset + arg_value + + branch_targets.append(branch_target) + + if arg_value == cmd_len: + arg_formatted == "0" + else: + arg_formatted = f"0x{branch_target:04X} - 0x{branch_pos:04X}" + args_formatted.append(arg_formatted) + # else: + # print(1, f"0x{cmd:02X}") + + args = ", ".join(args_formatted) if len(args_formatted) != 0 else "" + + line = f" /* 0x{offset:04X} 0x{cmd_len:02X} */ {cmd_name}({args}),{f' // {cmd_info[cmd][2]}' if cmd_info[cmd][2] != '' else ''}\n" + out += line + + if cmd == 0x10 or is_branch and branch_target < branch_pos: # maybe + out += "\n" + + offset += cmd_len + + if is_branch and branch_target < branch_pos: + # branch backwards, terminate if nothing branches past here + # TODO if the branch is conditional we should not be terminating here + if not any([branch >= offset for branch in branch_targets]): + break + + length -= offset + + if length > 0: + if length < 4 and all([b == 0 for b in read_bytes(data_file, script_start + offset, length)]): + # padding + pass + else: + # some data left over, try and disassemble it + out += " // Unreachable\n" + out += disassemble_msg_script(data_file, script_start, offset, length) + + return out + +def main(): + parser = argparse.ArgumentParser(description="Disassembles MM behavior scripts") + parser.add_argument('address', help="VRAM or ROM address to disassemble at", type=lambda s : int(s.replace("D_", "0x"), 16)) + parser.add_argument('length', help="Number of bytes to disassemble, by default it will disassemble all reachable commands", nargs='?', default=-1, type=int) + parser.add_argument('--name', help="Array name", default="sMsgScript", type=str) + 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]) + + print(f"MsgScript {args.name}[] = {{") + print(disassemble_msg_script(file_result[0], file_result[1], 0, args.length).rstrip()) + print("};") + +if __name__ == "__main__": + main() diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 25d7f3b61..fb6e3185e 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1523,58 +1523,58 @@ asm/non_matchings/code/z_map_exp/Map_Destroy.s,Map_Destroy,0x8010A410,0x8 asm/non_matchings/code/z_map_exp/Map_Init.s,Map_Init,0x8010A430,0x47 asm/non_matchings/code/z_map_exp/Minimap_Draw.s,Minimap_Draw,0x8010A54C,0xD asm/non_matchings/code/z_map_exp/Map_Update.s,Map_Update,0x8010A580,0x78 -asm/non_matchings/code/z_msgevent/func_8010A760.s,func_8010A760,0x8010A760,0x1B -asm/non_matchings/code/z_msgevent/func_8010A7CC.s,func_8010A7CC,0x8010A7CC,0x12 -asm/non_matchings/code/z_msgevent/func_8010A814.s,func_8010A814,0x8010A814,0x12 -asm/non_matchings/code/z_msgevent/func_8010A85C.s,func_8010A85C,0x8010A85C,0x12 -asm/non_matchings/code/z_msgevent/func_8010A8A4.s,func_8010A8A4,0x8010A8A4,0x12 -asm/non_matchings/code/z_msgevent/func_8010A8EC.s,func_8010A8EC,0x8010A8EC,0x29 -asm/non_matchings/code/z_msgevent/func_8010A990.s,func_8010A990,0x8010A990,0x31 -asm/non_matchings/code/z_msgevent/func_8010AA54.s,func_8010AA54,0x8010AA54,0x37 -asm/non_matchings/code/z_msgevent/func_8010AB30.s,func_8010AB30,0x8010AB30,0x19 -asm/non_matchings/code/z_msgevent/func_8010AB94.s,func_8010AB94,0x8010AB94,0x1B -asm/non_matchings/code/z_msgevent/func_8010AC00.s,func_8010AC00,0x8010AC00,0x49 -asm/non_matchings/code/z_msgevent/func_8010AD24.s,func_8010AD24,0x8010AD24,0x2C -asm/non_matchings/code/z_msgevent/func_8010ADD4.s,func_8010ADD4,0x8010ADD4,0x1D -asm/non_matchings/code/z_msgevent/func_8010AE48.s,func_8010AE48,0x8010AE48,0x21 -asm/non_matchings/code/z_msgevent/func_8010AECC.s,func_8010AECC,0x8010AECC,0x15 -asm/non_matchings/code/z_msgevent/func_8010AF20.s,func_8010AF20,0x8010AF20,0x13 -asm/non_matchings/code/z_msgevent/func_8010AF6C.s,func_8010AF6C,0x8010AF6C,0xA -asm/non_matchings/code/z_msgevent/func_8010AF94.s,func_8010AF94,0x8010AF94,0x13 -asm/non_matchings/code/z_msgevent/func_8010AFE0.s,func_8010AFE0,0x8010AFE0,0xC -asm/non_matchings/code/z_msgevent/func_8010B010.s,func_8010B010,0x8010B010,0x17 -asm/non_matchings/code/z_msgevent/func_8010B06C.s,func_8010B06C,0x8010B06C,0x12 -asm/non_matchings/code/z_msgevent/func_8010B0B4.s,func_8010B0B4,0x8010B0B4,0xA -asm/non_matchings/code/z_msgevent/func_8010B0DC.s,func_8010B0DC,0x8010B0DC,0xB -asm/non_matchings/code/z_msgevent/func_8010B108.s,func_8010B108,0x8010B108,0xE -asm/non_matchings/code/z_msgevent/func_8010B140.s,func_8010B140,0x8010B140,0x10 -asm/non_matchings/code/z_msgevent/func_8010B180.s,func_8010B180,0x8010B180,0xF -asm/non_matchings/code/z_msgevent/func_8010B1BC.s,func_8010B1BC,0x8010B1BC,0x1C -asm/non_matchings/code/z_msgevent/func_8010B22C.s,func_8010B22C,0x8010B22C,0x16 -asm/non_matchings/code/z_msgevent/func_8010B284.s,func_8010B284,0x8010B284,0xF -asm/non_matchings/code/z_msgevent/func_8010B2C0.s,func_8010B2C0,0x8010B2C0,0x10 -asm/non_matchings/code/z_msgevent/func_8010B300.s,func_8010B300,0x8010B300,0x4D -asm/non_matchings/code/z_msgevent/func_8010B434.s,func_8010B434,0x8010B434,0x1C -asm/non_matchings/code/z_msgevent/func_8010B4A4.s,func_8010B4A4,0x8010B4A4,0x1F -asm/non_matchings/code/z_msgevent/func_8010B520.s,func_8010B520,0x8010B520,0x51 -asm/non_matchings/code/z_msgevent/func_8010B664.s,func_8010B664,0x8010B664,0x51 -asm/non_matchings/code/z_msgevent/func_8010B7A8.s,func_8010B7A8,0x8010B7A8,0x20 -asm/non_matchings/code/z_msgevent/func_8010B828.s,func_8010B828,0x8010B828,0x14 -asm/non_matchings/code/z_msgevent/func_8010B878.s,func_8010B878,0x8010B878,0x1B -asm/non_matchings/code/z_msgevent/func_8010B8E4.s,func_8010B8E4,0x8010B8E4,0x8A -asm/non_matchings/code/z_msgevent/func_8010BB0C.s,func_8010BB0C,0x8010BB0C,0x18 -asm/non_matchings/code/z_msgevent/func_8010BB6C.s,func_8010BB6C,0x8010BB6C,0x18 -asm/non_matchings/code/z_msgevent/func_8010BBCC.s,func_8010BBCC,0x8010BBCC,0x17 -asm/non_matchings/code/z_msgevent/func_8010BC28.s,func_8010BC28,0x8010BC28,0x15 -asm/non_matchings/code/z_msgevent/func_8010BC7C.s,func_8010BC7C,0x8010BC7C,0x33 -asm/non_matchings/code/z_msgevent/func_8010BD48.s,func_8010BD48,0x8010BD48,0x12 -asm/non_matchings/code/z_msgevent/func_8010BD90.s,func_8010BD90,0x8010BD90,0x13 -asm/non_matchings/code/z_msgevent/func_8010BDDC.s,func_8010BDDC,0x8010BDDC,0x27 -asm/non_matchings/code/z_msgevent/func_8010BE78.s,func_8010BE78,0x8010BE78,0x11 -asm/non_matchings/code/z_msgevent/func_8010BEBC.s,func_8010BEBC,0x8010BEBC,0xD -asm/non_matchings/code/z_msgevent/func_8010BEF0.s,func_8010BEF0,0x8010BEF0,0xD -asm/non_matchings/code/z_msgevent/func_8010BF24.s,func_8010BF24,0x8010BF24,0xD -asm/non_matchings/code/z_msgevent/func_8010BF58.s,func_8010BF58,0x8010BF58,0x5A +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd00.s,MsgEvent_Cmd00,0x8010A760,0x1B +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd01.s,MsgEvent_Cmd01,0x8010A7CC,0x12 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd02.s,MsgEvent_Cmd02,0x8010A814,0x12 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd03.s,MsgEvent_Cmd03,0x8010A85C,0x12 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd04.s,MsgEvent_Cmd04,0x8010A8A4,0x12 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd05.s,MsgEvent_Cmd05,0x8010A8EC,0x29 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd06.s,MsgEvent_Cmd06,0x8010A990,0x31 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd07.s,MsgEvent_Cmd07,0x8010AA54,0x37 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd08.s,MsgEvent_Cmd08,0x8010AB30,0x19 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd09.s,MsgEvent_Cmd09,0x8010AB94,0x1B +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd10.s,MsgEvent_Cmd10,0x8010AC00,0x49 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd11.s,MsgEvent_Cmd11,0x8010AD24,0x2C +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd12.s,MsgEvent_Cmd12,0x8010ADD4,0x1D +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd13.s,MsgEvent_Cmd13,0x8010AE48,0x21 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd14.s,MsgEvent_Cmd14,0x8010AECC,0x15 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd15.s,MsgEvent_Cmd15,0x8010AF20,0x13 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd16.s,MsgEvent_Cmd16,0x8010AF6C,0xA +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd17.s,MsgEvent_Cmd17,0x8010AF94,0x13 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd18.s,MsgEvent_Cmd18,0x8010AFE0,0xC +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd19.s,MsgEvent_Cmd19,0x8010B010,0x17 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd20.s,MsgEvent_Cmd20,0x8010B06C,0x12 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd21.s,MsgEvent_Cmd21,0x8010B0B4,0xA +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd22.s,MsgEvent_Cmd22,0x8010B0DC,0xB +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd23.s,MsgEvent_Cmd23,0x8010B108,0xE +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd24.s,MsgEvent_Cmd24,0x8010B140,0x10 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd25.s,MsgEvent_Cmd25,0x8010B180,0xF +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd26.s,MsgEvent_Cmd26,0x8010B1BC,0x1C +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd27.s,MsgEvent_Cmd27,0x8010B22C,0x16 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd28.s,MsgEvent_Cmd28,0x8010B284,0xF +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd29.s,MsgEvent_Cmd29,0x8010B2C0,0x10 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd30.s,MsgEvent_Cmd30,0x8010B300,0x4D +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd31.s,MsgEvent_Cmd31,0x8010B434,0x1C +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd32.s,MsgEvent_Cmd32,0x8010B4A4,0x1F +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd33.s,MsgEvent_Cmd33,0x8010B520,0x51 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd34.s,MsgEvent_Cmd34,0x8010B664,0x51 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd35.s,MsgEvent_Cmd35,0x8010B7A8,0x20 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd36.s,MsgEvent_Cmd36,0x8010B828,0x14 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd37.s,MsgEvent_Cmd37,0x8010B878,0x1B +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd38.s,MsgEvent_Cmd38,0x8010B8E4,0x8A +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd39.s,MsgEvent_Cmd39,0x8010BB0C,0x18 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd40.s,MsgEvent_Cmd40,0x8010BB6C,0x18 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd41.s,MsgEvent_Cmd41,0x8010BBCC,0x17 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd42.s,MsgEvent_Cmd42,0x8010BC28,0x15 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd43.s,MsgEvent_Cmd43,0x8010BC7C,0x33 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd44.s,MsgEvent_Cmd44,0x8010BD48,0x12 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd45.s,MsgEvent_Cmd45,0x8010BD90,0x13 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd46.s,MsgEvent_Cmd46,0x8010BDDC,0x27 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd47.s,MsgEvent_Cmd47,0x8010BE78,0x11 +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd48.s,MsgEvent_Cmd48,0x8010BEBC,0xD +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd49.s,MsgEvent_Cmd49,0x8010BEF0,0xD +asm/non_matchings/code/z_msgevent/MsgEvent_Cmd50.s,MsgEvent_Cmd50,0x8010BF24,0xD +asm/non_matchings/code/z_msgevent/MsgEvent_RunScript.s,MsgEvent_RunScript,0x8010BF58,0x5A asm/non_matchings/code/z_nmi_buff/Nmi_Init.s,Nmi_Init,0x8010C0C0,0x29 asm/non_matchings/code/z_nmi_buff/Nmi_SetPrenmiStart.s,Nmi_SetPrenmiStart,0x8010C164,0xE asm/non_matchings/code/z_nmi_buff/Nmi_GetPrenmiHasStarted.s,Nmi_GetPrenmiHasStarted,0x8010C19C,0x5