summaryrefslogtreecommitdiff
path: root/soh/src
diff options
context:
space:
mode:
Diffstat (limited to 'soh/src')
-rw-r--r--soh/src/code/z_map_mark.c37
-rw-r--r--soh/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.c1
-rw-r--r--soh/src/overlays/actors/ovl_En_Mag/z_en_mag.c65
-rw-r--r--soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c209
-rw-r--r--soh/src/overlays/gamestates/ovl_title/z_title.c7
-rw-r--r--soh/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.c7
-rw-r--r--soh/src/overlays/misc/ovl_map_mark_data/z_map_mark_data.c1469
7 files changed, 1731 insertions, 64 deletions
diff --git a/soh/src/code/z_map_mark.c b/soh/src/code/z_map_mark.c
index 3ebbfd119..79540ee20 100644
--- a/soh/src/code/z_map_mark.c
+++ b/soh/src/code/z_map_mark.c
@@ -42,28 +42,33 @@ static MapMarkInfo sMapMarkInfoTable[] = {
{ gMapBossIconTex, G_IM_FMT_IA, G_IM_SIZ_8b, 8, 8, 32, 32, 1 << 10, 1 << 10 }, // Boss Skull Icon
};
-static MapMarkDataOverlay sMapMarkDataOvl = {
- NULL,
- //(uintptr_t)_ovl_map_mark_dataSegmentRomStart,
- //(uintptr_t)_ovl_map_mark_dataSegmentRomEnd,
- //_ovl_map_mark_dataSegmentStart,
- //_ovl_map_mark_dataSegmentEnd,
- 0, 0, 0, 0,
- gMapMarkDataTable,
-};
+//static MapMarkDataOverlay sMapMarkDataOvl = {
+// NULL,
+// //(uintptr_t)_ovl_map_mark_dataSegmentRomStart,
+// //(uintptr_t)_ovl_map_mark_dataSegmentRomEnd,
+// //_ovl_map_mark_dataSegmentStart,
+// //_ovl_map_mark_dataSegmentEnd,
+// 0, 0, 0, 0,
+// gMapMarkDataTableVanilla,
+//};
MapMarkData** sLoadedMarkDataTable;
void MapMark_Init(GlobalContext* globalCtx) {
- MapMarkDataOverlay* overlay = &sMapMarkDataOvl;
- u32 overlaySize = (uintptr_t)overlay->vramEnd - (uintptr_t)overlay->vramStart;
+ //MapMarkDataOverlay* overlay = &sMapMarkDataOvl;
+ //u32 overlaySize = (uintptr_t)overlay->vramEnd - (uintptr_t)overlay->vramStart;
- overlay->loadedRamAddr = GAMESTATE_ALLOC_MC(&globalCtx->state, overlaySize);
- LOG_CHECK_NULL_POINTER("dlftbl->allocp", overlay->loadedRamAddr);
+ //overlay->loadedRamAddr = GAMESTATE_ALLOC_MC(&globalCtx->state, overlaySize);
+ //LOG_CHECK_NULL_POINTER("dlftbl->allocp", overlay->loadedRamAddr);
- Overlay_Load(overlay->vromStart, overlay->vromEnd, overlay->vramStart, overlay->vramEnd, overlay->loadedRamAddr);
+ //Overlay_Load(overlay->vromStart, overlay->vromEnd, overlay->vramStart, overlay->vramEnd, overlay->loadedRamAddr);
- sLoadedMarkDataTable = gMapMarkDataTable;
+ if(ResourceMgr_IsGameMasterQuest()) {
+ sLoadedMarkDataTable = gMapMarkDataTableMq;
+ } else {
+ sLoadedMarkDataTable = gMapMarkDataTableVanilla;
+ }
+ //sLoadedMarkDataTable = gMapMarkDataTableVanilla;
//sLoadedMarkDataTable = (void*)(uintptr_t)(
//(overlay->vramTable != NULL)
//? (void*)((uintptr_t)overlay->vramTable - ((intptr_t)overlay->vramStart - (intptr_t)overlay->loadedRamAddr))
@@ -71,7 +76,7 @@ void MapMark_Init(GlobalContext* globalCtx) {
}
void MapMark_ClearPointers(GlobalContext* globalCtx) {
- sMapMarkDataOvl.loadedRamAddr = NULL;
+ //sMapMarkDataOvl.loadedRamAddr = NULL;
sLoadedMarkDataTable = NULL;
}
diff --git a/soh/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.c b/soh/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.c
index 15ae34f43..da3041c7e 100644
--- a/soh/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.c
+++ b/soh/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.c
@@ -148,6 +148,7 @@ s32 DemoTreLgt_PostLimbDraw(GlobalContext* globalCtx, SkelAnimeCurve* skelCurve,
}
CLOSE_DISPS(globalCtx->state.gfxCtx);
+ return 1;
}
void DemoTreLgt_Draw(Actor* thisx, GlobalContext* globalCtx) {
diff --git a/soh/src/overlays/actors/ovl_En_Mag/z_en_mag.c b/soh/src/overlays/actors/ovl_En_Mag/z_en_mag.c
index 88fff9caa..198db10a4 100644
--- a/soh/src/overlays/actors/ovl_En_Mag/z_en_mag.c
+++ b/soh/src/overlays/actors/ovl_En_Mag/z_en_mag.c
@@ -10,9 +10,20 @@
#define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_5)
void EnMag_Init(Actor* thisx, GlobalContext* globalCtx);
+void EnMag_InitMq(Actor* thisx, GlobalContext* globalCtx);
+void EnMag_InitVanilla(Actor* thisx, GlobalContext* globalCtx);
+
void EnMag_Destroy(Actor* thisx, GlobalContext* globalCtx);
-void EnMag_Update(Actor* thisx, GlobalContext* globalCtx);
+void EnMag_UpdateMq(Actor* thisx, GlobalContext* globalCtx);
+void EnMag_UpdateVanilla(Actor* thisx, GlobalContext* globalCtx);
+
void EnMag_Draw(Actor* thisx, GlobalContext* globalCtx);
+void EnMag_DrawInnerVanilla(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp);
+void EnMag_DrawInnerMq(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp);
+
+typedef void (*EnMagDrawInnerFunc)(struct Actor*, GlobalContext*, Gfx**);
+
+static EnMagDrawInnerFunc drawInnerFunc;
const ActorInit En_Mag_InitVars = {
ACTOR_EN_MAG,
@@ -22,14 +33,25 @@ const ActorInit En_Mag_InitVars = {
sizeof(EnMag),
(ActorFunc)EnMag_Init,
(ActorFunc)EnMag_Destroy,
- (ActorFunc)EnMag_Update,
+ (ActorFunc)NULL,
(ActorFunc)EnMag_Draw,
NULL,
};
-static s16 sDelayTimer = 0;
-#ifdef MASTER_QUEST
void EnMag_Init(Actor* thisx, GlobalContext* globalCtx) {
+ if (ResourceMgr_IsGameMasterQuest()) {
+ EnMag_InitMq(thisx, globalCtx);
+ drawInnerFunc = EnMag_DrawInnerMq;
+ thisx->update = EnMag_UpdateMq;
+ } else {
+ EnMag_InitVanilla(thisx, globalCtx);
+ thisx->update = EnMag_UpdateVanilla;
+ drawInnerFunc = EnMag_DrawInnerVanilla;
+ }
+}
+
+static s16 sDelayTimer = 0;
+void EnMag_InitMq(Actor* thisx, GlobalContext* globalCtx) {
EnMag* this = (EnMag*)thisx;
YREG(1) = 63;
@@ -98,8 +120,8 @@ void EnMag_Init(Actor* thisx, GlobalContext* globalCtx) {
this->unk_E31C = 0;
this->unk_E320 = 0;
}
-#else
-void EnMag_Init(Actor* thisx, GlobalContext* globalCtx) {
+
+void EnMag_InitVanilla(Actor* thisx, GlobalContext* globalCtx) {
EnMag* this = (EnMag*)thisx;
Color_RGB8 Original_Prim = { 255, 255, 170 };
Color_RGB8 Original_Env = { 255, 100, 0 };
@@ -188,13 +210,11 @@ void EnMag_Init(Actor* thisx, GlobalContext* globalCtx) {
this->unk_E31C = 0;
this->unk_E320 = 0;
}
-#endif
void EnMag_Destroy(Actor* thisx, GlobalContext* globalCtx) {
}
-#ifdef MASTER_QUEST
-void EnMag_Update(Actor* thisx, GlobalContext* globalCtx) {
+void EnMag_UpdateMq(Actor* thisx, GlobalContext* globalCtx) {
s32 pad[2];
EnMag* this = (EnMag*)thisx;
@@ -353,8 +373,8 @@ void EnMag_Update(Actor* thisx, GlobalContext* globalCtx) {
}
}
}
-#else
-void EnMag_Update(Actor* thisx, GlobalContext* globalCtx) {
+
+void EnMag_UpdateVanilla(Actor* thisx, GlobalContext* globalCtx) {
s32 pad[2];
EnMag* this = (EnMag*)thisx;
Color_RGB8 Original_Prim = { 255, 255, 170 };
@@ -539,9 +559,8 @@ void EnMag_Update(Actor* thisx, GlobalContext* globalCtx) {
}
}
}
-#endif
-void EnMag_DrawTextureI8(Gfx** gfxp, void* texture, s16 texWidth, s16 texHeight, s16 rectLeft, s16 rectTop,
+void EnMag_DrawTextureI8(Gfx** gfxp, const void* texture, s16 texWidth, s16 texHeight, s16 rectLeft, s16 rectTop,
s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) {
Gfx* gfx = *gfxp;
@@ -554,7 +573,7 @@ void EnMag_DrawTextureI8(Gfx** gfxp, void* texture, s16 texWidth, s16 texHeight,
*gfxp = gfx;
}
-void EnMag_DrawEffectTextures(Gfx** gfxp, void* maskTex, void* effectTex, s16 maskWidth, s16 maskHeight,
+void EnMag_DrawEffectTextures(Gfx** gfxp, const void* maskTex, void* effectTex, s16 maskWidth, s16 maskHeight,
s16 effectWidth, s16 effectHeight, s16 rectLeft, s16 rectTop, s16 rectWidth,
s16 rectHeight, u16 dsdx, u16 dtdy, u16 shifts, u16 shiftt, u16 flag, EnMag* this) {
Gfx* gfx = *gfxp;
@@ -575,7 +594,7 @@ void EnMag_DrawEffectTextures(Gfx** gfxp, void* maskTex, void* effectTex, s16 ma
*gfxp = gfx;
}
-void EnMag_DrawImageRGBA32(Gfx** gfxp, s16 centerX, s16 centerY, u8* source, u32 width, u32 height) {
+void EnMag_DrawImageRGBA32(Gfx** gfxp, s16 centerX, s16 centerY, const char* source, u32 width, u32 height) {
Gfx* gfx = *gfxp;
u8* curTexture;
s32 textureCount;
@@ -650,8 +669,9 @@ void EnMag_DrawCharTexture(Gfx** gfxp, u8* texture, s32 rectLeft, s32 rectTop) {
*gfxp = gfx;
}
-#ifdef MASTER_QUEST
-void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) {
+
+
+void EnMag_DrawInnerMq(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) {
static s16 textAlpha = 0;
static s16 textFadeDirection = 0;
static s16 textFadeTimer = 0;
@@ -735,7 +755,7 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) {
gDPPipeSync(gfx++);
gDPSetPrimColor(gfx++, 0, 0, 255, 255, 255, (s16)this->subAlpha);
- EnMag_DrawImageRGBA32(&gfx, 174, 145, (u8*)gTitleMasterQuestSubtitleTex, 128, 32);
+ EnMag_DrawImageRGBA32(&gfx, 174, 145, "__OTR__objects/object_mag/gTitleMasterQuestSubtitleTex", 128, 32);
}
func_8009457C(&gfx);
@@ -840,8 +860,8 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) {
*gfxp = gfx;
}
-#else
-void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) {
+
+void EnMag_DrawInnerVanilla(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) {
static s16 textAlpha = 0;
static s16 textFadeDirection = 0;
static s16 textFadeTimer = 0;
@@ -851,7 +871,7 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) {
static u8 pressStartFontIndexes[] = {
0x19, 0x1B, 0x0E, 0x1C, 0x1C, 0x1C, 0x1D, 0x0A, 0x1B, 0x1D,
};
- static void* effectMaskTextures[] = {
+ static const void* effectMaskTextures[] = {
gTitleEffectMask00Tex, gTitleEffectMask01Tex, gTitleEffectMask02Tex,
gTitleEffectMask10Tex, gTitleEffectMask11Tex, gTitleEffectMask12Tex,
gTitleEffectMask20Tex, gTitleEffectMask21Tex, gTitleEffectMask22Tex,
@@ -1027,7 +1047,6 @@ void EnMag_DrawInner(Actor* thisx, GlobalContext* globalCtx, Gfx** gfxp) {
*gfxp = gfx;
}
-#endif
void EnMag_Draw(Actor* thisx, GlobalContext* globalCtx) {
s32 pad;
@@ -1040,7 +1059,7 @@ void EnMag_Draw(Actor* thisx, GlobalContext* globalCtx) {
gfx = Graph_GfxPlusOne(gfxRef);
gSPDisplayList(OVERLAY_DISP++, gfx);
- EnMag_DrawInner(thisx, globalCtx, &gfx);
+ drawInnerFunc(thisx, globalCtx, &gfx);
gSPEndDisplayList(gfx++);
Graph_BranchDlist(gfxRef, gfx);
diff --git a/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c b/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c
index 8934ee245..18cf4598f 100644
--- a/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c
+++ b/soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c
@@ -6,6 +6,7 @@
#include "textures/parameter_static/parameter_static.h"
#include <textures/icon_item_static/icon_item_static.h>
#include "soh/frame_interpolation.h"
+#include <libultraship/GameVersions.h>
static s16 sUnused = 106;
@@ -163,6 +164,158 @@ unsigned char gFileSelRANDButtonTex[] = {
0x0, 0x0, 0x0, 0x0,
};
+unsigned char gFileSelMQButtonTex[] = {
+ 0x0, 0x0, 0x75, 0x73, 0xfa, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7,
+ 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff,
+ 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7,
+ 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff,
+ 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xe0, 0xff, 0x51, 0x7f, 0x0, 0x0, 0x5e, 0x5c, 0xff, 0xff, 0xff, 0xff, 0xf7,
+ 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff,
+ 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7,
+ 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff,
+ 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xf7, 0xff, 0xa0,
+ 0xff, 0xa0, 0xff, 0x51, 0x7f, 0xe2, 0xff, 0xf7, 0xff, 0xf2, 0xff, 0x90, 0xff, 0x97, 0xff, 0x9d, 0xff, 0xa3, 0xff,
+ 0xa9, 0xff, 0xb0, 0xff, 0xb6, 0xff, 0xbc, 0xff, 0xc3, 0xff, 0xca, 0xff, 0xd0, 0xff, 0xd3, 0xff, 0xce, 0xff, 0xca,
+ 0xff, 0xc5, 0xff, 0xc1, 0xff, 0xbc, 0xff, 0xb8, 0xff, 0xb4, 0xff, 0xaf, 0xff, 0xab, 0xff, 0xa7, 0xff, 0xa2, 0xff,
+ 0x9e, 0xff, 0x9a, 0xff, 0x95, 0xff, 0x91, 0xff, 0x8c, 0xff, 0x88, 0xff, 0x84, 0xff, 0x80, 0xff, 0x7c, 0xff, 0x77,
+ 0xff, 0x75, 0xff, 0x7f, 0xff, 0x8a, 0xff, 0x95, 0xff, 0xa1, 0xff, 0xa2, 0xff, 0x93, 0xff, 0x59, 0xff, 0xd2, 0xff,
+ 0xd8, 0xff, 0x8b, 0xff, 0x90, 0xff, 0x97, 0xff, 0x9d, 0xff, 0xa3, 0xff, 0xa9, 0xff, 0xb0, 0xff, 0xb6, 0xff, 0xbc,
+ 0xff, 0xc3, 0xff, 0xca, 0xff, 0xd0, 0xff, 0x8c, 0xff, 0xce, 0xff, 0xca, 0xff, 0xc5, 0xff, 0xc1, 0xff, 0xbc, 0xff,
+ 0x7a, 0xff, 0x95, 0xff, 0xaf, 0xff, 0xab, 0xff, 0xa7, 0xff, 0x6a, 0xff, 0x50, 0xff, 0x4e, 0xff, 0x62, 0xff, 0x8f,
+ 0xff, 0x8c, 0xff, 0x88, 0xff, 0x84, 0xff, 0x80, 0xff, 0x7c, 0xff, 0x77, 0xff, 0x75, 0xff, 0x7f, 0xff, 0x8a, 0xff,
+ 0x95, 0xff, 0xa1, 0xff, 0xb0, 0xff, 0x47, 0xff, 0x3a, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0x8b, 0xff, 0x90, 0xff, 0x97,
+ 0xff, 0x9d, 0xff, 0xa3, 0xff, 0xa9, 0xff, 0xb0, 0xff, 0xb6, 0xff, 0xbc, 0xff, 0xc3, 0xff, 0xca, 0xff, 0x3, 0xff,
+ 0x0, 0xff, 0x28, 0xff, 0xca, 0xff, 0xc5, 0xff, 0xc1, 0xff, 0x41, 0xff, 0x0, 0xff, 0x0, 0xff, 0xba, 0xff, 0x4d,
+ 0xff, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0x61, 0xff, 0x88, 0xff, 0x84, 0xff,
+ 0x80, 0xff, 0x7c, 0xff, 0x77, 0xff, 0x75, 0xff, 0x7f, 0xff, 0x8a, 0xff, 0x95, 0xff, 0xa1, 0xff, 0xb0, 0xff, 0x3a,
+ 0xff, 0x3a, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0x8b, 0xff, 0x90, 0xff, 0x97, 0xff, 0x9d, 0xff, 0xa3, 0xff, 0xa9, 0xff,
+ 0xb0, 0xff, 0xb6, 0xff, 0xbc, 0xff, 0xc3, 0xff, 0xc1, 0xff, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xc6, 0xff, 0xc5,
+ 0xff, 0xc1, 0xff, 0x6, 0xff, 0x0, 0xff, 0x0, 0xff, 0xb0, 0xff, 0xb, 0xff, 0x0, 0xff, 0x46, 0xff, 0x89, 0xff,
+ 0x86, 0xff, 0x45, 0xff, 0x0, 0xff, 0x1d, 0xff, 0x94, 0xff, 0x84, 0xff, 0x80, 0xff, 0x7c, 0xff, 0x77, 0xff, 0x75,
+ 0xff, 0x7f, 0xff, 0x8a, 0xff, 0x95, 0xff, 0xa1, 0xff, 0xb0, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0xd2, 0xff, 0xd2, 0xff,
+ 0x8b, 0xff, 0x90, 0xff, 0x55, 0xff, 0x52, 0xff, 0x68, 0xff, 0x7e, 0xff, 0xb0, 0xff, 0xb6, 0xff, 0xbc, 0xff, 0xc3,
+ 0xff, 0xc1, 0xff, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0x6f, 0xff, 0xc5, 0xff, 0x86, 0xff, 0x0, 0xff, 0x0, 0xff,
+ 0x0, 0xff, 0xb0, 0xff, 0x0, 0xff, 0x12, 0xff, 0xd9, 0xff, 0x9f, 0xff, 0x9a, 0xff, 0x97, 0xff, 0x5, 0xff, 0x0,
+ 0xff, 0xae, 0xff, 0x84, 0xff, 0x80, 0xff, 0x7c, 0xff, 0x77, 0xff, 0x75, 0xff, 0x7f, 0xff, 0x8a, 0xff, 0x95, 0xff,
+ 0xa1, 0xff, 0xb0, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0x8b, 0xff, 0x90, 0xff, 0x3d, 0xff, 0x37,
+ 0xff, 0x60, 0xff, 0x7e, 0xff, 0xb0, 0xff, 0xb6, 0xff, 0xbc, 0xff, 0xc3, 0xff, 0xc1, 0xff, 0x0, 0xff, 0x0, 0xff,
+ 0x0, 0xff, 0x15, 0xff, 0xcf, 0xff, 0x35, 0xff, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xab, 0xff, 0x0, 0xff, 0x2e,
+ 0xff, 0xbc, 0xff, 0x9e, 0xff, 0x9a, 0xff, 0x95, 0xff, 0x12, 0xff, 0x0, 0xff, 0xb0, 0xff, 0x84, 0xff, 0x80, 0xff,
+ 0x7c, 0xff, 0x77, 0xff, 0x75, 0xff, 0x7f, 0xff, 0x8a, 0xff, 0x95, 0xff, 0xa1, 0xff, 0xb0, 0xff, 0x3a, 0xff, 0x3a,
+ 0xff, 0xd2, 0xff, 0xd2, 0xff, 0x8b, 0xff, 0x90, 0xff, 0x44, 0xff, 0x4f, 0xff, 0x8a, 0xff, 0x9e, 0xff, 0xb0, 0xff,
+ 0xb6, 0xff, 0xbc, 0xff, 0xc3, 0xff, 0xc1, 0xff, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xb5, 0xff, 0x0,
+ 0xff, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xaa, 0xff, 0x0, 0xff, 0x30, 0xff, 0xb8, 0xff, 0x9e, 0xff, 0x9a, 0xff,
+ 0x95, 0xff, 0x13, 0xff, 0x0, 0xff, 0xb0, 0xff, 0x84, 0xff, 0x80, 0xff, 0x7c, 0xff, 0x77, 0xff, 0x75, 0xff, 0x7f,
+ 0xff, 0x8a, 0xff, 0x95, 0xff, 0xa1, 0xff, 0xb0, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0x8b, 0xff,
+ 0x90, 0xff, 0x59, 0xff, 0x67, 0xff, 0x97, 0xff, 0x9b, 0xff, 0xb0, 0xff, 0xb6, 0xff, 0xbc, 0xff, 0xc3, 0xff, 0xc1,
+ 0xff, 0x0, 0xff, 0x0, 0xff, 0x7a, 0xff, 0x0, 0xff, 0x5f, 0xff, 0x0, 0xff, 0x44, 0xff, 0x20, 0xff, 0x0, 0xff,
+ 0xb9, 0xff, 0x0, 0xff, 0x1f, 0xff, 0xbb, 0xff, 0x25, 0xff, 0x1b, 0xff, 0x95, 0xff, 0xa, 0xff, 0x0, 0xff, 0xbb,
+ 0xff, 0x84, 0xff, 0x80, 0xff, 0x7c, 0xff, 0x77, 0xff, 0x75, 0xff, 0x7f, 0xff, 0x8a, 0xff, 0x95, 0xff, 0xa1, 0xff,
+ 0xb0, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0xd2, 0xff, 0xd2, 0xff, 0x8b, 0xff, 0x90, 0xff, 0x97, 0xff, 0x9d, 0xff, 0xa3,
+ 0xff, 0xa9, 0xff, 0xb0, 0xff, 0xb6, 0xff, 0xbc, 0xff, 0xc3, 0xff, 0xc1, 0xff, 0x0, 0xff, 0x0, 0xff, 0xed, 0xff,
+ 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0xb7, 0xff, 0x1c, 0xff, 0x0, 0xff, 0xb0, 0xff, 0x0, 0xff, 0x0, 0xff, 0x6c,
+ 0xff, 0x57, 0xff, 0x0, 0xff, 0x19, 0xff, 0x0, 0xff, 0x2, 0xff, 0xd8, 0xff, 0x84, 0xff, 0x80, 0xff, 0x7c, 0xff,
+ 0x77, 0xff, 0x75, 0xff, 0x7f, 0xff, 0x8a, 0xff, 0x95, 0xff, 0xa1, 0xff, 0xb0, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0xd2,
+ 0xff, 0xd2, 0xff, 0x8b, 0xff, 0x90, 0xff, 0x97, 0xff, 0x9d, 0xff, 0xa3, 0xff, 0xa9, 0xff, 0xb0, 0xff, 0xb6, 0xff,
+ 0xbc, 0xff, 0xc3, 0xff, 0xc1, 0xff, 0x0, 0xff, 0x0, 0xff, 0xe7, 0xff, 0x37, 0xff, 0x0, 0xff, 0xf, 0xff, 0xe7,
+ 0xff, 0x1c, 0xff, 0x0, 0xff, 0xb0, 0xff, 0x49, 0xff, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff,
+ 0x0, 0xff, 0x64, 0xff, 0xaa, 0xff, 0x84, 0xff, 0x80, 0xff, 0x7c, 0xff, 0x77, 0xff, 0x75, 0xff, 0x7f, 0xff, 0x8a,
+ 0xff, 0x95, 0xff, 0xa1, 0xff, 0xb0, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0xd2, 0xff, 0xc7, 0xff, 0x8b, 0xff, 0x90, 0xff,
+ 0x97, 0xff, 0x9d, 0xff, 0xa3, 0xff, 0xa9, 0xff, 0xb0, 0xff, 0xb6, 0xff, 0xbc, 0xff, 0xc3, 0xff, 0xca, 0xff, 0x74,
+ 0xff, 0x7f, 0xff, 0xe7, 0xff, 0xc2, 0xff, 0x72, 0xff, 0x84, 0xff, 0xbc, 0xff, 0x5f, 0xff, 0x78, 0xff, 0xe7, 0xff,
+ 0xab, 0xff, 0xa3, 0xff, 0x5a, 0xff, 0x3c, 0xff, 0x40, 0xff, 0x18, 0xff, 0x0, 0xff, 0x59, 0xff, 0x88, 0xff, 0x84,
+ 0xff, 0x80, 0xff, 0x7c, 0xff, 0x77, 0xff, 0x75, 0xff, 0x7f, 0xff, 0x8a, 0xff, 0x95, 0xff, 0xa1, 0xff, 0xb0, 0xff,
+ 0x3a, 0xff, 0x3a, 0xff, 0xc7, 0xff, 0x84, 0xff, 0x79, 0xff, 0x90, 0xff, 0x97, 0xff, 0x9d, 0xff, 0xa3, 0xff, 0xa9,
+ 0xff, 0xb0, 0xff, 0xb6, 0xff, 0xbc, 0xff, 0xc3, 0xff, 0xca, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xce, 0xff, 0xca, 0xff,
+ 0xc5, 0xff, 0xc1, 0xff, 0xbc, 0xff, 0xb8, 0xff, 0xb4, 0xff, 0xaf, 0xff, 0xab, 0xff, 0xa7, 0xff, 0xa2, 0xff, 0xaf,
+ 0xff, 0xae, 0xff, 0xa6, 0xff, 0x4e, 0xff, 0x67, 0xff, 0xbf, 0xff, 0x84, 0xff, 0x80, 0xff, 0x7c, 0xff, 0x77, 0xff,
+ 0x75, 0xff, 0x7f, 0xff, 0x8a, 0xff, 0x95, 0xff, 0xa1, 0xff, 0x48, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x2d, 0x5c, 0x79,
+ 0xff, 0x79, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff,
+ 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a,
+ 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff,
+ 0x3b, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a,
+ 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x1e, 0x7f, 0x0, 0x0, 0x37, 0x71, 0x4f, 0xff, 0x3a, 0xff, 0x3a, 0xff,
+ 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a,
+ 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff,
+ 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a,
+ 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x3a, 0xff, 0x15, 0x55,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 0x0, 0x0, 0x0, 0x0,
+};
+
static Gfx sScreenFillSetupDL[] = {
gsDPPipeSync(),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
@@ -181,6 +334,10 @@ static s16 sWindowContentColors[2][3] = {
{ 100, 100, 100 }, // gray
};
+static int FileChoose_IsSaveCompatible(const SaveFileMetaInfo* restrict meta) {
+ return meta->isMasterQuest == ResourceMgr_IsGameMasterQuest();
+}
+
void FileChoose_SetView(FileChooseContext* this, f32 eyeX, f32 eyeY, f32 eyeZ) {
Vec3f eye;
Vec3f lookAt;
@@ -354,7 +511,7 @@ void DrawSeedHashSprites(FileChooseContext* this) {
u16 xStart = 64;
// Draw Seed Icons
- for (u8 i = 0; i < 5; i++) {
+ for (unsigned int i = 0; i < 5; i++) {
if (Save_GetSaveMetaInfo(this->selectedFileIndex)->randoSave == 1) {
SpriteLoad(this, GetSeedTexture(Save_GetSaveMetaInfo(this->selectedFileIndex)->seedHash[i]));
SpriteDraw(this, GetSeedTexture(Save_GetSaveMetaInfo(this->selectedFileIndex)->seedHash[i]),
@@ -367,7 +524,7 @@ void DrawSeedHashSprites(FileChooseContext* this) {
if (CVar_GetS32("gRandomizer", 0) && strnlen(CVar_GetString("gSpoilerLog", ""), 1) != 0) {
u16 xStart = 64;
- for (u8 i = 0; i < 5; i++) {
+ for (unsigned int i = 0; i < 5; i++) {
SpriteLoad(this, GetSeedTexture(gSaveContext.seedIcons[i]));
SpriteDraw(this, GetSeedTexture(gSaveContext.seedIcons[i]), xStart + (40 * i), 10, 24, 24);
}
@@ -455,7 +612,10 @@ void FileChoose_UpdateMainMenu(GameState* thisx) {
this->nameEntryBoxPosX = 120;
this->nameEntryBoxAlpha = 0;
memcpy(Save_GetSaveMetaInfo(this->buttonIndex)->playerName, &emptyName, 8);
- } else {
+ } else if(!FileChoose_IsSaveCompatible(Save_GetSaveMetaInfo(this->buttonIndex))) {
+ Audio_PlaySoundGeneral(NA_SE_SY_FSEL_ERROR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
+ }
+ else {
Audio_PlaySoundGeneral(NA_SE_SY_FSEL_DECIDE_L, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
this->actionTimer = 8;
this->selectMode = SM_FADE_MAIN_TO_SELECT;
@@ -1210,8 +1370,13 @@ void FileChoose_DrawWindowContents(GameState* thisx) {
isActive = 0;
- if (CVar_GetS32("gHudColors", 1) == 2) {
- gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, CVar_GetRGB("gCCFileChoosePrim", Background_Color).r, CVar_GetRGB("gCCFileChoosePrim", Background_Color).g, CVar_GetRGB("gCCFileChoosePrim", Background_Color).b, this->fileButtonAlpha[i]);
+ if (!FileChoose_IsSaveCompatible(Save_GetSaveMetaInfo(i)) && Save_GetSaveMetaInfo(i)->valid) {
+ gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sWindowContentColors[1][0], sWindowContentColors[1][1],
+ sWindowContentColors[1][2], this->fileButtonAlpha[i]);
+ } else if (CVar_GetS32("gHudColors", 1) == 2) {
+ gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, CVar_GetRGB("gCCFileChoosePrim", Background_Color).r,
+ CVar_GetRGB("gCCFileChoosePrim", Background_Color).g,
+ CVar_GetRGB("gCCFileChoosePrim", Background_Color).b, this->fileButtonAlpha[i]);
} else {
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sWindowContentColors[isActive][0], sWindowContentColors[isActive][1],
sWindowContentColors[isActive][2], this->fileButtonAlpha[i]);
@@ -1223,8 +1388,11 @@ void FileChoose_DrawWindowContents(GameState* thisx) {
gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0);
// draw file name box
- if (CVar_GetS32("gHudColors", 1) == 2) {
+ if (CVar_GetS32("gHudColors", 1) == 2 && FileChoose_IsSaveCompatible(Save_GetSaveMetaInfo(i))) {
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, CVar_GetRGB("gCCFileChoosePrim", Background_Color).r, CVar_GetRGB("gCCFileChoosePrim", Background_Color).g, CVar_GetRGB("gCCFileChoosePrim", Background_Color).b, this->nameBoxAlpha[i]);
+ } else if (!FileChoose_IsSaveCompatible(Save_GetSaveMetaInfo(i))) {
+ gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sWindowContentColors[1][0], sWindowContentColors[1][1],
+ sWindowContentColors[1][2], this->nameBoxAlpha[i]);
} else {
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sWindowContentColors[isActive][0], sWindowContentColors[isActive][1],
sWindowContentColors[isActive][2], this->nameBoxAlpha[i]);
@@ -1235,10 +1403,13 @@ void FileChoose_DrawWindowContents(GameState* thisx) {
G_TX_NOLOD);
gSP1Quadrangle(POLY_OPA_DISP++, 4, 6, 7, 5, 0);
- // draw disk label for 64DD
+ // draw rando label
if (Save_GetSaveMetaInfo(i)->randoSave) {
if (CVar_GetS32("gHudColors", 1) == 2) {
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, CVar_GetRGB("gCCFileChoosePrim", Background_Color).r, CVar_GetRGB("gCCFileChoosePrim", Background_Color).g, CVar_GetRGB("gCCFileChoosePrim", Background_Color).b, this->nameAlpha[i]);
+ } else if (!FileChoose_IsSaveCompatible(Save_GetSaveMetaInfo(i))) {
+ gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sWindowContentColors[1][0], sWindowContentColors[1][1],
+ sWindowContentColors[1][2], this->nameBoxAlpha[i]);
} else {
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sWindowContentColors[isActive][0],
sWindowContentColors[isActive][1], sWindowContentColors[isActive][2],
@@ -1249,10 +1420,30 @@ void FileChoose_DrawWindowContents(GameState* thisx) {
G_TX_NOLOD, G_TX_NOLOD);
gSP1Quadrangle(POLY_OPA_DISP++, 8, 10, 11, 9, 0);
}
+ //Draw MQ label
+ if (Save_GetSaveMetaInfo(i)->isMasterQuest) {
+ if (CVar_GetS32("gHudColors", 1) == 2 && FileChoose_IsSaveCompatible(Save_GetSaveMetaInfo(i))) {
+ gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, CVar_GetRGB("gCCFileChoosePrim", Background_Color).r, CVar_GetRGB("gCCFileChoosePrim", Background_Color).g, CVar_GetRGB("gCCFileChoosePrim", Background_Color).b, this->nameAlpha[i]);
+ } else if (!FileChoose_IsSaveCompatible(Save_GetSaveMetaInfo(i))) {
+ gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sWindowContentColors[1][0], sWindowContentColors[1][1],
+ sWindowContentColors[1][2], this->nameBoxAlpha[i]);
+ } else {
+ gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sWindowContentColors[isActive][0],
+ sWindowContentColors[isActive][1], sWindowContentColors[isActive][2],
+ this->nameAlpha[i]);
+ }
+ gDPLoadTextureBlock(POLY_OPA_DISP++, gFileSelMQButtonTex, G_IM_FMT_IA, G_IM_SIZ_16b, 44, 16, 0,
+ G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
+ G_TX_NOLOD, G_TX_NOLOD);
+ gSP1Quadrangle(POLY_OPA_DISP++, 8, 10, 11, 9, 0);
+ }
// draw connectors
- if (CVar_GetS32("gHudColors", 1) == 2) {
+ if (CVar_GetS32("gHudColors", 1) == 2 && FileChoose_IsSaveCompatible(Save_GetSaveMetaInfo(i))) {
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, CVar_GetRGB("gCCFileChoosePrim", Background_Color).r, CVar_GetRGB("gCCFileChoosePrim", Background_Color).g, CVar_GetRGB("gCCFileChoosePrim", Background_Color).b, this->connectorAlpha[i]);
+ } else if (!FileChoose_IsSaveCompatible(Save_GetSaveMetaInfo(i)) && Save_GetSaveMetaInfo(i)->valid) {
+ gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sWindowContentColors[1][0], sWindowContentColors[1][1],
+ sWindowContentColors[1][2], this->fileButtonAlpha[i]);
} else {
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sWindowContentColors[isActive][0], sWindowContentColors[isActive][1],
sWindowContentColors[isActive][2], this->connectorAlpha[i]);
@@ -1262,7 +1453,7 @@ void FileChoose_DrawWindowContents(GameState* thisx) {
G_TX_NOLOD);
gSP1Quadrangle(POLY_OPA_DISP++, 12, 14, 15, 13, 0);
- if (Save_GetSaveMetaInfo(i)->randoSave) {
+ if (Save_GetSaveMetaInfo(i)->randoSave || Save_GetSaveMetaInfo(i)->isMasterQuest) {
gSP1Quadrangle(POLY_OPA_DISP++, 16, 18, 19, 17, 0);
}
}
diff --git a/soh/src/overlays/gamestates/ovl_title/z_title.c b/soh/src/overlays/gamestates/ovl_title/z_title.c
index 7c63ef35c..10210a92c 100644
--- a/soh/src/overlays/gamestates/ovl_title/z_title.c
+++ b/soh/src/overlays/gamestates/ovl_title/z_title.c
@@ -13,6 +13,8 @@
#include <libultraship/GameVersions.h>
#include <soh/SaveManager.h>
+#include "time.h"
+
const char* GetGameVersionString();
char* quote;
@@ -70,7 +72,7 @@ const char* quotes[11] = {
"Waaaahahahohohahahahahahaha"
};
-char* SetQuote() {
+const char* SetQuote() {
srand(time(NULL));
int randomQuote = rand() % 11;
return quotes[randomQuote];
@@ -94,8 +96,9 @@ const char* GetGameVersionString() {
case OOT_PAL_MQ:
return "GC PAL MQ";
case OOT_PAL_GC_DBG1:
- return "GC PAL DEBUG";
case OOT_PAL_GC_DBG2:
+ return "GC PAL DEBUG";
+ case OOT_PAL_GC_MQ_DBG:
return "GC PAL DEBUG MQ";
case OOT_IQUE_CN:
return "IQUE CN";
diff --git a/soh/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.c b/soh/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.c
index cdbe58506..57d13edb9 100644
--- a/soh/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.c
+++ b/soh/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.c
@@ -33,11 +33,16 @@ static const u32 sLineBytesImageSizes[] = { 0, 1, 2, 2 };
#define G_IM_SIZ_MARK_LINE_BYTES sLineBytesImageSizes[markInfo->imageSize]
extern PauseMapMarksData gPauseMapMarkDataTable[];
+extern PauseMapMarksData gPauseMapMarkDataTableMasterQuest[];
void PauseMapMark_Init(GlobalContext* globalCtx) {
gBossMarkState = 0;
gBossMarkScale = 1.0f;
- gLoadedPauseMarkDataTable = gPauseMapMarkDataTable;
+ if(ResourceMgr_IsGameMasterQuest()) {
+ gLoadedPauseMarkDataTable = gPauseMapMarkDataTableMasterQuest;
+ } else {
+ gLoadedPauseMarkDataTable = gPauseMapMarkDataTable;
+ }
}
void PauseMapMark_Clear(GlobalContext* globalCtx) {
diff --git a/soh/src/overlays/misc/ovl_map_mark_data/z_map_mark_data.c b/soh/src/overlays/misc/ovl_map_mark_data/z_map_mark_data.c
index 013b8b7b3..a73ca8265 100644
--- a/soh/src/overlays/misc/ovl_map_mark_data/z_map_mark_data.c
+++ b/soh/src/overlays/misc/ovl_map_mark_data/z_map_mark_data.c
@@ -1,6 +1,6 @@
#include "global.h"
-static MapMarkData sMapMarkDekuTree[] = {
+static MapMarkData sMapMarkDekuTreeVanilla[] = {
// Deku Tree minimap 0
{
{ MAP_MARK_CHEST,
@@ -82,7 +82,7 @@ static MapMarkData sMapMarkDekuTree[] = {
},
};
-static MapMarkData sMapMarkDodongosCavern[] = {
+static MapMarkData sMapMarkDodongosCavernVanilla[] = {
// Dodongo's Cavern minimap 0
{
{ MAP_MARK_CHEST,
@@ -187,7 +187,7 @@ static MapMarkData sMapMarkDodongosCavern[] = {
},
};
-static MapMarkData sMapMarkJabuJabuBelly[] = {
+static MapMarkData sMapMarkJabuJabuBellyVanilla[] = {
// Jabu-Jabu's Belly minimap 0
{
{ MAP_MARK_NONE, 0, { 0 } },
@@ -278,7 +278,7 @@ static MapMarkData sMapMarkJabuJabuBelly[] = {
},
};
-static MapMarkData sMapMarkForestTemple[] = {
+static MapMarkData sMapMarkForestTempleVanilla[] = {
// Forest Temple minimap 0
{
{ MAP_MARK_NONE, 0, { 0 } },
@@ -464,7 +464,7 @@ static MapMarkData sMapMarkForestTemple[] = {
},
};
-static MapMarkData sMapMarkFireTemple[] = {
+static MapMarkData sMapMarkFireTempleVanilla[] = {
// Fire Temple minimap 0
{
{ MAP_MARK_NONE, 0, { 0 } },
@@ -690,7 +690,7 @@ static MapMarkData sMapMarkFireTemple[] = {
},
};
-static MapMarkData sMapMarkWaterTemple[] = {
+static MapMarkData sMapMarkWaterTempleVanilla[] = {
// Water Temple minimap 0
{
{ MAP_MARK_NONE, 0, { 0 } },
@@ -924,7 +924,7 @@ static MapMarkData sMapMarkWaterTemple[] = {
},
};
-static MapMarkData sMapMarkSpiritTemple[] = {
+static MapMarkData sMapMarkSpiritTempleVanilla[] = {
// Spirit Temple minimap 0
{
{ MAP_MARK_NONE, 0, { 0 } },
@@ -1133,7 +1133,7 @@ static MapMarkData sMapMarkSpiritTemple[] = {
},
};
-static MapMarkData sMapMarkShadowTemple[] = {
+static MapMarkData sMapMarkShadowTempleVanilla[] = {
// Shadow Temple minimap 0
{
{ MAP_MARK_NONE, 0, { 0 } },
@@ -1309,7 +1309,7 @@ static MapMarkData sMapMarkShadowTemple[] = {
},
};
-static MapMarkData sMapMarkBottomWell[] = {
+static MapMarkData sMapMarkBottomWellVanilla[] = {
// Bottom of the Well minimap 0
{
{ MAP_MARK_CHEST,
@@ -1385,7 +1385,7 @@ static MapMarkData sMapMarkBottomWell[] = {
},
};
-static MapMarkData sMapMarkIceCavern[] = {
+static MapMarkData sMapMarkIceCavernVanilla[] = {
// Ice Cavern minimap 0
{
{ MAP_MARK_NONE, 0, { 0 } },
@@ -1451,7 +1451,1450 @@ static MapMarkData sMapMarkIceCavern[] = {
},
};
-MapMarkData* gMapMarkDataTable[] = {
- sMapMarkDekuTree, sMapMarkDodongosCavern, sMapMarkJabuJabuBelly, sMapMarkForestTemple, sMapMarkFireTemple,
- sMapMarkWaterTemple, sMapMarkSpiritTemple, sMapMarkShadowTemple, sMapMarkBottomWell, sMapMarkIceCavern,
+MapMarkData* gMapMarkDataTableVanilla[] = {
+ sMapMarkDekuTreeVanilla, sMapMarkDodongosCavernVanilla, sMapMarkJabuJabuBellyVanilla, sMapMarkForestTempleVanilla, sMapMarkFireTempleVanilla,
+ sMapMarkWaterTempleVanilla, sMapMarkSpiritTempleVanilla, sMapMarkShadowTempleVanilla, sMapMarkBottomWellVanilla, sMapMarkIceCavernVanilla,
+};
+
+static MapMarkData sMapMarkDekuTreeMq[] = {
+ // Deku Tree minimap 0
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 3, 71, 50 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Deku Tree minimap 1
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Deku Tree minimap 2
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 1, 64, 62 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Deku Tree minimap 3
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 4, 76, 37 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Deku Tree minimap 4
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Deku Tree minimap 5
+ {
+ { MAP_MARK_CHEST,
+ 2,
+ {
+ { 0, 46, 50 },
+ { 5, 76, 52 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Deku Tree minimap 6
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Deku Tree minimap 7
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Deku Tree minimap 8
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Deku Tree minimap 9
+ {
+ { MAP_MARK_BOSS,
+ 1,
+ {
+ { -1, 50, 23 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Deku Tree minimap 10
+ {
+ { MAP_MARK_CHEST,
+ 2,
+ {
+ { 2, 46, 50 },
+ { 6, 58, 60 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Deku Tree minimap 11
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Deku Tree minimap 12
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+};
+
+static MapMarkData sMapMarkDodongosCavernMq[] = {
+ // Dodongo's Cavern minimap 0
+ {
+ { MAP_MARK_CHEST,
+ 2,
+ {
+ { 0, 69, 14 },
+ { 4, 69, 30 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 1
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 2
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 3
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 4
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 5
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 5, 54, 54 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 6
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 2, 69, 54 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 7
+ {
+ { MAP_MARK_BOSS,
+ 1,
+ {
+ { -1, 37, 49 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 8
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 9
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 3, 59, 53 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 10
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 11
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 12
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 13
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 14
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 1, 68, 54 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 15
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 16
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 17
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Dodongo's Cavern minimap 18
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+};
+
+static MapMarkData sMapMarkJabuJabuBellyMq[] = {
+ // Jabu-Jabu's Belly minimap 0
+ {
+ { MAP_MARK_CHEST,
+ 2,
+ {
+ { 3, 66, 50 },
+ { 5, 72, 47 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Jabu-Jabu's Belly minimap 1
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 7, 72, 54 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Jabu-Jabu's Belly minimap 2
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Jabu-Jabu's Belly minimap 3
+ {
+ { MAP_MARK_CHEST,
+ 2,
+ {
+ { 4, 64, 62 },
+ { 8, 79, 38 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Jabu-Jabu's Belly minimap 4
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Jabu-Jabu's Belly minimap 5
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 10, 64, 45 },
+ } },
+ { MAP_MARK_BOSS,
+ 1,
+ {
+ { -1, 67, 32 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Jabu-Jabu's Belly minimap 6
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Jabu-Jabu's Belly minimap 7
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Jabu-Jabu's Belly minimap 8
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Jabu-Jabu's Belly minimap 9
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Jabu-Jabu's Belly minimap 10
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Jabu-Jabu's Belly minimap 11
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 9, 68, 45 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Jabu-Jabu's Belly minimap 12
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Jabu-Jabu's Belly minimap 13
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Jabu-Jabu's Belly minimap 14
+ {
+ { MAP_MARK_CHEST,
+ 2,
+ {
+ { 1, 79, 33 },
+ { 6, 61, 41 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Jabu-Jabu's Belly minimap 15
+ {
+ { MAP_MARK_CHEST,
+ 2,
+ {
+ { 0, 48, 57 },
+ { 2, 77, 55 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+};
+
+static MapMarkData sMapMarkForestTempleMq[] = {
+ // Forest Temple minimap 0
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 1
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 2
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 3
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 4
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 5
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 6
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 0, 72, 57 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 7
+ {
+ { MAP_MARK_CHEST,
+ 2,
+ {
+ { 1, 69, 39 },
+ { 9, 62, 65 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 8
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 9
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 9, 71, 59 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 10
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 11
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 12
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 13, 80, 53 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 13
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 15, 49, 50 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 14
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 15
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 6, 65, 53 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 16
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 17
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 11, 39, 35 },
+ } },
+ { MAP_MARK_BOSS,
+ 1,
+ {
+ { -1, 53, 5 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 18
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 2, 65, 54 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 19
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 14, 64, 31 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 20
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 21
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 22
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 3, 75, 53 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 23
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 12, 69, 52 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 24
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 5, 58, 27 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 25
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Forest Temple minimap 26
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+};
+
+static MapMarkData sMapMarkFireTempleMq[] = {
+ // Fire Temple minimap 0
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 1
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 2
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 7, 53, 70 },
+ } },
+ { MAP_MARK_BOSS,
+ 1,
+ {
+ { -1, 40, 47 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 3
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 4
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 11, 57, 48 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 5
+ {
+ { MAP_MARK_CHEST,
+ 2,
+ {
+ { 3, 67, 73 },
+ { 6, 58, 76 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 6
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 7
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 8
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 9
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 10
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 11
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 12
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 13
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 14
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 15
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 16
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 17
+ {
+ { MAP_MARK_CHEST,
+ 2,
+ {
+ { 2, 78, 62 },
+ { 12, 77, 58 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 18
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 19
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 4, 60, 54 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 20
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 21
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 22
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 1, 72, 68 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 23
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 8, 66, 57 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 24
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 25
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 26
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 27
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 28
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 29
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 30
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 31
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 32
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 33
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 34
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 35
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 5, 51, 61 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 36
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Fire Temple minimap 37
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+};
+
+static MapMarkData sMapMarkWaterTempleMq[] = {
+ // Water Temple minimap 0
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 1
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 2
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 6, 81, 68 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 3
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 4
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 5
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 6
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 7
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 8
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 9
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 5, 75, 55 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 10
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 11
+ {
+ { MAP_MARK_BOSS,
+ 1,
+ {
+ { -1, 77, 40 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 12
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 13
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 14
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 15
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 16
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 17
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 18
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 1, 74, 61 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 19
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 2, 73, 65 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 20
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 21
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 22
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 23
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 24
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 25
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 26
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 27
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 28
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 29
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 30
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 31
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 32
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 33
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 34
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 35
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 36
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 37
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 38
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 39
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 0, 73, 63 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 40
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 41
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 42
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Water Temple minimap 43
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+};
+
+static MapMarkData sMapMarkSpiritTempleMq[] = {
+ // Spirit Temple minimap 0
+ {
+ { MAP_MARK_CHEST,
+ 4,
+ {
+ { 26, 27, 35 },
+ { 27, 36, 35 },
+ { 30, 27, 28 },
+ { 31, 36, 28 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 1
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 29, 67, 63 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 2
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 3
+ {
+ { MAP_MARK_CHEST,
+ 2,
+ {
+ { 0, 71, 62 },
+ { 8, 71, 48 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 4
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 5
+ {
+ { MAP_MARK_CHEST,
+ 2,
+ {
+ { 3, 56, 54 },
+ { 15, 69, 42 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 6
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 28, 60, 54 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 7
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 8
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 1, 76, 40 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 9
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 10
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 11
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 12
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 7, 70, 53 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 13
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 14
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 4, 68, 42 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 15
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 16
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 17
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 25, 78, 58 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 18
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 24, 78, 58 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 19
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 20
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 21
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 5, 71, 55 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 22
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 23
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 24
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 25
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 26
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 18, 75, 54 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 27
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 28
+ {
+ { MAP_MARK_CHEST,
+ 2,
+ {
+ { 6, 78, 55 },
+ { 12, 70, 70 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 29
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 2, 76, 37 },
+ } },
+ { MAP_MARK_BOSS,
+ 1,
+ {
+ { -1, 57, 23 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 30
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 31
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Spirit Temple minimap 32
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+};
+
+static MapMarkData sMapMarkShadowTempleMq[] = {
+ // Shadow Temple minimap 0
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 1
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 1, 77, 64 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 2
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 3
+ {
+ { MAP_MARK_BOSS,
+ 1,
+ {
+ { -1, 77, 76 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 4
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 7, 76, 65 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 5
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 6
+ {
+ { MAP_MARK_CHEST,
+ 2,
+ {
+ { 2, 83, 67 },
+ { 14, 84, 59 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 7
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 3, 76, 67 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 8
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 9
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 10
+ {
+ { MAP_MARK_CHEST,
+ 3,
+ {
+ { 4, 78, 62 },
+ { 5, 74, 62 },
+ { 6, 71, 68 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 11
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 9, 77, 64 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 12
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 13
+ {
+ { MAP_MARK_CHEST,
+ 2,
+ {
+ { 10, 71, 65 },
+ { 11, 80, 65 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 14
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 16, 73, 64 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 15
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 16
+ {
+ { MAP_MARK_CHEST,
+ 2,
+ {
+ { 12, 87, 64 },
+ { 22, 87, 68 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 17
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 13, 77, 66 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 18
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 19
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 21, 78, 66 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 20
+ {
+ { MAP_MARK_CHEST,
+ 2,
+ {
+ { 8, 76, 66 },
+ { 20, 78, 68 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 21
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 14, 77, 62 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 22
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 23
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 15, 56, 67 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 24
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 25
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 16, 73, 64 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Shadow Temple minimap 26
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 14, 77, 62 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+};
+
+static MapMarkData sMapMarkBottomWellMq[] = {
+ // Bottom of the Well minimap 0
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 3, 60, 18 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Bottom of the Well minimap 1
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Bottom of the Well minimap 2
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Bottom of the Well minimap 3
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Bottom of the Well minimap 4
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 2, 73, 61 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Bottom of the Well minimap 5
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Bottom of the Well minimap 6
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Bottom of the Well minimap 7
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Bottom of the Well minimap 8
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Bottom of the Well minimap 9
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 1, 74, 66 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+};
+
+static MapMarkData sMapMarkIceCavernMq[] = {
+ // Ice Cavern minimap 0
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Ice Cavern minimap 1
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Ice Cavern minimap 2
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Ice Cavern minimap 3
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Ice Cavern minimap 4
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Ice Cavern minimap 5
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Ice Cavern minimap 6
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Ice Cavern minimap 7
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 2, 71, 59 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Ice Cavern minimap 8
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Ice Cavern minimap 9
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 0, 48, 36 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Ice Cavern minimap 10
+ {
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+ // Ice Cavern minimap 11
+ {
+ { MAP_MARK_CHEST,
+ 1,
+ {
+ { 1, 73, 67 },
+ } },
+ { MAP_MARK_NONE, 0, { 0 } },
+ },
+};
+
+MapMarkData* gMapMarkDataTableMq[] = {
+ sMapMarkDekuTreeMq, sMapMarkDodongosCavernMq, sMapMarkJabuJabuBellyMq, sMapMarkForestTempleMq, sMapMarkFireTempleMq,
+ sMapMarkWaterTempleMq, sMapMarkSpiritTempleMq, sMapMarkShadowTempleMq, sMapMarkBottomWellMq, sMapMarkIceCavernMq,
};