Attempt Interface_DrawTimers

This commit is contained in:
engineer124
2022-04-17 18:17:36 +10:00
parent ea6746ff5e
commit 4282ab393e
3 changed files with 441 additions and 47 deletions
+2 -2
View File
@@ -2910,8 +2910,8 @@ void Main(void* arg);
u32 Padmgr_GetControllerBitmask(void);
// void func_80174F24(void);
// void func_80174F44(void);
// void func_80174F7C(void);
// void func_80174F9C(void);
void func_80174F7C(void (*arg0)(void*), void* arg1);
void func_80174F9C(void (*arg0)(void*), void* arg1);
// OSMesgQueue* Padmgr_GetEventCallback(void);
// void func_80175008(void);
void Padmgr_SetEventCallback(OSMesg pvParm1);
+436 -37
View File
@@ -193,29 +193,16 @@ s16 D_801BF8E0 = 0;
s16 D_801BF8E4 = 0;
s32 D_801BF8E8[] = {
0x00000000,
0x00000000,
};
OSTime D_801BF8E8 = 0;
OSTime D_801BF8F0 = 0;
s32 D_801BF8F8 = 0;
s32 D_801BF8FC[] = {
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
u64 D_801BF8F8[] = { // D_801BF8FC
0, 0, 0, 0, 0, 0, 0,
};
u64 D_801BF930[] = { // D_801BF934
0, 0, 0, 0, 0, 0, 0,
};
s32 D_801BF930 = 0;
s32 D_801BF934[] = {
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
};
s32 D_801BF968 = 0;
u8 D_801BF968 = false;
u8 D_801BF96C = false;
s16 D_801BF970 = 99;
@@ -5153,32 +5140,444 @@ void func_8011C898(u64 timer, s16* timerArr) {
timerArr[7] = time;
}
s32 D_801BFCE4[] = {
0x00000000,
};
s32 D_801BFCE8[] = {
0x00000000,
};
s32 D_801BFCEC[] = {
0x00000000,
};
s32 D_801BFCF0[] = {
0x00000000,
};
s32 D_801BFCF4[] = {
0x00000000,
};
s32 D_801BFCF8[] = {
0x00630000,
s32 D_801BFCE4 = 0;
u16 D_801BFCE8[] = {
0, 0, 0, 0, 0, 0, 0, 0
};
s16 D_801BFCF8 = 0x63;
s16 D_801BFCFC[] = {
0x10, 0x19, 0x22, 0x2A, 0x33, 0x3C, 0x44, 0x4D,
};
s16 D_801BFD0C[] = {
9, 9, 8, 9, 9, 8, 9, 9,
};
// Likely very non-equivalent, unsure about both control-flow logic and u64 logic
#ifdef NON_EQUIVALENT
void Interface_DrawTimers(GlobalContext* globalCtx) {
InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx;
MessageContext* msgCtx = &globalCtx->msgCtx;
Player* player = GET_PLAYER(globalCtx);
s16 i; // spC6
OSTime osTime;
OSTime spD0;
s16 phi_t0_2;
OPEN_DISPS(globalCtx->state.gfxCtx);
if ((globalCtx->pauseCtx.state == 0) && (globalCtx->pauseCtx.debugState == 0) &&
(globalCtx->gameOverCtx.state == 0) &&
((msgCtx->msgMode == 0) ||
((msgCtx->msgMode != 0) && (msgCtx->currentTextId >= 0x1BB2) &&
(msgCtx->currentTextId <= 0x1BB6))) &&
!(player->stateFlags1 & 0x200) && (globalCtx->sceneLoadFlag == 0) &&
(globalCtx->unk_18B4A == 0) && !Play_InCsMode(globalCtx)) {
if (D_801BF968) {
osTime = osGetTime();
for (i = 0; i < 7; i++) {
if (gSaveContext.unk_3DD0[i] == 4) {
gSaveContext.unk_3EC0[i] = gSaveContext.unk_3EC0[i] + osTime - D_801BF8E8;
}
}
D_801BF968 = false;
}
D_801BF970 = 99;
for (i = 0; i < 7; i++) {
if (gSaveContext.unk_3DD0[i] != 0) {
D_801BF970 = i;
if (D_801BF970 == 0) {
switch (gSaveContext.unk_3DD0[0]) {
case 13:
if (gSaveContext.timersNoTimeLimit[0] != 0) {
gSaveContext.unk_3E50[0] = osGetTime();
}
gSaveContext.unk_3DD0[0] = 14;
D_801BFA84 = 1;
func_80174F7C(func_8010E968, NULL);
break;
case 15:
osTime = (gSaveContext.unk_3DC8 - gSaveContext.unk_3DE0[0] - gSaveContext.unk_3EC0[0]) * 0x40;
osTime = osTime / 3000;
osTime = osTime / 10000;
gSaveContext.unk_3DE0[0] = osTime;
gSaveContext.unk_3DD0[0] = 16;
func_80174F9C(func_8010E968, NULL);
break;
case 14:
case 16:
break;
}
break;
} else {
switch (gSaveContext.unk_3DD0[D_801BF970]) {
case 1:
case 9:
D_801BFCE4 = 20;
if (interfaceCtx->unk_280 != 0) {
gSaveContext.timerX[D_801BF970] = 26;
if (interfaceCtx->magicAlpha != 255) {
gSaveContext.timerY[D_801BF970] = 22;
} else if (gSaveContext.save.playerData.healthCapacity > 0xA0) {
gSaveContext.timerY[D_801BF970] = 54;
} else {
gSaveContext.timerY[D_801BF970] = 46;
}
if ((interfaceCtx->unk_280 == 8) || (interfaceCtx->unk_280 == 30)) {
if (gSaveContext.unk_3DD0[D_801BF970] == 1) {
gSaveContext.unk_3DD0[D_801BF970] = 4;
} else {
gSaveContext.unk_3DD0[D_801BF970] = 11;
D_801BF8F8[D_801BF970] = osGetTime();
D_801BF930[D_801BF970] = 0;
}
gSaveContext.unk_3E50[D_801BF970] = osGetTime();
gSaveContext.unk_3E88[D_801BF970] = 0;
gSaveContext.unk_3EC0[D_801BF970] = 0;
}
} else {
gSaveContext.unk_3DD0[D_801BF970] = 2;
}
break;
case 2:
D_801BFCE4--;
if (D_801BFCE4 == 0) {
gSaveContext.unk_3DD0[D_801BF970] = 3;
D_801BFCE4 = 20;
}
break;
case 3:
if (D_801BF970 == 3) {
gSaveContext.timerX[D_801BF970] =
gSaveContext.timerX[D_801BF970] -
((gSaveContext.timerX[D_801BF970] - XREG(81)) / D_801BFCE4);
gSaveContext.timerY[D_801BF970] =
gSaveContext.timerY[D_801BF970] -
((gSaveContext.timerY[D_801BF970] - XREG(80)) / D_801BFCE4);
} else {
gSaveContext.timerX[D_801BF970] =
gSaveContext.timerX[D_801BF970] - ((gSaveContext.timerX[D_801BF970] - 26) / D_801BFCE4);
if (gSaveContext.save.playerData.healthCapacity > 0xA0) {
phi_t0_2 = (gSaveContext.timerY[D_801BF970] - 54) / D_801BFCE4;
} else {
phi_t0_2 = (gSaveContext.timerY[D_801BF970] - 46) / D_801BFCE4;
}
gSaveContext.timerY[D_801BF970] -= phi_t0_2;
}
D_801BFCE4--;
if (D_801BFCE4 == 0) {
D_801BFCE4 = 20;
if (D_801BF970 == 3) {
gSaveContext.timerY[D_801BF970] = XREG(80);
} else {
gSaveContext.timerX[D_801BF970] = 26;
if (gSaveContext.save.playerData.healthCapacity > 0xA0) {
gSaveContext.timerY[D_801BF970] = 54;
} else {
gSaveContext.timerY[D_801BF970] = 46;
}
}
gSaveContext.unk_3DD0[D_801BF970] = 4;
gSaveContext.unk_3E50[D_801BF970] = osGetTime();
gSaveContext.unk_3E88[D_801BF970] = 0;
gSaveContext.unk_3EC0[D_801BF970] = 0;
}
// fallthrough
case 4:
if ((gSaveContext.unk_3DD0[D_801BF970] == 4) && (D_801BF970 == 3)) {
gSaveContext.timerX[3] = XREG(81);
gSaveContext.timerY[3] = XREG(80);
}
break;
case 10:
D_801BF8F8[D_801BF970] = osGetTime();
D_801BF930[D_801BF970] = 0;
gSaveContext.unk_3DD0[D_801BF970] = 11;
// fallthrough
case 11:
D_801BF930[D_801BF970] = osGetTime() - D_801BF8F8[D_801BF970];
break;
case 12:
osTime = osGetTime();
gSaveContext.unk_3EC0[D_801BF970] = gSaveContext.unk_3EC0[D_801BF970] + osTime - D_801BF8F8[D_801BF970];
D_801BF930[D_801BF970] = 0;
gSaveContext.unk_3DD0[D_801BF970] = 4;
break;
case 8:
gSaveContext.unk_3DE0[D_801BF970] = (gSaveContext.save.playerData.health >> 1) * 100;
gSaveContext.timersNoTimeLimit[D_801BF970] = 0;
gSaveContext.unk_3E18[D_801BF970] = gSaveContext.unk_3DE0[D_801BF970];
gSaveContext.unk_3DD0[D_801BF970] = 3;
D_801BFCE4 = 20;
break;
case 5:
osTime = osGetTime();
osTime =
(osTime - gSaveContext.unk_3E50[D_801BF970] - gSaveContext.unk_3EC0[D_801BF970]) * 0x40;
osTime = osTime / 3000;
osTime = osTime / 10000;
gSaveContext.unk_3E88[D_801BF970] = osTime;
gSaveContext.unk_3DD0[D_801BF970] = 0;
if (D_801BF970 == 3) {
gSaveContext.save.day = 4;
if ((globalCtx->sceneNum == SCENE_OKUJOU) && (gSaveContext.sceneSetupIndex == 3)) {
globalCtx->nextEntranceIndex = 0x5410;
gSaveContext.nextCutsceneIndex = 0xFFF0;
globalCtx->sceneLoadFlag = 0x14;
} else {
func_8011C808(globalCtx);
}
} else if (gSaveContext.unk_3DD0[6] != 0) {
gSaveContext.timerX[6] = 115;
gSaveContext.timerY[6] = 80;
if (gSaveContext.unk_3DD0[6] < 0xB) {
gSaveContext.unk_3DD0[6] = 3;
}
}
break;
case 6:
osTime = osGetTime();
osTime =
(osTime - gSaveContext.unk_3E50[D_801BF970] - gSaveContext.unk_3EC0[D_801BF970]) * 0x40;
osTime = osTime / 3000;
osTime = osTime / 10000;
gSaveContext.unk_3E88[D_801BF970] = osTime;
if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400)) {
if (gSaveContext.unk_3E88[D_801BF970] >= 12000) {
gSaveContext.unk_3E88[D_801BF970] = 12000;
gSaveContext.unk_3DE0[D_801BF970] = 12000;
}
} else if ((gSaveContext.eventInf[3] & 0x10) && (globalCtx->sceneNum == SCENE_DEKUTES) &&
(gSaveContext.unk_3E88[D_801BF970] >= 12000)) {
gSaveContext.unk_3DE0[D_801BF970] = 12000;
}
gSaveContext.unk_3DD0[D_801BF970] = 7;
if (gSaveContext.unk_3DD0[6] != 0) {
gSaveContext.timerX[6] = 115;
gSaveContext.timerY[6] = 80;
if (gSaveContext.unk_3DD0[6] < 0xB) {
gSaveContext.unk_3DD0[6] = 3;
}
gSaveContext.unk_3DD0[D_801BF970] = 0;
}
break;
}
}
break;
}
}
if ((D_801BF970 != 99) && (gSaveContext.unk_3DD0[D_801BF970] != 0)) {
if (gSaveContext.timersNoTimeLimit[D_801BF970] == 0) {
D_801BFCE8[0] = D_801BFCE8[1] = D_801BFCE8[3] = D_801BFCE8[4] = D_801BFCE8[6] = 0;
D_801BFCE8[2] = D_801BFCE8[5] = 10;
if ((gSaveContext.unk_3DD0[D_801BF970] == 4) || (gSaveContext.unk_3DD0[D_801BF970] == 10) ||
(gSaveContext.unk_3DD0[D_801BF970] == 11) || (gSaveContext.unk_3DD0[D_801BF970] == 14)) {
osTime = osGetTime();
osTime = (osTime - gSaveContext.unk_3EC0[D_801BF970] - D_801BF930[D_801BF970]) * 64;
osTime = osTime / 3000;
osTime = osTime / 10000;
spD0 = osTime;
} else {
if (gSaveContext.unk_3DD0[D_801BF970] == 7) {
spD0 = gSaveContext.unk_3E88[D_801BF970];
} else {
spD0 = 0;
}
}
if (spD0 == 0) {
gSaveContext.unk_3DE0[D_801BF970] = gSaveContext.unk_3E18[D_801BF970] - spD0;
} else {
if (gSaveContext.unk_3E18[D_801BF970] >= spD0) {
if (gSaveContext.unk_3E18[D_801BF970] <= spD0) {
gSaveContext.unk_3DE0[D_801BF970] = 0;
} else {
gSaveContext.unk_3DE0[D_801BF970] = gSaveContext.unk_3E18[D_801BF970] - spD0;
}
} else {
gSaveContext.unk_3DE0[D_801BF970] = 0;
gSaveContext.unk_3DD0[D_801BF970] = 5;
if (D_801BF8E0 != 0) {
gSaveContext.save.playerData.health = 0;
globalCtx->damagePlayer(globalCtx, -2 - gSaveContext.save.playerData.health);
}
D_801BF8E0 = 0;
}
}
func_8011C898(gSaveContext.unk_3DE0[D_801BF970], D_801BFCE8);
if (gSaveContext.unk_3DE0[D_801BF970] > 6000) {
if ((D_801BFCF8 != D_801BFCE8[4]) && (D_801BFCE8[4] == 1)) {
play_sound(NA_SE_SY_MESSAGE_WOMAN);
D_801BFCF8 = D_801BFCE8[4];
}
} else if (gSaveContext.unk_3DE0[D_801BF970] > 1000) {
if ((D_801BFCF8 != D_801BFCE8[4]) && ((D_801BFCE8[4] & 1) != 0)) {
play_sound(NA_SE_SY_WARNING_COUNT_N);
D_801BFCF8 = D_801BFCE8[4];
}
} else if (D_801BFCF8 != D_801BFCE8[4]) {
play_sound(NA_SE_SY_WARNING_COUNT_E);
D_801BFCF8 = D_801BFCE8[4];
}
} else {
D_801BFCE8[4] = 0;
D_801BFCE8[0] = 0;
D_801BFCE8[5] = 10;
D_801BFCE8[2] = D_801BFCE8[5];
if ((gSaveContext.unk_3DD0[D_801BF970] == 4) || (gSaveContext.unk_3DD0[D_801BF970] == 14)) {
osTime = osGetTime();
osTime = (osTime - gSaveContext.unk_3E50[D_801BF970] - gSaveContext.unk_3EC0[D_801BF970] - D_801BF930[D_801BF970]) * 64;
osTime = osTime / 3000;
osTime = osTime / 10000;
spD0 = osTime;
} else if (gSaveContext.unk_3DD0[D_801BF970] == 7) {
spD0 = gSaveContext.unk_3E88[D_801BF970];
} else if (D_801BF970 == 0) {
spD0 = gSaveContext.unk_3DE0[D_801BF970];
} else {
spD0 = 0;
}
if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400)) {
if (spD0 >= 12000) {
spD0 = 12000;
}
} else if (((gSaveContext.eventInf[3] & 0x10) != 0) && (globalCtx->sceneNum == SCENE_DEKUTES) && (spD0 >= 12000)) {
spD0 = 12000;
}
gSaveContext.unk_3DE0[D_801BF970] = spD0;
func_8011C898(spD0, D_801BFCE8);
if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400)) {
if ((gSaveContext.unk_3DE0[D_801BF970] > 11000) && (D_801BFCF8 != D_801BFCE8[4])) {
play_sound(NA_SE_SY_WARNING_COUNT_E);
D_801BFCF8 = D_801BFCE8[4];
}
} else if (((gSaveContext.eventInf[3] & 0x10) != 0) && (globalCtx->sceneNum == SCENE_DEKUTES)) {
if ((gSaveContext.unk_3DE0[D_801BF970] >= (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY] - 900)) && (D_801BFCF8 != D_801BFCE8[4])) {
play_sound(NA_SE_SY_WARNING_COUNT_E);
D_801BFCF8 = D_801BFCE8[4];
}
}
}
gDPPipeSync(OVERLAY_DISP++);
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255);
gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 0);
OVERLAY_DISP = Gfx_TextureIA8(OVERLAY_DISP, gTimerClockIconTex, 0x10, 0x10, gSaveContext.timerX[D_801BF970],
gSaveContext.timerY[D_801BF970] + 2, 0x10, 0x10, 0x400, 0x400);
gDPPipeSync(OVERLAY_DISP++);
gDPSetCombineLERP(OVERLAY_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0,
0, PRIMITIVE, 0);
if (((D_801BF970 == 0) && (gSaveContext.unk_3DD0[0] == 14) && (D_801BF8E4 == 0) &&
(gSaveContext.unk_3DE0[0] < 300)) ||
(D_801BF8E4 == 2) || (gSaveContext.unk_3DD0[D_801BF970] < 13)) {
if (gSaveContext.unk_3DD0[D_801BF970] != 0) {
if (D_801BF970 == 2) {
if ((gSaveContext.unk_3DE0[D_801BF970] == 0) || (gSaveContext.unk_3DD0[D_801BF970] == 4)) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255);
} else {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255);
}
} else {
if ((gSaveContext.minigameState == 1) && (gSaveContext.save.entranceIndex == 0x6400)) {
if (gSaveContext.unk_3DE0[D_801BF970] > 11000) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255);
} else {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255);
}
} else if ((gSaveContext.eventInf[3] & 0x10) && (globalCtx->sceneNum == SCENE_DEKUTES)) {
if (gSaveContext.unk_3DE0[D_801BF970] >= gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY]) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255);
} else if (gSaveContext.unk_3DE0[D_801BF970] >= (gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY] - 900)) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 0, 255);
} else {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255);
}
} else if ((gSaveContext.unk_3DE0[D_801BF970] < 1000) && (gSaveContext.timersNoTimeLimit[D_801BF970] == 0) && (gSaveContext.unk_3DD0[D_801BF970] != 11)) {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 50, 0, 255);
} else {
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 255, 255, 255, 255);
}
}
}
if (D_801BF970 == 0) {
if (D_801BF8E4 == 2) {
for (i = 0; i < 4; i++) {
OVERLAY_DISP =
Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[3 + i])), 8,
0x10, D_801BFCFC[i] + gSaveContext.timerX[D_801BF970],
gSaveContext.timerY[D_801BF970], D_801BFD0C[i], 0xFA, 0x370, 0x370);
}
} else {
for (i = 0; i < 5; i++) {
OVERLAY_DISP =
Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[3 + i])), 8,
0x10, D_801BFCFC[i] + gSaveContext.timerX[D_801BF970],
gSaveContext.timerY[D_801BF970], D_801BFD0C[i], 0xFA, 0x370, 0x370);
}
}
} else {
for (i = 0; i < 8; i++) {
OVERLAY_DISP =
Gfx_TextureI8(OVERLAY_DISP, ((u8*)gCounterDigit0Tex + (8 * 16 * D_801BFCE8[i])), 8, 0x10,
D_801BFCFC[i] + gSaveContext.timerX[D_801BF970],
gSaveContext.timerY[D_801BF970], D_801BFD0C[i], 0xFA, 0x370, 0x370);
}
}
}
}
} else if (!D_801BF968) {
D_801BF8E8 = osGetTime();
D_801BF968 = true;
}
CLOSE_DISPS(globalCtx->state.gfxCtx);
}
#else
void Interface_DrawTimers(GlobalContext* globalCtx);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_parameter/Interface_DrawTimers.s")
#endif
#ifdef NON_MATCHING
void Interface_UpdateTimers(GlobalContext* globalCtx) {
+3 -8
View File
@@ -1080,10 +1080,8 @@
0x801BF8E8:("D_801BF8E8","UNK_TYPE4","",0x4),
0x801BF8F0:("D_801BF8F0","UNK_TYPE4","",0x4),
0x801BF8F4:("D_801BF8F4","UNK_TYPE4","",0x4),
0x801BF8F8:("D_801BF8F8","UNK_TYPE4","",0x4),
0x801BF8FC:("D_801BF8FC","UNK_TYPE4","",0x4),
0x801BF930:("D_801BF930","UNK_TYPE4","",0x4),
0x801BF934:("D_801BF934","UNK_TYPE4","",0x4),
0x801BF8F8:("D_801BF8F8","u64","[7]",0x38),
0x801BF930:("D_801BF930","u64","[7]",0x38),
0x801BF968:("D_801BF968","UNK_TYPE4","",0x4),
0x801BF96C:("D_801BF96C","UNK_TYPE4","",0x4),
0x801BF970:("D_801BF970","UNK_TYPE4","",0x4),
@@ -1166,10 +1164,7 @@
0x801BFCB8:("D_801BFCB8","UNK_TYPE1","",0x1),
0x801BFCC4:("D_801BFCC4","UNK_TYPE4","",0x4),
0x801BFCE4:("D_801BFCE4","UNK_TYPE4","",0x4),
0x801BFCE8:("D_801BFCE8","UNK_TYPE4","",0x4),
0x801BFCEC:("D_801BFCEC","UNK_TYPE4","",0x4),
0x801BFCF0:("D_801BFCF0","UNK_TYPE4","",0x4),
0x801BFCF4:("D_801BFCF4","UNK_TYPE4","",0x4),
0x801BFCE8:("D_801BFCE8","u16","[8]",0x10),
0x801BFCF8:("D_801BFCF8","UNK_TYPE4","",0x4),
0x801BFCFC:("D_801BFCFC","UNK_TYPE4","",0x4),
0x801BFD0C:("D_801BFD0C","UNK_TYPE4","",0x4),