diff options
| author | Derek Hensley <hensley.derek58@gmail.com> | 2024-06-14 21:35:22 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-14 21:35:22 -0700 |
| commit | 0b375cadb0af6f2d95844cc674f84be0b148ae10 (patch) | |
| tree | 7e8a3262a549c45fe24d5a78ea66ad9407b79d4f /include | |
| parent | bd596f9869179f36dad57b1e17360b6532b842ca (diff) | |
Msgevent OK (#1637)
* Decompiled, some commands still unnamed
* Use full weekevent reg names
* Fix func_8094E69C
* Fix Player_GetMask
* Eventinf, mask worn, and item action argument formatting
* decimal rupees
* Times (day, hours, minutes) as decimal
* msgEventScriptPos
* Callbacks
* Name final commands
* Enum
* Arrays
* functions
* Small cleanups
* Clean up actors
* Remove event from some variable names to make them shorter
* Some more function renames
* newline
* Missed a few unks in commands
* Update functions.txt
* PlayerMask
* MSGMODE_PAUSED
* Script time macros
* EnSob1_GetWelcome default
* Whole bunch of renames
* Format
* Add CMD to commands
* Update code_functions
* structs for size
* z64scripts.h
* MsgEventCallback -> MsgScriptCallback
* format
* MsgEvent_RunScript stop
* Remove cmd handler comment
* cmd -> script in MsgEvent_RunScript
---------
Co-authored-by: Thar0 <17233964+Thar0@users.noreply.github.com>
Diffstat (limited to 'include')
| -rw-r--r-- | include/functions.h | 53 | ||||
| -rw-r--r-- | include/z64.h | 1 | ||||
| -rw-r--r-- | include/z64msgevent.h | 516 | ||||
| -rw-r--r-- | include/z64player.h | 2 | ||||
| -rw-r--r-- | include/z64schedule.h | 92 | ||||
| -rw-r--r-- | include/z64scripts.h | 24 |
6 files changed, 583 insertions, 105 deletions
diff --git a/include/functions.h b/include/functions.h index 715a385bc..e67742901 100644 --- a/include/functions.h +++ b/include/functions.h @@ -334,59 +334,6 @@ 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); - f32 OLib_Vec3fDist(Vec3f* a, Vec3f* b); f32 OLib_Vec3fDistOutDiff(Vec3f* a, Vec3f* b, Vec3f* dest); f32 OLib_Vec3fDistXZ(Vec3f* a, Vec3f* b); diff --git a/include/z64.h b/include/z64.h index dab2bc7b3..0123ae2f9 100644 --- a/include/z64.h +++ b/include/z64.h @@ -55,6 +55,7 @@ #include "z64map.h" #include "z64math.h" #include "z64message.h" +#include "z64msgevent.h" #include "z64object.h" #include "z64ocarina.h" #include "z64pause_menu.h" diff --git a/include/z64msgevent.h b/include/z64msgevent.h new file mode 100644 index 000000000..69ca66deb --- /dev/null +++ b/include/z64msgevent.h @@ -0,0 +1,516 @@ +#ifndef Z64MSGEVENT_H +#define Z64MSGEVENT_H + +#include "z64scripts.h" + +struct PlayState; +struct Actor; + +typedef enum MsgScriptCommandId { + /* 0x00 */ MSCRIPT_CMD_ID_CHECK_WEEK_EVENT_REG, + /* 0x01 */ MSCRIPT_CMD_ID_CHECK_GORON, + /* 0x02 */ MSCRIPT_CMD_ID_CHECK_ZORA, + /* 0x03 */ MSCRIPT_CMD_ID_CHECK_DEKU, + /* 0x04 */ MSCRIPT_CMD_ID_CHECK_HUMAN, + /* 0x05 */ MSCRIPT_CMD_ID_CHECK_TEXT_CHOICE, + /* 0x06 */ MSCRIPT_CMD_ID_OFFER_ITEM, + /* 0x07 */ MSCRIPT_CMD_ID_AUTOTALK, + /* 0x08 */ MSCRIPT_CMD_ID_CHECK_RUPEES, + /* 0x09 */ MSCRIPT_CMD_ID_CHECK_CALLBACK, + /* 0x0A */ MSCRIPT_CMD_ID_CHECK_DAY, + /* 0x0B */ MSCRIPT_CMD_ID_AWAIT_TEXT_JUMP, + /* 0x0C */ MSCRIPT_CMD_ID_AWAIT_TEXT, + /* 0x0D */ MSCRIPT_CMD_ID_AWAIT_TEXT_END, + /* 0x0E */ MSCRIPT_CMD_ID_BEGIN_TEXT, + /* 0x0F */ MSCRIPT_CMD_ID_CONTINUE_TEXT, + /* 0x10 */ MSCRIPT_CMD_ID_DONE, + /* 0x11 */ MSCRIPT_CMD_ID_SET_WEEK_EVENT_REG, + /* 0x12 */ MSCRIPT_CMD_ID_CLOSE_TEXT, + /* 0x13 */ MSCRIPT_CMD_ID_SET_COLLECTIBLE, + /* 0x14 */ MSCRIPT_CMD_ID_CHANGE_RUPEES, + /* 0x15 */ MSCRIPT_CMD_ID_PAUSE, + /* 0x16 */ MSCRIPT_CMD_ID_UNSET_AUTOTALK, + /* 0x17 */ MSCRIPT_CMD_ID_FOCUS_TO_CHILD, + /* 0x18 */ MSCRIPT_CMD_ID_FOCUS_TO_SELF, + /* 0x19 */ MSCRIPT_CMD_ID_JUMP, + /* 0x1A */ MSCRIPT_CMD_ID_CHECK_QUEST_ITEM, + /* 0x1B */ MSCRIPT_CMD_ID_CHECK_EVENT_INF, + /* 0x1C */ MSCRIPT_CMD_ID_SET_EVENT_INF, + /* 0x1D */ MSCRIPT_CMD_ID_UNSET_EVENT_INF, + /* 0x1E */ MSCRIPT_CMD_ID_CHECK_ITEM_ACTION, + /* 0x1F */ MSCRIPT_CMD_ID_CHECK_HAS_SONG, + /* 0x20 */ MSCRIPT_CMD_ID_CHECK_WORN_MASK, + /* 0x21 */ MSCRIPT_CMD_ID_CHECK_AFTER_TIME, + /* 0x22 */ MSCRIPT_CMD_ID_CHECK_BEFORE_TIME, + /* 0x23 */ MSCRIPT_CMD_ID_CHECK_SWITCH_FLAG, + /* 0x24 */ MSCRIPT_CMD_ID_SET_SWITCH_FLAG, + /* 0x25 */ MSCRIPT_CMD_ID_CHECK_ITEM, + /* 0x26 */ MSCRIPT_CMD_ID_CHECK_BETWEEN_TIME, + /* 0x27 */ MSCRIPT_CMD_ID_CHECK_ON_DAY, + /* 0x28 */ MSCRIPT_CMD_ID_CHECK_CALLBACK_CONTINUE, + /* 0x29 */ MSCRIPT_CMD_ID_CHECK_HAS_POWDER_KEG, + /* 0x2A */ MSCRIPT_CMD_ID_DELETE_ITEM, + /* 0x2B */ MSCRIPT_CMD_ID_CHECK_CALLBACK_MULTI, + /* 0x2C */ MSCRIPT_CMD_ID_PLAYER_TALK, + /* 0x2D */ MSCRIPT_CMD_ID_NOTEBOOK_EVENT, + /* 0x2E */ MSCRIPT_CMD_ID_AWAIT_TEXT_DONE, + /* 0x2F */ MSCRIPT_CMD_ID_JUMP_3, + /* 0x30 */ MSCRIPT_CMD_ID_PLAY_DECIDE, + /* 0x31 */ MSCRIPT_CMD_ID_PLAY_CANCEL, + /* 0x32 */ MSCRIPT_CMD_ID_PLAY_ERROR, + /* 0x33 */ MSCRIPT_CMD_ID_MAX +} MsgScriptCommandId; + +typedef struct { + /* 0x0 */ u8 cmd; +} MsgScriptCmdBase; + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 flagByte; + /* 0x2 */ u8 flagMask; + /* 0x3 */ u8 offsetH; + /* 0x4 */ u8 offsetL; +} MsgScriptCmdCheckWeekEventReg; // size = 0x5 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 offsetH; + /* 0x2 */ u8 offsetL; +} MsgScriptCmdCheckGoron; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 offsetH; + /* 0x2 */ u8 offsetL; +} MsgScriptCmdCheckZora; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 offsetH; + /* 0x2 */ u8 offsetL; +} MsgScriptCmdCheckDeku; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 offsetH; + /* 0x2 */ u8 offsetL; +} MsgScriptCmdCheckHuman; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 offset0H; + /* 0x2 */ u8 offset0L; + /* 0x3 */ u8 offset1H; + /* 0x4 */ u8 offset1L; + /* 0x5 */ u8 offset2H; + /* 0x6 */ u8 offset2L; +} MsgScriptCmdCheckTextChoice; // size = 0x7 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 itemIdH; + /* 0x2 */ u8 itemIdL; + /* 0x3 */ u8 offsetH; + /* 0x4 */ u8 offsetL; +} MsgScriptCmdOfferItem; // size = 0x5 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 offsetH; + /* 0x2 */ u8 offsetL; +} MsgScriptCmdAutotalk; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 rupeesH; + /* 0x2 */ u8 rupeesL; + /* 0x3 */ u8 offsetH; + /* 0x4 */ u8 offsetL; +} MsgScriptCmdCheckRupees; // size = 0x5 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 offsetH; + /* 0x2 */ u8 offsetL; +} MsgScriptCmdCheckCallback; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 offsetDay1H; + /* 0x2 */ u8 offsetDay1L; + /* 0x3 */ u8 offsetNight1H; + /* 0x4 */ u8 offsetNight1L; + /* 0x5 */ u8 offsetDay2H; + /* 0x6 */ u8 offsetDay2L; + /* 0x7 */ u8 offsetNight2H; + /* 0x8 */ u8 offsetNight2L; + /* 0x9 */ u8 offsetDay3H; + /* 0xA */ u8 offsetDay3L; + /* 0xB */ u8 offsetNight3H; + /* 0xC */ u8 offsetNight3L; +} MsgScriptCmdCheckDay; // size = 0xD + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 offsetH; + /* 0x2 */ u8 offsetL; +} MsgScriptCmdAwaitTextJump; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 textIdH; + /* 0x2 */ u8 textIdL; +} MsgScriptCmdBeginText; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 textIdH; + /* 0x2 */ u8 textIdL; +} MsgScriptCmdContinueText; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 flagByte; + /* 0x2 */ u8 flagMask; +} MsgScriptCmdSetWeekEventReg; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 flagH; + /* 0x2 */ u8 flagL; +} MsgScriptCmdSetCollectible; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 rupeesH; + /* 0x2 */ u8 rupeesL; +} MsgScriptCmdChangeRupees; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 offsetH; + /* 0x2 */ u8 offsetL; +} MsgScriptCmdJump; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 questItemH; + /* 0x2 */ u8 questItemL; + /* 0x3 */ u8 offsetH; + /* 0x4 */ u8 offsetL; +} MsgScriptCmdCheckQuestItem; // size = 0x5 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 flagByte; + /* 0x2 */ u8 flagMask; + /* 0x3 */ u8 offsetH; + /* 0x4 */ u8 offsetL; +} MsgScriptCmdCheckEventInf; // size = 0x5 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 flagByte; + /* 0x2 */ u8 flagMask; +} MsgScriptCmdSetEventInf; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 flagByte; + /* 0x2 */ u8 flagMask; +} MsgScriptCmdUnsetEventInf; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 itemActionH; + /* 0x2 */ u8 itemActionL; + /* 0x3 */ u8 offsetEqualH; + /* 0x4 */ u8 offsetEqualL; + /* 0x5 */ u8 offsetDefaultH; + /* 0x6 */ u8 offsetDefaultL; + /* 0x7 */ u8 offsetContinueH; + /* 0x8 */ u8 offsetContinueL; +} MsgScriptCmdCheckItemAction; // size = 0x9 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 songH; + /* 0x2 */ u8 songL; + /* 0x3 */ u8 offsetH; + /* 0x4 */ u8 offsetL; +} MsgScriptCmdCheckHasSong; // size = 0x5 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 maskH; + /* 0x2 */ u8 maskL; + /* 0x3 */ u8 offsetH; + /* 0x4 */ u8 offsetL; +} MsgScriptCmdCheckWornMask; // size = 0x5 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 hr; + /* 0x2 */ u8 min; + /* 0x3 */ u8 offsetH; + /* 0x4 */ u8 offsetL; +} MsgScriptCmdCheckAfterTime; // size = 0x5 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 hr; + /* 0x2 */ u8 min; + /* 0x3 */ u8 offsetH; + /* 0x4 */ u8 offsetL; +} MsgScriptCmdCheckBeforeTime; // size = 0x5 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 flagH; + /* 0x2 */ u8 flagL; + /* 0x3 */ u8 offsetH; + /* 0x4 */ u8 offsetL; +} MsgScriptCmdCheckSwitchFlag; // size = 0x5 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 flagH; + /* 0x2 */ u8 flagL; +} MsgScriptCmdSetSwitchFlag; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 itemH; + /* 0x2 */ u8 itemL; + /* 0x3 */ u8 offsetH; + /* 0x4 */ u8 offsetL; +} MsgScriptCmdCheckItem; // size = 0x5 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 startHr; + /* 0x2 */ u8 startMin; + /* 0x3 */ u8 endHr; + /* 0x4 */ u8 endMin; + /* 0x5 */ u8 offsetH; + /* 0x6 */ u8 offsetL; +} MsgScriptCmdCheckBetweenTime; // size = 0x7 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 dayH; + /* 0x2 */ u8 dayL; + /* 0x3 */ u8 offsetH; + /* 0x4 */ u8 offsetL; +} MsgScriptCmdCheckOnDay; // size = 0x5 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 offsetH; + /* 0x2 */ u8 offsetL; +} MsgScriptCmdCheckCallbackContinue; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 offsetH; + /* 0x2 */ u8 offsetL; +} MsgScriptCmdCheckHasPowderKeg; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 itemH; + /* 0x2 */ u8 itemL; +} MsgScriptCmdDeleteItem; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 offset1H; + /* 0x2 */ u8 offset1L; + /* 0x3 */ u8 offset2H; + /* 0x4 */ u8 offset2L; + /* 0x5 */ u8 offset3H; + /* 0x6 */ u8 offset3L; +} MsgScriptCmdCheckCallbackMulti; // size = 0x7 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 textIdH; + /* 0x2 */ u8 textIdL; +} MsgScriptCmdPlayerTalk; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 eventH; + /* 0x2 */ u8 eventL; +} MsgScriptCmdBombersNotebook; // size = 0x3 + +typedef struct { + /* 0x0 */ MsgScriptCmdBase base; + /* 0x1 */ u8 offsetH; + /* 0x2 */ u8 offsetL; +} MsgScriptCmdJump3; // size = 0x3 + +#define MSCRIPT_CMD_CHECK_WEEK_EVENT_REG(reg, skip) \ + MSCRIPT_CMD_ID_CHECK_WEEK_EVENT_REG, SCRIPT_UNPACK_16(reg), SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_CHECK_GORON(skip) \ + MSCRIPT_CMD_ID_CHECK_GORON, SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_CHECK_ZORA(skip) \ + MSCRIPT_CMD_ID_CHECK_ZORA, SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_CHECK_DEKU(skip) \ + MSCRIPT_CMD_ID_CHECK_DEKU, SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_CHECK_HUMAN(skip) \ + MSCRIPT_CMD_ID_CHECK_HUMAN, SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_CHECK_TEXT_CHOICE(skip0, skip1, skip2) \ + MSCRIPT_CMD_ID_CHECK_TEXT_CHOICE, SCRIPT_UNPACK_16(skip0), SCRIPT_UNPACK_16(skip1), SCRIPT_UNPACK_16(skip2) + +#define MSCRIPT_CMD_OFFER_ITEM(item, skip) \ + MSCRIPT_CMD_ID_OFFER_ITEM, SCRIPT_UNPACK_16(item), SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_AUTOTALK(skip) \ + MSCRIPT_CMD_ID_AUTOTALK, SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_CHECK_RUPEES(rupees, skip) \ + MSCRIPT_CMD_ID_CHECK_RUPEES, SCRIPT_UNPACK_16(rupees), SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_CHECK_CALLBACK(skip) \ + MSCRIPT_CMD_ID_CHECK_CALLBACK, SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_CHECK_DAY(skipDay1, skipNight1, skipDay2, skipNight2, skipDay3, skipNight3) \ + MSCRIPT_CMD_ID_CHECK_DAY, \ + SCRIPT_UNPACK_16(skipDay1), SCRIPT_UNPACK_16(skipNight1), \ + SCRIPT_UNPACK_16(skipDay2), SCRIPT_UNPACK_16(skipNight2), \ + SCRIPT_UNPACK_16(skipDay3), SCRIPT_UNPACK_16(skipNight3) + +#define MSCRIPT_CMD_AWAIT_TEXT_JUMP(skip) \ + MSCRIPT_CMD_ID_AWAIT_TEXT_JUMP, SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_AWAIT_TEXT() \ + MSCRIPT_CMD_ID_AWAIT_TEXT + +#define MSCRIPT_CMD_AWAIT_TEXT_END() \ + MSCRIPT_CMD_ID_AWAIT_TEXT_END + +#define MSCRIPT_CMD_BEGIN_TEXT(arg) \ + MSCRIPT_CMD_ID_BEGIN_TEXT, SCRIPT_UNPACK_16(arg) + +#define MSCRIPT_CMD_CONTINUE_TEXT(arg) \ + MSCRIPT_CMD_ID_CONTINUE_TEXT, SCRIPT_UNPACK_16(arg) + +#define MSCRIPT_CMD_DONE() \ + MSCRIPT_CMD_ID_DONE + +#define MSCRIPT_CMD_SET_WEEK_EVENT_REG(reg) \ + MSCRIPT_CMD_ID_SET_WEEK_EVENT_REG, SCRIPT_UNPACK_16(reg) + +#define MSCRIPT_CMD_CLOSE_TEXT() \ + MSCRIPT_CMD_ID_CLOSE_TEXT + +#define MSCRIPT_CMD_SET_COLLECTIBLE(collectFlag) \ + MSCRIPT_CMD_ID_SET_COLLECTIBLE, SCRIPT_UNPACK_16(collectFlag) + +#define MSCRIPT_CMD_CHANGE_RUPEES(num) \ + MSCRIPT_CMD_ID_CHANGE_RUPEES, SCRIPT_UNPACK_16(num) + +#define MSCRIPT_CMD_PAUSE() \ + MSCRIPT_CMD_ID_PAUSE + +#define MSCRIPT_CMD_UNSET_AUTOTALK() \ + MSCRIPT_CMD_ID_UNSET_AUTOTALK + +#define MSCRIPT_CMD_FOCUS_TO_CHILD() \ + MSCRIPT_CMD_ID_FOCUS_TO_CHILD + +#define MSCRIPT_CMD_FOCUS_TO_SELF() \ + MSCRIPT_CMD_ID_FOCUS_TO_SELF + +#define MSCRIPT_CMD_JUMP(skip) \ + MSCRIPT_CMD_ID_JUMP, SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_CHECK_QUEST_ITEM(questItem, skip) \ + MSCRIPT_CMD_ID_CHECK_QUEST_ITEM, SCRIPT_UNPACK_16(questItem), SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_CHECK_EVENT_INF(flag, skip) \ + MSCRIPT_CMD_ID_CHECK_EVENT_INF, SCRIPT_UNPACK_8(((flag) >> 4)), SCRIPT_UNPACK_8((1 << ((flag) & 0xF))), SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_SET_EVENT_INF(flag) \ + MSCRIPT_CMD_ID_SET_EVENT_INF, SCRIPT_UNPACK_8(((flag) >> 4)), SCRIPT_UNPACK_8((1 << ((flag) & 0xF))) + +#define MSCRIPT_CMD_EVENT_INF(flag) \ + MSCRIPT_CMD_ID_UNSET_EVENT_INF, SCRIPT_UNPACK_8(((flag) >> 4)), SCRIPT_UNPACK_8((1 << ((flag) & 0xF))) + +#define MSCRIPT_CMD_CHECK_ITEM_ACTION(itemAction, skipEqual, skipDefault, skipContinue) \ + MSCRIPT_CMD_ID_CHECK_ITEM_ACTION, SCRIPT_UNPACK_16(itemAction), SCRIPT_UNPACK_16(skipEqual), SCRIPT_UNPACK_16(skipDefault), SCRIPT_UNPACK_16(skipContinue) + +#define MSCRIPT_CMD_CHECK_HAS_SONG(questItem, skip) \ + MSCRIPT_CMD_ID_CHECK_HAS_SONG, SCRIPT_UNPACK_16(questItem), SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_CHECK_WORN_MASK(mask, skip) \ + MSCRIPT_CMD_ID_CHECK_WORN_MASK, SCRIPT_UNPACK_16(mask), SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_CHECK_AFTER_TIME(hours, minutes, skip) \ + MSCRIPT_CMD_ID_CHECK_AFTER_TIME, SCRIPT_UNPACK_8(hours), SCRIPT_UNPACK_8(minutes), SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_CHECK_BEFORE_TIME(hours, minutes, skip) \ + MSCRIPT_CMD_ID_CHECK_BEFORE_TIME, SCRIPT_UNPACK_8(hours), SCRIPT_UNPACK_8(minutes), SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_CHECK_SWITCH_FLAG(switchFlag, skip) \ + MSCRIPT_CMD_ID_CHECK_SWITCH_FLAG, SCRIPT_UNPACK_16(switchFlag), SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_SET_SWITCH_FLAG(switchFlag) \ + MSCRIPT_CMD_ID_SET_SWITCH_FLAG, SCRIPT_UNPACK_16(switchFlag) + +#define MSCRIPT_CMD_CHECK_ITEM(item, skip) \ + MSCRIPT_CMD_ID_CHECK_ITEM, SCRIPT_UNPACK_16(item), SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_BETWEEN_TIME(hours1, minutes1, hours2, minutes2, skip) \ + MSCRIPT_CMD_ID_CHECK_BETWEEN_TIME, SCRIPT_UNPACK_8(hours1), SCRIPT_UNPACK_8(minutes1), SCRIPT_UNPACK_8(hours2), SCRIPT_UNPACK_8(minutes2), SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_CHECK_IN_DAY(day, skip) \ + MSCRIPT_CMD_ID_CHECK_ON_DAY, SCRIPT_UNPACK_16(day), SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_CHECK_CALLBACK_CONTINUE(skip) \ + MSCRIPT_CMD_ID_CHECK_CALLBACK_CONTINUE, SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_CHECK_HAS_POWDER_KEG(skip) \ + MSCRIPT_CMD_ID_CHECK_HAS_POWDER_KEG, SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_DELETE_ITEM(item) \ + MSCRIPT_CMD_ID_DELETE_ITEM, SCRIPT_UNPACK_16(item) + +#define MSCRIPT_CMD_CHECK_CALLBACK_MULTI(skip1, skip2, skip3) \ + MSCRIPT_CMD_ID_CHECK_CALLBACK_MULTI, SCRIPT_UNPACK_16(skip1), SCRIPT_UNPACK_16(skip2), SCRIPT_UNPACK_16(skip3) + +#define MSCRIPT_CMD_PLAYER_TALK(textId) \ + MSCRIPT_CMD_ID_PLAYER_TALK, SCRIPT_UNPACK_16(textId) + +#define MSCRIPT_CMD_NOTEBOOK_EVENT(event) \ + MSCRIPT_CMD_ID_NOTEBOOK_EVENT, SCRIPT_UNPACK_16(event) + +#define MSCRIPT_CMD_AWAIT_TEXT_DONE() \ + MSCRIPT_CMD_ID_AWAIT_TEXT_DONE + +#define MSCRIPT_CMD_JUMP_3(skip) \ + MSCRIPT_CMD_ID_JUMP_3, SCRIPT_UNPACK_16(skip) + +#define MSCRIPT_CMD_PLAY_DECIDE() \ + MSCRIPT_CMD_ID_PLAY_DECIDE + +#define MSCRIPT_CMD_PLAY_CANCEL() \ + MSCRIPT_CMD_ID_PLAY_CANCEL + +#define MSCRIPT_CMD_PLAY_ERROR() \ + MSCRIPT_CMD_ID_PLAY_ERROR + +typedef u8 MsgScript; + +typedef s32 (*MsgScriptCallback)(struct Actor* thisx, struct PlayState* play); + +s32 MsgEvent_RunScript(Actor* actor, struct PlayState* play, MsgScript* script, MsgScriptCallback callback, s32* pos); + +#endif diff --git a/include/z64player.h b/include/z64player.h index a5c531ca8..2f2650705 100644 --- a/include/z64player.h +++ b/include/z64player.h @@ -1388,7 +1388,7 @@ void func_80123E90(struct PlayState* play, Actor* actor); s32 func_80123F2C(struct PlayState* play, s32 ammo); bool Player_IsBurningStickInRange(struct PlayState* play, Vec3f* pos, f32 xzRange, f32 yRange); u8 Player_GetStrength(void); -u8 Player_GetMask(struct PlayState* play); +PlayerMask Player_GetMask(struct PlayState* play); void Player_RemoveMask(struct PlayState* play); bool Player_HasMirrorShieldEquipped(struct PlayState* play); bool Player_IsHoldingMirrorShield(struct PlayState* play); diff --git a/include/z64schedule.h b/include/z64schedule.h index 1fabc7c5d..9db9379cd 100644 --- a/include/z64schedule.h +++ b/include/z64schedule.h @@ -1,7 +1,7 @@ #ifndef Z64SCHEDULE_H #define Z64SCHEDULE_H -#include "ultra64.h" +#include "z64scripts.h" /** * Schedule is a subsystem that acts as a way to make decisions based on the @@ -29,33 +29,26 @@ struct PlayState; -// Macro to convert the time format used in the save struct into the format used in Schedule -#define SCHEDULE_CONVERT_TIME(time) ((s32)((time) - 0x10000 / 360 * 90)) - -#define SCHEDULE_TIME(hour, minute) SCHEDULE_CONVERT_TIME((((hour)*60.0f) + (minute)) * (0x10000 / 60 / 24.0f)) - -#define SCHEDULE_TIME_NOW SCHEDULE_CONVERT_TIME(CURRENT_TIME) - typedef enum ScheduleCommandId { - /* 0x00 */ SCHEDULE_CMD_ID_CHECK_FLAG_S, // Checks if a weekEventReg flag is set and branches if so, short range branch - /* 0x01 */ SCHEDULE_CMD_ID_CHECK_FLAG_L, // Checks if a weekEventReg flag is set and branches if so, long range branch - /* 0x02 */ SCHEDULE_CMD_ID_CHECK_TIME_RANGE_S, // Checks if the current time is within the range of the two provided times and branches if so, short range branch - /* 0x03 */ SCHEDULE_CMD_ID_CHECK_TIME_RANGE_L, // Checks if the current time is within the range of the two provided times and branches if so, long range branch - /* 0x04 */ SCHEDULE_CMD_ID_RET_VAL_L, // Ends script and returns 2-byte value (Note: bugged as the return value size is only 1 byte in the struct) - /* 0x05 */ SCHEDULE_CMD_ID_RET_NONE, // Ends script without returning anything - /* 0x06 */ SCHEDULE_CMD_ID_RET_EMPTY, // Ends script and indicates return without changing existing value - /* 0x07 */ SCHEDULE_CMD_ID_NOP, // No-Op - /* 0x08 */ SCHEDULE_CMD_ID_CHECK_MISC_S, // Special check based on items or masks and branches if check passes, short range branch - /* 0x09 */ SCHEDULE_CMD_ID_RET_VAL_S, // Ends script and returns byte value - /* 0x0A */ SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_S, // Checks if the current scene is not SceneId and branches if so, short range branch - /* 0x0B */ SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_L, // Checks if the current scene is not SceneId and branches if so, long range branch - /* 0x0C */ SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_S, // Checks if the current day is not Day and branches if so, short range branch - /* 0x0D */ SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_L, // Checks if the current day is not Day and branches if so, long range branch - /* 0x0E */ SCHEDULE_CMD_ID_RET_TIME, // Returns 2 time values - /* 0x0F */ SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_S, // Branches if the current time is less than the command time, short range branch - /* 0x10 */ SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_L, // Branches if the current time is less than the command time, long range branch - /* 0x11 */ SCHEDULE_CMD_ID_BRANCH_S, // Always branch, short range branch - /* 0x12 */ SCHEDULE_CMD_ID_BRANCH_L // Always branch, long range branch + /* 0x00 */ SCHEDULE_CMD_ID_CHECK_WEEK_EVENT_REG_S, // Checks if a weekEventReg flag is set and branches if so, short range branch + /* 0x01 */ SCHEDULE_CMD_ID_CHECK_WEEK_EVENT_REG_L, // Checks if a weekEventReg flag is set and branches if so, long range branch + /* 0x02 */ SCHEDULE_CMD_ID_CHECK_TIME_RANGE_S, // Checks if the current time is within the range of the two provided times and branches if so, short range branch + /* 0x03 */ SCHEDULE_CMD_ID_CHECK_TIME_RANGE_L, // Checks if the current time is within the range of the two provided times and branches if so, long range branch + /* 0x04 */ SCHEDULE_CMD_ID_RET_VAL_L, // Ends script and returns 2-byte value (Note: bugged as the return value size is only 1 byte in the struct) + /* 0x05 */ SCHEDULE_CMD_ID_RET_NONE, // Ends script without returning anything + /* 0x06 */ SCHEDULE_CMD_ID_RET_EMPTY, // Ends script and indicates return without changing existing value + /* 0x07 */ SCHEDULE_CMD_ID_NOP, // No-Op + /* 0x08 */ SCHEDULE_CMD_ID_CHECK_MISC_S, // Special check based on items or masks and branches if check passes, short range branch + /* 0x09 */ SCHEDULE_CMD_ID_RET_VAL_S, // Ends script and returns byte value + /* 0x0A */ SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_S, // Checks if the current scene is not SceneId and branches if so, short range branch + /* 0x0B */ SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_L, // Checks if the current scene is not SceneId and branches if so, long range branch + /* 0x0C */ SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_S, // Checks if the current day is not Day and branches if so, short range branch + /* 0x0D */ SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_L, // Checks if the current day is not Day and branches if so, long range branch + /* 0x0E */ SCHEDULE_CMD_ID_RET_TIME, // Returns 2 time values + /* 0x0F */ SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_S, // Branches if the current time is less than the command time, short range branch + /* 0x10 */ SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_L, // Branches if the current time is less than the command time, long range branch + /* 0x11 */ SCHEDULE_CMD_ID_BRANCH_S, // Always branch, short range branch + /* 0x12 */ SCHEDULE_CMD_ID_BRANCH_L // Always branch, long range branch } ScheduleCommandId; typedef enum { @@ -80,7 +73,7 @@ typedef struct { /* 0x1 */ u8 flagByte; /* 0x2 */ u8 flagMask; /* 0x3 */ s8 offset; -} ScheduleCmdCheckFlagS; // size = 0x4 +} ScheduleCmdCheckWeekEventRegS; // size = 0x4 typedef struct { /* 0x0 */ ScheduleCmdBase base; @@ -88,7 +81,7 @@ typedef struct { /* 0x2 */ u8 flagMask; /* 0x3 */ u8 offsetH; /* 0x4 */ u8 offsetL; -} ScheduleCmdCheckFlagL; // size = 0x5 +} ScheduleCmdCheckWeekEventRegL; // size = 0x5 typedef struct { /* 0x0 */ ScheduleCmdBase base; @@ -198,23 +191,20 @@ typedef struct { /* 0x2 */ u8 offsetL; } ScheduleCmdBranchL; // size = 0x3 -#define SCHEDULE_PACK_S16(val) \ - ((val) >> 8) & 0xFF, (val) & 0xFF - -#define SCHEDULE_CMD_CHECK_FLAG_S(flag, offset) \ - SCHEDULE_CMD_ID_CHECK_FLAG_S, SCHEDULE_PACK_S16(flag), (offset) +#define SCHEDULE_CMD_CHECK_WEEK_EVENT_REG_S(flag, offset) \ + SCHEDULE_CMD_ID_CHECK_WEEK_EVENT_REG_S, SCRIPT_UNPACK_16(flag), SCRIPT_UNPACK_8(offset) -#define SCHEDULE_CMD_CHECK_FLAG_L(flag, offset) \ - SCHEDULE_CMD_ID_CHECK_FLAG_L, SCHEDULE_PACK_S16(flag), SCHEDULE_PACK_S16(offset) +#define SCHEDULE_CMD_CHECK_WEEK_EVENT_REG_L(flag, offset) \ + SCHEDULE_CMD_ID_CHECK_WEEK_EVENT_REG_L, SCRIPT_UNPACK_16(flag), SCRIPT_UNPACK_16(offset) #define SCHEDULE_CMD_CHECK_TIME_RANGE_S(startHr, startMin, endHr, endMin, offset) \ - SCHEDULE_CMD_ID_CHECK_TIME_RANGE_S, (startHr), (startMin), (endHr), (endMin), (offset) + SCHEDULE_CMD_ID_CHECK_TIME_RANGE_S, SCRIPT_UNPACK_8(startHr), SCRIPT_UNPACK_8(startMin), SCRIPT_UNPACK_8(endHr), SCRIPT_UNPACK_8(endMin), SCRIPT_UNPACK_8(offset) #define SCHEDULE_CMD_CHECK_TIME_RANGE_L(startHr, startMin, endHr, endMin, offset) \ - SCHEDULE_CMD_ID_CHECK_TIME_RANGE_L, (startHr), (startMin), (endHr), (endMin), SCHEDULE_PACK_S16(offset) + SCHEDULE_CMD_ID_CHECK_TIME_RANGE_L, SCRIPT_UNPACK_8(startHr), SCRIPT_UNPACK_8(startMin), SCRIPT_UNPACK_8(endHr), SCRIPT_UNPACK_8(endMin), SCRIPT_UNPACK_16(offset) #define SCHEDULE_CMD_RET_VAL_L(result) \ - SCHEDULE_CMD_ID_RET_VAL_L, SCHEDULE_PACK_S16(result) + SCHEDULE_CMD_ID_RET_VAL_L, SCRIPT_UNPACK_16(result) #define SCHEDULE_CMD_RET_NONE() \ SCHEDULE_CMD_ID_RET_NONE @@ -223,40 +213,40 @@ typedef struct { SCHEDULE_CMD_ID_RET_EMPTY, #define SCHEDULE_CMD_NOP(unk0, unk1, unk2) \ - SCHEDULE_CMD_ID_NOP, (unk0), (unk1), (unk2) + SCHEDULE_CMD_ID_NOP, SCRIPT_UNPACK_8(unk0), SCRIPT_UNPACK_8(unk1), SCRIPT_UNPACK_8(unk2) #define SCHEDULE_CMD_CHECK_MISC_S(which, offset) \ - SCHEDULE_CMD_ID_CHECK_MISC_S, (which), (offset) + SCHEDULE_CMD_ID_CHECK_MISC_S, SCRIPT_UNPACK_8(which), SCRIPT_UNPACK_8(offset) #define SCHEDULE_CMD_RET_VAL_S(result) \ - SCHEDULE_CMD_ID_RET_VAL_S, (result) + SCHEDULE_CMD_ID_RET_VAL_S, SCRIPT_UNPACK_8(result) #define SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(scene, offset) \ - SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_S, SCHEDULE_PACK_S16(scene), (offset) + SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_S, SCRIPT_UNPACK_16(scene), SCRIPT_UNPACK_8(offset) #define SCHEDULE_CMD_CHECK_NOT_IN_SCENE_L(scene, offset) \ - SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_L, SCHEDULE_PACK_S16(scene), SCHEDULE_PACK_S16(offset) + SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_L, SCRIPT_UNPACK_16(scene), SCRIPT_UNPACK_16(offset) #define SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(day, offset) \ - SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_S, SCHEDULE_PACK_S16(day), (offset) + SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_S, SCRIPT_UNPACK_16(day), SCRIPT_UNPACK_8(offset) #define SCHEDULE_CMD_CHECK_NOT_IN_DAY_L(day, offset) \ - SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_L, SCHEDULE_PACK_S16(day), SCHEDULE_PACK_S16(offset) + SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_L, SCRIPT_UNPACK_16(day), SCRIPT_UNPACK_16(offset) #define SCHEDULE_CMD_RET_TIME(time0Hr, time0Min, time1Hr, time1Min, result) \ - SCHEDULE_CMD_ID_RET_TIME, (time0Hr), (time0Min), (time1Hr), (time1Min), (result) + SCHEDULE_CMD_ID_RET_TIME, SCRIPT_UNPACK_8(time0Hr), SCRIPT_UNPACK_8(time0Min), SCRIPT_UNPACK_8(time1Hr), SCRIPT_UNPACK_8(time1Min), SCRIPT_UNPACK_8(result) #define SCHEDULE_CMD_CHECK_BEFORE_TIME_S(timeHr, timeMin, offset) \ - SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_S, (timeHr), (timeMin), (offset) + SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_S, SCRIPT_UNPACK_8(timeHr), SCRIPT_UNPACK_8(timeMin), SCRIPT_UNPACK_8(offset) #define SCHEDULE_CMD_CHECK_BEFORE_TIME_L(timeHr, timeMin, offset) \ - SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_L, (timeHr), (timeMin), SCHEDULE_PACK_S16(offset) + SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_L, SCRIPT_UNPACK_8(timeHr), SCRIPT_UNPACK_8(timeMin), SCRIPT_UNPACK_16(offset) #define SCHEDULE_CMD_BRANCH_S(offset) \ - SCHEDULE_CMD_ID_BRANCH_S, (offset) + SCHEDULE_CMD_ID_BRANCH_S, SCRIPT_UNPACK_8(offset) #define SCHEDULE_CMD_BRANCH_L(offset) \ - SCHEDULE_CMD_ID_BRANCH_L, SCHEDULE_PACK_S16(offset) + SCHEDULE_CMD_ID_BRANCH_L, SCRIPT_UNPACK_16(offset) typedef u8 ScheduleScript; diff --git a/include/z64scripts.h b/include/z64scripts.h new file mode 100644 index 000000000..2b5c8a6a5 --- /dev/null +++ b/include/z64scripts.h @@ -0,0 +1,24 @@ +#ifndef Z64SCRIPTS_H +#define Z64SCRIPTS_H + +#include "PR/ultratypes.h" + +// Macros to convert the time format used in the save struct into the format used in scripts (Schedule or Message) +#define SCRIPT_CONVERT_TIME(time) ((s32)((time) - 0x10000 / 360 * 90)) + +#define SCRIPT_CALC_TIME(hour, minute, dest, temp) \ + (temp) = (hour)*60.0f; \ + (temp) += (minute); \ + (dest) = (temp) * (0x10000 / 60 / 24.0f); \ + (dest) = SCRIPT_CONVERT_TIME(dest) + +#define SCRIPT_TIME(hour, minute) SCRIPT_CONVERT_TIME((((hour)*60.0f) + (minute)) * (0x10000 / 60 / 24.0f)) + +#define SCRIPT_TIME_NOW SCRIPT_CONVERT_TIME(CURRENT_TIME) + +#define SCRIPT_PACK_16(h, l) (((h) << 8) | (l)) + +#define SCRIPT_UNPACK_8(v) (u8)(v) +#define SCRIPT_UNPACK_16(v) (u8)_SHIFTR(v, 8, 8), (u8)_SHIFTR(v, 0, 8) + +#endif |
