Defines pause screen functions, decompile process oam functions

This commit is contained in:
y.demaisonregne 2023-03-30 21:43:42 +02:00
parent e5f8dfcacb
commit 13812668ca
18 changed files with 1193 additions and 97 deletions

View File

@ -0,0 +1,46 @@
#ifndef PAUSE_SCREEN_MENU_H
#define PAUSE_SCREEN_MENU_H
#include "types.h"
#include "structs/menu.h"
#include "structs/cutscene.h"
u8 unk_68168(u16 param_1, u8 param_2, u8 param_3);
u8 unk_681c8(void);
u32 PauseScreenUpdateOrStartFading(u8 stage);
void PauseScreenCopyPalramToEwram_Unused(u8 param_1);
void PauseScreenCopyBackgroundPalette_Unused(void);
void PauseScreenUpdateMapArrows(void);
void PauseScreenUpdateBossIcons(void);
void PauseScreenDrawInfo(void);
u8 unk_68a58(u8 param_1);
u8 PauseScreenDrawStatusScreenSamus(u8 param_1);
void PauseScreenUpdateWireframeSamus(u8 param_1);
void unk_68ec0(void);
void PauseScreenUpdateWorldMapHighlight(u8 area);
void PauseScreenUpdateWorldMap(u8 onWorldMap);
void PauseScreenLoadAreaNamesAndIcons(void);
void PauseScreenProcessOam(void);
void ProcessMenuOam(u8 length, struct MenuOamData* pOam, const struct OamArray* pOamData);
void ProcessComplexMenuOam(u8 length, struct MenuOamData* pOam, const struct OamArray* pOamData);
void ProcessCutsceneOam(u8 length, struct CutsceneOamData* pOam, const struct OamArray* pOamData);
u32 PauseScreenSubroutine(void);
void PauseScreenVBlank(void);
void PauseScreenVBlank_Empty(void);
void PauseScreenInit(void);
void PauseScreenDetermineMapsViewable(void);
void PauseScreenUpdateBottomVisorOverlay(u8 param_1, u8 param_2);
void PauseScreenGetMinimapData(u8 area, u16* dst);
u32 PauseScreenCallCurrentSubroutine(void);
void PauseScreenMoveDebugCursor(u8 allowOverflow);
u32 unk_6b66c(u16* param_1, u16 param_2);
u32 unk_6b6c4(u16* param_1, u16 param_2);
void PauseScreenUpdateTopVisorOverlay(u8 oamId);
i32 PauseScreenSuitChangingStart(void);
i32 PauseScreenStatusScreenInit(void);
i32 PauseScreenQuitStatusScreen(void);
i32 PauseScreenEasySleepInit(void);
i32 PauseScreenQuitEasySleep(void);
void CheckForMaintainedInput(void);
#endif /* PAUSE_SCREEN_MENU_H */

View File

@ -1,5 +1,5 @@
#ifndef STATUE_SCREEN_MENU_H
#define STATUE_SCREEN_MENU_H
#ifndef STATUS_SCREEN_MENU_H
#define STATUS_SCREEN_MENU_H
#include "types.h"
@ -32,4 +32,4 @@ u32 StatusScreenToggleItem(u8 statusSlot, u8 action);
void StatusScreenMoveCursor(void);
u32 StatusScreenGetDestinationSlot(i8 offset, u8 previousSlot);
#endif /* STATUE_SCREEN_MENU_H */
#endif /* STATUS_SCREEN_MENU_H */

View File

@ -125,10 +125,10 @@ struct CutsceneOamData {
u8 currentAnimationFrame;
u8 oamID;
u16 priority:2;
u16 unk_B_4:2;
u16 objMode:2;
u16 ended:1;
u16 notDrawn:1;
u16 idChanged:2;
u16 exists:2;
u8 boundBackground:4;
u8 rotationScaling:1;
u8 actions;

View File

@ -16,13 +16,14 @@ struct MenuOamData {
u8 oamID;
// B
u16 priority:2;
u16 unk_B_4:2;
u16 objMode:2;
u16 ended:1;
u16 notDrawn:1;
u16 idChanged:2;
u16 exists:2;
// C
u8 boundBackground:4;
u8 rotationScaling:1;
i16 unk_E;
};

View File

@ -353,7 +353,7 @@ u8 EnterTourianInit(void)
CutsceneSetBackgroundPosition(CUTSCENE_BG_EDIT_HOFS, sEnterTourianPageData[1].bg, 0x800);
CUTSCENE_DATA.oam[1].oamID = 6;
CUTSCENE_DATA.oam[1].idChanged = TRUE;
CUTSCENE_DATA.oam[1].exists = TRUE;
CUTSCENE_DATA.oam[1].boundBackground = 3;
CUTSCENE_DATA.oam[1].priority = sEnterTourianPageData[0].priority;
CUTSCENE_DATA.oam[1].actions = 1;
@ -370,7 +370,7 @@ u8 EnterTourianInit(void)
CUTSCENE_DATA.oam[0].oamID = 2;
CUTSCENE_DATA.oam[0].idChanged = TRUE;
CUTSCENE_DATA.oam[0].exists = TRUE;
CUTSCENE_DATA.oam[0].boundBackground = 3;
CUTSCENE_DATA.oam[0].priority = sEnterTourianPageData[0].priority;

View File

@ -199,10 +199,10 @@ void GettingFullyPoweredSuitUpdateSparkleAroundRing(struct CutsceneOamData* pOam
pOam->actions = 2;
}
}
else if (!pOam->idChanged)
else if (!pOam->exists)
pOam->actions = 0;
if (pOam->idChanged)
if (pOam->exists)
{
pOam->xPosition = CUTSCENE_DATA.oam[6].xPosition + sGettingFullyPoweredSuitRingSparklesSpawnPositions[sparkleId][0];
pOam->yPosition = CUTSCENE_DATA.oam[6].yPosition + sGettingFullyPoweredSuitRingSparklesSpawnPositions[sparkleId][1];
@ -294,7 +294,7 @@ u8 GettingFullyPoweredSuitInit(void)
CUTSCENE_DATA.oam[6].xPosition = BLOCK_SIZE * 8 - QUARTER_BLOCK_SIZE;
CUTSCENE_DATA.oam[6].yPosition = BLOCK_SIZE * 22;
CUTSCENE_DATA.oam[6].priority = sGettingFullyPoweredSuitPageData[0].priority;
CUTSCENE_DATA.oam[6].unk_B_4 = 0;
CUTSCENE_DATA.oam[6].objMode = 0;
CUTSCENE_DATA.oam[6].boundBackground = 2;
UpdateCutsceneOamDataID(&CUTSCENE_DATA.oam[6], GETTING_FULLY_POWERED_SUIT_OAM_ID_RING_BOTTOM);

View File

@ -127,7 +127,7 @@ struct CutsceneOamData* KraidRisingUpdatePuff(struct CutsceneOamData* pOam, u8 p
u8* data;
i32 offset;
if (!pOam->idChanged)
if (!pOam->exists)
{
if (pOam->timer != 0)
pOam->timer--;
@ -157,7 +157,7 @@ struct CutsceneOamData* KraidRisingUpdateDebris(struct CutsceneOamData* pOam, u8
pOam->timer--;
else
{
if (!pOam->idChanged)
if (!pOam->exists)
{
// Set spawn X (base + [0-0x3F])
pOam->xPosition = sKraidRisingDebrisSpawnXPosition[debrisID] + (sRandomNumberTable[~((gFrameCounter8Bit + debrisID) & 0xFF)] & 0x3F);
@ -182,7 +182,7 @@ struct CutsceneOamData* KraidRisingUpdateDebris(struct CutsceneOamData* pOam, u8
pOam->yPosition += pOam->unk_10;
if (pOam->yPosition > 0x2DF)
{
pOam->idChanged = FALSE;
pOam->exists = FALSE;
// Set random timer
pOam->timer = (sRandomNumberTable[(gFrameCounter8Bit + debrisID) & 0xFF] & 0xF) + 1;
}

View File

@ -32,7 +32,7 @@ u8 MechaRidleySeesSamusEyeOpen(void)
break;
case 2:
if (!CUTSCENE_DATA.oam[0].idChanged)
if (!CUTSCENE_DATA.oam[0].exists)
{
CUTSCENE_DATA.timeInfo.timer = 0;
CUTSCENE_DATA.timeInfo.subStage++;

View File

@ -405,7 +405,7 @@ void MotherBrainCloseUpUpdateEye(u8 lookingAtSamus)
pOam->priority = sMotherBrainCloseUpPageData[2].priority;
pOam->boundBackground = 3;
pOam->oamID = 0;
pOam->idChanged = TRUE;
pOam->exists = TRUE;
}
else
{
@ -413,7 +413,7 @@ void MotherBrainCloseUpUpdateEye(u8 lookingAtSamus)
pOam->yPosition = BLOCK_SIZE * 5 + 4;
pOam->priority = sMotherBrainCloseUpPageData[4].priority;
pOam->boundBackground = 1;
pOam->unk_B_4 = 1;
pOam->objMode = 1;
UpdateCutsceneOamDataID(&CUTSCENE_DATA.oam[1], 5);
pOam[1].xPosition = BLOCK_SIZE * 7 + HALF_BLOCK_SIZE;
@ -422,7 +422,7 @@ void MotherBrainCloseUpUpdateEye(u8 lookingAtSamus)
pOam[1].priority = sMotherBrainCloseUpPageData[4].priority;
pOam[1].boundBackground = 1;
pOam[1].unk_B_4 = 1;
pOam[1].objMode = 1;
}
}
@ -437,7 +437,7 @@ void MotherBrainCloseUpUpdateBubble(struct CutsceneOamData* pOam)
yPosition -= gBG3VOFS_NonGameplay;
if (yPosition < -0x90)
pOam->idChanged = FALSE;
pOam->exists = FALSE;
else if (yPosition > 0x300)
{
if (!(pOam->notDrawn))
@ -459,7 +459,7 @@ u8 MotherBrainCloseUpInitBubbles(u8 packId)
for (i = 0; i < 6; i++)
{
if (CUTSCENE_DATA.oam[i].idChanged)
if (CUTSCENE_DATA.oam[i].exists)
continue;
CUTSCENE_DATA.oam[i].xPosition = sMotherBrainCloseUpBubblesSpawnPositions[packId][0];

View File

@ -404,8 +404,8 @@ u8 RidleyInSpaceViewOfShip(void)
case 4:
if (CUTSCENE_DATA.timeInfo.timer > 60 * 2)
{
CUTSCENE_DATA.oam[0].unk_B_4 = TRUE;
CUTSCENE_DATA.oam[1].unk_B_4 = TRUE;
CUTSCENE_DATA.oam[0].objMode = TRUE;
CUTSCENE_DATA.oam[1].objMode = TRUE;
CutsceneStartBackgroundEffect(BLDCNT_ALPHA_BLENDING_EFFECT | BLDCNT_BG3_SECOND_TARGET_PIXEL |
BLDCNT_OBJ_SECOND_TARGET_PIXEL | BLDCNT_BACKDROP_SECOND_TARGET_PIXEL, 14, 0, 32, 1);
@ -624,7 +624,7 @@ void RidleyInSpaceViewOfShipParticles(void)
{
for (i = 3; i < 29; i++)
{
if (CUTSCENE_DATA.oam[i].idChanged)
if (CUTSCENE_DATA.oam[i].exists)
continue;
CUTSCENE_DATA.oam[i].actions = 0;
@ -647,14 +647,14 @@ void RidleyInSpaceViewOfShipParticles(void)
for (i = 3; i < 29; i++)
{
if (!CUTSCENE_DATA.oam[i].idChanged)
if (!CUTSCENE_DATA.oam[i].exists)
continue;
oamId = RidleyInSpaceViewOfShipUpdateParticle(&CUTSCENE_DATA.oam[i]);
if (oamId != 0)
UpdateCutsceneOamDataID(&CUTSCENE_DATA.oam[i], oamId);
if (CUTSCENE_DATA.oam[i].idChanged == 0)
if (CUTSCENE_DATA.oam[i].exists == 0)
UpdateCutsceneOamDataID(&CUTSCENE_DATA.oam[i], 0);
}
}
@ -678,7 +678,7 @@ u32 RidleyInSpaceViewOfShipUpdateParticle(struct CutsceneOamData* pOam)
if (pOam->unk_E | pOam->unk_10)
pOam->actions = 1;
else
pOam->idChanged = 0;
pOam->exists = 0;
}
else if (pOam->timer < 100)
{
@ -692,14 +692,14 @@ u32 RidleyInSpaceViewOfShipUpdateParticle(struct CutsceneOamData* pOam)
pOam->yPosition = pOam->unk_10 / divisor + 0x140;
if ((u16)(xPosition + 0xC0) > 0x400)
pOam->idChanged = 0;
pOam->exists = 0;
else if (pOam->yPosition > 0x2A0)
pOam->idChanged = 0;
pOam->exists = 0;
else if (pOam->yPosition < -0x20)
pOam->idChanged = 0;
pOam->exists = 0;
}
else
pOam->idChanged = 0;
pOam->exists = 0;
pOam->timer++;
return oamId;
@ -718,7 +718,7 @@ void RidleyInSpaceShipLeavingParticles(void)
{
for (i = 3; i < 15; i++)
{
if (CUTSCENE_DATA.oam[i].idChanged)
if (CUTSCENE_DATA.oam[i].exists)
continue;
CUTSCENE_DATA.oam[i].actions = 0;
@ -745,12 +745,12 @@ void RidleyInSpaceShipLeavingParticles(void)
for (i = 3; i < 15; i++)
{
if (!CUTSCENE_DATA.oam[i].idChanged)
if (!CUTSCENE_DATA.oam[i].exists)
continue;
RidleyInSpaceViewOfShipUpdateParticle(&CUTSCENE_DATA.oam[i]);
if (CUTSCENE_DATA.oam[i].idChanged == 0)
if (CUTSCENE_DATA.oam[i].exists == 0)
UpdateCutsceneOamDataID(&CUTSCENE_DATA.oam[i], 0);
}
}
@ -772,6 +772,6 @@ struct CutsceneOamData* RidleyInSpaceShipLeavingUpdateParticle(struct CutsceneOa
{
pOam->xPosition += pOam->unk_E;
if (pOam->xPosition > 0x3E0)
pOam->idChanged = 0;
pOam->exists = 0;
}
}

View File

@ -41,7 +41,7 @@ u8 RidleySpawnRidleyFlyingIn(void)
CUTSCENE_DATA.oam[0].rotationScaling = TRUE;
CUTSCENE_DATA.oam[0].notDrawn = FALSE;
CUTSCENE_DATA.oam[0].priority = 0;
CUTSCENE_DATA.oam[0].unk_B_4 = FALSE;
CUTSCENE_DATA.oam[0].objMode = FALSE;
gCurrentOamScaling = 0x120;
UpdateCutsceneOamDataID(&CUTSCENE_DATA.oam[0], RIDLEY_SPAWN_OAM_ID_RIDLEY_FLYING);
@ -145,7 +145,7 @@ u8 RidleySpawnHelmetReflection(void)
CUTSCENE_DATA.oam[0].priority = sRidleySpawnPageData[2].priority;
CUTSCENE_DATA.oam[0].rotationScaling = TRUE;
CUTSCENE_DATA.oam[0].unk_B_4 = TRUE;
CUTSCENE_DATA.oam[0].objMode = TRUE;
gCurrentOamScaling = 0x40;
UpdateCutsceneOamDataID(&CUTSCENE_DATA.oam[0], RIDLEY_SPAWN_OAM_ID_RIDLEY_FLYING_REFLECTION);
@ -264,7 +264,7 @@ u8 RidleySpawnInit(void)
CUTSCENE_DATA.oam[0].yPosition = sRidleySpawnRidleyPositions[2].y;
CUTSCENE_DATA.oam[0].priority = sRidleySpawnPageData[0].priority;
CUTSCENE_DATA.oam[0].rotationScaling = TRUE;
CUTSCENE_DATA.oam[0].unk_B_4 = TRUE;
CUTSCENE_DATA.oam[0].objMode = TRUE;
gCurrentOamScaling = 0x100;
UpdateCutsceneOamDataID(&CUTSCENE_DATA.oam[0], RIDLEY_SPAWN_OAM_ID_SAMUS);

View File

@ -152,13 +152,13 @@ u8 StatueOpeningInit(void)
CUTSCENE_DATA.oam[0].yPosition = BLOCK_SIZE * 7;
CUTSCENE_DATA.oam[0].priority = 0;
CUTSCENE_DATA.oam[0].boundBackground = 1;
CUTSCENE_DATA.oam[0].idChanged = 1;
CUTSCENE_DATA.oam[0].exists = 1;
CUTSCENE_DATA.oam[1].xPosition = BLOCK_SIZE * 8;
CUTSCENE_DATA.oam[1].yPosition = BLOCK_SIZE * 7;
CUTSCENE_DATA.oam[1].priority = 0;
CUTSCENE_DATA.oam[1].boundBackground = 1;
CUTSCENE_DATA.oam[1].idChanged = 1;
CUTSCENE_DATA.oam[1].exists = 1;
if (EventFunction(EVENT_ACTION_CHECKING, EVENT_KRAID_STATUE_OPENED))
oamId = STATUE_OPENING_OAM_ID_KRAID_OPENED;

View File

@ -165,10 +165,10 @@ const struct MenuOamData sTitleScreenTopSparkleBaseOam = {
.currentAnimationFrame = 0,
.oamID = TITLE_SCREEN_OAM_ID_SPARKLE_IDLE,
.priority = 0,
.unk_B_4 = 0,
.objMode = 0,
.ended = FALSE,
.notDrawn = FALSE,
.idChanged = TRUE,
.exists = TRUE,
.boundBackground = 0,
.unk_E = 0
};
@ -184,10 +184,10 @@ const struct MenuOamData sTitleScreenBottomSparkleBaseOam = {
.currentAnimationFrame = 0,
.oamID = TITLE_SCREEN_OAM_ID_SPARKLE_IDLE,
.priority = 0,
.unk_B_4 = 0,
.objMode = 0,
.ended = FALSE,
.notDrawn = FALSE,
.idChanged = TRUE,
.exists = TRUE,
.boundBackground = 0,
.unk_E = 0
};

View File

@ -183,10 +183,10 @@ void EraseSramApplyInput(void)
break;
}
ERASE_SRAM_DATA.oam[1].idChanged = TRUE << 1;
ERASE_SRAM_DATA.oam[2].idChanged = TRUE << 1;
ERASE_SRAM_DATA.oam[1].exists = TRUE << 1;
ERASE_SRAM_DATA.oam[2].exists = TRUE << 1;
ERASE_SRAM_DATA.oam[0].oamID = ERASE_SRAM_OAM_ID_CURSOR_IDLE;
ERASE_SRAM_DATA.oam[0].idChanged = TRUE << 1;
ERASE_SRAM_DATA.oam[0].exists = TRUE << 1;
}
/**
@ -280,7 +280,7 @@ u32 EraseSramCheckForInput(void)
if (exiting)
{
ERASE_SRAM_DATA.oam[0].oamID = ERASE_SRAM_OAM_ID_CURSOR_SELECTING;
ERASE_SRAM_DATA.oam[0].idChanged = TRUE << 1;
ERASE_SRAM_DATA.oam[0].exists = TRUE << 1;
sound = 1;
}
@ -392,15 +392,15 @@ void EraseSramResetOAM(void)
ERASE_SRAM_DATA.oam[2].oamID = sEraseSramQuestionWindowNoSelectedOamId;
ERASE_SRAM_DATA.oam[2].yPosition = sEraseSramMenuCursorPosition[0][1];
ERASE_SRAM_DATA.oam[2].xPosition = sEraseSramMenuCursorPosition[0][0];
ERASE_SRAM_DATA.oam[2].idChanged = TRUE;
ERASE_SRAM_DATA.oam[2].exists = TRUE;
ERASE_SRAM_DATA.oam[1].oamID = 0;
ERASE_SRAM_DATA.oam[1].yPosition = sEraseSramMenuCursorPosition[1][1];
ERASE_SRAM_DATA.oam[1].xPosition = sEraseSramMenuCursorPosition[1][0];
ERASE_SRAM_DATA.oam[1].idChanged = TRUE;
ERASE_SRAM_DATA.oam[1].exists = TRUE;
ERASE_SRAM_DATA.oam[0].oamID = ERASE_SRAM_OAM_ID_CURSOR_IDLE;
ERASE_SRAM_DATA.oam[0].idChanged = TRUE;
ERASE_SRAM_DATA.oam[0].exists = TRUE;
}
/**

View File

@ -120,13 +120,13 @@ void FileSelectResetOAM(void)
// Check enable metroid logos (completed save file indicator)
if (gSaveFilesInfo[0].completedGame)
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_LOGO].idChanged = TRUE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_LOGO].exists = TRUE;
if (gSaveFilesInfo[1].completedGame)
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_B_LOGO].idChanged = TRUE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_B_LOGO].exists = TRUE;
if (gSaveFilesInfo[2].completedGame)
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_C_LOGO].idChanged = TRUE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_C_LOGO].exists = TRUE;
if (gSaveFilesInfo[0].corruptionFlag)
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_LOGO].notDrawn = TRUE;
@ -220,32 +220,32 @@ void FileSelectUpdateCursor(u8 cursorPose, u8 position)
if (position != FILE_SELECT_CURSOR_POSITION_FILE_A)
{
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_MARKER].unk_B_4 = 1;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_LOGO].unk_B_4 = 1;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_MARKER].objMode = 1;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_LOGO].objMode = 1;
}
if (position != FILE_SELECT_CURSOR_POSITION_FILE_B)
{
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_B_MARKER].unk_B_4 = 1;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_B_LOGO].unk_B_4 = 1;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_B_MARKER].objMode = 1;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_B_LOGO].objMode = 1;
}
if (position != FILE_SELECT_CURSOR_POSITION_FILE_C)
{
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_C_MARKER].unk_B_4 = 1;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_C_LOGO].unk_B_4 = 1;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_C_MARKER].objMode = 1;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_C_LOGO].objMode = 1;
}
break;
case CURSOR_POSE_DESELECTING_FILE:
UpdateMenuOamDataID(&FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_CURSOR], ++oamId);
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_MARKER].unk_B_4 = 0;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_B_MARKER].unk_B_4 = 0;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_C_MARKER].unk_B_4 = 0;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_LOGO].unk_B_4 = 0;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_B_LOGO].unk_B_4 = 0;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_C_LOGO].unk_B_4 = 0;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_MARKER].objMode = 0;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_B_MARKER].objMode = 0;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_C_MARKER].objMode = 0;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_LOGO].objMode = 0;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_B_LOGO].objMode = 0;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_C_LOGO].objMode = 0;
break;
case CURSOR_POSE_STARTING_GAME:
@ -313,7 +313,7 @@ void FileSelectUpdateCopyCursor(u8 cursorPose, u8 fileNumber)
case CURSOR_COPY_POSE_COPIED:
// Kill copy cursor OAM
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_SUB_CURSOR].idChanged = FALSE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_SUB_CURSOR].exists = FALSE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_SUB_CURSOR].oamID = 0;
// Reset every file marker to non-selected
@ -397,7 +397,7 @@ void FileSelectUpdateCopyArrow(u8 arrowPose, u8 dstFileNumber)
case ARROW_COPY_POSE_KILL:
// Kill arrow OAM
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_COPY_ARROW].idChanged = FALSE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_COPY_ARROW].exists = FALSE;
// Reset every file marker
if (dstFileNumber == FILE_SELECT_CURSOR_POSITION_FILE_A)
@ -481,7 +481,7 @@ void FileSelectUpdateEraseCursor(u8 cursorPose, u8 fileNumber)
case CURSOR_ERASE_POSE_ERASED:
// Kill erase cursor OAM
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_SUB_CURSOR].idChanged = FALSE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_SUB_CURSOR].exists = FALSE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_SUB_CURSOR].oamID = 0;
// Reset every file marker to non-selected
@ -933,7 +933,7 @@ u32 FileSelectCopyFileSubroutine(void)
FileSelectDisplaySaveFileTimer(FILE_SELECT_DATA.currentFile);
FileSelectDisplaySaveFileMiscInfo(&gSaveFilesInfo[FILE_SELECT_DATA.currentFile], FILE_SELECT_DATA.currentFile);
FILE_SELECT_DATA.fileScreenOam[sFileSelect_760b79[FILE_SELECT_DATA.currentFile][1]].idChanged =
FILE_SELECT_DATA.fileScreenOam[sFileSelect_760b79[FILE_SELECT_DATA.currentFile][1]].exists =
gSaveFilesInfo[FILE_SELECT_DATA.currentFile].completedGame ? 2 : 0;
FileScreenSetEnabledMenuFlags();
@ -1129,7 +1129,7 @@ u32 FileSelectEraseFileSubroutine(void)
FileSelectDisplaySaveFileMiscInfo(&gSaveFilesInfo[FILE_SELECT_DATA.eraseFile], FILE_SELECT_DATA.eraseFile);
if (!gSaveFilesInfo[FILE_SELECT_DATA.eraseFile].completedGame)
FILE_SELECT_DATA.fileScreenOam[sFileSelect_760b79[FILE_SELECT_DATA.eraseFile][1]].idChanged = FALSE;
FILE_SELECT_DATA.fileScreenOam[sFileSelect_760b79[FILE_SELECT_DATA.eraseFile][1]].exists = FALSE;
FileScreenSetEnabledMenuFlags();
DMATransfer(3, sEwramPointer + 0x800, VRAM_BASE + 0xD800, 0x800, 16);
@ -1342,10 +1342,10 @@ void unk_79ecc(void)
FILE_SELECT_DATA.bg2cnt = FILE_SELECT_DATA.unk_20;
FILE_SELECT_DATA.dispcnt |= (DCNT_BG2 | DCNT_OBJ);
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_MARKER].unk_B_4 = 1;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_B_MARKER].unk_B_4 = 1;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_C_MARKER ].unk_B_4 = 1;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_CURSOR].unk_B_4 = 1;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_MARKER].objMode = 1;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_B_MARKER].objMode = 1;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_C_MARKER ].objMode = 1;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_CURSOR].objMode = 1;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_LOGO].notDrawn = TRUE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_B_LOGO].notDrawn = TRUE;
@ -1563,10 +1563,10 @@ u8 FileSelectOptionTransition(u8 leavingOptions)
BLDCNT_BG1_SECOND_TARGET_PIXEL | BLDCNT_BG2_SECOND_TARGET_PIXEL | BLDCNT_BG3_SECOND_TARGET_PIXEL |
BLDCNT_OBJ_SECOND_TARGET_PIXEL | BLDCNT_BACKDROP_SECOND_TARGET_PIXEL;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_MARKER].unk_B_4 = TRUE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_B_MARKER].unk_B_4 = TRUE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_C_MARKER].unk_B_4 = TRUE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_CURSOR].unk_B_4 = TRUE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_MARKER].objMode = TRUE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_B_MARKER].objMode = TRUE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_C_MARKER].objMode = TRUE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_CURSOR].objMode = TRUE;
FILE_SELECT_DATA.fileScreenOam[12].notDrawn = TRUE;
FILE_SELECT_DATA.fileScreenOam[13].notDrawn = TRUE;
@ -1795,10 +1795,10 @@ u8 FileSelectOptionTransition(u8 leavingOptions)
if (!fadeEnded)
break;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_MARKER].unk_B_4 = FALSE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_B_MARKER].unk_B_4 = FALSE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_C_MARKER].unk_B_4 = FALSE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_CURSOR].unk_B_4 = FALSE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_A_MARKER].objMode = FALSE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_B_MARKER].objMode = FALSE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_FILE_C_MARKER].objMode = FALSE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_CURSOR].objMode = FALSE;
FILE_SELECT_DATA.fileScreenOam[12].notDrawn = FALSE;
FILE_SELECT_DATA.fileScreenOam[13].notDrawn = FALSE;
@ -2313,7 +2313,7 @@ u8 OptionsSoundTestSubroutine(void)
case 7:
// Wait for panel to disappear
if (!FILE_SELECT_DATA.optionsOam[OPTIONS_OAM_SOUND_TEST_PANEL].idChanged)
if (!FILE_SELECT_DATA.optionsOam[OPTIONS_OAM_SOUND_TEST_PANEL].exists)
FILE_SELECT_DATA.subroutineStage++;
break;
@ -2605,8 +2605,8 @@ u8 OptionsTimeAttackRecordsSubroutine(void)
break;
case 11:
if (FILE_SELECT_DATA.optionsOam[OPTIONS_OAM_LARGE_PANEL].idChanged |
FILE_SELECT_DATA.optionsOam[OPTIONS_OAM_HUGE_PANEL].idChanged)
if (FILE_SELECT_DATA.optionsOam[OPTIONS_OAM_LARGE_PANEL].exists |
FILE_SELECT_DATA.optionsOam[OPTIONS_OAM_HUGE_PANEL].exists)
break;
FILE_SELECT_DATA.subroutineTimer++;
@ -4601,7 +4601,7 @@ void unk_7e3fc(u8 param_1, u8 param_2)
if (param_2 == 0x81)
{
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_SUB_CURSOR].oamID = 0;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_SUB_CURSOR].idChanged = FALSE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_SUB_CURSOR].exists = FALSE;
break;
}
@ -4627,7 +4627,7 @@ void unk_7e3fc(u8 param_1, u8 param_2)
if (param_2 == 0x81)
{
FILE_SELECT_DATA.fileScreenOam[3].oamID = 0;
FILE_SELECT_DATA.fileScreenOam[3].idChanged = FALSE;
FILE_SELECT_DATA.fileScreenOam[3].exists = FALSE;
break;
}
@ -4657,7 +4657,7 @@ void unk_7e3fc(u8 param_1, u8 param_2)
if (param_2 == 0x81)
{
FILE_SELECT_DATA.fileScreenOam[3].oamID = 0;
FILE_SELECT_DATA.fileScreenOam[3].idChanged = FALSE;
FILE_SELECT_DATA.fileScreenOam[3].exists = FALSE;
break;
}
@ -4690,7 +4690,7 @@ void unk_7e3fc(u8 param_1, u8 param_2)
if (param_2 == 0x81)
{
FILE_SELECT_DATA.fileScreenOam[3].oamID = 0;
FILE_SELECT_DATA.fileScreenOam[3].idChanged = FALSE;
FILE_SELECT_DATA.fileScreenOam[3].exists = FALSE;
break;
}
@ -4720,7 +4720,7 @@ void unk_7e3fc(u8 param_1, u8 param_2)
if (param_2 == 0x81)
{
FILE_SELECT_DATA.fileScreenOam[3].oamID = 0;
FILE_SELECT_DATA.fileScreenOam[3].idChanged = FALSE;
FILE_SELECT_DATA.fileScreenOam[3].exists = FALSE;
break;
}
@ -4752,7 +4752,7 @@ void unk_7e3fc(u8 param_1, u8 param_2)
if (param_2 == 0x81)
{
FILE_SELECT_DATA.fileScreenOam[3].oamID = 0;
FILE_SELECT_DATA.fileScreenOam[3].idChanged = FALSE;
FILE_SELECT_DATA.fileScreenOam[3].exists = FALSE;
break;
}
@ -5054,7 +5054,7 @@ u32 FileSelectUpdateTilemap(u8 request)
case 0x23:
FILE_SELECT_DATA.dispcnt &= ~DCNT_BG0;
FILE_SELECT_DATA.fileScreenOam[0].oamID = 0;
FILE_SELECT_DATA.fileScreenOam[0].idChanged = FALSE;
FILE_SELECT_DATA.fileScreenOam[0].exists = FALSE;
FILE_SELECT_DATA.fileScreenOam[FILE_SELECT_OAM_MEDIUM_PANEL].oamID = FILE_SELECT_OAM_ID_LARGE_PANEL + 1;
FileSelectPlayMenuSound(MENU_SOUND_REQUEST_CLOSE_SUB_MENU);
@ -5062,7 +5062,7 @@ u32 FileSelectUpdateTilemap(u8 request)
case 0x25:
FILE_SELECT_DATA.fileScreenOam[0].oamID = 0;
FILE_SELECT_DATA.fileScreenOam[0].idChanged = FALSE;
FILE_SELECT_DATA.fileScreenOam[0].exists = FALSE;
DMATransfer(3, sEwramPointer + 0x3300, VRAM_BASE + 0xE000, 0x300, 16);
break;

1049
src/menus/pause_screen.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -662,7 +662,7 @@ void TitleScreenProcessComets(struct TitleScrenOamTiming* pTiming, struct MenuOa
pOam->currentAnimationFrame = 0;
pOam->oamID = TITLE_SCREEN_OAM_ID_COMET_SPAWNING;
pOam->idChanged = TRUE;
pOam->exists = TRUE;
pOam->boundBackground = 3;
pOam->notDrawn = FALSE;

View File

@ -9,7 +9,7 @@
void UpdateMenuOamDataID(struct MenuOamData* pOam, u8 oamId)
{
pOam->oamID = oamId;
pOam->idChanged = oamId ? 2 : 0;
pOam->exists = oamId ? 2 : 0;
}
/**
@ -21,5 +21,5 @@ void UpdateMenuOamDataID(struct MenuOamData* pOam, u8 oamId)
void UpdateCutsceneOamDataID(struct CutsceneOamData* pOam, u8 oamId)
{
pOam->oamID = oamId;
pOam->idChanged = oamId ? 2 : 0;
pOam->exists = oamId ? 2 : 0;
}