diff options
| author | mzxrules <mzxrules@gmail.com> | 2023-10-13 18:14:53 -0400 |
|---|---|---|
| committer | mzxrules <mzxrules@gmail.com> | 2023-10-13 18:14:53 -0400 |
| commit | 3444cdbfc9fca5b8a511c8dd6b5b1e07a3527d32 (patch) | |
| tree | e6d2e7cfa1d23513fe9f3279eace68861c5bf23d /src/code | |
| parent | 9282fedbc62d19164ed5431952f5ff768acd3976 (diff) | |
implement easy fixes
Diffstat (limited to 'src/code')
| -rw-r--r-- | src/code/z_map_data.c | 104 | ||||
| -rw-r--r-- | src/code/z_map_disp.c | 114 |
2 files changed, 146 insertions, 72 deletions
diff --git a/src/code/z_map_data.c b/src/code/z_map_data.c index 0dbd8d534..24a995cbb 100644 --- a/src/code/z_map_data.c +++ b/src/code/z_map_data.c @@ -2,13 +2,13 @@ #include "z64map.h" #include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" -static Color_RGBA8 mapColorTable[3] = { +static Color_RGBA8 sMapColorTable[] = { { 255, 255, 255, 255 }, { 0, 255, 255, 160 }, // Blue { 100, 255, 255, 255 }, }; -static MapSpriteInfo2 gameplay_dangeon_keep_Info[5] = { +static MapSpriteInfo2 sGameplayDangeonKeepInfo[5] = { { &gameplay_dangeon_keep_Tex_0022C8, 96, 85, 48, 42, MAPDATA_DRAW_0, 0, 20 }, { &gameplay_dangeon_keep_Tex_0042C8, 96, 85, 48, 62, MAPDATA_DRAW_0, 0, 20 }, { &gameplay_dangeon_keep_Tex_0052C8, 96, 85, 68, 42, MAPDATA_DRAW_0, 0, 20 }, @@ -16,7 +16,7 @@ static MapSpriteInfo2 gameplay_dangeon_keep_Info[5] = { { &gameplay_dangeon_keep_Tex_0062C8, 96, 85, 68, 62, MAPDATA_DRAW_0, 0, 20 }, }; -static MapSpriteInfo map_grand_static_Info[98] = { +static MapSpriteInfo sMapGrandStaticInfo[98] = { { 96, 85, 48, 42, MAPDATA_DRAW_0, 0, 20 }, { 96, 85, 48, 62, MAPDATA_DRAW_0, 0, 20 }, { 96, 85, 68, 42, MAPDATA_DRAW_0, 0, 20 }, { 96, 85, 48, 62, MAPDATA_DRAW_0, 0, 20 }, { 96, 85, 68, 62, MAPDATA_DRAW_0, 0, 20 }, { 80, 72, 40, 35, MAPDATA_DRAW_1, 1, 52 }, @@ -72,7 +72,7 @@ static s32 D_801BF15C[5] = { 0x50, 0x50, 0x8D, 0x50, 0x50, }; -static MapSpriteInfo map_i_static_Info[MAPDATA_MAP_I_MAX] = { +static MapSpriteInfo sMapIStaticInfo[MAPDATA_MAP_I_MAX] = { { 96, 85, 73, 67, MAPDATA_DRAW_0, 0, 60 }, { 96, 85, 73, 74, MAPDATA_DRAW_0, 0, 60 }, { 96, 85, 80, 67, MAPDATA_DRAW_0, 0, 60 }, { 96, 85, 73, 67, MAPDATA_DRAW_0, 0, 60 }, { 96, 85, 80, 74, MAPDATA_DRAW_0, 0, 60 }, { 32, 29, 17, 14, MAPDATA_DRAW_2, 0, 50 }, @@ -104,11 +104,11 @@ static MapSpriteInfo map_i_static_Info[MAPDATA_MAP_I_MAX] = { { 16, 30, 9, 8, MAPDATA_DRAW_2, 0, 90 }, { 16, 9, 9, 4, MAPDATA_DRAW_2, 0, 90 }, }; -static s32 map_i_for_gameplay_dangeon_keep[5] = { +static s32 sMapIForGameplayDangeonKeep[5] = { 0x00, 0x01, 0x02, 0x03, 0x04, }; -static s32 map_i_for_map_grand[98] = { +static s32 sMapIForMapGrand[98] = { MAPDATA_MAP_I_MAX, 0x01, 0x02, @@ -212,55 +212,55 @@ static s32 map_i_for_map_grand[98] = { s32 MapDisp_GetSizeOfMapITex(s32 mapId); void MapData_GetMapColor(s32 colorIndex, Color_RGBA8* color) { - *color = mapColorTable[colorIndex]; + *color = sMapColorTable[colorIndex]; } void MapData_GetMapTexDimGameplayDangeonKeep(s32 mapId, s32* width, s32* height) { - *width = gameplay_dangeon_keep_Info[mapId].width; - *height = gameplay_dangeon_keep_Info[mapId].height; + *width = sGameplayDangeonKeepInfo[mapId].width; + *height = sGameplayDangeonKeepInfo[mapId].height; } void MapData_GetMapTexOffsetGameplayDangeonKeep(s32 mapId, s32* offsetX, s32* offsetY) { - *offsetX = gameplay_dangeon_keep_Info[mapId].offsetX; - *offsetY = gameplay_dangeon_keep_Info[mapId].offsetY; + *offsetX = sGameplayDangeonKeepInfo[mapId].offsetX; + *offsetY = sGameplayDangeonKeepInfo[mapId].offsetY; } void MapData_GetMapDrawTypeGameplayDangeonKeep(s32 mapId, s32* drawType) { - *drawType = gameplay_dangeon_keep_Info[mapId].drawType; + *drawType = sGameplayDangeonKeepInfo[mapId].drawType; } u8 MapData_GetMapColorIndexGameplayDangeonKeep(s32 mapId) { - return gameplay_dangeon_keep_Info[mapId].colorIndex; + return sGameplayDangeonKeepInfo[mapId].colorIndex; } s16 MapData_GetMapGameplayDangeonKeepScale(s32 mapId) { - return gameplay_dangeon_keep_Info[mapId].scale; + return sGameplayDangeonKeepInfo[mapId].scale; } TexturePtr MapData_GetMapTexGameplayDangeonKeep(s32 mapId) { - return gameplay_dangeon_keep_Info[mapId].lmapTex; + return sGameplayDangeonKeepInfo[mapId].lmapTex; } void MapData_GetMapTexGameplayDangeonKeepDim(s32 mapId, s32* width, s32* height) { - *width = map_grand_static_Info[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].texWidth; - *height = map_grand_static_Info[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].texHeight; + *width = sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].texWidth; + *height = sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].texHeight; } void MapData_GetMapTexGameplayDangeonKeepOffset(s32 mapId, s32* offsetX, s32* offsetY) { - *offsetX = map_grand_static_Info[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].offsetX; - *offsetY = map_grand_static_Info[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].offsetY; + *offsetX = sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].offsetX; + *offsetY = sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].offsetY; } void MapData_GetMapGrandDrawType(s32 mapId, s32* drawType) { - *drawType = map_grand_static_Info[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].drawType; + *drawType = sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].drawType; } u8 MapData_GetMapGrandColorIndex(s32 mapId) { - return map_grand_static_Info[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].colorIndex; + return sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].colorIndex; } s16 MapData_GetMapGrandScale(s32 mapId) { - return map_grand_static_Info[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].scale; + return sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].scale; } s32 MapData_MapGrandTexSizeTest(s32 mapId) { @@ -275,8 +275,8 @@ s32 MapData_MapGrandTexSizeTest(s32 mapId) { } s32 MapData_GetSizeOfMapGrandTex(s32 mapId) { - return (map_grand_static_Info[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].texWidth * - map_grand_static_Info[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].texHeight) / + return (sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].texWidth * + sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].texHeight) / 2; } @@ -295,9 +295,11 @@ void MapData_GetMapTexDim(s32 mapId, s32* width, s32* height) { case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP: MapData_GetMapTexDimGameplayDangeonKeep(mapId, width, height); return; + case MAPDATA_MID_MAP_GRAND_STATIC: MapData_GetMapTexGameplayDangeonKeepDim(mapId, width, height); return; + default: *width = *height = 0; return; @@ -309,9 +311,11 @@ void MapData_GetMapTexOffset(s32 mapId, s32* offsetX, s32* offsetY) { case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP: MapData_GetMapTexOffsetGameplayDangeonKeep(mapId, offsetX, offsetY); return; + case MAPDATA_MID_MAP_GRAND_STATIC: MapData_GetMapTexGameplayDangeonKeepOffset(mapId, offsetX, offsetY); return; + default: *offsetX = *offsetY = 0; return; @@ -323,9 +327,11 @@ void MapData_GetMapScale(s32 mapId, s32* scale) { default: *scale = 0; return; + case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP: *scale = MapData_GetMapGameplayDangeonKeepScale(mapId); return; + case MAPDATA_MID_MAP_GRAND_STATIC: *scale = MapData_GetMapGrandScale(mapId); return; @@ -337,9 +343,11 @@ void MapData_GetDrawType(s32 mapId, s32* drawType) { case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP: MapData_GetMapDrawTypeGameplayDangeonKeep(mapId, drawType); return; + case MAPDATA_MID_MAP_GRAND_STATIC: MapData_GetMapGrandDrawType(mapId, drawType); return; + default: *drawType = 0; return; @@ -350,8 +358,10 @@ s32 MapData_GetMapColorIndex(s32 mapId) { switch (MapData_MID_GetType(mapId)) { case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP: return MapData_GetMapColorIndexGameplayDangeonKeep(mapId); + case MAPDATA_MID_MAP_GRAND_STATIC: return MapData_GetMapGrandColorIndex(mapId); + default: return 0; } @@ -362,32 +372,31 @@ s32 func_80109964(s32 arg0) { } void MapData_GetMapITexDim(s32 mapId, s32* width, s32* height) { - *width = map_i_static_Info[mapId].texWidth; - *height = map_i_static_Info[mapId].texHeight; + *width = sMapIStaticInfo[mapId].texWidth; + *height = sMapIStaticInfo[mapId].texHeight; } void MapData_GetMapITexOffset(s32 mapId, s32* offsetX, s32* offsetY) { - *offsetX = map_i_static_Info[mapId].offsetX; - *offsetY = map_i_static_Info[mapId].offsetY; + *offsetX = sMapIStaticInfo[mapId].offsetX; + *offsetY = sMapIStaticInfo[mapId].offsetY; } void MapData_GetMapIDrawType(s32 mapId, s32* drawType) { - *drawType = map_i_static_Info[mapId].drawType; + *drawType = sMapIStaticInfo[mapId].drawType; } u8 MapData_GetMapIColorIndex(s32 mapId) { - return map_i_static_Info[mapId].colorIndex; + return sMapIStaticInfo[mapId].colorIndex; } s16 MapData_GetMapIScale(s32 mapId) { - return map_i_static_Info[mapId].scale; + return sMapIStaticInfo[mapId].scale; } s32 MapData_MapITexSizeTest(s32 mapId) { s32 i; - s32 size; + s32 size = 0; - size = 0; for (i = 1; i < mapId + 1; i++) { size += MapDisp_GetSizeOfMapITex(i - 1); } @@ -396,15 +405,17 @@ s32 MapData_MapITexSizeTest(s32 mapId) { } s32 MapDisp_GetSizeOfMapITex(s32 mapId) { - return (map_i_static_Info[mapId].texWidth * map_i_static_Info[mapId].texHeight) / 2; + return (sMapIStaticInfo[mapId].texWidth * sMapIStaticInfo[mapId].texHeight) / 2; } s32 MapData_GetMapIId(s32 mapId) { switch (MapData_MID_GetType(mapId)) { case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP: - return map_i_for_gameplay_dangeon_keep[mapId]; + return sMapIForGameplayDangeonKeep[mapId]; + case MAPDATA_MID_MAP_GRAND_STATIC: - return map_i_for_map_grand[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)]; + return sMapIForMapGrand[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)]; + default: return 0; } @@ -417,8 +428,10 @@ s32 func_80109B38(s32 mapId) { switch (MapData_MID_GetType(mapId)) { case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP: return 2; + case MAPDATA_MID_MAP_GRAND_STATIC: return 0; + default: return 0; } @@ -457,10 +470,13 @@ s32 func_80109C38(s32 mapCompactId) { switch (MapData_CPID_GetType(mapCompactId)) { case MAPDATA_CPID_MAP_GRAND_STATIC: return MapData_MapGrandTexSizeTest(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId)); + case MAPDATA_CPID_MAP_I_STATIC: return MapData_MapITexSizeTest(mapCompactId); + case MAPDATA_CPID_2: return 0; + default: return 0; } @@ -473,16 +489,18 @@ s32 MapData_CPID_GetSizeOfMapTex(s32 mapCompactId) { switch (MapData_CPID_GetType(mapCompactId)) { case MAPDATA_CPID_MAP_GRAND_STATIC: return MapData_GetSizeOfMapGrandTex(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId)); + case MAPDATA_CPID_MAP_I_STATIC: return MapDisp_GetSizeOfMapITex(mapCompactId); + case MAPDATA_CPID_2: return 0; + default: return 0; } } -// GOOD void MapData_CPID_GetTexDim(s32 mapCompactId, s32* width, s32* height) { if (mapCompactId == -1) { *width = *height = 0; @@ -493,9 +511,11 @@ void MapData_CPID_GetTexDim(s32 mapCompactId, s32* width, s32* height) { MapData_GetMapTexGameplayDangeonKeepDim(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId), width, height); return; + case MAPDATA_CPID_MAP_I_STATIC: MapData_GetMapITexDim(mapCompactId, width, height); return; + case MAPDATA_CPID_2: default: *width = *height = 0; @@ -503,7 +523,6 @@ void MapData_CPID_GetTexDim(s32 mapCompactId, s32* width, s32* height) { } } -// GOOD void MapData_CPID_GetTexOffset(s32 mapCompactId, s32* offsetX, s32* offsetY) { if (mapCompactId == -1) { *offsetX = *offsetY = 0; @@ -514,9 +533,11 @@ void MapData_CPID_GetTexOffset(s32 mapCompactId, s32* offsetX, s32* offsetY) { MapData_GetMapTexGameplayDangeonKeepOffset(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId), offsetX, offsetY); return; + case MAPDATA_CPID_MAP_I_STATIC: MapData_GetMapITexOffset(mapCompactId, offsetX, offsetY); return; + case MAPDATA_CPID_2: default: *offsetX = *offsetY = 0; @@ -534,9 +555,11 @@ void MapData_CPID_GetDrawType(s32 mapCompactId, s32* drawType) { case MAPDATA_CPID_MAP_GRAND_STATIC: MapData_GetMapGrandDrawType(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId), drawType); return; + case MAPDATA_CPID_MAP_I_STATIC: MapData_GetMapIDrawType(mapCompactId, drawType); return; + case MAPDATA_CPID_2: default: *drawType = MAPDATA_DRAW_0; @@ -552,15 +575,16 @@ u8 MapData_CPID_GetMapColorIndex(s32 mapCompactId) { switch (MapData_CPID_GetType(mapCompactId)) { case MAPDATA_CPID_MAP_GRAND_STATIC: return MapData_GetMapGrandColorIndex(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId)); + case MAPDATA_CPID_MAP_I_STATIC: return MapData_GetMapIColorIndex(mapCompactId); + case MAPDATA_CPID_2: default: return 0; } } -// GOOD s16 MapData_CPID_GetMapScale(s32 mapCompactId) { if (mapCompactId == -1) { return 0; @@ -568,8 +592,10 @@ s16 MapData_CPID_GetMapScale(s32 mapCompactId) { switch (MapData_CPID_GetType(mapCompactId)) { case MAPDATA_CPID_MAP_GRAND_STATIC: return MapData_GetMapGrandScale(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId)); + case MAPDATA_CPID_MAP_I_STATIC: return MapData_GetMapIScale(mapCompactId); + case MAPDATA_CPID_2: default: return 0; diff --git a/src/code/z_map_disp.c b/src/code/z_map_disp.c index ffb406e55..384ffbb75 100644 --- a/src/code/z_map_disp.c +++ b/src/code/z_map_disp.c @@ -1,6 +1,7 @@ #include "global.h" #include "gfx.h" #include "overlays/actors/ovl_En_Door/z_en_door.h" +#include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" void MapDisp_DestroyMapI(PlayState* play); void MapDisp_InitMapI(PlayState* play); @@ -150,6 +151,7 @@ void func_801031D0(PlayState* play, TexturePtr arg1, s32 arg2, s32 arg3, s32 arg if ((spCC->mapId != 0xFFFF) && (arg1 != 0)) { MapDisp_GetMapTexDim(spCC, &spC8, &spC4); OPEN_DISPS(play->state.gfxCtx); + Gfx_SetupDL39_Overlay(play->state.gfxCtx); MapData_GetMapColor(MapData_GetMapColorIndex(spCC->mapId), &spAC_color); gDPSetPrimColor(OVERLAY_DISP++, 0, 0, spAC_color.r, spAC_color.g, spAC_color.b, @@ -192,6 +194,7 @@ void func_801031D0(PlayState* play, TexturePtr arg1, s32 arg2, s32 arg3, s32 arg } gSPTextureRectangle(OVERLAY_DISP++, arg2 << 2, arg3 << 2, (spC8 + arg2) << 2, (arg3 + spC4) << 2, G_TX_RENDERTILE, var_t1, var_t0, var_a3, var_a0_4); + CLOSE_DISPS(play->state.gfxCtx); } } @@ -275,6 +278,7 @@ void func_80103A58(PlayState* play, Actor* actor) { } if ((spD8 > 0) && (spD8 < 0x3FF) && (spD4 > 0) && (spD4 < 0x3FF)) { OPEN_DISPS(play->state.gfxCtx); + if ((actor->category == ACTORCAT_PLAYER) && (actor->flags & 0x80000000)) { s16 spA2; Gfx_SetupDL42_Overlay(play->state.gfxCtx); @@ -351,6 +355,7 @@ void func_80103A58(PlayState* play, Actor* actor) { gSPTextureRectangle(OVERLAY_DISP++, (spD8 - 1) << 2, (spD4 - 1) << 2, (spD8 + 1) << 2, (spD4 + 1) << 2, G_TX_RENDERTILE, 0, 0, 0x0001, 0x0001); } + CLOSE_DISPS(play->state.gfxCtx); } } @@ -366,6 +371,7 @@ void func_8010439C(PlayState* play) { if (play->roomCtx.curRoom.num != -1) { OPEN_DISPS(play->state.gfxCtx); + gDPLoadTextureBlock_4b(OVERLAY_DISP++, &D_801BEB38, G_IM_FMT_I, 16, 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); @@ -385,6 +391,7 @@ void func_8010439C(PlayState* play) { } while (actor != NULL); } } + CLOSE_DISPS(play->state.gfxCtx); } } @@ -397,15 +404,12 @@ void func_801045AC(PlayState* play, Actor* actor) { s32 sp6C; s32 sp68; s32 sp64; - Player* player; + Player* player = GET_PLAYER(play); f32 sp5C; - f32 temp_fv1; + f32 temp_fv1 = fabsf(player->actor.world.pos.y - actor->world.pos.y); s32 var_v1; - f32 sp50; + f32 sp50 = 1.0f - (1 / 350.0f) * temp_fv1; - player = GET_PLAYER(play); - temp_fv1 = fabsf(player->actor.world.pos.y - actor->world.pos.y); - sp50 = 1.0f - (1 / 350.0f) * temp_fv1; if (sp50 < 0) { sp50 = 0.0f; } @@ -419,6 +423,7 @@ void func_801045AC(PlayState* play, Actor* actor) { var_v1 = 20; } else if (D_801BEBB8.minimapList->scale == -1) { s32 sp4C; + MapDisp_GetMapScale(sp7C, &sp4C); var_v1 = sp4C; } @@ -440,11 +445,13 @@ void func_801045AC(PlayState* play, Actor* actor) { } if ((sp78 > 0) && (sp78 < 0x3FF) && (sp74 > 0) && (sp74 < 0x3FF)) { OPEN_DISPS(play->state.gfxCtx); + Gfx_SetupDL39_Overlay(play->state.gfxCtx); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); if ((actor->category == 0xA) && (func_80103A10(play) != 0)) { s32 pad; + gDPSetPrimColor(OVERLAY_DISP++, 0, 0, D_801BEC2C[actor->category].r, D_801BEC2C[actor->category].g, D_801BEC2C[actor->category].b, (s32)((D_801BEC2C[actor->category].a * (1.0f - D_801BEBB8.swapAnimTimer * 0.05f) * @@ -456,6 +463,7 @@ void func_801045AC(PlayState* play, Actor* actor) { var_v1 = 20; } else if (D_801BEBB8.minimapList->scale == -1) { s32 sp34; + MapDisp_GetMapScale(sp7C, &sp34); var_v1 = sp34; } @@ -467,6 +475,7 @@ void func_801045AC(PlayState* play, Actor* actor) { (sp74 + 1) << 2, G_TX_RENDERTILE, 0, 0, 0x0001, 0x0001); } } + CLOSE_DISPS(play->state.gfxCtx); } } @@ -478,6 +487,7 @@ void func_80104AE8(PlayState* play) { if (play->roomCtx.curRoom.num != -1) { OPEN_DISPS(play->state.gfxCtx); + gDPLoadTextureBlock_4b(OVERLAY_DISP++, &D_801BEB38, G_IM_FMT_I, 16, 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); @@ -492,17 +502,16 @@ void func_80104AE8(PlayState* play) { actor = actor->next; } while (actor != NULL); } + CLOSE_DISPS(play->state.gfxCtx); } } -// Possible fakematch -// https://decomp.me/scratch/kvGBZ +//! FAKE: https://decomp.me/scratch/kvGBZ void func_80104C80(PlayState* play) { - s32 objectSlot; + s32 objectSlot = Object_GetSlot(&play->objectCtx, GAMEPLAY_DANGEON_KEEP); - objectSlot = Object_GetSlot(&play->objectCtx, GAMEPLAY_DANGEON_KEEP); - if (objectSlot < 0) { + if (objectSlot <= OBJECT_SLOT_NONE) { D_801BEBB8.unk20 |= 1; } else { do { } while (!Object_IsLoaded(&play->objectCtx, objectSlot)); } @@ -553,7 +562,7 @@ void MapDisp_Init(PlayState* play) { MapDisp_InitMapI(play); D_801BEBB8.unk58 = 0; D_801BEBB8.unk5A = 0; - if (Map_IsInBossArea(play) != 0) { + if (Map_IsInBossArea(play)) { func_8010549C(play, NULL); func_8010565C(play, 0, NULL); } @@ -658,6 +667,7 @@ void func_8010534C(PlayState* play) { if (ABS_ALT(D_801F53B0[i].id) != 0x18) { for (var_v0 = 0; var_v0 < D_801BEBB8.unk40; var_v0++) { s32 temp = (D_801BEBB8.unk48[var_v0] - 5); // needed for matching + if (((var_v0 == D_801BEBB8.unk40 - 1) && (D_801F53B0[i].pos.y >= (D_801BEBB8.unk48[var_v0] - 5))) || @@ -678,7 +688,7 @@ void func_8010549C(PlayState* play, void* segmentAddress) { MinimapList* temp_v0; s32 i; - if (Map_IsInBossArea(play) == 0) { + if (!Map_IsInBossArea(play)) { D_801BEC1C = play->numRooms; temp_v0 = Lib_SegmentedToVirtual(segmentAddress); D_801BEC14 = *temp_v0; @@ -707,7 +717,7 @@ void func_8010565C(PlayState* play, s32 num, void* segmentAddress) { MinimapChest* var_v1; s32 var_a3; - if (Map_IsInBossArea(play) == 0) { + if (!Map_IsInBossArea(play)) { var_v1 = Lib_SegmentedToVirtual(segmentAddress); for (var_a3 = 0; var_a3 < num; var_v1++, var_a3++) { D_801F5270[var_a3] = *var_v1; @@ -721,7 +731,7 @@ void func_8010565C(PlayState* play, s32 num, void* segmentAddress) { void func_80105818(PlayState* play, s32 num, TransitionActorEntry* transitionActorList) { s32 i; - if (Map_IsInBossArea(play) == 0) { + if (!Map_IsInBossArea(play)) { D_801BEC24.count = num; for (i = 0; i < num; i++) { D_801F53B0[i] = transitionActorList[i]; @@ -852,12 +862,14 @@ void MapDisp_SwapRooms(s16 nextRoom) { s32 sp38; s32 scale; s32 pad; + MapDisp_GetMapPos(prevMinimapEntry, &sp3C, &sp38); scale = D_801BEBB8.minimapList->scale; if (D_801BEBB8.minimapList->scale == 0) { scale = 20; } else if (D_801BEBB8.minimapList->scale == -1) { s32 scaleTemp; + MapDisp_GetMapScale(nextMinimapEntry, &scaleTemp); scale = scaleTemp; } @@ -883,6 +895,7 @@ void MapDisp_SwapRooms(s16 nextRoom) { case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP: D_801BEBB8.lMapCurTex = MapData_GetMapTexGameplayDangeonKeep(nextMinimapEntry->mapId); return; + case MAPDATA_MID_MAP_GRAND_STATIC: if (D_801BEBB8.lMapPrevTex == D_801BEBB8.texBuff0) { D_801BEBB8.lMapCurTex = D_801BEBB8.texBuff1; @@ -894,6 +907,9 @@ void MapDisp_SwapRooms(s16 nextRoom) { D_801BEBB8.lMapCurTex, MapData_GetSizeOfMapGrandTex(nextMinimapEntry->mapId)); } break; + + default: + break; } } } @@ -921,6 +937,7 @@ void func_80105FE0(PlayState* play, s32 x, s32 z, s32 rot) { var_v0 = 20; } else if (D_801BEBB8.minimapList->scale == -1) { s32 sp48; + MapDisp_GetMapScale(sp6C, &sp48); var_v0 = sp48; } @@ -934,6 +951,7 @@ void func_80105FE0(PlayState* play, s32 x, s32 z, s32 rot) { } if ((sp68 > 0) && (sp68 < 0x3FF) && (sp64 > 0) && (sp64 < 0x3FF)) { OPEN_DISPS(play->state.gfxCtx); + Gfx_SetupDL42_Overlay(play->state.gfxCtx); gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, @@ -951,6 +969,7 @@ void func_80105FE0(PlayState* play, s32 x, s32 z, s32 rot) { gSPMatrix(OVERLAY_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPSetPrimColor(OVERLAY_DISP++, 0, 0xFF, 200, 0, 0, play->interfaceCtx.minimapAlpha); gSPDisplayList(OVERLAY_DISP++, D_0401ED00); + CLOSE_DISPS(play->state.gfxCtx); } } @@ -969,15 +988,15 @@ s32 func_80106408(PlayState* play) { s32 func_80106450(PlayState* play) { if (((func_8010A0A4(play) == 0) && (Inventory_IsMapVisible(play->sceneId) != 0)) || - ((func_8010A0A4(play) != 0) && CHECK_DUNGEON_ITEM(2, gSaveContext.mapIndex))) { + ((func_8010A0A4(play) != 0) && CHECK_DUNGEON_ITEM(DUNGEON_MAP, gSaveContext.mapIndex))) { return true; } return false; } s32 func_801064CC(PlayState* play) { - if (((play->csCtx.state != 0) && (func_80106408(play) == 0)) || (D_801BEBB8.unk20 & 2) || - (Map_IsInBossArea(play) != 0)) { + if (((play->csCtx.state != CS_STATE_IDLE) && !func_80106408(play)) || (D_801BEBB8.unk20 & 2) || + Map_IsInBossArea(play)) { return true; } return false; @@ -1026,9 +1045,9 @@ void func_80106644(PlayState* play, s32 x, s32 z, s32 rot) { } func_80104AE8(play); } - if (((func_8010A0A4(play) == 0) || CHECK_DUNGEON_ITEM(1, gSaveContext.mapIndex)) && + if (((func_8010A0A4(play) == 0) || CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, gSaveContext.mapIndex)) && ((func_8010A0A4(play) != 0) || Inventory_IsMapVisible(play->sceneId))) { - if (play->interfaceCtx.minigameState == 0) { + if (play->interfaceCtx.minigameState == MINIGAME_STATE_NONE) { func_80105FE0(play, x, z, rot); } func_8010439C(play); @@ -1154,12 +1173,16 @@ s32 func_80106D08(s32 sceneId) { switch (sceneId) { case SCENE_MITURIN_BS: return SCENE_MITURIN; + case SCENE_HAKUGIN_BS: return SCENE_HAKUGIN; + case SCENE_SEA_BS: return SCENE_SEA; + case SCENE_INISIE_BS: return SCENE_INISIE_N; + default: return sceneId; } @@ -1187,7 +1210,7 @@ void func_80106D5C(PlayState* play, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 temp2 = ((D_801F56B0.unk184 * 115.0f / 40.0f) + 140.0f) * 31.0f / 255.0f; D_801BECC4[1] = (temp1 << 6) | (temp2 << 1) | 1; - if (CHECK_DUNGEON_ITEM(2, arg6)) { + if (CHECK_DUNGEON_ITEM(DUNGEON_MAP, arg6)) { D_801BEC84[0xF] = 0xAD5F; D_801BECA4[0xF] = 0xAD5F; D_801BECC4[0xF] = 0xAD5F; @@ -1198,6 +1221,7 @@ void func_80106D5C(PlayState* play, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 } OPEN_DISPS(play->state.gfxCtx); + // temp_a0 = play->state.gfxCtx; // sp48 = arg6 + &gSaveContext; Gfx_SetupDL39_Opa(play->state.gfxCtx); @@ -1257,7 +1281,7 @@ void func_80106D5C(PlayState* play, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 spEC = ((sp108->unk6 - (f32)D_801BEBB8.sceneMidZ) * arg5 - sp10C_offsetY) + ((arg4 / 2) + arg2); if (var_s2 == play->roomCtx.curRoom.num) { - if (Map_IsInBossArea(play) != 0) { + if (Map_IsInBossArea(play)) { gDPLoadTextureBlock_4b(POLY_OPA_DISP++, temp_s1, G_IM_FMT_CI, sp118_texWidth, sp114_texHeight, 1, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, @@ -1277,7 +1301,7 @@ void func_80106D5C(PlayState* play, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); } else if (CHECK_DUNGEON_ITEM( - 2, + DUNGEON_MAP, arg6)) { //*(gBitFlags + 8) & gSaveContext.save.inventory.dungeonItems[arg6]) { gDPLoadTextureBlock_4b(POLY_OPA_DISP++, temp_s1, G_IM_FMT_CI, sp118_texWidth, sp114_texHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, @@ -1295,6 +1319,7 @@ void func_80106D5C(PlayState* play, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 } } gDPSetTextureLUT(POLY_OPA_DISP++, G_TT_NONE); + CLOSE_DISPS(play->state.gfxCtx); } #else @@ -1319,6 +1344,7 @@ void func_80107B78(PlayState* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 if (D_801BEBB8.unk54 != NULL) { // temp_s1 = arg0->state.gfxCtx; OPEN_DISPS(arg0->state.gfxCtx); + // temp_v1 = temp_s1->polyOpa.p; // temp_s1->polyOpa.p = temp_v1 + 8; // temp_v1->words.w1 = 0x00000000; @@ -1425,15 +1451,19 @@ void func_80107B78(PlayState* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 case SCENE_MITURIN_BS: var_v1_2 = gSaveContext.cycleSceneFlags[SCENE_MITURIN].chest & (1 << var_s0[var_s3].unk2); break; + case SCENE_HAKUGIN_BS: var_v1_2 = gSaveContext.cycleSceneFlags[SCENE_HAKUGIN].chest & (1 << var_s0[var_s3].unk2); break; + case SCENE_SEA_BS: var_v1_2 = gSaveContext.cycleSceneFlags[SCENE_SEA].chest & (1 << var_s0[var_s3].unk2); break; + case SCENE_INISIE_BS: var_v1_2 = gSaveContext.cycleSceneFlags[SCENE_INISIE_N].chest & (1 << var_s0[var_s3].unk2); break; + default: var_v1_2 = Flags_GetTreasure(arg0, (s32)var_s0[var_s3].unk2); break; @@ -1460,6 +1490,7 @@ void func_80107B78(PlayState* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 (temp_ft0_2 + 8) << 2, G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); } } + CLOSE_DISPS(arg0->state.gfxCtx); } } @@ -1480,6 +1511,7 @@ void func_80108124(PlayState* play, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 if (transitionActors->count != 0) { OPEN_DISPS(play->state.gfxCtx); + gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); gDPLoadTextureBlock_4b(POLY_OPA_DISP++, &D_801BEB38, G_IM_FMT_I, 16, 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); @@ -1488,7 +1520,7 @@ void func_80108124(PlayState* play, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 if ((ABS_ALT(D_801F53B0[i].id) != ACTOR_EN_HOLL) && (func_80105328(D_801F53B0[i].params) == 0)) { roomA = D_801F53B0[i].sides[0].room; roomB = D_801F53B0[i].sides[1].room; - if (CHECK_DUNGEON_ITEM(2, gSaveContext.mapIndex) || (roomA < 0) || + if (CHECK_DUNGEON_ITEM(DUNGEON_MAP, gSaveContext.mapIndex) || (roomA < 0) || (gSaveContext.save.saveInfo .permanentSceneFlags[Play_GetOriginalSceneId(func_80106D08(play->sceneId))] .rooms & @@ -1508,6 +1540,7 @@ void func_80108124(PlayState* play, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 } } } + CLOSE_DISPS(play->state.gfxCtx); } } @@ -1523,13 +1556,14 @@ void func_80108558(PlayState* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 sp30 = &D_801BEC24; OPEN_DISPS(arg0->state.gfxCtx); + gDPPipeSync(POLY_OPA_DISP++); gDPSetTextureLUT(POLY_OPA_DISP++, G_TT_NONE); gDPSetRenderMode(POLY_OPA_DISP++, G_RM_AA_DEC_LINE, G_RM_NOOP2); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, arg0->pauseCtx.alpha); gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); gDPPipeSync(POLY_OPA_DISP++); - if (CHECK_DUNGEON_ITEM(1, arg6)) { + if (CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, arg6)) { gDPLoadTextureBlock_TEST(POLY_OPA_DISP++, &D_02002460, G_IM_FMT_IA, D_801BEAE0[1], D_801BEAF0[1], D_801BEB00[1], D_801BEB10[1], D_801BEB20[1], D_801BEAD0[1], 8, 8, 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); @@ -1547,6 +1581,7 @@ void func_80108558(PlayState* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, f32 } } } + CLOSE_DISPS(arg0->state.gfxCtx); } #else @@ -1567,13 +1602,13 @@ TexturePtr func_80108A10(s32 arg0) { s32 func_80108A64(PlayState* play) { PauseContext* pauseCtx = &play->pauseCtx; - if (pauseCtx->pageIndex != 1) { + if (pauseCtx->pageIndex != PAUSE_MAP) { return 1; } - if ((pauseCtx->state == 7) || ((pauseCtx->state >= 8) && (pauseCtx->state < 0x13))) { + if ((pauseCtx->state == PAUSE_STATE_SAVEPROMPT) || IS_PAUSE_STATE_GAMEOVER) { return 1; } - if ((pauseCtx->state != 6) || (pauseCtx->mainState != 0)) { + if ((pauseCtx->state != PAUSE_STATE_MAIN) || (pauseCtx->mainState != PAUSE_MAIN_STATE_IDLE)) { return 1; } if (pauseCtx->alpha == 0) { @@ -1582,7 +1617,6 @@ s32 func_80108A64(PlayState* play) { return 0; } -// https://decomp.me/scratch/4gO7Z void func_80108AF8(PlayState* play) { PauseContext* pauseCtx = &play->pauseCtx; s32 temp_a0_2; @@ -1594,25 +1628,32 @@ void func_80108AF8(PlayState* play) { s32 spB4 = 0; if ((D_801BEBB8.minimapList != NULL) && (D_801BEC1C != 0) && (func_80108A64(play) == 0)) { - if (Map_IsInBossArea(play) != 0) { + if (Map_IsInBossArea(play)) { switch (play->sceneId) { case SCENE_MITURIN_BS: spB4 = 0; break; + case SCENE_HAKUGIN_BS: spB4 = 1; break; + case SCENE_SEA_BS: spB4 = 2; break; + case SCENE_INISIE_BS: spB4 = 3; break; + + default: + break; } } else { spB4 = gSaveContext.mapIndex; } OPEN_DISPS(play->state.gfxCtx); + Gfx_SetupDL39_Opa(play->state.gfxCtx); gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 200, pauseCtx->alpha); @@ -1621,7 +1662,7 @@ void func_80108AF8(PlayState* play) { if ((gSaveContext.save.saveInfo.permanentSceneFlags[Play_GetOriginalSceneId(func_80106D08(play->sceneId))] .unk_14 & gBitFlags[4 - var_s1]) || - CHECK_DUNGEON_ITEM2(2, spB4)) { + CHECK_DUNGEON_ITEM2(DUNGEON_MAP, spB4)) { gDPLoadTextureBlock(POLY_OPA_DISP++, func_80108A10(D_801BEBB8.unk44 + var_s1), G_IM_FMT_IA, G_IM_SIZ_8b, 24, 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); @@ -1651,6 +1692,7 @@ void func_80108AF8(PlayState* play) { G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); } Gfx_SetupDL42_Opa(play->state.gfxCtx); + CLOSE_DISPS(play->state.gfxCtx); } } @@ -1702,20 +1744,26 @@ void func_801091F0(PlayState* play) { sp40 = 0; sp3C = 0; if (func_80108A64(play) == 0) { - if (Map_IsInBossArea(play) != 0) { + if (Map_IsInBossArea(play)) { switch (play->sceneId) { case SCENE_MITURIN_BS: sp44 = 0; break; + case SCENE_HAKUGIN_BS: sp44 = 1; break; + case SCENE_SEA_BS: sp44 = 2; break; + case SCENE_INISIE_BS: sp44 = 3; break; + + default: + break; } } else { sp44 = gSaveContext.mapIndex; @@ -1738,7 +1786,7 @@ void func_801091F0(PlayState* play) { func_80106D5C(play, sp40 + 0x90, sp3C + 0x55, 0x78, 0x64, 1.0f / var_t2, sp44); func_80108124(play, sp40 + 0x90, sp3C + 0x55, 0x78, 0x64, 1.0f / var_t2, sp44); func_80108558(play, sp40 + 0x90, sp3C + 0x55, 0x78, 0x64, 1.0f / var_t2, sp44); - if (CHECK_DUNGEON_ITEM(1, sp44)) { + if (CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, sp44)) { func_80107B78(play, sp40 + 0x90, sp3C + 0x55, 0x78, 0x64, 1.0f / var_t2); } } |
