diff options
Diffstat (limited to 'WitnessRandomizer')
-rw-r--r-- | WitnessRandomizer/Panels.h | 2 | ||||
-rw-r--r-- | WitnessRandomizer/WitnessRandomizer.cpp | 33 | ||||
-rw-r--r-- | WitnessRandomizer/WitnessRandomizer.h | 4 |
3 files changed, 31 insertions, 8 deletions
diff --git a/WitnessRandomizer/Panels.h b/WitnessRandomizer/Panels.h index 2995170..7b9c96c 100644 --- a/WitnessRandomizer/Panels.h +++ b/WitnessRandomizer/Panels.h | |||
@@ -96,7 +96,7 @@ const std::vector<int> upDownPanels = { | |||
96 | 0x335AB, // UTM In Elevator Control | 96 | 0x335AB, // UTM In Elevator Control |
97 | 0x3369D, // UTM Lower Elevator Control | 97 | 0x3369D, // UTM Lower Elevator Control |
98 | 0x335AC, // UTM Upper Elevator Control | 98 | 0x335AC, // UTM Upper Elevator Control |
99 | 0x09EEB, // Mountain 2 Elevator | 99 | // 0x09EEB, // Mountain 2 Elevator |
100 | }; | 100 | }; |
101 | 101 | ||
102 | // Note: Some of these (non-controls) are duplicated elsewhere | 102 | // Note: Some of these (non-controls) are duplicated elsewhere |
diff --git a/WitnessRandomizer/WitnessRandomizer.cpp b/WitnessRandomizer/WitnessRandomizer.cpp index e7ab2aa..7827ddb 100644 --- a/WitnessRandomizer/WitnessRandomizer.cpp +++ b/WitnessRandomizer/WitnessRandomizer.cpp | |||
@@ -1,8 +1,12 @@ | |||
1 | /* | 1 | /* |
2 | * TODO: Split out main() logic into another file, and move into separate functions for easier testing. Then write tests. | ||
2 | * BUGS: | 3 | * BUGS: |
3 | * Shipwreck vault fails, possibly because of dot_reflection? | 4 | * Shipwreck vault fails, possibly because of dot_reflection? Sometimes? |
4 | * Treehouse pivots *should* work, but I need to not copy style_flags. | 5 | * Treehouse pivots *should* work, but I need to not copy style_flags. |
5 | This seems to cause crashes when pivots appear elsewhere in the world. | 6 | This seems to cause crashes when pivots appear elsewhere in the world. |
7 | * Some panels are impossible casually: (idc, I think) | ||
8 | ** Town Stars, Invisible dots | ||
9 | * Something is wrong with jungle | ||
6 | * FEATURES: | 10 | * FEATURES: |
7 | * SWAP_TARGETS should still require the full panel sequence (and have ways to prevent softlocks?) | 11 | * SWAP_TARGETS should still require the full panel sequence (and have ways to prevent softlocks?) |
8 | ** Think about: Jungle | 12 | ** Think about: Jungle |
@@ -34,7 +38,6 @@ size_t find(const std::vector<T> &data, T search, size_t startIndex = 0) { | |||
34 | 38 | ||
35 | int main(int argc, char** argv) | 39 | int main(int argc, char** argv) |
36 | { | 40 | { |
37 | |||
38 | WitnessRandomizer randomizer = WitnessRandomizer(); | 41 | WitnessRandomizer randomizer = WitnessRandomizer(); |
39 | 42 | ||
40 | if (argc == 2) { | 43 | if (argc == 2) { |
@@ -45,6 +48,22 @@ int main(int argc, char** argv) | |||
45 | srand(seed); | 48 | srand(seed); |
46 | } | 49 | } |
47 | 50 | ||
51 | /* | ||
52 | randomizer.SwapPanels(0x0007C, 0x0005D, SWAP_LINES | SWAP_STYLE); // Symmetry Island Colored Dots 1 | ||
53 | randomizer.SwapPanels(0x0007E, 0x0005E, SWAP_LINES | SWAP_STYLE); // Symmetry Island Colored Dots 2 | ||
54 | randomizer.SwapPanels(0x00075, 0x0005F, SWAP_LINES | SWAP_STYLE); // Symmetry Island Colored Dots 3 | ||
55 | randomizer.SwapPanels(0x00073, 0x00060, SWAP_LINES | SWAP_STYLE); // Symmetry Island Colored Dots 4 | ||
56 | randomizer.SwapPanels(0x00077, 0x00061, SWAP_LINES | SWAP_STYLE); // Symmetry Island Colored Dots 5 | ||
57 | 0x00079; // Symmetry Island Colored Dots 6 | ||
58 | |||
59 | 0x0005D; // Outside Tutorial Dots Tutorial 1 | ||
60 | 0x0005E; // Outside Tutorial Dots Tutorial 2 | ||
61 | 0x0005F; // Outside Tutorial Dots Tutorial 3 | ||
62 | 0x00060; // Outside Tutorial Dots Tutorial 4 | ||
63 | 0x00061; // Outside Tutorial Dots Tutorial 5 | ||
64 | */ | ||
65 | |||
66 | |||
48 | // Content swaps -- must happen before squarePanels | 67 | // Content swaps -- must happen before squarePanels |
49 | randomizer.Randomize(upDownPanels, SWAP_LINES | SWAP_STYLE); | 68 | randomizer.Randomize(upDownPanels, SWAP_LINES | SWAP_STYLE); |
50 | randomizer.Randomize(leftForwardRightPanels, SWAP_LINES); | 69 | randomizer.Randomize(leftForwardRightPanels, SWAP_LINES); |
@@ -60,8 +79,10 @@ int main(int argc, char** argv) | |||
60 | std::vector<int> keepFrontLaserTarget = randomizer.ReadPanelData<int>(0x0360E, TARGET, 1); | 79 | std::vector<int> keepFrontLaserTarget = randomizer.ReadPanelData<int>(0x0360E, TARGET, 1); |
61 | randomizer.WritePanelData<int>(0x03317, TARGET, keepFrontLaserTarget); | 80 | randomizer.WritePanelData<int>(0x03317, TARGET, keepFrontLaserTarget); |
62 | 81 | ||
63 | /* Jungle */ | 82 | std::vector<int> randomOrder; |
64 | std::vector<int> randomOrder = std::vector(junglePanels.size(), 0); | 83 | |
84 | /* Jungle | ||
85 | randomOrder = std::vector(junglePanels.size(), 0); | ||
65 | std::iota(randomOrder.begin(), randomOrder.end(), 0); | 86 | std::iota(randomOrder.begin(), randomOrder.end(), 0); |
66 | // Randomize Waves 2-7 | 87 | // Randomize Waves 2-7 |
67 | // Waves 1 cannot be randomized, since no other panel can start on | 88 | // Waves 1 cannot be randomized, since no other panel can start on |
@@ -69,6 +90,7 @@ int main(int argc, char** argv) | |||
69 | // Randomize Pitches 1-6 onto themselves | 90 | // Randomize Pitches 1-6 onto themselves |
70 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 7, 13); | 91 | randomizer.RandomizeRange(randomOrder, SWAP_NONE, 7, 13); |
71 | randomizer.ReassignTargets(junglePanels, randomOrder); | 92 | randomizer.ReassignTargets(junglePanels, randomOrder); |
93 | */ | ||
72 | 94 | ||
73 | /* Bunker */ | 95 | /* Bunker */ |
74 | randomOrder = std::vector(bunkerPanels.size(), 0); | 96 | randomOrder = std::vector(bunkerPanels.size(), 0); |
@@ -104,7 +126,6 @@ int main(int argc, char** argv) | |||
104 | 126 | ||
105 | randomizer.ReassignTargets(monasteryPanels, randomOrder); | 127 | randomizer.ReassignTargets(monasteryPanels, randomOrder); |
106 | */ | 128 | */ |
107 | |||
108 | } | 129 | } |
109 | 130 | ||
110 | WitnessRandomizer::WitnessRandomizer() | 131 | WitnessRandomizer::WitnessRandomizer() |
@@ -117,7 +138,7 @@ WitnessRandomizer::WitnessRandomizer() | |||
117 | // Distance-gate shadows laser to prevent sniping through the bars | 138 | // Distance-gate shadows laser to prevent sniping through the bars |
118 | WritePanelData<float>(0x19650, MAX_BROADCAST_DISTANCE, {2.5f}); | 139 | WritePanelData<float>(0x19650, MAX_BROADCAST_DISTANCE, {2.5f}); |
119 | // Change the shadows tutorial cable to only activate avoid | 140 | // Change the shadows tutorial cable to only activate avoid |
120 | WritePanelData<int>(0x319A8, 0xD8, {0}); | 141 | WritePanelData<int>(0x319A8, CABLE_TARGET_2, {0}); |
121 | // Change shadows avoid 8 to power shadows follow | 142 | // Change shadows avoid 8 to power shadows follow |
122 | WritePanelData<int>(0x1972F, TARGET, {0x1C34C}); | 143 | WritePanelData<int>(0x1972F, TARGET, {0x1C34C}); |
123 | 144 | ||
diff --git a/WitnessRandomizer/WitnessRandomizer.h b/WitnessRandomizer/WitnessRandomizer.h index 3d748d1..0c73b89 100644 --- a/WitnessRandomizer/WitnessRandomizer.h +++ b/WitnessRandomizer/WitnessRandomizer.h | |||
@@ -91,6 +91,7 @@ private: | |||
91 | #define COLORED_REGIONS 0x4A8 | 91 | #define COLORED_REGIONS 0x4A8 |
92 | #define PANEL_TARGET 0x4B0 | 92 | #define PANEL_TARGET 0x4B0 |
93 | #define SPECULAR_TEXTURE 0x4D8 | 93 | #define SPECULAR_TEXTURE 0x4D8 |
94 | #define CABLE_TARGET_2 0xD8 | ||
94 | #elif GLOBALS == 0x62A080 | 95 | #elif GLOBALS == 0x62A080 |
95 | #define PATH_COLOR 0xC0 | 96 | #define PATH_COLOR 0xC0 |
96 | #define REFLECTION_PATH_COLOR 0xD0 | 97 | #define REFLECTION_PATH_COLOR 0xD0 |
@@ -104,7 +105,7 @@ private: | |||
104 | #define ERROR_COLOR 0x160 | 105 | #define ERROR_COLOR 0x160 |
105 | #define PATTERN_POINT_COLOR 0x180 | 106 | #define PATTERN_POINT_COLOR 0x180 |
106 | #define PATTERN_POINT_COLOR_A 0x190 | 107 | #define PATTERN_POINT_COLOR_A 0x190 |
107 | #define PATTERN_POINT_COLOR_B 0x200 | 108 | #define PATTERN_POINT_COLOR_B 0x1A0 |
108 | #define SYMBOL_A 0x1B0 | 109 | #define SYMBOL_A 0x1B0 |
109 | #define SYMBOL_B 0x1C0 | 110 | #define SYMBOL_B 0x1C0 |
110 | #define SYMBOL_C 0x1D0 | 111 | #define SYMBOL_C 0x1D0 |
@@ -151,4 +152,5 @@ private: | |||
151 | #define COLORED_REGIONS 0x4A0 | 152 | #define COLORED_REGIONS 0x4A0 |
152 | #define PANEL_TARGET 0x4A8 | 153 | #define PANEL_TARGET 0x4A8 |
153 | #define SPECULAR_TEXTURE 0x4D0 | 154 | #define SPECULAR_TEXTURE 0x4D0 |
155 | #define CABLE_TARGET_2 0xD0 | ||
154 | #endif \ No newline at end of file | 156 | #endif \ No newline at end of file |