diff options
Diffstat (limited to 'Source/Randomizer.cpp')
-rw-r--r-- | Source/Randomizer.cpp | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/Source/Randomizer.cpp b/Source/Randomizer.cpp index 1f2c0cc..2f3e72a 100644 --- a/Source/Randomizer.cpp +++ b/Source/Randomizer.cpp | |||
@@ -13,7 +13,6 @@ | |||
13 | * Swap sounds in jungle (along with panels) -- maybe impossible | 13 | * Swap sounds in jungle (along with panels) -- maybe impossible |
14 | * Make orange 7 (all of oranges?) hard. Like big = hard. (See: HARD_MODE) | 14 | * Make orange 7 (all of oranges?) hard. Like big = hard. (See: HARD_MODE) |
15 | * Add a setting for "disable wonkavator and hotel", so that 100% runs are possible | 15 | * Add a setting for "disable wonkavator and hotel", so that 100% runs are possible |
16 | * Try to stabilize challenge/doors RNG | ||
17 | * I probably can randomize targets in bunker UV | 16 | * I probably can randomize targets in bunker UV |
18 | * Random *rotation* of desert laser redirect? | 17 | * Random *rotation* of desert laser redirect? |
19 | * Add setting to disable laser randomization | 18 | * Add setting to disable laser randomization |
@@ -23,6 +22,7 @@ | |||
23 | */ | 22 | */ |
24 | #include "Memory.h" | 23 | #include "Memory.h" |
25 | #include "Randomizer.h" | 24 | #include "Randomizer.h" |
25 | #include "ChallengeRandomizer.h" | ||
26 | #include "Panels.h" | 26 | #include "Panels.h" |
27 | #include "Random.h" | 27 | #include "Random.h" |
28 | #include <string> | 28 | #include <string> |
@@ -54,6 +54,9 @@ void Randomizer::Randomize() | |||
54 | if (GameIsRandomized()) return; // Nice sanity check, but should be unnecessary (since Main checks anyways) | 54 | if (GameIsRandomized()) return; // Nice sanity check, but should be unnecessary (since Main checks anyways) |
55 | _lastRandomizedFrame = _memory->GetCurrentFrame(); | 55 | _lastRandomizedFrame = _memory->GetCurrentFrame(); |
56 | 56 | ||
57 | // Seed challenge first for future-proofing (?) | ||
58 | RandomizeChallenge(); | ||
59 | |||
57 | // Content swaps -- must happen before squarePanels | 60 | // Content swaps -- must happen before squarePanels |
58 | Randomize(upDownPanels, SWAP::LINES); | 61 | Randomize(upDownPanels, SWAP::LINES); |
59 | Randomize(leftForwardRightPanels, SWAP::LINES); | 62 | Randomize(leftForwardRightPanels, SWAP::LINES); |
@@ -74,7 +77,6 @@ void Randomizer::Randomize() | |||
74 | RandomizeJungle(); | 77 | RandomizeJungle(); |
75 | RandomizeSwamp(); | 78 | RandomizeSwamp(); |
76 | RandomizeMountain(); | 79 | RandomizeMountain(); |
77 | // RandomizeChallenge(); | ||
78 | // RandomizeAudioLogs(); | 80 | // RandomizeAudioLogs(); |
79 | } | 81 | } |
80 | 82 | ||
@@ -215,16 +217,7 @@ void Randomizer::RandomizeMountain() { | |||
215 | } | 217 | } |
216 | 218 | ||
217 | void Randomizer::RandomizeChallenge() { | 219 | void Randomizer::RandomizeChallenge() { |
218 | std::vector<int> randomOrder(challengePanels.size(), 0); | 220 | ChallengeRandomizer cr(_memory, Random::RandInt(1, 0x1000)); |
219 | std::iota(randomOrder.begin(), randomOrder.end(), 0); | ||
220 | RandomizeRange(randomOrder, SWAP::NONE, 1, 9); // Easy maze - Triple 2 | ||
221 | std::vector<int> triple1Target = _memory->ReadPanelData<int>(0x00C80, TARGET, 1); | ||
222 | _memory->WritePanelData<int>(0x00CA1, TARGET, triple1Target); | ||
223 | _memory->WritePanelData<int>(0x00CB9, TARGET, triple1Target); | ||
224 | std::vector<int> triple2Target = _memory->ReadPanelData<int>(0x00C22, TARGET, 1); | ||
225 | _memory->WritePanelData<int>(0x00C59, TARGET, triple2Target); | ||
226 | _memory->WritePanelData<int>(0x00C68, TARGET, triple2Target); | ||
227 | ReassignTargets(challengePanels, randomOrder); | ||
228 | } | 221 | } |
229 | 222 | ||
230 | void Randomizer::RandomizeAudioLogs() { | 223 | void Randomizer::RandomizeAudioLogs() { |