summaryrefslogtreecommitdiff
path: root/mm/include/message_data_fmt_staff.h
blob: 011e27334062ab59f5651a3e5745b5cbd837cc91 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
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