From 1da0fa1ac5c451e2c1ec7c497237e9549c28ba33 Mon Sep 17 00:00:00 2001 From: mzxrules Date: Thu, 18 Aug 2022 05:12:23 -0400 Subject: [PATCH] More OKs, split map_data.data, more doc --- include/functions.h | 4 +- include/z64map.h | 8 ++- spec | 1 + src/code/z_map_data.c | 18 +++--- src/code/z_map_disp.c | 128 ++++++++++++++++--------------------- tools/disasm/files.txt | 3 +- tools/disasm/functions.txt | 4 +- tools/disasm/variables.txt | 27 +++----- 8 files changed, 84 insertions(+), 109 deletions(-) diff --git a/include/functions.h b/include/functions.h index 152b52245..e4f95941f 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1657,7 +1657,6 @@ s32 ZeldaArena_Check(); void ZeldaArena_Init(void* start, size_t size); void ZeldaArena_Cleanup(); u8 ZeldaArena_IsInitialized(); -// void func_80102E40(void); // void func_80102E90(void); // void func_80102EA4(void); void func_80102EB4(u32 param_1); @@ -1668,7 +1667,6 @@ s32 func_80102EF0(PlayState* play); // void func_801030B4(void); // void func_801030F4(void); // void func_801031D0(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); -// void func_801039EC(void); // void func_80103A10(void); // void func_80103A58(void); // void func_8010439C(void); @@ -2827,7 +2825,7 @@ s32 func_80178A94(s32 param_1, s32 param_2); // void func_80178C80(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // void func_80178D7C(void); // void func_80178DAC(void); -// void func_80178E3C(void); +void func_80178E3C(uintptr_t vrom, s32 id, void* dst, s32 size); // void func_80178E7C(void); // void Check_WriteRGBA16Pixel(u16* buffer, u32 x, u32 y, u32 value); // void Check_WriteI4Pixel(u16* buffer, u32 x, u32 y, u32 value); diff --git a/include/z64map.h b/include/z64map.h index f263112c6..d94ea3b22 100644 --- a/include/z64map.h +++ b/include/z64map.h @@ -6,6 +6,8 @@ /* z_map_data */ +#define MAPDATA_SOURCE_MAP_I_STATIC 1 + typedef struct { /* 0x00 */ TexturePtr lmapTex; //minimap texture /* 0x04 */ u8 unk4; @@ -89,6 +91,8 @@ typedef struct { /* z_map_data */ TexturePtr func_8010958C(s32); +s16 func_80109F78(s32); +s32 func_80109BA0(s32); s32 func_80109714(s32); s32 MapData_GetIMapSize(s32); s32 func_80109A98(s32); @@ -97,6 +101,6 @@ s32 func_801096D4(s32 arg0); void func_8010983C(s32 arg0, s32 *arg1); void func_801097C8(s32 arg0, s32* arg1, s32* arg2); void func_80109754(s32 arg0, s32 *arg1, s32 *arg2); - -void func_80178E3C(u8*, s32, s32, s32); +void func_80109D40(s32, s32*, s32*); +void func_80109DD8(s32, s32*, s32*); #endif diff --git a/spec b/spec index a488e0dbd..c741b10bc 100644 --- a/spec +++ b/spec @@ -491,6 +491,7 @@ beginseg include "build/data/code/z_map_disp.data.o" include "build/data/code/z_map_disp.bss.o" include "build/src/code/z_map_data.o" + include "build/data/code/z_map_data.data.o" include "build/src/code/z_map_exp.o" include "build/src/code/z_msgevent.o" include "build/data/code/z_msgevent.data.o" diff --git a/src/code/z_map_data.c b/src/code/z_map_data.c index 11b0a0130..da5309f7f 100644 --- a/src/code/z_map_data.c +++ b/src/code/z_map_data.c @@ -2,7 +2,7 @@ #include "z64map.h" extern Color_RGBA8 D_801BED40[]; -extern T_801BED4C D_801BED4C[]; +extern T_801BED4C D_801BED4C[5]; extern T_801BF170 D_801BED88[]; extern s32 D_801BEFC8[]; extern s32 D_801BF15C[5]; @@ -245,7 +245,7 @@ s32 func_80109BF4(s32 arg0) { return 2; } if (arg0 < 0x3A) { - return 1; + return MAPDATA_SOURCE_MAP_I_STATIC; } if (arg0 >= 0x3A) { return 0; @@ -260,7 +260,7 @@ s32 func_80109C38(s32 arg0) { switch (func_80109BF4(arg0)) { case 0: return func_80109670(arg0 + 0xC6); - case 1: + case MAPDATA_SOURCE_MAP_I_STATIC: return func_80109A40(arg0); case 2: return 0; @@ -276,7 +276,7 @@ s32 MapData_GetIMapSize(s32 arg0) { switch (func_80109BF4(arg0)) { case 0: return func_801096D4(arg0 + 0xC6); - case 1: + case MAPDATA_SOURCE_MAP_I_STATIC: return func_80109A98(arg0); case 2: return 0; @@ -295,7 +295,7 @@ void func_80109D40(s32 arg0, s32* arg1, s32* arg2) { case 0: func_801095AC(arg0 + 0xC6, arg1, arg2); return; - case 1: + case MAPDATA_SOURCE_MAP_I_STATIC: func_8010997C(arg0, arg1, arg2); return; case 2: @@ -318,7 +318,7 @@ void func_80109DD8(s32 arg0, s32* arg1, s32* arg2) { case 0: func_801095DC(arg0 + 0xC6, arg1, arg2); return; - case 1: + case MAPDATA_SOURCE_MAP_I_STATIC: func_801099AC(arg0, arg1, arg2); return; case 2: @@ -338,7 +338,7 @@ void func_80109E70(s32 arg0, s32* arg1) { case 0: func_8010960C(arg0 + 0xC6, arg1); return; - case 1: + case MAPDATA_SOURCE_MAP_I_STATIC: func_801099DC(arg0, arg1); return; case 2: @@ -355,7 +355,7 @@ u8 func_80109EF8(s32 arg0) { switch (func_80109BF4(arg0)) { case 0: return func_80109630(arg0 + 0xC6); - case 1: + case MAPDATA_SOURCE_MAP_I_STATIC: return func_80109A00(arg0); case 2: default: @@ -370,7 +370,7 @@ s16 func_80109F78(s32 arg0) { switch (func_80109BF4(arg0)) { case 0: return func_80109650(arg0 + 0xC6); - case 1: + case MAPDATA_SOURCE_MAP_I_STATIC: return func_80109A20(arg0); case 2: default: diff --git a/src/code/z_map_disp.c b/src/code/z_map_disp.c index 1f9faab6e..09c54f321 100644 --- a/src/code/z_map_disp.c +++ b/src/code/z_map_disp.c @@ -2,22 +2,6 @@ void MapDisp_DestroyIMap(PlayState* play); void MapDisp_InitIMap(PlayState* play); -void func_80103090(MinimapEntry*, s32*, s32*); -void func_80105FE0(PlayState* play, s32 x, s32 z, s32 rot); -void func_80106644(PlayState* play, s32 x, s32 z, s32 rot); -s32 func_801039EC(PlayState* play); -void func_80103A58(PlayState* play, Actor* actor); - -void func_80106D5C(PlayState*, s32, s32, s32, s32, f32, s32); -void func_80107B78(PlayState*, s32, s32, s32, s32, f32); -void func_80108124(PlayState*, s32, s32, s32, s32, f32, s32); -void func_80108558(PlayState*, s32, s32, s32, s32, f32, s32); -s32 func_80108A64(PlayState*); -s32 func_80109BA0(s32); -s16 func_80109F78(s32); - -void func_80109D40(s32, s32*, s32*, void*); -void func_80109DD8(s32, s32*, s32*); extern s32 D_801BEAD0[4]; // G_IM_SIZ extern s32 D_801BEAE0[4]; // siz_LOAD_BLOCK @@ -54,9 +38,9 @@ extern TexturePtr D_02003F20; extern Gfx D_0401ED00[]; extern TexturePtr D_0C000000; -void func_80102E40(s32 arg0, s32 arg1) { - if (func_80109A98(arg1) != 0) { - func_80178E3C(SEGMENT_ROM_START(map_i_static), arg1, arg0, func_80109A98(arg1)); +void MapDisp_GetIMapTexture(void* dst, s32 iMapId) { + if (func_80109A98(iMapId) != 0) { + func_80178E3C(SEGMENT_ROM_START(map_i_static), iMapId, dst, func_80109A98(iMapId)); } } @@ -210,10 +194,13 @@ void func_801031D0(PlayState* play, TexturePtr arg1, s32 arg2, s32 arg3, s32 arg } } #else +void func_801031D0(PlayState* play, TexturePtr arg1, s32 arg2, s32 arg3, s32 arg4, f32 arg5); #pragma GLOBAL_ASM("asm/non_matchings/code/z_map_disp/func_801031D0.s") #endif -s32 func_801039EC(PlayState *play) { +// Tests if the map data should be rotated 180 degrees +// SCENE_35TAKI is the only scene with data flipped in this manner. +s32 MapDisp_IsDataRotated(PlayState *play) { if (play->sceneNum == SCENE_35TAKI) { return true; } @@ -278,7 +265,7 @@ void func_80103A58(PlayState *play, Actor *actor) { var_v0 = spAC; } spC0 = 1.0f / (f32) var_v0; - if (func_801039EC(play) == 0) { + if (!MapDisp_IsDataRotated(play)) { spD8 = (s32) ((actor->world.pos.x - (f32) spDC->unk2) * spC0) + D_801BEBB8.unk8 + D_801BEBB8.unkC - D_801BEBB8.unk8 + spD0; spD4 = (s32) ((actor->world.pos.z - (f32) spDC->unk6) * spC0) + D_801BEBB8.unkA + D_801BEBB8.unkE - D_801BEBB8.unkA + spCC; } else { @@ -299,7 +286,7 @@ void func_80103A58(PlayState *play, Actor *actor) { Matrix_Translate((f32) spD8 - 160.0f, 120.0f - (f32) spD4, 0.0f, MTXMODE_NEW); Matrix_RotateXFApply(-1.6f); spA2 = (s32) (0x7FFF - actor->focus.rot.y) / 1024; - if (func_801039EC(play) != 0) { + if (MapDisp_IsDataRotated(play)) { spA2 += 0x7FFF; } Matrix_RotateYF((f32) spA2 / 10.0f, MTXMODE_APPLY); @@ -367,6 +354,7 @@ void func_80103A58(PlayState *play, Actor *actor) { } } #else +void func_80103A58(PlayState* play, Actor* actor); #pragma GLOBAL_ASM("asm/non_matchings/code/z_map_disp/func_80103A58.s") #endif @@ -433,7 +421,7 @@ void func_801045AC(PlayState* play, Actor* actor) { var_v1 = sp4C; } sp5C = 1.0f / var_v1; - if (func_801039EC(play) == 0) { + if (!MapDisp_IsDataRotated(play)) { sp78 = (((s32) ((actor->world.pos.x - sp7C->unk2) * sp5C) + D_801BEBB8.unk8 + D_801BEBB8.unkC) - D_801BEBB8.unk8) + sp70; sp74 = (((s32) ((actor->world.pos.z - sp7C->unk6) * sp5C) + D_801BEBB8.unkA + D_801BEBB8.unkE) - D_801BEBB8.unkA) + sp6C; } else { @@ -509,7 +497,6 @@ void func_80104C80(PlayState* play) { if (&play->objectCtx) {} } -//init void MapDisp_Init(PlayState* play) { s32 i; @@ -680,7 +667,6 @@ void func_8010534C(PlayState* play) { D_801BEBB8.unk58 = 0; } -#ifdef NON_MATCHING void func_8010549C(PlayState* globalCtx, void* segmentAddress) { MinimapEntry* var_v1; MinimapList* temp_v0; @@ -694,7 +680,7 @@ void func_8010549C(PlayState* globalCtx, void* segmentAddress) { for (i = 0; i < D_801BEC1C; i++) { - D_801F5130[i] = var_v1[i]; + D_801F5130[i] = *var_v1++; } D_801BEC14.entry = D_801F5130; @@ -703,17 +689,14 @@ void func_8010549C(PlayState* globalCtx, void* segmentAddress) { D_801BEBB8.unk32 = globalCtx->colCtx.colHeader->minBounds.z; D_801BEBB8.unk34 = globalCtx->colCtx.colHeader->maxBounds.x - globalCtx->colCtx.colHeader->minBounds.x; D_801BEBB8.unk36 = globalCtx->colCtx.colHeader->maxBounds.z - globalCtx->colCtx.colHeader->minBounds.z; - D_801BEBB8.unk38 = (s16) (D_801BEBB8.unk30 + (D_801BEBB8.unk34 * 0.5f)); - D_801BEBB8.unk3A = (s16) (D_801BEBB8.unk32 + (D_801BEBB8.unk36 * 0.5f)); + D_801BEBB8.unk38 = D_801BEBB8.unk30 + (D_801BEBB8.unk34 * 0.5f); + D_801BEBB8.unk3A = D_801BEBB8.unk32 + (D_801BEBB8.unk36 * 0.5f); } } D_801BEBB8.unk0 = &D_801BEC14; func_80104F34(globalCtx); func_8010534C(globalCtx); } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_disp/func_8010549C.s") -#endif void func_8010565C(PlayState* play, s32 num, void* segmentAddress) { MinimapChest* var_v1; @@ -812,8 +795,6 @@ void func_80105B34(PlayState* play) { } } -#ifdef NON_MATCHING -//https://decomp.me/scratch/oK0wd void func_80105C40(s16 arg0) { MinimapEntry* temp_s0; MinimapEntry* sp58; @@ -823,11 +804,6 @@ void func_80105C40(s16 arg0) { s32 sp48; s32 sp44; s32 sp40; - s32 sp3C; - s32 sp38; - s32 var_v0; - s32 pad; - s32 sp2C; if ((D_801BEBB8.unk0 != NULL) && (D_801BEC1C != 0) && (arg0 != -1)) { temp_s0 = &D_801BEBB8.unk0->entry[arg0]; @@ -867,20 +843,27 @@ void func_80105C40(s16 arg0) { D_801BEBB8.unkE = D_801BEBB8.unkA; return; } - func_801030F4(sp58, &sp3C, &sp38); - //temp_a0 = ; - var_v0 = D_801BEBB8.unk0->unk4; - if (D_801BEBB8.unk0->unk4 == 0) { - var_v0 = 0x14; - } else if (D_801BEBB8.unk0->unk4 == -1) { - func_801030B4(temp_s0, &sp2C); - var_v0 = sp2C; + else { + s32 sp3C; + s32 sp38; + s32 var_v0; + s32 pad; + func_801030F4(sp58, &sp3C, &sp38); + //temp_a0 = ; + var_v0 = D_801BEBB8.unk0->unk4; + if (D_801BEBB8.unk0->unk4 == 0) { + var_v0 = 0x14; + } else if (D_801BEBB8.unk0->unk4 == -1) { + s32 sp2C; + func_801030B4(temp_s0, &sp2C); + var_v0 = sp2C; + } + //temp_fv0 = ; + D_801BEBB8.unk1C = (s16) (s32) (((f32) sp44 + (((f32) sp58->unk2 - (f32) temp_s0->unk2) * (1.0f / var_v0))) - (f32) sp3C); + D_801BEBB8.unk1E = (s16) (s32) (((f32) sp40 + (((f32) sp58->unk6 - (f32) temp_s0->unk6) * (1.0f / var_v0))) - (f32) sp38); + D_801BEBB8.unkC = sp54 - D_801BEBB8.unk1C; + D_801BEBB8.unkE = sp50 - D_801BEBB8.unk1E; } - //temp_fv0 = ; - D_801BEBB8.unk1C = (s16) (s32) (((f32) sp44 + (((f32) sp58->unk2 - (f32) temp_s0->unk2) * (1.0f / var_v0))) - (f32) sp3C); - D_801BEBB8.unk1E = (s16) (s32) (((f32) sp40 + (((f32) sp58->unk6 - (f32) temp_s0->unk6) * (1.0f / var_v0))) - (f32) sp38); - D_801BEBB8.unkC = sp54 - D_801BEBB8.unk1C; - D_801BEBB8.unkE = sp50 - D_801BEBB8.unk1E; } else { D_801BEBB8.unk1C = D_801BEBB8.unk1E = 0; @@ -910,9 +893,6 @@ void func_80105C40(s16 arg0) { } } } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_disp/func_80105C40.s") -#endif #ifdef NON_MATCHING //https://decomp.me/scratch/WiRnZ @@ -925,22 +905,22 @@ void func_80105FE0(PlayState* play, s32 x, s32 z, s32 rot) { s32 sp58; s32 sp54; s32 var_v0; - f32 sp4C; - s32 sp48; sp6C = &D_801BEBB8.unk0->entry[D_801BEBB8.curRoom]; if (sp6C->unk0 != 0xFFFF) { + f32 sp4C; func_801030F4(sp6C, &sp60, &sp5C); func_80103090(sp6C, &sp58, &sp54); var_v0 = D_801BEBB8.unk0->unk4; if (D_801BEBB8.unk0->unk4 == 0) { - var_v0 = 0x14; + var_v0 = 20; } else if (D_801BEBB8.unk0->unk4 == -1) { + s32 sp48; func_801030B4(sp6C, &sp48); var_v0 = sp48; } sp4C = (1.0f / var_v0); - if (func_801039EC(play) == 0) { + if (!MapDisp_IsDataRotated(play)) { sp68 = (s32) ((x - (f32)sp6C->unk2) * sp4C) + D_801BEBB8.unk8 + (D_801BEBB8.unkC - D_801BEBB8.unk8) + sp60; sp64 = (s32) ((z - (f32)sp6C->unk6) * sp4C) + D_801BEBB8.unkA + (D_801BEBB8.unkE - D_801BEBB8.unkA) + sp5C; } else { @@ -957,7 +937,7 @@ void func_80105FE0(PlayState* play, s32 x, s32 z, s32 rot) { gDPSetRenderMode(OVERLAY_DISP++, G_RM_AA_DEC_LINE, G_RM_NOOP2); Matrix_Translate((f32) sp68 - 160.0f, 120.0f - (f32) sp64, 0.0f, MTXMODE_NEW); Matrix_RotateXFApply(-1.6f); - if (func_801039EC(play) != 0) { + if (MapDisp_IsDataRotated(play)) { rot += 0x7FFF; } Matrix_RotateYF(rot / 10.0f, MTXMODE_APPLY); @@ -970,6 +950,7 @@ void func_80105FE0(PlayState* play, s32 x, s32 z, s32 rot) { } } #else +void func_80105FE0(PlayState* play, s32 x, s32 z, s32 rot); #pragma GLOBAL_ASM("asm/non_matchings/code/z_map_disp/func_80105FE0.s") #endif @@ -1021,12 +1002,10 @@ s32 func_8010657C(s32 arg0, s32 arg1) { return 0; } -#ifdef NON_MATCHING void func_80106644(PlayState *play, s32 x, s32 z, s32 rot) { - s32 pad[2]; + PauseContext* pauseCtx = &play->pauseCtx; - if ((D_801BEBB8.unk0 != 0) && ((s32) play->pauseCtx.state < 4) && (XREG(95) == 0) && (play->interfaceCtx.minimapAlpha != 0)) { - //sp2C = ;// + 0x10000; + if ((D_801BEBB8.unk0 != 0) && ((s32) pauseCtx->state < 4) && (XREG(95) == 0) && (play->interfaceCtx.minimapAlpha != 0)) { if ((func_801064CC(play) == 0) && (D_801BEC1C != 0)) { if (func_80106450(play) != 0) { func_801031D0(play, D_801BEBB8.unk10, D_801BEBB8.unkC, D_801BEBB8.unkE, D_801BEBB8.curRoom, 1.0f - ((f32) D_801BEBB8.unk24 * 0.05f)); @@ -1035,7 +1014,7 @@ void func_80106644(PlayState *play, s32 x, s32 z, s32 rot) { } func_80104AE8(play); } - if (((func_8010A0A4(play) == 0) || (gSaveContext.save.inventory.dungeonItems[gSaveContext.mapIndex] & gBitFlags[1]) ) + if (((func_8010A0A4(play) == 0) || CHECK_DUNGEON_ITEM(1,gSaveContext.mapIndex ) ) && ((func_8010A0A4(play) != 0) || Inventory_IsMapVisible(play->sceneNum))) { if (play->interfaceCtx.unk_280 == 0) { func_80105FE0(play, x, z, rot); @@ -1045,9 +1024,6 @@ void func_80106644(PlayState *play, s32 x, s32 z, s32 rot) { } } } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_disp/func_80106644.s") -#endif void MapDisp_ResetIMap(void) { s32 i; @@ -1118,7 +1094,7 @@ void* func_801068FC(PlayState* play, void* heap) { D_801F56B0.unk84[0] = heap; for (var_s1 = 0; var_s1 < D_801F56B0.rooms; var_s1++) { temp_s2 = D_801F56B0.unk4[var_s1]; - func_80102E40(D_801F56B0.unk84[var_s1], temp_s2); + MapDisp_GetIMapTexture(D_801F56B0.unk84[var_s1], temp_s2); if (var_s1 + 1 < D_801F56B0.rooms) { D_801F56B0.unk84[var_s1 + 1] = ALIGN16((intptr_t)D_801F56B0.unk84[var_s1] + MapData_GetIMapSize(temp_s2)); } else { @@ -1188,7 +1164,8 @@ s32 func_80106D08(s32 sceneNum) { #ifdef NON_MATCHING // https://decomp.me/scratch/3cGkW void func_80106D5C(PlayState* play, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 arg5, s32 arg6) { - s32 var_a0; + PauseContext* pauseCtx = &play->pauseCtx; + //s32 var_a0; s32 var_a1_2; s32 var_a1_4; s32 var_a1_5; @@ -1209,9 +1186,9 @@ void func_80106D5C(PlayState* play, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 // | 1); if (CHECK_DUNGEON_ITEM(2, arg6)) {//*(gBitFlags + 8) & gSaveContext.save.inventory.dungeonItems[arg6]) { //15, 15, F (172, 172, 123) - D_801BEC84[0xF] = COLOR16(176, 176, 128, 1); //0xAD5F; - D_801BECA4[0xF] = COLOR16(176, 176, 128, 1); - D_801BECC4[0xF] = COLOR16(176, 176, 128, 1); + D_801BEC84[0xF] = 0xAD5F; + D_801BECA4[0xF] = 0xAD5F; + D_801BECC4[0xF] = 0xAD5F; } else { D_801BEC84[0xF] = 0; D_801BECA4[0xF] = 0; @@ -1222,7 +1199,7 @@ void func_80106D5C(PlayState* play, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 //temp_a0 = play->state.gfxCtx; //sp48 = arg6 + &gSaveContext; func_8012C628(play->state.gfxCtx); - gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, play->pauseCtx.alpha); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha); gDPLoadTLUT_pal16(POLY_OPA_DISP++, 0, D_801BEC84); gDPLoadTLUT_pal16(POLY_OPA_DISP++, 1, D_801BECA4); gDPLoadTLUT_pal16(POLY_OPA_DISP++, 2, D_801BECC4); @@ -1256,7 +1233,7 @@ void func_80106D5C(PlayState* play, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 continue; } else { //sp3C = play + 0x18000; - func_80109D40(spE8, &sp118, &sp114, sp108); + func_80109D40(spE8, &sp118, &sp114); func_80109DD8(spE8, &sp110, &sp10C); if (sp108->unk8 & 1) { sp110 = (sp118 / 2 - sp110) + sp118 / 2; @@ -1302,6 +1279,7 @@ void func_80106D5C(PlayState* play, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 CLOSE_DISPS(play->state.gfxCtx); } #else +void func_80106D5C(PlayState*, s32, s32, s32, s32, f32, s32); #pragma GLOBAL_ASM("asm/non_matchings/code/z_map_disp/func_80106D5C.s") #endif @@ -1470,6 +1448,7 @@ void func_80107B78(PlayState* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 } } #else +void func_80107B78(PlayState*, s32, s32, s32, s32, f32); #pragma GLOBAL_ASM("asm/non_matchings/code/z_map_disp/func_80107B78.s") #endif @@ -1545,6 +1524,7 @@ void func_80108558(PlayState* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 CLOSE_DISPS(arg0->state.gfxCtx); } #else +void func_80108558(PlayState*, s32, s32, s32, s32, f32, s32); #pragma GLOBAL_ASM("asm/non_matchings/code/z_map_disp/func_80108558.s") #endif diff --git a/tools/disasm/files.txt b/tools/disasm/files.txt index 22762b51a..a73d5d35f 100644 --- a/tools/disasm/files.txt +++ b/tools/disasm/files.txt @@ -540,7 +540,8 @@ 0x801BE960 : "z_lib", 0x801BE990 : "z_lifemeter", 0x801BEAB0 : "z_lights", - 0x801BEAD0 : "z_map_disp", # z_map_data is somewhere in here + 0x801BEAD0 : "z_map_disp", + 0x801BED40 : "z_map_data", 0x801BF550 : "z_map_exp", 0x801BF5C0 : "z_msgevent", 0x801BF6C0 : "z_parameter", diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 93fc813c1..12befc404 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -1901,7 +1901,7 @@ 0x80102DBC:("ZeldaArena_Init",), 0x80102DEC:("ZeldaArena_Cleanup",), 0x80102E10:("ZeldaArena_IsInitialized",), - 0x80102E40:("func_80102E40",), + 0x80102E40:("MapDisp_GetIMapTexture",), 0x80102E90:("func_80102E90",), 0x80102EA4:("func_80102EA4",), 0x80102EB4:("func_80102EB4",), @@ -1912,7 +1912,7 @@ 0x801030B4:("func_801030B4",), 0x801030F4:("func_801030F4",), 0x801031D0:("func_801031D0",), - 0x801039EC:("func_801039EC",), + 0x801039EC:("MapDisp_IsDataRotated",), 0x80103A10:("func_80103A10",), 0x80103A58:("func_80103A58",), 0x8010439C:("func_8010439C",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index 2d901f802..df9bc7e1c 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1013,38 +1013,29 @@ 0x801BEB10:("D_801BEB10","u32","[4]",0x10), 0x801BEB20:("D_801BEB20","u32","[4]",0x10), 0x801BEB38:("D_801BEB38","UNK_TYPE1","",0x1), - 0x801BEBB8:("D_801BEBB8","UNK_TYPE4","",0x4), - 0x801BEBD8:("D_801BEBD8","UNK_TYPE4","",0x4), + 0x801BEBB8:("D_801BEBB8","UNK_TYPE4","",0x40), 0x801BEBF8:("D_801BEBF8","UNK_TYPE2","",0x2), 0x801BEBFA:("D_801BEBFA","UNK_TYPE2","",0x2), - 0x801BEBFC:("D_801BEBFC","UNK_TYPE2","",0x2), - 0x801BEC10:("D_801BEC10","UNK_TYPE2","",0x2), + 0x801BEBFC:("D_801BEBFC","UNK_TYPE2","",0x18), 0x801BEC14:("D_801BEC14","MinimapList","",0x8), 0x801BEC1C:("D_801BEC1C","UNK_TYPE4","",0x4), 0x801BEC20:("D_801BEC20","UNK_TYPE4","",0x4), - 0x801BEC24:("D_801BEC24","UNK_TYPE1","",0x1), + 0x801BEC24:("D_801BEC24","UNK_TYPE1","",0x8), 0x801BEC2C:("D_801BEC2C","Color_RGBA8","[12]",0x30), 0x801BEC5C:("D_801BEC5C","T_801BEC5C","[5]",0x14), - 0x801BEC70:("D_801BEC70","UNK_TYPE4","",0x4), + 0x801BEC70:("D_801BEC70","UNK_TYPE4","",0x14), 0x801BEC84:("D_801BEC84","u16","[16]",0x10), 0x801BECA4:("D_801BECA4","u16","[16]",0x10), 0x801BECC4:("D_801BECC4","u16","[16]",0x10), - 0x801BECE4:("D_801BECE4","UNK_TYPE1","",0x1), - 0x801BED00:("D_801BED00","UNK_TYPE1","",0x1), - 0x801BED24:("D_801BED24","UNK_TYPE2","",0x2), - 0x801BED3C:("D_801BED3C","UNK_TYPE1","",0x1), + 0x801BECE4:("D_801BECE4","UNK_TYPE1","",0x1C), + 0x801BED00:("D_801BED00","UNK_TYPE1","",0x24), + 0x801BED24:("D_801BED24","UNK_TYPE2","",0x18), 0x801BED40:("D_801BED40","UNK_TYPE1","",0x1), - 0x801BED4C:("D_801BED4C","UNK_TYPE1","",0x1), - 0x801BED54:("D_801BED54","UNK_TYPE1","",0x1), - 0x801BED55:("D_801BED55","UNK_TYPE1","",0x1), - 0x801BED56:("D_801BED56","UNK_TYPE1","",0x1), + 0x801BED4C:("D_801BED4C","UNK_TYPE1","",0x3C), 0x801BED88:("D_801BED88","UNK_TYPE1","",0x1), 0x801BEFC8:("D_801BEFC8","UNK_TYPE1","",0x1), 0x801BF15C:("D_801BF15C","UNK_TYPE1","",0x1), - 0x801BF170:("D_801BF170","UNK_TYPE1","",0x1), - 0x801BF176:("D_801BF176","UNK_TYPE1","",0x1), - 0x801BF177:("D_801BF177","UNK_TYPE1","",0x1), - 0x801BF178:("D_801BF178","UNK_TYPE1","",0x1), + 0x801BF170:("D_801BF170","UNK_TYPE1","",0x244), 0x801BF3B4:("D_801BF3B4","UNK_TYPE1","",0x1), 0x801BF550:("D_801BF550","UNK_TYPE2","",0x2), 0x801BF554:("D_801BF554","UNK_TYPE2","",0x2),