diff options
| author | engineer124 <47598039+engineer124@users.noreply.github.com> | 2022-09-24 13:43:21 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-24 14:43:21 -0300 |
| commit | cdee1fc45b5b327a4169ecb3aa899174ddcfc851 (patch) | |
| tree | 793f320946e774b2c0560ed5267b0552550cb9c0 /src | |
| parent | 71a18d70cf85970dd73c3bdb0fa18c0ccad5131d (diff) | |
`z_kaleido_prompt.c` Ok and Documented (Pause Menu Save/Continue Prompt. Unused) (#1045)
* kaleido prompt ok
* fix pauseCtx
Diffstat (limited to 'src')
4 files changed, 54 insertions, 10 deletions
diff --git a/src/code/z_kaleido_setup.c b/src/code/z_kaleido_setup.c index fa490dbca..a2742c746 100644 --- a/src/code/z_kaleido_setup.c +++ b/src/code/z_kaleido_setup.c @@ -138,7 +138,7 @@ void KaleidoSetup_Init(PlayState* play) { pauseCtx->unk_2A0 = -1; pauseCtx->unk_2BA = 320; pauseCtx->unk_2BC = 40; - pauseCtx->unk_29E = 100; + pauseCtx->promptAlpha = 100; View_Init(&pauseCtx->view, play->state.gfxCtx); } diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c index aa24bf2e2..f8f61c5dc 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_mask.c @@ -50,18 +50,10 @@ s16 D_8082B6DC[] = { 0x0000, }; -s32 D_8082B6E4[] = { 0, 0, 0 }; - -s16 D_8082B6F0[] = { 100, 255 }; - -s32 D_8082B6F4 = 0; - -s16 D_8082B6F8[] = { 10, 0, 0, 0 }; +s16 D_8082B6E4 = 0; #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_8081FF80.s") #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_808204AC.s") #pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_80820FA4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_kaleido_scope/func_80821730.s") diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_prompt.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_prompt.c new file mode 100644 index 000000000..53453e8e7 --- /dev/null +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_prompt.c @@ -0,0 +1,49 @@ +/* + * File: z_kaleido_prompt.c + * Overlay: ovl_kaleido_scope + * Description: Pause Menu - Save and Continue Prompt + */ + +#include "z_kaleido_scope.h" + +s16 sPromptAlphaTargets[] = { 100, 255 }; + +// Unused remnant of OoT +void KaleidoScope_UpdatePrompt(PlayState* play) { + static s16 sPromptAlphaTargetIndex = 0; + static s16 sPromptAlphaTimer = 10; + PauseContext* pauseCtx = &play->pauseCtx; + Input* input = CONTROLLER1(&play->state); + s8 relStickX = input->rel.stick_x; + s16 alphaStep; + + if (((pauseCtx->state == 7) && (pauseCtx->unk_208 == 1)) || (pauseCtx->state == 0xE) || (pauseCtx->state == 0x11)) { + + // Move the prompt + if ((pauseCtx->promptChoice == PAUSE_PROMPT_YES) && (relStickX >= 30)) { + // Move right to the no prompt + play_sound(NA_SE_SY_CURSOR); + pauseCtx->promptChoice = PAUSE_PROMPT_NO; + } else if ((pauseCtx->promptChoice != PAUSE_PROMPT_YES) && (relStickX <= -30)) { + // Move left to the yes prompt + play_sound(NA_SE_SY_CURSOR); + pauseCtx->promptChoice = PAUSE_PROMPT_YES; + } + + // Update the alpha for the green glowing orb above the prompt + alphaStep = ABS_ALT(pauseCtx->promptAlpha - sPromptAlphaTargets[sPromptAlphaTargetIndex]) / sPromptAlphaTimer; + + if (pauseCtx->promptAlpha >= sPromptAlphaTargets[sPromptAlphaTargetIndex]) { + pauseCtx->promptAlpha -= alphaStep; + } else { + pauseCtx->promptAlpha += alphaStep; + } + + sPromptAlphaTimer--; + if (sPromptAlphaTimer == 0) { + pauseCtx->promptAlpha = sPromptAlphaTargets[sPromptAlphaTargetIndex]; + sPromptAlphaTimer = sPromptAlphaTargetIndex + 20; + sPromptAlphaTargetIndex ^= 1; + } + } +} diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h index f4c91e9e8..b4d2a192f 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h @@ -18,6 +18,9 @@ typedef enum { /* 3 */ DEBUG_EDITOR_EVENTS } DebugEditor; +#define PAUSE_PROMPT_YES 0 +#define PAUSE_PROMPT_NO 4 + // Debug void KaleidoScope_DrawInventoryEditor(PlayState* play); void KaleidoScope_UpdateInventoryEditor(PlayState* play); |
