Match StatusScreenSetBeamsVisibility and StatusScreenSetSuitsVisibility

This commit is contained in:
y.demaisonregne 2023-07-30 19:01:10 +02:00
parent 470053179c
commit 2fbc80e296
2 changed files with 37 additions and 16 deletions

View File

@ -2,7 +2,7 @@
This is a work in progress decompilation of Metroid - Zero Mission.
2668/2721 functions decompiled (98.05%, 53 left)
2670/2721 functions decompiled (98.13%, 51 left)
0x35b9ac/0x76b014 bytes of data not in blobs (45.27%, 0x40f668 left)

View File

@ -463,10 +463,13 @@ void StatusScreenDrawSingleTankAmount(u8 group, u16 amout, u8 palette, u8 isMax)
}
}
/**
* @brief 70534 | 170 | Sets the status screen beams visibility
*
* @param pTilemap Status screen tilemap pointer
*/
void StatusScreenSetBeamsVisibility(u16* pTilemap)
{
// https://decomp.me/scratch/TvDyb
s32 i;
s32 j;
s32 row;
@ -476,11 +479,19 @@ void StatusScreenSetBeamsVisibility(u16* pTilemap)
u32 dstPosition;
s32 tmp;
u8* pVisibility;
u8* ptr;
s32 size;
pVisibility = PAUSE_SCREEN_DATA.statusScreenData.beamActivation;
for (i = 0; i < sPauseScreen_40d0fe[ABILITY_GROUP_BEAMS]; i++)
pVisibility[i] = 0;
i = 0;
size = sPauseScreen_40d0fe[ABILITY_GROUP_BEAMS];
if (size)
{
do {
pVisibility[i++] = 0;
} while (i < size);
}
for (i = 0, row = 0; i < sPauseScreen_40d0fe[ABILITY_GROUP_BEAMS]; i++)
{
@ -505,14 +516,14 @@ void StatusScreenSetBeamsVisibility(u16* pTilemap)
{
pVisibility[row] = sStatusScreenFlagsOrderPointers[ABILITY_GROUP_BEAMS][i];
for (j = 0; j <= sStatusScreenUnknownItemsData[ABILITY_GROUP_BEAMS][3] - sStatusScreenGroupsData[ABILITY_GROUP_BEAMS][2]; j++)
for (j = 0; j <= sStatusScreenGroupsData[ABILITY_GROUP_BEAMS][3] - sStatusScreenGroupsData[ABILITY_GROUP_BEAMS][2]; j++)
{
ptr = &gEquipment.beamBombsActivation;
pTilemap[dstPosition + j] = pTilemap[srcPosition + j];
}
StatusScreenUpdateRow(ABILITY_GROUP_BEAMS, row + 1,
*(u8*)0x300153d & pVisibility[row], FALSE);
//gEquipment.beamBombsActivation & pVisibility[row], FALSE);
*ptr & pVisibility[row], FALSE);
row++;
}
}
@ -532,17 +543,20 @@ void StatusScreenSetBeamsVisibility(u16* pTilemap)
srcPosition = sStatusScreenUnknownItemsData[ABILITY_GROUP_BEAMS][1] * HALF_BLOCK_SIZE +
sStatusScreenUnknownItemsData[ABILITY_GROUP_BEAMS][2];
for (j = 0; j <= sStatusScreenUnknownItemsData[ABILITY_GROUP_BEAMS][3] - sStatusScreenGroupsData[ABILITY_GROUP_BEAMS][2]; j++)
for (j = 0; j <= sStatusScreenGroupsData[ABILITY_GROUP_BEAMS][3] - sStatusScreenGroupsData[ABILITY_GROUP_BEAMS][2]; j++)
{
pTilemap[dstPosition + j] = pTilemap[srcPosition + j];
}
}
}
/**
* @brief 706a4 | 16c | Sets the status screen suits visibility
*
* @param pTilemap Status screen tilemap pointer
*/
void StatusScreenSetSuitsVisibility(u16* pTilemap)
{
// https://decomp.me/scratch/Z22vi
s32 i;
s32 j;
s32 row;
@ -552,11 +566,18 @@ void StatusScreenSetSuitsVisibility(u16* pTilemap)
u32 dstPosition;
s32 tmp;
u8* pVisibility;
s32 size;
pVisibility = PAUSE_SCREEN_DATA.statusScreenData.suitActivation;
for (i = 0; i < sPauseScreen_40d0fe[ABILITY_GROUP_SUITS]; i++)
pVisibility[i] = 0;
i = 0;
size = sPauseScreen_40d0fe[ABILITY_GROUP_SUITS];
if (size)
{
do {
pVisibility[i++] = 0;
} while (i < size);
}
for (i = 0, row = 0; i < sPauseScreen_40d0fe[ABILITY_GROUP_SUITS]; i++)
{
@ -579,7 +600,7 @@ void StatusScreenSetSuitsVisibility(u16* pTilemap)
{
pVisibility[row] = sStatusScreenFlagsOrderPointers[ABILITY_GROUP_SUITS][i];
for (j = 0; j <= sStatusScreenUnknownItemsData[ABILITY_GROUP_SUITS][3] - sStatusScreenGroupsData[ABILITY_GROUP_SUITS][2]; j++)
for (j = 0; j <= sStatusScreenGroupsData[ABILITY_GROUP_SUITS][3] - sStatusScreenGroupsData[ABILITY_GROUP_SUITS][2]; j++)
{
pTilemap[dstPosition + j] = pTilemap[srcPosition + j];
}
@ -606,7 +627,7 @@ void StatusScreenSetSuitsVisibility(u16* pTilemap)
srcPosition = sStatusScreenUnknownItemsData[ABILITY_GROUP_SUITS][1] * HALF_BLOCK_SIZE +
sStatusScreenUnknownItemsData[ABILITY_GROUP_SUITS][2];
for (j = 0; j <= sStatusScreenUnknownItemsData[ABILITY_GROUP_SUITS][3] - sStatusScreenGroupsData[ABILITY_GROUP_SUITS][2]; j++)
for (j = 0; j <= sStatusScreenGroupsData[ABILITY_GROUP_SUITS][3] - sStatusScreenGroupsData[ABILITY_GROUP_SUITS][2]; j++)
{
pTilemap[dstPosition + j] = pTilemap[srcPosition + j];
}