diff options
| author | Synray <31429825+Synray@users.noreply.github.com> | 2021-09-21 09:29:43 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-21 18:29:43 +0200 |
| commit | 3b7ed8d94339702b23c78f140409dba06d5335c7 (patch) | |
| tree | 0af7cb3a22282fc741c77a5d85d052dd730440ea /src/code | |
| parent | b18227e6adade59babf84a5ae4b26374602c39fb (diff) | |
Match Environment_Update and EnMThunder_Draw (#982)
* Match Environment_Update
* Match EnMThunder_Draw
* Format
* Capitalize hex
Diffstat (limited to 'src/code')
| -rw-r--r-- | src/code/z_kankyo.c | 172 |
1 files changed, 79 insertions, 93 deletions
diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index 9681064f4..47fc8371f 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -835,15 +835,12 @@ void Environment_PrintDebugInfo(GlobalContext* globalCtx, Gfx** gfx) { GfxPrint_Destroy(&printer); } -#define TIME_ENTRY_1F_1 (D_8011FB48[envCtx->unk_1F] + i) -#define TIME_ENTRY_1F_2 (&D_8011FB48[envCtx->unk_1F][i]) -#define TIME_ENTRY_20 (&D_8011FB48[envCtx->unk_20][i]) +#define TIME_ENTRY_1F (D_8011FB48[envCtx->unk_1F][i]) +#define TIME_ENTRY_20 (D_8011FB48[envCtx->unk_20][i]) void func_80075B44(GlobalContext* globalCtx); void func_800766C4(GlobalContext* globalCtx); -#ifdef NON_MATCHING -// Reordering in light color and fog near and far blends void Environment_Update(GlobalContext* globalCtx, EnvironmentContext* envCtx, LightContext* lightCtx, PauseContext* pauseCtx, MessageContext* msgCtx, GameOverContext* gameOverCtx, GraphicsContext* gfxCtx) { @@ -851,7 +848,6 @@ void Environment_Update(GlobalContext* globalCtx, EnvironmentContext* envCtx, Li f32 sp88 = 0.0f; u16 i; u16 j; - s16 lightAdj; u16 time; EnvLightSettings* lightSettingsList = globalCtx->envCtx.lightSettingsList; // 7C s32 adjustment; @@ -901,7 +897,7 @@ void Environment_Update(GlobalContext* globalCtx, EnvironmentContext* envCtx, Li //! @bug `gTimeIncrement` is unsigned, it can't be negative if (((((void)0, gSaveContext.sceneSetupIndex) >= 5 || gTimeIncrement != 0) && - ((void)0, gSaveContext.dayTime) > ((void)0, gSaveContext.skyboxTime)) || + ((void)0, gSaveContext.dayTime) > gSaveContext.skyboxTime) || (((void)0, gSaveContext.dayTime) < 0xAAB || gTimeIncrement < 0)) { gSaveContext.skyboxTime = ((void)0, gSaveContext.dayTime); @@ -941,17 +937,16 @@ void Environment_Update(GlobalContext* globalCtx, EnvironmentContext* envCtx, Li if (envCtx->unk_BF != 0xFE) { if (!envCtx->indoors && (envCtx->unk_BF == 0xFF)) { for (i = 0; i < ARRAY_COUNT(D_8011FB48[envCtx->unk_1F]); i++) { - if ((((void)0, gSaveContext.skyboxTime) >= TIME_ENTRY_1F_1->startTime) && - ((((void)0, gSaveContext.skyboxTime) < TIME_ENTRY_1F_1->endTime) || - TIME_ENTRY_1F_1->endTime == 0xFFFF)) { + if ((gSaveContext.skyboxTime >= TIME_ENTRY_1F.startTime) && + ((gSaveContext.skyboxTime < TIME_ENTRY_1F.endTime) || TIME_ENTRY_1F.endTime == 0xFFFF)) { u8 blend8[2]; s16 blend16[2]; - sp8C = Environment_LerpWeight(TIME_ENTRY_1F_1->endTime, TIME_ENTRY_1F_1->startTime, + sp8C = Environment_LerpWeight(TIME_ENTRY_1F.endTime, TIME_ENTRY_1F.startTime, ((void)0, gSaveContext.skyboxTime)); - D_8011FDCC = TIME_ENTRY_1F_2->unk_04 & 3; - D_8011FDD0 = TIME_ENTRY_1F_2->unk_05 & 3; + D_8011FDCC = TIME_ENTRY_1F.unk_04 & 3; + D_8011FDD0 = TIME_ENTRY_1F.unk_05 & 3; D_8011FDD4 = sp8C; if (envCtx->unk_21) { @@ -966,11 +961,11 @@ void Environment_Update(GlobalContext* globalCtx, EnvironmentContext* envCtx, Li for (j = 0; j < 3; j++) { // blend ambient color - blend8[0] = LERP(lightSettingsList[TIME_ENTRY_1F_2->unk_04].ambientColor[j], - lightSettingsList[TIME_ENTRY_1F_2->unk_05].ambientColor[j], sp8C); - blend8[1] = LERP(lightSettingsList[TIME_ENTRY_20->unk_04].ambientColor[j], - lightSettingsList[TIME_ENTRY_20->unk_05].ambientColor[j], sp8C); - envCtx->lightSettings.ambientColor[j] = LERP(blend8[0], blend8[1], sp88); + blend8[0] = LERP(lightSettingsList[TIME_ENTRY_1F.unk_04].ambientColor[j], + lightSettingsList[TIME_ENTRY_1F.unk_05].ambientColor[j], sp8C); + blend8[1] = LERP(lightSettingsList[TIME_ENTRY_20.unk_04].ambientColor[j], + lightSettingsList[TIME_ENTRY_20.unk_05].ambientColor[j], sp8C); + *(envCtx->lightSettings.ambientColor + j) = LERP(blend8[0], blend8[1], sp88); } // set light1 direction for the sun @@ -988,50 +983,50 @@ void Environment_Update(GlobalContext* globalCtx, EnvironmentContext* envCtx, Li for (j = 0; j < 3; j++) { // blend light1Color - blend8[0] = LERP(lightSettingsList[TIME_ENTRY_1F_2->unk_04].light1Color[j], - lightSettingsList[TIME_ENTRY_1F_2->unk_05].light1Color[j], sp8C); - blend8[1] = LERP(lightSettingsList[TIME_ENTRY_20->unk_04].light1Color[j], - lightSettingsList[TIME_ENTRY_20->unk_05].light1Color[j], sp8C); - envCtx->lightSettings.light1Color[j] = LERP(blend8[0], blend8[1], sp88); + blend8[0] = LERP(lightSettingsList[TIME_ENTRY_1F.unk_04].light1Color[j], + lightSettingsList[TIME_ENTRY_1F.unk_05].light1Color[j], sp8C); + blend8[1] = LERP(lightSettingsList[TIME_ENTRY_20.unk_04].light1Color[j], + lightSettingsList[TIME_ENTRY_20.unk_05].light1Color[j], sp8C); + *(envCtx->lightSettings.light1Color + j) = LERP(blend8[0], blend8[1], sp88); // blend light2Color - blend8[0] = LERP(lightSettingsList[TIME_ENTRY_1F_2->unk_04].light2Color[j], - lightSettingsList[TIME_ENTRY_1F_2->unk_05].light2Color[j], sp8C); - blend8[1] = LERP(lightSettingsList[TIME_ENTRY_20->unk_04].light2Color[j], - lightSettingsList[TIME_ENTRY_20->unk_05].light2Color[j], sp8C); - envCtx->lightSettings.light2Color[j] = LERP(blend8[0], blend8[1], sp88); + blend8[0] = LERP(lightSettingsList[TIME_ENTRY_1F.unk_04].light2Color[j], + lightSettingsList[TIME_ENTRY_1F.unk_05].light2Color[j], sp8C); + blend8[1] = LERP(lightSettingsList[TIME_ENTRY_20.unk_04].light2Color[j], + lightSettingsList[TIME_ENTRY_20.unk_05].light2Color[j], sp8C); + *(envCtx->lightSettings.light2Color + j) = LERP(blend8[0], blend8[1], sp88); } // blend fogColor for (j = 0; j < 3; j++) { - blend8[0] = LERP(lightSettingsList[TIME_ENTRY_1F_2->unk_04].fogColor[j], - lightSettingsList[TIME_ENTRY_1F_2->unk_05].fogColor[j], sp8C); - blend8[1] = LERP(lightSettingsList[TIME_ENTRY_20->unk_04].fogColor[j], - lightSettingsList[TIME_ENTRY_20->unk_05].fogColor[j], sp8C); - envCtx->lightSettings.fogColor[j] = LERP(blend8[0], blend8[1], sp88); + blend8[0] = LERP(lightSettingsList[TIME_ENTRY_1F.unk_04].fogColor[j], + lightSettingsList[TIME_ENTRY_1F.unk_05].fogColor[j], sp8C); + blend8[1] = LERP(lightSettingsList[TIME_ENTRY_20.unk_04].fogColor[j], + lightSettingsList[TIME_ENTRY_20.unk_05].fogColor[j], sp8C); + *(envCtx->lightSettings.fogColor + j) = LERP(blend8[0], blend8[1], sp88); } - blend16[0] = LERP32(lightSettingsList[TIME_ENTRY_1F_2->unk_04].fogNear & 0x3FF, - lightSettingsList[TIME_ENTRY_1F_2->unk_05].fogNear & 0x3FF, sp8C); - blend16[1] = LERP32(lightSettingsList[TIME_ENTRY_20->unk_04].fogNear & 0x3FF, - lightSettingsList[TIME_ENTRY_20->unk_05].fogNear & 0x3FF, sp8C); + blend16[0] = LERP16((lightSettingsList[TIME_ENTRY_1F.unk_04].fogNear & 0x3FF), + (lightSettingsList[TIME_ENTRY_1F.unk_05].fogNear & 0x3FF), sp8C); + blend16[1] = LERP16(lightSettingsList[TIME_ENTRY_20.unk_04].fogNear & 0x3FF, + lightSettingsList[TIME_ENTRY_20.unk_05].fogNear & 0x3FF, sp8C); - envCtx->lightSettings.fogNear = LERP32(blend16[0], blend16[1], sp88); + envCtx->lightSettings.fogNear = LERP16(blend16[0], blend16[1], sp88); - blend16[0] = LERP32(lightSettingsList[TIME_ENTRY_1F_2->unk_04].fogFar, - lightSettingsList[TIME_ENTRY_1F_2->unk_05].fogFar, sp8C); - blend16[1] = LERP32(lightSettingsList[TIME_ENTRY_20->unk_04].fogFar, - lightSettingsList[TIME_ENTRY_20->unk_05].fogFar, sp8C); + blend16[0] = LERP16(lightSettingsList[TIME_ENTRY_1F.unk_04].fogFar, + lightSettingsList[TIME_ENTRY_1F.unk_05].fogFar, sp8C); + blend16[1] = LERP16(lightSettingsList[TIME_ENTRY_20.unk_04].fogFar, + lightSettingsList[TIME_ENTRY_20.unk_05].fogFar, sp8C); - envCtx->lightSettings.fogFar = LERP32(blend16[0], blend16[1], sp88); + envCtx->lightSettings.fogFar = LERP16(blend16[0], blend16[1], sp88); - if (TIME_ENTRY_20->unk_05 >= envCtx->numLightSettings) { + if (TIME_ENTRY_20.unk_05 >= envCtx->numLightSettings) { // "The color palette setting seems to be wrong!" osSyncPrintf(VT_COL(RED, WHITE) "\nカラーパレットの設定がおかしいようです!" VT_RST); // "Palette setting = [] Last palette number = []" osSyncPrintf(VT_COL(RED, WHITE) "\n設定パレット=[%d] 最後パレット番号=[%d]\n" VT_RST, - TIME_ENTRY_20->unk_05, envCtx->numLightSettings - 1); + TIME_ENTRY_20.unk_05, envCtx->numLightSettings - 1); } break; } @@ -1071,39 +1066,39 @@ void Environment_Update(GlobalContext* globalCtx, EnvironmentContext* envCtx, Li envCtx->unk_D8 = 1.0f; } - for (j = 0; j < 3; j++) { - envCtx->lightSettings.ambientColor[j] = - LERP(lightSettingsList[envCtx->unk_BE].ambientColor[j], - lightSettingsList[envCtx->unk_BD].ambientColor[j], envCtx->unk_D8); - envCtx->lightSettings.light1Dir[j] = - LERP32(lightSettingsList[envCtx->unk_BE].light1Dir[j], - lightSettingsList[envCtx->unk_BD].light1Dir[j], envCtx->unk_D8); - envCtx->lightSettings.light1Color[j] = - LERP(lightSettingsList[envCtx->unk_BE].light1Color[j], - lightSettingsList[envCtx->unk_BD].light1Color[j], envCtx->unk_D8); - envCtx->lightSettings.light2Dir[j] = - LERP32(lightSettingsList[envCtx->unk_BE].light2Dir[j], - lightSettingsList[envCtx->unk_BD].light2Dir[j], envCtx->unk_D8); - envCtx->lightSettings.light2Color[j] = - LERP(lightSettingsList[envCtx->unk_BE].light2Color[j], - lightSettingsList[envCtx->unk_BD].light2Color[j], envCtx->unk_D8); - envCtx->lightSettings.fogColor[j] = - LERP(lightSettingsList[envCtx->unk_BE].fogColor[j], - lightSettingsList[envCtx->unk_BD].fogColor[j], envCtx->unk_D8); + for (i = 0; i < 3; i++) { + envCtx->lightSettings.ambientColor[i] = + LERP(lightSettingsList[envCtx->unk_BE].ambientColor[i], + lightSettingsList[envCtx->unk_BD].ambientColor[i], envCtx->unk_D8); + envCtx->lightSettings.light1Dir[i] = + LERP16(lightSettingsList[envCtx->unk_BE].light1Dir[i], + lightSettingsList[envCtx->unk_BD].light1Dir[i], envCtx->unk_D8); + envCtx->lightSettings.light1Color[i] = + LERP(lightSettingsList[envCtx->unk_BE].light1Color[i], + lightSettingsList[envCtx->unk_BD].light1Color[i], envCtx->unk_D8); + envCtx->lightSettings.light2Dir[i] = + LERP16(lightSettingsList[envCtx->unk_BE].light2Dir[i], + lightSettingsList[envCtx->unk_BD].light2Dir[i], envCtx->unk_D8); + envCtx->lightSettings.light2Color[i] = + LERP(lightSettingsList[envCtx->unk_BE].light2Color[i], + lightSettingsList[envCtx->unk_BD].light2Color[i], envCtx->unk_D8); + envCtx->lightSettings.fogColor[i] = + LERP(lightSettingsList[envCtx->unk_BE].fogColor[i], + lightSettingsList[envCtx->unk_BD].fogColor[i], envCtx->unk_D8); } envCtx->lightSettings.fogNear = - LERP32(lightSettingsList[envCtx->unk_BE].fogNear & 0x3FF, + LERP16(lightSettingsList[envCtx->unk_BE].fogNear & 0x3FF, lightSettingsList[envCtx->unk_BD].fogNear & 0x3FF, envCtx->unk_D8); - envCtx->lightSettings.fogFar = LERP32(lightSettingsList[envCtx->unk_BE].fogFar, + envCtx->lightSettings.fogFar = LERP16(lightSettingsList[envCtx->unk_BE].fogFar, lightSettingsList[envCtx->unk_BD].fogFar, envCtx->unk_D8); } if (envCtx->unk_BD >= envCtx->numLightSettings) { // "The color palette seems to be wrong!" - osSyncPrintf(VT_FGCOL(RED) "\nカラーパレットがおかしいようです!"); + osSyncPrintf("\n" VT_FGCOL(RED) "カラーパレットがおかしいようです!"); // "Palette setting = [] Last palette number = []" - osSyncPrintf(VT_FGCOL(YELLOW) "\n設定パレット=[%d] パレット数=[%d]\n" VT_RST, envCtx->unk_BD, + osSyncPrintf("\n" VT_FGCOL(YELLOW) "設定パレット=[%d] パレット数=[%d]\n" VT_RST, envCtx->unk_BD, envCtx->numLightSettings); } } @@ -1113,44 +1108,38 @@ void Environment_Update(GlobalContext* globalCtx, EnvironmentContext* envCtx, Li // Apply lighting adjustments for (i = 0; i < 3; i++) { - lightAdj = envCtx->lightSettings.ambientColor[i] + envCtx->adjAmbientColor[i]; - - if (lightAdj > 255) { + if ((s16)(envCtx->lightSettings.ambientColor[i] + envCtx->adjAmbientColor[i]) > 255) { lightCtx->ambientColor[i] = 255; - } else if (lightAdj < 0) { + } else if ((s16)(envCtx->lightSettings.ambientColor[i] + envCtx->adjAmbientColor[i]) < 0) { lightCtx->ambientColor[i] = 0; } else { - lightCtx->ambientColor[i] = lightAdj; + lightCtx->ambientColor[i] = (s16)(envCtx->lightSettings.ambientColor[i] + envCtx->adjAmbientColor[i]); } - lightAdj = envCtx->lightSettings.light1Color[i] + envCtx->adjLight1Color[i]; - - if (lightAdj > 255) { + if ((s16)(envCtx->lightSettings.light1Color[i] + envCtx->adjLight1Color[i]) > 255) { envCtx->dirLight1.params.dir.color[i] = 255; - } else if (lightAdj < 0) { + } else if ((s16)(envCtx->lightSettings.light1Color[i] + envCtx->adjLight1Color[i]) < 0) { envCtx->dirLight1.params.dir.color[i] = 0; } else { - envCtx->dirLight1.params.dir.color[i] = lightAdj; + envCtx->dirLight1.params.dir.color[i] = + (s16)(envCtx->lightSettings.light1Color[i] + envCtx->adjLight1Color[i]); } - lightAdj = envCtx->lightSettings.light2Color[i] + envCtx->adjLight1Color[i]; - - if (lightAdj > 255) { + if ((s16)(envCtx->lightSettings.light2Color[i] + envCtx->adjLight1Color[i]) > 255) { envCtx->dirLight2.params.dir.color[i] = 255; - } else if (lightAdj < 0) { + } else if ((s16)(envCtx->lightSettings.light2Color[i] + envCtx->adjLight1Color[i]) < 0) { envCtx->dirLight2.params.dir.color[i] = 0; } else { - envCtx->dirLight2.params.dir.color[i] = lightAdj; + envCtx->dirLight2.params.dir.color[i] = + (s16)(envCtx->lightSettings.light2Color[i] + envCtx->adjLight1Color[i]); } - lightAdj = envCtx->lightSettings.fogColor[i] + envCtx->adjFogColor[i]; - - if (lightAdj > 255) { + if ((s16)(envCtx->lightSettings.fogColor[i] + envCtx->adjFogColor[i]) > 255) { lightCtx->fogColor[i] = 255; - } else if (lightAdj < 0) { + } else if ((s16)(envCtx->lightSettings.fogColor[i] + envCtx->adjFogColor[i]) < 0) { lightCtx->fogColor[i] = 0; } else { - lightCtx->fogColor[i] = lightAdj; + lightCtx->fogColor[i] = (s16)(envCtx->lightSettings.fogColor[i] + envCtx->adjFogColor[i]); } } @@ -1234,14 +1223,14 @@ void Environment_Update(GlobalContext* globalCtx, EnvironmentContext* envCtx, Li if (cREG(14)) { R_ENV_LIGHT1_DIR(0) = Math_CosS(cREG(10)) * Math_CosS(cREG(11)) * 120.0f; envCtx->dirLight1.params.dir.x = R_ENV_LIGHT1_DIR(0); - R_ENV_LIGHT1_DIR(1) = Math_CosS(cREG(10)) * Math_SinS(cREG(11)) * 120.0f; + R_ENV_LIGHT1_DIR(1) = Math_SinS(cREG(10)) * Math_CosS(cREG(11)) * 120.0f; envCtx->dirLight1.params.dir.y = R_ENV_LIGHT1_DIR(1); R_ENV_LIGHT1_DIR(2) = Math_SinS(cREG(11)) * 120.0f; envCtx->dirLight1.params.dir.z = R_ENV_LIGHT1_DIR(2); R_ENV_LIGHT2_DIR(0) = Math_CosS(cREG(12)) * Math_CosS(cREG(13)) * 120.0f; envCtx->dirLight2.params.dir.x = R_ENV_LIGHT2_DIR(0); - R_ENV_LIGHT2_DIR(1) = Math_CosS(cREG(12)) * Math_SinS(cREG(13)) * 120.0f; + R_ENV_LIGHT2_DIR(1) = Math_SinS(cREG(12)) * Math_CosS(cREG(13)) * 120.0f; envCtx->dirLight2.params.dir.y = R_ENV_LIGHT2_DIR(1); R_ENV_LIGHT2_DIR(2) = Math_SinS(cREG(13)) * 120.0f; envCtx->dirLight2.params.dir.z = R_ENV_LIGHT2_DIR(2); @@ -1272,9 +1261,6 @@ void Environment_Update(GlobalContext* globalCtx, EnvironmentContext* envCtx, Li } } } -#else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_Update.s") -#endif void Environment_DrawSunAndMoon(GlobalContext* globalCtx) { f32 alpha; |
