summaryrefslogtreecommitdiff
path: root/src/code/z_map_data.c
diff options
context:
space:
mode:
authormzxrules <mzxrules@gmail.com>2024-06-20 21:21:37 -0400
committerGitHub <noreply@github.com>2024-06-20 18:21:37 -0700
commit2c680efa9169eaaddae97330fa3ea9586a273b57 (patch)
treece5df566d1079693852420d0276750f8939da18f /src/code/z_map_data.c
parentb55f8ffe6e60ed2335acbe7d428049ea1056f4b5 (diff)
z_map decompiled (#1032)
* First batch of functions * more ok * z_map_data OK * More OKs, MinimapList ZAPD breaking change * func_80103A58 improvements, more OK * func_80106D5C and func_801091F0 decomped * func_801031D0 decomped and some fixes * house cleaning, more OKs more decomp * Even more OKs * func_80105C40 almost OK, more OKs * func_80108AF8 OK and more * All functions attempted * func_8010534C OK * Start documentation, rename DoorCtx * More OKs, split map_data.data, more doc * incremental clean-up, more function names * more function names * func_801068FC OK * old uncommitted changes * minor tweaks * implement easy fixes * more fixes * z_map_disp OK, implement more suggestions * delete utility program * migrate data * TransiActor ->TransitionActor * Major documentation pass * first pass of changes * warning fix attempt, revert ZFile.cpp * Fix FAKE match * Easy fixes * implement gDPLoadTextureBlock_Runtime * z_demo bss patch * Extract white square texture * Implement more suggestions * rework MapIndex/DungeonIndex * revert dungeonSceneIndex -> mapIndex in some spots, implement suggestions * more suggestions * minor nits * fix #include
Diffstat (limited to 'src/code/z_map_data.c')
-rw-r--r--src/code/z_map_data.c699
1 files changed, 621 insertions, 78 deletions
diff --git a/src/code/z_map_data.c b/src/code/z_map_data.c
index a854a37e7..571613a0d 100644
--- a/src/code/z_map_data.c
+++ b/src/code/z_map_data.c
@@ -1,79 +1,622 @@
#include "global.h"
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801094A0.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801094C8.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801094F8.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109528.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_8010954C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_8010956C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_8010958C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801095AC.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801095DC.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_8010960C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109630.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109650.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109670.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801096D4.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109714.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109754.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801097C8.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_8010983C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801098A0.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109908.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109964.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_8010997C.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801099AC.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801099DC.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109A00.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109A20.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109A40.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109A98.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109AD8.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109B38.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109BA0.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109BF4.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109C38.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109CBC.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109D40.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109DD8.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109E70.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109EF8.s")
-
-#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109F78.s")
+#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;
+ }
+}