mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-06-29 19:52:27 -04:00
2957dc61c3
* Ganon(dorf) cutscene skips * Remove leftover code * Load into chamber of sages * Fix loading into chamber without fast file select * Boss warps in chamber done * Change warps back to chamber * Initial proof of concept done * ganon(dorf) cutscene skips * Code cleanup & auto age equipment * Gameplay stats timer + tweaks * Scuffed timer * Better timer * remove arena props + fix arena exits * Fix blue warps * Attempt to fix build * Fix build again * And again.. * Try no. 9001 * Handle dying and saving * Child link face fire medallion * Fix build * Fix warps after reset/death * Disable doors and move player spawns in boss rooms * Fix boss rush logo rendering * Start of ingame options menu * File Select cleanup * Fix build * Render char text PoC * Move functions to be more generic * Fix build * Fix other builds * Initial text scaling/kerning * Special characters prep * All special characters work now * Attempt to fix build * Fix build question mark * Finish all kerning * Start of ingame options menu with vertical scrolling * Barebones functional options menu * More options menu progress * More visual elements for options menu * Options menu visual changes, implement all options, tons of cleanup * Cleanup and comments * Shorter enums * More options * Change default heart count * Finish French translations * Implement timer in cosmetics editor * Uncomment timer requirement * Variable name change * German translation & small UI tweaks * Animated up/down arrows in options UI * Better arrows in options UI * Cleaner timer + make it usable for general gameplay * More cleanup + ganon & ganondorf boss option * Implement never heal option * Slight up arrow in options UI tweak * Add BGS option * Reintroduce ganondorf cutscene skip * Change encoding to UTF on bossrush.cpp * Fix build hopefully * Fixed static variables leading to options not properly resetting * Fix BR completed timestamp * Change timer to render on top of everything * Offset final BR time by 0.1 second from boss timestamps * Add missing check for boss rush * Implement soh_assets.h * Revert merge mistake * Fix special characters with UTF-8 * Fix build * here's the fix you can merge from your phone * Fix quest select crash with oot.otr only * Use OoT's kerning * Fix HD textures on options menu * Fix special character kerning * "Heal every boss" fixes * Seperate headers + bunny hood option * Remove GetUnixTimestamp() externing * Clean up extern "C"'s * Address review comments * Fix build question mark * Remove accidental styling change --------- Co-authored-by: briaguya <briaguya@alice>
139 lines
4.9 KiB
C
139 lines
4.9 KiB
C
#include "global.h"
|
|
#include "vt.h"
|
|
|
|
void (*sKaleidoScopeUpdateFunc)(PlayState* play);
|
|
void (*sKaleidoScopeDrawFunc)(PlayState* play);
|
|
f32 gBossMarkScale;
|
|
u32 D_8016139C;
|
|
PauseMapMarksData* gLoadedPauseMarkDataTable;
|
|
|
|
extern void KaleidoScope_Update(PlayState* play);
|
|
extern void KaleidoScope_Draw(PlayState* play);
|
|
|
|
void KaleidoScopeCall_LoadPlayer() {
|
|
KaleidoMgrOverlay* playerActorOvl = &gKaleidoMgrOverlayTable[KALEIDO_OVL_PLAYER_ACTOR];
|
|
|
|
if (gKaleidoMgrCurOvl != playerActorOvl) {
|
|
if (gKaleidoMgrCurOvl != NULL) {
|
|
osSyncPrintf(VT_FGCOL(GREEN));
|
|
osSyncPrintf("カレイド領域 強制排除\n"); // "Kaleido area forced exclusion"
|
|
osSyncPrintf(VT_RST);
|
|
|
|
KaleidoManager_ClearOvl(gKaleidoMgrCurOvl);
|
|
}
|
|
|
|
osSyncPrintf(VT_FGCOL(GREEN));
|
|
osSyncPrintf("プレイヤーアクター搬入\n"); // "Player actor import"
|
|
osSyncPrintf(VT_RST);
|
|
|
|
KaleidoManager_LoadOvl(playerActorOvl);
|
|
}
|
|
}
|
|
|
|
void KaleidoScopeCall_Init(PlayState* play) {
|
|
// "Kaleidoscope replacement construction"
|
|
osSyncPrintf("カレイド・スコープ入れ替え コンストラクト \n");
|
|
|
|
sKaleidoScopeUpdateFunc = KaleidoManager_GetRamAddr(KaleidoScope_Update);
|
|
sKaleidoScopeDrawFunc = KaleidoManager_GetRamAddr(KaleidoScope_Draw);
|
|
|
|
LOG_ADDRESS("kaleido_scope_move", KaleidoScope_Update);
|
|
LOG_ADDRESS("kaleido_scope_move_func", sKaleidoScopeUpdateFunc);
|
|
LOG_ADDRESS("kaleido_scope_draw", KaleidoScope_Draw);
|
|
LOG_ADDRESS("kaleido_scope_draw_func", sKaleidoScopeDrawFunc);
|
|
|
|
KaleidoSetup_Init(play);
|
|
}
|
|
|
|
void KaleidoScopeCall_Destroy(PlayState* play) {
|
|
// "Kaleidoscope replacement destruction"
|
|
osSyncPrintf("カレイド・スコープ入れ替え デストラクト \n");
|
|
|
|
KaleidoSetup_Destroy(play);
|
|
}
|
|
|
|
void KaleidoScopeCall_Update(PlayState* play) {
|
|
KaleidoMgrOverlay* kaleidoScopeOvl = &gKaleidoMgrOverlayTable[KALEIDO_OVL_KALEIDO_SCOPE];
|
|
PauseContext* pauseCtx = &play->pauseCtx;
|
|
|
|
if (!gSaveContext.sohStats.gameComplete &&
|
|
(!gSaveContext.isBossRush || !gSaveContext.isBossRushPaused)) {
|
|
gSaveContext.sohStats.pauseTimer++;
|
|
}
|
|
|
|
if ((pauseCtx->state != 0) || (pauseCtx->debugState != 0)) {
|
|
if (pauseCtx->state == 1) {
|
|
if (ShrinkWindow_GetCurrentVal() == 0) {
|
|
HREG(80) = 7;
|
|
HREG(82) = 3;
|
|
R_PAUSE_MENU_MODE = 3;
|
|
pauseCtx->unk_1E4 = 0;
|
|
pauseCtx->unk_1EC = 0;
|
|
pauseCtx->state = (pauseCtx->state & 0xFFFF) + 1;
|
|
gSaveContext.sohStats.count[COUNT_PAUSES]++;
|
|
}
|
|
} else if (pauseCtx->state == 8) {
|
|
HREG(80) = 7;
|
|
HREG(82) = 3;
|
|
R_PAUSE_MENU_MODE = 1;
|
|
pauseCtx->unk_1E4 = 0;
|
|
pauseCtx->unk_1EC = 0;
|
|
pauseCtx->state = (pauseCtx->state & 0xFFFF) + 1;
|
|
} else if ((pauseCtx->state == 2) || (pauseCtx->state == 9)) {
|
|
osSyncPrintf("PR_KAREIDOSCOPE_MODE=%d\n", R_PAUSE_MENU_MODE);
|
|
|
|
if (R_PAUSE_MENU_MODE >= 3) {
|
|
pauseCtx->state++;
|
|
}
|
|
} else if (pauseCtx->state != 0) {
|
|
if (gKaleidoMgrCurOvl != kaleidoScopeOvl)
|
|
{
|
|
if (gKaleidoMgrCurOvl != NULL) {
|
|
osSyncPrintf(VT_FGCOL(GREEN));
|
|
// "Kaleido area Player Forced Elimination"
|
|
osSyncPrintf("カレイド領域 プレイヤー 強制排除\n");
|
|
osSyncPrintf(VT_RST);
|
|
|
|
KaleidoManager_ClearOvl(gKaleidoMgrCurOvl);
|
|
}
|
|
|
|
osSyncPrintf(VT_FGCOL(GREEN));
|
|
// "Kaleido area Kaleidoscope loading"
|
|
osSyncPrintf("カレイド領域 カレイドスコープ搬入\n");
|
|
osSyncPrintf(VT_RST);
|
|
|
|
KaleidoManager_LoadOvl(kaleidoScopeOvl);
|
|
}
|
|
|
|
if (gKaleidoMgrCurOvl == kaleidoScopeOvl)
|
|
{
|
|
sKaleidoScopeUpdateFunc(play);
|
|
|
|
if ((play->pauseCtx.state == 0) && (play->pauseCtx.debugState == 0)) {
|
|
osSyncPrintf(VT_FGCOL(GREEN));
|
|
// "Kaleido area Kaleidoscope Emission"
|
|
osSyncPrintf("カレイド領域 カレイドスコープ排出\n");
|
|
osSyncPrintf(VT_RST);
|
|
|
|
KaleidoManager_ClearOvl(kaleidoScopeOvl);
|
|
KaleidoScopeCall_LoadPlayer();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void KaleidoScopeCall_Draw(PlayState* play) {
|
|
KaleidoMgrOverlay* kaleidoScopeOvl = &gKaleidoMgrOverlayTable[KALEIDO_OVL_KALEIDO_SCOPE];
|
|
|
|
if (R_PAUSE_MENU_MODE >= 3) {
|
|
if (((play->pauseCtx.state >= 4) && (play->pauseCtx.state <= 7)) ||
|
|
((play->pauseCtx.state >= 11) && (play->pauseCtx.state <= 18))) {
|
|
if (gKaleidoMgrCurOvl == kaleidoScopeOvl)
|
|
{
|
|
sKaleidoScopeDrawFunc(play);
|
|
}
|
|
}
|
|
}
|
|
}
|