#!/usr/bin/env python3 # # message_data_static disassembler/decompiler # import argparse, re, struct from pathlib import Path from typing import Callable, Dict, List, Optional, Tuple, TypeVar T = TypeVar("T") item_ids = { 0x00: "ITEM_OCARINA_OF_TIME", 0x01: "ITEM_BOW", 0x02: "ITEM_ARROW_FIRE", 0x03: "ITEM_ARROW_ICE", 0x04: "ITEM_ARROW_LIGHT", 0x05: "ITEM_OCARINA_FAIRY", 0x06: "ITEM_BOMB", 0x07: "ITEM_BOMBCHU", 0x08: "ITEM_DEKU_STICK", 0x09: "ITEM_DEKU_NUT", 0x0A: "ITEM_MAGIC_BEANS", 0x0B: "ITEM_SLINGSHOT", 0x0C: "ITEM_POWDER_KEG", 0x0D: "ITEM_PICTOGRAPH_BOX", 0x0E: "ITEM_LENS_OF_TRUTH", 0x0F: "ITEM_HOOKSHOT", 0x10: "ITEM_SWORD_GREAT_FAIRY", 0x11: "ITEM_LONGSHOT", 0x12: "ITEM_BOTTLE", 0x13: "ITEM_POTION_RED", 0x14: "ITEM_POTION_GREEN", 0x15: "ITEM_POTION_BLUE", 0x16: "ITEM_FAIRY", 0x17: "ITEM_DEKU_PRINCESS", 0x18: "ITEM_MILK_BOTTLE", 0x19: "ITEM_MILK_HALF", 0x1A: "ITEM_FISH", 0x1B: "ITEM_BUG", 0x1C: "ITEM_BLUE_FIRE", 0x1D: "ITEM_POE", 0x1E: "ITEM_BIG_POE", 0x1F: "ITEM_SPRING_WATER", 0x20: "ITEM_HOT_SPRING_WATER", 0x21: "ITEM_ZORA_EGG", 0x22: "ITEM_GOLD_DUST", 0x23: "ITEM_MUSHROOM", 0x24: "ITEM_SEAHORSE", 0x25: "ITEM_CHATEAU", 0x26: "ITEM_HYLIAN_LOACH", 0x27: "ITEM_OBABA_DRINK", 0x28: "ITEM_MOONS_TEAR", 0x29: "ITEM_DEED_LAND", 0x2A: "ITEM_DEED_SWAMP", 0x2B: "ITEM_DEED_MOUNTAIN", 0x2C: "ITEM_DEED_OCEAN", 0x2D: "ITEM_ROOM_KEY", 0x2E: "ITEM_LETTER_MAMA", 0x2F: "ITEM_LETTER_TO_KAFEI", 0x30: "ITEM_PENDANT_OF_MEMORIES", 0x31: "ITEM_TINGLE_MAP", 0x32: "ITEM_MASK_DEKU", 0x33: "ITEM_MASK_GORON", 0x34: "ITEM_MASK_ZORA", 0x35: "ITEM_MASK_FIERCE_DEITY", 0x36: "ITEM_MASK_TRUTH", 0x37: "ITEM_MASK_KAFEIS_MASK", 0x38: "ITEM_MASK_ALL_NIGHT", 0x39: "ITEM_MASK_BUNNY", 0x3A: "ITEM_MASK_KEATON", 0x3B: "ITEM_MASK_GARO", 0x3C: "ITEM_MASK_ROMANI", 0x3D: "ITEM_MASK_CIRCUS_LEADER", 0x3E: "ITEM_MASK_POSTMAN", 0x3F: "ITEM_MASK_COUPLE", 0x40: "ITEM_MASK_GREAT_FAIRY", 0x41: "ITEM_MASK_GIBDO", 0x42: "ITEM_MASK_DON_GERO", 0x43: "ITEM_MASK_KAMARO", 0x44: "ITEM_MASK_CAPTAIN", 0x45: "ITEM_MASK_STONE", 0x46: "ITEM_MASK_BREMEN", 0x47: "ITEM_MASK_BLAST", 0x48: "ITEM_MASK_SCENTS", 0x49: "ITEM_MASK_GIANT", 0x4A: "ITEM_BOW_FIRE", 0x4B: "ITEM_BOW_ICE", 0x4C: "ITEM_BOW_LIGHT", 0x4D: "ITEM_SWORD_KOKIRI", 0x4E: "ITEM_SWORD_RAZOR", 0x4F: "ITEM_SWORD_GILDED", 0x50: "ITEM_SWORD_DEITY", 0x51: "ITEM_SHIELD_HERO", 0x52: "ITEM_SHIELD_MIRROR", 0x53: "ITEM_QUIVER_30", 0x54: "ITEM_QUIVER_40", 0x55: "ITEM_QUIVER_50", 0x56: "ITEM_BOMB_BAG_20", 0x57: "ITEM_BOMB_BAG_30", 0x58: "ITEM_BOMB_BAG_40", 0x59: "ITEM_WALLET_DEFAULT", 0x5A: "ITEM_WALLET_ADULT", 0x5B: "ITEM_WALLET_GIANT", 0x5C: "ITEM_FISHING_ROD", 0x5D: "ITEM_REMAINS_ODOLWA", 0x5E: "ITEM_REMAINS_GOHT", 0x5F: "ITEM_REMAINS_GYORG", 0x60: "ITEM_REMAINS_TWINMOLD", 0x61: "ITEM_SONG_SONATA", 0x62: "ITEM_SONG_LULLABY", 0x63: "ITEM_SONG_NOVA", 0x64: "ITEM_SONG_ELEGY", 0x65: "ITEM_SONG_OATH", 0x66: "ITEM_SONG_SARIA", 0x67: "ITEM_SONG_TIME", 0x68: "ITEM_SONG_HEALING", 0x69: "ITEM_SONG_EPONA", 0x6A: "ITEM_SONG_SOARING", 0x6B: "ITEM_SONG_STORMS", 0x6C: "ITEM_SONG_SUN", 0x6D: "ITEM_BOMBERS_NOTEBOOK", 0x6E: "ITEM_SKULL_TOKEN", 0x6F: "ITEM_HEART_CONTAINER", 0x70: "ITEM_HEART_PIECE", 0x71: "ITEM_71", 0x72: "ITEM_72", 0x73: "ITEM_SONG_LULLABY_INTRO", 0x74: "ITEM_KEY_BOSS", 0x75: "ITEM_COMPASS", 0x76: "ITEM_DUNGEON_MAP", 0x77: "ITEM_STRAY_FAIRIES", 0x78: "ITEM_KEY_SMALL", 0x79: "ITEM_MAGIC_JAR_SMALL", 0x7A: "ITEM_MAGIC_JAR_BIG", 0x7B: "ITEM_HEART_PIECE_2", 0x7C: "ITEM_INVALID_1", 0x7D: "ITEM_INVALID_2", 0x7E: "ITEM_INVALID_3", 0x7F: "ITEM_INVALID_4", 0x80: "ITEM_INVALID_5", 0x81: "ITEM_INVALID_6", 0x82: "ITEM_INVALID_7", 0x83: "ITEM_RECOVERY_HEART", 0x84: "ITEM_RUPEE_GREEN", 0x85: "ITEM_RUPEE_BLUE", 0x86: "ITEM_RUPEE_10", 0x87: "ITEM_RUPEE_RED", 0x88: "ITEM_RUPEE_PURPLE", 0x89: "ITEM_RUPEE_SILVER", 0x8A: "ITEM_RUPEE_HUGE", 0x8B: "ITEM_DEKU_STICKS_5", 0x8C: "ITEM_DEKU_STICKS_10", 0x8D: "ITEM_DEKU_NUTS_5", 0x8E: "ITEM_DEKU_NUTS_10", 0x8F: "ITEM_BOMBS_5", 0x90: "ITEM_BOMBS_10", 0x91: "ITEM_BOMBS_20", 0x92: "ITEM_BOMBS_30", 0x93: "ITEM_ARROWS_10", 0x94: "ITEM_ARROWS_30", 0x95: "ITEM_ARROWS_40", 0x96: "ITEM_ARROWS_50", 0x97: "ITEM_BOMBCHUS_20", 0x98: "ITEM_BOMBCHUS_10", 0x99: "ITEM_BOMBCHUS_1", 0x9A: "ITEM_BOMBCHUS_5", 0x9B: "ITEM_DEKU_STICK_UPGRADE_20", 0x9C: "ITEM_DEKU_STICK_UPGRADE_30", 0x9D: "ITEM_DEKU_NUT_UPGRADE_30", 0x9E: "ITEM_DEKU_NUT_UPGRADE_40", 0x9F: "ITEM_CHATEAU_2", 0xA0: "ITEM_MILK", 0xA1: "ITEM_GOLD_DUST_2", 0xA2: "ITEM_HYLIAN_LOACH_2", 0xA3: "ITEM_SEAHORSE_CAUGHT", 0xA4: "ITEM_MAP_POINT_GREAT_BAY", 0xA5: "ITEM_MAP_POINT_ZORA_HALL", 0xA6: "ITEM_MAP_POINT_ROMANI_RANCH", 0xA7: "ITEM_MAP_POINT_DEKU_PALACE", 0xA8: "ITEM_MAP_POINT_WOODFALL", 0xA9: "ITEM_MAP_POINT_CLOCK_TOWN", 0xAA: "ITEM_MAP_POINT_SNOWHEAD", 0xAB: "ITEM_MAP_POINT_IKANA_GRAVEYARD", 0xAC: "ITEM_MAP_POINT_IKANA_CANYON", 0xAD: "ITEM_MAP_POINT_GORON_VILLAGE", 0xAE: "ITEM_MAP_POINT_STONE_TOWER", 0xAF: "ITEM_MAP_POINT_GREAT_BAY_COAST", 0xB0: "ITEM_MAP_POINT_SOUTHERN_SWAMP", 0xB1: "ITEM_MAP_POINT_MOUNTAIN_VILLAGE", 0xB2: "ITEM_MAP_POINT_MILK_ROAD", 0xB3: "ITEM_MAP_POINT_ZORA_CAPE", 0xB4: "ITEM_B4", 0xB5: "ITEM_B5", 0xB6: "ITEM_B6", 0xB7: "ITEM_B7", 0xB8: "ITEM_B8", 0xB9: "ITEM_B9", 0xBA: "ITEM_BA", 0xBB: "ITEM_BB", 0xBC: "ITEM_BC", 0xBD: "ITEM_BD", 0xBE: "ITEM_BE", 0xBF: "ITEM_BF", 0xC0: "ITEM_C0", 0xC1: "ITEM_C1", 0xC2: "ITEM_C2", 0xC3: "ITEM_C3", 0xC4: "ITEM_C4", 0xC5: "ITEM_C5", 0xC6: "ITEM_C6", 0xC7: "ITEM_C7", 0xC8: "ITEM_C8", 0xC9: "ITEM_C9", 0xCA: "ITEM_CA", 0xCB: "ITEM_CB", 0xCC: "ITEM_CC", 0xDC: "ITEM_DC", 0xDD: "ITEM_DD", 0xDE: "ITEM_DE", 0xDF: "ITEM_DF", 0xE0: "ITEM_E0", 0xE1: "ITEM_E1", 0xE2: "ITEM_E2", 0xE3: "ITEM_E3", 0xE4: "ITEM_E4", 0xE5: "ITEM_E5", 0xE6: "ITEM_E6", 0xE7: "ITEM_E7", 0xE8: "ITEM_E8", 0xE9: "ITEM_E9", 0xEA: "ITEM_EA", 0xEB: "ITEM_EB", 0xEC: "ITEM_EC", 0xED: "ITEM_ED", 0xEE: "ITEM_EE", 0xEF: "ITEM_EF", 0xF0: "ITEM_F0", 0xF1: "ITEM_F1", 0xF2: "ITEM_F2", 0xFC: "ITEM_FC", 0xFD: "ITEM_FD", 0xFE: "ITEM_FE", 0xFF: "ITEM_NONE", } sfx_ids = { 0x0000: "NA_SE_PL_WALK_GROUND", 0x0001: "NA_SE_PL_WALK_SAND", 0x0002: "NA_SE_PL_WALK_CONCRETE", 0x0003: "NA_SE_PL_WALK_DIRT", 0x0004: "NA_SE_PL_WALK_WATER0", 0x0005: "NA_SE_PL_WALK_WATER1", 0x0006: "NA_SE_PL_WALK_WATER2", 0x0007: "NA_SE_PL_WALK_MAGMA", 0x0008: "NA_SE_PL_WALK_GRASS", 0x0009: "NA_SE_PL_WALK_IRON", 0x000A: "NA_SE_PL_WALK_LADDER", 0x000B: "NA_SE_PL_WALK_GLASS", 0x000C: "NA_SE_PL_WALK_METAL1", 0x000D: "NA_CODE_DIRT_DEEP", 0x000E: "NA_SE_PL_WALK_SNOW", 0x000F: "NA_SE_PL_WALK_ICE", 0x0010: "NA_SE_PL_JUMP_GROUND", 0x0011: "NA_SE_PL_JUMP_SAND", 0x0012: "NA_SE_PL_JUMP_CONCRETE", 0x0013: "NA_SE_PL_JUMP_DIRT", 0x0014: "NA_SE_PL_JUMP_WATER0", 0x0015: "NA_SE_PL_JUMP_WATER1", 0x0016: "NA_SE_PL_JUMP_WATER2", 0x0017: "NA_SE_PL_JUMP_MAGMA", 0x0018: "NA_SE_PL_JUMP_GRASS", 0x0019: "NA_SE_PL_JUMP_IRON", 0x001A: "NA_SE_PL_JUMP_LADDER", 0x001B: "NA_SE_PL_JUMP_GLASS", 0x001C: "NA_SE_PL_DUMMY_28", 0x001D: "NA_SE_PL_JUMP_HEAVYBOOTS", 0x001E: "NA_SE_PL_JUMP_SNOW", 0x001F: "NA_SE_PL_JUMP_ICE", 0x0020: "NA_SE_PL_LAND_GROUND", 0x0021: "NA_SE_PL_LAND_SAND", 0x0022: "NA_SE_PL_LAND_CONCRETE", 0x0023: "NA_SE_PL_LAND_DIRT", 0x0024: "NA_SE_PL_LAND_WATER0", 0x0025: "NA_SE_PL_LAND_WATER1", 0x0026: "NA_SE_PL_LAND_WATER2", 0x0027: "NA_SE_PL_LAND_MAGMA", 0x0028: "NA_SE_PL_LAND_GRASS", 0x0029: "NA_SE_PL_LAND_IRON", 0x002A: "NA_SE_PL_LAND_LADDER", 0x002B: "NA_SE_PL_LAND_GLASS", 0x002C: "NA_SE_PL_DUMMY_44", 0x002D: "NA_SE_PL_LAND_HEAVYBOOTS", 0x002E: "NA_SE_PL_LAND_SNOW", 0x002F: "NA_SE_PL_LAND_ICE", 0x0030: "NA_SE_PL_SLIPDOWN", 0x0031: "NA_SE_PL_CLIMB_CLIFF", 0x0032: "NA_SE_PL_SIT_ON_HORSE", 0x0033: "NA_SE_PL_GET_OFF_HORSE", 0x0034: "NA_SE_PL_TAKE_OUT_SHIELD", 0x0035: "NA_SE_PL_CHANGE_ARMS", 0x0036: "NA_SE_PL_CATCH_BOOMERANG", 0x0037: "NA_SE_PL_DIVE_INTO_WATER", 0x0038: "NA_SE_PL_JUMP_OUT_WATER", 0x0039: "NA_SE_PL_SWIM", 0x003A: "NA_SE_PL_THROW", 0x003B: "NA_SE_PL_BODY_BOUND", 0x003C: "NA_SE_PL_ROLL", 0x003D: "NA_SE_PL_SKIP", 0x003E: "NA_SE_PL_BODY_HIT", 0x003F: "NA_SE_PL_DAMAGE", 0x0040: "NA_SE_PL_SLIP", 0x0041: "NA_SE_PL_SLIP_SAND", 0x0042: "NA_SE_PL_SLIP_CONCRETE", 0x0043: "NA_SE_PL_SLIP_DIRT", 0x0044: "NA_SE_PL_SLIP_WATER0", 0x0045: "NA_SE_PL_SLIP_WATER1", 0x0046: "NA_SE_PL_SLIP_WATER2", 0x0047: "NA_SE_PL_SLIP_MAGMA", 0x0048: "NA_SE_PL_SLIP_GRASS", 0x0049: "NA_SE_PL_SLIP_IRON", 0x004A: "NA_SE_PL_SLIP_LADDER", 0x004B: "NA_SE_PL_SLIP_GLASS", 0x004C: "NA_SE_PL_DUMMY76", 0x004D: "NA_SE_PL_SLIP_HEAVYBOOTS", 0x004E: "NA_SE_PL_SLIP_SNOW", 0x004F: "NA_SE_PL_SLIP_ICE", 0x0050: "NA_SE_PL_BOUND", 0x0051: "NA_SE_PL_BOUND_SAND", 0x0052: "NA_SE_PL_BOUND_CONCRETE", 0x0053: "NA_SE_PL_BOUND_DIRT", 0x0054: "NA_SE_PL_BOUND_WATER0", 0x0055: "NA_SE_PL_BOUND_WATER1", 0x0056: "NA_SE_PL_BOUND_WATER2", 0x0057: "NA_SE_PL_BOUND_MAGMA", 0x0058: "NA_SE_PL_BOUND_GRASS", 0x0059: "NA_SE_PL_BOUND_IRON", 0x005A: "NA_SE_PL_BOUND_LADDER", 0x005B: "NA_SE_PL_BOUND_WOOD", 0x005C: "NA_SE_PL_DUMMY_92", 0x005D: "NA_SE_PL_BOUND_HEAVYBOOTS", 0x005E: "NA_SE_PL_BOUND_SNOW", 0x005F: "NA_SE_PL_BOUND_ICE", 0x0060: "NA_SE_PL_BOW_DRAW", 0x0061: "NA_SE_PL_MEATL_BOOTS_JUMP", 0x0062: "NA_SE_PL_DUMMY_98", 0x0063: "NA_SE_PL_FACE_UP", 0x0064: "NA_SE_PL_DIVE_BUBBLE", 0x0065: "NA_SE_PL_MOVE_BUBBLE", 0x0066: "NA_SE_PL_METALEFFECT_KID", 0x0067: "NA_SE_PL_METALEFFECT_ADULT", 0x0068: "NA_SE_PL_SPARK", 0x0069: "NA_SE_PL_PULL_UP_PLANT", 0x006A: "NA_SE_PL_PULL_UP_ROCK", 0x006B: "NA_SE_PL_IN_BUBBLE", 0x006C: "NA_SE_PL_PULL_UP_BIGROCK", 0x006D: "NA_SE_PL_SWORD_CHARGE", 0x006E: "NA_SE_PL_FREEZE", 0x006F: "NA_SE_PL_PULL_UP_POT", 0x0070: "NA_SE_PL_KNOCK", 0x0071: "NA_SE_PL_CALM_HIT", 0x0072: "NA_SE_PL_CALM_PAT", 0x0073: "NA_SE_PL_SUBMERGE", 0x0074: "NA_SE_PL_FREEZE_S", 0x0075: "NA_SE_PL_ICE_BROKEN", 0x0076: "NA_SE_PL_SLIP_ICE_LELEL", 0x0077: "NA_SE_PL_PUT_OUT_ITEM", 0x0078: "NA_SE_PL_PULL_UP_WOODBOX", 0x0079: "NA_SE_PL_MAGIC_FIRE", 0x007A: "NA_SE_PL_MAGIC_WIND_NORMAL", 0x007B: "NA_SE_PL_MAGIC_WIND_WARP", 0x007C: "NA_SE_PL_MAGIC_SOUL_NORMAL", 0x007D: "NA_SE_PL_ARROW_CHARGE_FIRE", 0x007E: "NA_SE_PL_ARROW_CHARGE_ICE", 0x007F: "NA_SE_PL_ARROW_CHARGE_LIGHT", 0x0080: "NA_SE_DUMMY_128", 0x0081: "NA_SE_DUMMY_129", 0x0082: "NA_SE_DUMMY_130", 0x0083: "NA_SE_PL_PULL_UP_RUTO", 0x0084: "NA_SE_DUMMY_132", 0x0085: "NA_SE_DUMMY_133", 0x0086: "NA_SE_DUMMY_134", 0x0087: "NA_SE_DUMMY_135", 0x0088: "NA_SE_DUMMY_136", 0x0089: "NA_SE_DUMMY_137", 0x008A: "NA_SE_DUMMY_138", 0x008B: "NA_SE_DUMMY_139", 0x008C: "NA_SE_DUMMY_140", 0x008D: "NA_SE_DUMMY_141", 0x008E: "NA_SE_DUMMY_142", 0x008F: "NA_SE_DUMMY_143", 0x0090: "NA_SE_DUMMY_144", 0x0091: "NA_SE_DUMMY_145", 0x0092: "NA_SE_DUMMY_146", 0x0093: "NA_SE_DUMMY_147", 0x0094: "NA_SE_DUMMY_148", 0x0095: "NA_SE_DUMMY_149", 0x0096: "NA_SE_DUMMY_150", 0x0097: "NA_SE_DUMMY_151", 0x0098: "NA_SE_DUMMY_152", 0x0099: "NA_SE_DUMMY_153", 0x009A: "NA_SE_DUMMY_154", 0x009B: "NA_SE_DUMMY_155", 0x009C: "NA_SE_DUMMY_156", 0x009D: "NA_SE_DUMMY_157", 0x009E: "NA_SE_DUMMY_158", 0x009F: "NA_SE_DUMMY_159", 0x00A0: "NA_SE_DUMMY_160", 0x00A1: "NA_SE_DUMMY_161", 0x00A2: "NA_SE_DUMMY_162", 0x00A3: "NA_SE_DUMMY_163", 0x00A4: "NA_SE_DUMMY_164", 0x00A5: "NA_SE_DUMMY_165", 0x00A6: "NA_SE_DUMMY_166", 0x00A7: "NA_SE_DUMMY_167", 0x00A8: "NA_SE_DUMMY_168", 0x00A9: "NA_SE_DUMMY_169", 0x00AA: "NA_SE_DUMMY_170", 0x00AB: "NA_SE_DUMMY_171", 0x00AC: "NA_SE_DUMMY_172", 0x00AD: "NA_SE_DUMMY_173", 0x00AE: "NA_SE_DUMMY_174", 0x00AF: "NA_SE_DUMMY_175", 0x00B0: "NA_SE_PL_CRAWL", 0x00B1: "NA_SE_PL_CRAWL_SAND", 0x00B2: "NA_SE_PL_CRAWL_CONCRETE", 0x00B3: "NA_SE_PL_CRAWL_DIRT", 0x00B4: "NA_SE_PL_CRAWL_WATER0", 0x00B5: "NA_SE_DUMMY_181", 0x00B6: "NA_SE_DUMMY_182", 0x00B7: "NA_SE_DUMMY_183", 0x00B8: "NA_SE_DUMMY_184", 0x00B9: "NA_SE_DUMMY_185", 0x00BA: "NA_SE_DUMMY_186", 0x00BB: "NA_SE_PL_CRAWL_WOOD", 0x00BC: "NA_SE_DUMMY_188", 0x00BD: "NA_SE_DUMMY_189", 0x00BE: "NA_SE_DUMMY_190", 0x00BF: "NA_SE_PL_CRAWL_ICE", 0x00C0: "NA_SE_PL_MAGIC_SOUL_FLASH", 0x00C1: "NA_SE_PL_ROLL_DUST", 0x00C2: "NA_SE_DUMMY_194", 0x00C3: "NA_SE_PL_MAGIC_SOUL_BALL", 0x00C4: "NA_SE_PL_SPIRAL_HEAL_BEAM", 0x00C5: "NA_SE_PL_BOUND_NOWEAPON", 0x00C6: "NA_SE_PL_PLANT_GROW_UP", 0x00C7: "NA_SE_PL_PLANT_TALLER", 0x00C8: "NA_SE_PL_MAGIC_WIND_VANISH", 0x00C9: "NA_SE_PL_HOBBERBOOTS_LV", 0x00CA: "NA_SE_PL_PLANT_MOVE", 0x00CB: "NA_SE_EV_WALL_MOVE_SP", 0x00CC: "NA_SE_PL_PLANT_GROW_BIG", 0x00CD: "NA_SE_PL_TELESCOPE_MOVEMENT", 0x00CE: "NA_SE_PL_GIANT_WALK", 0x00CF: "NA_SE_PL_CHIBI_FAIRY_HEAL", 0x00D0: "NA_SE_PL_SLIP_LEVEL", 0x00D1: "NA_SE_PL_SLIP_SAND_LEVEL", 0x00D2: "NA_SE_PL_SLIP_CONCRETE_LEVEL", 0x00D3: "NA_SE_PL_SLIP_DIRT_LEVEL", 0x00D4: "NA_SE_PL_SLIP_WATER0_LEVEL", 0x00D5: "NA_SE_PL_SLIP_WATER1_LEVEL", 0x00D6: "NA_SE_PL_SLIP_WATER2_LEVEL", 0x00D7: "NA_SE_PL_SLIP_MAGMA_LEVEL", 0x00D8: "NA_SE_PL_SLIP_GRASS_LEVEL", 0x00D9: "NA_SE_PL_SLIP_IRON_LEVEL", 0x00DA: "NA_SE_PL_SLIP_LADDER_LEVEL", 0x00DB: "NA_SE_PL_SLIP_GLASS_LEVEL", 0x00DC: "NA_SE_PL_DUMMY_220", 0x00DD: "NA_SE_PL_SLIP_HEAVYBOOTS_LEVEL", 0x00DE: "NA_SE_PL_DUMMY_222", 0x00DF: "NA_SE_PL_SLIP_ICE_LEVEL", 0x00E0: "NA_SE_PL_DEKUNUTS_FIRE", 0x00E1: "NA_SE_PL_GORON_BALLJUMP", 0x00E2: "NA_SE_PL_DEKUNUTS_IN_GRD", 0x00E3: "NA_SE_PL_DEKUNUTS_OUT_GRD", 0x00E4: "NA_SE_PL_TRANSFORM", 0x00E5: "NA_SE_PL_TRANSFORM_DEMO", 0x00E6: "NA_SE_PL_GORON_TO_BALL", 0x00E7: "NA_SE_PL_BALL_TO_GORON", 0x00E8: "NA_SE_PL_GORON_PUNCH", 0x00E9: "NA_SE_PL_SINK_ON_SAND", 0x00EA: "NA_SE_PL_SINK_ON_SNOW", 0x00EB: "NA_SE_PL_GORON_BALL_CHARGE", 0x00EC: "NA_SE_PL_ZORA_SWIM_DASH", 0x00ED: "NA_SE_PL_ZORA_SWIM_LV", 0x00EE: "NA_SE_PL_ZORA_SWIM_ROLL", 0x00EF: "NA_SE_PL_GORON_SQUAT", 0x00F0: "NA_SE_PL_DUMMY_240", 0x00F1: "NA_SE_PL_DUMMY_241", 0x00F2: "NA_SE_PL_DUMMY_242", 0x00F3: "NA_SE_PL_DUMMY_243", 0x00F4: "NA_SE_PL_DUMMY_244", 0x00F5: "NA_SE_PL_DUMMY_245", 0x00F6: "NA_SE_PL_DUMMY_246", 0x00F7: "NA_SE_PL_DUMMY_247", 0x00F8: "NA_SE_PL_DUMMY_248", 0x00F9: "NA_SE_PL_DUMMY_249", 0x00FA: "NA_SE_PL_DUMMY_250", 0x00FB: "NA_SE_PL_DUMMY_251", 0x00FC: "NA_SE_PL_DUMMY_252", 0x00FD: "NA_SE_PL_DUMMY_253", 0x00FE: "NA_SE_PL_DUMMY_254", 0x00FF: "NA_SE_PL_DUMMY_255", 0x0100: "NA_SE_PL_DUMMY_256", 0x0101: "NA_SE_PL_DUMMY_257", 0x0102: "NA_SE_PL_DUMMY_258", 0x0103: "NA_SE_PL_DUMMY_259", 0x0104: "NA_SE_PL_DUMMY_260", 0x0105: "NA_SE_PL_DUMMY_261", 0x0106: "NA_SE_PL_DUMMY_262", 0x0107: "NA_SE_PL_DUMMY_263", 0x0108: "NA_SE_PL_DUMMY_264", 0x0109: "NA_SE_PL_DUMMY_265", 0x010A: "NA_SE_PL_DUMMY_266", 0x010B: "NA_SE_PL_DUMMY_267", 0x010C: "NA_SE_PL_DUMMY_268", 0x010D: "NA_SE_PL_DUMMY_269", 0x010E: "NA_SE_PL_DUMMY_270", 0x010F: "NA_SE_PL_DUMMY_271", 0x0110: "NA_SE_PL_DUMMY_272", 0x0111: "NA_SE_PL_DUMMY_273", 0x0112: "NA_SE_PL_DUMMY_274", 0x0113: "NA_SE_PL_DUMMY_275", 0x0114: "NA_SE_PL_DUMMY_276", 0x0115: "NA_SE_PL_DUMMY_277", 0x0116: "NA_SE_PL_DUMMY_278", 0x0117: "NA_SE_PL_DUMMY_279", 0x0118: "NA_SE_PL_DUMMY_280", 0x0119: "NA_SE_PL_DUMMY_281", 0x011A: "NA_SE_PL_DUMMY_282", 0x011B: "NA_SE_PL_DUMMY_283", 0x011C: "NA_SE_PL_DUMMY_284", 0x011D: "NA_SE_PL_DUMMY_285", 0x011E: "NA_SE_PL_DUMMY_286", 0x011F: "NA_SE_PL_DUMMY_287", 0x0120: "NA_SE_PL_DUMMY_288", 0x0121: "NA_SE_PL_DUMMY_289", 0x0122: "NA_SE_PL_DUMMY_290", 0x0123: "NA_SE_PL_DUMMY_291", 0x0124: "NA_SE_PL_DUMMY_292", 0x0125: "NA_SE_PL_DUMMY_293", 0x0126: "NA_SE_PL_DUMMY_294", 0x0127: "NA_SE_PL_DUMMY_295", 0x0128: "NA_SE_PL_DUMMY_296", 0x0129: "NA_SE_PL_DUMMY_297", 0x012A: "NA_SE_PL_DUMMY_298", 0x012B: "NA_SE_PL_DUMMY_299", 0x012C: "NA_SE_PL_DUMMY_300", 0x012D: "NA_SE_PL_DUMMY_301", 0x012E: "NA_SE_PL_DUMMY_302", 0x012F: "NA_SE_PL_DUMMY_303", 0x0130: "NA_SE_PL_DUMMY_304", 0x0131: "NA_SE_PL_DUMMY_305", 0x0132: "NA_SE_PL_DUMMY_306", 0x0133: "NA_SE_PL_DUMMY_307", 0x0134: "NA_SE_PL_DUMMY_308", 0x0135: "NA_SE_PL_DUMMY_309", 0x0136: "NA_SE_PL_DUMMY_310", 0x0137: "NA_SE_PL_DUMMY_311", 0x0138: "NA_SE_PL_DUMMY_312", 0x0139: "NA_SE_PL_DUMMY_313", 0x013A: "NA_SE_PL_DUMMY_314", 0x013B: "NA_SE_PL_DUMMY_315", 0x013C: "NA_SE_PL_DUMMY_316", 0x013D: "NA_SE_PL_DUMMY_317", 0x013E: "NA_SE_PL_DUMMY_318", 0x013F: "NA_SE_PL_DUMMY_319", 0x0140: "NA_SE_PL_DUMMY_320", 0x0141: "NA_SE_PL_DUMMY_321", 0x0142: "NA_SE_PL_DUMMY_322", 0x0143: "NA_SE_PL_DUMMY_323", 0x0144: "NA_SE_PL_DUMMY_324", 0x0145: "NA_SE_PL_DUMMY_325", 0x0146: "NA_SE_PL_DUMMY_326", 0x0147: "NA_SE_PL_DUMMY_327", 0x0148: "NA_SE_PL_DUMMY_328", 0x0149: "NA_SE_PL_DUMMY_329", 0x014A: "NA_SE_PL_DUMMY_330", 0x014B: "NA_SE_PL_DUMMY_331", 0x014C: "NA_SE_PL_DUMMY_332", 0x014D: "NA_SE_PL_DUMMY_333", 0x014E: "NA_SE_PL_DUMMY_334", 0x014F: "NA_SE_PL_DUMMY_335", 0x0150: "NA_SE_PL_DUMMY_336", 0x0151: "NA_SE_PL_DUMMY_337", 0x0152: "NA_SE_PL_DUMMY_338", 0x0153: "NA_SE_PL_DUMMY_339", 0x0154: "NA_SE_PL_DUMMY_340", 0x0155: "NA_SE_PL_DUMMY_341", 0x0156: "NA_SE_PL_DUMMY_342", 0x0157: "NA_SE_PL_DUMMY_343", 0x0158: "NA_SE_PL_DUMMY_344", 0x0159: "NA_SE_PL_DUMMY_345", 0x015A: "NA_SE_PL_DUMMY_346", 0x015B: "NA_SE_PL_DUMMY_347", 0x015C: "NA_SE_PL_DUMMY_348", 0x015D: "NA_SE_PL_DUMMY_349", 0x015E: "NA_SE_PL_DUMMY_350", 0x015F: "NA_SE_PL_DUMMY_351", 0x0160: "NA_SE_EV_MARATHONMAN_RISE", 0x0161: "NA_SE_PL_DUMMY_353", 0x0162: "NA_SE_PL_DUMMY_354", 0x0163: "NA_SE_PL_DUMMY_355", 0x0164: "NA_SE_PL_DUMMY_356", 0x0165: "NA_SE_PL_DUMMY_357", 0x0166: "NA_SE_PL_DUMMY_358", 0x0167: "NA_SE_PL_DUMMY_359", 0x0168: "NA_SE_PL_DUMMY_360", 0x0169: "NA_SE_PL_DUMMY_361", 0x016A: "NA_SE_PL_DUMMY_362", 0x016B: "NA_SE_PL_DUMMY_363", 0x016C: "NA_SE_PL_DUMMY_364", 0x016D: "NA_SE_PL_DUMMY_365", 0x016E: "NA_SE_PL_DUMMY_366", 0x016F: "NA_SE_PL_DUMMY_367", 0x0170: "NA_SE_EV_MARATHONMAN_LAND", 0x0171: "NA_SE_PL_DUMMY_369", 0x0172: "NA_SE_PL_DUMMY_370", 0x0173: "NA_SE_PL_DUMMY_371", 0x0174: "NA_SE_PL_DUMMY_372", 0x0175: "NA_SE_PL_DUMMY_373", 0x0176: "NA_SE_PL_DUMMY_374", 0x0177: "NA_SE_PL_DUMMY_375", 0x0178: "NA_SE_PL_DUMMY_376", 0x0179: "NA_SE_PL_DUMMY_377", 0x017A: "NA_SE_PL_DUMMY378", 0x017B: "NA_SE_PL_DUMMY_379", 0x017C: "NA_SE_PL_DUMMY_380", 0x017D: "NA_SE_PL_DUMMY_381", 0x017E: "NA_SE_PL_DUMMY_382", 0x017F: "NA_SE_PL_DUMMY_383", 0x0180: "NA_SE_PL_GORON_CHG_ROLL", 0x0181: "NA_SE_PL_DUMMY_385", 0x0182: "NA_SE_PL_DUMMY_386", 0x0183: "NA_SE_PL_DUMMY_387", 0x0184: "NA_SE_PL_DUMMY_388", 0x0185: "NA_SE_PL_DUMMY_389", 0x0186: "NA_SE_PL_DUMMY_390", 0x0187: "NA_SE_PL_DUMMY_391", 0x0188: "NA_SE_PL_DUMMY_392", 0x0189: "NA_SE_PL_DUMMY_393", 0x018A: "NA_SE_PL_DUMMY_394", 0x018B: "NA_SE_PL_DUMMY_395", 0x018C: "NA_SE_PL_DUMMY_396", 0x018D: "NA_SE_PL_DUMMY_397", 0x018E: "NA_SE_PL_DUMMY_398", 0x018F: "NA_SE_PL_GORON_CHG_ROLL_ICE", 0x0190: "NA_SE_PL_GORON_ROLL", 0x0191: "NA_SE_PL_DUMMY_401", 0x0192: "NA_SE_PL_DUMMY_402", 0x0193: "NA_SE_PL_DUMMY_403", 0x0194: "NA_SE_PL_DUMMY_404", 0x0195: "NA_SE_PL_DUMMY_405", 0x0196: "NA_SE_PL_DUMMY_406", 0x0197: "NA_SE_PL_DUMMY_407", 0x0198: "NA_SE_PL_DUMMY_408", 0x0199: "NA_SE_PL_DUMMY_409", 0x019A: "NA_SE_PL_DUMMY_410", 0x019B: "NA_SE_PL_DUMMY_411", 0x019C: "NA_SE_PL_DUMMY_412", 0x019D: "NA_SE_PL_DUMMY_413", 0x019E: "NA_SE_PL_DUMMY_414", 0x019F: "NA_SE_PL_GORON_ROLL_ICE", 0x01A0: "NA_SE_PL_DEKUNUTS_BUD", 0x01A1: "NA_SE_PL_DEKUNUTS_BUBLE_BREATH", 0x01A2: "NA_SE_PL_GORON_BALL_CHARGE_FAILED", 0x01A3: "NA_SE_PL_GORON_BALL_CHARGE_DASH", 0x01A4: "NA_SE_PL_FACE_CHANGE", 0x01A5: "NA_SE_PL_FACE_UP_S", 0x01A6: "NA_SE_PL_DEKUNUTS_STRUGGLE", 0x01A7: "NA_SE_PL_WARP_PLATE", 0x01A8: "NA_SE_PL_WARP_PLATE_OUT", 0x01A9: "NA_SE_PL_DEKUNUTS_ATTACK", 0x01AA: "NA_SE_PL_TRANSFORM_VOICE", 0x01AB: "NA_SE_PL_FACE_RETURN", 0x01AC: "NA_SE_PL_DEKUNUTS_DROP_BOMB", 0x01AD: "NA_SE_PL_GORON_SLIP", 0x01AE: "NA_SE_PL_ROLL_SNOW_DUST", 0x01AF: "NA_SE_PL_ZORA_SPARK_BARRIER", 0x01B0: "NA_SE_PL_DEKUNUTS_JUMP", 0x01B1: "NA_SE_PL_DEKUNUTS_JUMP2", 0x01B2: "NA_SE_PL_DEKUNUTS_JUMP3", 0x01B3: "NA_SE_PL_DEKUNUTS_JUMP4", 0x01B4: "NA_SE_PL_DEKUNUTS_JUMP5", 0x01B5: "NA_SE_PL_DEKUNUTS_JUMP6", 0x01B6: "NA_SE_PL_DEKUNUTS_JUMP7", 0x01B7: "NA_SE_PL_DEKUNUTS_JUMP8", 0x01B8: "NA_SE_PL_GORON_STOMACH_EXPLOSION", 0x01B9: "NA_SE_PL_GORON_DRINK_BOMB", 0x01BA: "NA_SE_PL_GET_UP", 0x01BB: "NA_SE_PL_WARP_WING_OPEN", 0x01BC: "NA_SE_PL_WARP_WING_CLOSE", 0x01BD: "NA_SE_PL_WARP_WING_ROLL", 0x01BE: "NA_SE_PL_WARP_WING_VANISH", 0x01BF: "NA_SE_PL_DEKUNUTS_MISS_FIRE", 0x01C0: "NA_SE_PL_FLYING_AIR", 0x01C1: "NA_SE_PL_FIREWORKS", 0x01C2: "NA_SE_PL_FIREWORKS_DUMMY", 0x01C3: "NA_SE_PL_PULL_UP_SNOWBALL", 0x01C4: "NA_SE_PL_WARP_WING_ROLL_2", 0x01C5: "NA_SE_PL_TRANSFORM_GIANT", 0x01C6: "NA_SE_PL_TRANSFORM_NORAML", 0x01C7: "NA_SE_PL_LI_OKARINATORI", 0x01C8: "NA_SE_PL_LI_FUTTOBI", 0x01C9: "NA_SE_PL_LI_OP_OKIAGARI", 0x01CA: "NA_SE_PL_LI_OP_TATIAGARI", 0x01CB: "NA_SE_PL_JUMP_METAL", 0x01CC: "NA_SE_PL_LAND_METAL", 0x01CD: "NA_SE_PL_BOUND_METAL", 0x01CE: "NA_SE_PL_WALK_WALL", 0x01CF: "NA_SE_PL_WALK_WALL_DEKU", 0x1000: "NA_SE_IT_SWORD_IMPACT", 0x1001: "NA_SE_IT_SWORD_SWING", 0x1002: "NA_SE_IT_SWORD_PUTAWAY", 0x1003: "NA_SE_IT_SWORD_PICKOUT", 0x1004: "NA_SE_IT_ARROW_SHOT", 0x1005: "NA_SE_IT_BOOMERANG_THROW", 0x1006: "NA_SE_IT_SHIELD_BOUND", 0x1007: "NA_SE_IT_BOW_DRAW", 0x1008: "NA_SE_IT_SHIELD_REFLECT_SW", 0x1009: "NA_SE_IT_ARROW_STICK_HRAD", 0x100A: "NA_SE_IT_HAMMER_HIT", 0x100B: "NA_SE_IT_HOOKSHOT_CHAIN", 0x100C: "NA_SE_IT_SHIELD_REFLECT_MG", 0x100D: "NA_SE_IT_BOMB_IGNIT", 0x100E: "NA_SE_IT_BOMB_EXPLOSION", 0x100F: "NA_SE_IT_BOMB_UNEXPLOSION", 0x1010: "NA_SE_IT_BOOMERANG_FLY", 0x1011: "NA_SE_IT_SWORD_STRIKE", 0x1012: "NA_SE_IT_HAMMER_SWING", 0x1013: "NA_SE_IT_HOOKSHOT_REFLECT", 0x1014: "NA_SE_IT_HOOKSHOT_STICK_CRE", 0x1015: "NA_SE_IT_ARROW_STICK_OBJ", 0x1016: "NA_SE_IT_SWORD_SLASH", 0x1017: "NA_SE_IT_SWORD_SLASH_HARD", 0x1018: "NA_SE_IT_SWORD_SWING_HARD", 0x1019: "NA_SE_IT_BOMB_BOUND", 0x101A: "NA_SE_IT_WALL_HIT_HARD", 0x101B: "NA_SE_IT_WALL_HIT_SOFT", 0x101C: "NA_SE_IT_STONE_HIT", 0x101D: "NA_SE_IT_WOODSTICK_BROKEN", 0x101E: "NA_SE_IT_LASH", 0x101F: "NA_SE_IT_SHIELD_SWING", 0x1020: "NA_SE_IT_SLING_SHOT", 0x1021: "NA_SE_IT_SLING_DRAW", 0x1022: "NA_SE_IT_SWORD_CHARGE", 0x1023: "NA_SE_IT_ROLLING_CUT", 0x1024: "NA_SE_IT_SWORD_STRIKE_HARD", 0x1025: "NA_SE_IT_SLING_REFLECT", 0x1026: "NA_SE_IT_SHIELD_REMOVE", 0x1027: "NA_SE_IT_HOOKSHOT_READY", 0x1028: "NA_SE_IT_HOOKSHOT_RECEIVE", 0x1029: "NA_SE_IT_HOOKSHOT_STICK_OBJ", 0x102A: "NA_SE_IT_SWORD_REFLECT_MG", 0x102B: "NA_SE_IT_DEKU", 0x102C: "NA_SE_IT_WALL_HIT_BUYO", 0x102D: "NA_SE_IT_SWORD_PUTAWAY_STN", 0x102E: "NA_SE_IT_ROLLING_CUT_LV1", 0x102F: "NA_SE_IT_ROLLING_CUT_LV2", 0x1030: "NA_SE_IT_BOW_FLICK", 0x1031: "NA_SE_IT_BOMBCHU_MOVE", 0x1032: "NA_SE_IT_SHIELD_CHARGE_LV1", 0x1033: "NA_SE_IT_SHIELD_CHARGE_LV2", 0x1034: "NA_SE_IT_SHIELD_CHARGE_LV3", 0x1035: "NA_SE_IT_SLING_FLICK", 0x1036: "NA_SE_IT_SWORD_STICK_STN", 0x1037: "NA_SE_IT_REFLECTION_WOOD", 0x1038: "NA_SE_IT_SHIELD_REFLECT_MG2", 0x1039: "NA_SE_IT_MAGIC_ARROW_SHOT", 0x103A: "NA_SE_IT_EXPLOSION_FRAME", 0x103B: "NA_SE_IT_EXPLOSION_ICE", 0x103C: "NA_SE_IT_EXPLOSION_LIGHT", 0x103D: "NA_SE_IT_FISHING_REEL_SLOW", 0x103E: "NA_SE_IT_FISHING_REEL_HIGH", 0x103F: "NA_SE_IT_PULL_FISHING_ROD", 0x1040: "NA_SE_IT_DM_FLYING_GOD_PASS", 0x1041: "NA_SE_IT_DM_FLYING_GOD_DASH", 0x1042: "NA_SE_IT_DM_RING_EXPLOSION", 0x1043: "NA_SE_IT_DM_RING_GATHER", 0x1044: "NA_SE_IT_INGO_HORSE_NEIGH", 0x1045: "NA_SE_IT_EARTHQUAKE", 0x1046: "NA_SE_IT_ERUPTION_PILLAR", 0x1047: "NA_SE_IT_KAKASHI_JUMP", 0x1048: "NA_SE_IT_FLAME", 0x1049: "NA_SE_IT_SHIELD_BEAM", 0x104A: "NA_SE_IT_FISHING_HIT", 0x104B: "NA_SE_IT_GOODS_APPEAR", 0x104C: "NA_SE_IT_MAJIN_SWORD_BROKEN", 0x104D: "NA_SE_IT_HAND_CLAP", 0x104E: "NA_SE_IT_MASTER_SWORD_SWING", 0x104F: "NA_SE_IT_GORON_BALLFANG", 0x1050: "NA_SE_IT_DEKUNUTS_FLOWER_OPEN", 0x1051: "NA_SE_IT_DEKUNUTS_FLOWER_ROLL", 0x1052: "NA_SE_IT_DEKUNUTS_FLOWER_CLOSE", 0x1053: "NA_SE_IT_DEKUNUTS_BUBLE_BROKEN", 0x1054: "NA_SE_IT_DEKUNUTS_BUBLE_VANISH", 0x1055: "NA_SE_IT_DEKUNUTS_DROP_BOMB", 0x1056: "NA_SE_IT_SET_TRANSFORM_MASK", 0x1057: "NA_SE_IT_GORON_PUNCH_SWING", 0x1058: "NA_SE_IT_TRANSFORM_MASK_BROKEN", 0x1059: "NA_SE_IT_ZORA_KICK_SWING", 0x105A: "NA_SE_IT_DEKUNUTS_BUBLE_SHOT_LEVEL", 0x105B: "NA_SE_IT_BIG_BOMB_IGNIT", 0x105C: "NA_SE_IT_BIG_BOMB_EXPLOSION", 0x105D: "NA_SE_IT_REFLECTION_SNOW", 0x105E: "NA_SE_IT_GORON_ROLLING_REFLECTION", 0x105F: "NA_SE_IT_MASK_BOUND_0", 0x1060: "NA_SE_IT_MASK_BOUND_1", 0x1061: "NA_SE_IT_MASK_BOUND_SAND", 0x1062: "NA_SE_IT_REFLECTION_WATER", 0x1063: "NA_SE_IT_KYOJIN_BEARING", 0x1064: "NA_SE_FISHING_REEL_SLOW2", 0x1065: "NA_SE_IT_LURE_LAND1", 0x1066: "NA_SE_IT_ROD_THROW", 0x1067: "NA_SE_IT_REFLECT_BOSS", 0x1068: "NA_SE_IT_SHIELD_SWING_ZORA", 0x1069: "NA_SE_IT_SHIELD_REMOVE_ZORA", 0x106A: "NA_SE_IT_BOMB_EXPLOSION2", 0x106B: "NA_SE_IT_FISHING_REEL_REVERSE", 0x106C: "NA_SE_IT_FISHING_WORM_BOUND", 0x106D: "NA_SE_IT_DUMMY_109", 0x106E: "NA_SE_IT_DUMMY_110", 0x106F: "NA_SE_IT_DUMMY_111", 0x2000: "NA_SE_EV_DOOR_OPEN", 0x2001: "NA_SE_EV_DOOR_CLOSE", 0x2002: "NA_SE_EV_EXPLOSION", 0x2003: "NA_SE_EV_HORSE_WALK", 0x2004: "NA_SE_EV_HORSE_RUN", 0x2005: "NA_SE_EV_HORSE_NEIGH", 0x2006: "NA_SE_EV_RIVER_STREAM", 0x2007: "NA_SE_EV_WATER_WALL_BIG", 0x2008: "NA_SE_EV_OUT_OF_WATER", 0x2009: "NA_SE_EV_DIVE_WATER", 0x200A: "NA_SE_EV_ROCK_SLIDE", 0x200B: "NA_SE_EV_MAGMA_LEVEL", 0x200C: "NA_SE_EV_BRIDGE_OPEN", 0x200D: "NA_SE_EV_BRIDGE_CLOSE", 0x200E: "NA_SE_EV_BRIDGE_OPEN_STOP", 0x200F: "NA_SE_EV_BRIDGE_CLOSE_STOP", 0x2010: "NA_SE_EV_WALL_BROKEN", 0x2011: "NA_SE_EV_CHICKEN_CRY_N", 0x2012: "NA_SE_EV_CHICKEN_CRY_A", 0x2013: "NA_SE_EV_CHICKEN_CRY_M", 0x2014: "NA_SE_EV_SLIDE_DOOR_OPEN", 0x2015: "NA_SE_EV_FOOT_SWITCH", 0x2016: "NA_SE_EV_HORSE_GROAN", 0x2017: "NA_SE_EV_BOMB_DROP_WATER", 0x2018: "NA_SE_EV_HORSE_JUMP", 0x2019: "NA_SE_EV_HORSE_LAND", 0x201A: "NA_SE_EV_HORSE_SLIP", 0x201B: "NA_SE_EV_WHITE_FAIRY_DASH", 0x201C: "NA_SE_EV_SLIDE_DOOR_CLOSE", 0x201D: "NA_SE_EV_BIGWALL_BOUND", 0x201E: "NA_SE_EV_STONE_STATUE_OPEN", 0x201F: "NA_SE_EV_TBOX_UNLOCK", 0x2020: "NA_SE_EV_TBOX_OPEN", 0x2021: "NA_SE_SY_TIMER", 0x2022: "NA_SE_EV_FLAME_IGNITION", 0x2023: "NA_SE_EV_SPEAR_HIT", 0x2024: "NA_SE_EV_ELEVATOR_MOVE", 0x2025: "NA_SE_EV_WARP_HOLE", 0x2026: "NA_SE_EV_LINK_WARP", 0x2027: "NA_SE_EV_PILLAR_SINK", 0x2028: "NA_SE_EV_WATER_WALL", 0x2029: "NA_SE_EV_RIVER_STREAM_S", 0x202A: "NA_SE_EV_RIVER_STREAM_F", 0x202B: "NA_SE_EV_KID_HORSE_LAND2", 0x202C: "NA_SE_EV_KID_HORSE_SANDDUST", 0x202D: "NA_SE_EV_DUMMY_45", 0x202E: "NA_SE_EV_LIGHTNING", 0x202F: "NA_SE_EV_BOMB_BOUND", 0x2030: "NA_SE_EV_WATERDROP", 0x2031: "NA_SE_EV_TORCH", 0x2032: "NA_SE_EV_MAGMA_LEVEL_M", 0x2033: "NA_SE_EV_FIRE_PILLAR", 0x2034: "NA_SE_EV_FIRE_PLATE", 0x2035: "NA_SE_EV_BLOCK_BOUND", 0x2036: "NA_SE_EV_METALDOOR_SLIDE", 0x2037: "NA_SE_EV_METALDOOR_STOP", 0x2038: "NA_SE_EV_BLOCK_SHAKE", 0x2039: "NA_SE_EV_BOX_BREAK", 0x203A: "NA_SE_EV_HAMMER_SWITCH", 0x203B: "NA_SE_EV_MAGMA_LEVEL_L", 0x203C: "NA_SE_EV_SPEAR_FENCE", 0x203D: "NA_SE_EV_WATERDROP_GRD", 0x203E: "NA_SE_EV_EXPLSION_LONG", 0x203F: "NA_SE_EV_WATER_WALL_BIG_SILENT", 0x2040: "NA_SE_EV_DESERT_WARPHOLE", 0x2041: "NA_SE_EV_FOUNTAIN", 0x2042: "NA_SE_EV_KID_HORSE_WALK", 0x2043: "NA_SE_EV_KID_HORSE_RUN", 0x2044: "NA_SE_EV_KID_HORSE_NEIGH", 0x2045: "NA_SE_EV_KID_HORSE_GROAN", 0x2046: "NA_SE_EV_S_STONE_FLASH", 0x2047: "NA_SE_EV_LIGHT_GATHER", 0x2048: "NA_SE_EV_TREE_CUT", 0x2049: "NA_SE_EV_VOLCANO", 0x204A: "NA_SE_EV_POSTMAN_WALK", 0x204B: "NA_SE_EV_POSTMACHINE_HIT_OPEN", 0x204C: "NA_SE_EV_POSTMACHINE_OPEN", 0x204D: "NA_SE_EV_CHINETRAP_DOWN", 0x204E: "NA_SE_EV_PLANT_BROKEN", 0x204F: "NA_SE_EV_STONE_SWITCH_ON", 0x2050: "NA_SE_EV_FLUTTER_FLAG", 0x2051: "NA_SE_EV_TRAP_BOUND", 0x2052: "NA_SE_EV_ROCK_BROKEN", 0x2053: "NA_SE_EV_FANTOM_WARP_S2", 0x2054: "NA_SE_EV_FANTOM_WARP_L2", 0x2055: "NA_SE_EV_COFFIN_CAP_OPEN", 0x2056: "NA_SE_EV_TRE_BOX_BOUND", 0x2057: "NA_SE_EV_WIND_TRAP", 0x2058: "NA_SE_EV_TRAP_OBJ_SLIDE", 0x2059: "NA_SE_EV_METALDOOR_OPEN", 0x205A: "NA_SE_EV_METALDOOR_CLOSE", 0x205B: "NA_SE_EV_BURN_OUT", 0x205C: "NA_SE_EV_BLOCKSINK", 0x205D: "NA_SE_EV_CROWD", 0x205E: "NA_SE_EV_WATER_LEVEL_DOWN", 0x205F: "NA_SE_EV_NAVY_VANISH", 0x2060: "NA_SE_EV_STONE_SWITCH_OFF", 0x2061: "NA_SE_EV_WEB_VIBRATION", 0x2062: "NA_SE_EV_ICE_STAND_APPEAR", 0x2063: "NA_SE_EV_ROLL_STAND", 0x2064: "NA_SE_EV_SEESAW_WATER_BOUND", 0x2065: "NA_SE_EV_SECOM_CONVEYOR", 0x2066: "NA_SE_EV_WOODDOOR_OPEN", 0x2067: "NA_SE_EV_METALGATE_OPEN", 0x2068: "NA_SE_IT_SCOOP_UP_WATER", 0x2069: "NA_SE_EV_FISH_LEAP", 0x206A: "NA_SE_EV_KAKASHI_SWING", 0x206B: "NA_SE_EV_KAKASHI_ROLL", 0x206C: "NA_SE_EV_BOTTLE_CAP_OPEN", 0x206D: "NA_SE_EV_G_STONE_CRUSH", 0x206E: "NA_SE_EV_KAKASH_LONGI_ROLL", 0x206F: "NA_SE_EV_SUN_MARK_FLASH", 0x2070: "NA_SE_EV_FALL_DOWN_DIRT", 0x2071: "NA_SE_EV_SEESAW_BOUND", 0x2072: "NA_SE_EV_FAIRY_ATTACK", 0x2073: "NA_SE_EV_WOOD_HIT", 0x2074: "NA_SE_EV_SCOOPUP_WATER", 0x2075: "NA_SE_EV_DROP_FALL", 0x2076: "NA_SE_EV_WOOD_GEAR", 0x2077: "NA_SE_EV_TREE_SWING", 0x2078: "NA_SE_EV_AUTO_DOOR_CLOSE", 0x2079: "NA_SE_EV_NAVY_FLY_REBIRTH", 0x207A: "NA_SE_EV_CHAINLIFT_STOP", 0x207B: "NA_SE_EV_TRE_BOX_APPEAR", 0x207C: "NA_SE_EV_CHAIN_KEY_UNLOCK", 0x207D: "NA_SE_EV_SPINE_TRAP_MOVE", 0x207E: "NA_SE_EV_HEALING", 0x207F: "NA_SE_EV_GREAT_FAIRY_APPEAR", 0x2080: "NA_SE_EV_GREAT_FAIRY_VANISH", 0x2081: "NA_SE_EV_RED_EYE", 0x2082: "NA_SE_EV_ROLL_STAND_2", 0x2083: "NA_SE_EV_WALL_SLIDE", 0x2084: "NA_SE_EV_TRE_BOX_FLASH", 0x2085: "NA_SE_EV_WINDMILL_LEVEL", 0x2086: "NA_SE_EV_GOTO_HEAVEN", 0x2087: "NA_SE_EV_POT_BROKEN", 0x2088: "NA_SE_PL_PUT_DOWN_POT", 0x2089: "NA_SE_EV_DIVE_INTO_WATER", 0x208A: "NA_SE_EV_JUMP_OUT_WATER", 0x208B: "NA_SE_EV_ICE_PIECE", 0x208C: "NA_SE_EV_TRIFORCE", 0x208D: "NA_SE_EV_AURORA", 0x208E: "NA_SE_EV_CHIBI_FAIRY_SAVED", 0x208F: "NA_SE_EV_BUYOSTAND_RISING", 0x2090: "NA_SE_EV_BUYOSTAND_FALL", 0x2091: "NA_SE_EV_MILK_POT_BROKEN", 0x2092: "NA_SE_EV_CHAIR_ROLL", 0x2093: "NA_SE_EV_STONEDOOR_STOP", 0x2094: "NA_SE_EV_S_STONE_REVIVAL", 0x2095: "NA_SE_EV_WATER_TANK", 0x2096: "NA_SE_EV_HUMAN_BOUND", 0x2097: "NA_SE_EV_TOILET_WATER", 0x2098: "NA_SE_EV_EARTHQUAKE", 0x2099: "NA_SE_EV_SWEEP", 0x209A: "NA_SE_EV_GOD_LIGHTBALL_2", 0x209B: "NA_SE_EV_RUN_AROUND", 0x209C: "NA_SE_EV_CONSENTRATION", 0x209D: "NA_SE_EV_TIMETRIP_LIGHT", 0x209E: "NA_SE_EV_DOOR_BELL", 0x209F: "NA_SE_EV_BOUND_ON_MAGMA", 0x20A0: "NA_SE_EV_HONEYCOMB_FALL", 0x20A1: "NA_SE_EV_JUMP_CONC", 0x20A2: "NA_SE_EV_ICE_MELT", 0x20A3: "NA_SE_EV_FIRE_PILLAR_S", 0x20A4: "NA_SE_EV_BLOCK_RISING", 0x20A5: "NA_SE_EV_CHINCLE_SPELL_EFFECT", 0x20A6: "NA_SE_EV_LINK_WARP_IN", 0x20A7: "NA_SE_EV_LINK_WARP_OUT", 0x20A8: "NA_SE_EV_FIATY_HEAL", 0x20A9: "NA_SE_EV_CHAIN_KEY_UNLOCK_B", 0x20AA: "NA_SE_EV_WOODBOX_BREAK", 0x20AB: "NA_SE_EV_PUT_DOWN_WOODBOX", 0x20AC: "NA_SE_EV_LAND_DIRT", 0x20AD: "NA_SE_EV_FLOOR_ROLLING", 0x20AE: "NA_SE_EV_DOG_CRY_EVENING", 0x20AF: "NA_SE_EV_JABJAB_HICCUP", 0x20B0: "NA_SE_EV_STICK_SWING", 0x20B1: "NA_SE_EV_FROG_JUMP", 0x20B2: "NA_SE_EV_ICE_FREEZE", 0x20B3: "NA_SE_EV_BURNING", 0x20B4: "NA_SE_EV_WOODPLATE_BOUND", 0x20B5: "NA_SE_EV_MOON_CRY", 0x20B6: "NA_SE_EV_JABJAB_GROAN", 0x20B7: "NA_SE_EV_WAVE_S", 0x20B8: "NA_SE_EV_BIGBALL_ROLL", 0x20B9: "NA_SE_EV_ELEVATOR_MOVE3", 0x20BA: "NA_SE_EV_DIAMOND_SWITCH", 0x20BB: "NA_SE_EV_FLAME_OF_FIRE", 0x20BC: "NA_SE_EV_FISH_GROW_UP", 0x20BD: "NA_SE_EV_FLYING_AIR", 0x20BE: "NA_SE_EV_PASS_AIR", 0x20BF: "NA_SE_EV_COME_UP_DEKU_JR", 0x20C0: "NA_SE_EV_SAND_STORM", 0x20C1: "NA_SE_EV_BOILED_WATER_S", 0x20C2: "NA_SE_EV_GRAVE_EXPLOSION", 0x20C3: "NA_SE_EV_LURE_MOVE_W", 0x20C4: "NA_SE_EV_POT_MOVE_START", 0x20C5: "NA_SE_EV_DIVE_INTO_WATER_L", 0x20C6: "NA_SE_EV_OUT_OF_WATER_L", 0x20C7: "NA_SE_EV_BOILED_WATER_L", 0x20C8: "NA_SE_EV_DIG_UP", 0x20C9: "NA_SE_EV_WOOD_BOUND", 0x20CA: "NA_SE_EV_WATER_BUBBLE", 0x20CB: "NA_SE_EV_ICE_BROKEN", 0x20CC: "NA_SE_EV_FROG_GROW_UP", 0x20CD: "NA_SE_EV_WATER_CONVECTION", 0x20CE: "NA_SE_EV_GROUND_GATE_OPEN", 0x20CF: "NA_SE_EV_FACE_BREAKDOWN", 0x20D0: "NA_SE_EV_TOILET_HAND_APPEAR", 0x20D1: "NA_SE_EV_TOILET_HAND_VANISH", 0x20D2: "NA_SE_EV_ROUND_TRAP_MOVE", 0x20D3: "NA_SE_EV_HIT_SOUND", 0x20D4: "NA_SE_EV_ICE_SWING", 0x20D5: "NA_SE_EV_DOWN_TO_GROUND", 0x20D6: "NA_SE_EV_BIG_TORTOISE_SWIM", 0x20D7: "NA_SE_EV_TORTOISE_WAKE_UP", 0x20D8: "NA_SE_EV_SMALL_DOG_BARK", 0x20D9: "NA_SE_EV_RUPY_FALL", 0x20DA: "NA_SE_EV_RAIN", 0x20DB: "NA_SE_EV_IRON_DOOR_OPEN", 0x20DC: "NA_SE_EV_IRON_DOOR_CLOSE", 0x20DD: "NA_SE_EV_WHIRLPOOL", 0x20DE: "NA_SE_EV_BIG_TORTOISE_ROLL", 0x20DF: "NA_SE_EV_COW_CRY", 0x20E0: "NA_SE_EV_METAL_BOX_BOUND", 0x20E1: "NA_SE_EV_ELECTRIC_EXPLOSION", 0x20E2: "NA_SE_EV_HEAVY_THROW", 0x20E3: "NA_SE_EV_FROG_CRY_0", 0x20E4: "NA_SE_EV_FROG_CRY_1", 0x20E5: "NA_SE_EV_COW_CRY_LV", 0x20E6: "NA_SE_EV_RONRON_DOOR_CLOSE", 0x20E7: "NA_SE_EV_BUTTERFRY_TO_FAIRY", 0x20E8: "NA_SE_EV_FIVE_COUNT_LUPY", 0x20E9: "NA_SE_EV_STONE_GROW_UP", 0x20EA: "NA_SE_EV_STONE_LAUNCH", 0x20EB: "NA_SE_EV_STONE_ROLLING", 0x20EC: "NA_SE_EV_TOGE_STICK_ROLLING", 0x20ED: "NA_SE_EV_TOWER_ENERGY", 0x20EE: "NA_SE_EV_MOON_LIGHT_PILLAR", 0x20EF: "NA_SE_EV_MONKEY_WALK", 0x20F0: "NA_SE_EV_KNIGHT_WALK", 0x20F1: "NA_SE_EV_PILLAR_MOVE_STOP", 0x20F2: "NA_SE_EV_WAVE", 0x20F3: "NA_SE_EV_BIGBELL", 0x20F4: "NA_SE_EV_NUTS_BROKEN", 0x20F5: "NA_SE_EV_SNOWBALL_BROKEN", 0x20F6: "NA_SE_EV_SMALLBALL_ROLL", 0x20F7: "NA_SE_EV_FLOWERPETAL_MOVE", 0x20F8: "NA_SE_EV_FLOWERPETAL_STOP", 0x20F9: "NA_SE_EV_FLOWER_ROLLING", 0x20FA: "NA_SE_EV_GLASSBROKEN_IMPACT", 0x20FB: "NA_SE_EV_GLASSBROKEN_BOUND", 0x20FC: "NA_SE_EV_BIGBALL_ROLL_SR", 0x20FD: "NA_SE_EV_SMALL_SNOWBALL_BROKEN", 0x20FE: "NA_SE_EV_STATUE_VANISH", 0x20FF: "NA_SE_EV_BIGBALL_BOUND", 0x2100: "NA_SE_EV_MONKEY_VO_WALK", 0x2101: "NA_SE_EV_MONKEY_VO_JOY", 0x2102: "NA_SE_EV_WALK_WATER", 0x2103: "NA_SE_EV_PLATE_LIFT_LEVEL", 0x2104: "NA_SE_EV_BIGBALL_ROLL_2", 0x2105: "NA_SE_EV_BIGBALL_ROLL_SR_2", 0x2106: "NA_SE_EV_BIGBALL_ROLL_3", 0x2107: "NA_SE_EV_BIGBALL_ROLL_SR_3", 0x2108: "NA_SE_EV_BEAVER_SWIM_MOTOR", 0x2109: "NA_SE_EV_BEAVER_SWIM_HAND", 0x210A: "NA_SE_EV_SMALL_DOG_CRY", 0x210B: "NA_SE_EV_SMALL_DOG_GROAN", 0x210C: "NA_SE_EV_SMALL_DOG_ATK_BARK", 0x210D: "NA_SE_EV_ICE_PILLAR_RISING", 0x210E: "NA_SE_EV_ICE_PILLAR_FALL", 0x210F: "NA_SE_EV_GORON_CHEER", 0x2110: "NA_SE_EV_SMALL_DOG_ANG_BARK", 0x2111: "NA_SE_EV_COMICAL_JUMP", 0x2112: "NA_SE_EV_LIGHTNING_HARD", 0x2113: "NA_SE_EV_SMALL_DOG_WHINE", 0x2114: "NA_SE_EV_PANIC_IN_HOUSE", 0x2115: "NA_SE_EV_CLOCK_TOWER_BELL", 0x2116: "NA_SE_EV_CLOCK_TOWER_SECOND_HAND", 0x2117: "NA_SE_EV_SIGNAL_BIGBELL", 0x2118: "NA_SE_EV_DUMMY_280", 0x2119: "NA_SE_EV_BEAVER_VOICE_0", 0x211A: "NA_SE_EV_BEAVER_VOICE_1", 0x211B: "NA_SE_EV_WATERWHEEL_LEVEL", 0x211C: "NA_SE_EV_WOOD_GATE_OPEN_N", 0x211D: "NA_SE_EV_INVISIBLE_MONKEY", 0x211E: "NA_SE_EV_CRUISER", 0x211F: "NA_SE_EV_SECRET_CHEER", 0x2120: "NA_SE_EV_BOTTLE_WATERING", 0x2121: "NA_SE_EV_MONKEY_VO_SADNESS", 0x2122: "NA_SE_EV_SNOWSTORM_HARD", 0x2123: "NA_SE_EV_UNSKILLFUL_OCARINA", 0x2124: "NA_SE_EV_BLACK_FAIRY_DASH", 0x2125: "NA_SE_EV_FAIRY_SURPRISE", 0x2126: "NA_SE_EV_MONDO_SURPRISE", 0x2127: "NA_SE_EV_SPOT_LIGHT_OPEN", 0x2128: "NA_SE_EV_HOUSE_BROKEN", 0x2129: "NA_SE_EV_MOON_FALL", 0x212A: "NA_SE_EV_OCARINA_BOUND_0", 0x212B: "NA_SE_EV_OCARINA_BOUND_1", 0x212C: "NA_SE_EV_BOMBERS_WALK", 0x212D: "NA_SE_EV_BOMBERS_LAND", 0x212E: "NA_SE_EV_BOMBERS_SHOT_BREATH", 0x212F: "NA_SE_EV_BOMBERS_SHOT_EXPLOSUIN", 0x2130: "NA_SE_EV_BOMBERS_JUMP", 0x2131: "NA_SE_EV_SOLDIER_WALK", 0x2132: "NA_SE_EV_ROCK_CUBE_RISING", 0x2133: "NA_SE_EV_ROCK_CUBE_FALL", 0x2134: "NA_SE_EV_BELL_SPIT", 0x2135: "NA_SE_EV_BELL_SIGH", 0x2136: "NA_SE_EV_BELL_BRAKE", 0x2137: "NA_SE_EV_DOG_SWIM", 0x2138: "NA_SE_EV_CHIBI_FAIRY_HEAL_ORG", 0x2139: "NA_SE_EV_BOMBERS_CLIMB", 0x213A: "NA_SE_EV_WOODPLATE_BROKEN", 0x213B: "NA_SE_EV_WATER_LEVEL_DOWN_FIX", 0x213C: "NA_SE_EV_HONEYCOMB_BROKEN", 0x213D: "NA_SE_EV_CLOCK_TOWER_UP", 0x213E: "NA_SE_EV_CLOCK_TOWER_STOP", 0x213F: "NA_SE_EV_CLOCK_TOWER_FALL", 0x2140: "NA_SE_EV_CLOCK_TOWER_BOUND_0", 0x2141: "NA_SE_EV_CLOCK_TOWER_BOUND_1", 0x2142: "NA_SE_EV_CLOCK_TOWER_BOUND_2", 0x2143: "NA_SE_EV_STONEDOOR_OPEN_S", 0x2144: "NA_SE_EV_ICE_MELT_LEVEL", 0x2145: "NA_SE_EV_CLOCK_TOWER_STAIR_MOVE", 0x2146: "NA_SE_EV_DUMMY_326", 0x2147: "NA_SE_EV_OBJECT_STICK", 0x2148: "NA_SE_EV_CHICK_TO_CHICKEN", 0x2149: "NA_SE_EV_MUJURA_BALLOON_BROKEN", 0x214A: "NA_SE_EV_BALLOON_SWELL", 0x214B: "NA_SE_EV_SEAHORSE_OUT_BOTTLE", 0x214C: "NA_SE_EV_KYOJIN_VOICE_SUCCESS", 0x214D: "NA_SE_EV_KYOJIN_VOICE_FAIL", 0x214E: "NA_SE_EV_KYOJIN_WALK", 0x214F: "NA_SE_EV_MOON_FALL_LAST", 0x2150: "NA_SE_EV_EARTHQUAKE_LAST", 0x2151: "NA_SE_EV_SEAHORSE_SWIM", 0x2152: "NA_SE_EV_OPEN_AMBRELLA", 0x2153: "NA_SE_EV_BUTLER_FRY", 0x2154: "NA_SE_EV_PIRATE_SHIP", 0x2155: "NA_SE_EV_DRAIN", 0x2156: "NA_SE_EV_DORA_L", 0x2157: "NA_SE_EV_LOG_BOUND", 0x2158: "NA_SE_EV_CART_WHEEL", 0x2159: "NA_SE_EV_EARTHQUAKE_LAST2", 0x215A: "NA_SE_EV_DORA_S", 0x215B: "NA_SE_EV_ROCK_FALL", 0x215C: "NA_SE_EV_FREEZE_S", 0x215D: "NA_SE_EV_WOOD_BOUND_S", 0x215E: "NA_SE_EV_CLOSE_AMBRELLA", 0x215F: "NA_SE_EV_OBJECT_SLIDE", 0x2160: "NA_SE_EV_ROLL_AND_FALL", 0x2161: "NA_SE_EV_GORON_BOUND_0", 0x2162: "NA_SE_EV_GORON_BOUND_1", 0x2163: "NA_SE_EV_MONKEY_VO_DAMAGE", 0x2164: "NA_SE_EV_FORT_RISING", 0x2165: "NA_SE_EV_MONKEY_VO_REWARD", 0x2166: "NA_SE_EV_WATER_PURIFICATION", 0x2167: "NA_SE_EV_OWL_WARP_SWITCH_ON", 0x2168: "NA_SE_EV_BIG_WATER_WHEEL_RR", 0x2169: "NA_SE_EV_BIG_WATER_WHEEL_LR", 0x216A: "NA_SE_EV_SMALL_WATER_WHEEL", 0x216B: "NA_SE_EV_COCK_SWITCH_ROLL", 0x216C: "NA_SE_EV_COCK_SWITCH_STOP", 0x216D: "NA_SE_EV_PIPE_STREAM_START", 0x216E: "NA_SE_EV_WATER_PILLAR", 0x216F: "NA_SE_EV_SEESAW_INCLINE", 0x2170: "NA_SE_EV_ZORA_WALK", 0x2171: "NA_SE_EV_PIRATE_WALK", 0x2172: "NA_SE_EV_PILLAR_UP_FAST", 0x2173: "NA_SE_EV_DUMMY_WATER_WHEEL_RR", 0x2174: "NA_SE_EV_DUMMY_WATER_WHEEL_LR", 0x2175: "NA_SE_EV_MUJURA_FOLLOWERS_FLY", 0x2176: "NA_SE_EV_MAKE_TURRET", 0x2177: "NA_SE_EV_CHANDELIER_ROLL", 0x2178: "NA_SE_EV_CHANDELIER_BROKEN", 0x2179: "NA_SE_EV_SINK_WOOD_FLOOR", 0x217A: "NA_SE_EV_REBOUND_WOOD_FLOOR", 0x217B: "NA_SE_EV_UFO_APPEAR", 0x217C: "NA_SE_EV_UFO_DASH", 0x217D: "NA_SE_EV_TORNADE", 0x217E: "NA_SE_EV_MILK_POT_DAMAGE", 0x217F: "NA_SE_EV_DUMMY_383", 0x2180: "NA_SE_EV_KYOJIN_SIGN", 0x2181: "NA_SE_EV_KYOJIN_GRATITUDE0", 0x2182: "NA_SE_EV_KYOJIN_GRATITUDE1", 0x2183: "NA_SE_EV_KYOJIN_GRATITUDE2", 0x2184: "NA_SE_EV_IKANA_DOOR_OPEN", 0x2185: "NA_SE_EV_IKANA_DOOR_CLOSE", 0x2186: "NA_SE_EV_MOONSTONE_FALL", 0x2187: "NA_SE_EV_COMING_FIRE", 0x2188: "NA_SE_EV_FAIRY_GROUP_FRY", 0x2189: "NA_SE_EV_FAIRY_GROUP_HEAL", 0x218A: "NA_SE_EV_WOOD_DOOR_OPEN_SPEEDY", 0x218B: "NA_SE_EV_PAMERA_WALK", 0x218C: "NA_SE_EV_G_STONE_CHANGE_COLOR", 0x218D: "NA_SE_EV_CURTAIN_DOWN", 0x218E: "NA_SE_EV_GORON_HAND_HIT", 0x218F: "NA_SE_EV_SMALL_WOODPLATE_BOUND_0", 0x2190: "NA_SE_EV_GET_UP_ON_BED", 0x2191: "NA_SE_EV_LIE_DOWN_ON_BED", 0x2192: "NA_SE_EV_BANK_MAN_HAND_HIT", 0x2193: "NA_SE_EV_HANKO", 0x2194: "NA_SE_EV_CHICK_SONG", 0x2195: "NA_SE_EV_LAND_SAND", 0x2196: "NA_SE_EV_JUMP_SAND", 0x2197: "NA_SE_EV_SECRET_LADDER_APPEAR", 0x2198: "NA_SE_EV_CLAPPING_2P", 0x2199: "NA_SE_EV_DIVE_INTO_WEED", 0x219A: "NA_SE_EV_FAIRY_SHIVER", 0x219B: "NA_SE_EV_MASK_RISING", 0x219C: "NA_SE_EV_MOON_EYE_FLASH", 0x219D: "NA_SE_EV_SLIP_MOON", 0x219E: "NA_SE_EV_FALL_POWER", 0x219F: "NA_SE_EV_BELL_DASH_NORMAL", 0x21A0: "NA_SE_EV_IKANA_BLOCK_MOVE_X", 0x21A1: "NA_SE_EV_IKANA_BLOCK_MOVE_Z", 0x21A2: "NA_SE_EV_IKANA_BLOCK_MOVE_Y", 0x21A3: "NA_SE_EV_IKANA_BLOCK_STOP_C", 0x21A4: "NA_SE_EV_IKANA_BLOCK_STOP_F", 0x21A5: "NA_SE_EV_BELL_ANGER", 0x21A6: "NA_SE_EV_IKANA_BLOCK_SWITCH", 0x21A7: "NA_SE_EV_BAT_FLY", 0x21A8: "NA_SE_EV_UFO_LIGHT_BEAM", 0x21A9: "NA_SE_EV_DOOR_UNLOCK", 0x21AA: "NA_SE_EV_WOOD_WATER_WHEEL", 0x21AB: "NA_SE_EV_CONVEYOR_SHUTTER_OPEN", 0x21AC: "NA_SE_EV_CONVEYOR_SHUTTER_CLOSE", 0x21AD: "NA_SE_EV_ROOM_CARTAIN", 0x21AE: "NA_SE_EV_ZORA_KIDS_BORN", 0x21AF: "NA_SE_EV_ZORA_KIDS_SWIM_0", 0x21B0: "NA_SE_EV_ZORA_KIDS_SWIM_1", 0x21B1: "NA_SE_EV_MOON_EXPLOSION", 0x21B2: "NA_SE_EV_RAINBOW", 0x21B3: "NA_SE_EV_OMENYA_WALK", 0x21B4: "NA_SE_EV_KYOJIN_GROAN", 0x21B5: "NA_SE_EV_UFO_FLY", 0x21B6: "NA_SE_EV_GRASS_WALL_BROKEN", 0x21B7: "NA_SE_EV_WARP_HOLE_ENERGY", 0x21B8: "NA_SE_EV_BOSS_WARP_HOLE", 0x21B9: "NA_SE_EV_FIREWORKS_LAUNCH", 0x21BA: "NA_SE_EV_IKANA_SOUL_LV", 0x21BB: "NA_SE_EV_IKANA_PURIFICATION", 0x21BC: "NA_SE_EV_ZORA_KIDS_SWIM_2", 0x21BD: "NA_SE_EV_DARUMA_VANISH", 0x21BE: "NA_SE_EV_IKANA_SOUL_TRANSFORM", 0x21BF: "NA_SE_EV_ROMANI_BOW_FLICK", 0x21C0: "NA_SE_EV_WHITE_FAIRY_SHOT_DASH", 0x21C1: "NA_SE_EV_BLACK_FAIRY_SHOT_DASH", 0x21C2: "NA_SE_EV_SWORD_FORGE", 0x21C3: "NA_SE_EV_STONEDOOR_CLOSE_S", 0x21C4: "NA_SE_EV_BOTTLE_CAP_CLOSE", 0x21C5: "NA_SE_EV_PAMET_ROCK_CRASH", 0x21C6: "NA_SE_EV_GUILLOTINE_UP", 0x21C7: "NA_SE_EV_ROCK_BROKEN2", 0x21C8: "NA_SE_EV_OBJECT_STICK2", 0x21C9: "NA_SE_EV_WOODBOX_BOUND2", 0x21CA: "NA_SE_EV_DEMO_KID_ATOZUSARI", 0x21CB: "NA_SE_EV_UNDER_WATER", 0x21CC: "NA_SE_EV_FREEZE2", 0x21CD: "NA_SE_EV_DEMO_KID_SAGURU", 0x21CE: "NA_SE_EV_WATER_WALL3", 0x21CF: "NA_SE_EV_BOMBERS_TAORE", 0x3000: "NA_SE_EN_DODO_J_WALK", 0x3001: "NA_SE_EN_DODO_J_CRY", 0x3002: "NA_SE_EN_DODO_J_FIRE", 0x3003: "NA_SE_EN_DODO_J_DAMAGE", 0x3004: "NA_SE_EN_DODO_J_DEAD", 0x3005: "NA_SE_EN_BAKUO_ROLL", 0x3006: "NA_SE_EN_MIZUBABA2_VOICE", 0x3007: "NA_SE_EN_MIZUBABA2_DAMAGE", 0x3008: "NA_SE_EN_MIBOSS_FALL_OLD_OLD", 0x3009: "NA_SE_EN_MIBOSS_DAMAGE_OLD", 0x300A: "NA_SE_EN_MIBOSS_DASH_OLD", 0x300B: "NA_SE_EN_MIBOSS_DEAD_OLD", 0x300C: "NA_SE_EN_MIBOSS_GND1_OLD", 0x300D: "NA_SE_EN_GOMA_DOWN", 0x300E: "NA_SE_EN_MIBOSS_GND2_OLD", 0x300F: "NA_SE_EN_MIBOSS_UNARI_OLD", 0x3010: "NA_SE_EN_MIBOSS_RHYTHM_OLD", 0x3011: "NA_SE_EN_MIBOSS_SWORD_OLD", 0x3012: "NA_SE_EN_ANSATSUSYA_ENTRY", 0x3013: "NA_SE_EN_MIBOSS_JUMP1", 0x3014: "NA_SE_EN_MIBOSS_JUMP2", 0x3015: "NA_SE_EN_MIBOSS_VOICE1_OLD", 0x3016: "NA_SE_EN_MIBOSS_VOICE2_OLD", 0x3017: "NA_SE_EN_MIBOSS_VOICE3_OLD", 0x3018: "NA_SE_EN_INBOSS_SAND_OLD", 0x3019: "NA_SE_EN_INBOSS_ROAR_OLD", 0x301A: "NA_SE_EN_INBOSS_DAMAGE_OLD", 0x301B: "NA_SE_EN_COMMON_WEAKENED", 0x301C: "NA_SE_EN_MIBOSS_FAINT_OLD", 0x301D: "NA_SE_EN_MIBOSS_ROLLING_OLD", 0x301E: "NA_SE_EN_MIZUBABA1_DAMAGE", 0x301F: "NA_SE_EN_MIZUBABA_DEAD", 0x3020: "NA_SE_EN_DODO_M_CRY", 0x3021: "NA_SE_EN_DODO_M_DEAD", 0x3022: "NA_SE_EN_DODO_M_MOVE", 0x3023: "NA_SE_EN_DODO_M_DOWN", 0x3024: "NA_SE_EN_DODO_M_UP", 0x3025: "NA_SE_EN_MIZUBABA_TRANSFORM", 0x3026: "NA_SE_EN_DODO_M_EAT", 0x3027: "NA_SE_EN_MIZUBABA2_WALK", 0x3028: "NA_SE_EN_BOMCHU_WALK", 0x3029: "NA_SE_EN_RIZA_CRY", 0x302A: "NA_SE_EN_RIZA_ATTACK", 0x302B: "NA_SE_EN_RIZA_DAMAGE", 0x302C: "NA_SE_EN_RIZA_WARAU", 0x302D: "NA_SE_EN_RIZA_DEAD", 0x302E: "NA_SE_EN_RIZA_WALK", 0x302F: "NA_SE_EN_RIZA_JUMP", 0x3030: "NA_SE_EN_STALKID_WALK", 0x3031: "NA_SE_EN_STALKID_ATTACK", 0x3032: "NA_SE_EN_STALKID_DAMAGE", 0x3033: "NA_SE_EN_STALKID_DEAD", 0x3034: "NA_SE_EN_FLOORMASTER_SLIDING", 0x3035: "NA_SE_EN_TEKU_WALK_WATER", 0x3036: "NA_SE_EN_LIGHT_ARROW_HIT", 0x3037: "NA_SE_EN_MIZUBABA2_ATTACK", 0x3038: "NA_SE_EN_STAL_WARAU", 0x3039: "NA_SE_EN_STAL_SAKEBI", 0x303A: "NA_SE_EN_STAL_DAMAGE", 0x303B: "NA_SE_EN_STAL_DEAD", 0x303C: "NA_SE_EN_WOLFOS_APPEAR", 0x303D: "NA_SE_EN_STAL_WALK", 0x303E: "NA_SE_EN_WOLFOS_CRY", 0x303F: "NA_SE_EN_WOLFOS_ATTACK", 0x3040: "NA_SE_EN_FFLY_ATTACK", 0x3041: "NA_SE_EN_FFLY_FLY", 0x3042: "NA_SE_EN_FFLY_DEAD", 0x3043: "NA_SE_EN_WOLFOS_DAMAGE", 0x3044: "NA_SE_EN_AMOS_WALK", 0x3045: "NA_SE_EN_AMOS_WAVE", 0x3046: "NA_SE_EN_EYEGOLE_DEAD", 0x3047: "NA_SE_EN_EYEGOLE_DAMAGE", 0x3048: "NA_SE_EN_AMOS_VOICE", 0x3049: "NA_SE_EN_KUSAMUSHI_VIBE", 0x304A: "NA_SE_EN_BEE_FLY", 0x304B: "NA_SE_EN_WOLFOS_DEAD", 0x304C: "NA_SE_EN_COMMON_E_BALL", 0x304D: "NA_SE_EN_COMMON_THUNDER_THR", 0x304E: "NA_SE_EN_COMMON_E_BALL_HIT", 0x304F: "NA_SE_EN_COMMON_ELEC_ARK", 0x3050: "NA_SE_EN_SUISEN_EAT", 0x3051: "NA_SE_EN_SUISEN_DEAD", 0x3052: "NA_SE_EN_COMMON_E_BALL_THR", 0x3053: "NA_SE_EN_UTSUBO_APPEAR", 0x3054: "NA_SE_EN_BOMCHU_VOICE", 0x3055: "NA_SE_EN_BOMCHU_AIM", 0x3056: "NA_SE_EN_BOMCHU_RUN", 0x3057: "NA_SE_EN_UTSUBO_BACK", 0x3058: "NA_SE_EN_DODO_J_BREATH", 0x3059: "NA_SE_EN_DODO_J_TAIL", 0x305A: "NA_SE_EN_WOLFOS_WALK", 0x305B: "NA_SE_EN_DODO_J_EAT", 0x305C: "NA_SE_EN_DEKU_MOUTH", 0x305D: "NA_SE_EN_DEKU_ATTACK", 0x305E: "NA_SE_EN_DEKU_DAMAGE", 0x305F: "NA_SE_EN_DEKU_DEAD", 0x3060: "NA_SE_EN_MIZUBABA1_MOUTH", 0x3061: "NA_SE_EN_MIZUBABA1_ATTACK", 0x3062: "NA_SE_EN_DEKU_JR_DEAD", 0x3063: "NA_SE_EN_DEKU_SCRAPE", 0x3064: "NA_SE_EN_TAIL_FLY", 0x3065: "NA_SE_EN_TAIL_CRY", 0x3066: "NA_SE_EN_TAIL_DEAD", 0x3067: "NA_SE_EN_GOLON_STAND_IMT", 0x3068: "NA_SE_EN_STALTU_DOWN", 0x3069: "NA_SE_EN_STALTU_UP", 0x306A: "NA_SE_EN_STALTU_LAUGH", 0x306B: "NA_SE_EN_STALTU_DAMAGE", 0x306C: "NA_SE_EN_TEKU_JUMP", 0x306D: "NA_SE_EN_TEKU_DAMAGE", 0x306E: "NA_SE_EN_TEKU_DEAD", 0x306F: "NA_SE_EN_TEKU_WALK", 0x3070: "NA_SE_EN_PO_KANTERA", 0x3071: "NA_SE_EN_PO_FLY", 0x3072: "NA_SE_EN_PO_AWAY", 0x3073: "NA_SE_EN_STALKIDS_APPEAR", 0x3074: "NA_SE_EN_PO_DISAPPEAR", 0x3075: "NA_SE_EN_PO_DAMAGE", 0x3076: "NA_SE_EN_PO_DEAD", 0x3077: "NA_SE_EN_WIZ_DISAPPEAR", 0x3078: "NA_SE_EN_EXTINCT", 0x3079: "NA_SE_EN_GOLON_LAND_BIG", 0x307A: "NA_SE_EN_GERUDOFT_DOWN", 0x307B: "NA_SE_EN_EYEGOLE_ATTACK", 0x307C: "NA_SE_EN_NUTS_UP", 0x307D: "NA_SE_EN_NUTS_DOWN", 0x307E: "NA_SE_EN_NUTS_THROW", 0x307F: "NA_SE_EN_NUTS_WALK", 0x3080: "NA_SE_EN_NUTS_DAMAGE", 0x3081: "NA_SE_EN_NUTS_DEAD", 0x3082: "NA_SE_EN_NUT_FAINT", 0x3083: "NA_SE_EN_PO_BIG_GET", 0x3084: "NA_SE_EN_STALTU_ROLL", 0x3085: "NA_SE_EN_STALTU_DEAD", 0x3086: "NA_SE_EN_PO_SISTER_DEAD", 0x3087: "NA_SE_EN_BARI_SPLIT", 0x3088: "NA_SE_EN_LAST1_GROW_HEAD", 0x3089: "NA_SE_EN_NUTS_VOICE", 0x308A: "NA_SE_EN_TEKU_LAND_WATER", 0x308B: "NA_SE_EN_LAST_DAMAGE", 0x308C: "NA_SE_EN_STALWALL_ROLL", 0x308D: "NA_SE_EN_STALWALL_DASH", 0x308E: "NA_SE_EN_TEKU_JUMP_WATER", 0x308F: "NA_SE_EN_TEKU_LAND_WATER2", 0x3090: "NA_SE_EN_FALL_AIM", 0x3091: "NA_SE_EN_FALL_UP", 0x3092: "NA_SE_EN_FALL_CATCH", 0x3093: "NA_SE_EN_FALL_LAND", 0x3094: "NA_SE_EN_FALL_WALK", 0x3095: "NA_SE_EN_FALL_DAMAGE", 0x3096: "NA_SE_EN_DAIOCTA_REVERSE", 0x3097: "NA_SE_EN_KAICHO_FLUTTER", 0x3098: "NA_SE_EN_BIRI_FLY", 0x3099: "NA_SE_EN_BIRI_JUMP", 0x309A: "NA_SE_EN_BIRI_SPARK", 0x309B: "NA_SE_EN_BIRI_DEAD", 0x309C: "NA_SE_EN_COMMON_WATER_DEEP", 0x309D: "NA_SE_EN_BARI_ROLL", 0x309E: "NA_SE_EN_COMMON_FREEZE", 0x309F: "NA_SE_EN_BARI_DEAD", 0x30A0: "NA_SE_EN_BATTA_FLY", 0x30A1: "NA_SE_EN_BATTA_ATTACK", 0x30A2: "NA_SE_EN_BATTA_DAMAGE", 0x30A3: "NA_SE_EN_BATTA_DEAD", 0x30A4: "NA_SE_EN_WIZ_UNARI", 0x30A5: "NA_SE_EN_WIZ_RUN", 0x30A6: "NA_SE_EN_WIZ_VOICE", 0x30A7: "NA_SE_EN_WIZ_LAUGH", 0x30A8: "NA_SE_EN_WIZ_ATTACK", 0x30A9: "NA_SE_EN_WIZ_DAMAGE", 0x30AA: "NA_SE_EN_WIZ_DEAD", 0x30AB: "NA_SE_EN_WIZ_EXP", 0x30AC: "NA_SE_EN_DAIOCTA_DEAD", 0x30AD: "NA_SE_EN_DAIOCTA_DEAD2", 0x30AE: "NA_SE_EN_FANTOM_DAMAGE", 0x30AF: "NA_SE_EN_DAIOCTA_DAMAGE", 0x30B0: "NA_SE_EN_WIZ_LAUGH2", 0x30B1: "NA_SE_EN_GOLON_SIT_IMT", 0x30B2: "NA_SE_EN_FANTOM_VOICE", 0x30B3: "NA_SE_EN_KAICHO_DAMAGE", 0x30B4: "NA_SE_EN_GOLON_COLD", 0x30B5: "NA_SE_EN_GOLON_JUMP", 0x30B6: "NA_SE_EN_KAICHO_CRY", 0x30B7: "NA_SE_EN_KAICHO_ATTACK", 0x30B8: "NA_SE_EN_GOLON_WALK", 0x30B9: "NA_SE_EN_SLIME_JUMP", 0x30BA: "NA_SE_EN_SLIME_DAMAGE", 0x30BB: "NA_SE_EN_SLIME_BREAK", 0x30BC: "NA_SE_EN_KUROSUKE_MOVE", 0x30BD: "NA_SE_EN_KUROSUKE_ATTACK", 0x30BE: "NA_SE_EN_SLIME_DEAD", 0x30BF: "NA_SE_EN_SLIME_DEFENCE", 0x30C0: "NA_SE_EN_OCTAROCK_ROCK", 0x30C1: "NA_SE_EN_COMMON_WATER_SLW", 0x30C2: "NA_SE_EN_OCTAROCK_JUMP", 0x30C3: "NA_SE_EN_DAIOCTA_LAND", 0x30C4: "NA_SE_EN_DAIOCTA_SINK", 0x30C5: "NA_SE_EN_COMMON_WATER_MID", 0x30C6: "NA_SE_EN_OCTAROCK_DEAD1", 0x30C7: "NA_SE_EN_OCTAROCK_DEAD2", 0x30C8: "NA_SE_EN_BUBLE_WING", 0x30C9: "NA_SE_EN_BUBLE_MOUTH", 0x30CA: "NA_SE_EN_BUBLE_LAUGH", 0x30CB: "NA_SE_EN_BUBLE_BITE", 0x30CC: "NA_SE_EN_BUBLE_UP", 0x30CD: "NA_SE_EN_BUBLE_DOWN", 0x30CE: "NA_SE_EN_BUBLE_DEAD", 0x30CF: "NA_SE_EN_BUBLEFALL_FIRE", 0x30D0: "NA_SE_EN_UTSUBO_DEAD", 0x30D1: "NA_SE_EN_UTSUBO_DAMAGE", 0x30D2: "NA_SE_EN_FROG_REAL", 0x30D3: "NA_SE_EN_FROG_DAMAGE", 0x30D4: "NA_SE_EN_B_SLIME_EAT", 0x30D5: "NA_SE_EN_B_SLIME_LAUGH", 0x30D6: "NA_SE_EN_FROG_DEAD", 0x30D7: "NA_SE_EN_UTSUBO_BITE", 0x30D8: "NA_SE_EN_B_SLIME_REVERSE", 0x30D9: "NA_SE_EN_SLIME_JUMP1", 0x30DA: "NA_SE_EN_SLIME_JUMP2", 0x30DB: "NA_SE_EN_B_SLIME_BREAK", 0x30DC: "NA_SE_EN_BARI_DAMAGE", 0x30DD: "NA_SE_EN_HIPLOOP_LAND", 0x30DE: "NA_SE_EN_MOFER_CORE_MOVE_WT", 0x30DF: "NA_SE_EN_MOFER_CORE_SMJUMP", 0x30E0: "NA_SE_EN_MONBLIN_GNDWAVE", 0x30E1: "NA_SE_EN_MONBLIN_HAM_DOWN", 0x30E2: "NA_SE_EN_MONBLIN_HAM_UP", 0x30E3: "NA_SE_EN_BUBLE_DAMAGE", 0x30E4: "NA_SE_EN_REDEAD_CRY", 0x30E5: "NA_SE_EN_REDEAD_AIM", 0x30E6: "NA_SE_EN_REDEAD_DAMAGE", 0x30E7: "NA_SE_EN_REDEAD_DEAD", 0x30E8: "NA_SE_EN_REDEAD_ATTACK", 0x30E9: "NA_SE_EN_GOLON_KID_SOB", 0x30EA: "NA_SE_EN_GOLON_KID_CRY", 0x30EB: "NA_SE_EN_KAICHO_DEAD", 0x30EC: "NA_SE_EN_PO_LAUGH", 0x30ED: "NA_SE_EN_PO_CRY", 0x30EE: "NA_SE_EN_PO_ROLL", 0x30EF: "NA_SE_EN_PO_LAUGH2", 0x30F0: "NA_SE_EN_GOLON_ROLLING", 0x30F1: "NA_SE_EN_GOLON_READY", 0x30F2: "NA_SE_EN_GOLON_DASH", 0x30F3: "NA_SE_EN_PAMET_VOICE", 0x30F4: "NA_SE_EN_PAMET_ROLL", 0x30F5: "NA_SE_EN_PAMET_WALK", 0x30F6: "NA_SE_EN_PAMET_ROAR", 0x30F7: "NA_SE_EN_PAMET_WAKEUP", 0x30F8: "NA_SE_EN_PAMET_REVERSE", 0x30F9: "NA_SE_EN_PAMET_DAMAGE", 0x30FA: "NA_SE_EN_PAMET_DEAD", 0x30FB: "NA_SE_EN_BAKUO_VOICE", 0x30FC: "NA_SE_EN_GOLON_WAKE_UP", 0x30FD: "NA_SE_EN_GOLON_SIT_DOWN", 0x30FE: "NA_SE_EN_DAIGOLON_SLEEP3", 0x30FF: "NA_SE_EN_CHICKEN_FLUTTER", 0x3100: "NA_SE_EN_KOUME_ILL", 0x3101: "NA_SE_EN_KOUME_REGAIN", 0x3102: "NA_SE_EN_KOUME_DRINK", 0x3103: "NA_SE_EN_KOUME_LAUGH", 0x3104: "NA_SE_EN_KOUME_FLY", 0x3105: "NA_SE_EN_KOUME_AWAY", 0x3106: "NA_SE_EN_KOUME_MAGIC", 0x3107: "NA_SE_EN_DAIGOLON_SLEEP2", 0x3108: "NA_SE_EN_STALKIDS_JUMP", 0x3109: "NA_SE_EN_STALKIDS_FADEOUT", 0x310A: "NA_SE_EN_STALKIDS_LAUGH", 0x310B: "NA_SE_EN_STALKIDS_SHAKEHEAD", 0x310C: "NA_SE_EN_STALKIDS_ONGND", 0x310D: "NA_SE_EN_STALKIDS_SURPRISED", 0x310E: "NA_SE_EN_STALKIDS_WALK", 0x310F: "NA_SE_EN_STALKIDS_REVERSE", 0x3110: "NA_SE_EN_STALKIDS_FLOAT", 0x3111: "NA_SE_EN_EYEGOLE_EYE", 0x3112: "NA_SE_EN_STALKIDS_CAUGHT", 0x3113: "NA_SE_EN_STALKIDS_MASK_ON", 0x3114: "NA_SE_EN_TWINROBA_CUTBODY", 0x3115: "NA_SE_EN_STALKIDS_MASK_OFF", 0x3116: "NA_SE_EN_STALKIDS_RIDE", 0x3117: "NA_SE_EN_DEKNUTS_DANCE", 0x3118: "NA_SE_EN_DEKNUTS_DANCE1", 0x3119: "NA_SE_EN_DEKNUTS_DANCE2", 0x311A: "NA_SE_EN_DEKNUTS_DANCE_BIG", 0x311B: "NA_SE_EN_EYEGOLE_BEAM", 0x311C: "NA_SE_EN_GOLON_EYE_BIG", 0x311D: "NA_SE_EN_GOLON_GOOD_BIG", 0x311E: "NA_SE_EN_STALKIDS_LAUGH_MID", 0x311F: "NA_SE_EN_STALKIDS_FLOAT_COPY", 0x3120: "NA_SE_EN_STALKIDS_TURN", 0x3121: "NA_SE_EN_STALKIDS_DAMAGE", 0x3122: "NA_SE_EN_STALKIDS_SCREAM", 0x3123: "NA_SE_EN_STALKIDS_OTEDAMA2", 0x3124: "NA_SE_EN_STALKIDS_STRETCH", 0x3125: "NA_SE_EN_STALKIDS_LAUGH_MD2", 0x3126: "NA_SE_EN_OWL_FLUTTER", 0x3127: "NA_SE_EN_VALVAISA_LAND", 0x3128: "NA_SE_EN_IRONNACK_WALK", 0x3129: "NA_SE_EN_IRONNACK_SWING_AXE", 0x312A: "NA_SE_EN_STALKIDS_OTEDAMA1", 0x312B: "NA_SE_EN_PAMET_CUTTER_ON", 0x312C: "NA_SE_EN_IRONNACK_ARMOR_OFF_DEMO", 0x312D: "NA_SE_EN_PAMET_CUTTER_OFF", 0x312E: "NA_SE_EN_B_SLIME_JUMP1", 0x312F: "NA_SE_EN_B_SLIME_JUMP2", 0x3130: "NA_SE_EN_FLOORMASTER_ATTACK", 0x3131: "NA_SE_EN_FLOORMASTER_SM_WALK", 0x3132: "NA_SE_EN_FLOORMASTER_SM_DEAD", 0x3133: "NA_SE_EN_FLOORMASTER_RESTORE", 0x3134: "NA_SE_EN_FLOORMASTER_EXPAND", 0x3135: "NA_SE_EN_KUSAMUSHI_HIDE", 0x3136: "NA_SE_EN_FLOORMASTER_SM_STICK", 0x3137: "NA_SE_EN_FLOORMASTER_SM_LAND", 0x3138: "NA_SE_EN_B_SLIME_COMBINE", 0x3139: "NA_SE_EN_B_SLIME_PUNCH_MOVE", 0x313A: "NA_SE_EN_IRONNACK_ARMOR_HIT", 0x313B: "NA_SE_EN_CUTBODY", 0x313C: "NA_SE_EN_LAST1_TRANSFORM", 0x313D: "NA_SE_EN_LAST1_DEMO_BREAK", 0x313E: "NA_SE_EN_LAST1_DEMO_WALL", 0x313F: "NA_SE_EN_B_PAMET_BREAK", 0x3140: "NA_SE_EN_KONB_DEMO_MOVE_OLD", 0x3141: "NA_SE_EN_KONB_JUMP_OLD", 0x3142: "NA_SE_EN_KONB_SINK_OLD", 0x3143: "NA_SE_EN_UTSUBO_EAT", 0x3144: "NA_SE_EN_YMAJIN_HOLD_SNOW", 0x3145: "NA_SE_EN_KONB_DAMAGE_OLD", 0x3146: "NA_SE_EN_KONB_DEAD_OLD", 0x3147: "NA_SE_EN_KONB_BOUND_OLD", 0x3148: "NA_SE_EN_AWA_BOUND", 0x3149: "NA_SE_EN_AWA_BREAK", 0x314A: "NA_SE_EN_ICEB_FOOTSTEP_OLD", 0x314B: "NA_SE_EN_COMMON_THUNDER", 0x314C: "NA_SE_EN_ICEB_CRY_OLD", 0x314D: "NA_SE_EN_ICEB_STEAM_LONG_OLD", 0x314E: "NA_SE_EN_ICEB_STEAMS_DEMO_OLD", 0x314F: "NA_SE_EN_ICEB_STEAM_DEMO_UP_OLD", 0x3150: "NA_SE_EN_ICEB_DEAD_OLD", 0x3151: "NA_SE_EN_ICEB_DAMAGE_OLD", 0x3152: "NA_SE_EN_KONB_INIT_OLD", 0x3153: "NA_SE_EN_KONB_DEAD2_OLD", 0x3154: "NA_SE_EN_PIHAT_UP", 0x3155: "NA_SE_EN_PIHAT_FLY", 0x3156: "NA_SE_EN_PIHAT_DAMAGE", 0x3157: "NA_SE_EN_PIHAT_LAND", 0x3158: "NA_SE_EN_KONB_BOUND2_OLD", 0x3159: "NA_SE_EN_KONB_DEAD_JUMP_OLD", 0x315A: "NA_SE_EN_KONB_DEAD_JUMP2_OLD", 0x315B: "NA_SE_EN_FROG_JUMP", 0x315C: "NA_SE_EN_FROG_GREET", 0x315D: "NA_SE_EN_FROG_HOLD_SLIME", 0x315E: "NA_SE_EN_FROG_THROW_SLIME", 0x315F: "NA_SE_EN_FROG_JUMP_MID", 0x3160: "NA_SE_EN_KONB_BITE_OLD", 0x3161: "NA_SE_EN_FROG_PUNCH1", 0x3162: "NA_SE_EN_FROG_PUNCH2", 0x3163: "NA_SE_EN_UTSUBO_APPEAR_TRG", 0x3164: "NA_SE_EN_FROG_DOWN", 0x3165: "NA_SE_EN_FROG_JUMP_ABOVE", 0x3166: "NA_SE_EN_FROG_KICK", 0x3167: "NA_SE_EN_YMAJIN_MINI_HOLD", 0x3168: "NA_SE_EN_YMAJIN_MINI_THROW", 0x3169: "NA_SE_EN_YMAJIN_MOVE", 0x316A: "NA_SE_EN_YMAJIN_MINI_MOVE", 0x316B: "NA_SE_EN_YMAJIN_SURFACE", 0x316C: "NA_SE_EN_YMAJIN_HIDE", 0x316D: "NA_SE_EN_YMAJIN_SPLIT", 0x316E: "NA_SE_EN_YMAJIN_UNITE", 0x316F: "NA_SE_EN_YMAJIN_DEAD_BREAK", 0x3170: "NA_SE_EN_BIMOS_ROLL_HEAD", 0x3171: "NA_SE_EN_BIMOS_LAZER", 0x3172: "NA_SE_EN_BIMOS_LAZER_GND", 0x3173: "NA_SE_EN_BIMOS_AIM", 0x3174: "NA_SE_EN_BUBLEWALK_WALK", 0x3175: "NA_SE_EN_BUBLEWALK_AIM", 0x3176: "NA_SE_EN_BUBLEWALK_REVERSE", 0x3177: "NA_SE_EN_BUBLEWALK_DAMAGE", 0x3178: "NA_SE_EN_BUBLEWALK_DEAD", 0x3179: "NA_SE_EN_HIPLOOP_RUN", 0x317A: "NA_SE_EN_HIPLOOP_PAUSE", 0x317B: "NA_SE_EN_HIPLOOP_MASC_OFF", 0x317C: "NA_SE_EN_HIPLOOP_FOOT", 0x317D: "NA_SE_EN_HIPLOOP_DAMAGE", 0x317E: "NA_SE_EN_HIPLOOP_DEAD", 0x317F: "NA_SE_EN_HIPLOOP_FOOTSTEP", 0x3180: "NA_SE_EN_DEKUHIME_WALK", 0x3181: "NA_SE_EN_DEKUHIME_TURN", 0x3182: "NA_SE_EN_DEKUHIME_GREET", 0x3183: "NA_SE_EN_DEKUHIME_GREET2", 0x3184: "NA_SE_EN_PIHAT_SM_FLY", 0x3185: "NA_SE_EN_PIHAT_SM_DEAD", 0x3186: "NA_SE_EN_STALKID_APPEAR", 0x3187: "NA_SE_EN_AKINDONUTS_HIDE", 0x3188: "NA_SE_EN_RIVA_DAMAGE", 0x3189: "NA_SE_EN_RIVA_DEAD", 0x318A: "NA_SE_EN_RIVA_MOVE", 0x318B: "NA_SE_EN_DEKUHIME_VOICE_SAD", 0x318C: "NA_SE_EN_DEKUHIME_VOICE_JOY", 0x318D: "NA_SE_EN_NUTS_JUMP", 0x318E: "NA_SE_EN_NUTS_CLOTHES", 0x318F: "NA_SE_EN_SITSUJI_VOICE", 0x3190: "NA_SE_EN_LIKE_WALK", 0x3191: "NA_SE_EN_LIKE_UNARI", 0x3192: "NA_SE_EN_SUISEN_DRINK", 0x3193: "NA_SE_EN_EYEGOLE_DEMO_EYE", 0x3194: "NA_SE_EN_SUISEN_THROW", 0x3195: "NA_SE_EN_LIKE_DAMAGE", 0x3196: "NA_SE_EN_LIKE_DEAD", 0x3197: "NA_SE_EN_MGANON_SWORD", 0x3198: "NA_SE_EN_PIRATE_ATTACK", 0x3199: "NA_SE_EN_PIRATE_DAMAGE", 0x319A: "NA_SE_EN_PIRATE_DEAD", 0x319B: "NA_SE_EN_MB_MOTH_FLY", 0x319C: "NA_SE_EN_MB_MOTH_DEAD", 0x319D: "NA_SE_EN_MB_INSECT_WALK", 0x319E: "NA_SE_EN_B_PAMET_ROLL", 0x319F: "NA_SE_EN_FROG_VOICE1", 0x31A0: "NA_SE_EN_GERUDOFT_WALK", 0x31A1: "NA_SE_EN_FROG_VOICE2", 0x31A2: "NA_SE_EN_B_PAMET_VOICE", 0x31A3: "NA_SE_EN_B_PAMET_REVERSE", 0x31A4: "NA_SE_EN_FREEZAD_BREATH", 0x31A5: "NA_SE_EN_FREEZAD_DAMAGE", 0x31A6: "NA_SE_EN_FREEZAD_DEAD", 0x31A7: "NA_SE_EN_DEKUHIMA_VOICE_HURY", 0x31A8: "NA_SE_EN_KINGNUTS_VOICE", 0x31A9: "NA_SE_EN_FROG_RUNAWAY", 0x31AA: "NA_SE_EN_LAST3_DEAD_DEAD1_OLD", 0x31AB: "NA_SE_EN_LAST3_DEAD_DEAD2_OLD", 0x31AC: "NA_SE_EN_FROG_RUNAWAY2", 0x31AD: "NA_SE_EN_DAIGOLON_SLEEP1", 0x31AE: "NA_SE_EN_IRONNACK_HIT_GND", 0x31AF: "NA_SE_EN_LAST3_DEAD_WIND1_OLD", 0x31B0: "NA_SE_EN_TWINROBA_LAUGH", 0x31B1: "NA_SE_EN_TWINROBA_LAUGH2", 0x31B2: "NA_SE_EN_IRONNACK_PULLOUT", 0x31B3: "NA_SE_EN_TWINROBA_SHOOT_VOICE", 0x31B4: "NA_SE_EN_LAST3_DEAD_WIND2_OLD", 0x31B5: "NA_SE_EN_LAST3_DEAD_WIND3_OLD", 0x31B6: "NA_SE_EN_LAST3_DEAD_LIGHTS_OLD", 0x31B7: "NA_SE_EN_PIRATE_BREATH", 0x31B8: "NA_SE_EN_LAST3_DEAD_ROD", 0x31B9: "NA_SE_EN_LAST2_SHOUT", 0x31BA: "NA_SE_EN_LAST2_PUMP_UP_OLD", 0x31BB: "NA_SE_EN_LAST2_GROW_HEAD_OLD", 0x31BC: "NA_SE_EN_LAST2_HEARTBEAT_OLD", 0x31BD: "NA_SE_EN_ANSATSUSYA_MOVING", 0x31BE: "NA_SE_EN_ANSATSUSYA_DASH_2", 0x31BF: "NA_SE_EN_LAST3_DEAD_FLOAT", 0x31C0: "NA_SE_EN_ANSATSUSYA_CRYING", 0x31C1: "NA_SE_EN_ANSATSUSYA_SKIP", 0x31C2: "NA_SE_EN_STALTURA_APPEAR", 0x31C3: "NA_SE_EN_ANSATSUSYA_JUMP", 0x31C4: "NA_SE_EN_ANSATSUSYA_FALL", 0x31C5: "NA_SE_EN_ANSATSUSYA_DAMAGE", 0x31C6: "NA_SE_EN_ANSATSUSYA_DEAD", 0x31C7: "NA_SE_EN_ANSATSUSYA_SWORD", 0x31C8: "NA_SE_EN_BAKUO_DEAD", 0x31C9: "NA_SE_EN_BAKUO_APPEAR", 0x31CA: "NA_SE_EN_LAST3_ROD_WIND_OLD", 0x31CB: "NA_SE_EN_LAST3_ROD_FLOOR_OLD", 0x31CC: "NA_SE_EN_LAST3_ROD_DANCE_OLD", 0x31CD: "NA_SE_EN_LAST3_ROD_HOP_OLD", 0x31CE: "NA_SE_EN_LAST3_ROD_HOP2_OLD", 0x31CF: "NA_SE_EN_GANON_RESTORE", 0x31D0: "NA_SE_EN_GOLON_CIRCLE", 0x31D1: "NA_SE_EN_GOLON_CIRCLE_OFF", 0x31D2: "NA_SE_EN_LAST1_BLOW_OLD", 0x31D3: "NA_SE_EN_LAST1_BEAM_OLD", 0x31D4: "NA_SE_EN_LAST1_ATTACK_OLD", 0x31D5: "NA_SE_EN_LAST1_DAMAGE1_OLD", 0x31D6: "NA_SE_EN_LAST1_DAMAGE2_OLD", 0x31D7: "NA_SE_EN_LAST1_FALL_OLD", 0x31D8: "NA_SE_EN_MGANON_STAND", 0x31D9: "NA_SE_EN_LAST2_FIRE_OLD", 0x31DA: "NA_SE_EN_STALGOLD_ROLL", 0x31DB: "NA_SE_EN_LAST2_WALK_OLD", 0x31DC: "NA_SE_EN_LAST2_WAIT_OLD", 0x31DD: "NA_SE_EN_LAST2_JUMP_OLD", 0x31DE: "NA_SE_EN_LAST2_BIRD_OLD", 0x31DF: "NA_SE_EN_LAST2_BIRD2_OLD", 0x31E0: "NA_SE_EN_STALTU_WAVE", 0x31E1: "NA_SE_EN_STALTU_DOWN_SET", 0x31E2: "NA_SE_EN_DEKU_WAKEUP", 0x31E3: "NA_SE_EN_LAST2_WALK2_OLD", 0x31E4: "NA_SE_EN_LAST1_FLOAT_OLD", 0x31E5: "NA_SE_EN_LAST1_ATTACK_2ND_OLD", 0x31E6: "NA_SE_EN_LAST1_ROLLING_OLD", 0x31E7: "NA_SE_EN_LAST3_GET_LINK_OLD", 0x31E8: "NA_SE_EN_PO_BIG_CRY", 0x31E9: "NA_SE_EN_STALTURA_BOUND", 0x31EA: "NA_SE_EN_STALGOLD_UP_CRY", 0x31EB: "NA_SE_EN_GOLON_CRY", 0x31EC: "NA_SE_EN_LAST3_ROD_SOFT", 0x31ED: "NA_SE_EN_LAST3_ROD_MID_OLD", 0x31EE: "NA_SE_EN_RIVA_BIG_APPEAR", 0x31EF: "NA_SE_EN_LAST3_ROD_HARD", 0x31F0: "NA_SE_EN_MUSI_WALK", 0x31F1: "NA_SE_EN_LAST3_COIL_ATTACK_OLD", 0x31F2: "NA_SE_EN_STALWALL_LAUGH", 0x31F3: "NA_SE_EN_PIRANHA_EXIST", 0x31F4: "NA_SE_EN_PIRANHA_ATTACK", 0x31F5: "NA_SE_EN_PIRANHA_DEAD", 0x31F6: "NA_SE_EN_KINGNUTS_DAMAGE", 0x31F7: "NA_SE_EN_COMMON_DEADLIGHT", 0x31F8: "NA_SE_EN_GOLONKID_WALK", 0x31F9: "NA_SE_EN_YMAJIN_MINI_DAMAGE", 0x31FA: "NA_SE_EN_YMAJIN_DAMAGE", 0x31FB: "NA_SE_EN_KOTAKE_SURPRISED", 0x31FC: "NA_SE_EN_HANDW_GET", 0x31FD: "NA_SE_EN_HANDW_RELEASE", 0x31FE: "NA_SE_EN_SLIME_SURFACE", 0x31FF: "NA_SE_EN_KOTAKE_SLEEP", 0x3200: "NA_SE_EN_KOTAKE_SURPRISED2", 0x3201: "NA_SE_EN_NEMURI_SLEEP", 0x3202: "NA_SE_EN_LAST1_DEAD_OLD", 0x3203: "NA_SE_EN_GOLON_SIRLOIN_ROLL", 0x3204: "NA_SE_EN_GOLON_VOICE_EATFULL", 0x3205: "NA_SE_EN_GOLON_SIRLOIN_EAT", 0x3206: "NA_SE_EN_EYEGOLE_WALK", 0x3207: "NA_SE_EN_EYEGOLE_STAND", 0x3208: "NA_SE_EN_EYEGOLE_SIT", 0x3209: "NA_SE_EN_INVADER_DEAD", 0x320A: "NA_SE_EN_FOLLOWERS_BEAM_PRE", 0x320B: "NA_SE_EN_FOLLOWERS_BEAM", 0x320C: "NA_SE_EN_FOLLOWERS_DAMAGE", 0x320D: "NA_SE_EN_FOLLOWERS_DEAD", 0x320E: "NA_SE_EN_INBOSS_DEAD_PRE2_OLD", 0x320F: "NA_SE_EN_IKURA_JUMP1", 0x3210: "NA_SE_EN_IKURA_JUMP2", 0x3211: "NA_SE_EN_IKURA_DAMAGE", 0x3212: "NA_SE_EN_IKURA_DEAD", 0x3213: "NA_SE_EN_ME_DAMAGE", 0x3214: "NA_SE_EN_ME_DEAD", 0x3215: "NA_SE_EN_ME_EXIST", 0x3216: "NA_SE_EN_ME_ATTACK", 0x3217: "NA_SE_EN_GOLONKID_SOB_TALK", 0x3218: "NA_SE_EN_GOLONKID_YAWN", 0x3219: "NA_SE_EN_GOLONKID_SNORE", 0x321A: "NA_SE_EN_GOLON_SNORE1", 0x321B: "NA_SE_EN_GOLON_SNORE2", 0x321C: "NA_SE_EN_BUBLEFALL_APPEAR", 0x321D: "NA_SE_EN_INBOSS_DEAD_OLD", 0x321E: "NA_SE_EN_LAST1_BEAM2_OLD", 0x321F: "NA_SE_EN_COMMON_EXTINCT_LEV", 0x3220: "NA_SE_EN_BOSU_HEAD_MID", 0x3221: "NA_SE_EN_BOSU_HEAD_SHORT", 0x3222: "NA_SE_EN_DEBU_HEAD_MID", 0x3223: "NA_SE_EN_DEBU_HEAD_SHORT", 0x3224: "NA_SE_EN_YASE_HEAD_MID", 0x3225: "NA_SE_EN_YASE_HEAD_SHORT", 0x3226: "NA_SE_EN_BOSU_WALK", 0x3227: "NA_SE_EN_DEBU_WALK", 0x3228: "NA_SE_EN_YASE_WALK", 0x3229: "NA_SE_EN_BOSU_SIT", 0x322A: "NA_SE_EN_BOSU_STAND", 0x322B: "NA_SE_EN_BOSU_HAND", 0x322C: "NA_SE_EN_LAST3_KOMA_OLD", 0x322D: "NA_SE_EN_KONB_PREATTACK_OLD", 0x322E: "NA_SE_EN_BOSU_SHOCK", 0x322F: "NA_SE_EN_BOSU_SHIT", 0x3230: "NA_SE_EN_BOSU_ATTACK", 0x3231: "NA_SE_EN_BOSU_CYNICAL", 0x3232: "NA_SE_EN_BOSU_LAUGH", 0x3233: "NA_SE_EN_BOSU_LAUGH_DEMO", 0x3234: "NA_SE_EN_DEBU_ATTACK", 0x3235: "NA_SE_EN_DEBU_LAUGH", 0x3236: "NA_SE_EN_DEBU_PAUSE", 0x3237: "NA_SE_EN_YASE_ATTACK", 0x3238: "NA_SE_EN_YASE_LAUGH", 0x3239: "NA_SE_EN_YASE_PAUSE", 0x323A: "NA_SE_EN_BOSU_DAMAGE", 0x323B: "NA_SE_EN_DEBU_DAMAGE", 0x323C: "NA_SE_EN_YASE_DAMAGE", 0x323D: "NA_SE_EN_BOSU_DEAD", 0x323E: "NA_SE_EN_DEBU_DEAD", 0x323F: "NA_SE_EN_YASE_DEAD", 0x3240: "NA_SE_EN_DEBU_PAUSE_K", 0x3241: "NA_SE_EN_DEBU_LAUGH_SHORT_K", 0x3242: "NA_SE_EN_DEBU_LAUGH_K", 0x3243: "NA_SE_EN_YASE_PAUSE_K", 0x3244: "NA_SE_EN_YASE_LAUGH_K", 0x3245: "NA_SE_EN_BOSU_LAUGH_DEMO_K", 0x3246: "NA_SE_EN_DEBU_LAUGH_SHORT", 0x3247: "NA_SE_EN_BOSU_LAUGH_K", 0x3248: "NA_SE_EN_DEBU_ATTACK_W", 0x3249: "NA_SE_EN_YASE_ATTACK_W", 0x324A: "NA_SE_EN_BOSU_ATTACK_W", 0x324B: "NA_SE_EN_STAL_FREEZE_LIGHTS", 0x324C: "NA_SE_EN_BOSU_ATTACK_K", 0x324D: "NA_SE_EN_BOSU_SWORD", 0x324E: "NA_SE_EN_KONB_JUMP_LEV_OLD", 0x324F: "NA_SE_EN_MIBOSS_FREEZE_OLD", 0x3250: "NA_SE_EN_YMAJIN_THROW", 0x3251: "NA_SE_EN_BOSU_HEAD_BITE", 0x3252: "NA_SE_EN_BOSU_HEAD_FLOAT", 0x3253: "NA_SE_EN_LAST3_VOICE_KICK_OLD", 0x3254: "NA_SE_EN_LAST3_VOICE_KOMA_OLD", 0x3255: "NA_SE_EN_LAST3_VOICE_ROD_OLD", 0x3256: "NA_SE_EN_LAST3_VOICE_THROW_OLD", 0x3257: "NA_SE_EN_LAST3_VOICE_LAUGH_OLD", 0x3258: "NA_SE_EN_LAST3_VOICE_DAMAGE_OLD", 0x3259: "NA_SE_EN_LAST3_VOICE_DAMAGE2_OLD", 0x325A: "NA_SE_EN_LAST3_VOICE_DEAD_OLD", 0x325B: "NA_SE_EN_BOSU_DEAD_VOICE", 0x325C: "NA_SE_EN_DEBU_DEAD_VOICE", 0x325D: "NA_SE_EN_YASE_DEAD_VOICE", 0x325E: "NA_SE_EN_LAST2_BALLET_OLD", 0x325F: "NA_SE_EN_LAST2_MOONWALK_OLD", 0x3260: "NA_SE_EN_SHARP_FLOAT", 0x3261: "NA_SE_EN_SHARP_REACTION", 0x3262: "NA_SE_EN_REDEAD_WEAKENED1", 0x3263: "NA_SE_EN_REDEAD_WEAKENED_L1", 0x3264: "NA_SE_EN_REDEAD_WEAKENED2", 0x3265: "NA_SE_EN_REDEAD_WEAKENED_L2", 0x3266: "NA_SE_EN_PIRATE_ONGND", 0x3267: "NA_SE_EN_FOLLOWERS_STAY", 0x3268: "NA_SE_EN_LAST2_VOICE_BALLET", 0x3269: "NA_SE_EN_LAST2_VOICE_UAUOO1_OLD", 0x326A: "NA_SE_EN_LAST2_VOICE_UAUOO2_OLD", 0x326B: "NA_SE_EN_LAST2_VOICE_SURPRISED_OLD", 0x326C: "NA_SE_EN_LAST2_DAMAGE_OLD", 0x326D: "NA_SE_EN_LAST2_DAMAGE2_OLD", 0x326E: "NA_SE_EN_LAST2_DEAD_OLD", 0x326F: "NA_SE_EN_LAST2_UAUOO_OLD", 0x3270: "NA_SE_EN_LAST2_GYM_B_OLD", 0x3271: "NA_SE_EN_PIRATE_COOL_LAUGH", 0x3272: "NA_SE_EN_PIRATE_CYNICAL", 0x3273: "NA_SE_EN_PIRATE_DAMM_BREATH", 0x3274: "NA_SE_EN_PIRATE_SHOUT", 0x3275: "NA_SE_EN_STAL01_LAUGH", 0x3276: "NA_SE_EN_STAL02_LAUGH_SHORT", 0x3277: "NA_SE_EN_STAL03_LAUGH_BIG", 0x3278: "NA_SE_EN_STAL04_ANGER", 0x3279: "NA_SE_EN_STAL05_CYNICAL", 0x327A: "NA_SE_EN_STAL06_SURPRISED", 0x327B: "NA_SE_EN_STAL07_ANTONISHED", 0x327C: "NA_SE_EN_STAL08_CRY_BIG", 0x327D: "NA_SE_EN_STAL09_SCREAM", 0x327E: "NA_SE_EN_STAL10_LAUGH_SHY", 0x327F: "NA_SE_EN_STAL11_LAUGH_SHY2", 0x3280: "NA_SE_EN_STAL12_LAUGH_KIDLY", 0x3281: "NA_SE_EN_STAL20_CALL_MOON", 0x3282: "NA_SE_EN_STAL20_CALL_MOON2", 0x3283: "NA_SE_EN_STAL21_PSYCHO_VOICE", 0x3284: "NA_SE_EN_STALKIDS_DOWN_K", 0x3285: "NA_SE_EN_AKINDO_FLY", 0x3286: "NA_SE_EN_NPC_APPEAR", 0x3287: "NA_SE_EN_NPC_FADEAWAY", 0x3288: "NA_SE_EN_DEBU_PAUSEx2", 0x3289: "NA_SE_EN_YASE_PAUSEx2", 0x328A: "NA_SE_EN_DEBU_HEAD_UP", 0x328B: "NA_SE_EN_YASE_HEAD_UP", 0x328C: "NA_SE_EN_STAL22_LAUGH_KID_L", 0x328D: "NA_SE_EN_EVIL_POWER", 0x328E: "NA_SE_NE_STAL23_COLD", 0x328F: "NA_SE_EN_STALKIDS_GASAGOSO", 0x3290: "NA_SE_EN_BOSU_TALK", 0x3291: "NA_SE_EN_FAMOS_REVERSE1", 0x3292: "NA_SE_EN_FAMOS_REVERSE2", 0x3293: "NA_SE_EN_FAMOS_FLOAT", 0x3294: "NA_SE_EN_FAMOS_FLOAT_REVERSE", 0x3295: "NA_SE_EN_KOTAKE_ROLL", 0x3296: "NA_SE_EN_KOTAKE_FLY", 0x3297: "NA_SE_EN_THIEFBIRD_VOICE", 0x3298: "NA_SE_EN_THIEFBIRD_DAMAGE", 0x3299: "NA_SE_EN_THIEFBIRD_DEAD", 0x329A: "NA_SE_EN_STALKIDS_BODY", 0x329B: "NA_SE_EN_STALKIDS_BODY_LEV", 0x329C: "NA_SE_EN_BOSU_STAND_RAPID", 0x329D: "NA_SE_EN_STAL24_SCREAM2", 0x329E: "NA_SE_EN_STALKIDS_EARTHQUAKE", 0x329F: "NA_SE_EN_MASK_FLOAT", 0x32A0: "NA_SE_EN_STALKIDS_PULLED", 0x32A1: "NA_SE_EN_KITA_SALUTE", 0x32A2: "NA_SE_EN_KTIA_WALK", 0x32A3: "NA_SE_EN_KTIA_PAUSE_K", 0x32A4: "NA_SE_EN_KITA_LAUGH_K", 0x32A5: "NA_SE_EN_KITA_DAMAGE", 0x32A6: "NA_SE_EN_KITA_DEAD", 0x32A7: "NA_SE_EN_STALBABY_LAUGH", 0x32A8: "NA_SE_EN_STALBABY_SURPRISED", 0x32A9: "NA_SE_EN_KITA_BREAK", 0x32AA: "NA_SE_EN_KITA_ATTACK_W", 0x32AB: "NA_SE_EN_KONB_WAIT_OLD", 0x32AC: "NA_SE_EN_DEATH_SCYTHE", 0x32AD: "NA_SE_EN_DEATH_ROLL", 0x32AE: "NA_SE_EN_DEATH_SCYTHE_LEV", 0x32AF: "NA_SE_EN_DEATH_SCYTHE_ONGND", 0x32B0: "NA_SE_EN_DEATH_VOICE", 0x32B1: "NA_SE_EN_DEATH_DAMAGE", 0x32B2: "NA_SE_EN_DEATH_DEAD", 0x32B3: "NA_SE_EN_DEATH_ATTACK", 0x32B4: "NA_SE_EN_DEATH_APPEAR", 0x32B5: "NA_SE_EN_DEATH_HEARTBREAK", 0x32B6: "NA_SE_EN_KONB_MINI_DEAD", 0x32B7: "NA_SE_EN_HALF_REDEAD_LOOP", 0x32B8: "NA_SE_EN_HALF_REDEAD_SURPRISE", 0x32B9: "NA_SE_EN_HALF_REDEAD_SCREAME", 0x32BA: "NA_SE_EN_HALF_REDEAD_TRANS", 0x32BB: "NA_SE_EN_GOLON_VOICE_GENERAL", 0x32BC: "NA_SE_EN_IWAIGORON_EVERYBODY", 0x32BD: "NA_SE_EN_IWAIGORON_SOLO", 0x32BE: "NA_SE_EN_ROMANI_WALK", 0x32BF: "NA_SE_EN_MOON_SCREAM1", 0x32C0: "NA_SE_EN_MOON_SCREAM2", 0x32C1: "NA_SE_EN_MOON_SCREAM3", 0x32C2: "NA_SE_EN_MOON_SCREAM4", 0x32C3: "NA_SE_EN_STALKIDS_HEADACHE", 0x32C4: "NA_SE_EN_BIGNUTS_WALK", 0x32C5: "NA_SE_EN_KITA_PAUSE", 0x32C6: "NA_SE_EN_ANSATSUSYA_LAUGH", 0x32C7: "NA_SE_EN__copy514", 0x32C8: "NA_SE_EN__copy515", 0x32C9: "NA_SE_EN__copy516", 0x32CA: "NA_SE_EN__copy517", 0x32CB: "NA_SE_EN__copy518", 0x32CC: "NA_SE_EN__copy519", 0x32CD: "NA_SE_EN_DALMANI_A", 0x32CE: "NA_SE_EN_DALMANI_B", 0x32CF: "NA_SE_EN_DALMANI_C", 0x32D0: "NA_SE_EN_DALMANI_D", 0x32D1: "NA_SE_EN__2d1", 0x32D2: "NA_SE_EN__2d2", 0x32D3: "NA_SE_EN_EVIL_POWER_PREDEMO", 0x32D4: "NA_SE_EN_KOUME_DAMAGE", 0x32D5: "NA_SE_EN_KOUME_DAMAGE2", 0x32D6: "NA_SE_EN_KONB_MINI_APPEAR", 0x32D7: "NA_SE_EN_IRONNACK_DAMAGE", 0x32D8: "NA_SE_EN_IRONNACK_DEAD", 0x32D9: "NA_SE_EN_ANSATSUSYA_ONGND", 0x32DA: "NA_SE_EN_ANSATSUSYA_ROCK", 0x32DB: "NA_SE_EN_REDEAD_REVERSE", 0x32DC: "NA_SE_EN_STALKIDS_NOSE", 0x32DD: "NA_SE_EN_KITA_SNORE", 0x32DE: "NA_SE_EN_IRONNACK_DASH", 0x32DF: "NA_SE_EN_TUBOOCK_FLY", 0x4000: "NA_SE_SY_WIN_OPEN", 0x4001: "NA_SE_SY_WIN_CLOSE", 0x4002: "NA_SE_SY_CORRECT_CHIME", 0x4003: "NA_SE_SY_GET_RUPY", 0x4004: "NA_SE_SY_MESSAGE_WOMAN", 0x4005: "NA_SE_SY_MESSAGE_MAN", 0x4006: "NA_SE_SY_ERROR", 0x4007: "NA_SE_SY_TRE_BOX_APPEAR", 0x4008: "NA_SE_SY_DECIDE", 0x4009: "NA_SE_SY_CURSOR", 0x400A: "NA_SE_SY_CANCEL", 0x400B: "NA_SE_SY_HP_RECOVER", 0x400C: "NA_SE_SY_ATTENTION_ON", 0x400D: "NA_SE_SY_DUMMY_13", 0x400E: "NA_SE_SY_DUMMY_14", 0x400F: "NA_SE_SY_LOCK_OFF", 0x4010: "NA_SE_SY_LOCK_ON_HUMAN", 0x4011: "NA_SE_SY_DUMMY_17", 0x4012: "NA_SE_SY_DUMMY_18", 0x4013: "NA_SE_SY_CAMERA_ZOOM_UP", 0x4014: "NA_SE_SY_CAMERA_ZOOM_DOWN", 0x4015: "NA_SE_SY_DUMMY_21", 0x4016: "NA_SE_SY_DUMMY_22", 0x4017: "NA_SE_SY_ATTENTION_ON_OLD", 0x4018: "NA_SE_SY_MESSAGE_PASS", 0x4019: "NA_SE_SY_WARNING_COUNT_N", 0x401A: "NA_SE_SY_WARNING_COUNT_E", 0x401B: "NA_SE_SY_HITPOINT_ALARM", 0x401C: "NA_SE_SY_DUMMY_28", 0x401D: "NA_SE_SY_DEMO_CUT", 0x401E: "NA_SE_SY_NAVY_CALL", 0x401F: "NA_SE_SY_GAUGE_UP", 0x4020: "NA_SE_SY_DUMMY_32", 0x4021: "NA_SE_SY_DUMMY_33", 0x4022: "NA_SE_SY_DUMMY_34", 0x4023: "NA_SE_SY_PIECE_OF_HEART", 0x4024: "NA_SE_SY_GET_ITEM", 0x4025: "NA_SE_SY_WIN_SCROLL_LEFT", 0x4026: "NA_SE_SY_WIN_SCROLL_RIGHT", 0x4027: "NA_SE_SY_OCARINA_ERROR", 0x4028: "NA_SE_SY_CAMERA_ZOOM_UP_2", 0x4029: "NA_SE_SY_CAMERA_ZOOM_DOWN_2", 0x402A: "NA_SE_SY_GLASSMODE_ON", 0x402B: "NA_SE_SY_GLASSMODE_OFF", 0x402C: "NA_SE_SY_FOUND", 0x402D: "NA_SE_SY_HIT_SOUND", 0x402E: "NA_SE_SY_MESSAGE_END", 0x402F: "NA_SE_SY_RUPY_COUNT", 0x4030: "NA_SE_SY_LOCK_ON", 0x4031: "NA_SE_SY_GET_BOXITEM", 0x4032: "NA_SE_SY_WHITE_OUT_INTO_MOON", 0x4033: "NA_SE_SY_WHITE_OUT_S", 0x4034: "NA_SE_SY_WHITE_OUT_T", 0x4035: "NA_SE_SY_START_SHOT", 0x4036: "NA_SE_SY_METRONOME", 0x4037: "NA_SE_SY_ATTENTION_URGENCY", 0x4038: "NA_SE_SY_METRONOME_LV", 0x4039: "NA_SE_SY_FSEL_CURSOR", 0x403A: "NA_SE_SY_FSEL_DECIDE_S", 0x403B: "NA_SE_SY_FSEL_DECIDE_L", 0x403C: "NA_SE_SY_FSEL_CLOSE", 0x403D: "NA_SE_SY_FSEL_ERROR", 0x403E: "NA_SE_SY_SET_FIRE_ARROW", 0x403F: "NA_SE_SY_SET_ICE_ARROW", 0x4040: "NA_SE_SY_SET_LIGHT_ARROW", 0x4041: "NA_SE_SY_SYNTH_MAGIC_ARROW", 0x4042: "NA_SE_SY_METRONOME_2", 0x4043: "NA_SE_SY_KINSTA_MARK_APPEAR", 0x4044: "NA_SE_SY_FIVE_COUNT_LUPY", 0x4045: "NA_SE_SY_CARROT_RECOVER", 0x4046: "NA_SE_EV_FAIVE_LUPY_COUNT", 0x4047: "NA_SE_SY_METRONOME_TEMPO", 0x4048: "NA_SE_SY_COMICAL_SOUND0_0", 0x4049: "NA_SE_SY_COMICAL_SOUND0_1", 0x404A: "NA_SE_SY_COMICAL_SOUND0_LAST", 0x404B: "NA_SE_SY_SOUT_DEMO", 0x404C: "NA_SE_SY_TIMESIGNAL_BELL", 0x404D: "NA_SE_SY_DEKUNUTS_JUMP_FAILED", 0x404E: "NA_SE_SY_ATTENTION_SOUND", 0x404F: "NA_SE_SY_TRANSFORM_MASK_FLASH", 0x4050: "NA_SE_SY_CAMERA_SHUTTER", 0x4051: "NA_SE_SY_STALKIDS_PSYCHO", 0x4052: "NA_SE_SY_CHICK_JOIN_CHIME", 0x4053: "NA_SE_SY_HIT_SOUND_L", 0x4054: "NA_SE_SY_FAIRY_MASK_SUCCESS", 0x4055: "NA_SE_SY_SCHEDULE_WRITE", 0x4056: "NA_SE_SY_STOPWATCH_TIMER_3", 0x4057: "NA_SE_SY_STOPWATCH_TIMER_INF", 0x4058: "NA_SE_SY_EARTHQUAKE_OUTDOOR", 0x4059: "NA_SE_SY_SPIRAL_DASH", 0x405A: "NA_SE_SY_QUIZ_CORRECT", 0x405B: "NA_SE_SY_QUIZ_INCORRECT", 0x405C: "NA_SE_SY_DIZZY_EFFECT", 0x405D: "NA_SE_SY_TIME_CONTROL_SLOW", 0x405E: "NA_SE_SY_TIME_CONTROL_NORMAL", 0x405F: "NA_SE_SY_SECOM_WARNING", 0x5000: "NA_SE_OC_OCARINA", 0x5001: "NA_SE_OC_ABYSS", 0x5002: "NA_SE_OC_DOOR_OPEN", 0x5003: "NA_SE_OC_SECRET_WARP_IN", 0x5004: "NA_SE_OC_SECRET_WARP_OUT", 0x5005: "NA_SE_OC_SECRET_HOLE_OUT", 0x5006: "NA_SE_OC_REVENGE", 0x5007: "NA_SE_OC_TUNAMI", 0x5008: "NA_SE_OC_TELOP_IMPACT", 0x5009: "NA_SE_OC_WOOD_GATE_OPEN", 0x500A: "NA_SE_OC_FIREWORKS", 0x500B: "NA_SE_OC_WHITE_OUT_INTO_KYOJIN", 0x500C: "NA_SE_OC_12", 0x500D: "NA_SE_OC_13", 0x500E: "NA_SE_OC_14", 0x500F: "NA_SE_OC_15", 0x6000: "NA_SE_VO_LI_SWORD_N", 0x6001: "NA_SE_VO_LI_SWORD_L", 0x6002: "NA_SE_VO_LI_LASH", 0x6003: "NA_SE_VO_LI_HANG", 0x6004: "NA_SE_VO_LI_CLIMB_END", 0x6005: "NA_SE_VO_LI_DAMAGE_S", 0x6006: "NA_SE_VO_LI_FREEZE", 0x6007: "NA_SE_VO_LI_FALL_S", 0x6008: "NA_SE_VO_LI_FALL_L", 0x6009: "NA_SE_VO_LI_BREATH_REST", 0x600A: "NA_SE_VO_LI_BREATH_DRINK", 0x600B: "NA_SE_VO_LI_DOWN", 0x600C: "NA_SE_VO_LI_TAKEN_AWAY", 0x600D: "NA_SE_VO_LI_HELD", 0x600E: "NA_SE_VO_LI_SNEEZE", 0x600F: "NA_SE_VO_LI_SWEAT", 0x6010: "NA_SE_VO_LI_DRINK", 0x6011: "NA_SE_VO_LI_RELAX", 0x6012: "NA_SE_VO_LI_SWORD_PUTAWAY", 0x6013: "NA_SE_VO_LI_GROAN", 0x6014: "NA_SE_VO_LI_AUTO_JUMP", 0x6015: "NA_SE_VO_LI_MAGIC_NALE", 0x6016: "NA_SE_VO_LI_SURPRISE", 0x6017: "NA_SE_VO_LI_MAGIC_FROL", 0x6018: "NA_SE_VO_LI_PUSH", 0x6019: "NA_SE_VO_LI_HOOKSHOT_HANG", 0x601A: "NA_SE_VO_LI_LAND_DAMAGE_S", 0x601B: "NA_SE_VO_LI_MAGIC_START", 0x601C: "NA_SE_VO_LI_MAGIC_ATTACK", 0x601D: "NA_SE_VO_BL_DOWN", 0x601E: "NA_SE_VO_LI_DEMO_DAMAGE", 0x601F: "NA_SE_VO_LI_SWORD_N_copy30", 0x6020: "NA_SE_VO_DUMMY_32", 0x6021: "NA_SE_VO_DUMMY_33", 0x6022: "NA_SE_VO_DUMMY_34", 0x6023: "NA_SE_VO_DUMMY_35", 0x6024: "NA_SE_VO_DUMMY_36", 0x6025: "NA_SE_VO_DUMMY_37", 0x6026: "NA_SE_VO_DUMMY_38", 0x6027: "NA_SE_VO_DUMMY_39", 0x6028: "NA_SE_VO_NAVY_ENEMY", 0x6029: "NA_SE_VO_NAVY_HELLO", 0x602A: "NA_SE_VO_NAVY_HEAR", 0x602B: "NA_SE_VO_DUMMY_43", 0x602C: "NA_SE_VO_DUMMY_44", 0x602D: "NA_SE_VO_DUMMY_45", 0x602E: "NA_SE_VO_DUMMY_46", 0x602F: "NA_SE_VO_DUMMY_47", 0x6030: "NA_SE_VO_DUMMY_48", 0x6031: "NA_SE_VO_DUMMY_49", 0x6032: "NA_SE_VO_DUMMY_50", 0x6033: "NA_SE_VO_DUMMY_51", 0x6034: "NA_SE_VO_DUMMY_52", 0x6035: "NA_SE_VO_DUMMY_53", 0x6036: "NA_SE_VO_DUMMY_54", 0x6037: "NA_SE_VO_DUMMY_55", 0x6038: "NA_SE_VO_DUMMY_56", 0x6039: "NA_SE_VO_DUMMY_57", 0x603A: "NA_SE_VO_DUMMY_58", 0x603B: "NA_SE_VO_DUMMY_59", 0x603C: "NA_SE_VO_DUMMY_60", 0x603D: "NA_SE_VO_DUMMY_61", 0x603E: "NA_SE_VO_DUMMY_62", 0x603F: "NA_SE_VO_DUMMY_63", 0x6040: "NA_SE_VO_LK_WAKE_UP", 0x6041: "NA_SE_VO_LK_CATCH_DEMO", 0x6042: "NA_SE_VO_LK_DRAGGED_DAMAGE", 0x6043: "NA_SE_VO_NAVY_CALL", 0x6044: "NA_SE_VO_NA_HELLO_3", 0x6045: "NA_SE_VO_CHAT_MESSAGE_CALL", 0x6046: "NA_SE_VO_BELL_MESSAGE", 0x6047: "NA_SE_VO_MONDO_MESSAGE", 0x6048: "NA_SE_VO_LK_USING_UP_ENERGY", 0x6049: "NA_SE_VO_DUMMY_73", 0x604A: "NA_SE_VO_GO_SLEEP", 0x604B: "NA_SE_VO_NP_SLEEP_OUT", 0x604C: "NA_SE_VO_DUMMY_76", 0x604D: "NA_SE_VO_DUMMY_77", 0x604E: "NA_SE_VO_NP_DRINK", 0x604F: "NA_SE_VO_DUMMY_79", 0x6050: "NA_SE_VO_NARRATION_0", 0x6051: "NA_SE_VO_TA_SURPRISE", 0x6052: "NA_SE_VO_TA_CRY_0", 0x6053: "NA_SE_VO_TA_CRY_1", 0x6054: "NA_SE_VO_IN_CRY_0", 0x6055: "NA_SE_VO_IN_LOST", 0x6056: "NA_SE_VO_IN_LASH_0", 0x6057: "NA_SE_VO_IN_LASH_1", 0x6058: "NA_SE_VO_FR_LAUGH_0", 0x6059: "NA_SE_VO_FR_SMILE_0", 0x605A: "NA_SE_VO_NB_AGONY", 0x605B: "NA_SE_VO_NB_CRY_0", 0x605C: "NA_SE_VO_NB_NOTICE", 0x605D: "NA_SE_VO_NA_HELLO_0", 0x605E: "NA_SE_VO_NA_HELLO_1", 0x605F: "NA_SE_VO_NA_HELLO_2", 0x6060: "NA_SE_VO_RT_CRASH", 0x6061: "NA_SE_VO_RT_DISCOVER", 0x6062: "NA_SE_VO_RT_FALL", 0x6063: "NA_SE_VO_RT_LAUGH_0", 0x6064: "NA_SE_VO_RT_LIFT", 0x6065: "NA_SE_VO_RT_THROW", 0x6066: "NA_SE_VO_RT_UNBALLANCE", 0x6067: "NA_SE_VO_ST_DAMAGE", 0x6068: "NA_SE_VO_ST_ATTACK", 0x6069: "NA_SE_VO_Z0_HURRY", 0x606A: "NA_SE_VO_Z0_MEET", 0x606B: "NA_SE_VO_Z0_QUESTION", 0x606C: "NA_SE_VO_Z0_SIGH_0", 0x606D: "NA_SE_VO_Z0_SMILE_0", 0x606E: "NA_SE_VO_Z0_SURPRISE", 0x606F: "NA_SE_VO_Z0_THROW", 0x6070: "NA_SE_VO_SK_CRY_0", 0x6071: "NA_SE_VO_SK_CRY_1", 0x6072: "NA_SE_VO_SK_CRASH", 0x6073: "NA_SE_VO_NA_LISTEN", 0x6074: "NA_SE_VO_SK_SHOUT", 0x6075: "NA_SE_VO_Z1_CRY_0", 0x6076: "NA_SE_VO_Z1_CRY_1", 0x6077: "NA_SE_VO_Z1_OPENDOOR", 0x6078: "NA_SE_VO_FR_SMILE_1", 0x6079: "NA_SE_VO_FR_SMILE_2", 0x607A: "NA_SE_VO_KZ_MOVE", 0x607B: "NA_SE_VO_NB_LAUGH", 0x607C: "NA_SE_VO_IN_JOY0", 0x607D: "NA_SE_VO_IN_JOY1", 0x607E: "NA_SE_VO_IN_JOY2", 0x607F: "NA_SE_VO_DUMMY_127", 0x6080: "NA_SE_VO_DUMMY_128", 0x6081: "NA_SE_VO_DUMMY_129", 0x6082: "NA_SE_VO_DUMMY_130", 0x6083: "NA_SE_VO_DUMMY_131", 0x6084: "NA_SE_VO_DUMMY_132", 0x6085: "NA_SE_VO_DUMMY_133", 0x6086: "NA_SE_VO_DUMMY_134", 0x6087: "NA_SE_VO_DUMMY_135", 0x6088: "NA_SE_VO_DUMMY_136", 0x6089: "NA_SE_VO_DUMMY_137", 0x608A: "NA_SE_VO_DUMMY_138", 0x608B: "NA_SE_VO_DUMMY_139", 0x608C: "NA_SE_VO_DUMMY_140", 0x608D: "NA_SE_VO_DUMMY_141", 0x608E: "NA_SE_VO_DUMMY_142", 0x608F: "NA_SE_VO_DUMMY_143", 0x6090: "NA_SE_VO_DUMMY_144", 0x6091: "NA_SE_VO_DUMMY_145", 0x6092: "NA_SE_VO_DUMMY_146", 0x6093: "NA_SE_VO_DUMMY_147", 0x6094: "NA_SE_VO_DUMMY_148", 0x6095: "NA_SE_VO_DUMMY_149", 0x6096: "NA_SE_VO_DUMMY_150", 0x6097: "NA_SE_VO_DUMMY_151", 0x6098: "NA_SE_VO_DUMMY_152", 0x6099: "NA_SE_VO_DUMMY_153", 0x609A: "NA_SE_VO_DUMMY_154", 0x609B: "NA_SE_VO_DUMMY_155", 0x609C: "NA_SE_VO_DUMMY_156", 0x609D: "NA_SE_VO_DUMMY_157", 0x609E: "NA_SE_VO_DUMMY_158", 0x609F: "NA_SE_VO_DUMMY_159", 0x60A0: "NA_SE_VO_DUMMY_160", 0x60A1: "NA_SE_VO_DUMMY_161", 0x60A2: "NA_SE_VO_DUMMY_162", 0x60A3: "NA_SE_VO_DUMMY_163", 0x60A4: "NA_SE_VO_DUMMY_164", 0x60A5: "NA_SE_VO_DUMMY_165", 0x60A6: "NA_SE_VO_DUMMY_166", 0x60A7: "NA_SE_VO_DUMMY_167", 0x60A8: "NA_SE_VO_DUMMY_168", 0x60A9: "NA_SE_VO_DUMMY_169", 0x60AA: "NA_SE_VO_DUMMY_170", 0x60AB: "NA_SE_VO_DUMMY_171", 0x60AC: "NA_SE_VO_DUMMY_172", 0x60AD: "NA_SE_VO_DUMMY_173", 0x60AE: "NA_SE_VO_DUMMY_174", 0x60AF: "NA_SE_VO_DUMMY_175", 0x60B0: "NA_SE_VO_DUMMY_176", 0x60B1: "NA_SE_VO_DUMMY_177", 0x60B2: "NA_SE_VO_DUMMY_178", 0x60B3: "NA_SE_VO_DUMMY_179", 0x60B4: "NA_SE_VO_DUMMY_180", 0x60B5: "NA_SE_VO_DUMMY_181", 0x60B6: "NA_SE_VO_DUMMY_182", 0x60B7: "NA_SE_VO_DUMMY_183", 0x60B8: "NA_SE_VO_DUMMY_184", 0x60B9: "NA_SE_VO_DUMMY_185", 0x60BA: "NA_SE_VO_DUMMY_186", 0x60BB: "NA_SE_VO_DUMMY_187", 0x60BC: "NA_SE_VO_DUMMY_188", 0x60BD: "NA_SE_VO_DUMMY_189", 0x60BE: "NA_SE_VO_DUMMY_190", 0x60BF: "NA_SE_VO_DUMMY_191", 0x60C0: "NA_SE_VO_DUMMY_192", 0x60C1: "NA_SE_VO_DUMMY_193", 0x60C2: "NA_SE_VO_DUMMY_194", 0x60C3: "NA_SE_VO_DUMMY_195", 0x60C4: "NA_SE_VO_DUMMY_196", 0x60C5: "NA_SE_VO_DUMMY_197", 0x60C6: "NA_SE_VO_DUMMY_198", 0x60C7: "NA_SE_VO_DUMMY_199", 0x60C8: "NA_SE_VO_DUMMY_200", 0x60C9: "NA_SE_VO_DUMMY_201", 0x60CA: "NA_SE_VO_DUMMY_202", 0x60CB: "NA_SE_VO_DUMMY_203", 0x60CC: "NA_SE_VO_DUMMY_204", 0x60CD: "NA_SE_VO_DUMMY_205", 0x60CE: "NA_SE_VO_DUMMY_206", 0x60CF: "NA_SE_VO_DUMMY_207", 0x60D0: "NA_SE_VO_DUMMY_208", 0x60D1: "NA_SE_VO_DUMMY_209", 0x60D2: "NA_SE_VO_DUMMY_210", 0x60D3: "NA_SE_VO_DUMMY_211", 0x60D4: "NA_SE_VO_DUMMY_212", 0x60D5: "NA_SE_VO_DUMMY_213", 0x60D6: "NA_SE_VO_DUMMY_214", 0x60D7: "NA_SE_VO_DUMMY_215", 0x60D8: "NA_SE_VO_DUMMY_216", 0x60D9: "NA_SE_VO_DUMMY_217", 0x60DA: "NA_SE_VO_DUMMY_218", 0x60DB: "NA_SE_VO_DUMMY_219", 0x60DC: "NA_SE_VO_DUMMY_220", 0x60DD: "NA_SE_VO_DUMMY_221", 0x60DE: "NA_SE_VO_DUMMY_222", 0x60DF: "NA_SE_VO_DUMMY_223", 0x60E0: "NA_SE_VO_LI_POO_WAIT", 0x60E1: "NA_SE_VO_DUMMY_225", 0x60E2: "NA_SE_VO_DUMMY_226", 0x60E3: "NA_SE_VO_DUMMY_227", 0x60E4: "NA_SE_VO_DUMMY_228", 0x60E5: "NA_SE_VO_DUMMY_229", 0x60E6: "NA_SE_VO_DUMMY_230", 0x60E7: "NA_SE_VO_DUMMY_231", 0x60E8: "NA_SE_VO_DUMMY_232", 0x60E9: "NA_SE_VO_DUMMY_233", 0x60EA: "NA_SE_VO_DUMMY_234", 0x60EB: "NA_SE_VO_DUMMY_235", 0x60EC: "NA_SE_VO_DUMMY_236", 0x60ED: "NA_SE_VO_DUMMY_237", 0x60EE: "NA_SE_VO_DUMMY_238", 0x60EF: "NA_SE_VO_DUMMY_239", 0x60F0: "NA_SE_VO_DUMMY_240", 0x60F1: "NA_SE_VO_DUMMY_241", 0x60F2: "NA_SE_VO_DUMMY_242", 0x60F3: "NA_SE_VO_DUMMY_243", 0x60F4: "NA_SE_VO_DUMMY_244", 0x60F5: "NA_SE_VO_DUMMY_245", 0x60F6: "NA_SE_VO_DUMMY_246", 0x60F7: "NA_SE_VO_DUMMY_247", 0x60F8: "NA_SE_VO_DUMMY_248", 0x60F9: "NA_SE_VO_DUMMY_249", 0x60FA: "NA_SE_VO_DUMMY_250", 0x60FB: "NA_SE_VO_DUMMY_251", 0x60FC: "NA_SE_VO_DUMMY_252", 0x60FD: "NA_SE_VO_DUMMY_253", 0x60FE: "NA_SE_VO_DUMMY_254", 0x60FF: "NA_SE_VO_DUMMY_255", 0x6100: "NA_SE_VO_JMVO02", 0x6101: "NA_SE_VO_JMVO04", 0x6102: "NA_SE_VO_CDVO00", 0x6103: "NA_SE_VO_CDVO01", 0x6104: "NA_SE_VO_CDVO02", 0x6105: "NA_SE_VO_CDVO03", 0x6106: "NA_SE_VO_BBVO00", 0x6107: "NA_SE_VO_BBVO01", 0x6108: "NA_SE_VO_BBVO02", 0x6109: "NA_SE_VO_BBVO03", 0x610A: "NA_SE_VO_BBVO04", 0x610B: "NA_SE_VO_BBVO05", 0x610C: "NA_SE_VO_OBVO01", 0x610D: "NA_SE_VO_ARVO00", 0x610E: "NA_SE_VO_ARVO01", 0x610F: "NA_SE_VO_MMVO00", 0x6110: "NA_SE_VO_MMVO01", 0x6111: "NA_SE_VO_MMVO02", 0x6112: "NA_SE_VO_MMVO03", 0x6113: "NA_SE_VO_MMVO04", 0x6114: "NA_SE_VO_MMVO05", 0x6115: "NA_SE_VO_ABVO00", 0x6116: "NA_SE_VO_ABVO01", 0x6117: "NA_SE_VO_NPVO00", 0x6118: "NA_SE_VO_FPVO00", 0x6119: "NA_SE_VO_FPVO01", 0x611A: "NA_SE_VO_FPVO02", 0x611B: "NA_SE_VO_FPVO03", 0x611C: "NA_SE_VO_ROVO01", 0x611D: "NA_SE_VO_ROVO02", 0x611E: "NA_SE_VO_RYVO01", 0x611F: "NA_SE_VO_RYVO02", 0x6120: "NA_SE_VO_RYVO03", 0x6121: "NA_SE_VO_RYVO04", 0x6122: "NA_SE_VO_ANVO00", 0x6123: "NA_SE_VO_ANVO01", 0x6124: "NA_SE_VO_ANVO02", 0x6125: "NA_SE_VO_ANVO03", 0x6126: "NA_SE_VO_CRVO00", 0x6127: "NA_SE_VO_CRVO01", 0x6128: "NA_SE_VO_CRVO02", 0x6129: "NA_SE_VO_CRVO03", 0x612A: "NA_SE_VO_HNVO00", 0x612B: "NA_SE_VO_HNVO01", 0x612C: "NA_SE_VO_HNVO02", 0x612D: "NA_SE_VO_RMVO00", 0x612E: "NA_SE_VO_RMVO01", 0x612F: "NA_SE_VO_RMVO02", 0x6130: "NA_SE_VO_PMVO01", 0x6131: "NA_SE_VO_PMVO02", 0x6132: "NA_SE_VO_PMVO03", 0x6133: "NA_SE_VO_DHVO00", 0x6134: "NA_SE_VO_DHVO01", 0x6135: "NA_SE_VO_DHVO02", 0x6136: "NA_SE_VO_DHVO03", 0x6137: "NA_SE_VO_DHVO04", 0x6138: "NA_SE_VO_TFVO00", 0x6139: "NA_SE_VO_ANVO04", 0x613A: "NA_SE_VO_ANVO05", 0x613B: "NA_SE_VO_PMVO00", 0x613C: "NA_SE_VO_CHVO03", 0x613D: "NA_SE_VO_CHVO04", 0x613E: "NA_SE_VO_CHVO05", 0x613F: "NA_SE_VO_CHVO06", 0x6140: "NA_SE_VO_CHVO07", 0x6141: "NA_SE_VO_CHVO08", 0x6142: "NA_SE_VO_CHVO09", 0x6143: "NA_SE_VO_DPVO00", 0x6144: "NA_SE_VO_DPVO01", 0x6145: "NA_SE_VO_DPVO02", 0x6146: "NA_SE_VO_SKVO00", 0x6147: "NA_SE_VO_SKVO01", 0x6148: "NA_SE_VO_KHVO00", 0x6149: "NA_SE_VO_KHVO01", 0x614A: "NA_SE_VO_KHVO02", 0x614B: "NA_SE_VO_SHVO00", 0x614C: "NA_SE_VO_SHVO01", 0x614D: "NA_SE_VO_KAVO02", 0x614E: "NA_SE_VO_KAVO03", 0x614F: "NA_SE_VO_MTVO00", 0x6150: "NA_SE_VO_TTVO00", 0x6151: "NA_SE_VO_ITVO00", 0x6152: "NA_SE_VO_ITVO01", 0x6153: "NA_SE_VO_ITVO02", 0x6154: "NA_SE_VO_KMVO00", 0x6155: "NA_SE_VO_KMVO01", 0x6156: "NA_SE_VO_JOVO00", 0x6157: "NA_SE_VO_JYVO00", 0x6158: "NA_SE_VO_DTVO00", 0x6159: "NA_SE_VO_GUVO00", 0x615A: "NA_SE_VO_KTVO00", 0x615B: "NA_SE_VO_KTVO01", 0x615C: "NA_SE_VO_KTVO03", 0x615D: "NA_SE_VO_ZBVO00", 0x615E: "NA_SE_VO_ZBVO01", 0x615F: "NA_SE_VO_DAVO01", 0x6160: "NA_SE_VO_SHVO04", 0x6161: "NA_SE_VO_GBVO02", 0x6162: "NA_SE_VO_GBVO03", 0x6163: "NA_SE_VO_PFVO00", 0x6164: "NA_SE_VO_PFVO01", 0x6165: "NA_SE_VO_GAVO00", 0x6166: "NA_SE_VO_GAVO01", 0x6167: "NA_SE_VO_DJVO00", 0x6168: "NA_SE_VO_DJVO01", 0x6169: "NA_SE_VO_MSVO00", 0x616A: "NA_SE_VO_MSVO01", 0x616B: "NA_SE_VO_JPVO00", 0x616C: "NA_SE_VO_HYVO00", 0x616D: "NA_SE_VO_HYVO01", 0x616E: "NA_SE_VO_BAVO00", 0x616F: "NA_SE_VO_POVO00", 0x6170: "NA_SE_VO_DAVO00", 0x6171: "NA_SE_VO_DAVO02", 0x6172: "NA_SE_VO_MKVO00", 0x6173: "NA_SE_VO_MKVO01", 0x6174: "NA_SE_VO_MKVO02", 0x6175: "NA_SE_VO_MKVO03", 0x6176: "NA_SE_VO_MKVO04", 0x6177: "NA_SE_VO_TIVO00", 0x6178: "NA_SE_VO_TIVO01", 0x6179: "NA_SE_VO_TIVO02", 0x617A: "NA_SE_VO_TIVO03", 0x617B: "NA_SE_VO_TIVO04", 0x617C: "NA_SE_VO_TIVO05", 0x617D: "NA_SE_VO_OMVO00", 0x617E: "NA_SE_VO_OMVO01", 0x617F: "NA_SE_VO_OMVO02", 0x6180: "NA_SE_VO_OMVO03", 0x6181: "NA_SE_VO_OMVO04", 0x6182: "NA_SE_VO_OMVO05", 0x6183: "NA_SE_VO_OMVO06", 0x6184: "NA_SE_VO_DEMO_FALL2", 0x6185: "NA_SE_VO_DEMO_384", 0x6186: "NA_SE_VO_DEMO_385", 0x6187: "NA_SE_VO_DEMO_386", 0x6188: "NA_SE_VO_DEMO_387", 0x6189: "NA_SE_VO_DEMO_388", 0x618A: "NA_SE_VO_DEMO_389", 0x618B: "NA_SE_VO_DEMO_390", 0x618C: "NA_SE_VO_DEMO_391", 0x618D: "NA_SE_VO_DEMO_392", 0x618E: "NA_SE_VO_DEMO_393", 0x618F: "NA_SE_VO_DEMO_394", } def read4(data : bytes, p : int) -> int: return struct.unpack(">I", data[p:p+4])[0] def unique_or_none(lst : List[T]) -> Optional[T]: if not lst: return None elem = lst[0] for e in lst[1:]: if e != elem: return None return elem class MessageDecoder: def __init__(self, control_end : int, control_codes : Dict[int, Tuple[str, str, Optional[Tuple[Callable[[int], str]]]]], control_header : Tuple[str, str, Optional[Tuple[Callable[[int], str]]]], extraction_charmap : Dict[int, str]) -> None: self.control_end : int = control_end self.control_codes : Dict[int, Tuple[str, str, Optional[Tuple[Callable[[int], str]]]]] = control_codes self.control_header : Tuple[str, str, Optional[Tuple[Callable[[int], str]]]] = control_header self.extraction_charmap : Dict[int, str] = extraction_charmap self.msg : Optional[bytes] = None def pop_char(self) -> int: # Implement in subclass raise NotImplementedError() def pop_char_end(self) -> int: # Implement in subclass raise NotImplementedError() def decode_char(self, c : int) -> str: # Implement in subclass raise NotImplementedError() def pop_byte(self) -> int: c, self.msg = self.msg[0], self.msg[1:] return c def pop_byte_end(self) -> int: c, self.msg = self.msg[-1], self.msg[:-1] return c def pop_2byte(self) -> int: u = self.pop_byte() l = self.pop_byte() return (u << 8) | l def pop_2byte_end(self) -> int: l = self.pop_byte_end() u = self.pop_byte_end() return (u << 8) | l def format_sfx_id(self, c : int) -> str: try: if c & 0x800: return sfx_ids[c & ~0x800] else: return f"{sfx_ids[c]} - SFX_FLAG" except KeyError: return f"0x{c:04X}" def format_byte_hex(self, c: int) -> str: return f"0x{c:02X}" def format_2byte_hex(self, c: int) -> str: return f"0x{c:04X}" def format_item_id(self, c : int) -> str: return item_ids[c] def format_decimal(self, c : int) -> str: return str(c) def format_text_id(self, c : int) -> str: return f"0x{c:04X}" def format_bg_arg(self, c : int) -> str: return { 0 : "X_LEFT", 1 : "X_RIGHT", }[c] def format_bg_bits1(self, c : int) -> str: c1 = (c >> 4) & 0xF c2 = (c >> 0) & 0xF fgcol = { 0 : "WHITE", 1 : "DARK_RED", 2 : "ORANGE", 3 : "WHITE_3", 4 : "WHITE_4", 5 : "WHITE_5", 6 : "WHITE_6", 7 : "WHITE_7", }[c1] bgcol = { 0 : "BLACK", 1 : "GOLD", 2 : "BLACK_2", 3 : "BLACK_3", }[c2] return f"{fgcol}, {bgcol}" def format_bg_bits2(self, c : int) -> str: c1 = (c >> 4) & 0xF c2 = (c >> 0) & 0xF y_offset = { 0 : "1", 1 : "2", }[c1] return f"{y_offset}, {c2}" def emit_tokens(self, tokens : List[Tuple[str, str]]) -> str: if len(tokens) == 0: return "\"\"" out = "" q_state = False s_state = False nindentlines = 0 def maybe_enter_q(): nonlocal out, q_state if not q_state: # If we're not in quotes, open quotes out += "\"" q_state = True def maybe_exit_q(space=False): nonlocal out, q_state if q_state: # If we're in quotes, close quotes out += "\"" if space: # If the caller asked for a trailing space following closing quotes, also add it out += " " q_state = False for tok_type,tok_dat in tokens: if tok_type == "HEADER": out += tok_dat + "\n" continue if tok_type in ("BOX_BREAK", "BOX_BREAK2", "BOX_BREAK_DELAYED"): # Box break has special handling since it is preceded by a newline and followed by two newlines # Close quotes since we're about to newline maybe_exit_q() nindentlines = 0 s_state = False # Emit box break control character surrounded by real newlines out += "\n" + tok_dat + "\n\n" continue if s_state: # Add a leading space before this token out += " " s_state = False if tok_type == "NEWLINE": # Coming up on a newline maybe_enter_q() # Add the escaped newline character and a real newline out += "\\n\"\n" # Always closes quotes since we're at EOL q_state = False # Indent the line if requested if nindentlines != 0: out += " " nindentlines -= 1 elif tok_type == "TEXT": # Coming up on text maybe_enter_q() # Emit text out += tok_dat else: # Control characters maybe_exit_q(space=True) # Emit the control character out += tok_dat if tok_type == "TWO_CHOICE": # Start a new line and indent next two lines nindentlines = 2-1 out += "\n " elif tok_type == "THREE_CHOICE": # Start a new line and indent next three lines nindentlines = 3-1 out += "\n " else: # No particular special handling # Signal to next token to add a trailing space s_state = True # If the message ended with quotes open, close them maybe_exit_q() if out[-1] == "\n": out = out[:-1] return out def decode_ctrl(self, name : str, argfmt : str, formatters : Tuple[Callable[[int], str]]) -> str: if argfmt == "": # No args to handle, just return the control char name return name # Read and format args args : List[int] = [] for a in argfmt: if a == "x": assert self.pop_byte() == 0 else: args.append({ "b" : self.pop_byte, "h" : self.pop_2byte, }[a]()) return f"{name}({', '.join(formatters[i](a) for i,a in enumerate(args))})" def decode(self, msg : bytes) -> str: if len(msg) == 0: # Empty message without even an END? return "None" # Strip trailing 0 bytes (assumed padding) while msg[-1] == 0: msg = msg[:-1] self.msg = msg # Must end in an END control code assert self.pop_char_end() == self.control_end, msg tokens : List[Tuple[str, str]] = [] token_run = "" def flush_text(): nonlocal tokens, token_run if token_run != "": tokens.append(("TEXT", token_run)) token_run = "" if self.control_header: tokens.append(("HEADER", self.decode_ctrl(*self.control_header))) # Consume the message, transforming it into tokens while len(self.msg) != 0: c = self.pop_char() # print(f"{c:02X}", self.control_codes.get(c,None)) if c in self.control_codes: # Hit a control character, flush current run of text flush_text() # Add a token for the control character tokens.append((self.control_codes[c][0], self.decode_ctrl(*self.control_codes[c]))) else: # Not a control character, accumulate a run of text if c in self.extraction_charmap: token_run += self.extraction_charmap[c] else: token_run += self.decode_char(c) # Flush any remaining text flush_text() self.msg = None # Convert tokens to final decoded text return self.emit_tokens(tokens) def format_highscore(self, c : int) -> str: return { 0: "HS_BANK_RUPEES", 1: "HS_UNK_1", 2: "HS_FISHING", 3: "HS_BOAT_ARCHERY", 4: "HS_HORSE_BACK_BALLOON", 6: "HS_SHOOTING_GALLERY" }[c] class MessageDecoderNES(MessageDecoder): def __init__(self) -> None: control_end = 0xBF control_codes = { 0x00: ("COLOR_DEFAULT", "", None), 0x01: ("COLOR_RED", "", None), 0x02: ("COLOR_GREEN", "", None), 0x03: ("COLOR_BLUE", "", None), 0x04: ("COLOR_YELLOW", "", None), 0x05: ("COLOR_LIGHTBLUE", "", None), 0X06: ("COLOR_PINK", "", None), 0x07: ("COLOR_SILVER", "", None), 0x08: ("COLOR_ORANGE", "", None), 0x0A: ("TEXT_SPEED", "", None), 0x0B: ("HS_BOAT_ARCHERY", "", None), 0x0C: ("STRAY_FAIRIES", "", None), 0x0D: ("TOKENS", "", None), 0x0E: ("POINTS_TENS", "", None), 0x0F: ("POINTS_THOUSANDS", "", None), 0x10: ("BOX_BREAK", "", None), 0x11: ("NEWLINE", "", None), 0x12: ("BOX_BREAK2", "", None), 0x13: ("CARRIAGE_RETURN", "", None), 0x14: ("SHIFT", "b", (self.format_decimal,)), 0x15: ("CONTINUE", "", None), 0x16: ("NAME", "", None), 0x17: ("QUICKTEXT_ENABLE", "", None), 0x18: ("QUICKTEXT_DISABLE", "", None), 0x19: ("EVENT", "", None), 0x1A: ("PERSISTENT", "", None), 0x1B: ("BOX_BREAK_DELAYED", "h", (self.format_decimal,)), 0x1C: ("FADE", "h", (self.format_decimal,)), 0x1D: ("FADE_SKIPPABLE", "h", (self.format_decimal,)), 0x1E: ("SFX", "h", (self.format_sfx_id,)), 0x1F: ("DELAY", "h", (self.format_decimal,)), 0xBF: ("END", "", None), 0xC1: ("BACKGROUND", "", None), 0xC2: ("TWO_CHOICE", "", None), 0xC3: ("THREE_CHOICE", "", None), 0xC4: ("TIMER_POSTMAN", "", None), 0xC5: ("TIMER_MINIGAME_1", "", None), 0xC6: ("TIMER_2", "", None), 0xC7: ("TIMER_MOON_CRASH", "", None), 0xC8: ("TIMER_MINIGAME_2", "", None), 0xC9: ("TIMER_TIMER_ENV_HAZARD", "", None), 0xCA: ("TIME", "", None), 0xCB: ("CHEST_FLAGS", "", None), 0xCC: ("INPUT_BANK", "", None), 0xCD: ("RUPEES_SELECTED", "", None), 0xCE: ("RUPEES_TOTAL", "", None), 0xCF: ("TIME_UNTIL_MOON_CRASH", "", None), 0xD0: ("INPUT_DOGGY_RACETRACK_BET", "", None), 0xD1: ("INPUT_BOMBER_CODE", "", None), 0xD2: ("PAUSE_MENU", "", None), 0xD3: ("TIME_SPEED", "", None), 0xD4: ("OWL_WARP", "", None), 0xD5: ("INPUT_LOTTERY_CODE", "", None), 0xD6: ("SPIDER_HOUSE_MASK_CODE", "", None), 0xD7: ("STRAY_FAIRIES_LEFT_WOODFALL", "", None), 0xD8: ("STRAY_FAIRIES_LEFT_SNOWHEAD", "", None), 0xD9: ("STRAY_FAIRIES_LEFT_GREAT_BAY", "", None), 0xDA: ("STRAY_FAIRIES_LEFT_STONE_TOWER", "", None), 0xDB: ("POINTS_BOAT_ARCHERY", "", None), 0xDC: ("LOTTERY_CODE", "", None), 0xDD: ("LOTTERY_CODE_GUESS", "", None), 0xDE: ("HELD_ITEM_PRICE", "", None), 0xDF: ("BOMBER_CODE", "", None), 0xE0: ("EVENT2", "", None), 0xE1: ("SPIDER_HOUSE_MASK_CODE_1", "", None), 0xE2: ("SPIDER_HOUSE_MASK_CODE_2", "", None), 0xE3: ("SPIDER_HOUSE_MASK_CODE_3", "", None), 0xE4: ("SPIDER_HOUSE_MASK_CODE_4", "", None), 0xE5: ("SPIDER_HOUSE_MASK_CODE_5", "", None), 0xE6: ("SPIDER_HOUSE_MASK_CODE_6", "", None), 0xE7: ("HOURS_UNTIL_MOON_CRASH", "", None), 0xE8: ("TIME_UNTIL_NEW_DAY", "", None), 0xF0: ("HS_POINTS_BANK_RUPEES", "", None), 0xF1: ("HS_POINTS_UNK_1", "", None), 0xF2: ("HS_POINTS_FISHING", "", None), 0xF3: ("HS_TIME_BOAT_ARCHERY", "", None), 0xF4: ("HS_TIME_HORSE_BACK_BALLOON", "", None), 0xF5: ("HS_TIME_LOTTERY_GUESS", "", None), 0xF6: ("HS_TOWN_SHOOTING_GALLERY", "", None), 0xF7: ("HS_UNK_1", "", None), 0xF8: ("HS_UNK_3_LOWER", "", None), 0xF9: ("HS_HORSE_BACK_BALLOON", "", None), 0xFA: ("HS_DEKU_PLAYGROUND_DAY_1", "", None), 0xFB: ("HS_DEKU_PLAYGROUND_DAY_2", "", None), 0xFC: ("HS_DEKU_PLAYGROUND_DAY_3", "", None), 0xFD: ("DEKU_PLAYGROUND_NAME_DAY_1", "", None), 0xFE: ("DEKU_PLAYGROUND_NAME_DAY_2", "", None), 0xFF: ("DEKU_PLAYGROUND_NAME_DAY_3", "", None) } control_header = ( "HEADER", "hbhhhh", ( self.format_2byte_hex, self.format_byte_hex, self.format_text_id, self.format_2byte_hex, self.format_2byte_hex, self.format_2byte_hex, ) ) extraction_charmap = { 0xB0: '[A]', 0xB1: '[B]', 0xB2: '[C]', 0xB3: '[L]', 0xB4: '[R]', 0xB5: '[Z]', 0xB6: '[C-Up]', 0xB7: '[C-Down]', 0xB8: '[C-Left]', 0xB9: '[C-Right]', 0xBA: '▼', 0xBB: '[Control-Pad]' } super().__init__(control_end, control_codes, control_header, extraction_charmap) self.pop_char = self.pop_byte self.pop_char_end = self.pop_byte_end def decode_char(self, c : int) -> str: decoded = bytes([c]).decode("ASCII") # Escape quotes within the text itself if decoded == "\"": decoded = "\\\"" return decoded class MessageDecoderCredits(MessageDecoder): def __init__(self) -> None: control_end = 0x2 control_codes = { 0x00: ("COLOR_DEFAULT", "", None), 0x01: ("NEWLINE", "", None), 0x02: ("END", "", None), 0x04: ("BOX_BREAK", "", None), 0x05: ("COLOR", "b", (self.format_color,)), 0X06: ("SHIFT", "b", (self.format_decimal,)), 0x07: ("TEXTID", "h", (self.format_text_id,)), 0x08: ("QUICKTEXT_ENABLE", "", None), 0x09: ("QUICKTEXT_DISABLE", "", None), 0x0A: ("PERSISTENT", "", None), 0x0B: ("EVENT", "", None), 0x0C: ("BOX_BREAK_DELAY", "h", (self.format_decimal,)), 0x0D: ("WAIT_INPUT", "", None), 0x0E: ("FADE", "b", (self.format_decimal,)), 0x0F: ("NAME", "", None), 0x10: ("OCARINA", "", None), 0x11: ("FADE2", "h", (self.format_decimal,)), 0x12: ("SFX", "h", (self.format_sfx_id,)), 0x13: ("ITEM_ICON", "b", (self.format_item_id,)), 0x14: ("TEXT_SPEED", "b", (self.format_decimal,)), 0x15: ("BACKGROUND", "bbb", (self.format_bg_arg, self.format_bg_bits1, self.format_bg_bits2,)), 0x16: ("MARATHONTIME", "", None), 0x17: ("RACETIME", "", None), 0x18: ("POINTS", "", None), 0x1A: ("UNSKIPPABLE", "", None), 0x1B: ("TWO_CHOICE", "", None), 0x1C: ("THREE_CHOICE", "", None), 0x1D: ("FISH_INFO", "", None), 0x1E: ("HIGHSCORE", "b", (self.format_highscore,)), 0x1F: ("TIME", "", None) } extraction_charmap = {} super().__init__(control_end, control_codes, None, extraction_charmap) self.pop_char = self.pop_byte self.pop_char_end = self.pop_byte_end def decode_char(self, c : int) -> str: decoded = bytes([c]).decode("ASCII") # Escape quotes within the text itself if decoded == "\"": decoded = "\\\"" return decoded def format_color(self, c): c1 = c & 0xF c2 = c & ~0xF assert c2 == 0x0C00 return { 0 : "DEFAULT", 1 : "RED", 2 : "ADJUSTABLE", 3 : "BLUE", 4 : "LIGHTBLUE", 5 : "PURPLE", 6 : "YELLOW", 7 : "BLACK", }[c1] class MessageTableDesc: def __init__(self, table_name : str, seg_name : str, decoder : MessageDecoder, parent : Optional[int]) -> None: self.table_name : str = table_name self.seg_name : str = seg_name self.decoder : MessageDecoder = decoder self.parent : Optional[int] = parent class MessageTableEntry: SIZE = 8 def __init__(self, text_id : int, box_type : int, box_pos : int, addr : int) -> None: self.text_id, self.box_type, self.box_pos, self.addr = text_id, box_type, box_pos, addr @staticmethod def from_bin(data : bytes) -> "MessageTableEntry": text_id,info,addr = struct.unpack(">HBxI", data) box_type = (info >> 4) & 0xF box_pos = (info >> 0) & 0xF return MessageTableEntry(text_id, box_type, box_pos, addr) class MessageData: def __init__(self, box_type : int, box_pos : int, decoded_text : str): self.box_type : int = box_type self.box_pos : int = box_pos self.decoded_text : str = decoded_text class MessageEntry: def __init__(self, message_tables : List[Optional[MessageTableDesc]], text_id : int) -> None: self.text_id : int = text_id self.data : List[Optional[MessageData]] = [None for _ in message_tables] self.select = tuple(tbl is not None for tbl in message_tables) def define_message(self, defn : str, box_type : int, box_pos : int, data : List[Optional[MessageData]]) -> str: out = f"{defn}(0x{self.text_id:04X}, 0x{box_type:02X}, 0x{box_pos:02X},\n" out += "\n,\n".join(f"MSG(\n{d.decoded_text}\n)" if d is not None else "MSG(/* MISSING */)" for d in data) out += "\n)\n" return out def decode(self) -> str: selection = tuple(not (select and data is None) for select,data in zip(self.select,self.data)) assert any(selection) out = self.define_message("DEFINE_MESSAGE", self.data[0].box_type, self.data[0].box_pos, self.data) return out # TODO: Use version_config instead def collect_messages(message_tables : List[Optional[MessageTableDesc]], baserom_segments_dir : Path, config : Dict[str,int], code_vram : int, code_bin : bytes): messages : Dict[int,MessageEntry] = {} all_text_ids : List[Optional[List[int]]] = [None for _ in range(len(message_tables))] for lang_num,desc in enumerate(message_tables): if desc is None: continue baserom_seg = (baserom_segments_dir / desc.seg_name).read_bytes() code_offset = config[desc.table_name] - code_vram if desc.parent is None: # Complete table table_entries : List[MessageTableEntry] = [] text_ids : List[int] = [] while True: end = code_offset + MessageTableEntry.SIZE entry = MessageTableEntry.from_bin(code_bin[code_offset:end]) code_offset = end table_entries.append(entry) text_ids.append(entry.text_id) if entry.text_id == 0xFFFF: break all_text_ids[lang_num] = text_ids for i in range(len(table_entries) - 1): curr = table_entries[i + 0] next = table_entries[i + 1] curr_offset = curr.addr & ~0x0F000000 next_offset = (next.addr & ~0x0F000000) if next.text_id != 0xFFFF else len(baserom_seg) size = next_offset - curr_offset if curr.text_id not in messages: messages[curr.text_id] = MessageEntry(message_tables, curr.text_id) messages[curr.text_id].data[lang_num] = MessageData( curr.box_type, curr.box_pos, desc.decoder.decode(baserom_seg[curr_offset : curr_offset+size])) else: # Addresses only for text_id in all_text_ids[desc.parent][:-1]: # Exclude text id 0xFFFF if text_id in (0xFFFC,): continue curr = read4(code_bin, code_offset + 0) next = read4(code_bin, code_offset + 4) code_offset += 4 curr_offset = curr & ~0x0F000000 next_offset = next & ~0x0F000000 if text_id != 0xFFFD else len(baserom_seg) size = next_offset - curr_offset # The text id is guaranteed to already exist parent_data = messages[text_id].data[desc.parent] messages[text_id].data[lang_num] = MessageData( parent_data.box_type, parent_data.box_pos, desc.decoder.decode(baserom_seg[curr_offset:curr_offset+size])) return messages def main(): parser = argparse.ArgumentParser(description="Extract text from the baserom into .h files") parser.add_argument( "baserom_segments_dir", type=Path, help="Directory of uncompressed ROM segments", ) parser.add_argument( "output_dir", type=Path, help="Output directory to place files in", ) parser.add_argument( "-v", "--version", help="version to process", default="n64-us", ) args = parser.parse_args() baserom_segments_dir : Path = args.baserom_segments_dir output_dir : Path = args.output_dir args.output_dir.mkdir(parents=True, exist_ok=True) # TODO: use version config instead to get code vram code_vram = 0x800A5AC0 code_bin = (baserom_segments_dir / "code").read_bytes() nes_decoder = MessageDecoderNES() credits_decoder = MessageDecoderCredits() message_tables : MessageTableDesc = [None for _ in range(1)] # EN message_table_staff : MessageTableDesc = None message_tables[0] = MessageTableDesc("sMessageTableNES", "message_data_static", nes_decoder, None) message_table_staff = MessageTableDesc("sMessageTableCredits", "staff_message_data_static", credits_decoder, None) # TODO: use version config instead config = { "sMessageTableNES": 0x801C6B98, "sMessageTableCredits": 0x801CFB08, } messages = collect_messages(message_tables, baserom_segments_dir, config, code_vram, code_bin) staff_messages = collect_messages([message_table_staff], baserom_segments_dir, config, code_vram, code_bin) message_data = [] for text_id in sorted(messages.keys()): if text_id in (0xFFFC,0xFFFD): # Skip committed text ids continue message_data.append(messages[text_id].decode()) message_data = "\n".join(message_data) message_data_staff = "\n".join(staff_messages[text_id].decode() for text_id in sorted(staff_messages.keys())) (output_dir / "message_data.h").write_text(message_data) (output_dir / "message_data_staff.h").write_text(message_data_staff) if __name__ == "__main__": main()