#include "global.h" #include "z64map.h" #include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" typedef struct { /* 0x0 */ u8 texWidth; /* 0x1 */ u8 texHeight; /* 0x2 */ s16 offsetX; /* 0x4 */ s16 offsetY; /* 0x6 */ u8 drawType; /* 0x7 */ u8 colorIndex; /* 0x8 */ s16 scale; } MapSpriteInfo; // size = 0xA typedef struct { /* 0x0 */ TexturePtr spriteTex; /* 0x4 */ u8 width; /* 0x5 */ u8 height; /* 0x6 */ u8 offsetX; /* 0x7 */ u8 offsetY; /* 0x8 */ u8 drawType; /* 0x9 */ u8 colorIndex; /* 0xA */ s16 scale; } MapSpriteInfo2; // size = 0xC static Color_RGBA8 sMapColorTable[] = { { 255, 255, 255, 255 }, { 0, 255, 255, 160 }, // Blue { 100, 255, 255, 255 }, }; static MapSpriteInfo2 sGameplayDangeonKeepInfo[5] = { { gameplay_dangeon_keep_Tex_0022C8, 96, 85, 48, 42, MAPDATA_DRAW_0, 0, 20 }, { gameplay_dangeon_keep_Tex_0042C8, 96, 85, 48, 62, MAPDATA_DRAW_0, 0, 20 }, { gameplay_dangeon_keep_Tex_0052C8, 96, 85, 68, 42, MAPDATA_DRAW_0, 0, 20 }, { gameplay_dangeon_keep_Tex_0032C8, 96, 85, 48, 62, MAPDATA_DRAW_0, 0, 20 }, { gameplay_dangeon_keep_Tex_0062C8, 96, 85, 68, 62, MAPDATA_DRAW_0, 0, 20 }, }; static MapSpriteInfo sMapGrandStaticInfo[98] = { { 96, 85, 48, 42, MAPDATA_DRAW_0, 0, 20 }, { 96, 85, 48, 62, MAPDATA_DRAW_0, 0, 20 }, { 96, 85, 68, 42, MAPDATA_DRAW_0, 0, 20 }, { 96, 85, 48, 62, MAPDATA_DRAW_0, 0, 20 }, { 96, 85, 68, 62, MAPDATA_DRAW_0, 0, 20 }, { 80, 72, 40, 35, MAPDATA_DRAW_1, 1, 52 }, { 96, 85, 49, 43, MAPDATA_DRAW_3, 2, 20 }, { 96, 85, 49, 43, MAPDATA_DRAW_3, 2, 20 }, { 96, 85, 49, 43, MAPDATA_DRAW_3, 2, 20 }, { 96, 85, 49, 49, MAPDATA_DRAW_3, 2, 20 }, { 48, 44, 25, 23, MAPDATA_DRAW_3, 2, 20 }, { 96, 85, 49, 43, MAPDATA_DRAW_3, 2, 20 }, { 48, 46, 25, 24, MAPDATA_DRAW_3, 2, 20 }, { 64, 61, 32, 31, MAPDATA_DRAW_3, 2, 20 }, { 96, 85, 49, 50, MAPDATA_DRAW_3, 2, 20 }, { 96, 85, 49, 62, MAPDATA_DRAW_3, 2, 20 }, { 96, 85, 49, 43, MAPDATA_DRAW_3, 2, 20 }, { 48, 80, 21, 41, MAPDATA_DRAW_1, 1, 198 }, { 32, 128, 17, 87, MAPDATA_DRAW_1, 1, 138 }, { 80, 53, 40, 27, MAPDATA_DRAW_1, 1, 54 }, { 32, 81, 16, 15, MAPDATA_DRAW_3, 2, 20 }, { 80, 45, 35, 23, MAPDATA_DRAW_3, 2, 20 }, { 64, 87, 36, 44, MAPDATA_DRAW_3, 2, 20 }, { 64, 51, 31, 23, MAPDATA_DRAW_3, 2, 20 }, { 80, 79, 40, 40, MAPDATA_DRAW_3, 2, 20 }, { 96, 75, 36, 26, MAPDATA_DRAW_3, 2, 20 }, { 48, 41, 24, 20, MAPDATA_DRAW_3, 2, 20 }, { 64, 45, 31, 20, MAPDATA_DRAW_3, 2, 20 }, { 80, 52, 38, 28, MAPDATA_DRAW_3, 2, 20 }, { 48, 45, 23, 20, MAPDATA_DRAW_3, 2, 20 }, { 48, 59, 25, 37, MAPDATA_DRAW_3, 2, 20 }, { 48, 60, 21, 38, MAPDATA_DRAW_3, 2, 20 }, { 48, 81, 24, 40, MAPDATA_DRAW_3, 2, 20 }, { 48, 81, 24, 40, MAPDATA_DRAW_3, 2, 20 }, { 80, 89, 41, 26, MAPDATA_DRAW_3, 2, 20 }, { 80, 53, 39, 26, MAPDATA_DRAW_3, 2, 20 }, { 64, 78, 37, 36, MAPDATA_DRAW_3, 2, 20 }, { 64, 68, 33, 33, MAPDATA_DRAW_3, 2, 20 }, { 48, 68, 23, 35, MAPDATA_DRAW_3, 2, 20 }, { 48, 36, 25, 17, MAPDATA_DRAW_3, 2, 20 }, { 48, 25, 24, 12, MAPDATA_DRAW_3, 2, 20 }, { 64, 75, 24, 37, MAPDATA_DRAW_3, 2, 20 }, { 32, 53, 17, 26, MAPDATA_DRAW_3, 2, 20 }, { 80, 62, 35, 27, MAPDATA_DRAW_1, 1, 105 }, { 64, 76, 31, 31, MAPDATA_DRAW_1, 1, 133 }, { 96, 85, 47, 43, MAPDATA_DRAW_3, 2, 20 }, { 80, 71, 48, 33, MAPDATA_DRAW_1, 1, 180 }, { 80, 87, 44, 44, MAPDATA_DRAW_1, 1, 72 }, { 64, 65, 31, 36, MAPDATA_DRAW_1, 1, 57 }, { 48, 41, 28, 20, MAPDATA_DRAW_1, 1, 60 }, { 64, 76, 17, 36, MAPDATA_DRAW_1, 1, 58 }, { 80, 60, 27, 22, MAPDATA_DRAW_1, 1, 83 }, { 80, 47, 38, 23, MAPDATA_DRAW_1, 1, 69 }, { 80, 60, 40, 38, MAPDATA_DRAW_1, 1, 29 }, { 48, 19, 17, 8, MAPDATA_DRAW_1, 1, 25 }, { 32, 99, 17, 16, MAPDATA_DRAW_1, 1, 88 }, { 48, 69, 19, 28, MAPDATA_DRAW_1, 1, 76 }, { 48, 83, 34, 47, MAPDATA_DRAW_1, 1, 104 }, { 80, 54, 45, 27, MAPDATA_DRAW_1, 1, 61 }, { 80, 92, 35, 50, MAPDATA_DRAW_1, 1, 60 }, { 48, 75, 24, 37, MAPDATA_DRAW_3, 2, 20 }, { 64, 49, 32, 23, MAPDATA_DRAW_3, 2, 20 }, { 64, 49, 25, 24, MAPDATA_DRAW_3, 2, 20 }, { 64, 52, 32, 24, MAPDATA_DRAW_3, 2, 34 }, { 64, 49, 31, 24, MAPDATA_DRAW_3, 2, 34 }, { 32, 33, 18, 14, MAPDATA_DRAW_3, 2, 34 }, { 48, 50, 25, 25, MAPDATA_DRAW_3, 2, 34 }, { 64, 52, 32, 25, MAPDATA_DRAW_3, 2, 34 }, { 48, 35, 24, 18, MAPDATA_DRAW_3, 2, 34 }, { 64, 51, 32, 26, MAPDATA_DRAW_3, 2, 34 }, { 48, 35, 24, 18, MAPDATA_DRAW_3, 2, 34 }, { 48, 53, 24, 28, MAPDATA_DRAW_3, 2, 34 }, { 64, 53, 33, 25, MAPDATA_DRAW_3, 2, 34 }, { 64, 47, 31, 24, MAPDATA_DRAW_3, 2, 34 }, { 64, 52, 32, 35, MAPDATA_DRAW_3, 2, 34 }, { 48, 48, 24, 23, MAPDATA_DRAW_3, 2, 34 }, { 64, 87, 32, 26, MAPDATA_DRAW_3, 2, 34 }, { 48, 30, 24, 14, MAPDATA_DRAW_3, 2, 34 }, { 80, 74, 40, 36, MAPDATA_DRAW_1, 1, 50 }, { 80, 87, 6, 41, MAPDATA_DRAW_1, 1, 42 }, { 80, 56, 19, 27, MAPDATA_DRAW_1, 1, 40 }, { 80, 65, 25, 33, MAPDATA_DRAW_1, 1, 40 }, { 16, 38, 8, 12, MAPDATA_DRAW_1, 1, 47 }, { 80, 78, 46, 33, MAPDATA_DRAW_1, 1, 142 }, { 80, 55, 32, 29, MAPDATA_DRAW_1, 1, 155 }, { 80, 98, 67, 48, MAPDATA_DRAW_1, 1, 51 }, { 80, 62, 47, 19, MAPDATA_DRAW_1, 1, 55 }, { 32, 123, 15, 83, MAPDATA_DRAW_1, 1, 140 }, { 80, 60, 47, 14, MAPDATA_DRAW_1, 1, 170 }, { 48, 77, 18, 59, MAPDATA_DRAW_1, 1, 79 }, { 80, 64, 35, 30, MAPDATA_DRAW_1, 1, 33 }, { 64, 50, 29, 22, MAPDATA_DRAW_1, 1, 40 }, { 80, 65, 39, 5, MAPDATA_DRAW_1, 1, 37 }, { 32, 61, 8, 56, MAPDATA_DRAW_1, 1, 35 }, { 80, 83, 37, 42, MAPDATA_DRAW_1, 1, 95 }, { 80, 27, 30, 21, MAPDATA_DRAW_1, 1, 134 }, { 80, 23, 122, -18, MAPDATA_DRAW_1, 1, 53 }, { 80, 60, 27, 22, MAPDATA_DRAW_1, 1, 83 }, }; static s32 D_801BF15C[5] = { 0x50, 0x50, 0x8D, 0x50, 0x50, }; static MapSpriteInfo sMapIStaticInfo[MAPDATA_MAP_I_MAX] = { { 96, 85, 73, 67, MAPDATA_DRAW_0, 0, 60 }, { 96, 85, 73, 74, MAPDATA_DRAW_0, 0, 60 }, { 96, 85, 80, 67, MAPDATA_DRAW_0, 0, 60 }, { 96, 85, 73, 67, MAPDATA_DRAW_0, 0, 60 }, { 96, 85, 80, 74, MAPDATA_DRAW_0, 0, 60 }, { 32, 29, 17, 14, MAPDATA_DRAW_2, 0, 50 }, { 32, 27, 16, 13, MAPDATA_DRAW_2, 0, 50 }, { 32, 30, 16, 15, MAPDATA_DRAW_2, 0, 50 }, { 16, 32, 8, 20, MAPDATA_DRAW_2, 0, 50 }, { 16, 12, 8, 6, MAPDATA_DRAW_2, 0, 50 }, { 32, 27, 16, 13, MAPDATA_DRAW_2, 0, 50 }, { 16, 14, 8, 7, MAPDATA_DRAW_2, 0, 50 }, { 32, 19, 16, 9, MAPDATA_DRAW_2, 0, 50 }, { 32, 26, 16, 16, MAPDATA_DRAW_2, 0, 50 }, { 16, 32, 8, 22, MAPDATA_DRAW_2, 0, 50 }, { 32, 27, 16, 13, MAPDATA_DRAW_2, 0, 50 }, { 16, 35, 9, 5, MAPDATA_DRAW_2, 0, 45 }, { 32, 18, 14, 9, MAPDATA_DRAW_2, 0, 45 }, { 32, 38, 18, 19, MAPDATA_DRAW_2, 0, 45 }, { 32, 21, 16, 9, MAPDATA_DRAW_2, 0, 45 }, { 32, 34, 16, 17, MAPDATA_DRAW_2, 0, 45 }, { 48, 32, 19, 11, MAPDATA_DRAW_2, 0, 45 }, { 32, 17, 16, 8, MAPDATA_DRAW_2, 0, 45 }, { 32, 17, 16, 7, MAPDATA_DRAW_2, 0, 45 }, { 32, 21, 16, 11, MAPDATA_DRAW_2, 0, 45 }, { 32, 18, 16, 8, MAPDATA_DRAW_2, 0, 45 }, { 16, 24, 9, 15, MAPDATA_DRAW_2, 0, 45 }, { 16, 25, 7, 16, MAPDATA_DRAW_2, 0, 45 }, { 32, 35, 16, 17, MAPDATA_DRAW_2, 0, 45 }, { 16, 19, 5, 9, MAPDATA_DRAW_2, 0, 80 }, { 32, 28, 17, 7, MAPDATA_DRAW_2, 0, 66 }, { 32, 16, 16, 8, MAPDATA_DRAW_2, 0, 66 }, { 32, 24, 18, 11, MAPDATA_DRAW_2, 0, 66 }, { 32, 21, 16, 10, MAPDATA_DRAW_2, 0, 66 }, { 16, 21, 8, 11, MAPDATA_DRAW_2, 0, 66 }, { 16, 10, 8, 4, MAPDATA_DRAW_2, 0, 66 }, { 16, 7, 8, 3, MAPDATA_DRAW_2, 0, 66 }, { 32, 23, 13, 11, MAPDATA_DRAW_2, 0, 66 }, { 16, 16, 8, 8, MAPDATA_DRAW_2, 0, 66 }, { 16, 17, 8, 7, MAPDATA_DRAW_2, 0, 50 }, { 16, 23, 9, 10, MAPDATA_DRAW_2, 0, 66 }, { 16, 15, 8, 7, MAPDATA_DRAW_2, 0, 66 }, { 32, 15, 15, 7, MAPDATA_DRAW_2, 0, 66 }, { 32, 17, 16, 8, MAPDATA_DRAW_2, 0, 90 }, { 32, 16, 16, 8, MAPDATA_DRAW_2, 0, 90 }, { 16, 10, 8, 5, MAPDATA_DRAW_2, 0, 90 }, { 16, 17, 8, 8, MAPDATA_DRAW_2, 0, 90 }, { 32, 17, 17, 8, MAPDATA_DRAW_2, 0, 90 }, { 16, 11, 8, 5, MAPDATA_DRAW_2, 0, 90 }, { 32, 17, 15, 9, MAPDATA_DRAW_2, 0, 90 }, { 16, 12, 8, 6, MAPDATA_DRAW_2, 0, 90 }, { 16, 18, 9, 9, MAPDATA_DRAW_2, 0, 90 }, { 32, 17, 17, 8, MAPDATA_DRAW_2, 0, 90 }, { 32, 15, 16, 8, MAPDATA_DRAW_2, 0, 90 }, { 16, 18, 9, 13, MAPDATA_DRAW_2, 0, 90 }, { 16, 16, 8, 7, MAPDATA_DRAW_2, 0, 90 }, { 16, 30, 9, 8, MAPDATA_DRAW_2, 0, 90 }, { 16, 9, 9, 4, MAPDATA_DRAW_2, 0, 90 }, }; static s32 sMapIForGameplayDangeonKeep[5] = { 0x00, 0x01, 0x02, 0x03, 0x04, }; static s32 sMapIForMapGrand[98] = { MAPDATA_MAP_I_MAX, 0x01, 0x02, 0x03, 0x04, MAPDATA_MAP_I_MAX, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, MAPDATA_MAP_I_MAX, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, 0x27, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, MAPDATA_MAP_I_MAX, }; void MapData_GetMapColor(s32 colorIndex, Color_RGBA8* color) { *color = sMapColorTable[colorIndex]; } void MapData_GetMapTexDimGameplayDangeonKeep(s32 mapId, s32* width, s32* height) { *width = sGameplayDangeonKeepInfo[mapId].width; *height = sGameplayDangeonKeepInfo[mapId].height; } void MapData_GetMapTexOffsetGameplayDangeonKeep(s32 mapId, s32* offsetX, s32* offsetY) { *offsetX = sGameplayDangeonKeepInfo[mapId].offsetX; *offsetY = sGameplayDangeonKeepInfo[mapId].offsetY; } void MapData_GetMapDrawTypeGameplayDangeonKeep(s32 mapId, s32* drawType) { *drawType = sGameplayDangeonKeepInfo[mapId].drawType; } u8 MapData_GetMapColorIndexGameplayDangeonKeep(s32 mapId) { return sGameplayDangeonKeepInfo[mapId].colorIndex; } s16 MapData_GetMapGameplayDangeonKeepScale(s32 mapId) { return sGameplayDangeonKeepInfo[mapId].scale; } TexturePtr MapData_GetMapTexGameplayDangeonKeep(s32 mapId) { return sGameplayDangeonKeepInfo[mapId].spriteTex; } void MapData_GetMapTexGameplayDangeonKeepDim(s32 mapId, s32* width, s32* height) { *width = sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].texWidth; *height = sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].texHeight; } void MapData_GetMapTexGameplayDangeonKeepOffset(s32 mapId, s32* offsetX, s32* offsetY) { *offsetX = sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].offsetX; *offsetY = sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].offsetY; } void MapData_GetMapGrandDrawType(s32 mapId, s32* drawType) { *drawType = sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].drawType; } u8 MapData_GetMapGrandColorIndex(s32 mapId) { return sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].colorIndex; } s16 MapData_GetMapGrandScale(s32 mapId) { return sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].scale; } s32 MapData_MapGrandTexSizeTest(s32 mapId) { s32 endMap = mapId - MAPDATA_MAP_GRAND; s32 size = 0; s32 i; for (i = 1; i < endMap + 1; i++) { size += MapData_GetSizeOfMapGrandTex((i - 1) + MAPDATA_MAP_GRAND); } return size; } s32 MapData_GetSizeOfMapGrandTex(s32 mapId) { return (sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].texWidth * sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].texHeight) / 2; } s32 MapData_MID_GetType(s32 mapId) { if ((mapId >= 0) && (mapId < 5)) { return MAPDATA_MID_GAMEPLAY_DANGEON_KEEP; } if ((mapId >= 0x100) && (mapId < 0x162)) { return MAPDATA_MID_MAP_GRAND_STATIC; } return MAPDATA_MID_MAP_I_STATIC; } void MapData_GetMapTexDim(s32 mapId, s32* width, s32* height) { switch (MapData_MID_GetType(mapId)) { case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP: MapData_GetMapTexDimGameplayDangeonKeep(mapId, width, height); return; case MAPDATA_MID_MAP_GRAND_STATIC: MapData_GetMapTexGameplayDangeonKeepDim(mapId, width, height); return; default: *width = *height = 0; return; } } void MapData_GetMapTexOffset(s32 mapId, s32* offsetX, s32* offsetY) { switch (MapData_MID_GetType(mapId)) { case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP: MapData_GetMapTexOffsetGameplayDangeonKeep(mapId, offsetX, offsetY); return; case MAPDATA_MID_MAP_GRAND_STATIC: MapData_GetMapTexGameplayDangeonKeepOffset(mapId, offsetX, offsetY); return; default: *offsetX = *offsetY = 0; return; } } void MapData_GetMapScale(s32 mapId, s32* scale) { switch (MapData_MID_GetType(mapId)) { default: *scale = 0; return; case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP: *scale = MapData_GetMapGameplayDangeonKeepScale(mapId); return; case MAPDATA_MID_MAP_GRAND_STATIC: *scale = MapData_GetMapGrandScale(mapId); return; } } void MapData_GetDrawType(s32 mapId, s32* drawType) { switch (MapData_MID_GetType(mapId)) { case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP: MapData_GetMapDrawTypeGameplayDangeonKeep(mapId, drawType); return; case MAPDATA_MID_MAP_GRAND_STATIC: MapData_GetMapGrandDrawType(mapId, drawType); return; default: *drawType = 0; return; } } s32 MapData_GetMapColorIndex(s32 mapId) { switch (MapData_MID_GetType(mapId)) { case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP: return MapData_GetMapColorIndexGameplayDangeonKeep(mapId); case MAPDATA_MID_MAP_GRAND_STATIC: return MapData_GetMapGrandColorIndex(mapId); default: return 0; } } s32 func_80109964(s32 arg0) { return D_801BF15C[arg0]; } void MapData_GetMapITexDim(s32 mapId, s32* width, s32* height) { *width = sMapIStaticInfo[mapId].texWidth; *height = sMapIStaticInfo[mapId].texHeight; } void MapData_GetMapITexOffset(s32 mapId, s32* offsetX, s32* offsetY) { *offsetX = sMapIStaticInfo[mapId].offsetX; *offsetY = sMapIStaticInfo[mapId].offsetY; } void MapData_GetMapIDrawType(s32 mapId, s32* drawType) { *drawType = sMapIStaticInfo[mapId].drawType; } u8 MapData_GetMapIColorIndex(s32 mapId) { return sMapIStaticInfo[mapId].colorIndex; } s16 MapData_GetMapIScale(s32 mapId) { return sMapIStaticInfo[mapId].scale; } s32 MapData_MapITexSizeTest(s32 mapId) { s32 i; s32 size = 0; for (i = 1; i < mapId + 1; i++) { size += MapDisp_GetSizeOfMapITex(i - 1); } return size; } s32 MapDisp_GetSizeOfMapITex(s32 mapCompactId) { return (sMapIStaticInfo[mapCompactId].texWidth * sMapIStaticInfo[mapCompactId].texHeight) / 2; } s32 MapData_GetMapIId(s32 mapId) { switch (MapData_MID_GetType(mapId)) { case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP: return sMapIForGameplayDangeonKeep[mapId]; case MAPDATA_MID_MAP_GRAND_STATIC: return sMapIForMapGrand[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)]; default: return 0; } } s32 func_80109B38(s32 mapId) { if (MapData_GetMapIId(mapId) != MAPDATA_MAP_I_MAX) { return 1; } switch (MapData_MID_GetType(mapId)) { case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP: return 2; case MAPDATA_MID_MAP_GRAND_STATIC: return 0; default: return 0; } } s32 MapData_GetMapCompactId(s32 mapId) { s32 mapI = MapData_GetMapIId(mapId); if (mapI != MAPDATA_MAP_I_MAX) { return mapI; } if ((mapId >= 0x100) && (mapId < 0x162)) { return mapId - 0xC6; } return -1; } s32 MapData_CPID_GetType(s32 mapCompactId) { if (mapCompactId == -1) { return MAPDATA_CPID_2; } if (mapCompactId < MAPDATA_MAP_I_MAX) { return MAPDATA_CPID_MAP_I_STATIC; } if (mapCompactId >= MAPDATA_MAP_I_MAX) { return MAPDATA_CPID_MAP_GRAND_STATIC; } return MAPDATA_CPID_2; } // Unused s32 func_80109C38(s32 mapCompactId) { if (mapCompactId == -1) { return 0; } switch (MapData_CPID_GetType(mapCompactId)) { case MAPDATA_CPID_MAP_GRAND_STATIC: return MapData_MapGrandTexSizeTest(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId)); case MAPDATA_CPID_MAP_I_STATIC: return MapData_MapITexSizeTest(mapCompactId); case MAPDATA_CPID_2: return 0; default: return 0; } } s32 MapData_CPID_GetSizeOfMapTex(s32 mapCompactId) { if (mapCompactId == -1) { return 0; } switch (MapData_CPID_GetType(mapCompactId)) { case MAPDATA_CPID_MAP_GRAND_STATIC: return MapData_GetSizeOfMapGrandTex(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId)); case MAPDATA_CPID_MAP_I_STATIC: return MapDisp_GetSizeOfMapITex(mapCompactId); case MAPDATA_CPID_2: return 0; default: return 0; } } void MapData_CPID_GetTexDim(s32 mapCompactId, s32* width, s32* height) { if (mapCompactId == -1) { *width = *height = 0; return; } switch (MapData_CPID_GetType(mapCompactId)) { case MAPDATA_CPID_MAP_GRAND_STATIC: MapData_GetMapTexGameplayDangeonKeepDim(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId), width, height); return; case MAPDATA_CPID_MAP_I_STATIC: MapData_GetMapITexDim(mapCompactId, width, height); return; case MAPDATA_CPID_2: default: *width = *height = 0; return; } } void MapData_CPID_GetTexOffset(s32 mapCompactId, s32* offsetX, s32* offsetY) { if (mapCompactId == -1) { *offsetX = *offsetY = 0; return; } switch (MapData_CPID_GetType(mapCompactId)) { case MAPDATA_CPID_MAP_GRAND_STATIC: MapData_GetMapTexGameplayDangeonKeepOffset(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId), offsetX, offsetY); return; case MAPDATA_CPID_MAP_I_STATIC: MapData_GetMapITexOffset(mapCompactId, offsetX, offsetY); return; case MAPDATA_CPID_2: default: *offsetX = *offsetY = 0; return; } } // Unused void MapData_CPID_GetDrawType(s32 mapCompactId, s32* drawType) { if (mapCompactId == -1) { *drawType = MAPDATA_DRAW_0; return; } switch (MapData_CPID_GetType(mapCompactId)) { case MAPDATA_CPID_MAP_GRAND_STATIC: MapData_GetMapGrandDrawType(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId), drawType); return; case MAPDATA_CPID_MAP_I_STATIC: MapData_GetMapIDrawType(mapCompactId, drawType); return; case MAPDATA_CPID_2: default: *drawType = MAPDATA_DRAW_0; return; } } // Unused u8 MapData_CPID_GetMapColorIndex(s32 mapCompactId) { if (mapCompactId == -1) { return 0; } switch (MapData_CPID_GetType(mapCompactId)) { case MAPDATA_CPID_MAP_GRAND_STATIC: return MapData_GetMapGrandColorIndex(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId)); case MAPDATA_CPID_MAP_I_STATIC: return MapData_GetMapIColorIndex(mapCompactId); case MAPDATA_CPID_2: default: return 0; } } s16 MapData_CPID_GetMapScale(s32 mapCompactId) { if (mapCompactId == -1) { return 0; } switch (MapData_CPID_GetType(mapCompactId)) { case MAPDATA_CPID_MAP_GRAND_STATIC: return MapData_GetMapGrandScale(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId)); case MAPDATA_CPID_MAP_I_STATIC: return MapData_GetMapIScale(mapCompactId); case MAPDATA_CPID_2: default: return 0; } }