diff --git a/data/z_map_data.data.s b/data/z_map_data.data.s deleted file mode 100644 index 977248eb5f..0000000000 --- a/data/z_map_data.data.s +++ /dev/null @@ -1,124 +0,0 @@ -.include "macro.inc" - -# assembler directives -.set noat # allow manual use of $at -.set noreorder # don't insert nops after branches -.set gp=64 # allow use of 64-bit general purpose registers - -.section .data - -.balign 16 - -glabel D_80123A70 - .incbin "baserom.z64", 0xB9AC10, 0xA0 - -glabel D_80123B10 - .incbin "baserom.z64", 0xB9ACB0, 0x10 - -glabel D_80123B20 - .incbin "baserom.z64", 0xB9ACC0, 0x280 - -glabel D_80123DA0 - .incbin "baserom.z64", 0xB9AF40, 0x14 - -glabel D_80123DB4 - .incbin "baserom.z64", 0xB9AF54, 0x8C0 - -glabel D_80124674 - .incbin "baserom.z64", 0xB9B814, 0x370 - -glabel D_801249E4 - .incbin "baserom.z64", 0xB9BB84, 0x370 - -glabel D_80124D54 - .incbin "baserom.z64", 0xB9BEF4, 0xC - -glabel D_80124D60 - .incbin "baserom.z64", 0xB9BF00, 0x14 - -glabel D_80124D74 - .incbin "baserom.z64", 0xB9BF14, 0x30 - -glabel D_80124DA4 - .incbin "baserom.z64", 0xB9BF44, 0x30 - -glabel D_80124DD4 - .incbin "baserom.z64", 0xB9BF74, 0x30 - -glabel D_80124E04 - .incbin "baserom.z64", 0xB9BFA4, 0x30 - -glabel D_80124E34 - .incbin "baserom.z64", 0xB9BFD4, 0xC0 - -glabel D_80124EF4 - .incbin "baserom.z64", 0xB9C094, 0x14 - -glabel D_80124F08 - .incbin "baserom.z64", 0xB9C0A8, 0x50 - -glabel D_80124F58 - .incbin "baserom.z64", 0xB9C0F8, 0x30 - -glabel D_80124F88 - .incbin "baserom.z64", 0xB9C128, 0x30 - -glabel D_80124FB8 - .incbin "baserom.z64", 0xB9C158, 0x30 - -glabel D_80124FE8 - .incbin "baserom.z64", 0xB9C188, 0x30 - -glabel D_80125018 - .incbin "baserom.z64", 0xB9C1B8, 0x28 - -glabel D_80125040 - .incbin "baserom.z64", 0xB9C1E0, 0x140 - -glabel D_80125180 - .incbin "baserom.z64", 0xB9C320, 0x14 - -glabel D_80125194 - .incbin "baserom.z64", 0xB9C334, 0x200 - -glabel D_80125394 - .incbin "baserom.z64", 0xB9C534, 0x200 - -glabel D_80125594 - .incbin "baserom.z64", 0xB9C734, 0x200 - -glabel D_80125794 - .incbin "baserom.z64", 0xB9C934, 0x50 - -glabel D_801257E4 - .incbin "baserom.z64", 0xB9C984, 0x14 - -glabel gMapDataTable - .word D_80123A70 - .word D_80123B10 - .word D_80123B20 - .word D_80123DA0 - .word D_80123DB4 - .word D_80124674 - .word D_801249E4 - .word D_80124D54 - .word D_80124D60 - .word D_80124D74 - .word D_80124DA4 - .word D_80124DD4 - .word D_80124E04 - .word D_80124E34 - .word D_80124EF4 - .word D_80124F08 - .word D_80124F58 - .word D_80124F88 - .word D_80124FB8 - .word D_80124FE8 - .word D_80125018 - .word D_80125040 - .word D_80125180 - .word D_80125194 - .word D_80125394 - .word D_80125594 - .word D_80125794 - .word D_801257E4 diff --git a/include/z64.h b/include/z64.h index 9adc769b33..80a7c8d8c6 100644 --- a/include/z64.h +++ b/include/z64.h @@ -1289,6 +1289,25 @@ typedef struct PreNMIContext { /* 0xA8 */ UNK_TYPE unk_A8; } PreNMIContext; // size = 0xAC +typedef enum { + /* 1 */ F_8F = 1, + /* 2 */ F_7F, + /* 3 */ F_6F, + /* 4 */ F_5F, + /* 5 */ F_4F, + /* 6 */ F_3F, + /* 7 */ F_2F, + /* 8 */ F_1F, + /* 9 */ F_B1, + /* 10 */ F_B2, + /* 11 */ F_B3, + /* 12 */ F_B4, + /* 13 */ F_B5, + /* 14 */ F_B6, + /* 15 */ F_B7, + /* 16 */ F_B8 +} FloorID; + // All arrays pointed in this struct are indexed by "map indexes" // In dungeons, the map index corresponds to the dungeon index (which also indexes keys, items, etc) // In overworld areas, the map index corresponds to the overworld area index (spot 00, 01, etc) @@ -1319,8 +1338,8 @@ typedef struct { /* 0x5C */ u8 (*switchFromRoom)[51]; // room to come from /* 0x60 */ u8 (*switchFromFloor)[51]; // floor to come from /* 0x64 */ u8 (*switchToRoom)[51]; // room to go to - /* 0x68 */ UNK_PTR unk_68; - /* 0x6C */ UNK_PTR unk_6C; + /* 0x68 */ u8 (*floorID)[8]; + /* 0x6C */ s16* skullFloorIconY; // dungeon big skull icon Y pos } MapData; // size = 0x70 typedef struct { diff --git a/spec b/spec index afa4cdfcae..356035f7d2 100644 --- a/spec +++ b/spec @@ -334,7 +334,7 @@ beginseg include "build/src/code/z_onepointdemo.o" include "build/data/z_onepointdemo.data.o" include "build/src/code/z_map_exp.o" - include "build/data/z_map_data.data.o" + include "build/src/code/z_map_data.o" include "build/src/code/z_parameter.o" include "build/src/code/z_path.o" include "build/src/code//code_8008E6A0.o" diff --git a/src/code/z_map_data.c b/src/code/z_map_data.c new file mode 100644 index 0000000000..b0dbd6cace --- /dev/null +++ b/src/code/z_map_data.c @@ -0,0 +1,332 @@ +#include + +static s16 sFloorTexIndexOffset[10][8] = { + { 0, 0, 0, 0, 2, 4, 6, 8 }, { 0, 0, 0, 0, 0, 0, 0, 2 }, + { 0, 0, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 2, 4, 6 }, + { 0, 0, 0, 0, 2, 4, 6, 8 }, { 0, 0, 0, 0, 0, 2, 4, 6 }, + { 0, 0, 0, 0, 0, 2, 4, 6 }, { 0, 0, 0, 0, 0, 2, 4, 6 }, + { 0, 0, 0, 0, 0, 0, 2, 4 }, { 0 }, +}; + +static s16 sBossFloor[8] = { + 7, 7, 6, 7, 7, 4, 5, 7, +}; + +static s16 sRoomPalette[10][32] = { + { 10, 1, 2, 10, 4, 5, 6, 7, 8, 10, 11 }, + { 1, 3, 5, 6, 10, 3, 9, 2, 4, 2, 4, 7, 7, 8, 13, 11 }, + { 3, 1, 2, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 3 }, + { 9, 1, 2, 3, 6, 5, 6, 7, 8, 8, 5, 4, 3, 13, 11, 10, 11, 2, 13, 12, 10, 12, 13 }, + { 1, 6, 7, 2, 3, 4, 6, 10, 6, 10, 7, 9, 11, 1, 12, 3, 11, 4, 5, 8, 9, 10, 11, 12, 13, 2 }, + { 1, 2, 10, 3, 3, 4, 5, 13, 5, 6, 7, 8, 7, 9, 8, 9, 11, 10, 12, 11, 12, 13, 9, 7, 8, 12 }, + { 10, 1, 2, 3, 4, 5, 10, 7, 8, 9, 10, 6, 12, 13, 11, 8, 13, 1, 2, 3, 4, 11, 6, 12, 8, 5, 10, 9, 6 }, + { 13, 1, 5, 4, 4, 5, 3, 7, 8, 9, 10, 11, 12, 13, 2, 5, 1, 1, 6, 7, 8, 3, 9, 7, 8, 12 }, + { 13, 1, 2, 3, 4, 5, 6 }, + { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, +}; + +static s16 sMaxPaletteCount[10] = { + 6, 11, 12, 14, 11, 13, 13, 13, 7, 12, +}; + +static s16 sPaletteRoom[10][8][14] = { + { + { 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255 }, + { 0, 10, 255, 255, 255, 255 }, + { 0, 1, 2, 255, 255, 255 }, + { 0, 255, 255, 255, 255, 255 }, + { 3, 4, 5, 6, 7, 8 }, + { 9, 255, 255, 255, 255, 255 }, + }, + { + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 0, 2, 3, 5, 6, 9, 10, 12, 255, 255, 255 }, + { 0, 1, 2, 3, 4, 7, 8, 11, 13, 14, 15 }, + }, + { + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12 }, + { 1, 3, 6, 13, 14, 255, 255, 255, 255, 255, 255, 255 }, + }, + { + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 0, 6, 7, 8, 10, 11, 12, 13, 14, 19, 20, 255, 255, 255 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 15, 16, 18, 21 }, + { 9, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 17, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + }, + { + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 7, 8, 12, 13, 255, 255, 255, 255, 255, 255, 255 }, + { 5, 6, 7, 10, 11, 12, 13, 14, 24, 255, 255 }, + { 4, 5, 6, 9, 10, 11, 16, 23, 24, 25, 255 }, + { 4, 6, 10, 21, 255, 255, 255, 255, 255, 255, 255 }, + { 0, 1, 2, 3, 15, 17, 18, 19, 20, 21, 22 }, + }, + { + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 0, 1, 4, 5, 6, 7, 10, 11, 13, 17, 19, 20, 255 }, + { 0, 1, 4, 5, 6, 10, 17, 20, 21, 255, 255, 255, 255 }, + { 0, 1, 3, 5, 8, 9, 12, 14, 15, 16, 17, 18, 21 }, + { 0, 1, 2, 3, 5, 8, 9, 12, 14, 15, 255, 255, 255 }, + }, + { + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 22, 23, 24, 25, 26, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 5, 7, 8, 9, 10, 11, 16, 17, 18, 19, 20, 21, 23 }, + { 4, 5, 6, 15, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 0, 1, 2, 3, 4, 12, 13, 14, 15, 27, 255, 255, 255 }, + }, + { + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 0, 1, 2, 4, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 5, 6, 7, 8, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 8, 9, 12, 14, 16, 21, 255, 255, 255, 255, 255, 255, 255 }, + { 3, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21 }, + }, + { + { 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255 }, + { 0, 1, 2, 3, 4, 5, 6 }, + { 0, 1, 255, 255, 255, 255, 255 }, + { 1, 255, 255, 255, 255, 255, 255 }, + }, + { + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }, + }, +}; + +static s16 sRoomCompassOffsetX[10][44] = { + { 1090, 1390, 1560, 1220, 1200, 1390, 1770, 1610, 2000, 1290, 1420, + 1110, 1040, 470, 790, 1570, 720, 1000, 1580, 70, 0 }, + { 940, 320, 1500, 240, 580, 1510, 720, 1030, 800, 660, 180, 520, 310, 550, 790, 1650, 1000, 1570, 80, 70 }, + { 1130, 1070, 1090, 1160, 1500, 690, 1540, 920, 1160, 700, 1650, 950, 1380, 1460, 830, 1170, 1620 }, + { 1130, 1170, 965, 890, 1170, 1460, 1170, 800, 1320, 880, 1130, 1590, 1390, 830, 610, 580, 710, + 980, 1640, 1510, 590, 1610, 1130, 1130, 820, 1320, 1620, 0, 0, 0, 0, 1300, 1270 }, + { 1160, 620, 1330, 1280, 440, 600, 810, 830, 720, 1170, 1490, 1640, 1870, 1800, 1610, 1130, 860, 1310, 1140, + 850, 760, 380, 800, 800, 1930, 1410, 640, 845, 810, 810, 850, 1390, 1540, 1650, 1880, 1530, 420, 1950 }, + { 1120, 1290, 1120, 1380, 930, 1520, 1980, 2010, 1590, 1510, 1500, 1300, 1240, 1800, 1290, + 1450, 1560, 880, 820, 820, 1060, 1670, 1120, 1130, 1130, 1290, 1290, 1280, 1390, 940, + 1520, 1520, 1980, 1620, 1510, 1490, 1240, 1290, 1450, 880, 880, 1060, 1670, 1520 }, + { 800, 1500, 1370, 1730, 1590, 1020, 1060, 1470, 1600, 1830, 1630, 2000, 650, 660, 1020, 880, + 940, 720, 570, 620, 570, 550, 970, 920, 1040, 1150, 1200, 1550, 1520, 1020, 820, 1010 }, + { 1320, 1320, 1090, 1510, 1480, 940, 920, 910, 800, 820, 1150, 1000, 1800, 1660, + 1090, 1630, 710, 1670, 830, 770, 800, 850, 830, 820, 1800, 1090, 850 }, + { 1080, 1420, 1620, 1040, 940, 1190, 1310, 1090, 1380, 1080 }, + { 1070, 1180, 1270, 990, 1280, 1450, 1680, 1530, 760, 860, 1500, 800 }, +}; + +static s16 sRoomCompassOffsetY[10][44] = { + { -660, -570, -410, -690, -500, -380, -470, -630, -990, -870, + -720, -630, -660, -1280, -1910, -670, -1220, -870, -1070, -1080 }, + { -780, -800, -1090, -1230, -1140, -820, -1210, -1430, -1580, -920, + -830, -730, -950, -1580, -1910, -950, -860, -1070, -1070, -1080 }, + { -770, -1320, -1750, -1800, -1360, -1330, -1700, -2280, -2700, -2360, -2360, -2650, -2650, -1600, -1445, -1370, + -1910 }, + { -660, -900, -1040, -1210, -1520, -1190, -1670, -1320, -1310, -1260, -1500, + -1080, -1650, -1620, -1090, -1390, -1220, -1090, -1290, -1410, -1390, -1600, + -660, -1630, -1290, -1290, -1080, 0, 0, 0, 0, -1100, -1280 }, + { -580, -620, -700, -1150, -710, -670, -850, -1000, -720, -840, -870, -840, -790, + -1000, -980, -900, -660, -910, -1130, -1230, -1300, -810, -380, -1270, -820, -1120, + -880, -1070, -850, -850, -1060, -640, -900, -850, -890, -740, -880, -840 }, + { -610, -930, -770, -680, -1060, -930, -980, -1860, -1380, -1050, -830, -1230, -1380, -1330, -1750, + -1610, -1600, -830, -800, -820, -690, -1540, -620, -790, -780, -930, -930, -870, -690, -1050, + -930, -930, -980, -1370, -1050, -800, -1380, -1750, -1610, -840, -830, -690, -1540, -930 }, + { -570, -900, -1070, -1090, -1280, -1160, -920, -980, -780, -530, -350, -1000, -1440, -1080, -1100, -1110, + -980, -860, -790, -540, -350, -1000, -1250, -820, -1070, -1180, -950, -1380, -1160, -1100, -1150, -830 }, + { -940, -960, -860, -870, -920, -870, -980, -820, -860, -520, -500, -780, -1050, -1130, + -770, -1010, -680, -930, -880, -900, -980, -990, -770, -520, -1050, -770, -990 }, + { -570, -930, -1040, -1100, -800, -1100, -1100, -570, -930, -890 }, + { 100, -280, -690, -840, -1010, -950, -730, -470, -1130, -1440, -420, -700 }, +}; + +static u8 sDgnMinimapCount[12] = { + 13, 19, 17, 27, 38, 44, 32, 27, 10, 12, 0, 0, +}; + +static u16 sDgnMinimapTexIndexOffset[10] = { + 0, 13, 32, 49, 76, 114, 158, 190, 217, 227, +}; + +static u16 sOwMinimapTexSize[24] = { + 2920, 2560, 1560, 2784, 2976, 2040, 3240, 2336, 2080, 2600, 1792, 1888, + 3400, 1792, 1888, 2040, 3120, 2304, 2176, 1888, 1560, 3240, 2600, 3400, +}; + +static u16 sOwMinimapTexOffset[24] = { + 0x0000, 0x0B68, 0x1568, 0x1B80, 0x2660, 0x3200, 0x39F8, 0x46A0, 0x4FC0, 0x57E0, 0x6208, 0x6908, + 0x7068, 0x7DB0, 0x84B0, 0x8C10, 0x9408, 0xA038, 0xA938, 0xB1B8, 0xB918, 0xBF30, 0xCBD8, 0xD600, +}; + +static s16 sOwMinimapPosX[24] = { + 216, 216, 218, 202, 202, 250, 216, 234, 234, 216, 234, 234, + 216, 234, 234, 250, 216, 234, 234, 234, 218, 80, 80, 216, +}; + +static s16 sOwMinimapPosY[24] = { + 150, 158, 184, 164, 160, 138, 140, 150, 156, 158, 168, 162, + 138, 168, 162, 138, 146, 150, 154, 162, 218, 81, 65, 216, +}; + +static s16 sOwCompassInfo[24][4] = { + { 25, 25, 1080, -360 }, { 7, 6, 1000, -650 }, { 6, 6, 890, -800 }, { 7, 7, 720, -730 }, + { 8, 8, 660, -730 }, { 5, 7, 1220, -660 }, { 13, 13, 1080, -260 }, { 5, 5, 1120, -880 }, + { 8, 8, 1150, -630 }, { 11, 11, 1060, -680 }, { 12, 12, 1100, -720 }, { 11, 11, 930, -710 }, + { 9, 9, 850, -830 }, { 15, 15, 1100, -780 }, { 10, 10, 1030, -540 }, { 10, 9, 1240, -700 }, + { 6, 6, 1030, -620 }, { 5, 5, 1100, -660 }, { 11, 11, 1120, -750 }, { 10, 10, 1070, -580 }, + { 6, 6, 890, -800 }, { 13, 13, 1080, -260 }, { 11, 11, 1060, -680 }, { 9, 9, 850, -830 }, +}; + +static s16 sDgnMinimapTexIndexBase[10] = { + 0, 10, 14, 18, 26, 36, 44, 52, 60, 66, +}; + +static s16 sDgnCompassInfo[10][4] = { + { 3, 3, 1070, -690 }, { 4, 4, 1070, -690 }, { 3, 3, 1070, -690 }, { 4, 4, 1070, -690 }, { 4, 4, 1070, -690 }, + { 4, 4, 900, -640 }, { 3, 3, 900, -640 }, { 10, 10, 900, -640 }, { 5, 5, 900, -640 }, { 3, 3, 900, -640 }, +}; + +static s16 sOwMinimapWidth[24] = { + 80, 80, 80, 96, 96, 48, 80, 64, 64, 80, 64, 64, 80, 64, 64, 48, 80, 64, 64, 64, 80, 80, 80, 80, +}; + +static s16 sOwMinimapHeight[24] = { + 73, 64, 39, 58, 62, 85, 81, 73, 65, 65, 56, 59, 85, 56, 59, 85, 78, 72, 68, 59, 39, 81, 65, 85, +}; + +static s16 sOwEntranceIconPosX[24] = { + 1, 269, 1, 1, 273, 279, 259, 1, 260, 1, 1, 235, 1, 1, 1, 267, 261, 1, 1, 260, 294, 259, 1, 243, +}; + +static s16 sOwEntranceIconPosY[24] = { + 0, -833, 0, 0, -850, -889, -829, 0, -844, 0, 0, -836, 0, 0, 0, -852, -873, 0, 0, -848, -825, -829, 0, -833, +}; + +static u16 sOwEntranceFlag[20] = { + 0xFFFF, 0x0008, 0x0007, 0xFFFF, 0x0000, 0x0003, 0x0005, 0xFFFF, 0x0002, 0xFFFF, + 0xFFFF, 0x0006, 0x000B, 0xFFFF, 0xFFFF, 0x0001, 0x0004, 0xFFFF, 0xFFFF, 0x000D, +}; + +static f32 sFloorCoordY[10][8] = { + { 9999.0f, 9999.0f, 9999.0f, 760.0f, 360.0f, -40.0f, -1000.0f, -2000.0f }, + { 9999.0f, 9999.0f, 9999.0f, 9999.0f, 9999.0f, 9999.0f, 280.0f, -440.0f }, + { 9999.0f, 9999.0f, 9999.0f, 9999.0f, 9999.0f, 9999.0f, -640.0f, -3000.0f }, + { 9999.0f, 9999.0f, 9999.0f, 9999.0f, 760.0f, -40.0f, -440.0f, -3000.0f }, + { 9999.0f, 9999.0f, 9999.0f, 4360.0f, 3640.0f, 2760.0f, 2020.0f, -140.0f }, + { 9999.0f, 9999.0f, 9999.0f, 9999.0f, 690.0f, 330.0f, -160.0f, -3000.0f }, + { 9999.0f, 9999.0f, 9999.0f, 9999.0f, 1480.0f, 760.0f, 280.0f, -3000.0f }, + { 9999.0f, 9999.0f, 9999.0f, 9999.0f, -343.3f, -863.3f, -1143.3f, -3000.0f }, + { 9999.0f, 9999.0f, 9999.0f, 9999.0f, 9999.0f, -100.0f, -520.0f, -3000.0f }, + { 9999.0f, 9999.0f, 9999.0f, 9999.0f, 9999.0f, 9999.0f, 9999.0f, -3000.0f }, +}; + +static u16 sSwitchEntryCount[10] = { 5, 6, 4, 10, 25, 50, 8, 10, 6, 1 }; + +static u8 sSwitchFromRoom[10][51] = { + { 11, 0, 0, 12, 11 }, + { 0, 2, 3, 16, 17, 18 }, + { 1, 6, 15, 16 }, + { 0, 6, 7, 8, 11, 22, 23, 24, 25, 26 }, + { 21, 4, 6, 10, 5, 11, 24, 28, 31, 10, 7, 12, 13, 30, 34, 35, 27, 33, 37, 29, 32, 26, 28, 31, 36 }, + { 0, 1, 4, 5, 6, 10, 17, 20, 0, 1, 22, 25, 30, 39, 21, 17, 0, 1, 23, 26, 3, 9, 12, 14, 15, + 31, 8, 24, 27, 28, 33, 36, 37, 38, 43, 34, 23, 26, 31, 40, 42, 17, 22, 25, 29, 30, 32, 35, 39, 41 }, + { 4, 15, 5, 23, 31, 29, 28, 30 }, + { 8, 9, 12, 14, 21, 23, 24, 25, 26, 22 }, + { 0, 1, 8, 9, 7, 8 }, + { 255 }, +}; + +static u8 sSwitchFromFloor[10][51] = { + { 3, 4, 3, 4, 5 }, + { 6, 6, 6, 7, 7, 7 }, + { 7, 7, 6, 6 }, + { 4, 4, 4, 4, 4, 5, 5, 5, 5, 5 }, + { 6, 5, 5, 5, 4, 4, 4, 4, 4, 4, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 7 }, + { 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4 }, + { 6, 6, 5, 4, 5, 6, 7, 7 }, + { 6, 7, 7, 7, 7, 6, 6, 6, 6, 5 }, + { 6, 6, 7, 6, 5, 5 }, + { 255 }, +}; + +static u8 sSwitchToRoom[10][51] = { + { 12, 11, 12, 11 }, + { 16, 17, 18, 0, 2, 3 }, + { 15, 16, 1, 6 }, + { 22, 23, 24, 25, 26, 0, 6, 7, 8, 11 }, + { 36, 26, 28, 31, 27, 33, 37, 29, 32, 32, 30, 34, 35, 7, 12, 13, 5, 11, 24, 28, 31, 4, 6, 10, 21 }, + { 22, 25, 29, 30, 32, 35, 39, 41, 23, 26, 23, 26, 31, 40, 42, 40, 24, 27, 24, 27, 28, 34, 36, 37, 38, + 43, 33, 23, 26, 3, 8, 12, 14, 15, 31, 9, 22, 25, 30, 39, 21, 39, 0, 1, 4, 5, 6, 10, 17, 20 }, + { 28, 30, 29, 31, 23, 5, 4, 15 }, + { 22, 23, 24, 25, 26, 9, 12, 14, 21, 8 }, + { 7, 8, 9, 8, 0, 1 }, + { 255 }, +}; + +static u8 sFloorID[10][8] = { + /* clang-format off */ + { 0, 0, 0, F_3F, F_2F, F_1F, F_B1, F_B2 }, + { 0, 0, 0, 0, 0, 0, F_2F, F_1F }, + { 0, 0, 0, 0, 0, 0, F_1F, F_B1 }, + { 0, 0, 0, 0, F_2F, F_1F, F_B1, F_B2 }, + { 0, 0, 0, F_5F, F_4F, F_3F, F_2F, F_1F }, + { 0, 0, 0, 0, F_3F, F_2F, F_1F, F_B1 }, + { 0, 0, 0, 0, F_4F, F_3F, F_2F, F_1F }, + { 0, 0, 0, 0, F_B1, F_B2, F_B3, F_B4 }, + { 0, 0, 0, 0, 0, F_B1, F_B2, F_B3 }, + { 0, 0, 0, 0, 0, 0, 0, F_1F }, +}; /* clang-format on */ + +/* Y coord of big skull icon on map screen, relative to center of screen. + -99 if no dungeon map, otherwise (51 - 14 * FloorNumber) */ +static s16 sSkullFloorIconY[10] = { -47, -47, -33, -47, -47, -5, -19, -47, -99, -99 }; + +MapData gMapDataTable = { + sFloorTexIndexOffset, sBossFloor, sRoomPalette, + sMaxPaletteCount, sPaletteRoom, sRoomCompassOffsetX, + sRoomCompassOffsetY, sDgnMinimapCount, sDgnMinimapTexIndexOffset, + sOwMinimapTexSize, sOwMinimapTexOffset, sOwMinimapPosX, + sOwMinimapPosY, sOwCompassInfo, sDgnMinimapTexIndexBase, + sDgnCompassInfo, sOwMinimapWidth, sOwMinimapHeight, + sOwEntranceIconPosX, sOwEntranceIconPosY, sOwEntranceFlag, + sFloorCoordY, sSwitchEntryCount, sSwitchFromRoom, + sSwitchFromFloor, sSwitchToRoom, sFloorID, + sSkullFloorIconY, +};