summaryrefslogtreecommitdiff
path: root/soh/src/code/code_800EC960.c
diff options
context:
space:
mode:
authorEric Hoey <121978037+A-Green-Spoon@users.noreply.github.com>2024-02-01 20:52:10 -0500
committerGitHub <noreply@github.com>2024-02-01 19:52:10 -0600
commitbe948339b965d76337bbec66563e7aabbcf489c1 (patch)
tree717195f82ffeee3de82e8daa58200a7546431993 /soh/src/code/code_800EC960.c
parent7ff46ba1a7a720bd71e531943596ab11badecc40 (diff)
Lost Woods Ocarina Game Difficulty Options (#3371)
* Menu options, note speed, unlimited playback time * Instant win * Add custom ocarina game cvar to all options and presets * Extra spaces * Add starting note count, ending note count by round, more presets * Block out vanilla code + comments * finish blocking out vanilla code * new documentation formatting * add starting notes to randomizer preset
Diffstat (limited to 'soh/src/code/code_800EC960.c')
-rw-r--r--soh/src/code/code_800EC960.c61
1 files changed, 49 insertions, 12 deletions
diff --git a/soh/src/code/code_800EC960.c b/soh/src/code/code_800EC960.c
index 27de9b2d5..41d2a8ec3 100644
--- a/soh/src/code/code_800EC960.c
+++ b/soh/src/code/code_800EC960.c
@@ -2065,16 +2065,40 @@ void func_800EE404(void) {
void Audio_OcaMemoryGameStart(u8 minigameRound) {
u8 i;
+
+ // #region SOH [Enhancement]
+ if (CVarGetInteger("gCustomizeOcarinaGame", 0)) {
+ u8 startingNotes = 3;
+ u8 roundOneCount = CVarGetInteger("gOcarinaGameRoundOneNotes", 5);
+ u8 roundTwoCount = CVarGetInteger("gOcarinaGameRoundTwoNotes", 6);
+ u8 roundThreeCount = CVarGetInteger("gOcarinaGameRoundThreeNotes", 8);
+ u8 modMinigameNoteCnts[] = { roundOneCount, roundTwoCount, roundThreeCount };
- if (minigameRound > 2) {
- minigameRound = 2;
- }
- sOcaMinigameAppendPos = 0;
- sOcaMinigameEndPos = sOcaMinigameNoteCnts[minigameRound];
+ startingNotes = CVarGetInteger("gOcarinaGameStartingNotes", 3);
+
+ if (minigameRound > 2) {
+ minigameRound = 2;
+ }
+
+ sOcaMinigameAppendPos = 0;
+ sOcaMinigameEndPos = modMinigameNoteCnts[minigameRound];
- for (i = 0; i < 3; i++) {
- Audio_OcaMemoryGameGenNote();
+ for (i = 0; i < startingNotes; i++) {
+ Audio_OcaMemoryGameGenNote();
+ }
+ // #endregion
+ } else {
+ if (minigameRound > 2) {
+ minigameRound = 2;
+ }
+
+ sOcaMinigameAppendPos = 0;
+ sOcaMinigameEndPos = sOcaMinigameNoteCnts[minigameRound];
+
+ for (i = 0; i < 3; i++) {
+ Audio_OcaMemoryGameGenNote();
+ }
}
}
@@ -2093,11 +2117,24 @@ s32 Audio_OcaMemoryGameGenNote(void) {
rndNote = sOcarinaNoteValues[(rnd + 1) % 5];
}
- sOcarinaSongs[OCARINA_SONG_MEMORY_GAME][sOcaMinigameAppendPos].noteIdx = rndNote;
- sOcarinaSongs[OCARINA_SONG_MEMORY_GAME][sOcaMinigameAppendPos].unk_02 = 0x2D;
- sOcarinaSongs[OCARINA_SONG_MEMORY_GAME][sOcaMinigameAppendPos].volume = 0x50;
- sOcarinaSongs[OCARINA_SONG_MEMORY_GAME][sOcaMinigameAppendPos].vibrato = 0;
- sOcarinaSongs[OCARINA_SONG_MEMORY_GAME][sOcaMinigameAppendPos].tone = 0;
+ // #region SOH [Enhancement]
+ if (CVarGetInteger("gCustomizeOcarinaGame", 0)) {
+ int noteSpeed = 0x2D;
+ noteSpeed = noteSpeed / CVarGetInteger("gOcarinaGameNoteSpeed", 1);
+
+ sOcarinaSongs[OCARINA_SONG_MEMORY_GAME][sOcaMinigameAppendPos].noteIdx = rndNote;
+ sOcarinaSongs[OCARINA_SONG_MEMORY_GAME][sOcaMinigameAppendPos].unk_02 = noteSpeed;
+ sOcarinaSongs[OCARINA_SONG_MEMORY_GAME][sOcaMinigameAppendPos].volume = 0x50;
+ sOcarinaSongs[OCARINA_SONG_MEMORY_GAME][sOcaMinigameAppendPos].vibrato = 0;
+ sOcarinaSongs[OCARINA_SONG_MEMORY_GAME][sOcaMinigameAppendPos].tone = 0;
+ // #endregion
+ } else {
+ sOcarinaSongs[OCARINA_SONG_MEMORY_GAME][sOcaMinigameAppendPos].noteIdx = rndNote;
+ sOcarinaSongs[OCARINA_SONG_MEMORY_GAME][sOcaMinigameAppendPos].unk_02 = 0x2D;
+ sOcarinaSongs[OCARINA_SONG_MEMORY_GAME][sOcaMinigameAppendPos].volume = 0x50;
+ sOcarinaSongs[OCARINA_SONG_MEMORY_GAME][sOcaMinigameAppendPos].vibrato = 0;
+ sOcarinaSongs[OCARINA_SONG_MEMORY_GAME][sOcaMinigameAppendPos].tone = 0;
+ }
sOcaMinigameAppendPos++;