diff options
| author | Derek Hensley <hensley.derek58@gmail.com> | 2024-10-12 17:03:44 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-12 21:03:44 -0300 |
| commit | 0514d963d9fcf16cc77f39880445db5271766b3d (patch) | |
| tree | c92960ec175008b3b3be89427cf0b799fd5206c3 /include/message_data_fmt_nes.h | |
| parent | 7bb0e9287d4b6978273c9b015b3f54aad1631bae (diff) | |
Port over OoT's new text pipeline (#1685)
* Port OoT's new msgdis and msgenc
* format
* Remove item_ids try block
* Update assets/text/charmap.txt
Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com>
---------
Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com>
Diffstat (limited to 'include/message_data_fmt_nes.h')
| -rw-r--r-- | include/message_data_fmt_nes.h | 526 |
1 files changed, 204 insertions, 322 deletions
diff --git a/include/message_data_fmt_nes.h b/include/message_data_fmt_nes.h index f2f58f96e..949cf9465 100644 --- a/include/message_data_fmt_nes.h +++ b/include/message_data_fmt_nes.h @@ -1,339 +1,221 @@ #ifndef MESSAGE_DATA_FMT_NES_H #define MESSAGE_DATA_FMT_NES_H -/* - * Macros to create both a constant and a string literal from a magic value - * The constants are used in code files when parsing text for various purposes - * The strings are used in the message_data_static files themselves, as you can only concat strings with other strings - */ - -#ifndef GLUE -#define GLUE(a, b) a##b -#endif - -#define STRINGIFY(s) #s -#define EXPAND_AND_STRINGIFY(s) STRINGIFY(s) - -#define HEX(N) GLUE(0x, N) -#define STR(N) EXPAND_AND_STRINGIFY(GLUE(\x, N)) - +#include "sfx.h" // For sfx ids /* * Text control characters */ -// Control character magic values, in 2-digit hex without prefix -#define CTRL_COLOR_DEFAULT 00 -#define CTRL_COLOR_RED 01 -#define CTRL_COLOR_GREEN 02 -#define CTRL_COLOR_BLUE 03 -#define CTRL_COLOR_YELLOW 04 -#define CTRL_COLOR_LIGHTBLUE 05 -#define CTRL_COLOR_PINK 06 -#define CTRL_COLOR_SILVER 07 -#define CTRL_COLOR_ORANGE 08 -#define CTRL_TEXT_SPEED 0A // Note this should take an arg 0 to 6, but always just sets next decode char as 0 -#define CTRL_HS_BOAT_ARCHERY 0B -#define CTRL_STRAY_FAIRIES 0C -#define CTRL_TOKENS 0D -#define CTRL_POINTS_TENS 0E -#define CTRL_POINTS_THOUSANDS 0F -#define CTRL_BOX_BREAK 10 -#define CTRL_NEWLINE 11 -#define CTRL_BOX_BREAK2 12 -#define CTRL_CARRIAGE_RETURN 13 -#define CTRL_SHIFT 14 -#define CTRL_CONTINUE 15 -#define CTRL_NAME 16 -#define CTRL_QUICKTEXT_ENABLE 17 -#define CTRL_QUICKTEXT_DISABLE 18 -#define CTRL_EVENT 19 -#define CTRL_PERSISTENT 1A -#define CTRL_BOX_BREAK_DELAYED 1B -#define CTRL_FADE 1C -#define CTRL_FADE_SKIPPABLE 1D -#define CTRL_SFX 1E -#define CTRL_DELAY 1F -#define CTRL_BTN_A B0 -#define CTRL_BTN_B B1 -#define CTRL_BTN_C B2 -#define CTRL_BTN_L B3 -#define CTRL_BTN_R B4 -#define CTRL_BTN_Z B5 -#define CTRL_BTN_CUP B6 -#define CTRL_BTN_CDOWN B7 -#define CTRL_BTN_CLEFT B8 -#define CTRL_BTN_CRIGHT B9 -#define CTRL_Z_TARGET BA -#define CTRL_CONTROL_PAD BB -#define CTRL_END BF -#define CTRL_BACKGROUND C1 -#define CTRL_TWO_CHOICE C2 -#define CTRL_THREE_CHOICE C3 -#define CTRL_TIMER_POSTMAN C4 -#define CTRL_TIMER_MINIGAME_1 C5 -#define CTRL_TIMER_2 C6 -#define CTRL_TIMER_MOON_CRASH C7 -#define CTRL_TIMER_MINIGAME_2 C8 -#define CTRL_TIMER_ENV_HAZARD C9 -#define CTRL_TIME CA -#define CTRL_CHEST_FLAGS CB -#define CTRL_INPUT_BANK CC -#define CTRL_RUPEES_SELECTED CD -#define CTRL_RUPEES_TOTAL CE -#define CTRL_TIME_UNTIL_MOON_CRASH CF -#define CTRL_INPUT_DOGGY_RACETRACK_BET D0 -#define CTRL_INPUT_BOMBER_CODE D1 -#define CTRL_PAUSE_MENU D2 -#define CTRL_TIME_SPEED D3 -#define CTRL_OWL_WARP D4 -#define CTRL_INPUT_LOTTERY_CODE D5 -#define CTRL_SPIDER_HOUSE_MASK_CODE D6 -#define CTRL_STRAY_FAIRIES_LEFT_WOODFALL D7 -#define CTRL_STRAY_FAIRIES_LEFT_SNOWHEAD D8 -#define CTRL_STRAY_FAIRIES_LEFT_GREAT_BAY D9 -#define CTRL_STRAY_FAIRIES_LEFT_STONE_TOWER DA -#define CTRL_POINTS_BOAT_ARCHERY DB // Seems to be the exact same as CTRL_POINTS_THOUSANDS -#define CTRL_LOTTERY_CODE DC -#define CTRL_LOTTERY_CODE_GUESS DD -#define CTRL_HELD_ITEM_PRICE DE -#define CTRL_BOMBER_CODE DF -#define CTRL_EVENT2 E0 // Seems to be the exact same as CTRL_EVENT -#define CTRL_SPIDER_HOUSE_MASK_CODE_1 E1 -#define CTRL_SPIDER_HOUSE_MASK_CODE_2 E2 -#define CTRL_SPIDER_HOUSE_MASK_CODE_3 E3 -#define CTRL_SPIDER_HOUSE_MASK_CODE_4 E4 -#define CTRL_SPIDER_HOUSE_MASK_CODE_5 E5 -#define CTRL_SPIDER_HOUSE_MASK_CODE_6 E6 -#define CTRL_HOURS_UNTIL_MOON_CRASH E7 -#define CTRL_TIME_UNTIL_NEW_DAY E8 -#define CTRL_HS_POINTS_BANK_RUPEES F0 -#define CTRL_HS_POINTS_UNK_1 F1 -#define CTRL_HS_POINTS_FISHING F2 -#define CTRL_HS_TIME_BOAT_ARCHERY F3 // Note this interprets the highscore value as a time (not the actual timer for the minigame) -#define CTRL_HS_TIME_HORSE_BACK_BALLOON F4 // Note this interprets the highscore value as a time (not the actual timer for the minigame) -#define CTRL_HS_TIME_LOTTERY_GUESS F5 -#define CTRL_HS_TOWN_SHOOTING_GALLERY F6 -#define CTRL_HS_UNK_1 F7 -#define CTRL_HS_UNK_3_LOWER F8 -#define CTRL_HS_HORSE_BACK_BALLOON F9 -#define CTRL_HS_DEKU_PLAYGROUND_DAY_1 FA -#define CTRL_HS_DEKU_PLAYGROUND_DAY_2 FB -#define CTRL_HS_DEKU_PLAYGROUND_DAY_3 FC -#define CTRL_DEKU_PLAYGROUND_NAME_DAY_1 FD -#define CTRL_DEKU_PLAYGROUND_NAME_DAY_2 FE -#define CTRL_DEKU_PLAYGROUND_NAME_DAY_3 FF +#define MESSAGE_COLOR_DEFAULT 0x00 +#define MESSAGE_COLOR_RED 0x01 +#define MESSAGE_COLOR_GREEN 0x02 +#define MESSAGE_COLOR_BLUE 0x03 +#define MESSAGE_COLOR_YELLOW 0x04 +#define MESSAGE_COLOR_LIGHTBLUE 0x05 +#define MESSAGE_COLOR_PINK 0x06 +#define MESSAGE_COLOR_SILVER 0x07 +#define MESSAGE_COLOR_ORANGE 0x08 +#define MESSAGE_TEXT_SPEED 0x0A // Note this should take an arg 0 to 6, but always just sets next decode char as 0 +#define MESSAGE_HS_BOAT_ARCHERY 0x0B +#define MESSAGE_STRAY_FAIRIES 0x0C +#define MESSAGE_TOKENS 0x0D +#define MESSAGE_POINTS_TENS 0x0E +#define MESSAGE_POINTS_THOUSANDS 0x0F +#define MESSAGE_BOX_BREAK 0x10 +#define MESSAGE_NEWLINE 0x11 +#define MESSAGE_BOX_BREAK2 0x12 +#define MESSAGE_CARRIAGE_RETURN 0x13 +#define MESSAGE_SHIFT 0x14 +#define MESSAGE_CONTINUE 0x15 +#define MESSAGE_NAME 0x16 +#define MESSAGE_QUICKTEXT_ENABLE 0x17 +#define MESSAGE_QUICKTEXT_DISABLE 0x18 +#define MESSAGE_EVENT 0x19 +#define MESSAGE_PERSISTENT 0x1A +#define MESSAGE_BOX_BREAK_DELAYED 0x1B +#define MESSAGE_FADE 0x1C +#define MESSAGE_FADE_SKIPPABLE 0x1D +#define MESSAGE_SFX 0x1E +#define MESSAGE_DELAY 0x1F +#define MESSAGE_BTN_A 0xB0 +#define MESSAGE_BTN_B 0xB1 +#define MESSAGE_BTN_C 0xB2 +#define MESSAGE_BTN_L 0xB3 +#define MESSAGE_BTN_R 0xB4 +#define MESSAGE_BTN_Z 0xB5 +#define MESSAGE_BTN_CUP 0xB6 +#define MESSAGE_BTN_CDOWN 0xB7 +#define MESSAGE_BTN_CLEFT 0xB8 +#define MESSAGE_BTN_CRIGHT 0xB9 +#define MESSAGE_Z_TARGET 0xBA +#define MESSAGE_CONTROL_PAD 0xBB +#define MESSAGE_END 0xBF +#define MESSAGE_BACKGROUND 0xC1 +#define MESSAGE_TWO_CHOICE 0xC2 +#define MESSAGE_THREE_CHOICE 0xC3 +#define MESSAGE_TIMER_POSTMAN 0xC4 +#define MESSAGE_TIMER_MINIGAME_1 0xC5 +#define MESSAGE_TIMER_2 0xC6 +#define MESSAGE_TIMER_MOON_CRASH 0xC7 +#define MESSAGE_TIMER_MINIGAME_2 0xC8 +#define MESSAGE_TIMER_ENV_HAZARD 0xC9 +#define MESSAGE_TIME 0xCA +#define MESSAGE_CHEST_FLAGS 0xCB +#define MESSAGE_INPUT_BANK 0xCC +#define MESSAGE_RUPEES_SELECTED 0xCD +#define MESSAGE_RUPEES_TOTAL 0xCE +#define MESSAGE_TIME_UNTIL_MOON_CRASH 0xCF +#define MESSAGE_INPUT_DOGGY_RACETRACK_BET 0xD0 +#define MESSAGE_INPUT_BOMBER_CODE 0xD1 +#define MESSAGE_PAUSE_MENU 0xD2 +#define MESSAGE_TIME_SPEED 0xD3 +#define MESSAGE_OWL_WARP 0xD4 +#define MESSAGE_INPUT_LOTTERY_CODE 0xD5 +#define MESSAGE_SPIDER_HOUSE_MASK_CODE 0xD6 +#define MESSAGE_STRAY_FAIRIES_LEFT_WOODFALL 0xD7 +#define MESSAGE_STRAY_FAIRIES_LEFT_SNOWHEAD 0xD8 +#define MESSAGE_STRAY_FAIRIES_LEFT_GREAT_BAY 0xD9 +#define MESSAGE_STRAY_FAIRIES_LEFT_STONE_TOWER 0xDA +#define MESSAGE_POINTS_BOAT_ARCHERY 0xDB // Seems to be the exact same as CTRL_POINTS_THOUSANDS +#define MESSAGE_LOTTERY_CODE 0xDC +#define MESSAGE_LOTTERY_CODE_GUESS 0xDD +#define MESSAGE_HELD_ITEM_PRICE 0xDE +#define MESSAGE_BOMBER_CODE 0xDF +#define MESSAGE_EVENT2 0xE0 // Seems to be the exact same as CTRL_EVENT +#define MESSAGE_SPIDER_HOUSE_MASK_CODE_1 0xE1 +#define MESSAGE_SPIDER_HOUSE_MASK_CODE_2 0xE2 +#define MESSAGE_SPIDER_HOUSE_MASK_CODE_3 0xE3 +#define MESSAGE_SPIDER_HOUSE_MASK_CODE_4 0xE4 +#define MESSAGE_SPIDER_HOUSE_MASK_CODE_5 0xE5 +#define MESSAGE_SPIDER_HOUSE_MASK_CODE_6 0xE6 +#define MESSAGE_HOURS_UNTIL_MOON_CRASH 0xE7 +#define MESSAGE_TIME_UNTIL_NEW_DAY 0xE8 +#define MESSAGE_HS_POINTS_BANK_RUPEES 0xF0 +#define MESSAGE_HS_POINTS_UNK_1 0xF1 +#define MESSAGE_HS_POINTS_FISHING 0xF2 +#define MESSAGE_HS_TIME_BOAT_ARCHERY 0xF3 // Note this interprets the highscore value as a time (not the actual timer for the minigame) +#define MESSAGE_HS_TIME_HORSE_BACK_BALLOON 0xF4 // Note this interprets the highscore value as a time (not the actual timer for the minigame) +#define MESSAGE_HS_TIME_LOTTERY_GUESS 0xF5 +#define MESSAGE_HS_TOWN_SHOOTING_GALLERY 0xF6 +#define MESSAGE_HS_UNK_1 0xF7 +#define MESSAGE_HS_UNK_3_LOWER 0xF8 +#define MESSAGE_HS_HORSE_BACK_BALLOON 0xF9 +#define MESSAGE_HS_DEKU_PLAYGROUND_DAY_1 0xFA +#define MESSAGE_HS_DEKU_PLAYGROUND_DAY_2 0xFB +#define MESSAGE_HS_DEKU_PLAYGROUND_DAY_3 0xFC +#define MESSAGE_DEKU_PLAYGROUND_NAME_DAY_1 0xFD +#define MESSAGE_DEKU_PLAYGROUND_NAME_DAY_2 0xFE +#define MESSAGE_DEKU_PLAYGROUND_NAME_DAY_3 0xFF #ifdef MESSAGE_DATA_STATIC // For use in message_data_static files -#define ARG(x) x +#define ARG1(x) (x), +#define ARG2(x) (((x) >> 8) & 0xFF), (((x) >> 0) & 0xFF), +#define CTRL_BASE(name) ARG1(MESSAGE_##name) -#define CMD_COLOR_DEFAULT STR(CTRL_COLOR_DEFAULT) -#define CMD_COLOR_RED STR(CTRL_COLOR_RED) -#define CMD_COLOR_GREEN STR(CTRL_COLOR_GREEN) -#define CMD_COLOR_BLUE STR(CTRL_COLOR_BLUE) -#define CMD_COLOR_YELLOW STR(CTRL_COLOR_YELLOW) -#define CMD_COLOR_LIGHTBLUE STR(CTRL_COLOR_LIGHTBLUE) -#define CMD_COLOR_PINK STR(CTRL_COLOR_PINK) -#define CMD_COLOR_SILVER STR(CTRL_COLOR_SILVER) -#define CMD_COLOR_ORANGE STR(CTRL_COLOR_ORANGE) -#define CMD_TEXT_SPEED STR(CTRL_TEXT_SPEED) -#define CMD_HS_BOAT_ARCHERY STR(CTRL_HS_BOAT_ARCHERY) -#define CMD_STRAY_FAIRIES STR(CTRL_STRAY_FAIRIES) -#define CMD_TOKENS STR(CTRL_TOKENS) -#define CMD_POINTS_TENS STR(CTRL_POINTS_TENS) -#define CMD_POINTS_THOUSANDS STR(CTRL_POINTS_THOUSANDS) -#define CMD_BOX_BREAK STR(CTRL_BOX_BREAK) -// while a control character, newlines are handled in the charmap conversion -// stage to allow normal newline \n usage in message_data_static files -#define CMD_NEWLINE STR(CTRL_NEWLINE) -#define CMD_BOX_BREAK2 STR(CTRL_BOX_BREAK2) -#define CMD_CARRIAGE_RETURN STR(CTRL_CARRIAGE_RETURN) -#define CMD_SHIFT(x) STR(CTRL_SHIFT) ARG(x) // 1 -#define CMD_CONTINUE STR(CTRL_CONTINUE) -#define CMD_NAME STR(CTRL_NAME) -#define CMD_QUICKTEXT_ENABLE STR(CTRL_QUICKTEXT_ENABLE) -#define CMD_QUICKTEXT_DISABLE STR(CTRL_QUICKTEXT_DISABLE) -#define CMD_EVENT STR(CTRL_EVENT) -#define CMD_PERSISTENT STR(CTRL_PERSISTENT) -#define CMD_BOX_BREAK_DELAYED(x) STR(CTRL_BOX_BREAK_DELAYED) ARG(x) // 2 -#define CMD_FADE(x) STR(CTRL_FADE) ARG(x) // 2 -#define CMD_FADE_SKIPPABLE(x) STR(CTRL_FADE_SKIPPABLE) ARG(x) // 2 -#define CMD_SFX(x) STR(CTRL_SFX) ARG(x) // 2 -#define CMD_DELAY(x) STR(CTRL_DELAY) ARG(x) // 2 -// while control characters, button images are handled in the charmap conversion -#define CMD_BTN_A STR(CTRL_BTN_A) // "[A]" -#define CMD_BTN_B STR(CTRL_BTN_B) // "[B]" -#define CMD_BTN_C STR(CTRL_BTN_C) // "[C]" -#define CMD_BTN_L STR(CTRL_BTN_L) // "[L]" -#define CMD_BTN_R STR(CTRL_BTN_R) // "[R]" -#define CMD_BTN_Z STR(CTRL_BTN_Z) // "[Z]" -#define CMD_BTN_CUP STR(CTRL_BTN_CUP) // "[C-Up]" -#define CMD_BTN_CDOWN STR(CTRL_BTN_CDOWN) // "[C-Down]" -#define CMD_BTN_CLEFT STR(CTRL_BTN_CLEFT) // "[C-Left]" -#define CMD_BTN_CRIGHT STR(CTRL_BTN_CRIGHT) // "[C-Right]" -#define CMD_Z_TARGET STR(CTRL_Z_TARGET) // "▼" -#define CMD_CONTROL_PAD STR(CTRL_CONTROL_PAD) // "[Control-Pad]" -#define CMD_END STR(CTRL_END) -#define CMD_BACKGROUND STR(CTRL_BACKGROUND) -#define CMD_TWO_CHOICE STR(CTRL_TWO_CHOICE) -#define CMD_THREE_CHOICE STR(CTRL_THREE_CHOICE) -#define CMD_TIMER_POSTMAN STR(CTRL_TIMER_POSTMAN) -#define CMD_TIMER_MINIGAME_1 STR(CTRL_TIMER_MINIGAME_1) -#define CMD_TIMER_2 STR(CTRL_TIMER_2) -#define CMD_TIMER_MOON_CRASH STR(CTRL_TIMER_MOON_CRASH) -#define CMD_TIMER_MINIGAME_2 STR(CTRL_TIMER_MINIGAME_2) -#define CMD_TIMER_ENV_HAZARD STR(CTRL_TIMER_ENV_HAZARD) -#define CMD_TIME STR(CTRL_TIME) -#define CMD_CHEST_FLAGS STR(CTRL_CHEST_FLAGS) -#define CMD_INPUT_BANK STR(CTRL_INPUT_BANK) -#define CMD_RUPEES_SELECTED STR(CTRL_RUPEES_SELECTED) -#define CMD_RUPEES_TOTAL STR(CTRL_RUPEES_TOTAL) -#define CMD_TIME_UNTIL_MOON_CRASH STR(CTRL_TIME_UNTIL_MOON_CRASH) -#define CMD_INPUT_DOGGY_RACETRACK_BET STR(CTRL_INPUT_DOGGY_RACETRACK_BET) -#define CMD_INPUT_BOMBER_CODE STR(CTRL_INPUT_BOMBER_CODE) -#define CMD_PAUSE_MENU STR(CTRL_PAUSE_MENU) -#define CMD_TIME_SPEED STR(CTRL_TIME_SPEED) -#define CMD_OWL_WARP STR(CTRL_OWL_WARP) -#define CMD_INPUT_LOTTERY_CODE STR(CTRL_INPUT_LOTTERY_CODE) -#define CMD_SPIDER_HOUSE_MASK_CODE STR(CTRL_SPIDER_HOUSE_MASK_CODE) -#define CMD_STRAY_FAIRIES_LEFT_WOODFALL STR(CTRL_STRAY_FAIRIES_LEFT_WOODFALL) -#define CMD_STRAY_FAIRIES_LEFT_SNOWHEAD STR(CTRL_STRAY_FAIRIES_LEFT_SNOWHEAD) -#define CMD_STRAY_FAIRIES_LEFT_GREAT_BAY STR(CTRL_STRAY_FAIRIES_LEFT_GREAT_BAY) -#define CMD_STRAY_FAIRIES_LEFT_STONE_TOWER STR(CTRL_STRAY_FAIRIES_LEFT_STONE_TOWER) -#define CMD_POINTS_BOAT_ARCHERY STR(CTRL_POINTS_BOAT_ARCHERY) -#define CMD_LOTTERY_CODE STR(CTRL_LOTTERY_CODE) -#define CMD_LOTTERY_CODE_GUESS STR(CTRL_LOTTERY_CODE_GUESS) -#define CMD_HELD_ITEM_PRICE STR(CTRL_HELD_ITEM_PRICE) -#define CMD_BOMBER_CODE STR(CTRL_BOMBER_CODE) -#define CMD_EVENT2 STR(CTRL_EVENT2) -#define CMD_SPIDER_HOUSE_MASK_CODE_1 STR(CTRL_SPIDER_HOUSE_MASK_CODE_1) -#define CMD_SPIDER_HOUSE_MASK_CODE_2 STR(CTRL_SPIDER_HOUSE_MASK_CODE_2) -#define CMD_SPIDER_HOUSE_MASK_CODE_3 STR(CTRL_SPIDER_HOUSE_MASK_CODE_3) -#define CMD_SPIDER_HOUSE_MASK_CODE_4 STR(CTRL_SPIDER_HOUSE_MASK_CODE_4) -#define CMD_SPIDER_HOUSE_MASK_CODE_5 STR(CTRL_SPIDER_HOUSE_MASK_CODE_5) -#define CMD_SPIDER_HOUSE_MASK_CODE_6 STR(CTRL_SPIDER_HOUSE_MASK_CODE_6) -#define CMD_HOURS_UNTIL_MOON_CRASH STR(CTRL_HOURS_UNTIL_MOON_CRASH) -#define CMD_TIME_UNTIL_NEW_DAY STR(CTRL_TIME_UNTIL_NEW_DAY) -#define CMD_HS_POINTS_BANK_RUPEES STR(CTRL_HS_POINTS_BANK_RUPEES) -#define CMD_HS_POINTS_UNK_1 STR(CTRL_HS_POINTS_UNK_1) -#define CMD_HS_POINTS_FISHING STR(CTRL_HS_POINTS_FISHING) -#define CMD_HS_TIME_BOAT_ARCHERY STR(CTRL_HS_TIME_BOAT_ARCHERY) -#define CMD_HS_TIME_HORSE_BACK_BALLOON STR(CTRL_HS_TIME_HORSE_BACK_BALLOON) -#define CMD_HS_TIME_LOTTERY_GUESS STR(CTRL_HS_TIME_LOTTERY_GUESS) -#define CMD_HS_TOWN_SHOOTING_GALLERY STR(CTRL_HS_TOWN_SHOOTING_GALLERY) -#define CMD_HS_UNK_1 STR(CTRL_HS_UNK_1) -#define CMD_HS_UNK_3_LOWER STR(CTRL_HS_UNK_3_LOWER) -#define CMD_HS_HORSE_BACK_BALLOON STR(CTRL_HS_HORSE_BACK_BALLOON) -#define CMD_HS_DEKU_PLAYGROUND_DAY_1 STR(CTRL_HS_DEKU_PLAYGROUND_DAY_1) -#define CMD_HS_DEKU_PLAYGROUND_DAY_2 STR(CTRL_HS_DEKU_PLAYGROUND_DAY_2) -#define CMD_HS_DEKU_PLAYGROUND_DAY_3 STR(CTRL_HS_DEKU_PLAYGROUND_DAY_3) -#define CMD_DEKU_PLAYGROUND_NAME_DAY_1 STR(CTRL_DEKU_PLAYGROUND_NAME_DAY_1) -#define CMD_DEKU_PLAYGROUND_NAME_DAY_2 STR(CTRL_DEKU_PLAYGROUND_NAME_DAY_2) -#define CMD_DEKU_PLAYGROUND_NAME_DAY_3 STR(CTRL_DEKU_PLAYGROUND_NAME_DAY_3) +// For use in message_data_static files -#else +// Encoded text consists of an array of bytes. Since it's in a macro it must be wrapped in a varargs macro so that each +// byte is not treated as a separate macro argument to DEFINE_MESSAGE. IDO doesn't support varargs macros, however we +// preprocess the message_data_static files with modern cpp instead. See the makefile rule for assets/text/ +#define MSG(...) \ + { __VA_ARGS__ END } -#define MESSAGE_COLOR_DEFAULT HEX(CTRL_COLOR_DEFAULT) -#define MESSAGE_COLOR_RED HEX(CTRL_COLOR_RED) -#define MESSAGE_COLOR_GREEN HEX(CTRL_COLOR_GREEN) -#define MESSAGE_COLOR_BLUE HEX(CTRL_COLOR_BLUE) -#define MESSAGE_COLOR_YELLOW HEX(CTRL_COLOR_YELLOW) -#define MESSAGE_COLOR_LIGHTBLUE HEX(CTRL_COLOR_LIGHTBLUE) -#define MESSAGE_COLOR_PINK HEX(CTRL_COLOR_PINK) -#define MESSAGE_COLOR_SILVER HEX(CTRL_COLOR_SILVER) -#define MESSAGE_COLOR_ORANGE HEX(CTRL_COLOR_ORANGE) -#define MESSAGE_TEXT_SPEED HEX(CTRL_TEXT_SPEED) -#define MESSAGE_HS_BOAT_ARCHERY HEX(CTRL_HS_BOAT_ARCHERY) -#define MESSAGE_STRAY_FAIRIES HEX(CTRL_STRAY_FAIRIES) -#define MESSAGE_TOKENS HEX(CTRL_TOKENS) -#define MESSAGE_POINTS_TENS HEX(CTRL_POINTS_TENS) -#define MESSAGE_POINTS_THOUSANDS HEX(CTRL_POINTS_THOUSANDS) -#define MESSAGE_BOX_BREAK HEX(CTRL_BOX_BREAK) -#define MESSAGE_NEWLINE HEX(CTRL_NEWLINE) -#define MESSAGE_BOX_BREAK2 HEX(CTRL_BOX_BREAK2) -#define MESSAGE_CARRIAGE_RETURN HEX(CTRL_CARRIAGE_RETURN) -#define MESSAGE_SHIFT HEX(CTRL_SHIFT) -#define MESSAGE_CONTINUE HEX(CTRL_CONTINUE) -#define MESSAGE_NAME HEX(CTRL_NAME) -#define MESSAGE_QUICKTEXT_ENABLE HEX(CTRL_QUICKTEXT_ENABLE) -#define MESSAGE_QUICKTEXT_DISABLE HEX(CTRL_QUICKTEXT_DISABLE) -#define MESSAGE_EVENT HEX(CTRL_EVENT) -#define MESSAGE_PERSISTENT HEX(CTRL_PERSISTENT) -#define MESSAGE_BOX_BREAK_DELAYED HEX(CTRL_BOX_BREAK_DELAYED) -#define MESSAGE_FADE HEX(CTRL_FADE) -#define MESSAGE_FADE_SKIPPABLE HEX(CTRL_FADE_SKIPPABLE) -#define MESSAGE_SFX HEX(CTRL_SFX) -#define MESSAGE_DELAY HEX(CTRL_DELAY) -#define MESSAGE_BTN_A HEX(CTRL_BTN_A) -#define MESSAGE_BTN_B HEX(CTRL_BTN_B) -#define MESSAGE_BTN_C HEX(CTRL_BTN_C) -#define MESSAGE_BTN_L HEX(CTRL_BTN_L) -#define MESSAGE_BTN_R HEX(CTRL_BTN_R) -#define MESSAGE_BTN_Z HEX(CTRL_BTN_Z) -#define MESSAGE_BTN_CUP HEX(CTRL_BTN_CUP) -#define MESSAGE_BTN_CDOWN HEX(CTRL_BTN_CDOWN) -#define MESSAGE_BTN_CLEFT HEX(CTRL_BTN_CLEFT) -#define MESSAGE_BTN_CRIGHT HEX(CTRL_BTN_CRIGHT) -#define MESSAGE_Z_TARGET HEX(CTRL_Z_TARGET) -#define MESSAGE_CONTROL_PAD HEX(CTRL_CONTROL_PAD) -#define MESSAGE_END HEX(CTRL_END) -#define MESSAGE_BACKGROUND HEX(CTRL_BACKGROUND) -#define MESSAGE_TWO_CHOICE HEX(CTRL_TWO_CHOICE) -#define MESSAGE_THREE_CHOICE HEX(CTRL_THREE_CHOICE) -#define MESSAGE_TIMER_POSTMAN HEX(CTRL_TIMER_POSTMAN) -#define MESSAGE_TIMER_MINIGAME_1 HEX(CTRL_TIMER_MINIGAME_1) -#define MESSAGE_TIMER_2 HEX(CTRL_TIMER_2) -#define MESSAGE_TIMER_MOON_CRASH HEX(CTRL_TIMER_MOON_CRASH) -#define MESSAGE_TIMER_MINIGAME_2 HEX(CTRL_TIMER_MINIGAME_2) -#define MESSAGE_TIMER_ENV_HAZARD HEX(CTRL_TIMER_ENV_HAZARD) -#define MESSAGE_TIME HEX(CTRL_TIME) -#define MESSAGE_CHEST_FLAGS HEX(CTRL_CHEST_FLAGS) -#define MESSAGE_INPUT_BANK HEX(CTRL_INPUT_BANK) -#define MESSAGE_RUPEES_SELECTED HEX(CTRL_RUPEES_SELECTED) -#define MESSAGE_RUPEES_TOTAL HEX(CTRL_RUPEES_TOTAL) -#define MESSAGE_TIME_UNTIL_MOON_CRASH HEX(CTRL_TIME_UNTIL_MOON_CRASH) -#define MESSAGE_INPUT_DOGGY_RACETRACK_BET HEX(CTRL_INPUT_DOGGY_RACETRACK_BET) -#define MESSAGE_INPUT_BOMBER_CODE HEX(CTRL_INPUT_BOMBER_CODE) -#define MESSAGE_PAUSE_MENU HEX(CTRL_PAUSE_MENU) -#define MESSAGE_TIME_SPEED HEX(CTRL_TIME_SPEED) -#define MESSAGE_OWL_WARP HEX(CTRL_OWL_WARP) -#define MESSAGE_INPUT_LOTTERY_CODE HEX(CTRL_INPUT_LOTTERY_CODE) -#define MESSAGE_SPIDER_HOUSE_MASK_CODE HEX(CTRL_SPIDER_HOUSE_MASK_CODE) -#define MESSAGE_STRAY_FAIRIES_LEFT_WOODFALL HEX(CTRL_STRAY_FAIRIES_LEFT_WOODFALL) -#define MESSAGE_STRAY_FAIRIES_LEFT_SNOWHEAD HEX(CTRL_STRAY_FAIRIES_LEFT_SNOWHEAD) -#define MESSAGE_STRAY_FAIRIES_LEFT_GREAT_BAY HEX(CTRL_STRAY_FAIRIES_LEFT_GREAT_BAY) -#define MESSAGE_STRAY_FAIRIES_LEFT_STONE_TOWER HEX(CTRL_STRAY_FAIRIES_LEFT_STONE_TOWER) -#define MESSAGE_POINTS_BOAT_ARCHERY HEX(CTRL_POINTS_BOAT_ARCHERY) -#define MESSAGE_LOTTERY_CODE HEX(CTRL_LOTTERY_CODE) -#define MESSAGE_LOTTERY_CODE_GUESS HEX(CTRL_LOTTERY_CODE_GUESS) -#define MESSAGE_HELD_ITEM_PRICE HEX(CTRL_HELD_ITEM_PRICE) -#define MESSAGE_BOMBER_CODE HEX(CTRL_BOMBER_CODE) -#define MESSAGE_EVENT2 HEX(CTRL_EVENT2) -#define MESSAGE_SPIDER_HOUSE_MASK_CODE_1 HEX(CTRL_SPIDER_HOUSE_MASK_CODE_1) -#define MESSAGE_SPIDER_HOUSE_MASK_CODE_2 HEX(CTRL_SPIDER_HOUSE_MASK_CODE_2) -#define MESSAGE_SPIDER_HOUSE_MASK_CODE_3 HEX(CTRL_SPIDER_HOUSE_MASK_CODE_3) -#define MESSAGE_SPIDER_HOUSE_MASK_CODE_4 HEX(CTRL_SPIDER_HOUSE_MASK_CODE_4) -#define MESSAGE_SPIDER_HOUSE_MASK_CODE_5 HEX(CTRL_SPIDER_HOUSE_MASK_CODE_5) -#define MESSAGE_SPIDER_HOUSE_MASK_CODE_6 HEX(CTRL_SPIDER_HOUSE_MASK_CODE_6) -#define MESSAGE_HOURS_UNTIL_MOON_CRASH HEX(CTRL_HOURS_UNTIL_MOON_CRASH) -#define MESSAGE_TIME_UNTIL_NEW_DAY HEX(CTRL_TIME_UNTIL_NEW_DAY) -#define MESSAGE_HS_POINTS_BANK_RUPEES HEX(CTRL_HS_POINTS_BANK_RUPEES) -#define MESSAGE_HS_POINTS_UNK_1 HEX(CTRL_HS_POINTS_UNK_1) -#define MESSAGE_HS_POINTS_FISHING HEX(CTRL_HS_POINTS_FISHING) -#define MESSAGE_HS_TIME_BOAT_ARCHERY HEX(CTRL_HS_TIME_BOAT_ARCHERY) -#define MESSAGE_HS_TIME_HORSE_BACK_BALLOON HEX(CTRL_HS_TIME_HORSE_BACK_BALLOON) -#define MESSAGE_HS_TIME_LOTTERY_GUESS HEX(CTRL_HS_TIME_LOTTERY_GUESS) -#define MESSAGE_HS_TOWN_SHOOTING_GALLERY HEX(CTRL_HS_TOWN_SHOOTING_GALLERY) -#define MESSAGE_HS_UNK_1 HEX(CTRL_HS_UNK_1) -#define MESSAGE_HS_UNK_3_LOWER HEX(CTRL_HS_UNK_3_LOWER) -#define MESSAGE_HS_HORSE_BACK_BALLOON HEX(CTRL_HS_HORSE_BACK_BALLOON) -#define MESSAGE_HS_DEKU_PLAYGROUND_DAY_1 HEX(CTRL_HS_DEKU_PLAYGROUND_DAY_1) -#define MESSAGE_HS_DEKU_PLAYGROUND_DAY_2 HEX(CTRL_HS_DEKU_PLAYGROUND_DAY_2) -#define MESSAGE_HS_DEKU_PLAYGROUND_DAY_3 HEX(CTRL_HS_DEKU_PLAYGROUND_DAY_3) -#define MESSAGE_DEKU_PLAYGROUND_NAME_DAY_1 HEX(CTRL_DEKU_PLAYGROUND_NAME_DAY_1) -#define MESSAGE_DEKU_PLAYGROUND_NAME_DAY_2 HEX(CTRL_DEKU_PLAYGROUND_NAME_DAY_2) -#define MESSAGE_DEKU_PLAYGROUND_NAME_DAY_3 HEX(CTRL_DEKU_PLAYGROUND_NAME_DAY_3) +// Not a control command, used to define the data that begins every message +#define HEADER(unk11F08, itemId, nextTextId, unk1206C, unk12070, unk12074) \ + ARG2(unk11F08) ARG1(itemId) ARG2(nextTextId) ARG2(unk1206C) ARG2(unk12070) ARG2(unk12074) + +#define COLOR_DEFAULT CTRL_BASE(COLOR_DEFAULT) +#define COLOR_RED CTRL_BASE(COLOR_RED) +#define COLOR_GREEN CTRL_BASE(COLOR_GREEN) +#define COLOR_BLUE CTRL_BASE(COLOR_BLUE) +#define COLOR_YELLOW CTRL_BASE(COLOR_YELLOW) +#define COLOR_LIGHTBLUE CTRL_BASE(COLOR_LIGHTBLUE) +#define COLOR_PINK CTRL_BASE(COLOR_PINK) +#define COLOR_SILVER CTRL_BASE(COLOR_SILVER) +#define COLOR_ORANGE CTRL_BASE(COLOR_ORANGE) +#define TEXT_SPEED CTRL_BASE(TEXT_SPEED) +#define HS_BOAT_ARCHERY CTRL_BASE(HS_BOAT_ARCHERY) +#define STRAY_FAIRIES CTRL_BASE(STRAY_FAIRIES) +#define TOKENS CTRL_BASE(TOKENS) +#define POINTS_TENS CTRL_BASE(POINTS_TENS) +#define POINTS_THOUSANDS CTRL_BASE(POINTS_THOUSANDS) +#define BOX_BREAK CTRL_BASE(BOX_BREAK) +// while a control character, newlines are handled in the charmap conversion +// stage to allow normal newline \n usage in message_data_static files +#define NEWLINE CTRL_BASE(NEWLINE) +#define BOX_BREAK2 CTRL_BASE(BOX_BREAK2) +#define CARRIAGE_RETURN CTRL_BASE(CARRIAGE_RETURN) +#define SHIFT(amount) CTRL_BASE(SHIFT) ARG1(amount) +#define CONTINUE CTRL_BASE(CONTINUE) +#define NAME CTRL_BASE(NAME) +#define QUICKTEXT_ENABLE CTRL_BASE(QUICKTEXT_ENABLE) +#define QUICKTEXT_DISABLE CTRL_BASE(QUICKTEXT_DISABLE) +#define EVENT CTRL_BASE(EVENT) +#define PERSISTENT CTRL_BASE(PERSISTENT) +#define BOX_BREAK_DELAYED(delay) CTRL_BASE(BOX_BREAK_DELAYED) ARG2(delay) +#define FADE(delay) CTRL_BASE(FADE) ARG2(delay) +#define FADE_SKIPPABLE(delay) CTRL_BASE(FADE_SKIPPABLE) ARG2(delay) +#define SFX(sfxId) CTRL_BASE(SFX) ARG2(sfxId) +#define DELAY(delay) CTRL_BASE(DELAY) ARG2(delay) +#define END CTRL_BASE(END) +#define BACKGROUND CTRL_BASE(BACKGROUND) +#define TWO_CHOICE CTRL_BASE(TWO_CHOICE) +#define THREE_CHOICE CTRL_BASE(THREE_CHOICE) +#define TIMER_POSTMAN CTRL_BASE(TIMER_POSTMAN) +#define TIMER_MINIGAME_1 CTRL_BASE(TIMER_MINIGAME_1) +#define TIMER_2 CTRL_BASE(TIMER_2) +#define TIMER_MOON_CRASH CTRL_BASE(TIMER_MOON_CRASH) +#define TIMER_MINIGAME_2 CTRL_BASE(TIMER_MINIGAME_2) +#define TIMER_ENV_HAZARD CTRL_BASE(TIMER_ENV_HAZARD) +#define TIME CTRL_BASE(TIME) +#define CHEST_FLAGS CTRL_BASE(CHEST_FLAGS) +#define INPUT_BANK CTRL_BASE(INPUT_BANK) +#define RUPEES_SELECTED CTRL_BASE(RUPEES_SELECTED) +#define RUPEES_TOTAL CTRL_BASE(RUPEES_TOTAL) +#define TIME_UNTIL_MOON_CRASH CTRL_BASE(TIME_UNTIL_MOON_CRASH) +#define INPUT_DOGGY_RACETRACK_BET CTRL_BASE(INPUT_DOGGY_RACETRACK_BET) +#define INPUT_BOMBER_CODE CTRL_BASE(INPUT_BOMBER_CODE) +#define PAUSE_MENU CTRL_BASE(PAUSE_MENU) +#define TIME_SPEED CTRL_BASE(TIME_SPEED) +#define OWL_WARP CTRL_BASE(OWL_WARP) +#define INPUT_LOTTERY_CODE CTRL_BASE(INPUT_LOTTERY_CODE) +#define SPIDER_HOUSE_MASK_CODE CTRL_BASE(SPIDER_HOUSE_MASK_CODE) +#define STRAY_FAIRIES_LEFT_WOODFALL CTRL_BASE(STRAY_FAIRIES_LEFT_WOODFALL) +#define STRAY_FAIRIES_LEFT_SNOWHEAD CTRL_BASE(STRAY_FAIRIES_LEFT_SNOWHEAD) +#define STRAY_FAIRIES_LEFT_GREAT_BAY CTRL_BASE(STRAY_FAIRIES_LEFT_GREAT_BAY) +#define STRAY_FAIRIES_LEFT_STONE_TOWER CTRL_BASE(STRAY_FAIRIES_LEFT_STONE_TOWER) +#define POINTS_BOAT_ARCHERY CTRL_BASE(POINTS_BOAT_ARCHERY) +#define LOTTERY_CODE CTRL_BASE(LOTTERY_CODE) +#define LOTTERY_CODE_GUESS CTRL_BASE(LOTTERY_CODE_GUESS) +#define HELD_ITEM_PRICE CTRL_BASE(HELD_ITEM_PRICE) +#define BOMBER_CODE CTRL_BASE(BOMBER_CODE) +#define EVENT2 CTRL_BASE(EVENT2) +#define SPIDER_HOUSE_MASK_CODE_1 CTRL_BASE(SPIDER_HOUSE_MASK_CODE_1) +#define SPIDER_HOUSE_MASK_CODE_2 CTRL_BASE(SPIDER_HOUSE_MASK_CODE_2) +#define SPIDER_HOUSE_MASK_CODE_3 CTRL_BASE(SPIDER_HOUSE_MASK_CODE_3) +#define SPIDER_HOUSE_MASK_CODE_4 CTRL_BASE(SPIDER_HOUSE_MASK_CODE_4) +#define SPIDER_HOUSE_MASK_CODE_5 CTRL_BASE(SPIDER_HOUSE_MASK_CODE_5) +#define SPIDER_HOUSE_MASK_CODE_6 CTRL_BASE(SPIDER_HOUSE_MASK_CODE_6) +#define HOURS_UNTIL_MOON_CRASH CTRL_BASE(HOURS_UNTIL_MOON_CRASH) +#define TIME_UNTIL_NEW_DAY CTRL_BASE(TIME_UNTIL_NEW_DAY) +#define HS_POINTS_BANK_RUPEES CTRL_BASE(HS_POINTS_BANK_RUPEES) +#define HS_POINTS_UNK_1 CTRL_BASE(HS_POINTS_UNK_1) +#define HS_POINTS_FISHING CTRL_BASE(HS_POINTS_FISHING) +#define HS_TIME_BOAT_ARCHERY CTRL_BASE(HS_TIME_BOAT_ARCHERY) +#define HS_TIME_HORSE_BACK_BALLOON CTRL_BASE(HS_TIME_HORSE_BACK_BALLOON) +#define HS_TIME_LOTTERY_GUESS CTRL_BASE(HS_TIME_LOTTERY_GUESS) +#define HS_TOWN_SHOOTING_GALLERY CTRL_BASE(HS_TOWN_SHOOTING_GALLERY) +#define HS_UNK_1 CTRL_BASE(HS_UNK_1) +#define HS_UNK_3_LOWER CTRL_BASE(HS_UNK_3_LOWER) +#define HS_HORSE_BACK_BALLOON CTRL_BASE(HS_HORSE_BACK_BALLOON) +#define HS_DEKU_PLAYGROUND_DAY_1 CTRL_BASE(HS_DEKU_PLAYGROUND_DAY_1) +#define HS_DEKU_PLAYGROUND_DAY_2 CTRL_BASE(HS_DEKU_PLAYGROUND_DAY_2) +#define HS_DEKU_PLAYGROUND_DAY_3 CTRL_BASE(HS_DEKU_PLAYGROUND_DAY_3) +#define DEKU_PLAYGROUND_NAME_DAY_1 CTRL_BASE(DEKU_PLAYGROUND_NAME_DAY_1) +#define DEKU_PLAYGROUND_NAME_DAY_2 CTRL_BASE(DEKU_PLAYGROUND_NAME_DAY_2) +#define DEKU_PLAYGROUND_NAME_DAY_3 CTRL_BASE(DEKU_PLAYGROUND_NAME_DAY_3) #endif |
