diff --git a/tools/build/configure.py b/tools/build/configure.py index a0e045fc15..dbec80e84f 100755 --- a/tools/build/configure.py +++ b/tools/build/configure.py @@ -259,7 +259,7 @@ def write_ninja_rules( ninja.rule( "msg", description="msg $in", - command=f"$python {BUILD_TOOLS}/msg/parse_compile.py $in $out", + command=f"$python {BUILD_TOOLS}/msg/parse_compile.py $version $in $out", ) ninja.rule( diff --git a/tools/build/msg/parse_compile.py b/tools/build/msg/parse_compile.py index c9d4d2e345..8d28228e80 100755 --- a/tools/build/msg/parse_compile.py +++ b/tools/build/msg/parse_compile.py @@ -116,7 +116,7 @@ def color_to_code(color, style): ).get(color) -CHARSET = { +CHARSET_STANDARD = { # "𝅘𝅥𝅮": 0x00, "!": 0x01, '"': 0x02, @@ -274,6 +274,7 @@ CHARSET = { "‘": 0xA4, "’": 0xA5, " ": 0xF7, + " ": 0xF7, # "Ⓐ": [0xFF, 0x24, 0xFF, 0x05, 0x10, 0x98, 0xFF, 0x25], # "Ⓑ": [0xFF, 0x24, 0xFF, 0x05, 0x11, 0x99, 0xFF, 0x25], # "Ⓢ": [0xFF, 0x24, 0xFF, 0x05, 0x12, 0xA1, 0xFF, 0x25], @@ -329,8 +330,454 @@ CHARSET_CREDITS = { "©": 0x27, "&": 0x28, " ": 0xF7, + " ": 0xF8, } +CHARSET_KANA = { + "あ": 0x00, + "い": 0x01, + "う": 0x02, + "え": 0x03, + "お": 0x04, + "か": 0x05, + "き": 0x06, + "く": 0x07, + "け": 0x08, + "こ": 0x09, + "さ": 0x0A, + "し": 0x0B, + "す": 0x0C, + "せ": 0x0D, + "そ": 0x0E, + "た": 0x0F, + "ち": 0x10, + "つ": 0x11, + "て": 0x12, + "と": 0x13, + "な": 0x14, + "に": 0x15, + "ぬ": 0x16, + "ね": 0x17, + "の": 0x18, + "は": 0x19, + "ひ": 0x1A, + "ふ": 0x1B, + "へ": 0x1C, + "ほ": 0x1D, + "ま": 0x1E, + "み": 0x1F, + "む": 0x20, + "め": 0x21, + "も": 0x22, + "や": 0x23, + "ゆ": 0x24, + "よ": 0x25, + "ら": 0x26, + "り": 0x27, + "る": 0x28, + "れ": 0x29, + "ろ": 0x2A, + "わ": 0x2B, + "を": 0x2C, + "ん": 0x2D, + "ゔ": 0x2E, + "が": 0x2F, + "ぎ": 0x30, + "ぐ": 0x31, + "げ": 0x32, + "ご": 0x33, + "ざ": 0x34, + "じ": 0x35, + "ず": 0x36, + "ぜ": 0x37, + "ぞ": 0x38, + "だ": 0x39, + "ぢ": 0x3A, + "づ": 0x3B, + "で": 0x3C, + "ど": 0x3D, + "ば": 0x3E, + "び": 0x3F, + "ぶ": 0x40, + "べ": 0x41, + "ぼ": 0x42, + "ぱ": 0x43, + "ぴ": 0x44, + "ぷ": 0x45, + "ぺ": 0x46, + "ぽ": 0x47, + "ぁ": 0x48, + "ぃ": 0x49, + "ぅ": 0x4A, + "ぇ": 0x4B, + "ぉ": 0x4C, + "っ": 0x4D, + "ゃ": 0x4E, + "ゅ": 0x4F, + "ょ": 0x50, + "ア": 0x51, + "イ": 0x52, + "ウ": 0x53, + "エ": 0x54, + "オ": 0x55, + "カ": 0x56, + "キ": 0x57, + "ク": 0x58, + "ケ": 0x59, + "コ": 0x5A, + "サ": 0x5B, + "シ": 0x5C, + "ス": 0x5D, + "セ": 0x5E, + "ソ": 0x5F, + "タ": 0x60, + "チ": 0x61, + "ツ": 0x62, + "テ": 0x63, + "ト": 0x64, + "ナ": 0x65, + "ニ": 0x66, + "ヌ": 0x67, + "ネ": 0x68, + "ノ": 0x69, + "ハ": 0x6A, + "ヒ": 0x6B, + "フ": 0x6C, + "ヘ": 0x6D, + "ホ": 0x6E, + "マ": 0x6F, + "ミ": 0x70, + "ム": 0x71, + "メ": 0x72, + "モ": 0x73, + "ヤ": 0x74, + "ユ": 0x75, + "ヨ": 0x76, + "ラ": 0x77, + "リ": 0x78, + "ル": 0x79, + "レ": 0x7A, + "ロ": 0x7B, + "ワ": 0x7C, + "ヲ": 0x7D, + "ン": 0x7E, + "ヴ": 0x7F, + "ガ": 0x80, + "ギ": 0x81, + "グ": 0x82, + "ゲ": 0x83, + "ゴ": 0x84, + "ザ": 0x85, + "ジ": 0x86, + "ズ": 0x87, + "ゼ": 0x88, + "ゾ": 0x89, + "ダ": 0x8A, + "ヂ": 0x8B, + "ヅ": 0x8C, + "デ": 0x8D, + "ド": 0x8E, + "バ": 0x8F, + "ビ": 0x90, + "ブ": 0x91, + "ベ": 0x92, + "ボ": 0x93, + "パ": 0x94, + "ピ": 0x95, + "プ": 0x96, + "ペ": 0x97, + "ポ": 0x98, + "ァ": 0x99, + "ィ": 0x9A, + "ゥ": 0x9B, + "ェ": 0x9C, + "ォ": 0x9D, + "ッ": 0x9E, + "ャ": 0x9F, + "ュ": 0xA0, + "ョ": 0xA1, + "ー": 0xA2, + "~": 0xA3, + "~": 0xA3, + # "―": 0xA4, + # "―": 0xA5, + # "―": 0xA6, + "0": 0xA7, + "0": 0xA7, + "1": 0xA8, + "1": 0xA8, + "2": 0xA9, + "2": 0xA9, + "3": 0xAA, + "3": 0xAA, + "4": 0xAB, + "4": 0xAB, + "5": 0xAC, + "5": 0xAC, + "6": 0xAD, + "6": 0xAD, + "7": 0xAE, + "7": 0xAE, + "8": 0xAF, + "8": 0xAF, + "9": 0xB0, + "9": 0xB0, + "[up]": 0xB1, + "[down]": 0xB2, + "[left]": 0xB3, + "[right]": 0xB4, + "!": 0xB5, + "!": 0xB5, + "?": 0xB6, + "?": 0xB6, + "+": 0xB7, + "+": 0xB7, + "-": 0xB8, + "/": 0xB9, + "/": 0xB9, + ".": 0xBA, + ".": 0xBA, + "&": 0xBB, + "&": 0xBB, + "#": 0xBC, + "#": 0xBC, + "[heart]": 0xBD, + "[star]": 0xBE, + "(": 0xBF, + "(": 0xBF, + ")": 0xC0, + ")": 0xC0, + "『": 0xC1, + "』": 0xC2, + "・": 0xC3, + "[hiragana smalln]": 0xC4, + "[katakana smalln]": 0xC5, + "星": 0xC6, + # 0xC7 is unused + " ": 0xF7, + " ": 0xF8, +} + +CHARSET_LATIN = { + "A": 0x00, + "A": 0x00, + "B": 0x01, + "B": 0x01, + "C": 0x02, + "C": 0x02, + "D": 0x03, + "D": 0x03, + "E": 0x04, + "E": 0x04, + "F": 0x05, + "F": 0x05, + "G": 0x06, + "G": 0x06, + "H": 0x07, + "H": 0x07, + "I": 0x08, + "I": 0x08, + "J": 0x09, + "J": 0x09, + "K": 0x0A, + "K": 0x0A, + "L": 0x0B, + "L": 0x0B, + "M": 0x0C, + "M": 0x0C, + "N": 0x0D, + "N": 0x0D, + "O": 0x0E, + "O": 0x0E, + "P": 0x0F, + "P": 0x0F, + "Q": 0x10, + "Q": 0x10, + "R": 0x11, + "R": 0x11, + "S": 0x12, + "S": 0x12, + "T": 0x13, + "T": 0x13, + "U": 0x14, + "U": 0x14, + "V": 0x15, + "V": 0x15, + "W": 0x16, + "W": 0x16, + "X": 0x17, + "X": 0x17, + "Y": 0x18, + "Y": 0x18, + "Z": 0x19, + "Z": 0x19, + "z": 0x1A, + "z": 0x1A, + " ": 0xF7, + " ": 0xF8, +} + +CHARSET_KANJI = { + "上": 0x00, + "下": 0x01, + "左": 0x02, + "右": 0x03, + "中": 0x04, + "東": 0x05, + "西": 0x06, + "南": 0x07, + "北": 0x08, + "一": 0x09, + "二": 0x0A, + "三": 0x0B, + "名": 0x0C, + "国": 0x0D, + "城": 0x0E, + "姫": 0x0F, + "大": 0x10, + "王": 0x11, + "花": 0x12, + "世": 0x13, + "界": 0x14, + "草": 0x15, + "気": 0x16, + "間": 0x17, + "門": 0x18, + "家": 0x19, + "地": 0x1A, + "岩": 0x1B, + "駅": 0x1C, + "山": 0x1D, + "海": 0x1E, + "火": 0x1F, + "水": 0x20, + "氷": 0x21, + "日": 0x22, + "根": 0x23, + "雲": 0x24, + "口": 0x25, + "原": 0x26, + "前": 0x27, + "店": 0x28, + "天": 0x29, + "森": 0x2A, + "木": 0x2B, + "力": 0x2C, + "空": 0x2D, + "人": 0x2E, + "島": 0x2F, + "出": 0x30, + "入": 0x31, + "本": 0x32, + "石": 0x33, + "村": 0x34, + "休": 0x35, + "先": 0x36, + "見": 0x37, + "近": 0x38, + "方": 0x39, + "法": 0x3A, + "手": 0x3B, + "紙": 0x3C, + "引": 0x3D, + "場": 0x3E, + "所": 0x3F, + "使": 0x40, + "回": 0x41, + "道": 0x42, + "物": 0x43, + "弟": 0x44, + "子": 0x45, + "汽": 0x46, + "車": 0x47, + "何": 0x48, + "黒": 0x49, + "分": 0x4A, + "時": 0x4B, + "屋": 0x4C, + "音": 0x4D, + "目": 0x4E, + "行": 0x4F, + "絵": 0x50, + "月": 0x51, + "野": 0x52, + "外": 0x53, + "図": 0x54, + "部": 0x55, + "小": 0x56, + "風": 0x57, + "魔": 0x58, + "元": 0x59, + "太": 0x5A, + "陽": 0x5B, + "実": 0x5C, + "赤": 0x5D, + "雪": 0x5E, + "谷": 0x5F, + "通": 0x60, + "[circle]": 0x61, + "[cross]": 0x62, + "長": 0x63, + "話": 0x64, + "色": 0x65, + "光": 0x66, + "合": 0x67, + "青": 0x68, + "黄": 0x69, + "[note]": 0x6A, + "当": 0x6B, + "数": 0x6C, + "兄": 0x6D, + "用": 0x6E, + "心": 0x6F, + "今": 0x70, + "正": 0x71, + "直": 0x72, + "全": 0x73, + "体": 0x74, + "夜": 0x75, + "面": 0x76, + "虫": 0x77, + "x": 0x78, + "x": 0x78, + " ": 0xF7, + " ": 0xF8, +} + +CHARSET_BUTTONS = { + "[~a]": 0x00, + "[~b]": 0x01, + "[~start]": 0x02, + "[~c-up]": 0x03, + "[~c-down]": 0x04, + "[~c-left]": 0x05, + "[~c-right]": 0x06, + "[~z]": 0x07, + "[~l]": 0x08, + "[~r]": 0x09, +} + + +def check_if_correct_charset(char, cur_charset, filename, lineno): + warn_msg = f"{filename}:{lineno}: Warning: character '{char}' is present but is completely in a wrong charset currently set. Add {{}} before the character to silence this warning." + + if char == " " or char == " ": + return -1, cur_charset + elif char in CHARSET_KANA and cur_charset is not CHARSET_KANA: + print(warn_msg.format("[Charset Kana]")) + return 0, CHARSET_KANA + elif char in CHARSET_LATIN and cur_charset is not CHARSET_LATIN: + print(warn_msg.format("[Charset Latin]")) + return 1, CHARSET_LATIN + elif char in CHARSET_KANJI and cur_charset is not CHARSET_KANJI: + print(warn_msg.format("[Charset Kanji]")) + return 2, CHARSET_KANJI + elif char in CHARSET_BUTTONS and cur_charset is not CHARSET_BUTTONS: + print(warn_msg.format("[Charset Buttons]")) + return 3, CHARSET_BUTTONS + + return -1, cur_charset + def strip_c_comments(text): def replacer(match): @@ -349,11 +796,12 @@ def strip_c_comments(text): if __name__ == "__main__": if len(argv) < 3: - print("usage: parse_compile.py [in.msg] [out.msgpack] [--c]") + print("usage: parse_compile.py [version] [in.msg] [out.msgpack] [--c]") exit(1) - filename = argv[1] - outfile = argv[2] + version = argv[1] + filename = argv[2] + outfile = argv[3] is_output_format_c = "--c" in argv messages = [] @@ -366,7 +814,10 @@ if __name__ == "__main__": directive = "" indent_level = 0 - charset = CHARSET + if version == "jp": + charset = CHARSET_KANA + else: + charset = CHARSET_STANDARD font_stack = [0] sound_stack = [0] color_stack = [0x0A] @@ -433,6 +884,11 @@ if __name__ == "__main__": message = Message(name, section, index) messages.append(message) + if version == "jp": + charset = CHARSET_KANA + else: + charset = CHARSET_STANDARD + while source[0] != "{": source = source[1:] @@ -557,6 +1013,8 @@ if __name__ == "__main__": message.bytes += [0x09, index] elif style == "popup": message.bytes += [0x0A] + elif style == "popup2": + message.bytes += [0x0B] elif style == "upgrade": pos = named_args.get("pos") @@ -592,6 +1050,8 @@ if __name__ == "__main__": font = 0 elif font == "menu": font = 1 + elif font == "menu2": + font = 2 elif font == "title": font = 3 elif font == "subtitle": @@ -607,7 +1067,10 @@ if __name__ == "__main__": if font == 3 or font == 4: charset = CHARSET_CREDITS else: - charset = CHARSET + if version == "jp": + charset = CHARSET_KANA + else: + charset = CHARSET_STANDARD # elif command == "/font": # font_stack.pop() # message.bytes += [0xFF, 0x00, font_stack[0]] @@ -616,6 +1079,41 @@ if __name__ == "__main__": # charset = CHARSET_CREDITS # else: # charset = CHARSET + elif command == "charset": + if version != "jp": + print(f"{filename}:{lineno}: charset command is only supported in the JP version") + exit(1) + + if len(args) != 1: + print(f"{filename}:{lineno}: charset command requires 1 parameter") + exit(1) + + arg_charset = args[0] + + if arg_charset == "kana": + arg_charset = 0 + elif arg_charset == "latin": + arg_charset = 1 + elif arg_charset == "kanji": + arg_charset = 2 + elif arg_charset == "buttons": + arg_charset = 3 + + if type(arg_charset) is not int: + print(f"{filename}:{lineno}: unknown charset '{arg_charset}'") + exit(1) + + message.bytes += [0xF3 + arg_charset] + + if arg_charset == 0: + charset = CHARSET_KANA + elif arg_charset == 1: + charset = CHARSET_LATIN + elif arg_charset == 2: + charset = CHARSET_KANJI + elif arg_charset == 3: + charset = CHARSET_BUTTONS + elif command == "inputoff": message.bytes += [0xFF, 0x07] elif command == "inputon": @@ -686,7 +1184,13 @@ if __name__ == "__main__": message.bytes += [0xFF, 0x11, *args] elif command == "right": if len(args) == 0: - message.bytes += [0x95] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[right]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0xB4] + else: + message.bytes += [0x95] else: if len(args) != 1: print(f"{filename}:{lineno}: {command} command requires 1 parameter") @@ -695,7 +1199,13 @@ if __name__ == "__main__": message.bytes += [0xFF, 0x12, args[0]] elif command == "down": if len(args) == 0: - message.bytes += [0x93] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[down]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0xB2] + else: + message.bytes += [0x93] else: if len(args) != 1: print(f"{filename}:{lineno}: {command} command requires 1 parameter") @@ -704,7 +1214,13 @@ if __name__ == "__main__": message.bytes += [0xFF, 0x13, args[0]] elif command == "up": if len(args) == 0: - message.bytes += [0x92] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[up]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0xB1] + else: + message.bytes += [0x92] else: if len(args) != 1: print(f"{filename}:{lineno}: {command} command requires 1 parameter") @@ -1015,189 +1531,453 @@ if __name__ == "__main__": elif command == "a": color_code = color_to_code("blue", "button") assert color_code is not None - message.bytes += [ - 0xFF, - 0x24, - 0xFF, - 0x05, - color_code, - 0x98, - 0xFF, - 0x25, - ] + if version == "jp": + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0xF6, + 0x00, + 0xFF, + 0x25, + ] + else: + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0x98, + 0xFF, + 0x25, + ] elif command == "b": color_code = color_to_code( named_args.get("color", "green"), named_args.get("ctx", "button"), ) assert color_code is not None - message.bytes += [ - 0xFF, - 0x24, - 0xFF, - 0x05, - color_code, - 0x99, - 0xFF, - 0x25, - ] + if version == "jp": + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0xF6, + 0x01, + 0xFF, + 0x25, + ] + else: + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0x99, + 0xFF, + 0x25, + ] elif command == "l": color_code = color_to_code( named_args.get("color", "gray"), named_args.get("ctx", "button"), ) assert color_code is not None - message.bytes += [ - 0xFF, - 0x24, - 0xFF, - 0x05, - color_code, - 0x9A, - 0xFF, - 0x25, - ] + if version == "jp": + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0xF6, + 0x08, + 0xFF, + 0x25, + ] + else: + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0x9A, + 0xFF, + 0x25, + ] elif command == "r": color_code = color_to_code( named_args.get("color", "gray"), named_args.get("ctx", "button"), ) assert color_code is not None - message.bytes += [ - 0xFF, - 0x24, - 0xFF, - 0x05, - color_code, - 0x9B, - 0xFF, - 0x25, - ] + if version == "jp": + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0xF6, + 0x09, + 0xFF, + 0x25, + ] + else: + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0x9B, + 0xFF, + 0x25, + ] elif command == "z": color_code = color_to_code("grey", "button") assert color_code is not None - message.bytes += [ - 0xFF, - 0x24, - 0xFF, - 0x05, - color_code, - 0x9C, - 0xFF, - 0x25, - ] + if version == "jp": + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0xF6, + 0x07, + 0xFF, + 0x25, + ] + else: + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0x9C, + 0xFF, + 0x25, + ] elif command == "c-up": color_code = color_to_code( named_args.get("color", "yellow"), named_args.get("ctx", "button"), ) assert color_code is not None - message.bytes += [ - 0xFF, - 0x24, - 0xFF, - 0x05, - color_code, - 0x9D, - 0xFF, - 0x25, - ] + if version == "jp": + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0xF6, + 0x03, + 0xFF, + 0x25, + ] + else: + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0x9D, + 0xFF, + 0x25, + ] elif command == "c-down": color_code = color_to_code( named_args.get("color", "yellow"), named_args.get("ctx", "button"), ) assert color_code is not None - message.bytes += [ - 0xFF, - 0x24, - 0xFF, - 0x05, - color_code, - 0x9E, - 0xFF, - 0x25, - ] + if version == "jp": + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0xF6, + 0x04, + 0xFF, + 0x25, + ] + else: + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0x9E, + 0xFF, + 0x25, + ] elif command == "c-left": color_code = color_to_code( named_args.get("color", "yellow"), named_args.get("ctx", "button"), ) assert color_code is not None - message.bytes += [ - 0xFF, - 0x24, - 0xFF, - 0x05, - color_code, - 0x9F, - 0xFF, - 0x25, - ] + if version == "jp": + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0xF6, + 0x05, + 0xFF, + 0x25, + ] + else: + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0x9F, + 0xFF, + 0x25, + ] elif command == "c-right": color_code = color_to_code( named_args.get("color", "yellow"), named_args.get("ctx", "button"), ) assert color_code is not None - message.bytes += [ - 0xFF, - 0x24, - 0xFF, - 0x05, - color_code, - 0xA0, - 0xFF, - 0x25, - ] + if version == "jp": + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0xF6, + 0x06, + 0xFF, + 0x25, + ] + else: + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0xA0, + 0xFF, + 0x25, + ] elif command == "start": color_code = color_to_code( named_args.get("color", "red"), named_args.get("ctx", "button"), ) # assert color_code is not None - message.bytes += [ - 0xFF, - 0x24, - 0xFF, - 0x05, - color_code, - 0xA1, - 0xFF, - 0x25, - ] + if version == "jp": + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0xF6, + 0x02, + 0xFF, + 0x25, + ] + else: + message.bytes += [ + 0xFF, + 0x24, + 0xFF, + 0x05, + color_code, + 0xA1, + 0xFF, + 0x25, + ] elif command == "~a": - message.bytes += [0x98] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[~a]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0x00] + else: + message.bytes += [0x98] elif command == "~b": - message.bytes += [0x99] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[~b]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0x01] + else: + message.bytes += [0x99] elif command == "~l": - message.bytes += [0x9A] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[~l]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0x08] + else: + message.bytes += [0x9A] elif command == "~r": - message.bytes += [0x9B] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[~r]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0x09] + else: + message.bytes += [0x9B] elif command == "~z": - message.bytes += [0x9C] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[~z]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0x07] + else: + message.bytes += [0x9C] elif command == "~c-up": - message.bytes += [0x9D] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[~c-up]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0x03] + else: + message.bytes += [0x9D] elif command == "~c-down": - message.bytes += [0x9E] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[~c-down]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0x04] + else: + message.bytes += [0x9E] elif command == "~c-left": - message.bytes += [0x9F] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[~c-left]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0x05] + else: + message.bytes += [0x9F] elif command == "~c-right": - message.bytes += [0xA0] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[~c-right]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0x06] + else: + message.bytes += [0xA0] elif command == "~start": - message.bytes += [0xA1] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[~start]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0x02] + else: + message.bytes += [0xA1] elif command == "note": - message.bytes += [0x00] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[note]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0x6A] + else: + message.bytes += [0x00] elif command == "heart": - message.bytes += [0x90] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[heart]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0xBD] + else: + message.bytes += [0x90] elif command == "star": - message.bytes += [0x91] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[star]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0xBE] + else: + message.bytes += [0x91] elif command == "left": - message.bytes += [0x94] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[left]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0xB3] + else: + message.bytes += [0x94] elif command == "circle": - message.bytes += [0x96] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[circle]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0x61] + else: + message.bytes += [0x96] elif command == "cross": - message.bytes += [0x97] + if version == "jp": + charset_byte, charset = check_if_correct_charset("[cross]", charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0x62] + else: + message.bytes += [0x97] + elif command == "katakana": + if version != "jp": + print(f"{filename}:{lineno}: Command katakana is only supported in the JP version") + exit(1) + + kana_char = args[0] + + if kana_char == "smalln": + charset_byte, charset = check_if_correct_charset( + "[katakana smalln]", charset, filename, lineno + ) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0xC5] + else: + print(f"{filename}:{lineno}: Invalid or unimplemented katakana character name {kana_char}") + exit(1) + elif command == "hiragana": + if version != "jp": + print(f"{filename}:{lineno}: Command hiragana is only supported in the JP version") + exit(1) + + kana_char = args[0] + + if kana_char == "smalln": + charset_byte, charset = check_if_correct_charset( + "[hiragana smalln]", charset, filename, lineno + ) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + message.bytes += [0xC4] + else: + print(f"{filename}:{lineno}: Invalid or unimplemented hiragana character name {kana_char}") + exit(1) + elif command == "fullspace": + message.bytes += [0xF8] + elif command == "halfspace": + message.bytes += [0xF9] elif command == "savepos": message.bytes += [0xFF, 0x22] elif command == "restorepos": @@ -1255,7 +2035,19 @@ if __name__ == "__main__": if source[0] == "\\": source = source[1:] - if source[0] in charset: + if version == "jp" and charset is not CHARSET_CREDITS: + charset_byte, charset = check_if_correct_charset(source[0], charset, filename, lineno) + if charset_byte != -1: + message.bytes += [0xF3 + charset_byte] + elif ( + source[0] not in CHARSET_KANA + and source[0] not in CHARSET_LATIN + and source[0] not in CHARSET_KANJI + and source[0] not in CHARSET_BUTTONS + ): + print(f"{filename}:{lineno}: unsupported character '{source[0]}' for current font") + exit(1) + data = charset[source[0]] if type(data) is int: @@ -1265,8 +2057,18 @@ if __name__ == "__main__": source = source[1:] else: - print(f"{filename}:{lineno}: unsupported character '{source[0]}' for current font") - exit(1) + if source[0] in charset: + data = charset[source[0]] + + if type(data) is int: + message.bytes.append(data) + else: + message.bytes += data + + source = source[1:] + else: + print(f"{filename}:{lineno}: unsupported character '{source[0]}' for current font") + exit(1) if message != None: print(f"{filename}: missing [end]") diff --git a/tools/splat_ext/msg_jp.yaml b/tools/splat_ext/msg_jp.yaml new file mode 100644 index 0000000000..76755779f2 --- /dev/null +++ b/tools/splat_ext/msg_jp.yaml @@ -0,0 +1,1152 @@ +# This file describes what to name messages when splitting. + +- [0x00, 0x0000, NONE] +- [0x20, 0x000E, Menus_Party_Goombario] +- [0x20, 0x000F, Menus_Party_Kooper] +- [0x20, 0x0010, Menus_Party_Bombette] +- [0x20, 0x0011, Menus_Party_Parakarry] +- [0x20, 0x0012, Menus_Party_Goompa] +- [0x20, 0x0013, Menus_Party_Watt] +- [0x20, 0x0014, Menus_Party_Sushie] +- [0x20, 0x0015, Menus_Party_Lakilester] +- [0x20, 0x0016, Menus_Party_Bow] +- [0x20, 0x0017, Menus_Party_Goombaria] +- [0x20, 0x0018, Menus_Party_Twink] +- [0x20, 0x001B, Menus_StarPower_Focus] +- [0x20, 0x001C, Menus_StarPower_Refresh] +- [0x20, 0x001D, Menus_StarPower_Lullaby] +- [0x20, 0x001E, Menus_StarPower_StarStorm] +- [0x20, 0x001F, Menus_StarPower_ChillOut] +- [0x20, 0x0020, Menus_StarPower_Smooch] +- [0x20, 0x0021, Menus_StarPower_TimeOut] +- [0x20, 0x0022, Menus_StarPower_UpAndAway] +- [0x20, 0x0023, Menus_StarPower_StarBeam] +- [0x20, 0x0024, Menus_StarPower_PeachBeam] +- [0x20, 0x0025, Menus_StarPower_Peach_Focus] +- [0x20, 0x0026, Menus_StarPower_Twink_Dash] +- [0x20, 0x0027, Menus_StarPowerDesc_Focus] +- [0x20, 0x0028, Menus_StarPowerDesc_Refresh] +- [0x20, 0x0029, Menus_StarPowerDesc_Lullaby] +- [0x20, 0x002A, Menus_StarPowerDesc_StarStorm] +- [0x20, 0x002B, Menus_StarPowerDesc_ChillOut] +- [0x20, 0x002C, Menus_StarPowerDesc_Smooch] +- [0x20, 0x002D, Menus_StarPowerDesc_TimeOut] +- [0x20, 0x002E, Menus_StarPowerDesc_UpAndAway] +- [0x20, 0x002F, Menus_StarPowerDesc_StarBeam] +- [0x20, 0x0030, Menus_StarPowerDesc_PeachBeam] +- [0x20, 0x0069, Menus_Jump] +- [0x20, 0x006A, Menus_Hammer] +- [0x20, 0x006B, Menus_Items] +- [0x20, 0x0089, Menus_Merlee_IncreaseCoins] +- [0x20, 0x008A, Menus_Merlee_Exhausted] +- [0x20, 0x00BB, Menus_Action_UseItem] +- [0x20, 0x00C4, Menus_PlayerFirstStrike] +- [0x20, 0x00C5, Menus_PartnerFirstStrike] +- [0x20, 0x00C6, Menus_EnemyFirstStrike] +- [0x28, 0x0000, ItemShortDesc_FireFlower] +- [0x28, 0x0001, ItemShortDesc_SnowmanDoll] +- [0x28, 0x0002, ItemShortDesc_ThunderRage] +- [0x28, 0x0003, ItemShortDesc_ThunderBolt] +- [0x28, 0x0004, ItemShortDesc_ShootingStar] +- [0x28, 0x0005, ItemShortDesc_DustyHammer] +- [0x28, 0x0006, ItemShortDesc_Pebble] +- [0x28, 0x0007, ItemShortDesc_StoneCap] +- [0x28, 0x0008, ItemShortDesc_VoltShroom] +- [0x28, 0x000C, ItemShortDesc_Mushroom] +- [0x28, 0x000D, ItemShortDesc_SuperShroom] +- [0x28, 0x000E, ItemShortDesc_UltraShroom] +- [0x28, 0x000F, ItemShortDesc_LifeShroom] +- [0x28, 0x0010, ItemShortDesc_DriedShroom] +- [0x28, 0x0011, ItemShortDesc_TastyTonic] +- [0x28, 0x0012, ItemShortDesc_SuperSoda] +- [0x28, 0x0013, ItemShortDesc_BlueBerry] +- [0x28, 0x0014, ItemShortDesc_RedBerry] +- [0x28, 0x0015, ItemShortDesc_YellowBerry] +- [0x28, 0x0016, ItemShortDesc_BubbleBerry] +- [0x28, 0x0017, ItemShortDesc_Lime] +- [0x28, 0x0018, ItemShortDesc_Lemon] +- [0x28, 0x0019, ItemShortDesc_HoneySyrup] +- [0x28, 0x001A, ItemShortDesc_MapleSyrup] +- [0x28, 0x001B, ItemShortDesc_JamminJelly] +- [0x28, 0x001C, ItemShortDesc_WhackasBump] +- [0x28, 0x001D, ItemShortDesc_Apple] +- [0x28, 0x001E, ItemShortDesc_Goomnut] +- [0x28, 0x001F, ItemShortDesc_KoopaLeaf] +- [0x28, 0x0020, ItemShortDesc_DriedPasta] +- [0x28, 0x0021, ItemShortDesc_DriedFruit] +- [0x28, 0x0022, ItemShortDesc_StrangeLeaf] +- [0x28, 0x0023, ItemShortDesc_CakeMix] +- [0x28, 0x0024, ItemShortDesc_Egg] +- [0x28, 0x0025, ItemShortDesc_Coconut] +- [0x28, 0x0026, ItemShortDesc_Melon] +- [0x28, 0x0027, ItemShortDesc_StinkyHerb] +- [0x28, 0x0028, ItemShortDesc_IcedPotato] +- [0x28, 0x0029, ItemShortDesc_SleepySheep] +- [0x28, 0x002B, ItemShortDesc_POWBlock] +- [0x28, 0x002C, ItemShortDesc_HustleDrink] +- [0x28, 0x002D, ItemShortDesc_StopWatch] +- [0x28, 0x002E, ItemShortDesc_DizzyDial] +- [0x28, 0x002F, ItemShortDesc_PleaseComeBack] +- [0x28, 0x0031, ItemShortDesc_FrightJar] +- [0x28, 0x0032, ItemShortDesc_Mystery] +- [0x28, 0x0033, ItemShortDesc_RepelGel] +- [0x28, 0x0034, ItemShortDesc_InsecticideHerb] +- [0x28, 0x0036, ItemShortDesc_SpicySoup] +- [0x28, 0x0037, ItemShortDesc_ApplePie] +- [0x28, 0x0038, ItemShortDesc_HoneyShroom] +- [0x28, 0x0039, ItemShortDesc_MapleShroom] +- [0x28, 0x003A, ItemShortDesc_JellyShroom] +- [0x28, 0x003B, ItemShortDesc_HoneySuper] +- [0x28, 0x003C, ItemShortDesc_MapleSuper] +- [0x28, 0x003D, ItemShortDesc_JellySuper] +- [0x28, 0x003E, ItemShortDesc_HoneyUltra] +- [0x28, 0x003F, ItemShortDesc_MapleUltra] +- [0x28, 0x0040, ItemShortDesc_JellyUltra] +- [0x28, 0x0041, ItemShortDesc_Koopasta] +- [0x28, 0x0042, ItemShortDesc_FriedShroom] +- [0x28, 0x0043, ItemShortDesc_HotShroom] +- [0x28, 0x0044, ItemShortDesc_ShroomSteak] +- [0x28, 0x0045, ItemShortDesc_ShroomCake] +- [0x28, 0x0046, ItemShortDesc_SweetShroom] +- [0x28, 0x0047, ItemShortDesc_BlandMeal] +- [0x28, 0x0048, ItemShortDesc_YummyMeal] +- [0x28, 0x0049, ItemShortDesc_DeluxeFeast] +- [0x28, 0x004A, ItemShortDesc_SpecialShake] +- [0x28, 0x004B, ItemShortDesc_HealthyJuice] +- [0x28, 0x004C, ItemShortDesc_BigCookie] +- [0x28, 0x004D, ItemShortDesc_Cake] +- [0x28, 0x004E, ItemShortDesc_Mistake] +- [0x28, 0x004F, ItemShortDesc_KoopaTea] +- [0x28, 0x0050, ItemShortDesc_Spaghetti] +- [0x28, 0x0051, ItemShortDesc_EggMissile] +- [0x28, 0x0052, ItemShortDesc_FriedEgg] +- [0x28, 0x0053, ItemShortDesc_HoneyCandy] +- [0x28, 0x0054, ItemShortDesc_ElectroPop] +- [0x28, 0x0055, ItemShortDesc_FirePop] +- [0x28, 0x0056, ItemShortDesc_LimeCandy] +- [0x28, 0x0057, ItemShortDesc_CocoPop] +- [0x28, 0x0058, ItemShortDesc_LemonCandy] +- [0x28, 0x0059, ItemShortDesc_JellyPop] +- [0x28, 0x005A, ItemShortDesc_StrangeCake] +- [0x28, 0x005B, ItemShortDesc_KookyCookie] +- [0x28, 0x005C, ItemShortDesc_FrozenFries] +- [0x28, 0x005D, ItemShortDesc_PotatoSalad] +- [0x28, 0x005E, ItemShortDesc_NuttyCake] +- [0x28, 0x005F, ItemShortDesc_BoiledEgg] +- [0x28, 0x0060, ItemShortDesc_YoshiCookie] +- [0x28, 0x0061, ItemShortDesc_PowerJump] +- [0x28, 0x0062, ItemShortDesc_SuperJump] +- [0x28, 0x0063, ItemShortDesc_MegaJump] +- [0x28, 0x0064, ItemShortDesc_JumpCharge0] +- [0x28, 0x0065, ItemShortDesc_JumpCharge] +- [0x28, 0x0066, ItemShortDesc_SJumpChg] +- [0x28, 0x0067, ItemShortDesc_SleepStomp] +- [0x28, 0x0068, ItemShortDesc_DizzyStomp] +- [0x28, 0x0069, ItemShortDesc_Multibounce] +- [0x28, 0x006A, ItemShortDesc_ShrinkStomp] +- [0x28, 0x006B, ItemShortDesc_DDownJump] +- [0x28, 0x006C, ItemShortDesc_PowerBounce] +- [0x28, 0x006D, ItemShortDesc_AutoMultibounce] +- [0x28, 0x006E, ItemShortDesc_EarthquakeJump] +- [0x28, 0x006F, ItemShortDesc_AutoJump] +- [0x28, 0x0070, ItemShortDesc_PowerSmash] +- [0x28, 0x0071, ItemShortDesc_SuperSmash] +- [0x28, 0x0072, ItemShortDesc_MegaSmash] +- [0x28, 0x0073, ItemShortDesc_SmashCharge0] +- [0x28, 0x0074, ItemShortDesc_SmashCharge] +- [0x28, 0x0075, ItemShortDesc_SSmashChg] +- [0x28, 0x0076, ItemShortDesc_HammerThrow] +- [0x28, 0x0077, ItemShortDesc_ShrinkSmash] +- [0x28, 0x0078, ItemShortDesc_SpinSmash] +- [0x28, 0x0079, ItemShortDesc_DDownPound] +- [0x28, 0x007A, ItemShortDesc_QuakeHammer] +- [0x28, 0x007B, ItemShortDesc_PowerQuake] +- [0x28, 0x007C, ItemShortDesc_MegaQuake] +- [0x28, 0x007D, ItemShortDesc_AutoSmash] +- [0x28, 0x007E, ItemShortDesc_DoubleDip] +- [0x28, 0x007F, ItemShortDesc_TripleDip] +- [0x28, 0x0080, ItemShortDesc_GroupFocus] +- [0x28, 0x0081, ItemShortDesc_QuickChange] +- [0x28, 0x0082, ItemShortDesc_HPPlus] +- [0x28, 0x0083, ItemShortDesc_FPPlus] +- [0x28, 0x0084, ItemShortDesc_PowerPlus] +- [0x28, 0x0085, ItemShortDesc_DefendPlus] +- [0x28, 0x0086, ItemShortDesc_DamageDodge] +- [0x28, 0x0087, ItemShortDesc_PUpDDown] +- [0x28, 0x0088, ItemShortDesc_PDownDUp] +- [0x28, 0x0089, ItemShortDesc_HPDrain] +- [0x28, 0x008A, ItemShortDesc_MegaHPDrain] +- [0x28, 0x008B, ItemShortDesc_HappyHeart] +- [0x28, 0x008C, ItemShortDesc_CrazyHeart] +- [0x28, 0x008D, ItemShortDesc_HappyFlower] +- [0x28, 0x008E, ItemShortDesc_FlowerSaver] +- [0x28, 0x008F, ItemShortDesc_FlowerFanatic] +- [0x28, 0x0090, ItemShortDesc_HeartFinder] +- [0x28, 0x0091, ItemShortDesc_FlowerFinder] +- [0x28, 0x0092, ItemShortDesc_DeepFocus] +- [0x28, 0x0093, ItemShortDesc_SuperFocus] +- [0x28, 0x0094, ItemShortDesc_SpikeShield] +- [0x28, 0x0095, ItemShortDesc_DodgeMaster] +- [0x28, 0x0096, ItemShortDesc_PrettyLucky] +- [0x28, 0x0097, ItemShortDesc_LuckyDay] +- [0x28, 0x0098, ItemShortDesc_CloseCall] +- [0x28, 0x0099, ItemShortDesc_PowerRush] +- [0x28, 0x009A, ItemShortDesc_LastStand] +- [0x28, 0x009B, ItemShortDesc_MegaRush] +- [0x28, 0x009C, ItemShortDesc_FirstAttack] +- [0x28, 0x009D, ItemShortDesc_BumpAttack] +- [0x28, 0x009E, ItemShortDesc_SpinAttack] +- [0x28, 0x009F, ItemShortDesc_DizzyAttack] +- [0x28, 0x00A0, ItemShortDesc_SpeedySpin] +- [0x28, 0x00A1, ItemShortDesc_FeelingFine] +- [0x28, 0x00A2, ItemShortDesc_AttackFXA] +- [0x28, 0x00A3, ItemShortDesc_AttackFXD] +- [0x28, 0x00A4, ItemShortDesc_AttackFXB] +- [0x28, 0x00A5, ItemShortDesc_AttackFXE] +- [0x28, 0x00A6, ItemShortDesc_AttackFXC] +- [0x28, 0x00A7, ItemShortDesc_AttackFXF] +- [0x28, 0x00A8, ItemShortDesc_AllorNothing] +- [0x28, 0x00A9, ItemShortDesc_SlowGo] +- [0x28, 0x00AA, ItemShortDesc_IcePower] +- [0x28, 0x00AB, ItemShortDesc_PayOff] +- [0x28, 0x00AC, ItemShortDesc_FireShield] +- [0x28, 0x00AD, ItemShortDesc_ChillOut] +- [0x28, 0x00AE, ItemShortDesc_ZapTap] +- [0x28, 0x00AF, ItemShortDesc_MoneyMoney] +- [0x28, 0x00B0, ItemShortDesc_Berserker] +- [0x28, 0x00B1, ItemShortDesc_RightOn] +- [0x28, 0x00B2, ItemShortDesc_RunawayPay] +- [0x28, 0x00B3, ItemShortDesc_Refund] +- [0x28, 0x00B4, ItemShortDesc_ISpy] +- [0x28, 0x00B5, ItemShortDesc_Peekaboo] +- [0x28, 0x00B6, ItemShortDesc_HealthyHealthy] +- [0x28, 0x00B7, ItemShortDesc_Kaiden] +- [0x28, 0x00BB, ItemShortDesc_ShellCrack] +- [0x28, 0x00BD, ShortDesc_32] +- [0x28, 0x00C5, ItemShortDesc_MysteryScroll] +- [0x28, 0x00C6, ItemShortDesc_Boots] +- [0x28, 0x00C7, ItemShortDesc_SuperBoots] +- [0x28, 0x00C8, ItemShortDesc_UltraBoots] +- [0x28, 0x00C9, ItemShortDesc_Hammer] +- [0x28, 0x00CA, ItemShortDesc_SuperHammer] +- [0x28, 0x00CB, ItemShortDesc_UltraHammer] +- [0x28, 0x00CC, ItemShortDesc_LuckyStar] +- [0x28, 0x00CF, ItemShortDesc_KoopaFortressKey] +- [0x28, 0x00D0, ItemShortDesc_RuinsKey] +- [0x28, 0x00D1, ItemShortDesc_TubbaCastleKey] +- [0x28, 0x00D2, ItemShortDesc_CrystalPalaceKey] +- [0x28, 0x00D3, ItemShortDesc_BowserCastleKey] +- [0x28, 0x00D4, ItemShortDesc_PeachKey] +- [0x28, 0x00D5, ItemShortDesc_OddKey] +- [0x28, 0x00D6, ItemShortDesc_Screwdriver] +- [0x28, 0x00D7, ItemShortDesc_Dolly] +- [0x28, 0x00D8, ItemShortDesc_KooperShell] +- [0x28, 0x00D9, ItemShortDesc_PulseStone] +- [0x28, 0x00DA, ItemShortDesc_Artifact] +- [0x28, 0x00DB, ItemShortDesc_GoldenJar] +- [0x28, 0x00DC, ItemShortDesc_LunarStone] +- [0x28, 0x00DD, ItemShortDesc_PyramidStone] +- [0x28, 0x00DE, ItemShortDesc_DiamondStone] +- [0x28, 0x00DF, ItemShortDesc_ForestPass] +- [0x28, 0x00E0, ItemShortDesc_BooRecord] +- [0x28, 0x00E1, ItemShortDesc_BooWeight] +- [0x28, 0x00E2, ItemShortDesc_BooPortrait] +- [0x28, 0x00E3, ItemShortDesc_MysticalKey] +- [0x28, 0x00E4, ItemShortDesc_StoreroomKey] +- [0x28, 0x00E5, ItemShortDesc_ToyTrain] +- [0x28, 0x00E6, ItemShortDesc_FryingPan] +- [0x28, 0x00E7, ItemShortDesc_Dictionary] +- [0x28, 0x00E8, ItemShortDesc_MysteryNote] +- [0x28, 0x00E9, ItemShortDesc_SuspiciousNote] +- [0x28, 0x00EA, ItemShortDesc_Mailbag] +- [0x28, 0x00EB, ItemShortDesc_MagicalSeed1] +- [0x28, 0x00EC, ItemShortDesc_MagicalSeed2] +- [0x28, 0x00ED, ItemShortDesc_MagicalSeed3] +- [0x28, 0x00EE, ItemShortDesc_MagicalSeed4] +- [0x28, 0x00EF, ItemShortDesc_CrystalBerry] +- [0x28, 0x00F0, ItemShortDesc_WaterStone] +- [0x28, 0x00F1, ItemShortDesc_MagicalBean] +- [0x28, 0x00F2, ItemShortDesc_FertileSoil] +- [0x28, 0x00F3, ItemShortDesc_MiracleWater] +- [0x28, 0x00F4, ItemShortDesc_CrystalBall] +- [0x28, 0x00F5, ItemShortDesc_ToadDoll] +- [0x28, 0x00F6, ItemShortDesc_Calculator] +- [0x28, 0x00F7, ItemShortDesc_Cookbook] +- [0x28, 0x00F8, ItemShortDesc_JadeRaven] +- [0x28, 0x00F9, ItemShortDesc_VolcanoVase] +- [0x28, 0x00FA, ItemShortDesc_WarehouseKey] +- [0x28, 0x00FB, ItemShortDesc_SnowmanBucket] +- [0x28, 0x00FC, ItemShortDesc_SnowmanScarf] +- [0x28, 0x00FD, ItemShortDesc_StarStone] +- [0x28, 0x00FE, ItemShortDesc_RedKey] +- [0x28, 0x00FF, ItemShortDesc_BlueKey] +- [0x28, 0x0100, ItemShortDesc_SneakyParasol] +- [0x28, 0x0101, ItemShortDesc_PrisonKey] +- [0x28, 0x0102, ItemShortDesc_Lyrics] +- [0x28, 0x0103, ItemShortDesc_Melody] +- [0x28, 0x0104, ItemShortDesc_BakingSugar] +- [0x28, 0x0105, ItemShortDesc_BakingSalt] +- [0x28, 0x0106, ItemShortDesc_BakingEgg] +- [0x28, 0x0107, ItemShortDesc_BakingCream] +- [0x28, 0x0108, ItemShortDesc_BakingStrawberry] +- [0x28, 0x0109, ItemShortDesc_BakingButter] +- [0x28, 0x010A, ItemShortDesc_BakingCleanser] +- [0x28, 0x010B, ItemShortDesc_BakingWater] +- [0x28, 0x010C, ItemShortDesc_BakingFlour] +- [0x28, 0x010D, ItemShortDesc_BakingMilk] +- [0x28, 0x010E, ItemShortDesc_FirstDegreeCard] +- [0x28, 0x010F, ItemShortDesc_SecondDegreeCard] +- [0x28, 0x0110, ItemShortDesc_ThirdDegreeCard] +- [0x28, 0x0111, ItemShortDesc_FourthDegreeCard] +- [0x28, 0x0112, ItemShortDesc_Diploma] +- [0x28, 0x0113, ItemShortDesc_UltraStone] +- [0x28, 0x0114, ItemShortDesc_SilverCredit] +- [0x28, 0x0115, ItemShortDesc_GoldCredit] +- [0x28, 0x0116, ItemShortDesc_Letter25] +- [0x28, 0x0117, ItemShortDesc_UnusedLetter] +- [0x28, 0x0118, ItemShortDesc_Letter01] +- [0x28, 0x0119, ItemShortDesc_Letter02] +- [0x28, 0x011A, ItemShortDesc_Letter03] +- [0x28, 0x011B, ItemShortDesc_Letter04] +- [0x28, 0x011C, ItemShortDesc_Letter05] +- [0x28, 0x011D, ItemShortDesc_Letter06] +- [0x28, 0x011E, ItemShortDesc_Letter07] +- [0x28, 0x011F, ItemShortDesc_Letter08] +- [0x28, 0x0120, ItemShortDesc_Letter09] +- [0x28, 0x0121, ItemShortDesc_UnusedLetter02] +- [0x28, 0x0122, ItemShortDesc_Letter10] +- [0x28, 0x0123, ItemShortDesc_Letter11] +- [0x28, 0x0124, ItemShortDesc_UnusedLetter03] +- [0x28, 0x0125, ItemShortDesc_UnusedLetter04] +- [0x28, 0x0126, ItemShortDesc_UnusedLetter05] +- [0x28, 0x0127, ItemShortDesc_Letter12] +- [0x28, 0x0128, ItemShortDesc_Letter13] +- [0x28, 0x0129, ItemShortDesc_Letter14] +- [0x28, 0x012A, ItemShortDesc_Letter15] +- [0x28, 0x012B, ItemShortDesc_Letter16] +- [0x28, 0x012C, ItemShortDesc_Letter17] +- [0x28, 0x012D, ItemShortDesc_Letter18] +- [0x28, 0x012E, ItemShortDesc_Letter19] +- [0x28, 0x012F, ItemShortDesc_UnusedLetter06] +- [0x28, 0x0130, ItemShortDesc_Letter20] +- [0x28, 0x0131, ItemShortDesc_Letter21] +- [0x28, 0x0132, ItemShortDesc_Letter22] +- [0x28, 0x0133, ItemShortDesc_Letter23] +- [0x28, 0x0134, ItemShortDesc_Letter24] +- [0x28, 0x0135, ItemShortDesc_KootKoopaLegends] +- [0x28, 0x0136, ItemShortDesc_KootTheTape] +- [0x28, 0x0137, ItemShortDesc_KootLuigiAutograph] +- [0x28, 0x0138, ItemShortDesc_KootEmptyWallet] +- [0x28, 0x0139, ItemShortDesc_KootMerluvleeAutograph] +- [0x28, 0x013A, ItemShortDesc_KootShell] +- [0x28, 0x013B, ItemShortDesc_KootOldPhoto] +- [0x28, 0x013C, ItemShortDesc_KootGlasses] +- [0x28, 0x013D, ItemShortDesc_KootAltPhoto] +- [0x28, 0x013E, ItemShortDesc_KootPackage] +- [0x28, 0x013F, ItemShortDesc_KootRedJar] +- [0x2A, 0x0000, ItemFullDesc_FireFlower] +- [0x2A, 0x0001, ItemFullDesc_SnowmanDoll] +- [0x2A, 0x0002, ItemFullDesc_ThunderRage] +- [0x2A, 0x0003, ItemFullDesc_ThunderBolt] +- [0x2A, 0x0004, ItemFullDesc_ShootingStar] +- [0x2A, 0x0005, ItemFullDesc_DustyHammer] +- [0x2A, 0x0006, ItemFullDesc_Pebble] +- [0x2A, 0x0007, ItemFullDesc_StoneCap] +- [0x2A, 0x0008, ItemFullDesc_VoltShroom] +- [0x2A, 0x000C, ItemFullDesc_Mushroom] +- [0x2A, 0x000D, ItemFullDesc_SuperShroom] +- [0x2A, 0x000E, ItemFullDesc_UltraShroom] +- [0x2A, 0x000F, ItemFullDesc_LifeShroom] +- [0x2A, 0x0010, ItemFullDesc_DriedShroom] +- [0x2A, 0x0011, ItemFullDesc_TastyTonic] +- [0x2A, 0x0012, ItemFullDesc_SuperSoda] +- [0x2A, 0x0013, ItemFullDesc_BlueBerry] +- [0x2A, 0x0014, ItemFullDesc_RedBerry] +- [0x2A, 0x0015, ItemFullDesc_YellowBerry] +- [0x2A, 0x0016, ItemFullDesc_BubbleBerry] +- [0x2A, 0x0017, ItemFullDesc_Lime] +- [0x2A, 0x0018, ItemFullDesc_Lemon] +- [0x2A, 0x0019, ItemFullDesc_HoneySyrup] +- [0x2A, 0x001A, ItemFullDesc_MapleSyrup] +- [0x2A, 0x001B, ItemFullDesc_JamminJelly] +- [0x2A, 0x001C, ItemFullDesc_WhackasBump] +- [0x2A, 0x001D, ItemFullDesc_Apple] +- [0x2A, 0x001E, ItemFullDesc_Goomnut] +- [0x2A, 0x001F, ItemFullDesc_KoopaLeaf] +- [0x2A, 0x0020, ItemFullDesc_DriedPasta] +- [0x2A, 0x0021, ItemFullDesc_DriedFruit] +- [0x2A, 0x0022, ItemFullDesc_StrangeLeaf] +- [0x2A, 0x0023, ItemFullDesc_CakeMix] +- [0x2A, 0x0024, ItemFullDesc_Egg] +- [0x2A, 0x0025, ItemFullDesc_Coconut] +- [0x2A, 0x0026, ItemFullDesc_Melon] +- [0x2A, 0x0027, ItemFullDesc_StinkyHerb] +- [0x2A, 0x0028, ItemFullDesc_IcedPotato] +- [0x2A, 0x0029, ItemFullDesc_SleepySheep] +- [0x2A, 0x002B, ItemFullDesc_POWBlock] +- [0x2A, 0x002C, ItemFullDesc_HustleDrink] +- [0x2A, 0x002D, ItemFullDesc_StopWatch] +- [0x2A, 0x002E, ItemFullDesc_DizzyDial] +- [0x2A, 0x002F, ItemFullDesc_PleaseComeBack] +- [0x2A, 0x0031, ItemFullDesc_FrightJar] +- [0x2A, 0x0032, ItemFullDesc_Mystery] +- [0x2A, 0x0033, ItemFullDesc_RepelGel] +- [0x2A, 0x0034, ItemFullDesc_InsecticideHerb] +- [0x2A, 0x0036, ItemFullDesc_SpicySoup] +- [0x2A, 0x0037, ItemFullDesc_ApplePie] +- [0x2A, 0x0038, ItemFullDesc_HoneyShroom] +- [0x2A, 0x0039, ItemFullDesc_MapleShroom] +- [0x2A, 0x003A, ItemFullDesc_JellyShroom] +- [0x2A, 0x003B, ItemFullDesc_HoneySuper] +- [0x2A, 0x003C, ItemFullDesc_MapleSuper] +- [0x2A, 0x003D, ItemFullDesc_JellySuper] +- [0x2A, 0x003E, ItemFullDesc_HoneyUltra] +- [0x2A, 0x003F, ItemFullDesc_MapleUltra] +- [0x2A, 0x0040, ItemFullDesc_JellyUltra] +- [0x2A, 0x0041, ItemFullDesc_Koopasta] +- [0x2A, 0x0042, ItemFullDesc_FriedShroom] +- [0x2A, 0x0043, ItemFullDesc_HotShroom] +- [0x2A, 0x0044, ItemFullDesc_ShroomSteak] +- [0x2A, 0x0045, ItemFullDesc_ShroomCake] +- [0x2A, 0x0046, ItemFullDesc_SweetShroom] +- [0x2A, 0x0047, ItemFullDesc_BlandMeal] +- [0x2A, 0x0048, ItemFullDesc_YummyMeal] +- [0x2A, 0x0049, ItemFullDesc_DeluxeFeast] +- [0x2A, 0x004A, ItemFullDesc_SpecialShake] +- [0x2A, 0x004B, ItemFullDesc_HealthyJuice] +- [0x2A, 0x004C, ItemFullDesc_BigCookie] +- [0x2A, 0x004D, ItemFullDesc_Cake] +- [0x2A, 0x004E, ItemFullDesc_Mistake] +- [0x2A, 0x004F, ItemFullDesc_KoopaTea] +- [0x2A, 0x0050, ItemFullDesc_Spaghetti] +- [0x2A, 0x0051, ItemFullDesc_EggMissile] +- [0x2A, 0x0052, ItemFullDesc_FriedEgg] +- [0x2A, 0x0053, ItemFullDesc_HoneyCandy] +- [0x2A, 0x0054, ItemFullDesc_ElectroPop] +- [0x2A, 0x0055, ItemFullDesc_FirePop] +- [0x2A, 0x0056, ItemFullDesc_LimeCandy] +- [0x2A, 0x0057, ItemFullDesc_CocoPop] +- [0x2A, 0x0058, ItemFullDesc_LemonCandy] +- [0x2A, 0x0059, ItemFullDesc_JellyPop] +- [0x2A, 0x005A, ItemFullDesc_StrangeCake] +- [0x2A, 0x005B, ItemFullDesc_KookyCookie] +- [0x2A, 0x005C, ItemFullDesc_FrozenFries] +- [0x2A, 0x005D, ItemFullDesc_PotatoSalad] +- [0x2A, 0x005E, ItemFullDesc_NuttyCake] +- [0x2A, 0x005F, ItemFullDesc_BoiledEgg] +- [0x2A, 0x0060, ItemFullDesc_YoshiCookie] +- [0x2A, 0x0061, ItemFullDesc_PowerJump] +- [0x2A, 0x0062, ItemFullDesc_SuperJump] +- [0x2A, 0x0063, ItemFullDesc_MegaJump] +- [0x2A, 0x0064, ItemFullDesc_JumpCharge0] +- [0x2A, 0x0065, ItemFullDesc_JumpCharge] +- [0x2A, 0x0066, ItemFullDesc_SJumpChg] +- [0x2A, 0x0067, ItemFullDesc_SleepStomp] +- [0x2A, 0x0068, ItemFullDesc_DizzyStomp] +- [0x2A, 0x0069, ItemFullDesc_Multibounce] +- [0x2A, 0x006A, ItemFullDesc_ShrinkStomp] +- [0x2A, 0x006B, ItemFullDesc_DDownJump] +- [0x2A, 0x006C, ItemFullDesc_PowerBounce] +- [0x2A, 0x006D, ItemFullDesc_AutoMultibounce] +- [0x2A, 0x006E, ItemFullDesc_EarthquakeJump] +- [0x2A, 0x006F, ItemFullDesc_AutoJump] +- [0x2A, 0x0070, ItemFullDesc_PowerSmash] +- [0x2A, 0x0071, ItemFullDesc_SuperSmash] +- [0x2A, 0x0072, ItemFullDesc_MegaSmash] +- [0x2A, 0x0073, ItemFullDesc_SmashCharge0] +- [0x2A, 0x0074, ItemFullDesc_SmashCharge] +- [0x2A, 0x0075, ItemFullDesc_SSmashChg] +- [0x2A, 0x0076, ItemFullDesc_HammerThrow] +- [0x2A, 0x0077, ItemFullDesc_ShrinkSmash] +- [0x2A, 0x0078, ItemFullDesc_SpinSmash] +- [0x2A, 0x0079, ItemFullDesc_DDownPound] +- [0x2A, 0x007A, ItemFullDesc_QuakeHammer] +- [0x2A, 0x007B, ItemFullDesc_PowerQuake] +- [0x2A, 0x007C, ItemFullDesc_MegaQuake] +- [0x2A, 0x007D, ItemFullDesc_AutoSmash] +- [0x2A, 0x007E, ItemFullDesc_DoubleDip] +- [0x2A, 0x007F, ItemFullDesc_TripleDip] +- [0x2A, 0x0080, ItemFullDesc_GroupFocus] +- [0x2A, 0x0081, ItemFullDesc_QuickChange] +- [0x2A, 0x0082, ItemFullDesc_HPPlus] +- [0x2A, 0x0083, ItemFullDesc_FPPlus] +- [0x2A, 0x0084, ItemFullDesc_PowerPlus] +- [0x2A, 0x0085, ItemFullDesc_DefendPlus] +- [0x2A, 0x0086, ItemFullDesc_DamageDodge] +- [0x2A, 0x0087, ItemFullDesc_PUpDDown] +- [0x2A, 0x0088, ItemFullDesc_PDownDUp] +- [0x2A, 0x0089, ItemFullDesc_HPDrain] +- [0x2A, 0x008A, ItemFullDesc_MegaHPDrain] +- [0x2A, 0x008B, ItemFullDesc_HappyHeart] +- [0x2A, 0x008C, ItemFullDesc_CrazyHeart] +- [0x2A, 0x008D, ItemFullDesc_HappyFlower] +- [0x2A, 0x008E, ItemFullDesc_FlowerSaver] +- [0x2A, 0x008F, ItemFullDesc_FlowerFanatic] +- [0x2A, 0x0090, ItemFullDesc_HeartFinder] +- [0x2A, 0x0091, ItemFullDesc_FlowerFinder] +- [0x2A, 0x0092, ItemFullDesc_DeepFocus] +- [0x2A, 0x0093, ItemFullDesc_SuperFocus] +- [0x2A, 0x0094, ItemFullDesc_SpikeShield] +- [0x2A, 0x0095, ItemFullDesc_DodgeMaster] +- [0x2A, 0x0096, ItemFullDesc_PrettyLucky] +- [0x2A, 0x0097, ItemFullDesc_LuckyDay] +- [0x2A, 0x0098, ItemFullDesc_CloseCall] +- [0x2A, 0x0099, ItemFullDesc_PowerRush] +- [0x2A, 0x009A, ItemFullDesc_LastStand] +- [0x2A, 0x009B, ItemFullDesc_MegaRush] +- [0x2A, 0x009C, ItemFullDesc_FirstAttack] +- [0x2A, 0x009D, ItemFullDesc_BumpAttack] +- [0x2A, 0x009E, ItemFullDesc_SpinAttack] +- [0x2A, 0x009F, ItemFullDesc_DizzyAttack] +- [0x2A, 0x00A0, ItemFullDesc_SpeedySpin] +- [0x2A, 0x00A1, ItemFullDesc_FeelingFine] +- [0x2A, 0x00A2, ItemFullDesc_AttackFXA] +- [0x2A, 0x00A3, ItemFullDesc_AttackFXD] +- [0x2A, 0x00A4, ItemFullDesc_AttackFXB] +- [0x2A, 0x00A5, ItemFullDesc_AttackFXE] +- [0x2A, 0x00A6, ItemFullDesc_AttackFXC] +- [0x2A, 0x00A7, ItemFullDesc_AttackFXF] +- [0x2A, 0x00A8, ItemFullDesc_AllorNothing] +- [0x2A, 0x00A9, ItemFullDesc_SlowGo] +- [0x2A, 0x00AA, ItemFullDesc_IcePower] +- [0x2A, 0x00AB, ItemFullDesc_PayOff] +- [0x2A, 0x00AC, ItemFullDesc_FireShield] +- [0x2A, 0x00AD, ItemFullDesc_ChillOut] +- [0x2A, 0x00AE, ItemFullDesc_ZapTap] +- [0x2A, 0x00AF, ItemFullDesc_MoneyMoney] +- [0x2A, 0x00B0, ItemFullDesc_Berserker] +- [0x2A, 0x00B1, ItemFullDesc_RightOn] +- [0x2A, 0x00B2, ItemFullDesc_RunawayPay] +- [0x2A, 0x00B3, ItemFullDesc_Refund] +- [0x2A, 0x00B4, ItemFullDesc_ISpy] +- [0x2A, 0x00B5, ItemFullDesc_Peekaboo] +- [0x2A, 0x00B6, ItemFullDesc_HealthyHealthy] +- [0x2A, 0x00B7, ItemFullDesc_Kaiden] +- [0x2A, 0x00BB, ItemFullDesc_ShellCrack] +- [0x2A, 0x00BD, FullDesc_32] +- [0x2A, 0x00C5, ItemFullDesc_MysteryScroll] +- [0x2A, 0x00CC, ItemFullDesc_LuckyStar] +- [0x2A, 0x00CF, ItemFullDesc_KoopaFortressKey] +- [0x2A, 0x00D0, ItemFullDesc_RuinsKey] +- [0x2A, 0x00D1, ItemFullDesc_TubbaCastleKey] +- [0x2A, 0x00D2, ItemFullDesc_CrystalPalaceKey] +- [0x2A, 0x00D3, ItemFullDesc_BowserCastleKey] +- [0x2A, 0x00D4, ItemFullDesc_PeachKey] +- [0x2A, 0x00D5, ItemFullDesc_OddKey] +- [0x2A, 0x00D6, ItemFullDesc_Screwdriver] +- [0x2A, 0x00D7, ItemFullDesc_Dolly] +- [0x2A, 0x00D8, ItemFullDesc_KooperShell] +- [0x2A, 0x00D9, ItemFullDesc_PulseStone] +- [0x2A, 0x00DA, ItemFullDesc_Artifact] +- [0x2A, 0x00DB, ItemFullDesc_GoldenJar] +- [0x2A, 0x00DC, ItemFullDesc_LunarStone] +- [0x2A, 0x00DD, ItemFullDesc_PyramidStone] +- [0x2A, 0x00DE, ItemFullDesc_DiamondStone] +- [0x2A, 0x00DF, ItemFullDesc_ForestPass] +- [0x2A, 0x00E0, ItemFullDesc_BooRecord] +- [0x2A, 0x00E1, ItemFullDesc_BooWeight] +- [0x2A, 0x00E2, ItemFullDesc_BooPortrait] +- [0x2A, 0x00E3, ItemFullDesc_MysticalKey] +- [0x2A, 0x00E4, ItemFullDesc_StoreroomKey] +- [0x2A, 0x00E5, ItemFullDesc_ToyTrain] +- [0x2A, 0x00E6, ItemFullDesc_FryingPan] +- [0x2A, 0x00E7, ItemFullDesc_Dictionary] +- [0x2A, 0x00E8, ItemFullDesc_MysteryNote] +- [0x2A, 0x00E9, ItemFullDesc_SuspiciousNote] +- [0x2A, 0x00EA, ItemFullDesc_Mailbag] +- [0x2A, 0x00EB, ItemFullDesc_MagicalSeed1] +- [0x2A, 0x00EC, ItemFullDesc_MagicalSeed2] +- [0x2A, 0x00ED, ItemFullDesc_MagicalSeed3] +- [0x2A, 0x00EE, ItemFullDesc_MagicalSeed4] +- [0x2A, 0x00EF, ItemFullDesc_CrystalBerry] +- [0x2A, 0x00F0, ItemFullDesc_WaterStone] +- [0x2A, 0x00F1, ItemFullDesc_MagicalBean] +- [0x2A, 0x00F2, ItemFullDesc_FertileSoil] +- [0x2A, 0x00F3, ItemFullDesc_MiracleWater] +- [0x2A, 0x00F4, ItemFullDesc_CrystalBall] +- [0x2A, 0x00F5, ItemFullDesc_ToadDoll] +- [0x2A, 0x00F6, ItemFullDesc_Calculator] +- [0x2A, 0x00F7, ItemFullDesc_Cookbook] +- [0x2A, 0x00F8, ItemFullDesc_JadeRaven] +- [0x2A, 0x00F9, ItemFullDesc_VolcanoVase] +- [0x2A, 0x00FA, ItemFullDesc_WarehouseKey] +- [0x2A, 0x00FB, ItemFullDesc_SnowmanBucket] +- [0x2A, 0x00FC, ItemFullDesc_SnowmanScarf] +- [0x2A, 0x00FD, ItemFullDesc_StarStone] +- [0x2A, 0x00FE, ItemFullDesc_RedKey] +- [0x2A, 0x00FF, ItemFullDesc_BlueKey] +- [0x2A, 0x0100, ItemFullDesc_SneakyParasol] +- [0x2A, 0x0101, ItemFullDesc_PrisonKey] +- [0x2A, 0x0102, ItemFullDesc_Lyrics] +- [0x2A, 0x0103, ItemFullDesc_Melody] +- [0x2A, 0x0104, ItemFullDesc_BakingSugar] +- [0x2A, 0x0105, ItemFullDesc_BakingSalt] +- [0x2A, 0x0106, ItemFullDesc_BakingEgg] +- [0x2A, 0x0107, ItemFullDesc_BakingCream] +- [0x2A, 0x0108, ItemFullDesc_BakingStrawberry] +- [0x2A, 0x0109, ItemFullDesc_BakingButter] +- [0x2A, 0x010A, ItemFullDesc_BakingCleanser] +- [0x2A, 0x010B, ItemFullDesc_BakingWater] +- [0x2A, 0x010C, ItemFullDesc_BakingFlour] +- [0x2A, 0x010D, ItemFullDesc_BakingMilk] +- [0x2A, 0x010E, ItemFullDesc_FirstDegreeCard] +- [0x2A, 0x010F, ItemFullDesc_SecondDegreeCard] +- [0x2A, 0x0110, ItemFullDesc_ThirdDegreeCard] +- [0x2A, 0x0111, ItemFullDesc_FourthDegreeCard] +- [0x2A, 0x0112, ItemFullDesc_Diploma] +- [0x2A, 0x0113, ItemFullDesc_UltraStone] +- [0x2A, 0x0114, ItemFullDesc_SilverCredit] +- [0x2A, 0x0115, ItemFullDesc_GoldCredit] +- [0x2A, 0x0116, ItemFullDesc_Letter25] +- [0x2A, 0x0117, ItemFullDesc_UnusedLetter] +- [0x2A, 0x0118, ItemFullDesc_Letter01] +- [0x2A, 0x0119, ItemFullDesc_Letter02] +- [0x2A, 0x011A, ItemFullDesc_Letter03] +- [0x2A, 0x011B, ItemFullDesc_Letter04] +- [0x2A, 0x011C, ItemFullDesc_Letter05] +- [0x2A, 0x011D, ItemFullDesc_Letter06] +- [0x2A, 0x011E, ItemFullDesc_Letter07] +- [0x2A, 0x011F, ItemFullDesc_Letter08] +- [0x2A, 0x0120, ItemFullDesc_Letter09] +- [0x2A, 0x0121, ItemFullDesc_UnusedLetter02] +- [0x2A, 0x0122, ItemFullDesc_Letter10] +- [0x2A, 0x0123, ItemFullDesc_Letter11] +- [0x2A, 0x0124, ItemFullDesc_UnusedLetter03] +- [0x2A, 0x0125, ItemFullDesc_UnusedLetter04] +- [0x2A, 0x0126, ItemFullDesc_UnusedLetter05] +- [0x2A, 0x0127, ItemFullDesc_Letter12] +- [0x2A, 0x0128, ItemFullDesc_Letter13] +- [0x2A, 0x0129, ItemFullDesc_Letter14] +- [0x2A, 0x012A, ItemFullDesc_Letter15] +- [0x2A, 0x012B, ItemFullDesc_Letter16] +- [0x2A, 0x012C, ItemFullDesc_Letter17] +- [0x2A, 0x012D, ItemFullDesc_Letter18] +- [0x2A, 0x012E, ItemFullDesc_Letter19] +- [0x2A, 0x012F, ItemFullDesc_UnusedLetter06] +- [0x2A, 0x0130, ItemFullDesc_Letter20] +- [0x2A, 0x0131, ItemFullDesc_Letter21] +- [0x2A, 0x0132, ItemFullDesc_Letter22] +- [0x2A, 0x0133, ItemFullDesc_Letter23] +- [0x2A, 0x0134, ItemFullDesc_Letter24] +- [0x2A, 0x0135, ItemFullDesc_KootKoopaLegends] +- [0x2A, 0x0136, ItemFullDesc_KootTheTape] +- [0x2A, 0x0137, ItemFullDesc_KootLuigiAutograph] +- [0x2A, 0x0138, ItemFullDesc_KootEmptyWallet] +- [0x2A, 0x0139, ItemFullDesc_KootMerluvleeAutograph] +- [0x2A, 0x013A, ItemFullDesc_KootShell] +- [0x2A, 0x013B, ItemFullDesc_KootOldPhoto] +- [0x2A, 0x013C, ItemFullDesc_KootGlasses] +- [0x2A, 0x013D, ItemFullDesc_KootAltPhoto] +- [0x2A, 0x013E, ItemFullDesc_KootPackage] +- [0x2A, 0x013F, ItemFullDesc_KootRedJar] +- [0x2B, 0x0000, ItemName_FireFlower] +- [0x2B, 0x0001, ItemName_SnowmanDoll] +- [0x2B, 0x0002, ItemName_ThunderRage] +- [0x2B, 0x0003, ItemName_ThunderBolt] +- [0x2B, 0x0004, ItemName_ShootingStar] +- [0x2B, 0x0005, ItemName_DustyHammer] +- [0x2B, 0x0006, ItemName_Pebble] +- [0x2B, 0x0007, ItemName_StoneCap] +- [0x2B, 0x0008, ItemName_VoltShroom] +- [0x2B, 0x000C, ItemName_Mushroom] +- [0x2B, 0x000D, ItemName_SuperShroom] +- [0x2B, 0x000E, ItemName_UltraShroom] +- [0x2B, 0x000F, ItemName_LifeShroom] +- [0x2B, 0x0010, ItemName_DriedShroom] +- [0x2B, 0x0011, ItemName_TastyTonic] +- [0x2B, 0x0012, ItemName_SuperSoda] +- [0x2B, 0x0013, ItemName_BlueBerry] +- [0x2B, 0x0014, ItemName_RedBerry] +- [0x2B, 0x0015, ItemName_YellowBerry] +- [0x2B, 0x0016, ItemName_BubbleBerry] +- [0x2B, 0x0017, ItemName_Lime] +- [0x2B, 0x0018, ItemName_Lemon] +- [0x2B, 0x0019, ItemName_HoneySyrup] +- [0x2B, 0x001A, ItemName_MapleSyrup] +- [0x2B, 0x001B, ItemName_JamminJelly] +- [0x2B, 0x001C, ItemName_WhackasBump] +- [0x2B, 0x001D, ItemName_Apple] +- [0x2B, 0x001E, ItemName_Goomnut] +- [0x2B, 0x001F, ItemName_KoopaLeaf] +- [0x2B, 0x0020, ItemName_DriedPasta] +- [0x2B, 0x0021, ItemName_DriedFruit] +- [0x2B, 0x0022, ItemName_StrangeLeaf] +- [0x2B, 0x0023, ItemName_CakeMix] +- [0x2B, 0x0024, ItemName_Egg] +- [0x2B, 0x0025, ItemName_Coconut] +- [0x2B, 0x0026, ItemName_Melon] +- [0x2B, 0x0027, ItemName_StinkyHerb] +- [0x2B, 0x0028, ItemName_IcedPotato] +- [0x2B, 0x0029, ItemName_SleepySheep] +- [0x2B, 0x002B, ItemName_POWBlock] +- [0x2B, 0x002C, ItemName_HustleDrink] +- [0x2B, 0x002D, ItemName_StopWatch] +- [0x2B, 0x002E, ItemName_DizzyDial] +- [0x2B, 0x002F, ItemName_PleaseComeBack] +- [0x2B, 0x0031, ItemName_FrightJar] +- [0x2B, 0x0032, ItemName_Mystery] +- [0x2B, 0x0033, ItemName_RepelGel] +- [0x2B, 0x0034, ItemName_InsecticideHerb] +- [0x2B, 0x0037, ItemName_SpicySoup] +- [0x2B, 0x0038, ItemName_ApplePie] +- [0x2B, 0x0039, ItemName_HoneyShroom] +- [0x2B, 0x003A, ItemName_MapleShroom] +- [0x2B, 0x003B, ItemName_JellyShroom] +- [0x2B, 0x003C, ItemName_HoneySuper] +- [0x2B, 0x003D, ItemName_MapleSuper] +- [0x2B, 0x003E, ItemName_JellySuper] +- [0x2B, 0x003F, ItemName_HoneyUltra] +- [0x2B, 0x0040, ItemName_MapleUltra] +- [0x2B, 0x0041, ItemName_JellyUltra] +- [0x2B, 0x0042, ItemName_Koopasta] +- [0x2B, 0x0043, ItemName_FriedShroom] +- [0x2B, 0x0044, ItemName_HotShroom] +- [0x2B, 0x0045, ItemName_ShroomSteak] +- [0x2B, 0x0046, ItemName_ShroomCake] +- [0x2B, 0x0047, ItemName_SweetShroom] +- [0x2B, 0x0048, ItemName_BlandMeal] +- [0x2B, 0x0049, ItemName_YummyMeal] +- [0x2B, 0x004A, ItemName_DeluxeFeast] +- [0x2B, 0x004B, ItemName_SpecialShake] +- [0x2B, 0x004C, ItemName_HealthyJuice] +- [0x2B, 0x004D, ItemName_BigCookie] +- [0x2B, 0x004E, ItemName_Cake] +- [0x2B, 0x004F, ItemName_Mistake] +- [0x2B, 0x0050, ItemName_KoopaTea] +- [0x2B, 0x0051, ItemName_Spaghetti] +- [0x2B, 0x0052, ItemName_EggMissile] +- [0x2B, 0x0053, ItemName_FriedEgg] +- [0x2B, 0x0054, ItemName_HoneyCandy] +- [0x2B, 0x0055, ItemName_ElectroPop] +- [0x2B, 0x0056, ItemName_FirePop] +- [0x2B, 0x0057, ItemName_LimeCandy] +- [0x2B, 0x0058, ItemName_CocoPop] +- [0x2B, 0x0059, ItemName_LemonCandy] +- [0x2B, 0x005A, ItemName_JellyPop] +- [0x2B, 0x005B, ItemName_StrangeCake] +- [0x2B, 0x005C, ItemName_KookyCookie] +- [0x2B, 0x005D, ItemName_FrozenFries] +- [0x2B, 0x005E, ItemName_PotatoSalad] +- [0x2B, 0x005F, ItemName_NuttyCake] +- [0x2B, 0x0060, ItemName_BoiledEgg] +- [0x2B, 0x0061, ItemName_YoshiCookie] +- [0x2B, 0x0062, ItemName_PowerJump] +- [0x2B, 0x0063, ItemName_SuperJump] +- [0x2B, 0x0064, ItemName_MegaJump] +- [0x2B, 0x0065, ItemName_JumpCharge0] +- [0x2B, 0x0066, ItemName_JumpCharge] +- [0x2B, 0x0067, ItemName_SJumpChg] +- [0x2B, 0x0068, ItemName_SleepStomp] +- [0x2B, 0x0069, ItemName_DizzyStomp] +- [0x2B, 0x006A, ItemName_Multibounce] +- [0x2B, 0x006B, ItemName_ShrinkStomp] +- [0x2B, 0x006C, ItemName_DDownJump] +- [0x2B, 0x006D, ItemName_PowerBounce] +- [0x2B, 0x006E, ItemName_AutoMultibounce] +- [0x2B, 0x006F, ItemName_EarthquakeJump] +- [0x2B, 0x0070, ItemName_AutoJump] +- [0x2B, 0x0071, ItemName_PowerSmash] +- [0x2B, 0x0072, ItemName_SuperSmash] +- [0x2B, 0x0073, ItemName_MegaSmash] +- [0x2B, 0x0074, ItemName_SmashCharge0] +- [0x2B, 0x0075, ItemName_SmashCharge] +- [0x2B, 0x0076, ItemName_SSmashChg] +- [0x2B, 0x0077, ItemName_HammerThrow] +- [0x2B, 0x0078, ItemName_ShrinkSmash] +- [0x2B, 0x0079, ItemName_SpinSmash] +- [0x2B, 0x007A, ItemName_DDownPound] +- [0x2B, 0x007B, ItemName_QuakeHammer] +- [0x2B, 0x007C, ItemName_PowerQuake] +- [0x2B, 0x007D, ItemName_MegaQuake] +- [0x2B, 0x007E, ItemName_AutoSmash] +- [0x2B, 0x007F, ItemName_DoubleDip] +- [0x2B, 0x0080, ItemName_TripleDip] +- [0x2B, 0x0081, ItemName_GroupFocus] +- [0x2B, 0x0082, ItemName_QuickChange] +- [0x2B, 0x0083, ItemName_HPPlus] +- [0x2B, 0x0084, ItemName_FPPlus] +- [0x2B, 0x0085, ItemName_PowerPlus] +- [0x2B, 0x0086, ItemName_DefendPlus] +- [0x2B, 0x0087, ItemName_DamageDodge] +- [0x2B, 0x0088, ItemName_PUpDDown] +- [0x2B, 0x0089, ItemName_PDownDUp] +- [0x2B, 0x008A, ItemName_HPDrain] +- [0x2B, 0x008B, ItemName_MegaHPDrain] +- [0x2B, 0x008C, ItemName_HappyHeart] +- [0x2B, 0x008D, ItemName_CrazyHeart] +- [0x2B, 0x008E, ItemName_HappyFlower] +- [0x2B, 0x008F, ItemName_FlowerSaver] +- [0x2B, 0x0090, ItemName_FlowerFanatic] +- [0x2B, 0x0091, ItemName_HeartFinder] +- [0x2B, 0x0092, ItemName_FlowerFinder] +- [0x2B, 0x0093, ItemName_DeepFocus] +- [0x2B, 0x0094, ItemName_SuperFocus] +- [0x2B, 0x0095, ItemName_SpikeShield] +- [0x2B, 0x0096, ItemName_DodgeMaster] +- [0x2B, 0x0097, ItemName_PrettyLucky] +- [0x2B, 0x0098, ItemName_LuckyDay] +- [0x2B, 0x0099, ItemName_CloseCall] +- [0x2B, 0x009A, ItemName_PowerRush] +- [0x2B, 0x009B, ItemName_LastStand] +- [0x2B, 0x009C, ItemName_MegaRush] +- [0x2B, 0x009D, ItemName_FirstAttack] +- [0x2B, 0x009E, ItemName_BumpAttack] +- [0x2B, 0x009F, ItemName_SpinAttack] +- [0x2B, 0x00A0, ItemName_DizzyAttack] +- [0x2B, 0x00A1, ItemName_SpeedySpin] +- [0x2B, 0x00A2, ItemName_FeelingFine] +- [0x2B, 0x00A3, ItemName_AttackFXA] +- [0x2B, 0x00A4, ItemName_AttackFXD] +- [0x2B, 0x00A5, ItemName_AttackFXB] +- [0x2B, 0x00A6, ItemName_AttackFXE] +- [0x2B, 0x00A7, ItemName_AttackFXC] +- [0x2B, 0x00A8, ItemName_AttackFXF] +- [0x2B, 0x00A9, ItemName_AllorNothing] +- [0x2B, 0x00AA, ItemName_SlowGo] +- [0x2B, 0x00AB, ItemName_IcePower] +- [0x2B, 0x00AC, ItemName_PayOff] +- [0x2B, 0x00AD, ItemName_FireShield] +- [0x2B, 0x00AE, ItemName_ChillOut] +- [0x2B, 0x00AF, ItemName_ZapTap] +- [0x2B, 0x00B0, ItemName_MoneyMoney] +- [0x2B, 0x00B1, ItemName_Berserker] +- [0x2B, 0x00B2, ItemName_RightOn] +- [0x2B, 0x00B3, ItemName_RunawayPay] +- [0x2B, 0x00B4, ItemName_Refund] +- [0x2B, 0x00B5, ItemName_ISpy] +- [0x2B, 0x00B6, ItemName_Peekaboo] +- [0x2B, 0x00B7, ItemName_HealthyHealthy] +- [0x2B, 0x00B8, ItemName_Kaiden] +- [0x2B, 0x00BC, ItemName_ShellCrack] +- [0x2B, 0x00C6, ItemName_MysteryScroll] +- [0x2B, 0x00C7, ItemName_Boots] +- [0x2B, 0x00C8, ItemName_SuperBoots] +- [0x2B, 0x00C9, ItemName_UltraBoots] +- [0x2B, 0x00CA, ItemName_Hammer] +- [0x2B, 0x00CB, ItemName_SuperHammer] +- [0x2B, 0x00CC, ItemName_UltraHammer] +- [0x2B, 0x00CD, ItemName_LuckyStar] +- [0x2B, 0x00CE, ItemName_Map] +- [0x2B, 0x00CF, ItemName_BigMap] +- [0x2B, 0x00D0, ItemName_KoopaFortressKey] +- [0x2B, 0x00D1, ItemName_RuinsKey] +- [0x2B, 0x00D2, ItemName_TubbaCastleKey] +- [0x2B, 0x00D3, ItemName_CrystalPalaceKey] +- [0x2B, 0x00D4, ItemName_BowserCastleKey] +- [0x2B, 0x00D5, ItemName_PeachKey] +- [0x2B, 0x00D6, ItemName_OddKey] +- [0x2B, 0x00D7, ItemName_Screwdriver] +- [0x2B, 0x00D8, ItemName_Dolly] +- [0x2B, 0x00D9, ItemName_KooperShell] +- [0x2B, 0x00DA, ItemName_PulseStone] +- [0x2B, 0x00DB, ItemName_Artifact] +- [0x2B, 0x00DC, ItemName_GoldenJar] +- [0x2B, 0x00DD, ItemName_LunarStone] +- [0x2B, 0x00DE, ItemName_PyramidStone] +- [0x2B, 0x00DF, ItemName_DiamondStone] +- [0x2B, 0x00E0, ItemName_ForestPass] +- [0x2B, 0x00E1, ItemName_BooRecord] +- [0x2B, 0x00E2, ItemName_BooWeight] +- [0x2B, 0x00E3, ItemName_BooPortrait] +- [0x2B, 0x00E4, ItemName_MysticalKey] +- [0x2B, 0x00E5, ItemName_StoreroomKey] +- [0x2B, 0x00E6, ItemName_ToyTrain] +- [0x2B, 0x00E7, ItemName_FryingPan] +- [0x2B, 0x00E8, ItemName_Dictionary] +- [0x2B, 0x00E9, ItemName_MysteryNote] +- [0x2B, 0x00EA, ItemName_SuspiciousNote] +- [0x2B, 0x00EB, ItemName_Mailbag] +- [0x2B, 0x00EC, ItemName_MagicalSeed1] +- [0x2B, 0x00ED, ItemName_MagicalSeed2] +- [0x2B, 0x00EE, ItemName_MagicalSeed3] +- [0x2B, 0x00EF, ItemName_MagicalSeed4] +- [0x2B, 0x00F0, ItemName_CrystalBerry] +- [0x2B, 0x00F1, ItemName_WaterStone] +- [0x2B, 0x00F2, ItemName_MagicalBean] +- [0x2B, 0x00F3, ItemName_FertileSoil] +- [0x2B, 0x00F4, ItemName_MiracleWater] +- [0x2B, 0x00F5, ItemName_CrystalBall] +- [0x2B, 0x00F6, ItemName_ToadDoll] +- [0x2B, 0x00F7, ItemName_Calculator] +- [0x2B, 0x00F8, ItemName_Cookbook] +- [0x2B, 0x00F9, ItemName_JadeRaven] +- [0x2B, 0x00FA, ItemName_VolcanoVase] +- [0x2B, 0x00FB, ItemName_WarehouseKey] +- [0x2B, 0x00FC, ItemName_SnowmanBucket] +- [0x2B, 0x00FD, ItemName_SnowmanScarf] +- [0x2B, 0x00FE, ItemName_StarStone] +- [0x2B, 0x00FF, ItemName_RedKey] +- [0x2B, 0x0100, ItemName_BlueKey] +- [0x2B, 0x0101, ItemName_SneakyParasol] +- [0x2B, 0x0102, ItemName_PrisonKey] +- [0x2B, 0x0103, ItemName_Lyrics] +- [0x2B, 0x0104, ItemName_Melody] +- [0x2B, 0x0105, ItemName_BakingSugar] +- [0x2B, 0x0106, ItemName_BakingSalt] +- [0x2B, 0x0107, ItemName_BakingEgg] +- [0x2B, 0x0108, ItemName_BakingCream] +- [0x2B, 0x0109, ItemName_BakingStrawberry] +- [0x2B, 0x010A, ItemName_BakingButter] +- [0x2B, 0x010B, ItemName_BakingCleanser] +- [0x2B, 0x010C, ItemName_BakingWater] +- [0x2B, 0x010D, ItemName_BakingFlour] +- [0x2B, 0x010E, ItemName_BakingMilk] +- [0x2B, 0x010F, ItemName_FirstDegreeCard] +- [0x2B, 0x0110, ItemName_SecondDegreeCard] +- [0x2B, 0x0111, ItemName_ThirdDegreeCard] +- [0x2B, 0x0112, ItemName_FourthDegreeCard] +- [0x2B, 0x0113, ItemName_Diploma] +- [0x2B, 0x0114, ItemName_UltraStone] +- [0x2B, 0x0115, ItemName_SilverCredit] +- [0x2B, 0x0116, ItemName_GoldCredit] +- [0x2B, 0x0117, ItemName_Letter25] +- [0x2B, 0x0118, ItemName_UnusedLetter] +- [0x2B, 0x0119, ItemName_Letter01] +- [0x2B, 0x011A, ItemName_Letter02] +- [0x2B, 0x011B, ItemName_Letter03] +- [0x2B, 0x011C, ItemName_Letter04] +- [0x2B, 0x011D, ItemName_Letter05] +- [0x2B, 0x011E, ItemName_Letter06] +- [0x2B, 0x011F, ItemName_Letter07] +- [0x2B, 0x0120, ItemName_Letter08] +- [0x2B, 0x0121, ItemName_Letter09] +- [0x2B, 0x0122, ItemName_UnusedLetter02] +- [0x2B, 0x0123, ItemName_Letter10] +- [0x2B, 0x0124, ItemName_Letter11] +- [0x2B, 0x0125, ItemName_UnusedLetter03] +- [0x2B, 0x0126, ItemName_UnusedLetter04] +- [0x2B, 0x0127, ItemName_UnusedLetter05] +- [0x2B, 0x0128, ItemName_Letter12] +- [0x2B, 0x0129, ItemName_Letter13] +- [0x2B, 0x012A, ItemName_Letter14] +- [0x2B, 0x012B, ItemName_Letter15] +- [0x2B, 0x012C, ItemName_Letter16] +- [0x2B, 0x012D, ItemName_Letter17] +- [0x2B, 0x012E, ItemName_Letter18] +- [0x2B, 0x012F, ItemName_Letter19] +- [0x2B, 0x0130, ItemName_UnusedLetter06] +- [0x2B, 0x0131, ItemName_Letter20] +- [0x2B, 0x0132, ItemName_Letter21] +- [0x2B, 0x0133, ItemName_Letter22] +- [0x2B, 0x0134, ItemName_Letter23] +- [0x2B, 0x0135, ItemName_Letter24] +- [0x2B, 0x0136, ItemName_KootKoopaLegends] +- [0x2B, 0x0137, ItemName_KootTheTape] +- [0x2B, 0x0138, ItemName_KootLuigiAutograph] +- [0x2B, 0x0139, ItemName_KootEmptyWallet] +- [0x2B, 0x013A, ItemName_KootMerluvleeAutograph] +- [0x2B, 0x013B, ItemName_KootShell] +- [0x2B, 0x013C, ItemName_KootOldPhoto] +- [0x2B, 0x013D, ItemName_KootGlasses] +- [0x2B, 0x013E, ItemName_KootAltPhoto] +- [0x2B, 0x013F, ItemName_KootPackage] +- [0x2B, 0x0140, ItemName_KootRedJar] +- [0x2B, 0x0141, ItemName_Heart] +- [0x2B, 0x0142, ItemName_Coin] +- [0x2B, 0x0143, ItemName_HeartPiece] +- [0x2B, 0x0144, ItemName_StarPoint] +- [0x2B, 0x0145, ItemName_HeartPoint] +- [0x2B, 0x0147, ItemName_FlowerPoint] +- [0x2B, 0x0148, ItemName_StarPiece] +- [0x2C, 0x0000, PlayerMoveName_PowerJump] +- [0x2C, 0x0001, MoveName_SuperJump] +- [0x2C, 0x0002, PlayerMoveName_MegaJump] +- [0x2C, 0x0003, MoveName_JumpCharge0] +- [0x2C, 0x0004, PlayerMoveName_JumpCharge] +- [0x2C, 0x0005, PlayerMoveName_SuperJumpCharge] +- [0x2C, 0x0006, PlayerMoveName_SleepStomp] +- [0x2C, 0x0007, PlayerMoveName_DizzyStomp] +- [0x2C, 0x0008, PlayerMoveName_Multibounce] +- [0x2C, 0x0009, PlayerMoveName_ShrinkStomp] +- [0x2C, 0x000A, PlayerMoveName_DDownJump] +- [0x2C, 0x000B, PlayerMoveName_PowerBounce] +- [0x2C, 0x000C, MoveName_AutoMultibounce] +- [0x2C, 0x000D, MoveName_EarthquakeJump] +- [0x2C, 0x000E, MoveName_AutoJump] +- [0x2C, 0x000F, PlayerMoveName_PowerSmash] +- [0x2C, 0x0010, MoveName_SuperSmash] +- [0x2C, 0x0011, PlayerMoveName_MegaSmash] +- [0x2C, 0x0012, MoveName_SmashCharge0] +- [0x2C, 0x0013, PlayerMoveName_SmashCharge] +- [0x2C, 0x0014, PlayerMoveName_SuperSmashCharge] +- [0x2C, 0x0015, PlayerMoveName_HammerThrow] +- [0x2C, 0x0016, PlayerMoveName_ShrinkSmash] +- [0x2C, 0x0017, PlayerMoveName_SpinSmash] +- [0x2C, 0x0018, PlayerMoveName_DDownPound] +- [0x2C, 0x0019, PlayerMoveName_QuakeHammer] +- [0x2C, 0x001A, PlayerMoveName_PowerQuake] +- [0x2C, 0x001B, PlayerMoveName_MegaQuake] +- [0x2C, 0x001C, MoveName_AutoSmash] +- [0x2C, 0x001D, PlayerMoveName_DoubleDip] +- [0x2C, 0x001E, PlayerMoveName_TripleDip] +- [0x2C, 0x0020, PlayerMoveName_QuickChange] +- [0x2C, 0x0024, MoveName_DefendPlus] +- [0x2C, 0x0026, PlayerMoveName_PUpDDown] +- [0x2C, 0x0027, PlayerMoveName_PDownDUp] +- [0x2C, 0x0029, MoveName_MegaHPDrain] +- [0x2C, 0x002B, MoveName_CrazyHeart] +- [0x2C, 0x002E, MoveName_FlowerFanatic] +- [0x2C, 0x002F, MoveName_HeartFinder] +- [0x2C, 0x0030, MoveName_FlowerFinder] +- [0x2C, 0x0036, MoveName_LuckyDay] +- [0x2C, 0x0037, MoveName_CloseCall] +- [0x2C, 0x0038, MoveName_PowerRush] +- [0x2C, 0x0039, MoveName_LastStand] +- [0x2C, 0x003C, MoveName_BumpAttack] +- [0x2C, 0x003D, MoveName_SpinAttack] +- [0x2C, 0x003E, MoveName_DizzyAttack] +- [0x2C, 0x003F, MoveName_SpeedySpin] +- [0x2C, 0x004F, MoveName_Berserker] +- [0x2C, 0x0053, MoveName_ISpy] +- [0x2C, 0x0055, MoveName_HealthyHealthy] +- [0x2C, 0x005C, MoveName_32] +- [0x2E, 0x0000, PartnerDesc_Goombario_World] +- [0x2E, 0x0001, PartnerDesc_Goombario_Battle] +- [0x2E, 0x0002, PartnerDesc_Goombario_Battle_Headbonk] +- [0x2E, 0x0003, PartnerDesc_Goombario_Battle_Tattle] +- [0x2E, 0x0004, PartnerDesc_Goombario_Battle_Charge] +- [0x2E, 0x0005, PartnerDesc_Goombario_Battle_Multibonk] +- [0x2E, 0x0007, PartnerDesc_Goombario_Pause_Headbonk1] +- [0x2E, 0x0008, PartnerDesc_Goombario_Pause_Headbonk2] +- [0x2E, 0x0009, PartnerDesc_Goombario_Pause_Headbonk3] +- [0x2E, 0x000A, PartnerDesc_Goombario_Pause_Tattle] +- [0x2E, 0x000B, PartnerDesc_Goombario_Pause_Charge] +- [0x2E, 0x000C, PartnerDesc_Goombario_Pause_Multibonk] +- [0x2E, 0x000D, PartnerDesc_Kooper_World] +- [0x2E, 0x000E, PartnerDesc_Kooper_Battle] +- [0x2E, 0x000F, PartnerDesc_Kooper_Battle_ShellToss] +- [0x2E, 0x0010, PartnerDesc_Kooper_Battle_PowerShell] +- [0x2E, 0x0011, PartnerDesc_Kooper_Battle_DizzyShell] +- [0x2E, 0x0012, PartnerDesc_Kooper_Battle_FireShell] +- [0x2E, 0x0014, PartnerDesc_Kooper_Pause_ShellToss1] +- [0x2E, 0x0015, PartnerDesc_Kooper_Pause_ShellToss2] +- [0x2E, 0x0016, PartnerDesc_Kooper_Pause_ShellToss3] +- [0x2E, 0x0017, PartnerDesc_Kooper_Pause_PowerShell] +- [0x2E, 0x0018, PartnerDesc_Kooper_Pause_DizzyShell] +- [0x2E, 0x0019, PartnerDesc_Kooper_Pause_FireShell] +- [0x2E, 0x001A, PartnerDesc_Bombette_World] +- [0x2E, 0x001B, PartnerDesc_Bombette_Battle] +- [0x2E, 0x001C, PartnerDesc_Bombette_Battle_BodySlam] +- [0x2E, 0x001D, PartnerDesc_Bombette_Battle_Bomb] +- [0x2E, 0x001E, PartnerDesc_Bombette_Battle_PowerBomb] +- [0x2E, 0x001F, PartnerDesc_Bombette_Battle_MegaBomb] +- [0x2E, 0x0021, PartnerDesc_Bombette_Pause_BodySlam1] +- [0x2E, 0x0022, PartnerDesc_Bombette_Pause_BodySlam2] +- [0x2E, 0x0023, PartnerDesc_Bombette_Pause_BodySlam3] +- [0x2E, 0x0024, PartnerDesc_Bombette_Pause_Bomb] +- [0x2E, 0x0025, PartnerDesc_Bombette_Pause_PowerBomb] +- [0x2E, 0x0026, PartnerDesc_Bombette_Pause_MegaBomb] +- [0x2E, 0x0027, PartnerDesc_Parakarry_World] +- [0x2E, 0x0028, PartnerDesc_Parakarry_Battle] +- [0x2E, 0x0029, PartnerDesc_Parakarry_Battle_SkyDive] +- [0x2E, 0x002A, PartnerDesc_Parakarry_Battle_ShellShot] +- [0x2E, 0x002B, PartnerDesc_Parakarry_Battle_AirLift] +- [0x2E, 0x002C, PartnerDesc_Parakarry_Battle_AirRaid] +- [0x2E, 0x002E, PartnerDesc_Parakarry_Pause_SkyDive1] +- [0x2E, 0x002F, PartnerDesc_Parakarry_Pause_SkyDive2] +- [0x2E, 0x0030, PartnerDesc_Parakarry_Pause_SkyDive3] +- [0x2E, 0x0031, PartnerDesc_Parakarry_Pause_ShellShot] +- [0x2E, 0x0032, PartnerDesc_Parakarry_Pause_AirLift] +- [0x2E, 0x0033, PartnerDesc_Parakarry_Pause_AirRaid] +- [0x2E, 0x0034, PartnerDesc_Bow_World] +- [0x2E, 0x0035, PartnerDesc_Bow_Battle] +- [0x2E, 0x0036, PartnerDesc_Bow_Battle_Smack] +- [0x2E, 0x0037, PartnerDesc_Bow_Battle_OuttaSight] +- [0x2E, 0x0038, PartnerDesc_Bow_Battle_Spook] +- [0x2E, 0x0039, PartnerDesc_Bow_Battle_FanSmack] +- [0x2E, 0x003B, PartnerDesc_Bow_Pause_Smack1] +- [0x2E, 0x003C, PartnerDesc_Bow_Pause_Smack2] +- [0x2E, 0x003D, PartnerDesc_Bow_Pause_Smack3] +- [0x2E, 0x003E, PartnerDesc_Bow_Pause_OuttaSight] +- [0x2E, 0x003F, PartnerDesc_Bow_Pause_Spook] +- [0x2E, 0x0040, PartnerDesc_Bow_Pause_FanSmack] +- [0x2E, 0x0041, PartnerDesc_Watt_World] +- [0x2E, 0x0042, PartnerDesc_Watt_Battle] +- [0x2E, 0x0043, PartnerDesc_Watt_Battle_ElectroDash] +- [0x2E, 0x0044, PartnerDesc_Watt_Battle_PowerShock] +- [0x2E, 0x0045, PartnerDesc_Watt_Battle_TurboCharge] +- [0x2E, 0x0046, PartnerDesc_Watt_Battle_MegaShock] +- [0x2E, 0x0048, PartnerDesc_Watt_Pause_ElectroDash1] +- [0x2E, 0x0049, PartnerDesc_Watt_Pause_ElectroDash2] +- [0x2E, 0x004A, PartnerDesc_Watt_Pause_ElectroDash3] +- [0x2E, 0x004B, PartnerDesc_Watt_Pause_PowerShock] +- [0x2E, 0x004C, PartnerDesc_Watt_Pause_TurboCharge] +- [0x2E, 0x004D, PartnerDesc_Watt_Pause_MegaShock] +- [0x2E, 0x004E, PartnerDesc_Sushie_World] +- [0x2E, 0x004F, PartnerDesc_Sushie_Battle] +- [0x2E, 0x0050, PartnerDesc_Sushie_Battle_BellyFlop] +- [0x2E, 0x0051, PartnerDesc_Sushie_Battle_Squirt] +- [0x2E, 0x0052, PartnerDesc_Sushie_Battle_WaterBlock] +- [0x2E, 0x0053, PartnerDesc_Sushie_Battle_TidalWave] +- [0x2E, 0x0055, PartnerDesc_Sushie_Pause_BellyFlop1] +- [0x2E, 0x0056, PartnerDesc_Sushie_Pause_BellyFlop2] +- [0x2E, 0x0057, PartnerDesc_Sushie_Pause_BellyFlop3] +- [0x2E, 0x0058, PartnerDesc_Sushie_Pause_Squirt] +- [0x2E, 0x0059, PartnerDesc_Sushie_Pause_WaterBlock] +- [0x2E, 0x005A, PartnerDesc_Sushie_Pause_TidalWave] +- [0x2E, 0x005B, PartnerDesc_Lakilester_World] +- [0x2E, 0x005C, PartnerDesc_Lakilester_Battle] +- [0x2E, 0x005D, PartnerDesc_Lakilester_Battle_SpinyFlip] +- [0x2E, 0x005E, PartnerDesc_Lakilester_Battle_SpinySurge] +- [0x2E, 0x005F, PartnerDesc_Lakilester_Battle_CloudNine] +- [0x2E, 0x0060, PartnerDesc_Lakilester_Battle_Hurricane] +- [0x2E, 0x0062, PartnerDesc_Lakilester_Pause_SpinyFlip1] +- [0x2E, 0x0063, PartnerDesc_Lakilester_Pause_SpinyFlip2] +- [0x2E, 0x0064, PartnerDesc_Lakilester_Pause_SpinyFlip3] +- [0x2E, 0x0065, PartnerDesc_Lakilester_Pause_SpinySurge] +- [0x2E, 0x0066, PartnerDesc_Lakilester_Pause_CloudNine] +- [0x2E, 0x0067, PartnerDesc_Lakilester_Pause_Hurricane] +- [0x2E, 0x0068, PartnerDesc_Goompa_World] +- [0x2E, 0x0069, PartnerDesc_Goompa_Battle] +- [0x2E, 0x009D, PartnerDesc_Goombaria_World] +- [0x2E, 0x009E, PartnerDesc_Goombaria_Battle] +- [0x2E, 0x009F, PartnerDesc_Twink_World] +- [0x2E, 0x00A0, PartnerDesc_Twink_Battle] +- [0x2F, 0x0000, PartnerMoveName_Headbonk1] +- [0x2F, 0x0001, PartnerMoveName_Headbonk2] +- [0x2F, 0x0002, PartnerMoveName_Headbonk3] +- [0x2F, 0x0003, PartnerMoveName_Tattle] +- [0x2F, 0x0004, PartnerMoveName_Charge] +- [0x2F, 0x0005, PartnerMoveName_Multibonk] +- [0x2F, 0x0006, PartnerMoveName_ShellToss1] +- [0x2F, 0x0007, PartnerMoveName_ShellToss2] +- [0x2F, 0x0008, PartnerMoveName_ShellToss3] +- [0x2F, 0x0009, PartnerMoveName_PowerShell] +- [0x2F, 0x000A, PartnerMoveName_DizzyShell] +- [0x2F, 0x000B, PartnerMoveName_FireShell] +- [0x2F, 0x000C, PartnerMoveName_BodySlam1] +- [0x2F, 0x000D, PartnerMoveName_BodySlam2] +- [0x2F, 0x000E, PartnerMoveName_BodySlam3] +- [0x2F, 0x000F, PartnerMoveName_Bomb] +- [0x2F, 0x0010, PartnerMoveName_PowerBomb] +- [0x2F, 0x0011, PartnerMoveName_MegaBomb] +- [0x2F, 0x0012, PartnerMoveName_SkyDive1] +- [0x2F, 0x0013, PartnerMoveName_SkyDive2] +- [0x2F, 0x0014, PartnerMoveName_SkyDive3] +- [0x2F, 0x0015, PartnerMoveName_ShellShot] +- [0x2F, 0x0016, PartnerMoveName_AirLift] +- [0x2F, 0x0017, PartnerMoveName_AirRaid] +- [0x2F, 0x0018, PartnerMoveName_Smack1] +- [0x2F, 0x0019, PartnerMoveName_Smack2] +- [0x2F, 0x001A, PartnerMoveName_Smack3] +- [0x2F, 0x001B, PartnerMoveName_OuttaSight] +- [0x2F, 0x001C, PartnerMoveName_Spook] +- [0x2F, 0x001D, PartnerMoveName_FanSmack] +- [0x2F, 0x001E, PartnerMoveName_ElectroDash1] +- [0x2F, 0x001F, PartnerMoveName_ElectroDash2] +- [0x2F, 0x0020, PartnerMoveName_ElectroDash3] +- [0x2F, 0x0021, PartnerMoveName_PowerShock] +- [0x2F, 0x0022, PartnerMoveName_TurboCharge] +- [0x2F, 0x0023, PartnerMoveName_MegaShock] +- [0x2F, 0x0024, PartnerMoveName_BellyFlop1] +- [0x2F, 0x0025, PartnerMoveName_BellyFlop2] +- [0x2F, 0x0026, PartnerMoveName_BellyFlop3] +- [0x2F, 0x0027, PartnerMoveName_Squirt] +- [0x2F, 0x0028, PartnerMoveName_WaterBlock] +- [0x2F, 0x0029, PartnerMoveName_TidalWave] +- [0x2F, 0x002A, PartnerMoveName_SpinyFlip1] +- [0x2F, 0x002B, PartnerMoveName_SpinyFlip2] +- [0x2F, 0x002C, PartnerMoveName_SpinyFlip3] +- [0x2F, 0x002D, PartnerMoveName_SpinySurge] +- [0x2F, 0x002E, PartnerMoveName_CloudNine] +- [0x2F, 0x002F, PartnerMoveName_Hurricane] diff --git a/tools/splat_ext/pm_msg.py b/tools/splat_ext/pm_msg.py index b924b175c0..1c98086210 100644 --- a/tools/splat_ext/pm_msg.py +++ b/tools/splat_ext/pm_msg.py @@ -7,7 +7,182 @@ import re import pylibyaml import yaml as yaml_loader -CHARSET = { + +CHARSET_COMMON = { + 0xF7: " ", + 0xF0: "[BR]\n", + 0xF1: "[Wait]", + 0xF2: {None: lambda d: (f"[Pause {d[0]}]", 1)}, + 0xF3: "[Variant0]", + 0xF4: "[Variant1]", + 0xF5: "[Variant2]", + 0xF6: "[Variant3]", + 0xFB: "[Next]\n", + 0xFC: { + 0x01: "[Style right]\n", + 0x02: "[Style left]\n", + 0x03: "[Style center]\n", + 0x04: "[Style tattle]\n", + 0x05: { + None: lambda d: ( + f"[Style choice pos={d[0]},{d[1]} size={d[2]},{d[3]}]\n", + 4, + ) + }, + 0x06: "[Style inspect]\n", + 0x07: "[Style sign]\n", + 0x08: {None: lambda d: (f"[Style lamppost height={d[0]}]\n", 1)}, + 0x09: {None: lambda d: (f"[Style postcard index={d[0]}]\n", 1)}, + 0x0A: "[Style popup]\n", + 0x0B: "[Style popup2]\n", + 0x0C: { + None: lambda d: ( + f"[Style upgrade pos={d[0]},{d[1]} size={d[2]},{d[3]}]\n", + 4, + ) + }, + 0x0D: "[Style narrate]\n", + 0x0E: "[Style epilogue]\n", + }, + 0xFF: { + 0x00: { + 0: "[Font standard]\n", + 1: "[Font menu]\n", + 2: "[Font menu2]\n", + 3: "[Font title]\n", + 4: "[Font subtitle]\n", + }, + 0x04: "[Yield]", + 0x05: { + # 0x0A: "[color:normal]", + # 0x20: "[color:red]", + # 0x21: "[color:pink]", + # 0x22: "[color:purple]", + # 0x23: "[color:blue]", + # 0x24: "[color:cyan]", + # 0x25: "[color:green]", + # 0x26: "[color:yellow]", + # 0x00: "[color=normal ctx=diary]", + # 0x07: "[color=red ctx=diary]", + # 0x17: "[color=dark ctx=inspect]", + # 0x18: "[color=normal ctx=sign]", + # 0x19: "[color=red ctx=sign]", + # 0x1A: "[color=blue ctx=sign]", + # 0x1B: "[color=green ctx=sign]", + # 0x28: "[color=red ctx=popup]", + # 0x29: "[color=pink ctx=popup]", + # 0x2A: "[color=purple ctx=popup]", + # 0x2B: "[color=blue ctx=popup]", + # 0x2C: "[color=teal ctx=popup]", + # 0x2D: "[color=green ctx=popup]", + # 0x2E: "[color=yellow ctx=popup]", + # 0x2F: "[color=normal ctx=popup]", + None: lambda d: (f"[Color 0x{d[0]:X}]", 1), + }, + 0x07: "[InputOff]\n", + 0x08: "[InputOn]\n", + 0x09: "[DelayOff]\n", + 0x0A: "[DelayOn]\n", + 0x0B: {None: lambda d: (f"[CharWidth {d[0]}]", 1)}, + 0x0C: {None: lambda d: (f"[Scroll {d[0]}]", 1)}, + 0x0D: {None: lambda d: (f"[Size {d[0]},{d[1]}]\n", 2)}, + 0x0E: "[SizeReset]\n", + 0x0F: {None: lambda d: (f"[Speed delay={d[0]} chars={d[1]}]", 2)}, + 0x10: {None: lambda d: (f"[SetPosX {(d[0] << 8) + d[1]}]", 2)}, + 0x11: {None: lambda d: (f"[SetPosY {d[0]}]", 1)}, + 0x12: {None: lambda d: (f"[Right {d[0]}]", 1)}, + 0x13: {None: lambda d: (f"[Down {d[0]}]", 1)}, + 0x14: {None: lambda d: (f"[Up {d[0]}]", 1)}, + 0x15: {None: lambda d: (f"[InlineImage index={d[0]}]\n", 1)}, + 0x16: { + None: lambda d: ( + f"[AnimSprite spriteID=0x{d[0]:02X}{d[1]:02X} raster={d[2]}]\n", + 3, + ) + }, + 0x17: {None: lambda d: (f"[ItemIcon itemID=0x{d[0]:02X}{d[1]:02X}]\n", 2)}, + 0x18: { + None: lambda d: ( + f"[Image index={d[0]} pos={(d[1] << 8) + d[2]},{d[3]} hasBorder={d[4]} alpha={d[5]} fadeAmount={d[6]}]\n", + 7, + ) + }, + 0x19: {None: lambda d: (f"[HideImage fadeAmount={d[0]}]\n", 1)}, + 0x1A: {None: lambda d: (f"[AnimDelay index={d[1]} delay={d[2]}]", 3)}, + 0x1B: {None: lambda d: (f"[AnimLoop {d[0]} {d[1]}]", 2)}, + 0x1C: {None: lambda d: (f"[AnimDone {d[0]}]", 1)}, + 0x1E: {None: lambda d: (f"[Cursor {d[0]}]", 1)}, + 0x1F: {None: lambda d: (f"[EndChoice {d[0]}]", 1)}, + 0x20: {None: lambda d: (f"[SetCancel {d[0]}]", 1)}, + 0x21: {None: lambda d: (f"[Option {d[0]}]", 1)}, + 0x22: "[SavePos]", + 0x23: "[RestorePos]", + 0x24: { + 0xFF: { + 0x05: { + 0x10: {0x98: {0xFF: {0x25: "[A]"}}}, + 0x11: {0x99: {0xFF: {0x25: "[B]"}}}, + 0x12: {0xA1: {0xFF: {0x25: "[START]"}}}, + 0x13: { + 0x9D: {0xFF: {0x25: "[C-UP]"}}, + 0x9E: {0xFF: {0x25: "[C-DOWN]"}}, + 0x9F: {0xFF: {0x25: "[C-LEFT]"}}, + 0xA0: {0xFF: {0x25: "[C-RIGHT]"}}, + }, + 0x14: {0x9C: {0xFF: {0x25: "[Z]"}}}, + } + } + }, + # 0x24: "[SaveColor]", + # 0x25: "[RestoreColor]", + 0x26: { + 0x00: "[Shake]", + 0x01: "[Wave]", + 0x02: "[NoiseOutline]", + 0x03: {None: lambda d: (f"[Static {d[0]}]", 1)}, + 0x05: {None: lambda d: (f"[Blur dir={['x', 'y', 'xy'][d[0]]}]", 1)}, + 0x07: {None: lambda d: (f"[DitherFade {d[0]}]", 1)}, + 0x0A: "[PrintRising]", + 0x0B: "[PrintGrowing]", + 0x0C: "[SizeJitter]", + 0x0D: "[SizeWave]", + 0x0E: "[DropShadow]", + }, + 0x27: { + 0x00: "[/Shake]", + 0x01: "[/Wave]", + 0x03: "[/Static]", + 0x05: "[/Blur]", + 0x07: "[/DitherFade]", + 0x0A: "[/PrintRising]", + 0x0B: "[/PrintGrowing]", + 0x0C: "[/SizeJitter]", + 0x0D: "[/SizeWave]", + 0x0E: "[/DropShadow]", + }, + 0x28: {None: lambda d: (f"[Var {d[0]}]", 1)}, + 0x29: {None: lambda d: (f"[CenterX {d[0]}]", 1)}, + 0x2B: "[EnableCDownNext]", + 0x2C: { + None: lambda d: ( + f"[CustomVoice soundIDs=0x{d[0]:02X}{d[1]:02X}{d[2]:02X}{d[3]:02X},0x{d[4]:02X}{d[5]:02X}{d[6]:02X}{d[7]:02X}]", + 8, + ) + }, + 0x2E: {None: lambda d: (f"[Volume {d[0]}]", 1)}, + 0x2F: { + 0: "[Voice normal]\n", + 1: "[Voice bowser]\n", + 2: "[Voice star]\n", + None: lambda d: (f"[Voice {d[0]}]\n", 1), + }, + # None: lambda d: (f"[func_{d[0]:02X}]", 1), + }, + None: lambda d: (f"[Raw 0x{d[0]:02X}]", 1), +} + +CHARSET_STANDARD = { + **CHARSET_COMMON, 0x00: "[NOTE]", 0x01: "!", 0x02: '"', @@ -174,178 +349,10 @@ CHARSET = { 0xA3: "”", 0xA4: "‘", 0xA5: "’", - 0xF7: " ", - 0xF0: "[BR]\n", - 0xF1: "[Wait]", - 0xF2: {None: lambda d: (f"[Pause {d[0]}]", 1)}, - 0xF3: "[Variant0]", - 0xF4: "[Variant1]", - 0xF5: "[Variant2]", - 0xF6: "[Variant3]", - 0xFB: "[Next]\n", - 0xFC: { - 0x01: "[Style right]\n", - 0x02: "[Style left]\n", - 0x03: "[Style center]\n", - 0x04: "[Style tattle]\n", - 0x05: { - None: lambda d: ( - f"[Style choice pos={d[0]},{d[1]} size={d[2]},{d[3]}]\n", - 4, - ) - }, - 0x06: "[Style inspect]\n", - 0x07: "[Style sign]\n", - 0x08: {None: lambda d: (f"[Style lamppost height={d[0]}]\n", 1)}, - 0x09: {None: lambda d: (f"[Style postcard index={d[0]}]\n", 1)}, - 0x0A: "[Style popup]\n", - 0x0C: { - None: lambda d: ( - f"[Style upgrade pos={d[0]},{d[1]} size={d[2]},{d[3]}]\n", - 4, - ) - }, - 0x0D: "[Style narrate]\n", - 0x0E: "[Style epilogue]\n", - }, - 0xFF: { - 0x00: { - 0: "[Font standard]\n", - 1: "[Font menu]\n", - 3: "[Font title]\n", - 4: "[Font subtitle]\n", - }, - 0x04: "[Yield]", - 0x05: { - # 0x0A: "[color:normal]", - # 0x20: "[color:red]", - # 0x21: "[color:pink]", - # 0x22: "[color:purple]", - # 0x23: "[color:blue]", - # 0x24: "[color:cyan]", - # 0x25: "[color:green]", - # 0x26: "[color:yellow]", - # 0x00: "[color=normal ctx=diary]", - # 0x07: "[color=red ctx=diary]", - # 0x17: "[color=dark ctx=inspect]", - # 0x18: "[color=normal ctx=sign]", - # 0x19: "[color=red ctx=sign]", - # 0x1A: "[color=blue ctx=sign]", - # 0x1B: "[color=green ctx=sign]", - # 0x28: "[color=red ctx=popup]", - # 0x29: "[color=pink ctx=popup]", - # 0x2A: "[color=purple ctx=popup]", - # 0x2B: "[color=blue ctx=popup]", - # 0x2C: "[color=teal ctx=popup]", - # 0x2D: "[color=green ctx=popup]", - # 0x2E: "[color=yellow ctx=popup]", - # 0x2F: "[color=normal ctx=popup]", - None: lambda d: (f"[Color 0x{d[0]:X}]", 1), - }, - 0x07: "[InputOff]\n", - 0x08: "[InputOn]\n", - 0x09: "[DelayOff]\n", - 0x0A: "[DelayOn]\n", - 0x0B: {None: lambda d: (f"[CharWidth {d[0]}]", 1)}, - 0x0C: {None: lambda d: (f"[Scroll {d[0]}]", 1)}, - 0x0D: {None: lambda d: (f"[Size {d[0]},{d[1]}]\n", 2)}, - 0x0E: "[SizeReset]\n", - 0x0F: {None: lambda d: (f"[Speed delay={d[0]} chars={d[1]}]", 2)}, - 0x10: {None: lambda d: (f"[SetPosX {(d[0] << 8) + d[1]}]", 2)}, - 0x11: {None: lambda d: (f"[SetPosY {d[0]}]", 1)}, - 0x12: {None: lambda d: (f"[Right {d[0]}]", 1)}, - 0x13: {None: lambda d: (f"[Down {d[0]}]", 1)}, - 0x14: {None: lambda d: (f"[Up {d[0]}]", 1)}, - 0x15: {None: lambda d: (f"[InlineImage index={d[0]}]\n", 1)}, - 0x16: { - None: lambda d: ( - f"[AnimSprite spriteID=0x{d[0]:02X}{d[1]:02X} raster={d[2]}]\n", - 3, - ) - }, - 0x17: {None: lambda d: (f"[ItemIcon itemID=0x{d[0]:02X}{d[1]:02X}]\n", 2)}, - 0x18: { - None: lambda d: ( - f"[Image index={d[0]} pos={(d[1] << 8) + d[2]},{d[3]} hasBorder={d[4]} alpha={d[5]} fadeAmount={d[6]}]\n", - 7, - ) - }, - 0x19: {None: lambda d: (f"[HideImage fadeAmount={d[0]}]\n", 1)}, - 0x1A: {None: lambda d: (f"[AnimDelay index={d[1]} delay={d[2]}]", 3)}, - 0x1B: {None: lambda d: (f"[AnimLoop {d[0]} {d[1]}]", 2)}, - 0x1C: {None: lambda d: (f"[AnimDone {d[0]}]", 1)}, - 0x1E: {None: lambda d: (f"[Cursor {d[0]}]", 1)}, - 0x1F: {None: lambda d: (f"[EndChoice {d[0]}]", 1)}, - 0x20: {None: lambda d: (f"[SetCancel {d[0]}]", 1)}, - 0x21: {None: lambda d: (f"[Option {d[0]}]", 1)}, - 0x22: "[SavePos]", - 0x23: "[RestorePos]", - 0x24: { - 0xFF: { - 0x05: { - 0x10: {0x98: {0xFF: {0x25: "[A]"}}}, - 0x11: {0x99: {0xFF: {0x25: "[B]"}}}, - 0x12: {0xA1: {0xFF: {0x25: "[START]"}}}, - 0x13: { - 0x9D: {0xFF: {0x25: "[C-UP]"}}, - 0x9E: {0xFF: {0x25: "[C-DOWN]"}}, - 0x9F: {0xFF: {0x25: "[C-LEFT]"}}, - 0xA0: {0xFF: {0x25: "[C-RIGHT]"}}, - }, - 0x14: {0x9C: {0xFF: {0x25: "[Z]"}}}, - } - } - }, - # 0x24: "[SaveColor]", - # 0x25: "[RestoreColor]", - 0x26: { - 0x00: "[Shake]", - 0x01: "[Wave]", - 0x02: "[NoiseOutline]", - 0x03: {None: lambda d: (f"[Static {d[0]}]", 1)}, - 0x05: {None: lambda d: (f"[Blur dir={['x', 'y', 'xy'][d[0]]}]", 1)}, - 0x07: {None: lambda d: (f"[DitherFade {d[0]}]", 1)}, - 0x0A: "[PrintRising]", - 0x0B: "[PrintGrowing]", - 0x0C: "[SizeJitter]", - 0x0D: "[SizeWave]", - 0x0E: "[DropShadow]", - }, - 0x27: { - 0x00: "[/Shake]", - 0x01: "[/Wave]", - 0x03: "[/Static]", - 0x05: "[/Blur]", - 0x07: "[/DitherFade]", - 0x0A: "[/PrintRising]", - 0x0B: "[/PrintGrowing]", - 0x0C: "[/SizeJitter]", - 0x0D: "[/SizeWave]", - 0x0E: "[/DropShadow]", - }, - 0x28: {None: lambda d: (f"[Var {d[0]}]", 1)}, - 0x29: {None: lambda d: (f"[CenterX {d[0]}]", 1)}, - 0x2B: "[EnableCDownNext]", - 0x2C: { - None: lambda d: ( - f"[CustomVoice soundIDs=0x{d[0]:02X}{d[1]:02X}{d[2]:02X}{d[3]:02X},{d[4]:02X}{d[5]:02X}{d[6]:02X}{d[7]:02X}]", - 8, - ) - }, - 0x2E: {None: lambda d: (f"[Volume {d[0]}]", 1)}, - 0x2F: { - 0: "[Voice normal]\n", - 1: "[Voice bowser]\n", - 2: "[Voice star]\n", - None: lambda d: (f"[Voice {d[0]}]\n", 1), - }, - # None: lambda d: (f"[func_{d[0]:02X}]", 1), - }, - None: lambda d: (f"[Raw 0x{d[0]:02X}]", 1), } CHARSET_CREDITS = { - **CHARSET, + **CHARSET_COMMON, 0x00: "A", 0x01: "B", 0x02: "C", @@ -387,7 +394,419 @@ CHARSET_CREDITS = { 0x26: "9", 0x27: "©", 0x28: "&", +} + +CHARSET_JP_COMMON = { + **CHARSET_COMMON, + 0xF3: "[Charset Kana]", + 0xF4: "[Charset Latin]", + 0xF5: "[Charset Kanji]", + 0xF6: "[Charset Buttons]", 0xF7: " ", + 0xF8: " ", + 0xF9: "[HALFSPACE]", + 0xFF: { + **CHARSET_COMMON[0xFF], + 0x24: { + 0xFF: { + 0x05: { + 0x10: {0xF6: {0x00: {0xFF: {0x25: "[A]"}}}}, + 0x11: {0xF6: {0x01: {0xFF: {0x25: "[B]"}}}}, + 0x12: {0xF6: {0x02: {0xFF: {0x25: "[START]"}}}}, + 0x13: { + 0xF6: { + 0x03: {0xFF: {0x25: "[C-UP]"}}, + 0x04: {0xFF: {0x25: "[C-DOWN]"}}, + 0x05: {0xFF: {0x25: "[C-LEFT]"}}, + 0x06: {0xFF: {0x25: "[C-RIGHT]"}}, + } + }, + 0x14: { + 0xF6: { + 0x07: {0xFF: {0x25: "[Z]"}}, + 0x08: {0xFF: {0x25: "[L]"}}, + 0x09: {0xFF: {0x25: "[R]"}}, + } + }, + } + } + }, + }, +} + +CHARSET_KANA = { + **CHARSET_JP_COMMON, + 0x00: "あ", + 0x01: "い", + 0x02: "う", + 0x03: "え", + 0x04: "お", + 0x05: "か", + 0x06: "き", + 0x07: "く", + 0x08: "け", + 0x09: "こ", + 0x0A: "さ", + 0x0B: "し", + 0x0C: "す", + 0x0D: "せ", + 0x0E: "そ", + 0x0F: "た", + 0x10: "ち", + 0x11: "つ", + 0x12: "て", + 0x13: "と", + 0x14: "な", + 0x15: "に", + 0x16: "ぬ", + 0x17: "ね", + 0x18: "の", + 0x19: "は", + 0x1A: "ひ", + 0x1B: "ふ", + 0x1C: "へ", + 0x1D: "ほ", + 0x1E: "ま", + 0x1F: "み", + 0x20: "む", + 0x21: "め", + 0x22: "も", + 0x23: "や", + 0x24: "ゆ", + 0x25: "よ", + 0x26: "ら", + 0x27: "り", + 0x28: "る", + 0x29: "れ", + 0x2A: "ろ", + 0x2B: "わ", + 0x2C: "を", + 0x2D: "ん", + 0x2E: "ゔ", + 0x2F: "が", + 0x30: "ぎ", + 0x31: "ぐ", + 0x32: "げ", + 0x33: "ご", + 0x34: "ざ", + 0x35: "じ", + 0x36: "ず", + 0x37: "ぜ", + 0x38: "ぞ", + 0x39: "だ", + 0x3A: "ぢ", + 0x3B: "づ", + 0x3C: "で", + 0x3D: "ど", + 0x3E: "ば", + 0x3F: "び", + 0x40: "ぶ", + 0x41: "べ", + 0x42: "ぼ", + 0x43: "ぱ", + 0x44: "ぴ", + 0x45: "ぷ", + 0x46: "ぺ", + 0x47: "ぽ", + 0x48: "ぁ", + 0x49: "ぃ", + 0x4A: "ぅ", + 0x4B: "ぇ", + 0x4C: "ぉ", + 0x4D: "っ", + 0x4E: "ゃ", + 0x4F: "ゅ", + 0x50: "ょ", + 0x51: "ア", + 0x52: "イ", + 0x53: "ウ", + 0x54: "エ", + 0x55: "オ", + 0x56: "カ", + 0x57: "キ", + 0x58: "ク", + 0x59: "ケ", + 0x5A: "コ", + 0x5B: "サ", + 0x5C: "シ", + 0x5D: "ス", + 0x5E: "セ", + 0x5F: "ソ", + 0x60: "タ", + 0x61: "チ", + 0x62: "ツ", + 0x63: "テ", + 0x64: "ト", + 0x65: "ナ", + 0x66: "ニ", + 0x67: "ヌ", + 0x68: "ネ", + 0x69: "ノ", + 0x6A: "ハ", + 0x6B: "ヒ", + 0x6C: "フ", + 0x6D: "ヘ", + 0x6E: "ホ", + 0x6F: "マ", + 0x70: "ミ", + 0x71: "ム", + 0x72: "メ", + 0x73: "モ", + 0x74: "ヤ", + 0x75: "ユ", + 0x76: "ヨ", + 0x77: "ラ", + 0x78: "リ", + 0x79: "ル", + 0x7A: "レ", + 0x7B: "ロ", + 0x7C: "ワ", + 0x7D: "ヲ", + 0x7E: "ン", + 0x7F: "ヴ", + 0x80: "ガ", + 0x81: "ギ", + 0x82: "グ", + 0x83: "ゲ", + 0x84: "ゴ", + 0x85: "ザ", + 0x86: "ジ", + 0x87: "ズ", + 0x88: "ゼ", + 0x89: "ゾ", + 0x8A: "ダ", + 0x8B: "ヂ", + 0x8C: "ヅ", + 0x8D: "デ", + 0x8E: "ド", + 0x8F: "バ", + 0x90: "ビ", + 0x91: "ブ", + 0x92: "ベ", + 0x93: "ボ", + 0x94: "パ", + 0x95: "ピ", + 0x96: "プ", + 0x97: "ペ", + 0x98: "ポ", + 0x99: "ァ", + 0x9A: "ィ", + 0x9B: "ゥ", + 0x9C: "ェ", + 0x9D: "ォ", + 0x9E: "ッ", + 0x9F: "ャ", + 0xA0: "ュ", + 0xA1: "ョ", + 0xA2: "ー", + 0xA3: "~", + 0xA4: {0xA5: {0xA6: "[LONGDASH]"}}, + 0xA7: "0", + 0xA8: "1", + 0xA9: "2", + 0xAA: "3", + 0xAB: "4", + 0xAC: "5", + 0xAD: "6", + 0xAE: "7", + 0xAF: "8", + 0xB0: "9", + 0xB1: "[UP]", + 0xB2: "[DOWN]", + 0xB3: "[LEFT]", + 0xB4: "[RIGHT]", + 0xB5: "!", + 0xB6: "?", + 0xB7: "+", + 0xB8: "-", + 0xB9: "/", + 0xBA: ".", + 0xBB: "&", + 0xBC: "#", + 0xBD: "[HEART]", + 0xBE: "[STAR]", + 0xBF: "(", + 0xC0: ")", + 0xC1: "『", + 0xC2: "』", + 0xC3: "・", + 0xC4: "[HIRAGANA SmallN]", + 0xC5: "[KATAKANA SmallN]", + # existing characters without small counterparts + # 0xC4: "ん", + # 0xC5: "ン", + 0xC6: "星", + # 0xC7 is unused +} + +CHARSET_LATIN = { + **CHARSET_JP_COMMON, + 0x00: "A", + 0x01: "B", + 0x02: "C", + 0x03: "D", + 0x04: "E", + 0x05: "F", + 0x06: "G", + 0x07: "H", + 0x08: "I", + 0x09: "J", + 0x0A: "K", + 0x0B: "L", + 0x0C: "M", + 0x0D: "N", + 0x0E: "O", + 0x0F: "P", + 0x10: "Q", + 0x11: "R", + 0x12: "S", + 0x13: "T", + 0x14: "U", + 0x15: "V", + 0x16: "W", + 0x17: "X", + 0x18: "Y", + 0x19: "Z", + 0x1A: "z", +} + +CHARSET_KANJI = { + **CHARSET_JP_COMMON, + 0x00: "上", + 0x01: "下", + 0x02: "左", + 0x03: "右", + 0x04: "中", + 0x05: "東", + 0x06: "西", + 0x07: "南", + 0x08: "北", + 0x09: "一", + 0x0A: "二", + 0x0B: "三", + 0x0C: "名", + 0x0D: "国", + 0x0E: "城", + 0x0F: "姫", + 0x10: "大", + 0x11: "王", + 0x12: "花", + 0x13: "世", + 0x14: "界", + 0x15: "草", + 0x16: "気", + 0x17: "間", + 0x18: "門", + 0x19: "家", + 0x1A: "地", + 0x1B: "岩", + 0x1C: "駅", + 0x1D: "山", + 0x1E: "海", + 0x1F: "火", + 0x20: "水", + 0x21: "氷", + 0x22: "日", + 0x23: "根", + 0x24: "雲", + 0x25: "口", + 0x26: "原", + 0x27: "前", + 0x28: "店", + 0x29: "天", + 0x2A: "森", + 0x2B: "木", + 0x2C: "力", + 0x2D: "空", + 0x2E: "人", + 0x2F: "島", + 0x30: "出", + 0x31: "入", + 0x32: "本", + 0x33: "石", + 0x34: "村", + 0x35: "休", + 0x36: "先", + 0x37: "見", + 0x38: "近", + 0x39: "方", + 0x3A: "法", + 0x3B: "手", + 0x3C: "紙", + 0x3D: "引", + 0x3E: "場", + 0x3F: "所", + 0x40: "使", + 0x41: "回", + 0x42: "道", + 0x43: "物", + 0x44: "弟", + 0x45: "子", + 0x46: "汽", + 0x47: "車", + 0x48: "何", + 0x49: "黒", + 0x4A: "分", + 0x4B: "時", + 0x4C: "屋", + 0x4D: "音", + 0x4E: "目", + 0x4F: "行", + 0x50: "絵", + 0x51: "月", + 0x52: "野", + 0x53: "外", + 0x54: "図", + 0x55: "部", + 0x56: "小", + 0x57: "風", + 0x58: "魔", + 0x59: "元", + 0x5A: "太", + 0x5B: "陽", + 0x5C: "実", + 0x5D: "赤", + 0x5E: "雪", + 0x5F: "谷", + 0x60: "通", + 0x61: "[CIRCLE]", + 0x62: "[CROSS]", + 0x63: "長", + 0x64: "話", + 0x65: "色", + 0x66: "光", + 0x67: "合", + 0x68: "青", + 0x69: "黄", + 0x6A: "[NOTE]", + 0x6B: "当", + 0x6C: "数", + 0x6D: "兄", + 0x6E: "用", + 0x6F: "心", + 0x70: "今", + 0x71: "正", + 0x72: "直", + 0x73: "全", + 0x74: "体", + 0x75: "夜", + 0x76: "面", + 0x77: "虫", + 0x78: "x", +} + +CHARSET_BUTTONS = { + **CHARSET_JP_COMMON, + 0x00: "[~A]", + 0x01: "[~B]", + 0x02: "[~START]", + 0x03: "[~C-UP]", + 0x04: "[~C-DOWN]", + 0x05: "[~C-LEFT]", + 0x06: "[~C-RIGHT]", + 0x07: "[~Z]", + 0x08: "[~L]", + 0x09: "[~R]", } @@ -488,7 +907,10 @@ class N64SegPm_msg(N64Segment): def write_message_markup(self, data): pos = 0 - self.root_charset = CHARSET + if "ver/jp" in str(options.opts.target_path): + self.root_charset = CHARSET_KANA + else: + self.root_charset = CHARSET_STANDARD while data[pos] != 0xFD: self.charset = self.root_charset @@ -531,7 +953,16 @@ class N64SegPm_msg(N64Segment): if markup_lower == "[font title]\n" or markup_lower == "[font subtitle]\n": self.root_charset = CHARSET_CREDITS elif markup_lower == "[font standard]": - self.root_charset = CHARSET + self.root_charset = CHARSET_STANDARD + elif "ver/jp" in str(options.opts.target_path): + if markup_lower == "[charset kana]": + self.root_charset = CHARSET_KANA + elif markup_lower == "[charset latin]": + self.root_charset = CHARSET_LATIN + elif markup_lower == "[charset kanji]": + self.root_charset = CHARSET_KANJI + elif markup_lower == "[charset buttons]": + self.root_charset = CHARSET_BUTTONS def cache(self): return (self.yaml, self.rom_end, self.msg_names) diff --git a/ver/jp/include/message_ids.h b/ver/jp/include/message_ids.h deleted file mode 100644 index 166b4381d4..0000000000 --- a/ver/jp/include/message_ids.h +++ /dev/null @@ -1,1155 +0,0 @@ -#ifndef _MESSAGE_IDS_JP_H_ -#define _MESSAGE_IDS_JP_H_ - -#define MSG_NONE MESSAGE_ID(0x00, 0x000) -#define MSG_Menus_Party_Goombario MESSAGE_ID(0x20, 0x00E) -#define MSG_Menus_Party_Kooper MESSAGE_ID(0x20, 0x00F) -#define MSG_Menus_Party_Bombette MESSAGE_ID(0x20, 0x010) -#define MSG_Menus_Party_Parakarry MESSAGE_ID(0x20, 0x011) -#define MSG_Menus_Party_Goompa MESSAGE_ID(0x20, 0x012) -#define MSG_Menus_Party_Watt MESSAGE_ID(0x20, 0x013) -#define MSG_Menus_Party_Sushie MESSAGE_ID(0x20, 0x014) -#define MSG_Menus_Party_Lakilester MESSAGE_ID(0x20, 0x015) -#define MSG_Menus_Party_Bow MESSAGE_ID(0x20, 0x016) -#define MSG_Menus_Party_Goombaria MESSAGE_ID(0x20, 0x017) -#define MSG_Menus_Party_Twink MESSAGE_ID(0x20, 0x018) -#define MSG_Menus_StarPower_Focus MESSAGE_ID(0x20, 0x01B) -#define MSG_Menus_StarPower_Refresh MESSAGE_ID(0x20, 0x01C) -#define MSG_Menus_StarPower_Lullaby MESSAGE_ID(0x20, 0x01D) -#define MSG_Menus_StarPower_StarStorm MESSAGE_ID(0x20, 0x01E) -#define MSG_Menus_StarPower_ChillOut MESSAGE_ID(0x20, 0x01F) -#define MSG_Menus_StarPower_Smooch MESSAGE_ID(0x20, 0x020) -#define MSG_Menus_StarPower_TimeOut MESSAGE_ID(0x20, 0x021) -#define MSG_Menus_StarPower_UpAndAway MESSAGE_ID(0x20, 0x022) -#define MSG_Menus_StarPower_StarBeam MESSAGE_ID(0x20, 0x023) -#define MSG_Menus_StarPower_PeachBeam MESSAGE_ID(0x20, 0x024) -#define MSG_Menus_StarPower_Peach_Focus MESSAGE_ID(0x20, 0x025) -#define MSG_Menus_StarPower_Twink_Dash MESSAGE_ID(0x20, 0x026) -#define MSG_Menus_StarPowerDesc_Focus MESSAGE_ID(0x20, 0x027) -#define MSG_Menus_StarPowerDesc_Refresh MESSAGE_ID(0x20, 0x028) -#define MSG_Menus_StarPowerDesc_Lullaby MESSAGE_ID(0x20, 0x029) -#define MSG_Menus_StarPowerDesc_StarStorm MESSAGE_ID(0x20, 0x02A) -#define MSG_Menus_StarPowerDesc_ChillOut MESSAGE_ID(0x20, 0x02B) -#define MSG_Menus_StarPowerDesc_Smooch MESSAGE_ID(0x20, 0x02C) -#define MSG_Menus_StarPowerDesc_TimeOut MESSAGE_ID(0x20, 0x02D) -#define MSG_Menus_StarPowerDesc_UpAndAway MESSAGE_ID(0x20, 0x02E) -#define MSG_Menus_StarPowerDesc_StarBeam MESSAGE_ID(0x20, 0x02F) -#define MSG_Menus_StarPowerDesc_PeachBeam MESSAGE_ID(0x20, 0x030) -#define MSG_Menus_Jump MESSAGE_ID(0x20, 0x069) -#define MSG_Menus_Hammer MESSAGE_ID(0x20, 0x06A) -#define MSG_Menus_Items MESSAGE_ID(0x20, 0x06B) -#define MSG_Menus_Merlee_IncreaseCoins MESSAGE_ID(0x20, 0x89) -#define MSG_Menus_Merlee_Exhausted MESSAGE_ID(0x20, 0x8A) -#define MSG_Menus_Action_UseItem MESSAGE_ID(0x20, 0x0BB) -#define MSG_Menus_PlayerFirstStrike MESSAGE_ID(0x20, 0xC4) -#define MSG_Menus_PartnerFirstStrike MESSAGE_ID(0x20, 0xC5) -#define MSG_Menus_EnemyFirstStrike MESSAGE_ID(0x20, 0xC6) -#define MSG_ItemShortDesc_FireFlower MESSAGE_ID(0x28, 0x000) -#define MSG_ItemShortDesc_SnowmanDoll MESSAGE_ID(0x28, 0x001) -#define MSG_ItemShortDesc_ThunderRage MESSAGE_ID(0x28, 0x002) -#define MSG_ItemShortDesc_ThunderBolt MESSAGE_ID(0x28, 0x003) -#define MSG_ItemShortDesc_ShootingStar MESSAGE_ID(0x28, 0x004) -#define MSG_ItemShortDesc_DustyHammer MESSAGE_ID(0x28, 0x005) -#define MSG_ItemShortDesc_Pebble MESSAGE_ID(0x28, 0x006) -#define MSG_ItemShortDesc_StoneCap MESSAGE_ID(0x28, 0x007) -#define MSG_ItemShortDesc_VoltShroom MESSAGE_ID(0x28, 0x008) -#define MSG_ItemShortDesc_Mushroom MESSAGE_ID(0x28, 0x00C) -#define MSG_ItemShortDesc_SuperShroom MESSAGE_ID(0x28, 0x00D) -#define MSG_ItemShortDesc_UltraShroom MESSAGE_ID(0x28, 0x00E) -#define MSG_ItemShortDesc_LifeShroom MESSAGE_ID(0x28, 0x00F) -#define MSG_ItemShortDesc_DriedShroom MESSAGE_ID(0x28, 0x010) -#define MSG_ItemShortDesc_TastyTonic MESSAGE_ID(0x28, 0x011) -#define MSG_ItemShortDesc_SuperSoda MESSAGE_ID(0x28, 0x012) -#define MSG_ItemShortDesc_BlueBerry MESSAGE_ID(0x28, 0x013) -#define MSG_ItemShortDesc_RedBerry MESSAGE_ID(0x28, 0x014) -#define MSG_ItemShortDesc_YellowBerry MESSAGE_ID(0x28, 0x015) -#define MSG_ItemShortDesc_BubbleBerry MESSAGE_ID(0x28, 0x016) -#define MSG_ItemShortDesc_Lime MESSAGE_ID(0x28, 0x017) -#define MSG_ItemShortDesc_Lemon MESSAGE_ID(0x28, 0x018) -#define MSG_ItemShortDesc_HoneySyrup MESSAGE_ID(0x28, 0x019) -#define MSG_ItemShortDesc_MapleSyrup MESSAGE_ID(0x28, 0x01A) -#define MSG_ItemShortDesc_JamminJelly MESSAGE_ID(0x28, 0x01B) -#define MSG_ItemShortDesc_WhackasBump MESSAGE_ID(0x28, 0x01C) -#define MSG_ItemShortDesc_Apple MESSAGE_ID(0x28, 0x01D) -#define MSG_ItemShortDesc_Goomnut MESSAGE_ID(0x28, 0x01E) -#define MSG_ItemShortDesc_KoopaLeaf MESSAGE_ID(0x28, 0x01F) -#define MSG_ItemShortDesc_DriedPasta MESSAGE_ID(0x28, 0x020) -#define MSG_ItemShortDesc_DriedFruit MESSAGE_ID(0x28, 0x021) -#define MSG_ItemShortDesc_StrangeLeaf MESSAGE_ID(0x28, 0x022) -#define MSG_ItemShortDesc_CakeMix MESSAGE_ID(0x28, 0x023) -#define MSG_ItemShortDesc_Egg MESSAGE_ID(0x28, 0x024) -#define MSG_ItemShortDesc_Coconut MESSAGE_ID(0x28, 0x025) -#define MSG_ItemShortDesc_Melon MESSAGE_ID(0x28, 0x026) -#define MSG_ItemShortDesc_StinkyHerb MESSAGE_ID(0x28, 0x027) -#define MSG_ItemShortDesc_IcedPotato MESSAGE_ID(0x28, 0x028) -#define MSG_ItemShortDesc_SleepySheep MESSAGE_ID(0x28, 0x029) -#define MSG_ItemShortDesc_POWBlock MESSAGE_ID(0x28, 0x02B) -#define MSG_ItemShortDesc_HustleDrink MESSAGE_ID(0x28, 0x02C) -#define MSG_ItemShortDesc_StopWatch MESSAGE_ID(0x28, 0x02D) -#define MSG_ItemShortDesc_DizzyDial MESSAGE_ID(0x28, 0x02E) -#define MSG_ItemShortDesc_PleaseComeBack MESSAGE_ID(0x28, 0x02F) -#define MSG_ItemShortDesc_FrightJar MESSAGE_ID(0x28, 0x031) -#define MSG_ItemShortDesc_Mystery MESSAGE_ID(0x28, 0x032) -#define MSG_ItemShortDesc_RepelGel MESSAGE_ID(0x28, 0x033) -#define MSG_ItemShortDesc_InsecticideHerb MESSAGE_ID(0x28, 0x034) -#define MSG_ItemShortDesc_SpicySoup MESSAGE_ID(0x28, 0x036) -#define MSG_ItemShortDesc_ApplePie MESSAGE_ID(0x28, 0x037) -#define MSG_ItemShortDesc_HoneyShroom MESSAGE_ID(0x28, 0x038) -#define MSG_ItemShortDesc_MapleShroom MESSAGE_ID(0x28, 0x039) -#define MSG_ItemShortDesc_JellyShroom MESSAGE_ID(0x28, 0x03A) -#define MSG_ItemShortDesc_HoneySuper MESSAGE_ID(0x28, 0x03B) -#define MSG_ItemShortDesc_MapleSuper MESSAGE_ID(0x28, 0x03C) -#define MSG_ItemShortDesc_JellySuper MESSAGE_ID(0x28, 0x03D) -#define MSG_ItemShortDesc_HoneyUltra MESSAGE_ID(0x28, 0x03E) -#define MSG_ItemShortDesc_MapleUltra MESSAGE_ID(0x28, 0x03F) -#define MSG_ItemShortDesc_JellyUltra MESSAGE_ID(0x28, 0x040) -#define MSG_ItemShortDesc_Koopasta MESSAGE_ID(0x28, 0x041) -#define MSG_ItemShortDesc_FriedShroom MESSAGE_ID(0x28, 0x042) -#define MSG_ItemShortDesc_HotShroom MESSAGE_ID(0x28, 0x043) -#define MSG_ItemShortDesc_ShroomSteak MESSAGE_ID(0x28, 0x044) -#define MSG_ItemShortDesc_ShroomCake MESSAGE_ID(0x28, 0x045) -#define MSG_ItemShortDesc_SweetShroom MESSAGE_ID(0x28, 0x046) -#define MSG_ItemShortDesc_BlandMeal MESSAGE_ID(0x28, 0x047) -#define MSG_ItemShortDesc_YummyMeal MESSAGE_ID(0x28, 0x048) -#define MSG_ItemShortDesc_DeluxeFeast MESSAGE_ID(0x28, 0x049) -#define MSG_ItemShortDesc_SpecialShake MESSAGE_ID(0x28, 0x04A) -#define MSG_ItemShortDesc_HealthyJuice MESSAGE_ID(0x28, 0x04B) -#define MSG_ItemShortDesc_BigCookie MESSAGE_ID(0x28, 0x04C) -#define MSG_ItemShortDesc_Cake MESSAGE_ID(0x28, 0x04D) -#define MSG_ItemShortDesc_Mistake MESSAGE_ID(0x28, 0x04E) -#define MSG_ItemShortDesc_KoopaTea MESSAGE_ID(0x28, 0x04F) -#define MSG_ItemShortDesc_Spaghetti MESSAGE_ID(0x28, 0x050) -#define MSG_ItemShortDesc_EggMissile MESSAGE_ID(0x28, 0x051) -#define MSG_ItemShortDesc_FriedEgg MESSAGE_ID(0x28, 0x052) -#define MSG_ItemShortDesc_HoneyCandy MESSAGE_ID(0x28, 0x053) -#define MSG_ItemShortDesc_ElectroPop MESSAGE_ID(0x28, 0x054) -#define MSG_ItemShortDesc_FirePop MESSAGE_ID(0x28, 0x055) -#define MSG_ItemShortDesc_LimeCandy MESSAGE_ID(0x28, 0x056) -#define MSG_ItemShortDesc_CocoPop MESSAGE_ID(0x28, 0x057) -#define MSG_ItemShortDesc_LemonCandy MESSAGE_ID(0x28, 0x058) -#define MSG_ItemShortDesc_JellyPop MESSAGE_ID(0x28, 0x059) -#define MSG_ItemShortDesc_StrangeCake MESSAGE_ID(0x28, 0x05A) -#define MSG_ItemShortDesc_KookyCookie MESSAGE_ID(0x28, 0x05B) -#define MSG_ItemShortDesc_FrozenFries MESSAGE_ID(0x28, 0x05C) -#define MSG_ItemShortDesc_PotatoSalad MESSAGE_ID(0x28, 0x05D) -#define MSG_ItemShortDesc_NuttyCake MESSAGE_ID(0x28, 0x05E) -#define MSG_ItemShortDesc_BoiledEgg MESSAGE_ID(0x28, 0x05F) -#define MSG_ItemShortDesc_YoshiCookie MESSAGE_ID(0x28, 0x060) -#define MSG_ItemShortDesc_PowerJump MESSAGE_ID(0x28, 0x061) -#define MSG_ItemShortDesc_SuperJump MESSAGE_ID(0x28, 0x062) -#define MSG_ItemShortDesc_MegaJump MESSAGE_ID(0x28, 0x063) -#define MSG_ItemShortDesc_JumpCharge0 MESSAGE_ID(0x28, 0x064) -#define MSG_ItemShortDesc_JumpCharge MESSAGE_ID(0x28, 0x065) -#define MSG_ItemShortDesc_SJumpChg MESSAGE_ID(0x28, 0x066) -#define MSG_ItemShortDesc_SleepStomp MESSAGE_ID(0x28, 0x067) -#define MSG_ItemShortDesc_DizzyStomp MESSAGE_ID(0x28, 0x068) -#define MSG_ItemShortDesc_Multibounce MESSAGE_ID(0x28, 0x069) -#define MSG_ItemShortDesc_ShrinkStomp MESSAGE_ID(0x28, 0x06A) -#define MSG_ItemShortDesc_DDownJump MESSAGE_ID(0x28, 0x06B) -#define MSG_ItemShortDesc_PowerBounce MESSAGE_ID(0x28, 0x06C) -#define MSG_ItemShortDesc_AutoMultibounce MESSAGE_ID(0x28, 0x06D) -#define MSG_ItemShortDesc_EarthquakeJump MESSAGE_ID(0x28, 0x06E) -#define MSG_ItemShortDesc_AutoJump MESSAGE_ID(0x28, 0x06F) -#define MSG_ItemShortDesc_PowerSmash MESSAGE_ID(0x28, 0x070) -#define MSG_ItemShortDesc_SuperSmash MESSAGE_ID(0x28, 0x071) -#define MSG_ItemShortDesc_MegaSmash MESSAGE_ID(0x28, 0x072) -#define MSG_ItemShortDesc_SmashCharge0 MESSAGE_ID(0x28, 0x073) -#define MSG_ItemShortDesc_SmashCharge MESSAGE_ID(0x28, 0x074) -#define MSG_ItemShortDesc_SSmashChg MESSAGE_ID(0x28, 0x075) -#define MSG_ItemShortDesc_HammerThrow MESSAGE_ID(0x28, 0x076) -#define MSG_ItemShortDesc_ShrinkSmash MESSAGE_ID(0x28, 0x077) -#define MSG_ItemShortDesc_SpinSmash MESSAGE_ID(0x28, 0x078) -#define MSG_ItemShortDesc_DDownPound MESSAGE_ID(0x28, 0x079) -#define MSG_ItemShortDesc_QuakeHammer MESSAGE_ID(0x28, 0x07A) -#define MSG_ItemShortDesc_PowerQuake MESSAGE_ID(0x28, 0x07B) -#define MSG_ItemShortDesc_MegaQuake MESSAGE_ID(0x28, 0x07C) -#define MSG_ItemShortDesc_AutoSmash MESSAGE_ID(0x28, 0x07D) -#define MSG_ItemShortDesc_DoubleDip MESSAGE_ID(0x28, 0x07E) -#define MSG_ItemShortDesc_TripleDip MESSAGE_ID(0x28, 0x07F) -#define MSG_ItemShortDesc_GroupFocus MESSAGE_ID(0x28, 0x080) -#define MSG_ItemShortDesc_QuickChange MESSAGE_ID(0x28, 0x081) -#define MSG_ItemShortDesc_HPPlus MESSAGE_ID(0x28, 0x082) -#define MSG_ItemShortDesc_FPPlus MESSAGE_ID(0x28, 0x083) -#define MSG_ItemShortDesc_PowerPlus MESSAGE_ID(0x28, 0x084) -#define MSG_ItemShortDesc_DefendPlus MESSAGE_ID(0x28, 0x085) -#define MSG_ItemShortDesc_DamageDodge MESSAGE_ID(0x28, 0x086) -#define MSG_ItemShortDesc_PUpDDown MESSAGE_ID(0x28, 0x087) -#define MSG_ItemShortDesc_PDownDUp MESSAGE_ID(0x28, 0x088) -#define MSG_ItemShortDesc_HPDrain MESSAGE_ID(0x28, 0x089) -#define MSG_ItemShortDesc_MegaHPDrain MESSAGE_ID(0x28, 0x08A) -#define MSG_ItemShortDesc_HappyHeart MESSAGE_ID(0x28, 0x08B) -#define MSG_ItemShortDesc_CrazyHeart MESSAGE_ID(0x28, 0x08C) -#define MSG_ItemShortDesc_HappyFlower MESSAGE_ID(0x28, 0x08D) -#define MSG_ItemShortDesc_FlowerSaver MESSAGE_ID(0x28, 0x08E) -#define MSG_ItemShortDesc_FlowerFanatic MESSAGE_ID(0x28, 0x08F) -#define MSG_ItemShortDesc_HeartFinder MESSAGE_ID(0x28, 0x090) -#define MSG_ItemShortDesc_FlowerFinder MESSAGE_ID(0x28, 0x091) -#define MSG_ItemShortDesc_DeepFocus MESSAGE_ID(0x28, 0x092) -#define MSG_ItemShortDesc_SuperFocus MESSAGE_ID(0x28, 0x093) -#define MSG_ItemShortDesc_SpikeShield MESSAGE_ID(0x28, 0x094) -#define MSG_ItemShortDesc_DodgeMaster MESSAGE_ID(0x28, 0x095) -#define MSG_ItemShortDesc_PrettyLucky MESSAGE_ID(0x28, 0x096) -#define MSG_ItemShortDesc_LuckyDay MESSAGE_ID(0x28, 0x097) -#define MSG_ItemShortDesc_CloseCall MESSAGE_ID(0x28, 0x098) -#define MSG_ItemShortDesc_PowerRush MESSAGE_ID(0x28, 0x099) -#define MSG_ItemShortDesc_LastStand MESSAGE_ID(0x28, 0x09A) -#define MSG_ItemShortDesc_MegaRush MESSAGE_ID(0x28, 0x09B) -#define MSG_ItemShortDesc_FirstAttack MESSAGE_ID(0x28, 0x09C) -#define MSG_ItemShortDesc_BumpAttack MESSAGE_ID(0x28, 0x09D) -#define MSG_ItemShortDesc_SpinAttack MESSAGE_ID(0x28, 0x09E) -#define MSG_ItemShortDesc_DizzyAttack MESSAGE_ID(0x28, 0x09F) -#define MSG_ItemShortDesc_SpeedySpin MESSAGE_ID(0x28, 0x0A0) -#define MSG_ItemShortDesc_FeelingFine MESSAGE_ID(0x28, 0x0A1) -#define MSG_ItemShortDesc_AttackFXA MESSAGE_ID(0x28, 0x0A2) -#define MSG_ItemShortDesc_AttackFXD MESSAGE_ID(0x28, 0x0A3) -#define MSG_ItemShortDesc_AttackFXB MESSAGE_ID(0x28, 0x0A4) -#define MSG_ItemShortDesc_AttackFXE MESSAGE_ID(0x28, 0x0A5) -#define MSG_ItemShortDesc_AttackFXC MESSAGE_ID(0x28, 0x0A6) -#define MSG_ItemShortDesc_AttackFXF MESSAGE_ID(0x28, 0x0A7) -#define MSG_ItemShortDesc_AllorNothing MESSAGE_ID(0x28, 0x0A8) -#define MSG_ItemShortDesc_SlowGo MESSAGE_ID(0x28, 0x0A9) -#define MSG_ItemShortDesc_IcePower MESSAGE_ID(0x28, 0x0AA) -#define MSG_ItemShortDesc_PayOff MESSAGE_ID(0x28, 0x0AB) -#define MSG_ItemShortDesc_FireShield MESSAGE_ID(0x28, 0x0AC) -#define MSG_ItemShortDesc_ChillOut MESSAGE_ID(0x28, 0x0AD) -#define MSG_ItemShortDesc_ZapTap MESSAGE_ID(0x28, 0x0AE) -#define MSG_ItemShortDesc_MoneyMoney MESSAGE_ID(0x28, 0x0AF) -#define MSG_ItemShortDesc_Berserker MESSAGE_ID(0x28, 0x0B0) -#define MSG_ItemShortDesc_RightOn MESSAGE_ID(0x28, 0x0B1) -#define MSG_ItemShortDesc_RunawayPay MESSAGE_ID(0x28, 0x0B2) -#define MSG_ItemShortDesc_Refund MESSAGE_ID(0x28, 0x0B3) -#define MSG_ItemShortDesc_ISpy MESSAGE_ID(0x28, 0x0B4) -#define MSG_ItemShortDesc_Peekaboo MESSAGE_ID(0x28, 0x0B5) -#define MSG_ItemShortDesc_HealthyHealthy MESSAGE_ID(0x28, 0x0B6) -#define MSG_ItemShortDesc_Kaiden MESSAGE_ID(0x28, 0x0B7) -#define MSG_ItemShortDesc_ShellCrack MESSAGE_ID(0x28, 0x0BB) -#define MSG_ShortDesc_32 MESSAGE_ID(0x28, 0x0BD) -#define MSG_ItemShortDesc_MysteryScroll MESSAGE_ID(0x28, 0x0C5) -#define MSG_ItemShortDesc_Boots MESSAGE_ID(0x28, 0x0C6) -#define MSG_ItemShortDesc_SuperBoots MESSAGE_ID(0x28, 0x0C7) -#define MSG_ItemShortDesc_UltraBoots MESSAGE_ID(0x28, 0x0C8) -#define MSG_ItemShortDesc_Hammer MESSAGE_ID(0x28, 0x0C9) -#define MSG_ItemShortDesc_SuperHammer MESSAGE_ID(0x28, 0x0CA) -#define MSG_ItemShortDesc_UltraHammer MESSAGE_ID(0x28, 0x0CB) -#define MSG_ItemShortDesc_LuckyStar MESSAGE_ID(0x28, 0x0CC) -#define MSG_ItemShortDesc_KoopaFortressKey MESSAGE_ID(0x28, 0x0CF) -#define MSG_ItemShortDesc_RuinsKey MESSAGE_ID(0x28, 0x0D0) -#define MSG_ItemShortDesc_TubbaCastleKey MESSAGE_ID(0x28, 0x0D1) -#define MSG_ItemShortDesc_CrystalPalaceKey MESSAGE_ID(0x28, 0x0D2) -#define MSG_ItemShortDesc_BowserCastleKey MESSAGE_ID(0x28, 0x0D3) -#define MSG_ItemShortDesc_PeachKey MESSAGE_ID(0x28, 0x0D4) -#define MSG_ItemShortDesc_OddKey MESSAGE_ID(0x28, 0x0D5) -#define MSG_ItemShortDesc_Screwdriver MESSAGE_ID(0x28, 0x0D6) -#define MSG_ItemShortDesc_Dolly MESSAGE_ID(0x28, 0x0D7) -#define MSG_ItemShortDesc_KooperShell MESSAGE_ID(0x28, 0x0D8) -#define MSG_ItemShortDesc_PulseStone MESSAGE_ID(0x28, 0x0D9) -#define MSG_ItemShortDesc_Artifact MESSAGE_ID(0x28, 0x0DA) -#define MSG_ItemShortDesc_GoldenJar MESSAGE_ID(0x28, 0x0DB) -#define MSG_ItemShortDesc_LunarStone MESSAGE_ID(0x28, 0x0DC) -#define MSG_ItemShortDesc_PyramidStone MESSAGE_ID(0x28, 0x0DD) -#define MSG_ItemShortDesc_DiamondStone MESSAGE_ID(0x28, 0x0DE) -#define MSG_ItemShortDesc_ForestPass MESSAGE_ID(0x28, 0x0DF) -#define MSG_ItemShortDesc_BooRecord MESSAGE_ID(0x28, 0x0E0) -#define MSG_ItemShortDesc_BooWeight MESSAGE_ID(0x28, 0x0E1) -#define MSG_ItemShortDesc_BooPortrait MESSAGE_ID(0x28, 0x0E2) -#define MSG_ItemShortDesc_MysticalKey MESSAGE_ID(0x28, 0x0E3) -#define MSG_ItemShortDesc_StoreroomKey MESSAGE_ID(0x28, 0x0E4) -#define MSG_ItemShortDesc_ToyTrain MESSAGE_ID(0x28, 0x0E5) -#define MSG_ItemShortDesc_FryingPan MESSAGE_ID(0x28, 0x0E6) -#define MSG_ItemShortDesc_Dictionary MESSAGE_ID(0x28, 0x0E7) -#define MSG_ItemShortDesc_MysteryNote MESSAGE_ID(0x28, 0x0E8) -#define MSG_ItemShortDesc_SuspiciousNote MESSAGE_ID(0x28, 0x0E9) -#define MSG_ItemShortDesc_Mailbag MESSAGE_ID(0x28, 0x0EA) -#define MSG_ItemShortDesc_MagicalSeed1 MESSAGE_ID(0x28, 0x0EB) -#define MSG_ItemShortDesc_MagicalSeed2 MESSAGE_ID(0x28, 0x0EC) -#define MSG_ItemShortDesc_MagicalSeed3 MESSAGE_ID(0x28, 0x0ED) -#define MSG_ItemShortDesc_MagicalSeed4 MESSAGE_ID(0x28, 0x0EE) -#define MSG_ItemShortDesc_CrystalBerry MESSAGE_ID(0x28, 0x0EF) -#define MSG_ItemShortDesc_WaterStone MESSAGE_ID(0x28, 0x0F0) -#define MSG_ItemShortDesc_MagicalBean MESSAGE_ID(0x28, 0x0F1) -#define MSG_ItemShortDesc_FertileSoil MESSAGE_ID(0x28, 0x0F2) -#define MSG_ItemShortDesc_MiracleWater MESSAGE_ID(0x28, 0x0F3) -#define MSG_ItemShortDesc_CrystalBall MESSAGE_ID(0x28, 0x0F4) -#define MSG_ItemShortDesc_ToadDoll MESSAGE_ID(0x28, 0x0F5) -#define MSG_ItemShortDesc_Calculator MESSAGE_ID(0x28, 0x0F6) -#define MSG_ItemShortDesc_Cookbook MESSAGE_ID(0x28, 0x0F7) -#define MSG_ItemShortDesc_JadeRaven MESSAGE_ID(0x28, 0x0F8) -#define MSG_ItemShortDesc_VolcanoVase MESSAGE_ID(0x28, 0x0F9) -#define MSG_ItemShortDesc_WarehouseKey MESSAGE_ID(0x28, 0x0FA) -#define MSG_ItemShortDesc_SnowmanBucket MESSAGE_ID(0x28, 0x0FB) -#define MSG_ItemShortDesc_SnowmanScarf MESSAGE_ID(0x28, 0x0FC) -#define MSG_ItemShortDesc_StarStone MESSAGE_ID(0x28, 0x0FD) -#define MSG_ItemShortDesc_RedKey MESSAGE_ID(0x28, 0x0FE) -#define MSG_ItemShortDesc_BlueKey MESSAGE_ID(0x28, 0x0FF) -#define MSG_ItemShortDesc_SneakyParasol MESSAGE_ID(0x28, 0x100) -#define MSG_ItemShortDesc_PrisonKey MESSAGE_ID(0x28, 0x101) -#define MSG_ItemShortDesc_Lyrics MESSAGE_ID(0x28, 0x102) -#define MSG_ItemShortDesc_Melody MESSAGE_ID(0x28, 0x103) -#define MSG_ItemShortDesc_BakingSugar MESSAGE_ID(0x28, 0x104) -#define MSG_ItemShortDesc_BakingSalt MESSAGE_ID(0x28, 0x105) -#define MSG_ItemShortDesc_BakingEgg MESSAGE_ID(0x28, 0x106) -#define MSG_ItemShortDesc_BakingCream MESSAGE_ID(0x28, 0x107) -#define MSG_ItemShortDesc_BakingStrawberry MESSAGE_ID(0x28, 0x108) -#define MSG_ItemShortDesc_BakingButter MESSAGE_ID(0x28, 0x109) -#define MSG_ItemShortDesc_BakingCleanser MESSAGE_ID(0x28, 0x10A) -#define MSG_ItemShortDesc_BakingWater MESSAGE_ID(0x28, 0x10B) -#define MSG_ItemShortDesc_BakingFlour MESSAGE_ID(0x28, 0x10C) -#define MSG_ItemShortDesc_BakingMilk MESSAGE_ID(0x28, 0x10D) -#define MSG_ItemShortDesc_FirstDegreeCard MESSAGE_ID(0x28, 0x10E) -#define MSG_ItemShortDesc_SecondDegreeCard MESSAGE_ID(0x28, 0x10F) -#define MSG_ItemShortDesc_ThirdDegreeCard MESSAGE_ID(0x28, 0x110) -#define MSG_ItemShortDesc_FourthDegreeCard MESSAGE_ID(0x28, 0x111) -#define MSG_ItemShortDesc_Diploma MESSAGE_ID(0x28, 0x112) -#define MSG_ItemShortDesc_UltraStone MESSAGE_ID(0x28, 0x113) -#define MSG_ItemShortDesc_SilverCredit MESSAGE_ID(0x28, 0x114) -#define MSG_ItemShortDesc_GoldCredit MESSAGE_ID(0x28, 0x115) -#define MSG_ItemShortDesc_Letter25 MESSAGE_ID(0x28, 0x116) -#define MSG_ItemShortDesc_UnusedLetter MESSAGE_ID(0x28, 0x117) -#define MSG_ItemShortDesc_Letter01 MESSAGE_ID(0x28, 0x118) -#define MSG_ItemShortDesc_Letter02 MESSAGE_ID(0x28, 0x119) -#define MSG_ItemShortDesc_Letter03 MESSAGE_ID(0x28, 0x11A) -#define MSG_ItemShortDesc_Letter04 MESSAGE_ID(0x28, 0x11B) -#define MSG_ItemShortDesc_Letter05 MESSAGE_ID(0x28, 0x11C) -#define MSG_ItemShortDesc_Letter06 MESSAGE_ID(0x28, 0x11D) -#define MSG_ItemShortDesc_Letter07 MESSAGE_ID(0x28, 0x11E) -#define MSG_ItemShortDesc_Letter08 MESSAGE_ID(0x28, 0x11F) -#define MSG_ItemShortDesc_Letter09 MESSAGE_ID(0x28, 0x120) -#define MSG_ItemShortDesc_UnusedLetter02 MESSAGE_ID(0x28, 0x121) -#define MSG_ItemShortDesc_Letter10 MESSAGE_ID(0x28, 0x122) -#define MSG_ItemShortDesc_Letter11 MESSAGE_ID(0x28, 0x123) -#define MSG_ItemShortDesc_UnusedLetter03 MESSAGE_ID(0x28, 0x124) -#define MSG_ItemShortDesc_UnusedLetter04 MESSAGE_ID(0x28, 0x125) -#define MSG_ItemShortDesc_UnusedLetter05 MESSAGE_ID(0x28, 0x126) -#define MSG_ItemShortDesc_Letter12 MESSAGE_ID(0x28, 0x127) -#define MSG_ItemShortDesc_Letter13 MESSAGE_ID(0x28, 0x128) -#define MSG_ItemShortDesc_Letter14 MESSAGE_ID(0x28, 0x129) -#define MSG_ItemShortDesc_Letter15 MESSAGE_ID(0x28, 0x12A) -#define MSG_ItemShortDesc_Letter16 MESSAGE_ID(0x28, 0x12B) -#define MSG_ItemShortDesc_Letter17 MESSAGE_ID(0x28, 0x12C) -#define MSG_ItemShortDesc_Letter18 MESSAGE_ID(0x28, 0x12D) -#define MSG_ItemShortDesc_Letter19 MESSAGE_ID(0x28, 0x12E) -#define MSG_ItemShortDesc_UnusedLetter06 MESSAGE_ID(0x28, 0x12F) -#define MSG_ItemShortDesc_Letter20 MESSAGE_ID(0x28, 0x130) -#define MSG_ItemShortDesc_Letter21 MESSAGE_ID(0x28, 0x131) -#define MSG_ItemShortDesc_Letter22 MESSAGE_ID(0x28, 0x132) -#define MSG_ItemShortDesc_Letter23 MESSAGE_ID(0x28, 0x133) -#define MSG_ItemShortDesc_Letter24 MESSAGE_ID(0x28, 0x134) -#define MSG_ItemShortDesc_KootKoopaLegends MESSAGE_ID(0x28, 0x135) -#define MSG_ItemShortDesc_KootTheTape MESSAGE_ID(0x28, 0x136) -#define MSG_ItemShortDesc_KootLuigiAutograph MESSAGE_ID(0x28, 0x137) -#define MSG_ItemShortDesc_KootEmptyWallet MESSAGE_ID(0x28, 0x138) -#define MSG_ItemShortDesc_KootMerluvleeAutograph MESSAGE_ID(0x28, 0x139) -#define MSG_ItemShortDesc_KootShell MESSAGE_ID(0x28, 0x13A) -#define MSG_ItemShortDesc_KootOldPhoto MESSAGE_ID(0x28, 0x13B) -#define MSG_ItemShortDesc_KootGlasses MESSAGE_ID(0x28, 0x13C) -#define MSG_ItemShortDesc_KootAltPhoto MESSAGE_ID(0x28, 0x13D) -#define MSG_ItemShortDesc_KootPackage MESSAGE_ID(0x28, 0x13E) -#define MSG_ItemShortDesc_KootRedJar MESSAGE_ID(0x28, 0x13F) -#define MSG_ItemFullDesc_FireFlower MESSAGE_ID(0x2A, 0x000) -#define MSG_ItemFullDesc_SnowmanDoll MESSAGE_ID(0x2A, 0x001) -#define MSG_ItemFullDesc_ThunderRage MESSAGE_ID(0x2A, 0x002) -#define MSG_ItemFullDesc_ThunderBolt MESSAGE_ID(0x2A, 0x003) -#define MSG_ItemFullDesc_ShootingStar MESSAGE_ID(0x2A, 0x004) -#define MSG_ItemFullDesc_DustyHammer MESSAGE_ID(0x2A, 0x005) -#define MSG_ItemFullDesc_Pebble MESSAGE_ID(0x2A, 0x006) -#define MSG_ItemFullDesc_StoneCap MESSAGE_ID(0x2A, 0x007) -#define MSG_ItemFullDesc_VoltShroom MESSAGE_ID(0x2A, 0x008) -#define MSG_ItemFullDesc_Mushroom MESSAGE_ID(0x2A, 0x00C) -#define MSG_ItemFullDesc_SuperShroom MESSAGE_ID(0x2A, 0x00D) -#define MSG_ItemFullDesc_UltraShroom MESSAGE_ID(0x2A, 0x00E) -#define MSG_ItemFullDesc_LifeShroom MESSAGE_ID(0x2A, 0x00F) -#define MSG_ItemFullDesc_DriedShroom MESSAGE_ID(0x2A, 0x010) -#define MSG_ItemFullDesc_TastyTonic MESSAGE_ID(0x2A, 0x011) -#define MSG_ItemFullDesc_SuperSoda MESSAGE_ID(0x2A, 0x012) -#define MSG_ItemFullDesc_BlueBerry MESSAGE_ID(0x2A, 0x013) -#define MSG_ItemFullDesc_RedBerry MESSAGE_ID(0x2A, 0x014) -#define MSG_ItemFullDesc_YellowBerry MESSAGE_ID(0x2A, 0x015) -#define MSG_ItemFullDesc_BubbleBerry MESSAGE_ID(0x2A, 0x016) -#define MSG_ItemFullDesc_Lime MESSAGE_ID(0x2A, 0x017) -#define MSG_ItemFullDesc_Lemon MESSAGE_ID(0x2A, 0x018) -#define MSG_ItemFullDesc_HoneySyrup MESSAGE_ID(0x2A, 0x019) -#define MSG_ItemFullDesc_MapleSyrup MESSAGE_ID(0x2A, 0x01A) -#define MSG_ItemFullDesc_JamminJelly MESSAGE_ID(0x2A, 0x01B) -#define MSG_ItemFullDesc_WhackasBump MESSAGE_ID(0x2A, 0x01C) -#define MSG_ItemFullDesc_Apple MESSAGE_ID(0x2A, 0x01D) -#define MSG_ItemFullDesc_Goomnut MESSAGE_ID(0x2A, 0x01E) -#define MSG_ItemFullDesc_KoopaLeaf MESSAGE_ID(0x2A, 0x01F) -#define MSG_ItemFullDesc_DriedPasta MESSAGE_ID(0x2A, 0x020) -#define MSG_ItemFullDesc_DriedFruit MESSAGE_ID(0x2A, 0x021) -#define MSG_ItemFullDesc_StrangeLeaf MESSAGE_ID(0x2A, 0x022) -#define MSG_ItemFullDesc_CakeMix MESSAGE_ID(0x2A, 0x023) -#define MSG_ItemFullDesc_Egg MESSAGE_ID(0x2A, 0x024) -#define MSG_ItemFullDesc_Coconut MESSAGE_ID(0x2A, 0x025) -#define MSG_ItemFullDesc_Melon MESSAGE_ID(0x2A, 0x026) -#define MSG_ItemFullDesc_StinkyHerb MESSAGE_ID(0x2A, 0x027) -#define MSG_ItemFullDesc_IcedPotato MESSAGE_ID(0x2A, 0x028) -#define MSG_ItemFullDesc_SleepySheep MESSAGE_ID(0x2A, 0x029) -#define MSG_ItemFullDesc_POWBlock MESSAGE_ID(0x2A, 0x02B) -#define MSG_ItemFullDesc_HustleDrink MESSAGE_ID(0x2A, 0x02C) -#define MSG_ItemFullDesc_StopWatch MESSAGE_ID(0x2A, 0x02D) -#define MSG_ItemFullDesc_DizzyDial MESSAGE_ID(0x2A, 0x02E) -#define MSG_ItemFullDesc_PleaseComeBack MESSAGE_ID(0x2A, 0x02F) -#define MSG_ItemFullDesc_FrightJar MESSAGE_ID(0x2A, 0x031) -#define MSG_ItemFullDesc_Mystery MESSAGE_ID(0x2A, 0x032) -#define MSG_ItemFullDesc_RepelGel MESSAGE_ID(0x2A, 0x033) -#define MSG_ItemFullDesc_InsecticideHerb MESSAGE_ID(0x2A, 0x034) -#define MSG_ItemFullDesc_SpicySoup MESSAGE_ID(0x2A, 0x036) -#define MSG_ItemFullDesc_ApplePie MESSAGE_ID(0x2A, 0x037) -#define MSG_ItemFullDesc_HoneyShroom MESSAGE_ID(0x2A, 0x038) -#define MSG_ItemFullDesc_MapleShroom MESSAGE_ID(0x2A, 0x039) -#define MSG_ItemFullDesc_JellyShroom MESSAGE_ID(0x2A, 0x03A) -#define MSG_ItemFullDesc_HoneySuper MESSAGE_ID(0x2A, 0x03B) -#define MSG_ItemFullDesc_MapleSuper MESSAGE_ID(0x2A, 0x03C) -#define MSG_ItemFullDesc_JellySuper MESSAGE_ID(0x2A, 0x03D) -#define MSG_ItemFullDesc_HoneyUltra MESSAGE_ID(0x2A, 0x03E) -#define MSG_ItemFullDesc_MapleUltra MESSAGE_ID(0x2A, 0x03F) -#define MSG_ItemFullDesc_JellyUltra MESSAGE_ID(0x2A, 0x040) -#define MSG_ItemFullDesc_Koopasta MESSAGE_ID(0x2A, 0x041) -#define MSG_ItemFullDesc_FriedShroom MESSAGE_ID(0x2A, 0x042) -#define MSG_ItemFullDesc_HotShroom MESSAGE_ID(0x2A, 0x043) -#define MSG_ItemFullDesc_ShroomSteak MESSAGE_ID(0x2A, 0x044) -#define MSG_ItemFullDesc_ShroomCake MESSAGE_ID(0x2A, 0x045) -#define MSG_ItemFullDesc_SweetShroom MESSAGE_ID(0x2A, 0x046) -#define MSG_ItemFullDesc_BlandMeal MESSAGE_ID(0x2A, 0x047) -#define MSG_ItemFullDesc_YummyMeal MESSAGE_ID(0x2A, 0x048) -#define MSG_ItemFullDesc_DeluxeFeast MESSAGE_ID(0x2A, 0x049) -#define MSG_ItemFullDesc_SpecialShake MESSAGE_ID(0x2A, 0x04A) -#define MSG_ItemFullDesc_HealthyJuice MESSAGE_ID(0x2A, 0x04B) -#define MSG_ItemFullDesc_BigCookie MESSAGE_ID(0x2A, 0x04C) -#define MSG_ItemFullDesc_Cake MESSAGE_ID(0x2A, 0x04D) -#define MSG_ItemFullDesc_Mistake MESSAGE_ID(0x2A, 0x04E) -#define MSG_ItemFullDesc_KoopaTea MESSAGE_ID(0x2A, 0x04F) -#define MSG_ItemFullDesc_Spaghetti MESSAGE_ID(0x2A, 0x050) -#define MSG_ItemFullDesc_EggMissile MESSAGE_ID(0x2A, 0x051) -#define MSG_ItemFullDesc_FriedEgg MESSAGE_ID(0x2A, 0x052) -#define MSG_ItemFullDesc_HoneyCandy MESSAGE_ID(0x2A, 0x053) -#define MSG_ItemFullDesc_ElectroPop MESSAGE_ID(0x2A, 0x054) -#define MSG_ItemFullDesc_FirePop MESSAGE_ID(0x2A, 0x055) -#define MSG_ItemFullDesc_LimeCandy MESSAGE_ID(0x2A, 0x056) -#define MSG_ItemFullDesc_CocoPop MESSAGE_ID(0x2A, 0x057) -#define MSG_ItemFullDesc_LemonCandy MESSAGE_ID(0x2A, 0x058) -#define MSG_ItemFullDesc_JellyPop MESSAGE_ID(0x2A, 0x059) -#define MSG_ItemFullDesc_StrangeCake MESSAGE_ID(0x2A, 0x05A) -#define MSG_ItemFullDesc_KookyCookie MESSAGE_ID(0x2A, 0x05B) -#define MSG_ItemFullDesc_FrozenFries MESSAGE_ID(0x2A, 0x05C) -#define MSG_ItemFullDesc_PotatoSalad MESSAGE_ID(0x2A, 0x05D) -#define MSG_ItemFullDesc_NuttyCake MESSAGE_ID(0x2A, 0x05E) -#define MSG_ItemFullDesc_BoiledEgg MESSAGE_ID(0x2A, 0x05F) -#define MSG_ItemFullDesc_YoshiCookie MESSAGE_ID(0x2A, 0x060) -#define MSG_ItemFullDesc_PowerJump MESSAGE_ID(0x2A, 0x061) -#define MSG_ItemFullDesc_SuperJump MESSAGE_ID(0x2A, 0x062) -#define MSG_ItemFullDesc_MegaJump MESSAGE_ID(0x2A, 0x063) -#define MSG_ItemFullDesc_JumpCharge0 MESSAGE_ID(0x2A, 0x064) -#define MSG_ItemFullDesc_JumpCharge MESSAGE_ID(0x2A, 0x065) -#define MSG_ItemFullDesc_SJumpChg MESSAGE_ID(0x2A, 0x066) -#define MSG_ItemFullDesc_SleepStomp MESSAGE_ID(0x2A, 0x067) -#define MSG_ItemFullDesc_DizzyStomp MESSAGE_ID(0x2A, 0x068) -#define MSG_ItemFullDesc_Multibounce MESSAGE_ID(0x2A, 0x069) -#define MSG_ItemFullDesc_ShrinkStomp MESSAGE_ID(0x2A, 0x06A) -#define MSG_ItemFullDesc_DDownJump MESSAGE_ID(0x2A, 0x06B) -#define MSG_ItemFullDesc_PowerBounce MESSAGE_ID(0x2A, 0x06C) -#define MSG_ItemFullDesc_AutoMultibounce MESSAGE_ID(0x2A, 0x06D) -#define MSG_ItemFullDesc_EarthquakeJump MESSAGE_ID(0x2A, 0x06E) -#define MSG_ItemFullDesc_AutoJump MESSAGE_ID(0x2A, 0x06F) -#define MSG_ItemFullDesc_PowerSmash MESSAGE_ID(0x2A, 0x070) -#define MSG_ItemFullDesc_SuperSmash MESSAGE_ID(0x2A, 0x071) -#define MSG_ItemFullDesc_MegaSmash MESSAGE_ID(0x2A, 0x072) -#define MSG_ItemFullDesc_SmashCharge0 MESSAGE_ID(0x2A, 0x073) -#define MSG_ItemFullDesc_SmashCharge MESSAGE_ID(0x2A, 0x074) -#define MSG_ItemFullDesc_SSmashChg MESSAGE_ID(0x2A, 0x075) -#define MSG_ItemFullDesc_HammerThrow MESSAGE_ID(0x2A, 0x076) -#define MSG_ItemFullDesc_ShrinkSmash MESSAGE_ID(0x2A, 0x077) -#define MSG_ItemFullDesc_SpinSmash MESSAGE_ID(0x2A, 0x078) -#define MSG_ItemFullDesc_DDownPound MESSAGE_ID(0x2A, 0x079) -#define MSG_ItemFullDesc_QuakeHammer MESSAGE_ID(0x2A, 0x07A) -#define MSG_ItemFullDesc_PowerQuake MESSAGE_ID(0x2A, 0x07B) -#define MSG_ItemFullDesc_MegaQuake MESSAGE_ID(0x2A, 0x07C) -#define MSG_ItemFullDesc_AutoSmash MESSAGE_ID(0x2A, 0x07D) -#define MSG_ItemFullDesc_DoubleDip MESSAGE_ID(0x2A, 0x07E) -#define MSG_ItemFullDesc_TripleDip MESSAGE_ID(0x2A, 0x07F) -#define MSG_ItemFullDesc_GroupFocus MESSAGE_ID(0x2A, 0x080) -#define MSG_ItemFullDesc_QuickChange MESSAGE_ID(0x2A, 0x081) -#define MSG_ItemFullDesc_HPPlus MESSAGE_ID(0x2A, 0x082) -#define MSG_ItemFullDesc_FPPlus MESSAGE_ID(0x2A, 0x083) -#define MSG_ItemFullDesc_PowerPlus MESSAGE_ID(0x2A, 0x084) -#define MSG_ItemFullDesc_DefendPlus MESSAGE_ID(0x2A, 0x085) -#define MSG_ItemFullDesc_DamageDodge MESSAGE_ID(0x2A, 0x086) -#define MSG_ItemFullDesc_PUpDDown MESSAGE_ID(0x2A, 0x087) -#define MSG_ItemFullDesc_PDownDUp MESSAGE_ID(0x2A, 0x088) -#define MSG_ItemFullDesc_HPDrain MESSAGE_ID(0x2A, 0x089) -#define MSG_ItemFullDesc_MegaHPDrain MESSAGE_ID(0x2A, 0x08A) -#define MSG_ItemFullDesc_HappyHeart MESSAGE_ID(0x2A, 0x08B) -#define MSG_ItemFullDesc_CrazyHeart MESSAGE_ID(0x2A, 0x08C) -#define MSG_ItemFullDesc_HappyFlower MESSAGE_ID(0x2A, 0x08D) -#define MSG_ItemFullDesc_FlowerSaver MESSAGE_ID(0x2A, 0x08E) -#define MSG_ItemFullDesc_FlowerFanatic MESSAGE_ID(0x2A, 0x08F) -#define MSG_ItemFullDesc_HeartFinder MESSAGE_ID(0x2A, 0x090) -#define MSG_ItemFullDesc_FlowerFinder MESSAGE_ID(0x2A, 0x091) -#define MSG_ItemFullDesc_DeepFocus MESSAGE_ID(0x2A, 0x092) -#define MSG_ItemFullDesc_SuperFocus MESSAGE_ID(0x2A, 0x093) -#define MSG_ItemFullDesc_SpikeShield MESSAGE_ID(0x2A, 0x094) -#define MSG_ItemFullDesc_DodgeMaster MESSAGE_ID(0x2A, 0x095) -#define MSG_ItemFullDesc_PrettyLucky MESSAGE_ID(0x2A, 0x096) -#define MSG_ItemFullDesc_LuckyDay MESSAGE_ID(0x2A, 0x097) -#define MSG_ItemFullDesc_CloseCall MESSAGE_ID(0x2A, 0x098) -#define MSG_ItemFullDesc_PowerRush MESSAGE_ID(0x2A, 0x099) -#define MSG_ItemFullDesc_LastStand MESSAGE_ID(0x2A, 0x09A) -#define MSG_ItemFullDesc_MegaRush MESSAGE_ID(0x2A, 0x09B) -#define MSG_ItemFullDesc_FirstAttack MESSAGE_ID(0x2A, 0x09C) -#define MSG_ItemFullDesc_BumpAttack MESSAGE_ID(0x2A, 0x09D) -#define MSG_ItemFullDesc_SpinAttack MESSAGE_ID(0x2A, 0x09E) -#define MSG_ItemFullDesc_DizzyAttack MESSAGE_ID(0x2A, 0x09F) -#define MSG_ItemFullDesc_SpeedySpin MESSAGE_ID(0x2A, 0x0A0) -#define MSG_ItemFullDesc_FeelingFine MESSAGE_ID(0x2A, 0x0A1) -#define MSG_ItemFullDesc_AttackFXA MESSAGE_ID(0x2A, 0x0A2) -#define MSG_ItemFullDesc_AttackFXD MESSAGE_ID(0x2A, 0x0A3) -#define MSG_ItemFullDesc_AttackFXB MESSAGE_ID(0x2A, 0x0A4) -#define MSG_ItemFullDesc_AttackFXE MESSAGE_ID(0x2A, 0x0A5) -#define MSG_ItemFullDesc_AttackFXC MESSAGE_ID(0x2A, 0x0A6) -#define MSG_ItemFullDesc_AttackFXF MESSAGE_ID(0x2A, 0x0A7) -#define MSG_ItemFullDesc_AllorNothing MESSAGE_ID(0x2A, 0x0A8) -#define MSG_ItemFullDesc_SlowGo MESSAGE_ID(0x2A, 0x0A9) -#define MSG_ItemFullDesc_IcePower MESSAGE_ID(0x2A, 0x0AA) -#define MSG_ItemFullDesc_PayOff MESSAGE_ID(0x2A, 0x0AB) -#define MSG_ItemFullDesc_FireShield MESSAGE_ID(0x2A, 0x0AC) -#define MSG_ItemFullDesc_ChillOut MESSAGE_ID(0x2A, 0x0AD) -#define MSG_ItemFullDesc_ZapTap MESSAGE_ID(0x2A, 0x0AE) -#define MSG_ItemFullDesc_MoneyMoney MESSAGE_ID(0x2A, 0x0AF) -#define MSG_ItemFullDesc_Berserker MESSAGE_ID(0x2A, 0x0B0) -#define MSG_ItemFullDesc_RightOn MESSAGE_ID(0x2A, 0x0B1) -#define MSG_ItemFullDesc_RunawayPay MESSAGE_ID(0x2A, 0x0B2) -#define MSG_ItemFullDesc_Refund MESSAGE_ID(0x2A, 0x0B3) -#define MSG_ItemFullDesc_ISpy MESSAGE_ID(0x2A, 0x0B4) -#define MSG_ItemFullDesc_Peekaboo MESSAGE_ID(0x2A, 0x0B5) -#define MSG_ItemFullDesc_HealthyHealthy MESSAGE_ID(0x2A, 0x0B6) -#define MSG_ItemFullDesc_Kaiden MESSAGE_ID(0x2A, 0x0B7) -#define MSG_ItemFullDesc_ShellCrack MESSAGE_ID(0x2A, 0x0BB) -#define MSG_FullDesc_32 MESSAGE_ID(0x2A, 0x0BD) -#define MSG_ItemFullDesc_MysteryScroll MESSAGE_ID(0x2A, 0x0C5) -#define MSG_ItemFullDesc_LuckyStar MESSAGE_ID(0x2A, 0x0CC) -#define MSG_ItemFullDesc_KoopaFortressKey MESSAGE_ID(0x2A, 0x0CF) -#define MSG_ItemFullDesc_RuinsKey MESSAGE_ID(0x2A, 0x0D0) -#define MSG_ItemFullDesc_TubbaCastleKey MESSAGE_ID(0x2A, 0x0D1) -#define MSG_ItemFullDesc_CrystalPalaceKey MESSAGE_ID(0x2A, 0x0D2) -#define MSG_ItemFullDesc_BowserCastleKey MESSAGE_ID(0x2A, 0x0D3) -#define MSG_ItemFullDesc_PeachKey MESSAGE_ID(0x2A, 0x0D4) -#define MSG_ItemFullDesc_OddKey MESSAGE_ID(0x2A, 0x0D5) -#define MSG_ItemFullDesc_Screwdriver MESSAGE_ID(0x2A, 0x0D6) -#define MSG_ItemFullDesc_Dolly MESSAGE_ID(0x2A, 0x0D7) -#define MSG_ItemFullDesc_KooperShell MESSAGE_ID(0x2A, 0x0D8) -#define MSG_ItemFullDesc_PulseStone MESSAGE_ID(0x2A, 0x0D9) -#define MSG_ItemFullDesc_Artifact MESSAGE_ID(0x2A, 0x0DA) -#define MSG_ItemFullDesc_GoldenJar MESSAGE_ID(0x2A, 0x0DB) -#define MSG_ItemFullDesc_LunarStone MESSAGE_ID(0x2A, 0x0DC) -#define MSG_ItemFullDesc_PyramidStone MESSAGE_ID(0x2A, 0x0DD) -#define MSG_ItemFullDesc_DiamondStone MESSAGE_ID(0x2A, 0x0DE) -#define MSG_ItemFullDesc_ForestPass MESSAGE_ID(0x2A, 0x0DF) -#define MSG_ItemFullDesc_BooRecord MESSAGE_ID(0x2A, 0x0E0) -#define MSG_ItemFullDesc_BooWeight MESSAGE_ID(0x2A, 0x0E1) -#define MSG_ItemFullDesc_BooPortrait MESSAGE_ID(0x2A, 0x0E2) -#define MSG_ItemFullDesc_MysticalKey MESSAGE_ID(0x2A, 0x0E3) -#define MSG_ItemFullDesc_StoreroomKey MESSAGE_ID(0x2A, 0x0E4) -#define MSG_ItemFullDesc_ToyTrain MESSAGE_ID(0x2A, 0x0E5) -#define MSG_ItemFullDesc_FryingPan MESSAGE_ID(0x2A, 0x0E6) -#define MSG_ItemFullDesc_Dictionary MESSAGE_ID(0x2A, 0x0E7) -#define MSG_ItemFullDesc_MysteryNote MESSAGE_ID(0x2A, 0x0E8) -#define MSG_ItemFullDesc_SuspiciousNote MESSAGE_ID(0x2A, 0x0E9) -#define MSG_ItemFullDesc_Mailbag MESSAGE_ID(0x2A, 0x0EA) -#define MSG_ItemFullDesc_MagicalSeed1 MESSAGE_ID(0x2A, 0x0EB) -#define MSG_ItemFullDesc_MagicalSeed2 MESSAGE_ID(0x2A, 0x0EC) -#define MSG_ItemFullDesc_MagicalSeed3 MESSAGE_ID(0x2A, 0x0ED) -#define MSG_ItemFullDesc_MagicalSeed4 MESSAGE_ID(0x2A, 0x0EE) -#define MSG_ItemFullDesc_CrystalBerry MESSAGE_ID(0x2A, 0x0EF) -#define MSG_ItemFullDesc_WaterStone MESSAGE_ID(0x2A, 0x0F0) -#define MSG_ItemFullDesc_MagicalBean MESSAGE_ID(0x2A, 0x0F1) -#define MSG_ItemFullDesc_FertileSoil MESSAGE_ID(0x2A, 0x0F2) -#define MSG_ItemFullDesc_MiracleWater MESSAGE_ID(0x2A, 0x0F3) -#define MSG_ItemFullDesc_CrystalBall MESSAGE_ID(0x2A, 0x0F4) -#define MSG_ItemFullDesc_ToadDoll MESSAGE_ID(0x2A, 0x0F5) -#define MSG_ItemFullDesc_Calculator MESSAGE_ID(0x2A, 0x0F6) -#define MSG_ItemFullDesc_Cookbook MESSAGE_ID(0x2A, 0x0F7) -#define MSG_ItemFullDesc_JadeRaven MESSAGE_ID(0x2A, 0x0F8) -#define MSG_ItemFullDesc_VolcanoVase MESSAGE_ID(0x2A, 0x0F9) -#define MSG_ItemFullDesc_WarehouseKey MESSAGE_ID(0x2A, 0x0FA) -#define MSG_ItemFullDesc_SnowmanBucket MESSAGE_ID(0x2A, 0x0FB) -#define MSG_ItemFullDesc_SnowmanScarf MESSAGE_ID(0x2A, 0x0FC) -#define MSG_ItemFullDesc_StarStone MESSAGE_ID(0x2A, 0x0FD) -#define MSG_ItemFullDesc_RedKey MESSAGE_ID(0x2A, 0x0FE) -#define MSG_ItemFullDesc_BlueKey MESSAGE_ID(0x2A, 0x0FF) -#define MSG_ItemFullDesc_SneakyParasol MESSAGE_ID(0x2A, 0x100) -#define MSG_ItemFullDesc_PrisonKey MESSAGE_ID(0x2A, 0x101) -#define MSG_ItemFullDesc_Lyrics MESSAGE_ID(0x2A, 0x102) -#define MSG_ItemFullDesc_Melody MESSAGE_ID(0x2A, 0x103) -#define MSG_ItemFullDesc_BakingSugar MESSAGE_ID(0x2A, 0x104) -#define MSG_ItemFullDesc_BakingSalt MESSAGE_ID(0x2A, 0x105) -#define MSG_ItemFullDesc_BakingEgg MESSAGE_ID(0x2A, 0x106) -#define MSG_ItemFullDesc_BakingCream MESSAGE_ID(0x2A, 0x107) -#define MSG_ItemFullDesc_BakingStrawberry MESSAGE_ID(0x2A, 0x108) -#define MSG_ItemFullDesc_BakingButter MESSAGE_ID(0x2A, 0x109) -#define MSG_ItemFullDesc_BakingCleanser MESSAGE_ID(0x2A, 0x10A) -#define MSG_ItemFullDesc_BakingWater MESSAGE_ID(0x2A, 0x10B) -#define MSG_ItemFullDesc_BakingFlour MESSAGE_ID(0x2A, 0x10C) -#define MSG_ItemFullDesc_BakingMilk MESSAGE_ID(0x2A, 0x10D) -#define MSG_ItemFullDesc_FirstDegreeCard MESSAGE_ID(0x2A, 0x10E) -#define MSG_ItemFullDesc_SecondDegreeCard MESSAGE_ID(0x2A, 0x10F) -#define MSG_ItemFullDesc_ThirdDegreeCard MESSAGE_ID(0x2A, 0x110) -#define MSG_ItemFullDesc_FourthDegreeCard MESSAGE_ID(0x2A, 0x111) -#define MSG_ItemFullDesc_Diploma MESSAGE_ID(0x2A, 0x112) -#define MSG_ItemFullDesc_UltraStone MESSAGE_ID(0x2A, 0x113) -#define MSG_ItemFullDesc_SilverCredit MESSAGE_ID(0x2A, 0x114) -#define MSG_ItemFullDesc_GoldCredit MESSAGE_ID(0x2A, 0x115) -#define MSG_ItemFullDesc_Letter25 MESSAGE_ID(0x2A, 0x116) -#define MSG_ItemFullDesc_UnusedLetter MESSAGE_ID(0x2A, 0x117) -#define MSG_ItemFullDesc_Letter01 MESSAGE_ID(0x2A, 0x118) -#define MSG_ItemFullDesc_Letter02 MESSAGE_ID(0x2A, 0x119) -#define MSG_ItemFullDesc_Letter03 MESSAGE_ID(0x2A, 0x11A) -#define MSG_ItemFullDesc_Letter04 MESSAGE_ID(0x2A, 0x11B) -#define MSG_ItemFullDesc_Letter05 MESSAGE_ID(0x2A, 0x11C) -#define MSG_ItemFullDesc_Letter06 MESSAGE_ID(0x2A, 0x11D) -#define MSG_ItemFullDesc_Letter07 MESSAGE_ID(0x2A, 0x11E) -#define MSG_ItemFullDesc_Letter08 MESSAGE_ID(0x2A, 0x11F) -#define MSG_ItemFullDesc_Letter09 MESSAGE_ID(0x2A, 0x120) -#define MSG_ItemFullDesc_UnusedLetter02 MESSAGE_ID(0x2A, 0x121) -#define MSG_ItemFullDesc_Letter10 MESSAGE_ID(0x2A, 0x122) -#define MSG_ItemFullDesc_Letter11 MESSAGE_ID(0x2A, 0x123) -#define MSG_ItemFullDesc_UnusedLetter03 MESSAGE_ID(0x2A, 0x124) -#define MSG_ItemFullDesc_UnusedLetter04 MESSAGE_ID(0x2A, 0x125) -#define MSG_ItemFullDesc_UnusedLetter05 MESSAGE_ID(0x2A, 0x126) -#define MSG_ItemFullDesc_Letter12 MESSAGE_ID(0x2A, 0x127) -#define MSG_ItemFullDesc_Letter13 MESSAGE_ID(0x2A, 0x128) -#define MSG_ItemFullDesc_Letter14 MESSAGE_ID(0x2A, 0x129) -#define MSG_ItemFullDesc_Letter15 MESSAGE_ID(0x2A, 0x12A) -#define MSG_ItemFullDesc_Letter16 MESSAGE_ID(0x2A, 0x12B) -#define MSG_ItemFullDesc_Letter17 MESSAGE_ID(0x2A, 0x12C) -#define MSG_ItemFullDesc_Letter18 MESSAGE_ID(0x2A, 0x12D) -#define MSG_ItemFullDesc_Letter19 MESSAGE_ID(0x2A, 0x12E) -#define MSG_ItemFullDesc_UnusedLetter06 MESSAGE_ID(0x2A, 0x12F) -#define MSG_ItemFullDesc_Letter20 MESSAGE_ID(0x2A, 0x130) -#define MSG_ItemFullDesc_Letter21 MESSAGE_ID(0x2A, 0x131) -#define MSG_ItemFullDesc_Letter22 MESSAGE_ID(0x2A, 0x132) -#define MSG_ItemFullDesc_Letter23 MESSAGE_ID(0x2A, 0x133) -#define MSG_ItemFullDesc_Letter24 MESSAGE_ID(0x2A, 0x134) -#define MSG_ItemFullDesc_KootKoopaLegends MESSAGE_ID(0x2A, 0x135) -#define MSG_ItemFullDesc_KootTheTape MESSAGE_ID(0x2A, 0x136) -#define MSG_ItemFullDesc_KootLuigiAutograph MESSAGE_ID(0x2A, 0x137) -#define MSG_ItemFullDesc_KootEmptyWallet MESSAGE_ID(0x2A, 0x138) -#define MSG_ItemFullDesc_KootMerluvleeAutograph MESSAGE_ID(0x2A, 0x139) -#define MSG_ItemFullDesc_KootShell MESSAGE_ID(0x2A, 0x13A) -#define MSG_ItemFullDesc_KootOldPhoto MESSAGE_ID(0x2A, 0x13B) -#define MSG_ItemFullDesc_KootGlasses MESSAGE_ID(0x2A, 0x13C) -#define MSG_ItemFullDesc_KootAltPhoto MESSAGE_ID(0x2A, 0x13D) -#define MSG_ItemFullDesc_KootPackage MESSAGE_ID(0x2A, 0x13E) -#define MSG_ItemFullDesc_KootRedJar MESSAGE_ID(0x2A, 0x13F) -#define MSG_ItemName_FireFlower MESSAGE_ID(0x2B, 0x000) -#define MSG_ItemName_SnowmanDoll MESSAGE_ID(0x2B, 0x001) -#define MSG_ItemName_ThunderRage MESSAGE_ID(0x2B, 0x002) -#define MSG_ItemName_ThunderBolt MESSAGE_ID(0x2B, 0x003) -#define MSG_ItemName_ShootingStar MESSAGE_ID(0x2B, 0x004) -#define MSG_ItemName_DustyHammer MESSAGE_ID(0x2B, 0x005) -#define MSG_ItemName_Pebble MESSAGE_ID(0x2B, 0x006) -#define MSG_ItemName_StoneCap MESSAGE_ID(0x2B, 0x007) -#define MSG_ItemName_VoltShroom MESSAGE_ID(0x2B, 0x008) -#define MSG_ItemName_Mushroom MESSAGE_ID(0x2B, 0x00C) -#define MSG_ItemName_SuperShroom MESSAGE_ID(0x2B, 0x00D) -#define MSG_ItemName_UltraShroom MESSAGE_ID(0x2B, 0x00E) -#define MSG_ItemName_LifeShroom MESSAGE_ID(0x2B, 0x00F) -#define MSG_ItemName_DriedShroom MESSAGE_ID(0x2B, 0x010) -#define MSG_ItemName_TastyTonic MESSAGE_ID(0x2B, 0x011) -#define MSG_ItemName_SuperSoda MESSAGE_ID(0x2B, 0x012) -#define MSG_ItemName_BlueBerry MESSAGE_ID(0x2B, 0x013) -#define MSG_ItemName_RedBerry MESSAGE_ID(0x2B, 0x014) -#define MSG_ItemName_YellowBerry MESSAGE_ID(0x2B, 0x015) -#define MSG_ItemName_BubbleBerry MESSAGE_ID(0x2B, 0x016) -#define MSG_ItemName_Lime MESSAGE_ID(0x2B, 0x017) -#define MSG_ItemName_Lemon MESSAGE_ID(0x2B, 0x018) -#define MSG_ItemName_HoneySyrup MESSAGE_ID(0x2B, 0x019) -#define MSG_ItemName_MapleSyrup MESSAGE_ID(0x2B, 0x01A) -#define MSG_ItemName_JamminJelly MESSAGE_ID(0x2B, 0x01B) -#define MSG_ItemName_WhackasBump MESSAGE_ID(0x2B, 0x01C) -#define MSG_ItemName_Apple MESSAGE_ID(0x2B, 0x01D) -#define MSG_ItemName_Goomnut MESSAGE_ID(0x2B, 0x01E) -#define MSG_ItemName_KoopaLeaf MESSAGE_ID(0x2B, 0x01F) -#define MSG_ItemName_DriedPasta MESSAGE_ID(0x2B, 0x020) -#define MSG_ItemName_DriedFruit MESSAGE_ID(0x2B, 0x021) -#define MSG_ItemName_StrangeLeaf MESSAGE_ID(0x2B, 0x022) -#define MSG_ItemName_CakeMix MESSAGE_ID(0x2B, 0x023) -#define MSG_ItemName_Egg MESSAGE_ID(0x2B, 0x024) -#define MSG_ItemName_Coconut MESSAGE_ID(0x2B, 0x025) -#define MSG_ItemName_Melon MESSAGE_ID(0x2B, 0x026) -#define MSG_ItemName_StinkyHerb MESSAGE_ID(0x2B, 0x027) -#define MSG_ItemName_IcedPotato MESSAGE_ID(0x2B, 0x028) -#define MSG_ItemName_SleepySheep MESSAGE_ID(0x2B, 0x029) -#define MSG_ItemName_POWBlock MESSAGE_ID(0x2B, 0x02B) -#define MSG_ItemName_HustleDrink MESSAGE_ID(0x2B, 0x02C) -#define MSG_ItemName_StopWatch MESSAGE_ID(0x2B, 0x02D) -#define MSG_ItemName_DizzyDial MESSAGE_ID(0x2B, 0x02E) -#define MSG_ItemName_PleaseComeBack MESSAGE_ID(0x2B, 0x02F) -#define MSG_ItemName_FrightJar MESSAGE_ID(0x2B, 0x031) -#define MSG_ItemName_Mystery MESSAGE_ID(0x2B, 0x032) -#define MSG_ItemName_RepelGel MESSAGE_ID(0x2B, 0x033) -#define MSG_ItemName_InsecticideHerb MESSAGE_ID(0x2B, 0x034) -#define MSG_ItemName_SpicySoup MESSAGE_ID(0x2B, 0x037) -#define MSG_ItemName_ApplePie MESSAGE_ID(0x2B, 0x038) -#define MSG_ItemName_HoneyShroom MESSAGE_ID(0x2B, 0x039) -#define MSG_ItemName_MapleShroom MESSAGE_ID(0x2B, 0x03A) -#define MSG_ItemName_JellyShroom MESSAGE_ID(0x2B, 0x03B) -#define MSG_ItemName_HoneySuper MESSAGE_ID(0x2B, 0x03C) -#define MSG_ItemName_MapleSuper MESSAGE_ID(0x2B, 0x03D) -#define MSG_ItemName_JellySuper MESSAGE_ID(0x2B, 0x03E) -#define MSG_ItemName_HoneyUltra MESSAGE_ID(0x2B, 0x03F) -#define MSG_ItemName_MapleUltra MESSAGE_ID(0x2B, 0x040) -#define MSG_ItemName_JellyUltra MESSAGE_ID(0x2B, 0x041) -#define MSG_ItemName_Koopasta MESSAGE_ID(0x2B, 0x042) -#define MSG_ItemName_FriedShroom MESSAGE_ID(0x2B, 0x043) -#define MSG_ItemName_HotShroom MESSAGE_ID(0x2B, 0x044) -#define MSG_ItemName_ShroomSteak MESSAGE_ID(0x2B, 0x045) -#define MSG_ItemName_ShroomCake MESSAGE_ID(0x2B, 0x046) -#define MSG_ItemName_SweetShroom MESSAGE_ID(0x2B, 0x047) -#define MSG_ItemName_BlandMeal MESSAGE_ID(0x2B, 0x048) -#define MSG_ItemName_YummyMeal MESSAGE_ID(0x2B, 0x049) -#define MSG_ItemName_DeluxeFeast MESSAGE_ID(0x2B, 0x04A) -#define MSG_ItemName_SpecialShake MESSAGE_ID(0x2B, 0x04B) -#define MSG_ItemName_HealthyJuice MESSAGE_ID(0x2B, 0x04C) -#define MSG_ItemName_BigCookie MESSAGE_ID(0x2B, 0x04D) -#define MSG_ItemName_Cake MESSAGE_ID(0x2B, 0x04E) -#define MSG_ItemName_Mistake MESSAGE_ID(0x2B, 0x04F) -#define MSG_ItemName_KoopaTea MESSAGE_ID(0x2B, 0x050) -#define MSG_ItemName_Spaghetti MESSAGE_ID(0x2B, 0x051) -#define MSG_ItemName_EggMissile MESSAGE_ID(0x2B, 0x052) -#define MSG_ItemName_FriedEgg MESSAGE_ID(0x2B, 0x053) -#define MSG_ItemName_HoneyCandy MESSAGE_ID(0x2B, 0x054) -#define MSG_ItemName_ElectroPop MESSAGE_ID(0x2B, 0x055) -#define MSG_ItemName_FirePop MESSAGE_ID(0x2B, 0x056) -#define MSG_ItemName_LimeCandy MESSAGE_ID(0x2B, 0x057) -#define MSG_ItemName_CocoPop MESSAGE_ID(0x2B, 0x058) -#define MSG_ItemName_LemonCandy MESSAGE_ID(0x2B, 0x059) -#define MSG_ItemName_JellyPop MESSAGE_ID(0x2B, 0x05A) -#define MSG_ItemName_StrangeCake MESSAGE_ID(0x2B, 0x05B) -#define MSG_ItemName_KookyCookie MESSAGE_ID(0x2B, 0x05C) -#define MSG_ItemName_FrozenFries MESSAGE_ID(0x2B, 0x05D) -#define MSG_ItemName_PotatoSalad MESSAGE_ID(0x2B, 0x05E) -#define MSG_ItemName_NuttyCake MESSAGE_ID(0x2B, 0x05F) -#define MSG_ItemName_BoiledEgg MESSAGE_ID(0x2B, 0x060) -#define MSG_ItemName_YoshiCookie MESSAGE_ID(0x2B, 0x061) -#define MSG_ItemName_PowerJump MESSAGE_ID(0x2B, 0x062) -#define MSG_ItemName_SuperJump MESSAGE_ID(0x2B, 0x063) -#define MSG_ItemName_MegaJump MESSAGE_ID(0x2B, 0x064) -#define MSG_ItemName_JumpCharge0 MESSAGE_ID(0x2B, 0x065) -#define MSG_ItemName_JumpCharge MESSAGE_ID(0x2B, 0x066) -#define MSG_ItemName_SJumpChg MESSAGE_ID(0x2B, 0x067) -#define MSG_ItemName_SleepStomp MESSAGE_ID(0x2B, 0x068) -#define MSG_ItemName_DizzyStomp MESSAGE_ID(0x2B, 0x069) -#define MSG_ItemName_Multibounce MESSAGE_ID(0x2B, 0x06A) -#define MSG_ItemName_ShrinkStomp MESSAGE_ID(0x2B, 0x06B) -#define MSG_ItemName_DDownJump MESSAGE_ID(0x2B, 0x06C) -#define MSG_ItemName_PowerBounce MESSAGE_ID(0x2B, 0x06D) -#define MSG_ItemName_AutoMultibounce MESSAGE_ID(0x2B, 0x06E) -#define MSG_ItemName_EarthquakeJump MESSAGE_ID(0x2B, 0x06F) -#define MSG_ItemName_AutoJump MESSAGE_ID(0x2B, 0x070) -#define MSG_ItemName_PowerSmash MESSAGE_ID(0x2B, 0x071) -#define MSG_ItemName_SuperSmash MESSAGE_ID(0x2B, 0x072) -#define MSG_ItemName_MegaSmash MESSAGE_ID(0x2B, 0x073) -#define MSG_ItemName_SmashCharge0 MESSAGE_ID(0x2B, 0x074) -#define MSG_ItemName_SmashCharge MESSAGE_ID(0x2B, 0x075) -#define MSG_ItemName_SSmashChg MESSAGE_ID(0x2B, 0x076) -#define MSG_ItemName_HammerThrow MESSAGE_ID(0x2B, 0x077) -#define MSG_ItemName_ShrinkSmash MESSAGE_ID(0x2B, 0x078) -#define MSG_ItemName_SpinSmash MESSAGE_ID(0x2B, 0x079) -#define MSG_ItemName_DDownPound MESSAGE_ID(0x2B, 0x07A) -#define MSG_ItemName_QuakeHammer MESSAGE_ID(0x2B, 0x07B) -#define MSG_ItemName_PowerQuake MESSAGE_ID(0x2B, 0x07C) -#define MSG_ItemName_MegaQuake MESSAGE_ID(0x2B, 0x07D) -#define MSG_ItemName_AutoSmash MESSAGE_ID(0x2B, 0x07E) -#define MSG_ItemName_DoubleDip MESSAGE_ID(0x2B, 0x07F) -#define MSG_ItemName_TripleDip MESSAGE_ID(0x2B, 0x080) -#define MSG_ItemName_GroupFocus MESSAGE_ID(0x2B, 0x081) -#define MSG_ItemName_QuickChange MESSAGE_ID(0x2B, 0x082) -#define MSG_ItemName_HPPlus MESSAGE_ID(0x2B, 0x083) -#define MSG_ItemName_FPPlus MESSAGE_ID(0x2B, 0x084) -#define MSG_ItemName_PowerPlus MESSAGE_ID(0x2B, 0x085) -#define MSG_ItemName_DefendPlus MESSAGE_ID(0x2B, 0x086) -#define MSG_ItemName_DamageDodge MESSAGE_ID(0x2B, 0x087) -#define MSG_ItemName_PUpDDown MESSAGE_ID(0x2B, 0x088) -#define MSG_ItemName_PDownDUp MESSAGE_ID(0x2B, 0x089) -#define MSG_ItemName_HPDrain MESSAGE_ID(0x2B, 0x08A) -#define MSG_ItemName_MegaHPDrain MESSAGE_ID(0x2B, 0x08B) -#define MSG_ItemName_HappyHeart MESSAGE_ID(0x2B, 0x08C) -#define MSG_ItemName_CrazyHeart MESSAGE_ID(0x2B, 0x08D) -#define MSG_ItemName_HappyFlower MESSAGE_ID(0x2B, 0x08E) -#define MSG_ItemName_FlowerSaver MESSAGE_ID(0x2B, 0x08F) -#define MSG_ItemName_FlowerFanatic MESSAGE_ID(0x2B, 0x090) -#define MSG_ItemName_HeartFinder MESSAGE_ID(0x2B, 0x091) -#define MSG_ItemName_FlowerFinder MESSAGE_ID(0x2B, 0x092) -#define MSG_ItemName_DeepFocus MESSAGE_ID(0x2B, 0x093) -#define MSG_ItemName_SuperFocus MESSAGE_ID(0x2B, 0x094) -#define MSG_ItemName_SpikeShield MESSAGE_ID(0x2B, 0x095) -#define MSG_ItemName_DodgeMaster MESSAGE_ID(0x2B, 0x096) -#define MSG_ItemName_PrettyLucky MESSAGE_ID(0x2B, 0x097) -#define MSG_ItemName_LuckyDay MESSAGE_ID(0x2B, 0x098) -#define MSG_ItemName_CloseCall MESSAGE_ID(0x2B, 0x099) -#define MSG_ItemName_PowerRush MESSAGE_ID(0x2B, 0x09A) -#define MSG_ItemName_LastStand MESSAGE_ID(0x2B, 0x09B) -#define MSG_ItemName_MegaRush MESSAGE_ID(0x2B, 0x09C) -#define MSG_ItemName_FirstAttack MESSAGE_ID(0x2B, 0x09D) -#define MSG_ItemName_BumpAttack MESSAGE_ID(0x2B, 0x09E) -#define MSG_ItemName_SpinAttack MESSAGE_ID(0x2B, 0x09F) -#define MSG_ItemName_DizzyAttack MESSAGE_ID(0x2B, 0x0A0) -#define MSG_ItemName_SpeedySpin MESSAGE_ID(0x2B, 0x0A1) -#define MSG_ItemName_FeelingFine MESSAGE_ID(0x2B, 0x0A2) -#define MSG_ItemName_AttackFXA MESSAGE_ID(0x2B, 0x0A3) -#define MSG_ItemName_AttackFXD MESSAGE_ID(0x2B, 0x0A4) -#define MSG_ItemName_AttackFXB MESSAGE_ID(0x2B, 0x0A5) -#define MSG_ItemName_AttackFXE MESSAGE_ID(0x2B, 0x0A6) -#define MSG_ItemName_AttackFXC MESSAGE_ID(0x2B, 0x0A7) -#define MSG_ItemName_AttackFXF MESSAGE_ID(0x2B, 0x0A8) -#define MSG_ItemName_AllorNothing MESSAGE_ID(0x2B, 0x0A9) -#define MSG_ItemName_SlowGo MESSAGE_ID(0x2B, 0x0AA) -#define MSG_ItemName_IcePower MESSAGE_ID(0x2B, 0x0AB) -#define MSG_ItemName_PayOff MESSAGE_ID(0x2B, 0x0AC) -#define MSG_ItemName_FireShield MESSAGE_ID(0x2B, 0x0AD) -#define MSG_ItemName_ChillOut MESSAGE_ID(0x2B, 0x0AE) -#define MSG_ItemName_ZapTap MESSAGE_ID(0x2B, 0x0AF) -#define MSG_ItemName_MoneyMoney MESSAGE_ID(0x2B, 0x0B0) -#define MSG_ItemName_Berserker MESSAGE_ID(0x2B, 0x0B1) -#define MSG_ItemName_RightOn MESSAGE_ID(0x2B, 0x0B2) -#define MSG_ItemName_RunawayPay MESSAGE_ID(0x2B, 0x0B3) -#define MSG_ItemName_Refund MESSAGE_ID(0x2B, 0x0B4) -#define MSG_ItemName_ISpy MESSAGE_ID(0x2B, 0x0B5) -#define MSG_ItemName_Peekaboo MESSAGE_ID(0x2B, 0x0B6) -#define MSG_ItemName_HealthyHealthy MESSAGE_ID(0x2B, 0x0B7) -#define MSG_ItemName_Kaiden MESSAGE_ID(0x2B, 0x0B8) -#define MSG_ItemName_ShellCrack MESSAGE_ID(0x2B, 0x0BC) -#define MSG_ItemName_MysteryScroll MESSAGE_ID(0x2B, 0x0C6) -#define MSG_ItemName_Boots MESSAGE_ID(0x2B, 0x0C7) -#define MSG_ItemName_SuperBoots MESSAGE_ID(0x2B, 0x0C8) -#define MSG_ItemName_UltraBoots MESSAGE_ID(0x2B, 0x0C9) -#define MSG_ItemName_Hammer MESSAGE_ID(0x2B, 0x0CA) -#define MSG_ItemName_SuperHammer MESSAGE_ID(0x2B, 0x0CB) -#define MSG_ItemName_UltraHammer MESSAGE_ID(0x2B, 0x0CC) -#define MSG_ItemName_LuckyStar MESSAGE_ID(0x2B, 0x0CD) -#define MSG_ItemName_Map MESSAGE_ID(0x2B, 0x0CE) -#define MSG_ItemName_BigMap MESSAGE_ID(0x2B, 0x0CF) -#define MSG_ItemName_KoopaFortressKey MESSAGE_ID(0x2B, 0x0D0) -#define MSG_ItemName_RuinsKey MESSAGE_ID(0x2B, 0x0D1) -#define MSG_ItemName_TubbaCastleKey MESSAGE_ID(0x2B, 0x0D2) -#define MSG_ItemName_CrystalPalaceKey MESSAGE_ID(0x2B, 0x0D3) -#define MSG_ItemName_BowserCastleKey MESSAGE_ID(0x2B, 0x0D4) -#define MSG_ItemName_PeachKey MESSAGE_ID(0x2B, 0x0D5) -#define MSG_ItemName_OddKey MESSAGE_ID(0x2B, 0x0D6) -#define MSG_ItemName_Screwdriver MESSAGE_ID(0x2B, 0x0D7) -#define MSG_ItemName_Dolly MESSAGE_ID(0x2B, 0x0D8) -#define MSG_ItemName_KooperShell MESSAGE_ID(0x2B, 0x0D9) -#define MSG_ItemName_PulseStone MESSAGE_ID(0x2B, 0x0DA) -#define MSG_ItemName_Artifact MESSAGE_ID(0x2B, 0x0DB) -#define MSG_ItemName_GoldenJar MESSAGE_ID(0x2B, 0x0DC) -#define MSG_ItemName_LunarStone MESSAGE_ID(0x2B, 0x0DD) -#define MSG_ItemName_PyramidStone MESSAGE_ID(0x2B, 0x0DE) -#define MSG_ItemName_DiamondStone MESSAGE_ID(0x2B, 0x0DF) -#define MSG_ItemName_ForestPass MESSAGE_ID(0x2B, 0x0E0) -#define MSG_ItemName_BooRecord MESSAGE_ID(0x2B, 0x0E1) -#define MSG_ItemName_BooWeight MESSAGE_ID(0x2B, 0x0E2) -#define MSG_ItemName_BooPortrait MESSAGE_ID(0x2B, 0x0E3) -#define MSG_ItemName_MysticalKey MESSAGE_ID(0x2B, 0x0E4) -#define MSG_ItemName_StoreroomKey MESSAGE_ID(0x2B, 0x0E5) -#define MSG_ItemName_ToyTrain MESSAGE_ID(0x2B, 0x0E6) -#define MSG_ItemName_FryingPan MESSAGE_ID(0x2B, 0x0E7) -#define MSG_ItemName_Dictionary MESSAGE_ID(0x2B, 0x0E8) -#define MSG_ItemName_MysteryNote MESSAGE_ID(0x2B, 0x0E9) -#define MSG_ItemName_SuspiciousNote MESSAGE_ID(0x2B, 0x0EA) -#define MSG_ItemName_Mailbag MESSAGE_ID(0x2B, 0x0EB) -#define MSG_ItemName_MagicalSeed1 MESSAGE_ID(0x2B, 0x0EC) -#define MSG_ItemName_MagicalSeed2 MESSAGE_ID(0x2B, 0x0ED) -#define MSG_ItemName_MagicalSeed3 MESSAGE_ID(0x2B, 0x0EE) -#define MSG_ItemName_MagicalSeed4 MESSAGE_ID(0x2B, 0x0EF) -#define MSG_ItemName_CrystalBerry MESSAGE_ID(0x2B, 0x0F0) -#define MSG_ItemName_WaterStone MESSAGE_ID(0x2B, 0x0F1) -#define MSG_ItemName_MagicalBean MESSAGE_ID(0x2B, 0x0F2) -#define MSG_ItemName_FertileSoil MESSAGE_ID(0x2B, 0x0F3) -#define MSG_ItemName_MiracleWater MESSAGE_ID(0x2B, 0x0F4) -#define MSG_ItemName_CrystalBall MESSAGE_ID(0x2B, 0x0F5) -#define MSG_ItemName_ToadDoll MESSAGE_ID(0x2B, 0x0F6) -#define MSG_ItemName_Calculator MESSAGE_ID(0x2B, 0x0F7) -#define MSG_ItemName_Cookbook MESSAGE_ID(0x2B, 0x0F8) -#define MSG_ItemName_JadeRaven MESSAGE_ID(0x2B, 0x0F9) -#define MSG_ItemName_VolcanoVase MESSAGE_ID(0x2B, 0x0FA) -#define MSG_ItemName_WarehouseKey MESSAGE_ID(0x2B, 0x0FB) -#define MSG_ItemName_SnowmanBucket MESSAGE_ID(0x2B, 0x0FC) -#define MSG_ItemName_SnowmanScarf MESSAGE_ID(0x2B, 0x0FD) -#define MSG_ItemName_StarStone MESSAGE_ID(0x2B, 0x0FE) -#define MSG_ItemName_RedKey MESSAGE_ID(0x2B, 0x0FF) -#define MSG_ItemName_BlueKey MESSAGE_ID(0x2B, 0x100) -#define MSG_ItemName_SneakyParasol MESSAGE_ID(0x2B, 0x101) -#define MSG_ItemName_PrisonKey MESSAGE_ID(0x2B, 0x102) -#define MSG_ItemName_Lyrics MESSAGE_ID(0x2B, 0x103) -#define MSG_ItemName_Melody MESSAGE_ID(0x2B, 0x104) -#define MSG_ItemName_BakingSugar MESSAGE_ID(0x2B, 0x105) -#define MSG_ItemName_BakingSalt MESSAGE_ID(0x2B, 0x106) -#define MSG_ItemName_BakingEgg MESSAGE_ID(0x2B, 0x107) -#define MSG_ItemName_BakingCream MESSAGE_ID(0x2B, 0x108) -#define MSG_ItemName_BakingStrawberry MESSAGE_ID(0x2B, 0x109) -#define MSG_ItemName_BakingButter MESSAGE_ID(0x2B, 0x10A) -#define MSG_ItemName_BakingCleanser MESSAGE_ID(0x2B, 0x10B) -#define MSG_ItemName_BakingWater MESSAGE_ID(0x2B, 0x10C) -#define MSG_ItemName_BakingFlour MESSAGE_ID(0x2B, 0x10D) -#define MSG_ItemName_BakingMilk MESSAGE_ID(0x2B, 0x10E) -#define MSG_ItemName_FirstDegreeCard MESSAGE_ID(0x2B, 0x10F) -#define MSG_ItemName_SecondDegreeCard MESSAGE_ID(0x2B, 0x110) -#define MSG_ItemName_ThirdDegreeCard MESSAGE_ID(0x2B, 0x111) -#define MSG_ItemName_FourthDegreeCard MESSAGE_ID(0x2B, 0x112) -#define MSG_ItemName_Diploma MESSAGE_ID(0x2B, 0x113) -#define MSG_ItemName_UltraStone MESSAGE_ID(0x2B, 0x114) -#define MSG_ItemName_SilverCredit MESSAGE_ID(0x2B, 0x115) -#define MSG_ItemName_GoldCredit MESSAGE_ID(0x2B, 0x116) -#define MSG_ItemName_Letter25 MESSAGE_ID(0x2B, 0x117) -#define MSG_ItemName_UnusedLetter MESSAGE_ID(0x2B, 0x118) -#define MSG_ItemName_Letter01 MESSAGE_ID(0x2B, 0x119) -#define MSG_ItemName_Letter02 MESSAGE_ID(0x2B, 0x11A) -#define MSG_ItemName_Letter03 MESSAGE_ID(0x2B, 0x11B) -#define MSG_ItemName_Letter04 MESSAGE_ID(0x2B, 0x11C) -#define MSG_ItemName_Letter05 MESSAGE_ID(0x2B, 0x11D) -#define MSG_ItemName_Letter06 MESSAGE_ID(0x2B, 0x11E) -#define MSG_ItemName_Letter07 MESSAGE_ID(0x2B, 0x11F) -#define MSG_ItemName_Letter08 MESSAGE_ID(0x2B, 0x120) -#define MSG_ItemName_Letter09 MESSAGE_ID(0x2B, 0x121) -#define MSG_ItemName_UnusedLetter02 MESSAGE_ID(0x2B, 0x122) -#define MSG_ItemName_Letter10 MESSAGE_ID(0x2B, 0x123) -#define MSG_ItemName_Letter11 MESSAGE_ID(0x2B, 0x124) -#define MSG_ItemName_UnusedLetter03 MESSAGE_ID(0x2B, 0x125) -#define MSG_ItemName_UnusedLetter04 MESSAGE_ID(0x2B, 0x126) -#define MSG_ItemName_UnusedLetter05 MESSAGE_ID(0x2B, 0x127) -#define MSG_ItemName_Letter12 MESSAGE_ID(0x2B, 0x128) -#define MSG_ItemName_Letter13 MESSAGE_ID(0x2B, 0x129) -#define MSG_ItemName_Letter14 MESSAGE_ID(0x2B, 0x12A) -#define MSG_ItemName_Letter15 MESSAGE_ID(0x2B, 0x12B) -#define MSG_ItemName_Letter16 MESSAGE_ID(0x2B, 0x12C) -#define MSG_ItemName_Letter17 MESSAGE_ID(0x2B, 0x12D) -#define MSG_ItemName_Letter18 MESSAGE_ID(0x2B, 0x12E) -#define MSG_ItemName_Letter19 MESSAGE_ID(0x2B, 0x12F) -#define MSG_ItemName_UnusedLetter06 MESSAGE_ID(0x2B, 0x130) -#define MSG_ItemName_Letter20 MESSAGE_ID(0x2B, 0x131) -#define MSG_ItemName_Letter21 MESSAGE_ID(0x2B, 0x132) -#define MSG_ItemName_Letter22 MESSAGE_ID(0x2B, 0x133) -#define MSG_ItemName_Letter23 MESSAGE_ID(0x2B, 0x134) -#define MSG_ItemName_Letter24 MESSAGE_ID(0x2B, 0x135) -#define MSG_ItemName_KootKoopaLegends MESSAGE_ID(0x2B, 0x136) -#define MSG_ItemName_KootTheTape MESSAGE_ID(0x2B, 0x137) -#define MSG_ItemName_KootLuigiAutograph MESSAGE_ID(0x2B, 0x138) -#define MSG_ItemName_KootEmptyWallet MESSAGE_ID(0x2B, 0x139) -#define MSG_ItemName_KootMerluvleeAutograph MESSAGE_ID(0x2B, 0x13A) -#define MSG_ItemName_KootShell MESSAGE_ID(0x2B, 0x13B) -#define MSG_ItemName_KootOldPhoto MESSAGE_ID(0x2B, 0x13C) -#define MSG_ItemName_KootGlasses MESSAGE_ID(0x2B, 0x13D) -#define MSG_ItemName_KootAltPhoto MESSAGE_ID(0x2B, 0x13E) -#define MSG_ItemName_KootPackage MESSAGE_ID(0x2B, 0x13F) -#define MSG_ItemName_KootRedJar MESSAGE_ID(0x2B, 0x140) -#define MSG_ItemName_Heart MESSAGE_ID(0x2B, 0x141) -#define MSG_ItemName_Coin MESSAGE_ID(0x2B, 0x142) -#define MSG_ItemName_HeartPiece MESSAGE_ID(0x2B, 0x143) -#define MSG_ItemName_StarPoint MESSAGE_ID(0x2B, 0x144) -#define MSG_ItemName_HeartPoint MESSAGE_ID(0x2B, 0x145) -#define MSG_ItemName_FlowerPoint MESSAGE_ID(0x2B, 0x147) -#define MSG_ItemName_StarPiece MESSAGE_ID(0x2B, 0x148) -#define MSG_PlayerMoveName_PowerJump MESSAGE_ID(0x2C, 0x000) -#define MSG_MoveName_SuperJump MESSAGE_ID(0x2C, 0x001) -#define MSG_PlayerMoveName_MegaJump MESSAGE_ID(0x2C, 0x002) -#define MSG_MoveName_JumpCharge0 MESSAGE_ID(0x2C, 0x003) -#define MSG_PlayerMoveName_JumpCharge MESSAGE_ID(0x2C, 0x004) -#define MSG_PlayerMoveName_SuperJumpCharge MESSAGE_ID(0x2C, 0x005) -#define MSG_PlayerMoveName_SleepStomp MESSAGE_ID(0x2C, 0x006) -#define MSG_PlayerMoveName_DizzyStomp MESSAGE_ID(0x2C, 0x007) -#define MSG_PlayerMoveName_Multibounce MESSAGE_ID(0x2C, 0x008) -#define MSG_PlayerMoveName_ShrinkStomp MESSAGE_ID(0x2C, 0x009) -#define MSG_PlayerMoveName_DDownJump MESSAGE_ID(0x2C, 0x00A) -#define MSG_PlayerMoveName_PowerBounce MESSAGE_ID(0x2C, 0x00B) -#define MSG_MoveName_AutoMultibounce MESSAGE_ID(0x2C, 0x00C) -#define MSG_MoveName_EarthquakeJump MESSAGE_ID(0x2C, 0x00D) -#define MSG_MoveName_AutoJump MESSAGE_ID(0x2C, 0x00E) -#define MSG_PlayerMoveName_PowerSmash MESSAGE_ID(0x2C, 0x00F) -#define MSG_MoveName_SuperSmash MESSAGE_ID(0x2C, 0x010) -#define MSG_PlayerMoveName_MegaSmash MESSAGE_ID(0x2C, 0x011) -#define MSG_MoveName_SmashCharge0 MESSAGE_ID(0x2C, 0x012) -#define MSG_PlayerMoveName_SmashCharge MESSAGE_ID(0x2C, 0x013) -#define MSG_PlayerMoveName_SuperSmashCharge MESSAGE_ID(0x2C, 0x014) -#define MSG_PlayerMoveName_HammerThrow MESSAGE_ID(0x2C, 0x015) -#define MSG_PlayerMoveName_ShrinkSmash MESSAGE_ID(0x2C, 0x016) -#define MSG_PlayerMoveName_SpinSmash MESSAGE_ID(0x2C, 0x017) -#define MSG_PlayerMoveName_DDownPound MESSAGE_ID(0x2C, 0x018) -#define MSG_PlayerMoveName_QuakeHammer MESSAGE_ID(0x2C, 0x019) -#define MSG_PlayerMoveName_PowerQuake MESSAGE_ID(0x2C, 0x01A) -#define MSG_PlayerMoveName_MegaQuake MESSAGE_ID(0x2C, 0x01B) -#define MSG_MoveName_AutoSmash MESSAGE_ID(0x2C, 0x01C) -#define MSG_PlayerMoveName_DoubleDip MESSAGE_ID(0x2C, 0x01D) -#define MSG_PlayerMoveName_TripleDip MESSAGE_ID(0x2C, 0x01E) -#define MSG_PlayerMoveName_QuickChange MESSAGE_ID(0x2C, 0x020) -#define MSG_MoveName_DefendPlus MESSAGE_ID(0x2C, 0x024) -#define MSG_PlayerMoveName_PUpDDown MESSAGE_ID(0x2C, 0x026) -#define MSG_PlayerMoveName_PDownDUp MESSAGE_ID(0x2C, 0x027) -#define MSG_MoveName_MegaHPDrain MESSAGE_ID(0x2C, 0x029) -#define MSG_MoveName_CrazyHeart MESSAGE_ID(0x2C, 0x02B) -#define MSG_MoveName_FlowerFanatic MESSAGE_ID(0x2C, 0x02E) -#define MSG_MoveName_HeartFinder MESSAGE_ID(0x2C, 0x02F) -#define MSG_MoveName_FlowerFinder MESSAGE_ID(0x2C, 0x030) -#define MSG_MoveName_LuckyDay MESSAGE_ID(0x2C, 0x036) -#define MSG_MoveName_CloseCall MESSAGE_ID(0x2C, 0x037) -#define MSG_MoveName_PowerRush MESSAGE_ID(0x2C, 0x038) -#define MSG_MoveName_LastStand MESSAGE_ID(0x2C, 0x039) -#define MSG_MoveName_BumpAttack MESSAGE_ID(0x2C, 0x03C) -#define MSG_MoveName_SpinAttack MESSAGE_ID(0x2C, 0x03D) -#define MSG_MoveName_DizzyAttack MESSAGE_ID(0x2C, 0x03E) -#define MSG_MoveName_SpeedySpin MESSAGE_ID(0x2C, 0x03F) -#define MSG_MoveName_Berserker MESSAGE_ID(0x2C, 0x04F) -#define MSG_MoveName_ISpy MESSAGE_ID(0x2C, 0x053) -#define MSG_MoveName_HealthyHealthy MESSAGE_ID(0x2C, 0x055) -#define MSG_MoveName_32 MESSAGE_ID(0x2C, 0x05C) -#define MSG_PartnerDesc_Goombario_World MESSAGE_ID(0x2E, 0x000) -#define MSG_PartnerDesc_Goombario_Battle MESSAGE_ID(0x2E, 0x001) -#define MSG_PartnerDesc_Goombario_Battle_Headbonk MESSAGE_ID(0x2E, 0x002) -#define MSG_PartnerDesc_Goombario_Battle_Tattle MESSAGE_ID(0x2E, 0x003) -#define MSG_PartnerDesc_Goombario_Battle_Charge MESSAGE_ID(0x2E, 0x004) -#define MSG_PartnerDesc_Goombario_Battle_Multibonk MESSAGE_ID(0x2E, 0x005) -#define MSG_PartnerDesc_Goombario_Pause_Headbonk1 MESSAGE_ID(0x2E, 0x007) -#define MSG_PartnerDesc_Goombario_Pause_Headbonk2 MESSAGE_ID(0x2E, 0x008) -#define MSG_PartnerDesc_Goombario_Pause_Headbonk3 MESSAGE_ID(0x2E, 0x009) -#define MSG_PartnerDesc_Goombario_Pause_Tattle MESSAGE_ID(0x2E, 0x00A) -#define MSG_PartnerDesc_Goombario_Pause_Charge MESSAGE_ID(0x2E, 0x00B) -#define MSG_PartnerDesc_Goombario_Pause_Multibonk MESSAGE_ID(0x2E, 0x00C) -#define MSG_PartnerDesc_Kooper_World MESSAGE_ID(0x2E, 0x00D) -#define MSG_PartnerDesc_Kooper_Battle MESSAGE_ID(0x2E, 0x00E) -#define MSG_PartnerDesc_Kooper_Battle_ShellToss MESSAGE_ID(0x2E, 0x00F) -#define MSG_PartnerDesc_Kooper_Battle_PowerShell MESSAGE_ID(0x2E, 0x010) -#define MSG_PartnerDesc_Kooper_Battle_DizzyShell MESSAGE_ID(0x2E, 0x011) -#define MSG_PartnerDesc_Kooper_Battle_FireShell MESSAGE_ID(0x2E, 0x012) -#define MSG_PartnerDesc_Kooper_Pause_ShellToss1 MESSAGE_ID(0x2E, 0x014) -#define MSG_PartnerDesc_Kooper_Pause_ShellToss2 MESSAGE_ID(0x2E, 0x015) -#define MSG_PartnerDesc_Kooper_Pause_ShellToss3 MESSAGE_ID(0x2E, 0x016) -#define MSG_PartnerDesc_Kooper_Pause_PowerShell MESSAGE_ID(0x2E, 0x017) -#define MSG_PartnerDesc_Kooper_Pause_DizzyShell MESSAGE_ID(0x2E, 0x018) -#define MSG_PartnerDesc_Kooper_Pause_FireShell MESSAGE_ID(0x2E, 0x019) -#define MSG_PartnerDesc_Bombette_World MESSAGE_ID(0x2E, 0x01A) -#define MSG_PartnerDesc_Bombette_Battle MESSAGE_ID(0x2E, 0x01B) -#define MSG_PartnerDesc_Bombette_Battle_BodySlam MESSAGE_ID(0x2E, 0x01C) -#define MSG_PartnerDesc_Bombette_Battle_Bomb MESSAGE_ID(0x2E, 0x01D) -#define MSG_PartnerDesc_Bombette_Battle_PowerBomb MESSAGE_ID(0x2E, 0x01E) -#define MSG_PartnerDesc_Bombette_Battle_MegaBomb MESSAGE_ID(0x2E, 0x01F) -#define MSG_PartnerDesc_Bombette_Pause_BodySlam1 MESSAGE_ID(0x2E, 0x021) -#define MSG_PartnerDesc_Bombette_Pause_BodySlam2 MESSAGE_ID(0x2E, 0x022) -#define MSG_PartnerDesc_Bombette_Pause_BodySlam3 MESSAGE_ID(0x2E, 0x023) -#define MSG_PartnerDesc_Bombette_Pause_Bomb MESSAGE_ID(0x2E, 0x024) -#define MSG_PartnerDesc_Bombette_Pause_PowerBomb MESSAGE_ID(0x2E, 0x025) -#define MSG_PartnerDesc_Bombette_Pause_MegaBomb MESSAGE_ID(0x2E, 0x026) -#define MSG_PartnerDesc_Parakarry_World MESSAGE_ID(0x2E, 0x027) -#define MSG_PartnerDesc_Parakarry_Battle MESSAGE_ID(0x2E, 0x028) -#define MSG_PartnerDesc_Parakarry_Battle_SkyDive MESSAGE_ID(0x2E, 0x029) -#define MSG_PartnerDesc_Parakarry_Battle_ShellShot MESSAGE_ID(0x2E, 0x02A) -#define MSG_PartnerDesc_Parakarry_Battle_AirLift MESSAGE_ID(0x2E, 0x02B) -#define MSG_PartnerDesc_Parakarry_Battle_AirRaid MESSAGE_ID(0x2E, 0x02C) -#define MSG_PartnerDesc_Parakarry_Pause_SkyDive1 MESSAGE_ID(0x2E, 0x02E) -#define MSG_PartnerDesc_Parakarry_Pause_SkyDive2 MESSAGE_ID(0x2E, 0x02F) -#define MSG_PartnerDesc_Parakarry_Pause_SkyDive3 MESSAGE_ID(0x2E, 0x030) -#define MSG_PartnerDesc_Parakarry_Pause_ShellShot MESSAGE_ID(0x2E, 0x031) -#define MSG_PartnerDesc_Parakarry_Pause_AirLift MESSAGE_ID(0x2E, 0x032) -#define MSG_PartnerDesc_Parakarry_Pause_AirRaid MESSAGE_ID(0x2E, 0x033) -#define MSG_PartnerDesc_Bow_World MESSAGE_ID(0x2E, 0x034) -#define MSG_PartnerDesc_Bow_Battle MESSAGE_ID(0x2E, 0x035) -#define MSG_PartnerDesc_Bow_Battle_Smack MESSAGE_ID(0x2E, 0x036) -#define MSG_PartnerDesc_Bow_Battle_OuttaSight MESSAGE_ID(0x2E, 0x037) -#define MSG_PartnerDesc_Bow_Battle_Spook MESSAGE_ID(0x2E, 0x038) -#define MSG_PartnerDesc_Bow_Battle_FanSmack MESSAGE_ID(0x2E, 0x039) -#define MSG_PartnerDesc_Bow_Pause_Smack1 MESSAGE_ID(0x2E, 0x03B) -#define MSG_PartnerDesc_Bow_Pause_Smack2 MESSAGE_ID(0x2E, 0x03C) -#define MSG_PartnerDesc_Bow_Pause_Smack3 MESSAGE_ID(0x2E, 0x03D) -#define MSG_PartnerDesc_Bow_Pause_OuttaSight MESSAGE_ID(0x2E, 0x03E) -#define MSG_PartnerDesc_Bow_Pause_Spook MESSAGE_ID(0x2E, 0x03F) -#define MSG_PartnerDesc_Bow_Pause_FanSmack MESSAGE_ID(0x2E, 0x040) -#define MSG_PartnerDesc_Watt_World MESSAGE_ID(0x2E, 0x041) -#define MSG_PartnerDesc_Watt_Battle MESSAGE_ID(0x2E, 0x042) -#define MSG_PartnerDesc_Watt_Battle_ElectroDash MESSAGE_ID(0x2E, 0x043) -#define MSG_PartnerDesc_Watt_Battle_PowerShock MESSAGE_ID(0x2E, 0x044) -#define MSG_PartnerDesc_Watt_Battle_TurboCharge MESSAGE_ID(0x2E, 0x045) -#define MSG_PartnerDesc_Watt_Battle_MegaShock MESSAGE_ID(0x2E, 0x046) -#define MSG_PartnerDesc_Watt_Pause_ElectroDash1 MESSAGE_ID(0x2E, 0x048) -#define MSG_PartnerDesc_Watt_Pause_ElectroDash2 MESSAGE_ID(0x2E, 0x049) -#define MSG_PartnerDesc_Watt_Pause_ElectroDash3 MESSAGE_ID(0x2E, 0x04A) -#define MSG_PartnerDesc_Watt_Pause_PowerShock MESSAGE_ID(0x2E, 0x04B) -#define MSG_PartnerDesc_Watt_Pause_TurboCharge MESSAGE_ID(0x2E, 0x04C) -#define MSG_PartnerDesc_Watt_Pause_MegaShock MESSAGE_ID(0x2E, 0x04D) -#define MSG_PartnerDesc_Sushie_World MESSAGE_ID(0x2E, 0x04E) -#define MSG_PartnerDesc_Sushie_Battle MESSAGE_ID(0x2E, 0x04F) -#define MSG_PartnerDesc_Sushie_Battle_BellyFlop MESSAGE_ID(0x2E, 0x050) -#define MSG_PartnerDesc_Sushie_Battle_Squirt MESSAGE_ID(0x2E, 0x051) -#define MSG_PartnerDesc_Sushie_Battle_WaterBlock MESSAGE_ID(0x2E, 0x052) -#define MSG_PartnerDesc_Sushie_Battle_TidalWave MESSAGE_ID(0x2E, 0x053) -#define MSG_PartnerDesc_Sushie_Pause_BellyFlop1 MESSAGE_ID(0x2E, 0x055) -#define MSG_PartnerDesc_Sushie_Pause_BellyFlop2 MESSAGE_ID(0x2E, 0x056) -#define MSG_PartnerDesc_Sushie_Pause_BellyFlop3 MESSAGE_ID(0x2E, 0x057) -#define MSG_PartnerDesc_Sushie_Pause_Squirt MESSAGE_ID(0x2E, 0x058) -#define MSG_PartnerDesc_Sushie_Pause_WaterBlock MESSAGE_ID(0x2E, 0x059) -#define MSG_PartnerDesc_Sushie_Pause_TidalWave MESSAGE_ID(0x2E, 0x05A) -#define MSG_PartnerDesc_Lakilester_World MESSAGE_ID(0x2E, 0x05B) -#define MSG_PartnerDesc_Lakilester_Battle MESSAGE_ID(0x2E, 0x05C) -#define MSG_PartnerDesc_Lakilester_Battle_SpinyFlip MESSAGE_ID(0x2E, 0x05D) -#define MSG_PartnerDesc_Lakilester_Battle_SpinySurge MESSAGE_ID(0x2E, 0x05E) -#define MSG_PartnerDesc_Lakilester_Battle_CloudNine MESSAGE_ID(0x2E, 0x05F) -#define MSG_PartnerDesc_Lakilester_Battle_Hurricane MESSAGE_ID(0x2E, 0x060) -#define MSG_PartnerDesc_Lakilester_Pause_SpinyFlip1 MESSAGE_ID(0x2E, 0x062) -#define MSG_PartnerDesc_Lakilester_Pause_SpinyFlip2 MESSAGE_ID(0x2E, 0x063) -#define MSG_PartnerDesc_Lakilester_Pause_SpinyFlip3 MESSAGE_ID(0x2E, 0x064) -#define MSG_PartnerDesc_Lakilester_Pause_SpinySurge MESSAGE_ID(0x2E, 0x065) -#define MSG_PartnerDesc_Lakilester_Pause_CloudNine MESSAGE_ID(0x2E, 0x066) -#define MSG_PartnerDesc_Lakilester_Pause_Hurricane MESSAGE_ID(0x2E, 0x067) -#define MSG_PartnerDesc_Goompa_World MESSAGE_ID(0x2E, 0x68) -#define MSG_PartnerDesc_Goompa_Battle MESSAGE_ID(0x2E, 0x69) -#define MSG_PartnerDesc_Goombaria_World MESSAGE_ID(0x2E, 0x9D) -#define MSG_PartnerDesc_Goombaria_Battle MESSAGE_ID(0x2E, 0x9E) -#define MSG_PartnerDesc_Twink_World MESSAGE_ID(0x2E, 0x9F) -#define MSG_PartnerDesc_Twink_Battle MESSAGE_ID(0x2E, 0xA0) -#define MSG_PartnerMoveName_Headbonk1 MESSAGE_ID(0x2F, 0x000) -#define MSG_PartnerMoveName_Headbonk2 MESSAGE_ID(0x2F, 0x001) -#define MSG_PartnerMoveName_Headbonk3 MESSAGE_ID(0x2F, 0x002) -#define MSG_PartnerMoveName_Tattle MESSAGE_ID(0x2F, 0x003) -#define MSG_PartnerMoveName_Charge MESSAGE_ID(0x2F, 0x004) -#define MSG_PartnerMoveName_Multibonk MESSAGE_ID(0x2F, 0x005) -#define MSG_PartnerMoveName_ShellToss1 MESSAGE_ID(0x2F, 0x006) -#define MSG_PartnerMoveName_ShellToss2 MESSAGE_ID(0x2F, 0x007) -#define MSG_PartnerMoveName_ShellToss3 MESSAGE_ID(0x2F, 0x008) -#define MSG_PartnerMoveName_PowerShell MESSAGE_ID(0x2F, 0x009) -#define MSG_PartnerMoveName_DizzyShell MESSAGE_ID(0x2F, 0x00A) -#define MSG_PartnerMoveName_FireShell MESSAGE_ID(0x2F, 0x00B) -#define MSG_PartnerMoveName_BodySlam1 MESSAGE_ID(0x2F, 0x00C) -#define MSG_PartnerMoveName_BodySlam2 MESSAGE_ID(0x2F, 0x00D) -#define MSG_PartnerMoveName_BodySlam3 MESSAGE_ID(0x2F, 0x00E) -#define MSG_PartnerMoveName_Bomb MESSAGE_ID(0x2F, 0x00F) -#define MSG_PartnerMoveName_PowerBomb MESSAGE_ID(0x2F, 0x010) -#define MSG_PartnerMoveName_MegaBomb MESSAGE_ID(0x2F, 0x011) -#define MSG_PartnerMoveName_SkyDive1 MESSAGE_ID(0x2F, 0x012) -#define MSG_PartnerMoveName_SkyDive2 MESSAGE_ID(0x2F, 0x013) -#define MSG_PartnerMoveName_SkyDive3 MESSAGE_ID(0x2F, 0x014) -#define MSG_PartnerMoveName_ShellShot MESSAGE_ID(0x2F, 0x015) -#define MSG_PartnerMoveName_AirLift MESSAGE_ID(0x2F, 0x016) -#define MSG_PartnerMoveName_AirRaid MESSAGE_ID(0x2F, 0x017) -#define MSG_PartnerMoveName_Smack1 MESSAGE_ID(0x2F, 0x018) -#define MSG_PartnerMoveName_Smack2 MESSAGE_ID(0x2F, 0x019) -#define MSG_PartnerMoveName_Smack3 MESSAGE_ID(0x2F, 0x01A) -#define MSG_PartnerMoveName_OuttaSight MESSAGE_ID(0x2F, 0x01B) -#define MSG_PartnerMoveName_Spook MESSAGE_ID(0x2F, 0x01C) -#define MSG_PartnerMoveName_FanSmack MESSAGE_ID(0x2F, 0x01D) -#define MSG_PartnerMoveName_ElectroDash1 MESSAGE_ID(0x2F, 0x01E) -#define MSG_PartnerMoveName_ElectroDash2 MESSAGE_ID(0x2F, 0x01F) -#define MSG_PartnerMoveName_ElectroDash3 MESSAGE_ID(0x2F, 0x020) -#define MSG_PartnerMoveName_PowerShock MESSAGE_ID(0x2F, 0x021) -#define MSG_PartnerMoveName_TurboCharge MESSAGE_ID(0x2F, 0x022) -#define MSG_PartnerMoveName_MegaShock MESSAGE_ID(0x2F, 0x023) -#define MSG_PartnerMoveName_BellyFlop1 MESSAGE_ID(0x2F, 0x024) -#define MSG_PartnerMoveName_BellyFlop2 MESSAGE_ID(0x2F, 0x025) -#define MSG_PartnerMoveName_BellyFlop3 MESSAGE_ID(0x2F, 0x026) -#define MSG_PartnerMoveName_Squirt MESSAGE_ID(0x2F, 0x027) -#define MSG_PartnerMoveName_WaterBlock MESSAGE_ID(0x2F, 0x028) -#define MSG_PartnerMoveName_TidalWave MESSAGE_ID(0x2F, 0x029) -#define MSG_PartnerMoveName_SpinyFlip1 MESSAGE_ID(0x2F, 0x02A) -#define MSG_PartnerMoveName_SpinyFlip2 MESSAGE_ID(0x2F, 0x02B) -#define MSG_PartnerMoveName_SpinyFlip3 MESSAGE_ID(0x2F, 0x02C) -#define MSG_PartnerMoveName_SpinySurge MESSAGE_ID(0x2F, 0x02D) -#define MSG_PartnerMoveName_CloudNine MESSAGE_ID(0x2F, 0x02E) -#define MSG_PartnerMoveName_Hurricane MESSAGE_ID(0x2F, 0x02F) - -#endif diff --git a/ver/jp/splat.yaml b/ver/jp/splat.yaml index 89933e6b02..251e4cf339 100644 --- a/ver/jp/splat.yaml +++ b/ver/jp/splat.yaml @@ -3282,8 +3282,60 @@ segments: - [0x1C7F208, bin ] - start: 0x1D40000 - type: bin - name: pm_msg # TODO: fix message dumping for JP + type: pm_msg + name: msg_jp + files: + - 00_Intro + - 01_Outro + - 02_ToadTownGate + - 03_ToadTownPlaza + - 04_ToadTownBridge + - 05_ToadTownStation + - 06_ToadTownHousing + - 07_ToadTownPort + - 08_Minigame + - 09_CastleGrounds + - 0A_ShootingStarSummit + - 0B_Prologue + - 0C_Chapter1 + - 0D_Chapter2 + - 0E_Chapter3 + - 0F_Chapter4 + - 10_Chapter5 + - 11_Chapter6 + - 12_Chapter7 + - 13_Chapter8 + - 14_Peach + - 15_KootFavors + - 16_RussTHints + - 17_Unused + - 18_Unused + - 19_NewsBoard + - 1A_GossipBoard + - 1B_MapTattles + - 1C_NpcTattles + - 1D_EntityTattles + - 1E_EnemyTattles + - 1F_Unused + - 20_Menus + - 21_Choices + - 22_MenuTips + - 23_Documents + - 24_QuizQuestions + - 25_QuizChoices + - 26_MerlonHints + - 27_MerluvleeHints + - 28_ShortItemDesc + - 29_ShopItemDesc + - 2A_FullItemDesc + - 2B_ItemNames + - 2C_PlayerMoves + - 2D_Shops + - 2E_PartnerDesc + - 2F_PartnerMoves + - 30_TestStrings + - 31_EnemyNames + - 32_Credits - [0x1DDBE60, bin] - [0x1E00000, pm_map_data, mapfs]