diff options
Diffstat (limited to 'soh/src')
| -rw-r--r-- | soh/src/code/z_map_mark.c | 37 | ||||
| -rw-r--r-- | soh/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.c | 1 | ||||
| -rw-r--r-- | soh/src/overlays/actors/ovl_En_Mag/z_en_mag.c | 65 | ||||
| -rw-r--r-- | soh/src/overlays/gamestates/ovl_file_choose/z_file_choose.c | 209 | ||||
| -rw-r--r-- | soh/src/overlays/gamestates/ovl_title/z_title.c | 7 | ||||
| -rw-r--r-- | soh/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.c | 7 | ||||
| -rw-r--r-- | soh/src/overlays/misc/ovl_map_mark_data/z_map_mark_data.c | 1469 |
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, }; |
