From f9b21038384bafeb8e3cc03a642a514e658031b2 Mon Sep 17 00:00:00 2001 From: scawful Date: Thu, 9 Jun 2022 17:58:54 -0400 Subject: [PATCH] Added Constants based on ZScream Constants --- src/Application/Core/Constants.h | 1175 ++++++++++++++++++++++++++++++ 1 file changed, 1175 insertions(+) create mode 100644 src/Application/Core/Constants.h diff --git a/src/Application/Core/Constants.h b/src/Application/Core/Constants.h new file mode 100644 index 00000000..102cdcc1 --- /dev/null +++ b/src/Application/Core/Constants.h @@ -0,0 +1,1175 @@ +#ifndef YAZE_APPLICATION_CORE_CONSTANTS_H +#define YAZE_APPLICATION_CORE_CONSTANTS_H + +#include +#include + +namespace yaze { +namespace Application { +namespace Core { +namespace Constants { + + // =========================================================================================== + // Graphics + // =========================================================================================== + + constexpr int tile_address = 0x1B52; // JP = Same + constexpr int tile_address_floor = 0x1B5A; // JP = Same + constexpr int subtype1_tiles = 0x8000; // JP = Same + constexpr int subtype2_tiles = 0x83F0; // JP = Same + constexpr int subtype3_tiles = 0x84F0; // JP = Same + constexpr int gfx_animated_pointer = 0x10275; //JP 0x10624 //long pointer + constexpr int overworldgfxGroups2 = 0x6073; //0x60B3 + constexpr int gfx_1_pointer = 0x6790; //2byte pointer bank 00 pc -> 0x4320 CF80 ; 004F80 + constexpr int gfx_2_pointer = 0x6795; //D05F ; 00505F + constexpr int gfx_3_pointer = 0x679A; //D13E ; 00513E + constexpr int hud_palettes = 0xDD660; + constexpr int maxGfx = 0xC3FB5; + + // =========================================================================================== + // Overworld Related Variables + // =========================================================================================== + + constexpr int compressedAllMap32PointersHigh = 0x1794D; + constexpr int compressedAllMap32PointersLow = 0x17B2D; + constexpr int overworldgfxGroups = 0x05D97; + constexpr int map16Tiles = 0x78000; + constexpr int map32TilesTL = 0x18000; + constexpr int map32TilesTR = 0x1B400; + constexpr int map32TilesBL = 0x20000; + constexpr int map32TilesBR = 0x23400; + constexpr int overworldPalGroup1 = 0xDE6C8; + constexpr int overworldPalGroup2 = 0xDE86C; + constexpr int overworldPalGroup3 = 0xDE604; + constexpr int overworldMapPalette = 0x7D1C; + constexpr int overworldSpritePalette = 0x7B41; + constexpr int overworldMapPaletteGroup = 0x75504; + constexpr int overworldSpritePaletteGroup = 0x75580; + constexpr int overworldSpriteset = 0x7A41; + constexpr int overworldSpecialGFXGroup = 0x16821; + constexpr int overworldSpecialPALGroup = 0x16831; + + constexpr int overworldSpritesBegining = 0x4C881; + constexpr int overworldSpritesAgahnim = 0x4CA21; + constexpr int overworldSpritesZelda = 0x4C901; + + constexpr int overworldItemsPointers = 0xDC2F9; + constexpr int overworldItemsAddress = 0xDC8B9; //1BC2F9 + constexpr int overworldItemsBank = 0xDC8BF; + constexpr int overworldItemsEndData = 0xDC89C; //0DC89E + + constexpr int mapGfx = 0x7C9C; + constexpr int overlayPointers = 0x77664; + constexpr int overlayPointersBank = 0x0E; + + constexpr int overworldTilesType = 0x71459; + constexpr int overworldMessages = 0x3F51D; + + //TODO: + constexpr int overworldMusicBegining = 0x14303; + constexpr int overworldMusicZelda = 0x14303 + 0x40; + constexpr int overworldMusicMasterSword = 0x14303 + 0x80; + constexpr int overworldMusicAgahim = 0x14303 + 0xC0; + constexpr int overworldMusicDW = 0x14403; + + constexpr int overworldEntranceAllowedTilesLeft = 0xDB8C1; + constexpr int overworldEntranceAllowedTilesRight = 0xDB917; + + constexpr int overworldMapSize = 0x12844; //0x00 = small maps, 0x20 = large maps + constexpr int overworldMapSizeHighByte = 0x12884; //0x01 = small maps, 0x03 = large maps + + //relative to the WORLD + 0x200 per map + //large map that are not == parent id = same position as their parent! + //eg for X position small maps : + //0000, 0200, 0400, 0600, 0800, 0A00, 0C00, 0E00 + //all Large map would be : + //0000, 0000, 0400, 0400, 0800, 0800, 0C00, 0C00 + + constexpr int overworldTransitionPositionY = 0x128C4; + constexpr int overworldTransitionPositionX = 0x12944; + + constexpr int overworldScreenSize = 0x1788D; + + //=========================================================================================== + //Overworld Exits/Entrances Variables + //=========================================================================================== + constexpr int OWExitRoomId = 0x15D8A; // 0x15E07 Credits sequences + //105C2 Ending maps + //105E2 Sprite Group Table for Ending + constexpr int OWExitMapId = 0x15E28; + constexpr int OWExitVram = 0x15E77; + constexpr int OWExitYScroll = 0x15F15; + constexpr int OWExitXScroll = 0x15FB3; + constexpr int OWExitYPlayer = 0x16051; + constexpr int OWExitXPlayer = 0x160EF; + constexpr int OWExitYCamera = 0x1618D; + constexpr int OWExitXCamera = 0x1622B; + constexpr int OWExitDoorPosition = 0x15724; + constexpr int OWExitUnk1 = 0x162C9; + constexpr int OWExitUnk2 = 0x16318; + constexpr int OWExitDoorType1 = 0x16367; + constexpr int OWExitDoorType2 = 0x16405; + constexpr int OWEntranceMap = 0xDB96F; + constexpr int OWEntrancePos = 0xDBA71; + constexpr int OWEntranceEntranceId = 0xDBB73; + constexpr int OWHolePos = 0xDB800;//(0x13 entries, 2 bytes each) modified(less 0x400) map16 coordinates for each hole + constexpr int OWHoleArea = 0xDB826;//(0x13 entries, 2 bytes each) corresponding area numbers for each hole + constexpr int OWHoleEntrance = 0xDB84C;//(0x13 entries, 1 byte each) corresponding entrance numbers + + constexpr int OWExitMapIdWhirlpool = 0x16AE5; // JP = ;016849 + constexpr int OWExitVramWhirlpool = 0x16B07; // JP = ;01686B + constexpr int OWExitYScrollWhirlpool = 0x16B29;// JP = ;01688D + constexpr int OWExitXScrollWhirlpool = 0x16B4B;// JP = ;016DE7 + constexpr int OWExitYPlayerWhirlpool = 0x16B6D;// JP = ;016E09 + constexpr int OWExitXPlayerWhirlpool = 0x16B8F;// JP = ;016E2B + constexpr int OWExitYCameraWhirlpool = 0x16BB1;// JP = ;016E4D + constexpr int OWExitXCameraWhirlpool = 0x16BD3;// JP = ;016E6F + constexpr int OWExitUnk1Whirlpool = 0x16BF5;// JP = ;016E91 + constexpr int OWExitUnk2Whirlpool = 0x16C17;// JP = ;016EB3 + constexpr int OWWhirlpoolPosition = 0x16CF8;// JP = ;016F94 + + //=========================================================================================== + //Dungeon Related Variables + //=========================================================================================== + //That could be turned into a pointer : + constexpr int dungeons_palettes_groups = 0x75460; //JP 0x67DD0 + constexpr int dungeons_main_bg_palette_pointers = 0xDEC4B; //JP Same + constexpr int dungeons_palettes = 0xDD734; //JP Same (where all dungeons palettes are) + + //That could be turned into a pointer : + constexpr int room_items_pointers = 0xDB69;//JP 0xDB67 + + constexpr int rooms_sprite_pointer = 0x4C298; //JP Same //2byte bank 09D62E + constexpr int room_header_pointer = 0xB5DD; //LONG + constexpr int room_header_pointers_bank = 0xB5E7; //JP Same + + constexpr int gfx_groups_pointer = 0x6237; + constexpr int room_object_layout_pointer = 0x882D; + + constexpr int room_object_pointer = 0x874C; //Long pointer + + constexpr int chests_length_pointer = 0xEBF6; + constexpr int chests_data_pointer1 = 0xEBFB; + //constexpr int chests_data_pointer2 = 0xEC0A; //Disabled for now could be used for expansion + //constexpr int chests_data_pointer3 = 0xEC10; //Disabled for now could be used for expansion + + constexpr int blocks_length = 0x8896; //word value + constexpr int blocks_pointer1 = 0x15AFA; + constexpr int blocks_pointer2 = 0x15B01; + constexpr int blocks_pointer3 = 0x15B08; + constexpr int blocks_pointer4 = 0x15B0F; + + constexpr int torch_data = 0x2736A; //JP 0x2704A + constexpr int torches_length_pointer = 0x88C1; + + constexpr int sprite_blockset_pointer = 0x5B57; + constexpr int sprites_data = 0x4D8B0;//It use the unused pointers to have more space //Save purpose + constexpr int sprites_data_empty_room = 0x4D8AE; + constexpr int sprites_end_data = 0x4EC9E; + + constexpr int pit_pointer = 0x394AB; + constexpr int pit_count = 0x394A6; + + constexpr int doorPointers = 0xF83C0; + + //doors + constexpr int door_gfx_up = 0x4D9E; + // + constexpr int door_gfx_down = 0x4E06; + constexpr int door_gfx_cavexit_down = 0x4E06; + constexpr int door_gfx_left = 0x4E66; + constexpr int door_gfx_right = 0x4EC6; + + constexpr int door_pos_up = 0x197E; + constexpr int door_pos_down = 0x1996; + constexpr int door_pos_left = 0x19AE; + constexpr int door_pos_right = 0x19C6; + + //TEXT EDITOR RELATED CONSTANTS + constexpr int gfx_font = 0x70000; //2bpp format + constexpr int text_data = 0xE0000; + constexpr int text_data2 = 0x75F40; + constexpr int pointers_dictionaries = 0x74703; + constexpr int characters_width = 0x74ADF; + + //=========================================================================================== + //Dungeon Entrances Related Variables + //=========================================================================================== + constexpr int entrance_room = 0x14813; //0x14577 //word value for each room + constexpr int entrance_scrolledge = 0x1491D; //0x14681 //8 bytes per room, HU, FU, HD, FD, HL, FL, HR, FR + constexpr int entrance_yscroll = 0x14D45; // 0x14AA9 //2bytes each room + constexpr int entrance_xscroll = 0x14E4F; // 0x14BB3 //2bytes + constexpr int entrance_yposition = 0x14F59; //0x14CBD 2bytes + constexpr int entrance_xposition = 0x15063;// 0x14DC7 2bytes + constexpr int entrance_camerayposition = 0x1516D;// 0x14ED1 2bytes + constexpr int entrance_cameraxposition = 0x15277;// 0x14FDB 2bytes + + constexpr int entrance_gfx_group = 0x5D97; + constexpr int entrance_blockset = 0x15381; //0x150E5 1byte + constexpr int entrance_floor = 0x15406; // 0x1516A 1byte + constexpr int entrance_dungeon = 0x1548B; // 0x151EF 1byte (dungeon id) + constexpr int entrance_door = 0x15510; // 0x15274 1byte + constexpr int entrance_ladderbg = 0x15595; //0x152F9 //1 byte, ---b ---a b = bg2, a = need to check -_- + constexpr int entrance_scrolling = 0x1561A;//0x1537E //1byte --h- --v- + constexpr int entrance_scrollquadrant = 0x1569F; //0x15403 1byte + constexpr int entrance_exit = 0x15724; //0x15488 //2byte word + constexpr int entrance_music = 0x1582E; //0x15592 + + constexpr int startingentrance_room = 0x15B6E; //0x158D2 //word value for each room + constexpr int startingentrance_scrolledge = 0x15B7C; //0x158E0 //8 bytes per room, HU, FU, HD, FD, HL, FL, HR, FR + constexpr int startingentrance_yscroll = 0x15BB4; // 0x14AA9 //2bytes each room + constexpr int startingentrance_xscroll = 0x15BC2; // 0x14BB3 //2bytes + constexpr int startingentrance_yposition = 0x15BD0; //0x14CBD 2bytes + constexpr int startingentrance_xposition = 0x15BDE;// 0x14DC7 2bytes + constexpr int startingentrance_camerayposition = 0x15BEC;// 0x14ED1 2bytes + constexpr int startingentrance_cameraxposition = 0x15BFA;// 0x14FDB 2bytes + + constexpr int startingentrance_blockset = 0x15C08; //0x150E5 1byte + constexpr int startingentrance_floor = 0x15C0F; // 0x1516A 1byte + constexpr int startingentrance_dungeon = 0x15C16; // 0x151EF 1byte (dungeon id) + + constexpr int startingentrance_door = 0x15C2B; // 0x15274 1byte + + constexpr int startingentrance_ladderbg = 0x15C1D; //0x152F9 //1 byte, ---b ---a b = bg2, a = need to check -_- + constexpr int startingentrance_scrolling = 0x15C24;//0x1537E //1byte --h- --v- + constexpr int startingentrance_scrollquadrant = 0x15C2B; //0x15403 1byte + constexpr int startingentrance_exit = 0x15C32; //0x15488 //2byte word + constexpr int startingentrance_music = 0x15C4E; //0x15592 + constexpr int startingentrance_entrance = 0x15C40; + + constexpr int items_data_start = 0xDDE9; //save purpose + constexpr int items_data_end = 0xE6B2; //save purpose + constexpr int initial_equipement = 0x271A6; + constexpr int messages_id_dungeon = 0x3F61D; + + constexpr int chests_backupitems = 0x3B528; //item id you get instead if you already have that item + constexpr int chests_yoffset = 0x4836C; + constexpr int chests_xoffset = 0x4836C + (76 * 1); + constexpr int chests_itemsgfx = 0x4836C + (76 * 2); + constexpr int chests_itemswide = 0x4836C + (76 * 3); + constexpr int chests_itemsproperties = 0x4836C + (76 * 4); + constexpr int chests_sramaddress = 0x4836C + (76 * 5); + constexpr int chests_sramvalue = 0x4836C + (76 * 7); + constexpr int chests_msgid = 0x442DD; + + constexpr int dungeons_startrooms = 0x7939; + constexpr int dungeons_endrooms = 0x792D; + constexpr int dungeons_bossrooms = 0x10954;//short value + + //Bed Related Values (Starting location) + + constexpr int bedPositionX = 0x039A37; //short value + constexpr int bedPositionY = 0x039A32; //short value + + constexpr int bedPositionResetXLow = 0x02DE53; //short value(on 2 different bytes) + constexpr int bedPositionResetXHigh = 0x02DE58; //^^^^^^ + + constexpr int bedPositionResetYLow = 0x02DE5D; //short value(on 2 different bytes) + constexpr int bedPositionResetYHigh = 0x02DE62;//^^^^^^ + + constexpr int bedSheetPositionX = 0x0480BD; //short value + constexpr int bedSheetPositionY = 0x0480B8; //short value + + //=========================================================================================== + //Gravestones related variables + //=========================================================================================== + + constexpr int GravesYTilePos = 0x49968; //short (0x0F entries) + constexpr int GravesXTilePos = 0x49986; //short (0x0F entries) + constexpr int GravesTilemapPos = 0x499A4; //short (0x0F entries) + constexpr int GravesGFX = 0x499C2; //short (0x0F entries) + + constexpr int GravesXPos = 0x4994A; //short (0x0F entries) + constexpr int GravesYLine = 0x4993A; //short (0x08 entries) + constexpr int GravesCountOnY = 0x499E0; //Byte 0x09 entries + + constexpr int GraveLinkSpecialHole = 0x46DD9; //short + constexpr int GraveLinkSpecialStairs = 0x46DE0; //short + + //=========================================================================================== + //Palettes Related Variables - This contain all the palettes of the game + //=========================================================================================== + constexpr int overworldPaletteMain = 0xDE6C8; + constexpr int overworldPaletteAuxialiary = 0xDE86C; + constexpr int overworldPaletteAnimated = 0xDE604; + constexpr int globalSpritePalettesLW = 0xDD218; + constexpr int globalSpritePalettesDW = 0xDD290; + constexpr int armorPalettes = 0xDD308; // Green, Blue, Red, Bunny, Electrocuted (15 colors each) + constexpr int spritePalettesAux1 = 0xDD39E; // 7 colors each + constexpr int spritePalettesAux2 = 0xDD446; // 7 colors each + constexpr int spritePalettesAux3 = 0xDD4E0; // 7 colors each + constexpr int swordPalettes = 0xDD630; // 3 colors each - 4 entries + constexpr int shieldPalettes = 0xDD648; // 4 colors each - 3 entries + constexpr int hudPalettes = 0xDD660; + constexpr int dungeonMapPalettes = 0xDD70A; // 21 colors + constexpr int dungeonMainPalettes = 0xDD734; //(15*6) colors each - 20 entries + constexpr int dungeonMapBgPalettes = 0xDE544; // 16*6 + constexpr int hardcodedGrassLW = 0x5FEA9; // Mirrored Value at 0x75645 : 0x75625 + constexpr int hardcodedGrassDW = 0x05FEB3; // 0x7564F + constexpr int hardcodedGrassSpecial = 0x75640; + + //=========================================================================================== + //Dungeon Map Related Variables + //=========================================================================================== + constexpr int dungeonMap_rooms_ptr = 0x57605; //14 pointers of map data + constexpr int dungeonMap_floors = 0x575D9; //14 words values + + constexpr int dungeonMap_gfx_ptr = 0x57BE4; //14 pointers of gfx data + constexpr int dungeonMap_datastart = 0x57039; //data start for floors/gfx MUST skip 575D9 to 57621 (pointers) + + + constexpr int dungeonMap_expCheck = 0x56652; //IF Byte = 0xB9 dungeon maps are not expanded + constexpr int dungeonMap_tile16 = 0x57009; + constexpr int dungeonMap_tile16Exp = 0x109010; + constexpr int dungeonMap_bossrooms = 0x56807; //14 words values 0x000F = no boss + + constexpr int triforceVertices = 0x04FFD2; //group of 3, X, Y ,Z + constexpr int TriforceFaces = 0x04FFE4; //group of 5 + + constexpr int crystalVertices = 0x04FF98; + + //=========================================================================================== + // Names + //=========================================================================================== + static const std::string RoomEffect[] = + { + "Nothing", + "Nothing", + "Moving Floor", + "Moving Water", + "Trinexx Shell", + "Red Flashes", + "Light Torch to See Floor", + "Ganon's Darkness" + }; + + static const std::string RoomTag[] = + { + "Nothing", + + "NW Kill Enemy to Open", + "NE Kill Enemy to Open", + "SW Kill Enemy to Open", + "SE Kill Enemy to Open", + "W Kill Enemy to Open", + "E Kill Enemy to Open", + "N Kill Enemy to Open", + "S Kill Enemy to Open", + "Clear Quadrant to Open", + "Clear Full Tile to Open", + + "NW Push Block to Open", + "NE Push Block to Open", + "SW Push Block to Open", + "SE Push Block to Open", + "W Push Block to Open", + "E Push Block to Open", + "N Push Block to Open", + "S Push Block to Open", + "Push Block to Open", + "Pull Lever to Open", + "Collect Prize to Open", + + "Hold Switch Open Door", + "Toggle Switch to Open Door", + "Turn off Water", + "Turn on Water", + "Water Gate", + "Water Twin", + "Moving Wall Right", + "Moving Wall Left", + "Crash", + "Crash", + "Push Switch Exploding Wall", + "Holes 0", + "Open Chest (Holes 0)", + "Holes 1", + "Holes 2", + "Defeat Boss for Dungeon Prize", + + "SE Kill Enemy to Push Block", + "Trigger Switch Chest", + "Pull Lever Exploding Wall", + "NW Kill Enemy for Chest", + "NE Kill Enemy for Chest", + "SW Kill Enemy for Chest", + "SE Kill Enemy for Chest", + "W Kill Enemy for Chest", + "E Kill Enemy for Chest", + "N Kill Enemy for Chest", + "S Kill Enemy for Chest", + "Clear Quadrant for Chest", + "Clear Full Tile for Chest", + + "Light Torches to Open", + "Holes 3", + "Holes 4", + "Holes 5", + "Holes 6", + "Agahnim Room", + "Holes 7", + "Holes 8", + "Open Chest for Holes 8", + "Push Block for Chest", + "Clear Room for Triforce Door", + "Light Torches for Chest", + "Kill Boss Again" + }; + + static const std::string SecretItemNames[] = + { + "Nothing", + "Green Rupee", + "Rock hoarder", + "Bee", + "Health pack", + "Bomb", + "Heart ", + "Blue Rupee", + + "Key", + "Arrow", + "Bomb", + "Heart", + "Magic", + "Full Magic", + "Cucco", + "Green Soldier", + "Bush Stal", + "Blue Soldier", + + "Landmine", + "Heart", + "Fairy", + "Heart", + "Nothing ", //22 + + "Hole", + "Warp", + "Staircase", + "Bombable", + "Switch" + }; + + + static const std::string Type1RoomObjectNames[] = + { + "Ceiling ↔", + "Wall (top, north) ↔", + "Wall (top, south) ↔", + "Wall (bottom, north) ↔", + "Wall (bottom, south) ↔", + "Wall columns (north) ↔", + "Wall columns (south) ↔", + "Deep wall (north) ↔", + "Deep wall (south) ↔", + "Diagonal wall A ◤ (top) ↔", + "Diagonal wall A ◣ (top) ↔", + "Diagonal wall A ◥ (top) ↔", + "Diagonal wall A ◢ (top) ↔", + "Diagonal wall B ◤ (top) ↔", + "Diagonal wall B ◣ (top) ↔", + "Diagonal wall B ◥ (top) ↔", + "Diagonal wall B ◢ (top) ↔", + "Diagonal wall C ◤ (top) ↔", + "Diagonal wall C ◣ (top) ↔", + "Diagonal wall C ◥ (top) ↔", + "Diagonal wall C ◢ (top) ↔", + "Diagonal wall A ◤ (bottom) ↔", + "Diagonal wall A ◣ (bottom) ↔", + "Diagonal wall A ◥ (bottom) ↔", + "Diagonal wall A ◢ (bottom) ↔", + "Diagonal wall B ◤ (bottom) ↔", + "Diagonal wall B ◣ (bottom) ↔", + "Diagonal wall B ◥ (bottom) ↔", + "Diagonal wall B ◢ (bottom) ↔", + "Diagonal wall C ◤ (bottom) ↔", + "Diagonal wall C ◣ (bottom) ↔", + "Diagonal wall C ◥ (bottom) ↔", + "Diagonal wall C ◢ (bottom) ↔", + "Platform stairs ↔", + "Rail ↔", + "Pit edge ┏━┓ A (north) ↔", + "Pit edge ┏━┓ B (north) ↔", + "Pit edge ┏━┓ C (north) ↔", + "Pit edge ┏━┓ D (north) ↔", + "Pit edge ┏━┓ E (north) ↔", + "Pit edge ┗━┛ (south) ↔", + "Pit edge ━━━ (south) ↔", + "Pit edge ━━━ (north) ↔", + "Pit edge ━━┛ (south) ↔", + "Pit edge ┗━━ (south) ↔", + "Pit edge ━━┓ (north) ↔", + "Pit edge ┏━━ (north) ↔", + "Rail wall (north) ↔", + "Rail wall (south) ↔", + "Nothing", + "Nothing", + "Carpet ↔", + "Carpet trim ↔", + "Weird door", // TODO: WEIRD DOOR OBJECT NEEDS INVESTIGATION + "Drapes (north) ↔", + "Drapes (west, odd) ↔", + "Statues ↔", + "Columns ↔", + "Wall decors (north) ↔", + "Wall decors (south) ↔", + "Chairs in pairs ↔", + "Tall torches ↔", + "Supports (north) ↔", + "Water edge ┏━┓ (concave) ↔", + "Water edge ┗━┛ (concave) ↔", + "Water edge ┏━┓ (convex) ↔", + "Water edge ┗━┛ (convex) ↔", + "Water edge ┏━┛ (concave) ↔", + "Water edge ┗━┓ (concave) ↔", + "Water edge ┗━┓ (convex) ↔", + "Water edge ┏━┛ (convex) ↔", + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Supports (south) ↔", + "Bar ↔", + "Shelf A ↔", + "Shelf B ↔", + "Shelf C ↔", + "Somaria path ↔", + "Cannon hole A (north) ↔", + "Cannon hole A (south) ↔", + "Pipe path ↔", + "Nothing", + "Wall torches (north) ↔", + "Wall torches (south) ↔", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Cannon hole B (north) ↔", + "Cannon hole B (south) ↔", + "Thick rail ↔", + "Blocks ↔", + "Long rail ↔", + "Ceiling ↕", + "Wall (top, west) ↕", + "Wall (top, east) ↕", + "Wall (bottom, west) ↕", + "Wall (bottom, east) ↕", + "Wall columns (west) ↕", + "Wall columns (east) ↕", + "Deep wall (west) ↕", + "Deep wall (east) ↕", + "Rail ↕", + "Pit edge (west) ↕", + "Pit edge (east) ↕", + "Rail wall (west) ↕", + "Rail wall (east) ↕", + "Nothing", + "Nothing", + "Carpet ↕", + "Carpet trim ↕", + "Nothing", + "Drapes (west) ↕", + "Drapes (east) ↕", + "Columns ↕", + "Wall decors (west) ↕", + "Wall decors (east) ↕", + "Supports (west) ↕", + "Water edge (west) ↕", + "Water edge (east) ↕", + "Supports (east) ↕", + "Somaria path ↕", + "Pipe path ↕", + "Nothing", + "Wall torches (west) ↕", + "Wall torches (east) ↕", + "Wall decors tight A (west) ↕", + "Wall decors tight A (east) ↕", + "Wall decors tight B (west) ↕", + "Wall decors tight B (east) ↕", + "Cannon hole (west) ↕", + "Cannon hole (east) ↕", + "Tall torches ↕", + "Thick rail ↕", + "Blocks ↕", + "Long rail ↕", + "Jump ledge (west) ↕", + "Jump ledge (east) ↕", + "Rug trim (west) ↕", + "Rug trim (east) ↕", + "Bar ↕", + "Wall flair (west) ↕", + "Wall flair (east) ↕", + "Blue pegs ↕", + "Orange pegs ↕", + "Invisible floor ↕", + "Fake pots ↕", + "Hammer pegs ↕", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Diagonal ceiling A ◤", + "Diagonal ceiling A ◣", + "Diagonal ceiling A ◥", + "Diagonal ceiling A ◢", + "Pit ⇲", + "Diagonal layer 2 mask A ◤", + "Diagonal layer 2 mask A ◣", + "Diagonal layer 2 mask A ◥", + "Diagonal layer 2 mask A ◢", + "Diagonal layer 2 mask B ◤", // TODO: VERIFY + "Diagonal layer 2 mask B ◣", // TODO: VERIFY + "Diagonal layer 2 mask B ◥", // TODO: VERIFY + "Diagonal layer 2 mask B ◢", // TODO: VERIFY + "Nothing", + "Nothing", + "Nothing", + "Jump ledge (north) ↔", + "Jump ledge (south) ↔", + "Rug ↔", + "Rug trim (north) ↔", + "Rug trim (south) ↔", + "Archery game curtains ↔", + "Wall flair (north) ↔", + "Wall flair (south) ↔", + "Blue pegs ↔", + "Orange pegs ↔", + "Invisible floor ↔", + "Fake pressure plates ↔", + "Fake pots ↔", + "Hammer pegs ↔", + "Nothing", + "Nothing", + "Ceiling (large) ⇲", + "Chest platform (tall) ⇲", + "Layer 2 pit mask (large) ⇲", + "Layer 2 pit mask (medium) ⇲", + "Floor 1 ⇲", + "Floor 3 ⇲", + "Layer 2 mask (large) ⇲", + "Floor 4 ⇲", + "Water floor ⇲ ", + "Flood water (medium) ⇲ ", + "Conveyor floor ⇲ ", + "Nothing", + "Nothing", + "Moving wall (west) ⇲", + "Moving wall (east) ⇲", + "Nothing", + "Nothing", + "Icy floor A ⇲", + "Icy floor B ⇲", + "Moving wall flag", // TODO: WTF IS THIS? + "Moving wall flag", // TODO: WTF IS THIS? + "Moving wall flag", // TODO: WTF IS THIS? + "Moving wall flag", // TODO: WTF IS THIS? + "Layer 2 mask (medium) ⇲", + "Flood water (large) ⇲", + "Layer 2 swim mask ⇲", + "Flood water B (large) ⇲", + "Floor 2 ⇲", + "Chest platform (short) ⇲", + "Table / rock ⇲", + "Spike blocks ⇲", + "Spiked floor ⇲", + "Floor 7 ⇲", + "Tiled floor ⇲", + "Rupee floor ⇲", + "Conveyor upwards ⇲", + "Conveyor downwards ⇲", + "Conveyor leftwards ⇲", + "Conveyor rightwards ⇲", + "Heavy current water ⇲", + "Floor 10 ⇲", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + "Nothing", + }; + + static const std::string Type2RoomObjectNames[] = + { + "Corner (top, concave) ▛", + "Corner (top, concave) ▙", + "Corner (top, concave) ▜", + "Corner (top, concave) ▟", + "Corner (top, convex) ▟", + "Corner (top, convex) ▜", + "Corner (top, convex) ▙", + "Corner (top, convex) ▛", + "Corner (bottom, concave) ▛", + "Corner (bottom, concave) ▙", + "Corner (bottom, concave) ▜", + "Corner (bottom, concave) ▟", + "Corner (bottom, convex) ▟", + "Corner (bottom, convex) ▜", + "Corner (bottom, convex) ▙", + "Corner (bottom, convex) ▛", + "Kinked corner north (bottom) ▜", + "Kinked corner south (bottom) ▟", + "Kinked corner north (bottom) ▛", + "Kinked corner south (bottom) ▙", + "Kinked corner west (bottom) ▙", + "Kinked corner west (bottom) ▛", + "Kinked corner east (bottom) ▟", + "Kinked corner east (bottom) ▜", + "Deep corner (concave) ▛", + "Deep corner (concave) ▙", + "Deep corner (concave) ▜", + "Deep corner (concave) ▟", + "Large brazier", + "Statue", + "Star tile (disabled)", + "Star tile (enabled)", + "Small torch (lit)", + "Barrel", + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Table", + "Fairy statue", + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Chair", + "Bed", + "Fireplace", + "Mario portrait", + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Interroom stairs (up)", + "Interroom stairs (down)", + "Interroom stairs B (down)", + "Intraroom stairs north B", // TODO: VERIFY LAYER HANDLING + "Intraroom stairs north (separate layers)", + "Intraroom stairs north (merged layers)", + "Intraroom stairs north (swim layer)", + "Block", + "Water ladder (north)", + "Water ladder (south)", // TODO: NEEDS IN GAME VERIFICATION + "Dam floodgate", + "Interroom spiral stairs up (top)", + "Interroom spiral stairs down (top)", + "Interroom spiral stairs up (bottom)", + "Interroom spiral stairs down (bottom)", + "Sanctuary wall (north)", + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Pew", + "Magic bat altar", + }; + + + + static const std::string Type3RoomObjectNames[] = + { + "Waterfall face (empty)", + "Waterfall face (short)", + "Waterfall face (long)", + "Somaria path endpoint", + "Somaria path intersection ╋", + "Somaria path corner ┏", + "Somaria path corner ┗", + "Somaria path corner ┓", + "Somaria path corner ┛", + "Somaria path intersection ┳", + "Somaria path intersection ┻", + "Somaria path intersection ┣", + "Somaria path intersection ┫", + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Somaria path 2-way endpoint", + "Somaria path crossover", + "Babasu hole (north)", + "Babasu hole (south)", + "9 blue rupees", + "Telepathy tile", + "Warp door", // TODO: NEEDS IN GAME VERIFICATION THAT THIS IS USELESS + "Kholdstare's shell", + "Hammer peg", + "Prison cell", + "Big key lock", + "Chest", + "Chest (open)", + "Intraroom stairs south", // TODO: VERIFY LAYER HANDLING + "Intraroom stairs south (separate layers)", + "Intraroom stairs south (merged layers)", + "Interroom straight stairs up (north, top)", + "Interroom straight stairs down (north, top)", + "Interroom straight stairs up (south, top)", + "Interroom straight stairs down (south, top)", + "Deep corner (convex) ▟", + "Deep corner (convex) ▜", + "Deep corner (convex) ▙", + "Deep corner (convex) ▛", + "Interroom straight stairs up (north, bottom)", + "Interroom straight stairs down (north, bottom)", + "Interroom straight stairs up (south, bottom)", + "Interroom straight stairs down (south, bottom)", + "Lamp cones", + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Liftable large block", + "Agahnim's altar", + "Agahnim's boss room", + "Pot", + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Big chest", + "Big chest (open)", + "Intraroom stairs south (swim layer)", + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Pipe end (south)", + "Pipe end (north)", + "Pipe end (east)", + "Pipe end (west)", + "Pipe corner ▛", + "Pipe corner ▙", + "Pipe corner ▜", + "Pipe corner ▟", + "Pipe-rock intersection ⯊", + "Pipe-rock intersection ⯋", + "Pipe-rock intersection ◖", + "Pipe-rock intersection ◗", + "Pipe crossover", + "Bombable floor", + "Fake bombable floor", + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Warp tile", + "Tool rack", + "Furnace", + "Tub (wide)", + "Anvil", + "Warp tile (disabled)", + "Pressure plate", + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Blue peg", + "Orange peg", + "Fortune teller room", + "Unknown", // TODO: NEEDS IN GAME CHECKING + "Bar corner ▛", + "Bar corner ▙", + "Bar corner ▜", + "Bar corner ▟", + "Decorative bowl", + "Tub (tall)", + "Bookcase", + "Range", + "Suitcase", + "Bar bottles", + "Arrow game hole (west)", + "Arrow game hole (east)", + "Vitreous goo graphics", + "Fake pressure plate", + "Medusa head", + "4-way shooter block", + "Pit", + "Wall crack (north)", + "Wall crack (south)", + "Wall crack (west)", + "Wall crack (east)", + "Large decor", + "Water grate (north)", + "Water grate (south)", + "Water grate (west)", + "Water grate (east)", + "Window sunlight", + "Floor sunlight", + "Trinexx's shell", + "Layer 2 mask (full)", + "Boss entrance", + "Minigame chest", + "Ganon door", + "Triforce wall ornament", + "Triforce floor tiles", + "Freezor hole", + "Pile of bones", + "Vitreous goo damage", + "Arrow tile ↑", + "Arrow tile ↓", + "Arrow tile →", + "Nothing", + }; + + static const std::string TileTypeNames[] = + { + "$00 Nothing (standard floor)", + "$01 Collision", + "$02 Collision", + "$03 Collision", + "$04 Collision", + "$05 Nothing (unused?)", + "$06 Nothing (unused?)", + "$07 Nothing (unused?)", + "$08 Deep water", + "$09 Shallow water", + "$0A Unknown? Possibly unused", + "$0B Collision (different in Overworld and unknown)", + "$0C Overlay mask", + "$0D Spike floor", + "$0E GT ice", + "$0F Ice palace ice", + "$10 Slope ◤", + "$11 Slope ◥", + "$12 Slope ◣", + "$13 Slope ◢", + "$14 Nothing (unused?)", + "$15 Nothing (unused?)", + "$16 Nothing (unused?)", + "$17 Nothing (unused?)", + "$18 Slope ◤", + "$19 Slope ◥", + "$1A Slope ◣", + "$1B Slope ◢", + "$1C Layer 2 overlay", + "$1D North single-layer auto stairs", + "$1E North layer-swap auto stairs", + "$1F North layer-swap auto stairs", + "$20 Pit", + "$21 Nothing (unused?)", + "$22 Manual stairs", + "$23 Pot switch", + "$24 Pressure switch", + "$25 Nothing (unused but referenced by somaria blocks)", + "$26 Collision (near stairs?)", + "$27 Brazier/Fence/Statue/Block/General hookable things", + "$28 North ledge", + "$29 South ledge", + "$2A East ledge", + "$2B West ledge", + "$2C ◤ ledge", + "$2D ◣ ledge", + "$2E ◥ ledge", + "$2F ◢ ledge", + "$30 Straight inter-room stairs south/up 0", + "$31 Straight inter-room stairs south/up 1", + "$32 Straight inter-room stairs south/up 2", + "$33 Straight inter-room stairs south/up 3", + "$34 Straight inter-room stairs north/down 0", + "$35 Straight inter-room stairs north/down 1", + "$36 Straight inter-room stairs north/down 2", + "$37 Straight inter-room stairs north/down 3", + "$38 Straight inter-room stairs north/down edge", + "$39 Straight inter-room stairs south/up edge", + "$3A Star tile (inactive on load)", + "$3B Star tile (active on load)", + "$3C Nothing (unused?)", + "$3D South single-layer auto stairs", + "$3E South layer-swap auto stairs", + "$3F South layer-swap auto stairs", + "$40 Thick grass", + "$41 Nothing (unused?)", + "$42 Gravestone / Tower of hera ledge shadows??", + "$43 Skull Woods entrance/Hera columns???", + "$44 Spike", + "$45 Nothing (unused?)", + "$46 Desert Tablet", + "$47 Nothing (unused?)", + "$48 Diggable ground", + "$49 Nothing (unused?)", + "$4A Diggable ground", + "$4B Warp tile", + "$4C Nothing (unused?) | Something unknown in overworld", + "$4D Nothing (unused?) | Something unknown in overworld", + "$4E Square corners in EP overworld", + "$4F Square corners in EP overworld", + "$50 Green bush", + "$51 Dark bush", + "$52 Gray rock", + "$53 Black rock", + "$54 Hint tile/Sign", + "$55 Big gray rock", + "$56 Big black rock", + "$57 Bonk rocks", + "$58 Chest 0", + "$59 Chest 1", + "$5A Chest 2", + "$5B Chest 3", + "$5C Chest 4", + "$5D Chest 5", + "$5E Spiral stairs", + "$5F Spiral stairs", + "$60 Rupee tile", + "$61 Nothing (unused?)", + "$62 Bombable floor", + "$63 Minigame chest", + "$64 Nothing (unused?)", + "$65 Nothing (unused?)", + "$66 Crystal peg down", + "$67 Crystal peg up", + "$68 Upwards conveyor", + "$69 Downwards conveyor", + "$6A Leftwards conveyor", + "$6B Rightwards conveyor", + "$6C North vines", + "$6D South vines", + "$6E West vines", + "$6F East vines", + "$70 Pot/Hammer peg/Push block 00", + "$71 Pot/Hammer peg/Push block 01", + "$72 Pot/Hammer peg/Push block 02", + "$73 Pot/Hammer peg/Push block 03", + "$74 Pot/Hammer peg/Push block 04", + "$75 Pot/Hammer peg/Push block 05", + "$76 Pot/Hammer peg/Push block 06", + "$77 Pot/Hammer peg/Push block 07", + "$78 Pot/Hammer peg/Push block 08", + "$79 Pot/Hammer peg/Push block 09", + "$7A Pot/Hammer peg/Push block 0A", + "$7B Pot/Hammer peg/Push block 0B", + "$7C Pot/Hammer peg/Push block 0C", + "$7D Pot/Hammer peg/Push block 0D", + "$7E Pot/Hammer peg/Push block 0E", + "$7F Pot/Hammer peg/Push block 0F", + "$80 North/South door", + "$81 East/West door", + "$82 North/South shutter door", + "$83 East/West shutter door", + "$84 North/South layer 2 door", + "$85 East/West layer 2 door", + "$86 North/South layer 2 shutter door", + "$87 East/West layer 2 shutter door", + "$88 Some type of door (?)", + "$89 East/West transport door", + "$8A Some type of door (?)", + "$8B Some type of door (?)", + "$8C Some type of door (?)", + "$8D Some type of door (?)", + "$8E Entrance door", + "$8F Entrance door", + "$90 Layer toggle shutter door (?)", + "$91 Layer toggle shutter door (?)", + "$92 Layer toggle shutter door (?)", + "$93 Layer toggle shutter door (?)", + "$94 Layer toggle shutter door (?)", + "$95 Layer toggle shutter door (?)", + "$96 Layer toggle shutter door (?)", + "$97 Layer toggle shutter door (?)", + "$98 Layer+Dungeon toggle shutter door (?)", + "$99 Layer+Dungeon toggle shutter door (?)", + "$9A Layer+Dungeon toggle shutter door (?)", + "$9B Layer+Dungeon toggle shutter door (?)", + "$9C Layer+Dungeon toggle shutter door (?)", + "$9D Layer+Dungeon toggle shutter door (?)", + "$9E Layer+Dungeon toggle shutter door (?)", + "$9F Layer+Dungeon toggle shutter door (?)", + "$A0 North/South Dungeon swap door", + "$A1 Dungeon toggle door (?)", + "$A2 Dungeon toggle door (?)", + "$A3 Dungeon toggle door (?)", + "$A4 Dungeon toggle door (?)", + "$A5 Dungeon toggle door (?)", + "$A6 Nothing (unused?)", + "$A7 Nothing (unused?)", + "$A8 Layer+Dungeon toggle shutter door (?)", + "$A9 Layer+Dungeon toggle shutter door (?)", + "$AA Layer+Dungeon toggle shutter door (?)", + "$AB Layer+Dungeon toggle shutter door (?)", + "$AC Layer+Dungeon toggle shutter door (?)", + "$AD Layer+Dungeon toggle shutter door (?)", + "$AE Layer+Dungeon toggle shutter door (?)", + "$AF Layer+Dungeon toggle shutter door (?)", + "$B0 Somaria ─", + "$B1 Somaria │", + "$B2 Somaria ┌", + "$B3 Somaria └", + "$B4 Somaria ┐", + "$B5 Somaria ┘", + "$B6 Somaria ⍰ 1 way", + "$B7 Somaria ┬", + "$B8 Somaria ┴", + "$B9 Somaria ├", + "$BA Somaria ┤", + "$BB Somaria ┼", + "$BC Somaria ⍰ 2 way", + "$BD Somaria ┼ crossover", + "$BE Pipe entrance", + "$BF Nothing (unused?)", + "$C0 Torch 00", + "$C1 Torch 01", + "$C2 Torch 02", + "$C3 Torch 03", + "$C4 Torch 04", + "$C5 Torch 05", + "$C6 Torch 06", + "$C7 Torch 07", + "$C8 Torch 08", + "$C9 Torch 09", + "$CA Torch 0A", + "$CB Torch 0B", + "$CC Torch 0C", + "$CD Torch 0D", + "$CE Torch 0E", + "$CF Torch 0F", + "$D0 Nothing (unused?)", + "$D1 Nothing (unused?)", + "$D2 Nothing (unused?)", + "$D3 Nothing (unused?)", + "$D4 Nothing (unused?)", + "$D5 Nothing (unused?)", + "$D6 Nothing (unused?)", + "$D7 Nothing (unused?)", + "$D8 Nothing (unused?)", + "$D9 Nothing (unused?)", + "$DA Nothing (unused?)", + "$DB Nothing (unused?)", + "$DC Nothing (unused?)", + "$DD Nothing (unused?)", + "$DE Nothing (unused?)", + "$DF Nothing (unused?)", + "$E0 Nothing (unused?)", + "$E1 Nothing (unused?)", + "$E2 Nothing (unused?)", + "$E3 Nothing (unused?)", + "$E4 Nothing (unused?)", + "$E5 Nothing (unused?)", + "$E6 Nothing (unused?)", + "$E7 Nothing (unused?)", + "$E8 Nothing (unused?)", + "$E9 Nothing (unused?)", + "$EA Nothing (unused?)", + "$EB Nothing (unused?)", + "$EC Nothing (unused?)", + "$ED Nothing (unused?)", + "$EE Nothing (unused?)", + "$EF Nothing (unused?)", + "$F0 Door 0 bottom", + "$F1 Door 1 bottom", + "$F2 Door 2 bottom", + "$F3 Door 3 bottom", + "$F4 Door X bottom? (unused?)", + "$F5 Door X bottom? (unused?)", + "$F6 Door X bottom? (unused?)", + "$F7 Door X bottom? (unused?)", + "$F8 Door 0 top", + "$F9 Door 1 top", + "$FA Door 2 top", + "$FB Door 3 top", + "$FC Door X top? (unused?)", + "$FD Door X top? (unused?)", + "$FE Door X top? (unused?)", + "$FF Door X top? (unused?)" + }; + + +} +} +} +} + +#endif \ No newline at end of file