Text Extraction + some Message Docs (#1530)

* Some Decoder WIPs

* Improvements

* POC

* Fix bss

* another newline

* Staff OK

* Cleanup + fix progress script

* script cleanup

* Some docs

* makefile

* Extract text from extract_assets.py

* More docs

* Even more docs

* Other message assets

* Small cleanups

* Clean up decoders/encoders

* Message_SetupLoadItemIcon -> Message_DecodeHeader

* Some more docs

* Remove mkdmadata

* Fade Skippable

* More cmd docs

* 1 left

* Last notes

* HS_TIMER -> HS_TIME

* More general docs

* Format

* Note the charmap conversion for buttons in message_data_fmt_nes.h

* Remove trailing whitespace

* Small fixes

* PR
This commit is contained in:
Derek Hensley
2024-01-19 16:16:57 -08:00
committed by GitHub
parent e32e44ff40
commit fe6494187e
147 changed files with 2338 additions and 2480 deletions
+340
View File
@@ -0,0 +1,340 @@
#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))
/*
* 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
#ifdef MESSAGE_DATA_STATIC
// For use in message_data_static files
#define ARG(x) x
#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)
#else
#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)
#endif
#endif
+180
View File
@@ -0,0 +1,180 @@
#ifndef MESSAGE_DATA_FMT_STAFF_H
#define MESSAGE_DATA_FMT_STAFF_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))
/*
* Text control characters
*/
// Control character magic values, in 2-digit hex without prefix
#define CTRL_NEWLINE 01
#define CTRL_END 02
#define CTRL_BOX_BREAK 04
#define CTRL_COLOR 05
#define CTRL_SHIFT 06
#define CTRL_TEXTID 07
#define CTRL_QUICKTEXT_ENABLE 08
#define CTRL_QUICKTEXT_DISABLE 09
#define CTRL_PERSISTENT 0A
#define CTRL_EVENT 0B
#define CTRL_BOX_BREAK_DELAYED 0C
#define CTRL_AWAIT_BUTTON_PRESS 0D
#define CTRL_FADE 0E
#define CTRL_NAME 0F
#define CTRL_OCARINA 10
#define CTRL_FADE2 11
#define CTRL_SFX 12
#define CTRL_ITEM_ICON 13
#define CTRL_TEXT_SPEED 14
#define CTRL_BACKGROUND 15
#define CTRL_MARATHON_TIME 16
#define CTRL_RACE_TIME 17
#define CTRL_POINTS 18
#define CTRL_TOKENS 19
#define CTRL_UNSKIPPABLE 1A
#define CTRL_TWO_CHOICE 1B
#define CTRL_THREE_CHOICE 1C
#define CTRL_FISH_INFO 1D
#define CTRL_HIGHSCORE 1E
#define CTRL_TIME 1F
/*
* Colors
*/
#define COLOR_STR(N) EXPAND_AND_STRINGIFY(GLUE(\x4, N))
// Color magic values, in single-digit hex without prefix
#define CTRL_DEFAULT 0
#define CTRL_RED 1
#define CTRL_ADJUSTABLE 2
#define CTRL_BLUE 3
#define CTRL_LIGHTBLUE 4
#define CTRL_PURPLE 5
#define CTRL_YELLOW 6
#define CTRL_BLACK 7
#ifdef MESSAGE_DATA_STATIC
// For use in message_data_static files
#define ARG(x) x
// 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_END STR(CTRL_END)
#define CMD_BOX_BREAK STR(CTRL_BOX_BREAK)
#define CMD_COLOR(x) STR(CTRL_COLOR) ARG(x) // 1
#define CMD_SHIFT(x) STR(CTRL_SHIFT) ARG(x) // 1
#define CMD_TEXTID(x) STR(CTRL_TEXTID) ARG(x) // 2
#define CMD_QUICKTEXT_ENABLE STR(CTRL_QUICKTEXT_ENABLE)
#define CMD_QUICKTEXT_DISABLE STR(CTRL_QUICKTEXT_DISABLE)
#define CMD_PERSISTENT STR(CTRL_PERSISTENT)
#define CMD_EVENT STR(CTRL_EVENT)
#define CMD_BOX_BREAK_DELAYED(x) STR(CTRL_BOX_BREAK_DELAYED) ARG(x) // 1
#define CMD_AWAIT_BUTTON_PRESS STR(CTRL_AWAIT_BUTTON_PRESS)
#define CMD_FADE(x) STR(CTRL_FADE) ARG(x) // 1
#define CMD_NAME STR(CTRL_NAME)
#define CMD_OCARINA STR(CTRL_OCARINA)
#define CMD_FADE2(x) STR(CTRL_FADE2) ARG(x) // 2
#define CMD_SFX(x) STR(CTRL_SFX) ARG(x) // 2
#define CMD_ITEM_ICON(x) STR(CTRL_ITEM_ICON) ARG(x) // 1
#define CMD_TEXT_SPEED(x) STR(CTRL_TEXT_SPEED) ARG(x) // 1
#define CMD_BACKGROUND(x,y,z) STR(CTRL_BACKGROUND) ARG(x) ARG(y) ARG(z)
#define CMD_MARATHON_TIME STR(CTRL_MARATHON_TIME)
#define CMD_RACE_TIME STR(CTRL_RACE_TIME)
#define CMD_POINTS STR(CTRL_POINTS)
#define CMD_TOKENS STR(CTRL_TOKENS)
#define CMD_UNSKIPPABLE STR(CTRL_UNSKIPPABLE)
#define CMD_TWO_CHOICE STR(CTRL_TWO_CHOICE)
#define CMD_THREE_CHOICE STR(CTRL_THREE_CHOICE)
#define CMD_FISH_INFO STR(CTRL_FISH_INFO)
#define CMD_HIGHSCORE(x) STR(CTRL_HIGHSCORE) ARG(x) // 1
#define CMD_TIME STR(CTRL_TIME)
/*
* Highscore values as strings, for code references the HighScores
* enum should be used.
*/
#define HS_BANK_RUPEES "\x00"
#define HS_UNK_1 "\x01"
#define HS_FISHING "\x02"
#define HS_BOAT_ARCHERY "\x03"
#define HS_HORSE_BACK_BALLOON "\x04"
#define HS_SHOOTING_GALLERY "\x06"
/*
* Color values as strings
*/
#define DEFAULT COLOR_STR(CTRL_DEFAULT)
#define RED COLOR_STR(CTRL_RED)
#define ADJUSTABLE COLOR_STR(CTRL_ADJUSTABLE)
#define BLUE COLOR_STR(CTRL_BLUE)
#define LIGHTBLUE COLOR_STR(CTRL_LIGHTBLUE)
#define PURPLE COLOR_STR(CTRL_PURPLE)
#define YELLOW COLOR_STR(CTRL_YELLOW)
#define BLACK COLOR_STR(CTRL_BLACK)
#else
// For use in code files
#define MSGCOL_DEFAULT HEX(CTRL_DEFAULT)
#define MSGCOL_RED HEX(CTRL_RED)
#define MSGCOL_ADJUSTABLE HEX(CTRL_ADJUSTABLE)
#define MSGCOL_BLUE HEX(CTRL_BLUE)
#define MSGCOL_LIGHTBLUE HEX(CTRL_LIGHTBLUE)
#define MSGCOL_PURPLE HEX(CTRL_PURPLE)
#define MSGCOL_YELLOW HEX(CTRL_YELLOW)
#define MSGCOL_BLACK HEX(CTRL_BLACK)
#define MESSAGE_NEWLINE HEX(CTRL_NEWLINE)
#define MESSAGE_END HEX(CTRL_END)
#define MESSAGE_BOX_BREAK HEX(CTRL_BOX_BREAK)
#define MESSAGE_COLOR HEX(CTRL_COLOR)
#define MESSAGE_SHIFT HEX(CTRL_SHIFT)
#define MESSAGE_TEXTID HEX(CTRL_TEXTID)
#define MESSAGE_QUICKTEXT_ENABLE HEX(CTRL_QUICKTEXT_ENABLE)
#define MESSAGE_QUICKTEXT_DISABLE HEX(CTRL_QUICKTEXT_DISABLE)
#define MESSAGE_PERSISTENT HEX(CTRL_PERSISTENT)
#define MESSAGE_EVENT HEX(CTRL_EVENT)
#define MESSAGE_BOX_BREAK_DELAYED HEX(CTRL_BOX_BREAK_DELAYED)
#define MESSAGE_AWAIT_BUTTON_PRESS HEX(CTRL_AWAIT_BUTTON_PRESS)
#define MESSAGE_FADE HEX(CTRL_FADE)
#define MESSAGE_NAME HEX(CTRL_NAME)
#define MESSAGE_OCARINA HEX(CTRL_OCARINA)
#define MESSAGE_FADE2 HEX(CTRL_FADE2)
#define MESSAGE_SFX HEX(CTRL_SFX)
#define MESSAGE_ITEM_ICON HEX(CTRL_ITEM_ICON)
#define MESSAGE_TEXT_SPEED HEX(CTRL_TEXT_SPEED)
#define MESSAGE_BACKGROUND HEX(CTRL_BACKGROUND)
#define MESSAGE_MARATHON_TIME HEX(CTRL_MARATHON_TIME)
#define MESSAGE_RACE_TIME HEX(CTRL_RACE_TIME)
#define MESSAGE_POINTS HEX(CTRL_POINTS)
#define MESSAGE_TOKENS HEX(CTRL_TOKENS)
#define MESSAGE_UNSKIPPABLE HEX(CTRL_UNSKIPPABLE)
#define MESSAGE_TWO_CHOICE HEX(CTRL_TWO_CHOICE)
#define MESSAGE_THREE_CHOICE HEX(CTRL_THREE_CHOICE)
#define MESSAGE_FISH_INFO HEX(CTRL_FISH_INFO)
#define MESSAGE_HIGHSCORE HEX(CTRL_HIGHSCORE)
#define MESSAGE_TIME HEX(CTRL_TIME)
#endif
#endif
+14
View File
@@ -9,4 +9,18 @@ typedef struct MessageTableEntry {
/* 0x4 */ const char* segment;
} MessageTableEntry; // size = 0x8;
#define DEFINE_MESSAGE(textId, typePos, msg) \
extern const char _message_##textId[];
#include "assets/text/message_data.h"
#undef DEFINE_MESSAGE
#define DEFINE_MESSAGE(textId, typePos, msg) \
extern const char _message_##textId##_staff[];
#include "assets/text/staff_message_data.h"
#undef DEFINE_MESSAGE
#endif
+32 -32
View File
@@ -30,30 +30,30 @@ typedef enum TextBoxType {
/* 0x10 */ TEXTBOX_TYPE_MAX
} TextBoxType;
#define TEXTBOX_ENDTYPE_00 0x00
#define TEXTBOX_ENDTYPE_DEFAULT 0x00
#define TEXTBOX_ENDTYPE_10 0x10
#define TEXTBOX_ENDTYPE_11 0x11
#define TEXTBOX_ENDTYPE_TWO_CHOICE 0x10
#define TEXTBOX_ENDTYPE_THREE_CHOICE 0x11
#define TEXTBOX_ENDTYPE_12 0x12
#define TEXTBOX_ENDTYPE_20 0x20
#define TEXTBOX_ENDTYPE_NEXT 0x20
#define TEXTBOX_ENDTYPE_30 0x30
#define TEXTBOX_ENDTYPE_PERSISTENT 0x30
#define TEXTBOX_ENDTYPE_40 0x40
#define TEXTBOX_ENDTYPE_41 0x41
#define TEXTBOX_ENDTYPE_42 0x42
#define TEXTBOX_ENDTYPE_EVENT 0x40
#define TEXTBOX_ENDTYPE_PAUSE_MENU 0x41
#define TEXTBOX_ENDTYPE_EVENT2 0x42
#define TEXTBOX_ENDTYPE_50 0x50
#define TEXTBOX_ENDTYPE_52 0x52
#define TEXTBOX_ENDTYPE_55 0x55
#define TEXTBOX_ENDTYPE_56 0x56
#define TEXTBOX_ENDTYPE_57 0x57
#define TEXTBOX_ENDTYPE_FADE_NORMAL 0x50
#define TEXTBOX_ENDTYPE_FADE_SKIPPABLE 0x52
#define TEXTBOX_ENDTYPE_FADE_STAGES_1 0x55
#define TEXTBOX_ENDTYPE_FADE_STAGES_2 0x56
#define TEXTBOX_ENDTYPE_FADE_STAGES_3 0x57
#define TEXTBOX_ENDTYPE_60 0x60
#define TEXTBOX_ENDTYPE_61 0x61
#define TEXTBOX_ENDTYPE_62 0x62
#define TEXTBOX_ENDTYPE_63 0x63
#define TEXTBOX_ENDTYPE_INPUT_BANK 0x60
#define TEXTBOX_ENDTYPE_INPUT_DOGGY_RACETRACK_BET 0x61
#define TEXTBOX_ENDTYPE_INPUT_BOMBER_CODE 0x62
#define TEXTBOX_ENDTYPE_INPUT_LOTTERY_CODE 0x63
#define TEXTBOX_ENDTYPE_64 0x64
typedef enum MessageMode {
@@ -154,23 +154,23 @@ u16 Text_GetFaceReaction(struct PlayState* play, FaceReactionSet reactionSet);
typedef enum TextState {
/* 0 */ TEXT_STATE_NONE,
/* 1 */ TEXT_STATE_1,
/* 1 */ TEXT_STATE_NEXT,
/* 2 */ TEXT_STATE_CLOSING,
/* 3 */ TEXT_STATE_3,
/* 3 */ TEXT_STATE_FADING,
/* 4 */ TEXT_STATE_CHOICE,
/* 5 */ TEXT_STATE_5,
/* 5 */ TEXT_STATE_EVENT,
/* 6 */ TEXT_STATE_DONE,
/* 7 */ TEXT_STATE_7,
/* 7 */ TEXT_STATE_SONG_DEMO_DONE,
/* 8 */ TEXT_STATE_8,
/* 9 */ TEXT_STATE_9,
/* 10 */ TEXT_STATE_10,
/* 10 */ TEXT_STATE_AWAITING_NEXT,
/* 11 */ TEXT_STATE_11,
/* 12 */ TEXT_STATE_12,
/* 13 */ TEXT_STATE_13,
/* 14 */ TEXT_STATE_14,
/* 15 */ TEXT_STATE_15,
/* 16 */ TEXT_STATE_16,
/* 17 */ TEXT_STATE_17,
/* 14 */ TEXT_STATE_INPUT_RUPEES,
/* 15 */ TEXT_STATE_INPUT_BOMBER_CODE,
/* 16 */ TEXT_STATE_PAUSE_MENU,
/* 17 */ TEXT_STATE_INPUT_LOTTERY_CODE,
/* 18 */ TEXT_STATE_18
} TextState;
@@ -282,12 +282,12 @@ typedef struct MessageContext {
/* 0x1206C */ s32 unk1206C;
/* 0x12070 */ s32 unk12070;
/* 0x12074 */ s32 unk12074;
/* 0x12078 */ s32 bankRupeesSelected;
/* 0x1207C */ s32 bankRupees;
/* 0x12080 */ struct MessageTableEntry* messageEntryTable;
/* 0x12084 */ struct MessageTableEntry* messageEntryTableNes;
/* 0x12078 */ s32 rupeesSelected; // Used for bank and doggy racetrack bet
/* 0x1207C */ s32 rupeesTotal; // Used for bank and doggy racetrack bet
/* 0x12080 */ struct MessageTableEntry* messageTable;
/* 0x12084 */ struct MessageTableEntry* messageTableNES;
/* 0x12088 */ UNK_TYPE1 unk12088[0x4];
/* 0x1208C */ struct MessageTableEntry* messageTableStaff;
/* 0x1208C */ struct MessageTableEntry* messageTableCredits;
/* 0x12090 */ s16 textIsCredits;
/* 0x12092 */ s16 messageHasSetSfx;
/* 0x12094 */ u8 textboxSkipped;
@@ -326,7 +326,7 @@ void Message_DrawTextChar(struct PlayState* play, TexturePtr texture, Gfx** gfxP
void Message_DrawItemIcon(struct PlayState* play, Gfx** gfxP);
void Message_HandleOcarina(struct PlayState* play);
void Message_LoadItemIcon(struct PlayState* play, u16 itemId, s16 arg2);
void Message_SetupLoadItemIcon(struct PlayState* play);
void Message_DecodeHeader(struct PlayState* play);
void func_801514B0(struct PlayState* play, u16 arg1, u8 arg2);
void Message_StartTextbox(struct PlayState* play, u16 textId, Actor* actor);
void Message_ContinueTextbox(struct PlayState* play, u16 textId);
+1 -1
View File
@@ -88,7 +88,7 @@ typedef struct EnHy {
/* 0x194 */ ColliderCylinder collider;
/* 0x1E0 */ u16 textId;
/* 0x1E2 */ u8 waitingOnInit;
/* 0x1E3 */ u8 inMsgState3;
/* 0x1E3 */ u8 msgFading;
/* 0x1E4 */ Path* path;
/* 0x1E8 */ s16 curPoint;
/* 0x1EC */ Vec3f leftFootPos;