From 418f1c0b083476c357a318b84a52bed28c6a43f9 Mon Sep 17 00:00:00 2001 From: nn <53490794+nn357@users.noreply.github.com> Date: Wed, 14 Jan 2026 00:53:06 +0900 Subject: [PATCH 01/11] disable_spikeblue --- patches/rom_map/Bank 90.txt | 1 + patches/src/remove_bluesuit.asm | 7 ++++ patches/src/remove_spikesuit.asm | 31 ++++++++++++++++++ .../help/quality/disable_bluesuit.html | 18 +++++++++++ .../help/quality/disable_spikesuit.html | 18 +++++++++++ .../templates/generate/quality_of_life.html | 32 +++++++++++++++++++ .../templates/generate/scripts.html | 4 +++ rust/maprando/src/patch.rs | 8 +++++ rust/maprando/src/settings.rs | 2 ++ 9 files changed, 121 insertions(+) create mode 100644 patches/src/remove_bluesuit.asm create mode 100644 patches/src/remove_spikesuit.asm create mode 100644 rust/maprando-web/templates/generate/help/quality/disable_bluesuit.html create mode 100644 rust/maprando-web/templates/generate/help/quality/disable_spikesuit.html diff --git a/patches/rom_map/Bank 90.txt b/patches/rom_map/Bank 90.txt index a5a383881b..6895fe176e 100644 --- a/patches/rom_map/Bank 90.txt +++ b/patches/rom_map/Bank 90.txt @@ -8,3 +8,4 @@ $F980 - $FA00: respin.asm $FA00 - $FC00: map_progress_maintain.asm (list of cross-area tiles to reveal) $FC00 - $FC10: Fake Lava.asm $FC10 - $FC20: vanilla_bugfixes.asm +$FC20 - $FC3F: remove_spikesuit.asm \ No newline at end of file diff --git a/patches/src/remove_bluesuit.asm b/patches/src/remove_bluesuit.asm new file mode 100644 index 0000000000..15e4cf3ea3 --- /dev/null +++ b/patches/src/remove_bluesuit.asm @@ -0,0 +1,7 @@ +; Removes bluesuit ability + +arch snes.cpu +lorom + +org $91D35C ; replace branch check of samus running momentum flag +nop nop \ No newline at end of file diff --git a/patches/src/remove_spikesuit.asm b/patches/src/remove_spikesuit.asm new file mode 100644 index 0000000000..bff0071251 --- /dev/null +++ b/patches/src/remove_spikesuit.asm @@ -0,0 +1,31 @@ +; Removes a spikesuit state from samus + +arch snes.cpu +lorom + +!bank_90_free_space_start = $90FC20 +!bank_90_free_space_end = $90FC3F + +org $90D4BC ; hook end of shinespark crash + jsl check_ss + nop + nop + +org !bank_90_free_space_start +check_ss: + LDA $0ACC ; Samus palette type normal? [regular shinecharge] + BNE .skip + LDA $0A68 ; special timer non zero? [can spark] + BEQ .skip + STZ $0A68 ; goodbye spikesuit + LDA #$02D + JSL $8090CB ; play a sound effect + ;LDA #$0016 + ;JSL $8090A3 + .skip: + LDA #$0002 + STA $0A32 + STZ $0DEC + RTL + +assert pc() <= !bank_90_free_space_end \ No newline at end of file diff --git a/rust/maprando-web/templates/generate/help/quality/disable_bluesuit.html b/rust/maprando-web/templates/generate/help/quality/disable_bluesuit.html new file mode 100644 index 0000000000..65fffabec9 --- /dev/null +++ b/rust/maprando-web/templates/generate/help/quality/disable_bluesuit.html @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/rust/maprando-web/templates/generate/help/quality/disable_spikesuit.html b/rust/maprando-web/templates/generate/help/quality/disable_spikesuit.html new file mode 100644 index 0000000000..f0c834bc21 --- /dev/null +++ b/rust/maprando-web/templates/generate/help/quality/disable_spikesuit.html @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/rust/maprando-web/templates/generate/quality_of_life.html b/rust/maprando-web/templates/generate/quality_of_life.html index aaff51cb79..5aa5960987 100644 --- a/rust/maprando-web/templates/generate/quality_of_life.html +++ b/rust/maprando-web/templates/generate/quality_of_life.html @@ -494,6 +494,36 @@

Quality-of-life options

+ +
+
+ + +
+
+ + + + +
+
+ +
+
+ + +
+
+ + + + +
+
@@ -539,5 +569,7 @@

Quality-of-life options

{% include "help/quality/early_save.html" %} {% include "help/quality/persist_flash_suit.html" %} {% include "help/quality/persist_blue_suit.html" %} +{% include "help/quality/disable_spikesuit.html" %} +{% include "help/quality/disable_bluesuit.html" %} {% include "initial_map_reveal.html" %} diff --git a/rust/maprando-web/templates/generate/scripts.html b/rust/maprando-web/templates/generate/scripts.html index e11f7b5888..2e8bf8b3f3 100644 --- a/rust/maprando-web/templates/generate/scripts.html +++ b/rust/maprando-web/templates/generate/scripts.html @@ -280,6 +280,8 @@ "early_save": formData.get("early_save") == "true", "persist_flash_suit": formData.get("persist_flash_suit") == "true", "persist_blue_suit": formData.get("persist_blue_suit") == "true", + "disable_spikesuit": formData.get("disable_spikesuit") == "true", + "disable_bluesuit": formData.get("disable_bluesuit") == "true", }, "objective_settings": buildObjectiveSettings(formData), "map_layout": formData.get("map_layout"), @@ -503,6 +505,8 @@ applyRadioValue("earlySave", preset.early_save); applyRadioValue("persistFlashSuit", preset.persist_flash_suit); applyRadioValue("persistBlueSuit", preset.persist_blue_suit); + applyRadioValue("disableSpikeSuit", preset.disable_spikesuit); + applyRadioValue("disableBluesuit", preset.disable_bluesuit); } function applyStartLocationSettings(preset) { diff --git a/rust/maprando/src/patch.rs b/rust/maprando/src/patch.rs index 91e1d0c088..097d5ad7d4 100644 --- a/rust/maprando/src/patch.rs +++ b/rust/maprando/src/patch.rs @@ -638,6 +638,14 @@ impl Patcher<'_> { patches.push("load_blue_suit"); } + if self.settings.quality_of_life_settings.disable_spikesuit { + patches.push("disable_spikesuit") + } + + if self.settings.quality_of_life_settings.disable_bluesuit { + patches.push("disable_bluesuit") + } + for patch_name in patches { let patch_path = patches_dir.join(patch_name.to_string() + ".ips"); apply_ips_patch(self.rom, &patch_path)?; diff --git a/rust/maprando/src/settings.rs b/rust/maprando/src/settings.rs index f422215284..51199f01a8 100644 --- a/rust/maprando/src/settings.rs +++ b/rust/maprando/src/settings.rs @@ -154,6 +154,8 @@ pub struct QualityOfLifeSettings { pub early_save: bool, pub persist_flash_suit: bool, pub persist_blue_suit: bool, + pub disable_spikesuit: bool, + pub disable_bluesuit: bool, } #[derive(Debug, Copy, Clone, Serialize, Deserialize, PartialEq)] From 9d93587014dbe89c7e3ee32ee5c14780c33a461f Mon Sep 17 00:00:00 2001 From: nn <53490794+nn357@users.noreply.github.com> Date: Wed, 14 Jan 2026 01:18:38 +0900 Subject: [PATCH 02/11] Update remove_spikesuit.asm --- patches/src/remove_spikesuit.asm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/patches/src/remove_spikesuit.asm b/patches/src/remove_spikesuit.asm index bff0071251..87f57facf2 100644 --- a/patches/src/remove_spikesuit.asm +++ b/patches/src/remove_spikesuit.asm @@ -18,10 +18,8 @@ check_ss: LDA $0A68 ; special timer non zero? [can spark] BEQ .skip STZ $0A68 ; goodbye spikesuit - LDA #$02D + LDA #$0019 JSL $8090CB ; play a sound effect - ;LDA #$0016 - ;JSL $8090A3 .skip: LDA #$0002 STA $0A32 From 7c4ee7e8dcd7840563947cb749339150bd2640ac Mon Sep 17 00:00:00 2001 From: nn <53490794+nn357@users.noreply.github.com> Date: Thu, 15 Jan 2026 07:16:58 +0900 Subject: [PATCH 03/11] add ips --- patches/ips/remove_bluesuit.ips | Bin 0 -> 15 bytes patches/ips/remove_spikesuit.ips | Bin 0 -> 54 bytes patches/src/remove_bluesuit.asm | 3 ++- 3 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 patches/ips/remove_bluesuit.ips create mode 100644 patches/ips/remove_spikesuit.ips diff --git a/patches/ips/remove_bluesuit.ips b/patches/ips/remove_bluesuit.ips new file mode 100644 index 0000000000000000000000000000000000000000..9f25be2873f2575c821f585d538a89abf6606bd5 GIT binary patch literal 15 WcmWG=3~~10xE#a4^y-zXzZ(E2VFg$K literal 0 HcmV?d00001 diff --git a/patches/ips/remove_spikesuit.ips b/patches/ips/remove_spikesuit.ips new file mode 100644 index 0000000000000000000000000000000000000000..dbaa205800bfa438052c27fe9ebf914d60a4564d GIT binary patch literal 54 zcmV-60LlMQK~zIX2vocP1|lH*km~9Pd>{ZGt;`D053Ohl@Cux03aJ?YBFm6~sR96v MG76mR4QoYDMii_Qi2wiq literal 0 HcmV?d00001 diff --git a/patches/src/remove_bluesuit.asm b/patches/src/remove_bluesuit.asm index 15e4cf3ea3..4fe17041b7 100644 --- a/patches/src/remove_bluesuit.asm +++ b/patches/src/remove_bluesuit.asm @@ -4,4 +4,5 @@ arch snes.cpu lorom org $91D35C ; replace branch check of samus running momentum flag -nop nop \ No newline at end of file +nop +nop \ No newline at end of file From c7c1614daf92f6e180d3a9e013cb594c3a31dfa1 Mon Sep 17 00:00:00 2001 From: nn <53490794+nn357@users.noreply.github.com> Date: Thu, 15 Jan 2026 09:46:12 +0900 Subject: [PATCH 04/11] move into other settings --- patches/ips/remove_bluesuit.ips | Bin 15 -> 24 bytes patches/src/remove_bluesuit.asm | 6 ++-- .../Community Race Season 4.json | 2 ++ rust/data/presets/full-settings/Default.json | 2 ++ .../templates/generate/game_variations.html | 24 +++++++++++++++ .../disable_bluesuit.html | 7 ++++- .../disable_spikesuit.html | 11 +++++-- .../templates/generate/quality_of_life.html | 29 ------------------ .../templates/generate/scripts.html | 8 ++--- rust/maprando/src/patch.rs | 15 ++++----- rust/maprando/src/settings.rs | 4 +-- 11 files changed, 60 insertions(+), 48 deletions(-) rename rust/maprando-web/templates/generate/help/{quality => variations}/disable_bluesuit.html (73%) rename rust/maprando-web/templates/generate/help/{quality => variations}/disable_spikesuit.html (60%) diff --git a/patches/ips/remove_bluesuit.ips b/patches/ips/remove_bluesuit.ips index 9f25be2873f2575c821f585d538a89abf6606bd5..ca0b115031bb8eb9cc6bcc0deeb2282e780758d9 100644 GIT binary patch literal 24 fcmWG=3~~10xE#a4J;#oFtqu2w-Z?hhuKsQSUS9{s literal 15 WcmWG=3~~10xE#a4^y-zXzZ(E2VFg$K diff --git a/patches/src/remove_bluesuit.asm b/patches/src/remove_bluesuit.asm index 4fe17041b7..5eb3e3a16f 100644 --- a/patches/src/remove_bluesuit.asm +++ b/patches/src/remove_bluesuit.asm @@ -4,5 +4,7 @@ arch snes.cpu lorom org $91D35C ; replace branch check of samus running momentum flag -nop -nop \ No newline at end of file + STZ $0B3E + LDA $0B3C + BEQ $DE8D + STZ $0B3C \ No newline at end of file diff --git a/rust/data/presets/full-settings/Community Race Season 4.json b/rust/data/presets/full-settings/Community Race Season 4.json index 584bde1d06..07d65fa54e 100644 --- a/rust/data/presets/full-settings/Community Race Season 4.json +++ b/rust/data/presets/full-settings/Community Race Season 4.json @@ -4559,6 +4559,8 @@ "map_station_reveal": "Full", "energy_free_shinesparks": false, "ultra_low_qol": false, + "disable_spikesuit": false, + "disable_bluesuit": false, "race_mode": true, "random_seed": null }, diff --git a/rust/data/presets/full-settings/Default.json b/rust/data/presets/full-settings/Default.json index 550529d7fc..bec3946160 100644 --- a/rust/data/presets/full-settings/Default.json +++ b/rust/data/presets/full-settings/Default.json @@ -4559,6 +4559,8 @@ "door_locks_size": "Large", "map_station_reveal": "Full", "energy_free_shinesparks": false, + "disable_spikesuit": false, + "disable_bluesuit": false, "ultra_low_qol": false, "race_mode": false, "random_seed": null diff --git a/rust/maprando-web/templates/generate/game_variations.html b/rust/maprando-web/templates/generate/game_variations.html index 800b5d26d4..609e789f17 100644 --- a/rust/maprando-web/templates/generate/game_variations.html +++ b/rust/maprando-web/templates/generate/game_variations.html @@ -75,6 +75,30 @@ +
+
+ {% include "help/variations/disable_spikesuit.html" %} + +
+
+ + + + +
+
+
+
+ {% include "help/variations/disable_bluesuit.html" %} + +
+
+ + + + +
+
{% include "help/race.html" %} diff --git a/rust/maprando-web/templates/generate/help/quality/disable_bluesuit.html b/rust/maprando-web/templates/generate/help/variations/disable_bluesuit.html similarity index 73% rename from rust/maprando-web/templates/generate/help/quality/disable_bluesuit.html rename to rust/maprando-web/templates/generate/help/variations/disable_bluesuit.html index 65fffabec9..ba0987839f 100644 --- a/rust/maprando-web/templates/generate/help/quality/disable_bluesuit.html +++ b/rust/maprando-web/templates/generate/help/variations/disable_bluesuit.html @@ -1,4 +1,9 @@ -