From e59cc361d05f6fa270f6875d7a33e87a96573747 Mon Sep 17 00:00:00 2001 From: ginnoir Date: Sat, 6 Jun 2026 15:32:47 -0500 Subject: [PATCH] =?UTF-8?q?feat:=20spin=20off=20Pok=C3=A9mon=20ROM-hack=20?= =?UTF-8?q?catalog=20from=20homelabstack?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Curated knowledge base + pipeline for the valhalla Pokémon ROM-hack collection, moved out of the homelabstack infra repo on 2026-06-06 so that repo stays focused on the homelab. - pokemon-romhack-vault/ Obsidian vault: 75 hack notes + Index/Types/Platform MOCs (generated by build-romhack-vault.py) - scripts/ build-romhack-vault, romhack-import/fetch/apply - pokemon-romhacks-wanted.md manual-acquisition list (gated hacks) - drop/ gitignored ~1.3GB binary staging area The ROMs live on valhalla (/storage1/Emulation) served by the RomM stack, which stays in homelabstack (stacks/roms). --- .gitattributes | 3 + .gitignore | 13 + README.md | 65 +++ .../Hacks/Adventure - Red Chapter.md | 33 ++ pokemon-romhack-vault/Hacks/Aesthetic Red.md | 33 ++ pokemon-romhack-vault/Hacks/Ambrosia.md | 33 ++ pokemon-romhack-vault/Hacks/Amethyst.md | 33 ++ .../Hacks/Blaze Black 2 Redux.md | 33 ++ pokemon-romhack-vault/Hacks/Blaze Black.md | 33 ++ pokemon-romhack-vault/Hacks/Brown.md | 33 ++ .../Hacks/Crystal Advance Redux.md | 33 ++ pokemon-romhack-vault/Hacks/Crystal Clear.md | 33 ++ .../Hacks/Crystal Inheritance.md | 33 ++ pokemon-romhack-vault/Hacks/Crystal Kaizo.md | 33 ++ .../Hacks/Dark Rising - Order Destroyed.md | 33 ++ pokemon-romhack-vault/Hacks/Dark Rising 2.md | 33 ++ pokemon-romhack-vault/Hacks/Dark Rising.md | 33 ++ pokemon-romhack-vault/Hacks/Elite Redux.md | 33 ++ pokemon-romhack-vault/Hacks/Emerald Azure.md | 33 ++ .../Hacks/Emerald Extended Cut.md | 33 ++ .../Hacks/Emerald Imperium.md | 33 ++ pokemon-romhack-vault/Hacks/Emerald Kaizo.md | 33 ++ pokemon-romhack-vault/Hacks/Emerald Rogue.md | 33 ++ .../Hacks/Emerald Seaglass.md | 33 ++ .../Hacks/Emerald Squared.md | 33 ++ .../Hacks/Fire Red Extended.md | 33 ++ pokemon-romhack-vault/Hacks/Fire of Sky.md | 33 ++ .../Hacks/FireRed & LeafGreen+ (FRLG+).md | 33 ++ pokemon-romhack-vault/Hacks/FireRed Deluxe.md | 33 ++ .../Hacks/FireRed Reignited.md | 33 ++ pokemon-romhack-vault/Hacks/Flora Sky.md | 33 ++ .../Hacks/Following Renegade Platinum.md | 33 ++ pokemon-romhack-vault/Hacks/GS Chronicles.md | 33 ++ pokemon-romhack-vault/Hacks/Gaia.md | 33 ++ pokemon-romhack-vault/Hacks/Glazed.md | 33 ++ pokemon-romhack-vault/Hacks/Heart and Soul.md | 33 ++ pokemon-romhack-vault/Hacks/Hearth.md | 33 ++ .../Hacks/Hoenn's Last Wish.md | 33 ++ .../Hacks/Inclement Emerald.md | 33 ++ pokemon-romhack-vault/Hacks/Inkwell.md | 33 ++ pokemon-romhack-vault/Hacks/Lazarus.md | 33 ++ pokemon-romhack-vault/Hacks/Light Platinum.md | 33 ++ pokemon-romhack-vault/Hacks/Liquid Crystal.md | 33 ++ .../Hacks/Low Budget Crystal.md | 33 ++ pokemon-romhack-vault/Hacks/Mega Power.md | 33 ++ pokemon-romhack-vault/Hacks/Modern Emerald.md | 33 ++ .../Hacks/Moemon Mega FireRed.md | 33 ++ .../Hacks/Moemon Star Emerald.md | 33 ++ pokemon-romhack-vault/Hacks/Odyssey.md | 33 ++ .../Hacks/Omega Ruby Origins.md | 33 ++ pokemon-romhack-vault/Hacks/Orange.md | 33 ++ pokemon-romhack-vault/Hacks/Peridot.md | 33 ++ pokemon-romhack-vault/Hacks/Phoenix Red.md | 33 ++ pokemon-romhack-vault/Hacks/Pisces.md | 33 ++ .../Hacks/Polished Crystal.md | 33 ++ pokemon-romhack-vault/Hacks/Prism.md | 33 ++ pokemon-romhack-vault/Hacks/Project Nova.md | 33 ++ pokemon-romhack-vault/Hacks/R.O.W.E..md | 33 ++ pokemon-romhack-vault/Hacks/Radical Red.md | 33 ++ pokemon-romhack-vault/Hacks/Recordkeepers.md | 33 ++ .../Hacks/Renegade Platinum.md | 33 ++ pokemon-romhack-vault/Hacks/Resolute.md | 33 ++ pokemon-romhack-vault/Hacks/Sacred Gold.md | 33 ++ pokemon-romhack-vault/Hacks/Saiph 2.md | 33 ++ pokemon-romhack-vault/Hacks/Saiph.md | 33 ++ pokemon-romhack-vault/Hacks/Snakewood.md | 33 ++ pokemon-romhack-vault/Hacks/Sors.md | 33 ++ .../Hacks/Sovereign of the Skies.md | 33 ++ pokemon-romhack-vault/Hacks/Storm Silver.md | 33 ++ pokemon-romhack-vault/Hacks/Super Mariomon.md | 33 ++ .../Hacks/Sword and Shield Ultimate Plus.md | 33 ++ pokemon-romhack-vault/Hacks/The Pit.md | 33 ++ .../Hacks/Theta Emerald EX.md | 33 ++ pokemon-romhack-vault/Hacks/Tourmaline.md | 33 ++ pokemon-romhack-vault/Hacks/Valiant.md | 33 ++ .../Hacks/Volt White 2 Redux.md | 33 ++ pokemon-romhack-vault/Hacks/Volt White.md | 33 ++ pokemon-romhack-vault/Hacks/WaveBlue.md | 33 ++ pokemon-romhack-vault/Index.md | 116 +++++ pokemon-romhack-vault/Platforms/GB.md | 16 + pokemon-romhack-vault/Platforms/GBA.md | 72 +++ pokemon-romhack-vault/Platforms/GBC.md | 24 + pokemon-romhack-vault/Platforms/NDS.md | 23 + pokemon-romhack-vault/README.md | 23 + pokemon-romhack-vault/Types.md | 186 +++++++ pokemon-romhacks-wanted.md | 79 +++ scripts/build-romhack-vault.py | 471 ++++++++++++++++++ scripts/romhack-apply.py | 135 +++++ scripts/romhack-fetch.py | 260 ++++++++++ scripts/romhack-import.py | 280 +++++++++++ 90 files changed, 4241 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 README.md create mode 100644 pokemon-romhack-vault/Hacks/Adventure - Red Chapter.md create mode 100644 pokemon-romhack-vault/Hacks/Aesthetic Red.md create mode 100644 pokemon-romhack-vault/Hacks/Ambrosia.md create mode 100644 pokemon-romhack-vault/Hacks/Amethyst.md create mode 100644 pokemon-romhack-vault/Hacks/Blaze Black 2 Redux.md create mode 100644 pokemon-romhack-vault/Hacks/Blaze Black.md create mode 100644 pokemon-romhack-vault/Hacks/Brown.md create mode 100644 pokemon-romhack-vault/Hacks/Crystal Advance Redux.md create mode 100644 pokemon-romhack-vault/Hacks/Crystal Clear.md create mode 100644 pokemon-romhack-vault/Hacks/Crystal Inheritance.md create mode 100644 pokemon-romhack-vault/Hacks/Crystal Kaizo.md create mode 100644 pokemon-romhack-vault/Hacks/Dark Rising - Order Destroyed.md create mode 100644 pokemon-romhack-vault/Hacks/Dark Rising 2.md create mode 100644 pokemon-romhack-vault/Hacks/Dark Rising.md create mode 100644 pokemon-romhack-vault/Hacks/Elite Redux.md create mode 100644 pokemon-romhack-vault/Hacks/Emerald Azure.md create mode 100644 pokemon-romhack-vault/Hacks/Emerald Extended Cut.md create mode 100644 pokemon-romhack-vault/Hacks/Emerald Imperium.md create mode 100644 pokemon-romhack-vault/Hacks/Emerald Kaizo.md create mode 100644 pokemon-romhack-vault/Hacks/Emerald Rogue.md create mode 100644 pokemon-romhack-vault/Hacks/Emerald Seaglass.md create mode 100644 pokemon-romhack-vault/Hacks/Emerald Squared.md create mode 100644 pokemon-romhack-vault/Hacks/Fire Red Extended.md create mode 100644 pokemon-romhack-vault/Hacks/Fire of Sky.md create mode 100644 pokemon-romhack-vault/Hacks/FireRed & LeafGreen+ (FRLG+).md create mode 100644 pokemon-romhack-vault/Hacks/FireRed Deluxe.md create mode 100644 pokemon-romhack-vault/Hacks/FireRed Reignited.md create mode 100644 pokemon-romhack-vault/Hacks/Flora Sky.md create mode 100644 pokemon-romhack-vault/Hacks/Following Renegade Platinum.md create mode 100644 pokemon-romhack-vault/Hacks/GS Chronicles.md create mode 100644 pokemon-romhack-vault/Hacks/Gaia.md create mode 100644 pokemon-romhack-vault/Hacks/Glazed.md create mode 100644 pokemon-romhack-vault/Hacks/Heart and Soul.md create mode 100644 pokemon-romhack-vault/Hacks/Hearth.md create mode 100644 pokemon-romhack-vault/Hacks/Hoenn's Last Wish.md create mode 100644 pokemon-romhack-vault/Hacks/Inclement Emerald.md create mode 100644 pokemon-romhack-vault/Hacks/Inkwell.md create mode 100644 pokemon-romhack-vault/Hacks/Lazarus.md create mode 100644 pokemon-romhack-vault/Hacks/Light Platinum.md create mode 100644 pokemon-romhack-vault/Hacks/Liquid Crystal.md create mode 100644 pokemon-romhack-vault/Hacks/Low Budget Crystal.md create mode 100644 pokemon-romhack-vault/Hacks/Mega Power.md create mode 100644 pokemon-romhack-vault/Hacks/Modern Emerald.md create mode 100644 pokemon-romhack-vault/Hacks/Moemon Mega FireRed.md create mode 100644 pokemon-romhack-vault/Hacks/Moemon Star Emerald.md create mode 100644 pokemon-romhack-vault/Hacks/Odyssey.md create mode 100644 pokemon-romhack-vault/Hacks/Omega Ruby Origins.md create mode 100644 pokemon-romhack-vault/Hacks/Orange.md create mode 100644 pokemon-romhack-vault/Hacks/Peridot.md create mode 100644 pokemon-romhack-vault/Hacks/Phoenix Red.md create mode 100644 pokemon-romhack-vault/Hacks/Pisces.md create mode 100644 pokemon-romhack-vault/Hacks/Polished Crystal.md create mode 100644 pokemon-romhack-vault/Hacks/Prism.md create mode 100644 pokemon-romhack-vault/Hacks/Project Nova.md create mode 100644 pokemon-romhack-vault/Hacks/R.O.W.E..md create mode 100644 pokemon-romhack-vault/Hacks/Radical Red.md create mode 100644 pokemon-romhack-vault/Hacks/Recordkeepers.md create mode 100644 pokemon-romhack-vault/Hacks/Renegade Platinum.md create mode 100644 pokemon-romhack-vault/Hacks/Resolute.md create mode 100644 pokemon-romhack-vault/Hacks/Sacred Gold.md create mode 100644 pokemon-romhack-vault/Hacks/Saiph 2.md create mode 100644 pokemon-romhack-vault/Hacks/Saiph.md create mode 100644 pokemon-romhack-vault/Hacks/Snakewood.md create mode 100644 pokemon-romhack-vault/Hacks/Sors.md create mode 100644 pokemon-romhack-vault/Hacks/Sovereign of the Skies.md create mode 100644 pokemon-romhack-vault/Hacks/Storm Silver.md create mode 100644 pokemon-romhack-vault/Hacks/Super Mariomon.md create mode 100644 pokemon-romhack-vault/Hacks/Sword and Shield Ultimate Plus.md create mode 100644 pokemon-romhack-vault/Hacks/The Pit.md create mode 100644 pokemon-romhack-vault/Hacks/Theta Emerald EX.md create mode 100644 pokemon-romhack-vault/Hacks/Tourmaline.md create mode 100644 pokemon-romhack-vault/Hacks/Valiant.md create mode 100644 pokemon-romhack-vault/Hacks/Volt White 2 Redux.md create mode 100644 pokemon-romhack-vault/Hacks/Volt White.md create mode 100644 pokemon-romhack-vault/Hacks/WaveBlue.md create mode 100644 pokemon-romhack-vault/Index.md create mode 100644 pokemon-romhack-vault/Platforms/GB.md create mode 100644 pokemon-romhack-vault/Platforms/GBA.md create mode 100644 pokemon-romhack-vault/Platforms/GBC.md create mode 100644 pokemon-romhack-vault/Platforms/NDS.md create mode 100644 pokemon-romhack-vault/README.md create mode 100644 pokemon-romhack-vault/Types.md create mode 100644 pokemon-romhacks-wanted.md create mode 100644 scripts/build-romhack-vault.py create mode 100644 scripts/romhack-apply.py create mode 100644 scripts/romhack-fetch.py create mode 100644 scripts/romhack-import.py diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..7b5246a --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +# Keep files Unix-clean (LF). The romhack-*.py scripts run on the Linux host +# (valhalla) via SSH, so CRLF must never sneak in. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..df6c1ee --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +# Large ROM/patch binaries — staging area for scripts/romhack-import.py. +# Never commit ROMs/patches; this folder is per-machine scratch. +drop/ + +# OS / editor cruft +.DS_Store +Thumbs.db +*.swp +*~ + +# Local scratch +*.tmp +*.log diff --git a/README.md b/README.md new file mode 100644 index 0000000..d67ef38 --- /dev/null +++ b/README.md @@ -0,0 +1,65 @@ +# Pokémon ROM Hacks + +Curated knowledge base + tooling for the Pokémon ROM-hack collection in the +valhalla homelab library. **Spun off from the `homelabstack` repo on 2026-06-06** +to keep that repo focused on infrastructure. + +The ROM-hacks themselves live on **valhalla** under the EmuDeck/RomM tree at +`/storage1/Emulation/roms//Hacks/` and are served by the RomM stack +(`roms.ginnoir.com`) — that deployment stays in `homelabstack` (`stacks/roms/`). +This repo is the *catalog + pipeline*, not the ROMs. + +## Layout + +| Path | What | +|---|---| +| `pokemon-romhack-vault/` | Obsidian vault — one note per hack (75), plus Index/Types/Platform MOCs. Open this folder as an Obsidian vault. **Generated** by `scripts/build-romhack-vault.py`. | +| `pokemon-romhacks-wanted.md` | Manual-acquisition list — worthwhile hacks gated behind Discord/hackdex/Drive that can't be auto-fetched. | +| `scripts/build-romhack-vault.py` | Regenerates `pokemon-romhack-vault/` from the in-script `HACKS` dataset. Edit the dataset, re-run. | +| `scripts/romhack-import.py` | Import a drop folder of mixed ROMs/patches/docs into the valhalla library (validate, clean-name, apply patches, archive). Runs on valhalla. | +| `scripts/romhack-fetch.py` | Acquire + patch + place worthwhile hacks from direct (non-gated) sources. Manifest-driven. Runs on valhalla. | +| `scripts/romhack-apply.py` | Apply a single IPS/BPS/UPS patch to a base ROM with checksum verification. | +| `drop/` | **gitignored** staging area (~1.3 GB) of ROM/patch binaries pending import. Never committed. | + +## Regenerating the vault + +``` +python scripts/build-romhack-vault.py +``` + +Writes the vault to `pokemon-romhack-vault/` (the output path is resolved relative +to `scripts/`, so keep `scripts/` a sibling of the vault dir). The in-script +`HACKS` dataset is the single source of truth — add a row and re-run to add a hack. + +### Vault schema + +Each hack note carries Obsidian **properties** (`platform`, `base`, `version`, +`status`, `type`, `generation`, `source`) so the Dataview/Bases plugins work, and +**tags** (`#platform/gba`, `#type/difficulty`, `#status/complete`, `#base/firered`) +so search/graph work with zero plugins. `library_path` points at the file under +`roms//Hacks/` on valhalla. + +## Live Obsidian vault + +A richer working copy of this catalog lives in ginnoir's self-hosted Obsidian +vault (CouchDB / obsidian-livesync, `obsidian.ginnoir.com`) under +**`Pokémon ROM Hacks/`**: + +``` +Pokémon ROM Hacks/ + _Claude.md — ROM-hack vault ops: schema, update patterns, new-hack checklist + Index.md — all 75 hacks (Dataview + static) + Play Queue.md — play-tracking dashboard + Hacks/ — 75 notes, one per hack + Bases/ — per-base MOCs (FireRed / Emerald / Crystal / Ruby / NDS) + Platforms/ — per-system MOCs (GBA / GBC / GB / NDS) +``` + +Access it via the Obsidian MCP (`mcp__obsidian__*`). The CouchDB sync stack +itself is deployed from `homelabstack` (`stacks/notes/`). + +## Acquisition policy + +Pre-3DS handhelds (gb/gbc/gba/nds) + pre-Wii consoles. Direct, non-anti-bot +sources only for auto-fetch; gated hacks go in `pokemon-romhacks-wanted.md` for +manual hand-off. No offensive/"shitpost" content (e.g. Clover excluded). diff --git a/pokemon-romhack-vault/Hacks/Adventure - Red Chapter.md b/pokemon-romhack-vault/Hacks/Adventure - Red Chapter.md new file mode 100644 index 0000000..10815cc --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Adventure - Red Chapter.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Adventure - Red Chapter" +platform: GBA +base: "FireRed" +version: "Beta 15" +status: "Complete (beta)" +type: ["New Experience"] +generation: "Gen 1–6 mons" +library_path: "roms/gba/Hacks/Pokemon - Adventure - Red Chapter (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-adventure-red-chapter.331313/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/completebeta", "type/newexperience"] +--- +# Pokémon Adventure - Red Chapter + +> [!info] New Experience — **Complete (beta)** +> Game Boy Advance · base **FireRed** · version **Beta 15** · Gen 1–6 mons + +## Summary +Based on the Pokémon Adventures (Pokémon Special) manga — play through Red's story with manga events. Beta 15 is the full, finished beta. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-adventure-red-chapter.331313/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Adventure%20-%20Red%20Chapter%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Adventure - Red Chapter (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Aesthetic Red.md b/pokemon-romhack-vault/Hacks/Aesthetic Red.md new file mode 100644 index 0000000..56496bf --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Aesthetic Red.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Aesthetic Red" +platform: GBA +base: "FireRed" +version: "1.1" +status: "Complete" +type: ["Cosmetic", "Vanilla+"] +generation: "Gen 1" +library_path: "roms/gba/Hacks/Pokemon - Aesthetic Red (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Aesthetic%20Red%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/complete", "type/cosmetic", "type/vanilla+"] +--- +# Pokémon Aesthetic Red + +> [!info] Cosmetic · Vanilla+ — **Complete** +> Game Boy Advance · base **FireRed** · version **1.1** · Gen 1 + +## Summary +A visual + musical overhaul of FireRed — restyled tiles, sprites, and soundtrack while keeping vanilla gameplay. + +## Type +[[Types#Cosmetic|Cosmetic]] [[Types#Vanilla+|Vanilla+]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Aesthetic%20Red%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Aesthetic Red (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Ambrosia.md b/pokemon-romhack-vault/Hacks/Ambrosia.md new file mode 100644 index 0000000..2c45a02 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Ambrosia.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Ambrosia" +platform: GBC +base: "Crystal" +version: "2.4.0" +status: "Ongoing" +type: ["New Experience"] +generation: "Gen 2 style" +library_path: "roms/gbc/Hacks/Pokemon - Ambrosia (Hack).gbc" +source: "https://www.pokecommunity.com/" +added: 2026-06-06 +tags: ["hack", "platform/gbc", "base/crystal", "status/ongoing", "type/newexperience"] +--- +# Pokémon Ambrosia + +> [!info] New Experience — **Ongoing** +> Game Boy Color · base **Crystal** · version **2.4.0** · Gen 2 style + +## Summary +An ambitious Crystal-engine hack with a new region, expanded dex, and modernized features pushed onto Gen 2 hardware. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source / info: https://www.pokecommunity.com/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Ambrosia%20rom%20hack + +## In the library +- `roms/gbc/Hacks/Pokemon - Ambrosia (Hack).gbc` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Amethyst.md b/pokemon-romhack-vault/Hacks/Amethyst.md new file mode 100644 index 0000000..a27510f --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Amethyst.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Amethyst" +platform: GBA +base: "Emerald" +version: "1.2.0" +status: "Ongoing" +type: ["Expansion", "New Experience"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Amethyst (Hack).gba" +source: "https://www.hackdex.app/hack/pokemon-amethyst" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/ongoing", "type/expansion", "type/newexperience"] +--- +# Pokémon Amethyst + +> [!info] Expansion · New Experience — **Ongoing** +> Game Boy Advance · base **Emerald** · version **1.2.0** · Multi-gen + +## Summary +A pokeemerald-expansion adventure with a new region/story and modern mechanics. + +## Type +[[Types#Expansion|Expansion]] [[Types#New Experience|New Experience]] + +## Links +- Source / info: https://www.hackdex.app/hack/pokemon-amethyst +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Amethyst%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Amethyst (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Blaze Black 2 Redux.md b/pokemon-romhack-vault/Hacks/Blaze Black 2 Redux.md new file mode 100644 index 0000000..c14ba9f --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Blaze Black 2 Redux.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Blaze Black 2 Redux" +platform: NDS +base: "Black 2" +version: "1.3.0" +status: "Complete" +type: ["Vanilla+", "Difficulty", "Expansion"] +generation: "Gen 1–5 mons" +library_path: "roms/nds/Hacks/Pokemon - Blaze Black 2 Redux (Hack).nds" +source: "https://www.pokecommunity.com/" +added: 2026-06-06 +tags: ["hack", "platform/nds", "base/black2", "status/complete", "type/vanilla+", "type/difficulty", "type/expansion"] +--- +# Pokémon Blaze Black 2 Redux + +> [!info] Vanilla+ · Difficulty · Expansion — **Complete** +> Nintendo DS · base **Black 2** · version **1.3.0** · Gen 1–5 mons + +## Summary +A community 'Redux' fork of Drayano's Blaze Black 2 — expanded availability, rebalanced difficulty, and extra content. + +## Type +[[Types#Vanilla+|Vanilla+]] [[Types#Difficulty|Difficulty]] [[Types#Expansion|Expansion]] + +## Links +- Source / info: https://www.pokecommunity.com/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Blaze%20Black%202%20Redux%20rom%20hack + +## In the library +- `roms/nds/Hacks/Pokemon - Blaze Black 2 Redux (Hack).nds` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Blaze Black.md b/pokemon-romhack-vault/Hacks/Blaze Black.md new file mode 100644 index 0000000..e3ccc12 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Blaze Black.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Blaze Black" +platform: NDS +base: "Black" +version: "—" +status: "Complete" +type: ["Vanilla+", "Difficulty"] +generation: "Gen 1–5 mons" +library_path: "roms/nds/Hacks/Pokemon - Blaze Black (Hack).nds" +source: "https://www.pokecommunity.com/threads/pokemon-blaze-black-volt-white.252355/" +added: 2026-06-06 +tags: ["hack", "platform/nds", "base/black", "status/complete", "type/vanilla+", "type/difficulty"] +--- +# Pokémon Blaze Black + +> [!info] Vanilla+ · Difficulty — **Complete** +> Nintendo DS · base **Black** · version **—** · Gen 1–5 mons + +## Summary +Drayano's Black overhaul — every species catchable in-game, boosted gym/E4 teams, and QoL. Pairs with Volt White. + +## Type +[[Types#Vanilla+|Vanilla+]] [[Types#Difficulty|Difficulty]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-blaze-black-volt-white.252355/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Blaze%20Black%20rom%20hack + +## In the library +- `roms/nds/Hacks/Pokemon - Blaze Black (Hack).nds` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Brown.md b/pokemon-romhack-vault/Hacks/Brown.md new file mode 100644 index 0000000..43715da --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Brown.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Brown" +platform: GB +base: "Red" +version: "1.1" +status: "Complete" +type: ["New Experience"] +generation: "Gen 1+" +library_path: "roms/gb/Hacks/Pokemon - Brown (Hack).gb" +source: "https://www.pokecommunity.com/threads/pokemon-brown.27915/" +added: 2026-06-06 +tags: ["hack", "platform/gb", "base/red", "status/complete", "type/newexperience"] +--- +# Pokémon Brown + +> [!info] New Experience — **Complete** +> Game Boy · base **Red** · version **1.1** · Gen 1+ + +## Summary +One of the oldest and most influential hacks. A brand-new Rijon region with new towns, gyms, and a custom dex built on Gen 1, by Koolboyman (who later made Prism). + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-brown.27915/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Brown%20rom%20hack + +## In the library +- `roms/gb/Hacks/Pokemon - Brown (Hack).gb` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Crystal Advance Redux.md b/pokemon-romhack-vault/Hacks/Crystal Advance Redux.md new file mode 100644 index 0000000..c335858 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Crystal Advance Redux.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Crystal Advance Redux" +platform: GBA +base: "Emerald" +version: "2026-05-06" +status: "Ongoing" +type: ["Demake", "Vanilla+"] +generation: "Gen 2 on GBA" +library_path: "roms/gba/Hacks/Pokemon - Crystal Advance Redux (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Crystal%20Advance%20Redux%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/ongoing", "type/demake", "type/vanilla+"] +--- +# Pokémon Crystal Advance Redux + +> [!info] Demake · Vanilla+ — **Ongoing** +> Game Boy Advance · base **Emerald** · version **2026-05-06** · Gen 2 on GBA + +## Summary +Pokémon Crystal rebuilt on the GBA (pokeemerald) with Gen-3+ engine conveniences — Johto with modern QoL. + +## Type +[[Types#Demake|Demake]] [[Types#Vanilla+|Vanilla+]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Crystal%20Advance%20Redux%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Crystal Advance Redux (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Crystal Clear.md b/pokemon-romhack-vault/Hacks/Crystal Clear.md new file mode 100644 index 0000000..6d7015f --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Crystal Clear.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Crystal Clear" +platform: GBC +base: "Crystal" +version: "2.5.7" +status: "Complete" +type: ["New Experience", "QoL"] +generation: "Gen 1–2" +library_path: "roms/gbc/Hacks/Pokemon - Crystal Clear (Hack).gbc" +source: "https://www.pokecommunity.com/threads/pokemon-crystal-clear.382197/" +added: 2026-06-06 +tags: ["hack", "platform/gbc", "base/crystal", "status/complete", "type/newexperience", "type/qol"] +--- +# Pokémon Crystal Clear + +> [!info] New Experience · QoL — **Complete** +> Game Boy Color · base **Crystal** · version **2.5.7** · Gen 1–2 + +## Summary +Open-world Crystal — pick any starter, tackle gyms in any order, roam Johto+Kanto freely. A landmark open-world take on Gen 2 by ShockSlayer. + +## Type +[[Types#New Experience|New Experience]] [[Types#QoL|QoL]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-crystal-clear.382197/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Crystal%20Clear%20rom%20hack + +## In the library +- `roms/gbc/Hacks/Pokemon - Crystal Clear (Hack).gbc` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Crystal Inheritance.md b/pokemon-romhack-vault/Hacks/Crystal Inheritance.md new file mode 100644 index 0000000..7c48755 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Crystal Inheritance.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Crystal Inheritance" +platform: GBC +base: "Crystal" +version: "1.0.3" +status: "Complete" +type: ["New Experience"] +generation: "Gen 2+" +library_path: "roms/gbc/Hacks/Pokemon - Crystal Inheritance (Hack).gbc" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Crystal%20Inheritance%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gbc", "base/crystal", "status/complete", "type/newexperience"] +--- +# Pokémon Crystal Inheritance + +> [!info] New Experience — **Complete** +> Game Boy Color · base **Crystal** · version **1.0.3** · Gen 2+ + +## Summary +A Crystal-based adventure with a new story and updated rosters/mechanics within the Gen 2 framework. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Crystal%20Inheritance%20rom%20hack + +## In the library +- `roms/gbc/Hacks/Pokemon - Crystal Inheritance (Hack).gbc` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Crystal Kaizo.md b/pokemon-romhack-vault/Hacks/Crystal Kaizo.md new file mode 100644 index 0000000..1b32b7f --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Crystal Kaizo.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Crystal Kaizo" +platform: GBC +base: "Crystal" +version: "1.0" +status: "Complete" +type: ["Difficulty"] +generation: "Gen 2" +library_path: "roms/gbc/Hacks/Pokemon - Crystal Kaizo (Hack).gbc" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Crystal%20Kaizo%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gbc", "base/crystal", "status/complete", "type/difficulty"] +--- +# Pokémon Crystal Kaizo + +> [!info] Difficulty — **Complete** +> Game Boy Color · base **Crystal** · version **1.0** · Gen 2 + +## Summary +The definitive Gen 2 kaizo: every trainer is a brutal, fully-EV'd gauntlet. Companion to the Gold/Silver Kaizo line. + +## Type +[[Types#Difficulty|Difficulty]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Crystal%20Kaizo%20rom%20hack + +## In the library +- `roms/gbc/Hacks/Pokemon - Crystal Kaizo (Hack).gbc` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Dark Rising - Order Destroyed.md b/pokemon-romhack-vault/Hacks/Dark Rising - Order Destroyed.md new file mode 100644 index 0000000..82657d4 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Dark Rising - Order Destroyed.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Dark Rising - Order Destroyed" +platform: GBA +base: "FireRed" +version: "Complete" +status: "Complete" +type: ["New Experience", "Difficulty"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Dark Rising - Order Destroyed (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-dark-rising-series.341667/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/complete", "type/newexperience", "type/difficulty"] +--- +# Pokémon Dark Rising - Order Destroyed + +> [!info] New Experience · Difficulty — **Complete** +> Game Boy Advance · base **FireRed** · version **Complete** · Multi-gen + +## Summary +A spin-off entry in the Dark Rising saga. + +## Type +[[Types#New Experience|New Experience]] [[Types#Difficulty|Difficulty]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-dark-rising-series.341667/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Dark%20Rising%20-%20Order%20Destroyed%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Dark Rising - Order Destroyed (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Dark Rising 2.md b/pokemon-romhack-vault/Hacks/Dark Rising 2.md new file mode 100644 index 0000000..63d2f20 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Dark Rising 2.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Dark Rising 2" +platform: GBA +base: "FireRed" +version: "Complete" +status: "Complete" +type: ["New Experience", "Difficulty"] +generation: "Multi-gen + fakemon" +library_path: "roms/gba/Hacks/Pokemon - Dark Rising 2 (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-dark-rising-series.341667/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/complete", "type/newexperience", "type/difficulty"] +--- +# Pokémon Dark Rising 2 + +> [!info] New Experience · Difficulty — **Complete** +> Game Boy Advance · base **FireRed** · version **Complete** · Multi-gen + fakemon + +## Summary +Sequel to Dark Rising — bigger story, more fakemon, same punishing difficulty. + +## Type +[[Types#New Experience|New Experience]] [[Types#Difficulty|Difficulty]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-dark-rising-series.341667/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Dark%20Rising%202%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Dark Rising 2 (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Dark Rising.md b/pokemon-romhack-vault/Hacks/Dark Rising.md new file mode 100644 index 0000000..610e9c3 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Dark Rising.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Dark Rising" +platform: GBA +base: "FireRed" +version: "1 (Origins)" +status: "Complete" +type: ["New Experience", "Difficulty"] +generation: "Multi-gen + fakemon" +library_path: "roms/gba/Hacks/Pokemon - Dark Rising (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-dark-rising-series.341667/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/complete", "type/newexperience", "type/difficulty"] +--- +# Pokémon Dark Rising + +> [!info] New Experience · Difficulty — **Complete** +> Game Boy Advance · base **FireRed** · version **1 (Origins)** · Multi-gen + fakemon + +## Summary +Notoriously hard story-driven hack with a dark plot, fakemon, and multi-gen mons. The Origins build is the remastered DR1. + +## Type +[[Types#New Experience|New Experience]] [[Types#Difficulty|Difficulty]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-dark-rising-series.341667/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Dark%20Rising%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Dark Rising (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Elite Redux.md b/pokemon-romhack-vault/Hacks/Elite Redux.md new file mode 100644 index 0000000..e2c03ef --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Elite Redux.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Elite Redux" +platform: GBA +base: "Emerald" +version: "2.65.3b" +status: "Ongoing" +type: ["Expansion", "Difficulty"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Elite Redux (Hack).gba" +source: "https://www.hackdex.app/hack/elite-redux" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/ongoing", "type/expansion", "type/difficulty"] +--- +# Pokémon Elite Redux + +> [!info] Expansion · Difficulty — **Ongoing** +> Game Boy Advance · base **Emerald** · version **2.65.3b** · Multi-gen + +## Summary +A theorycrafter's playground: every species gets multiple abilities, a vastly expanded movepool, and brutal fights. Deep team-building over story. + +## Type +[[Types#Expansion|Expansion]] [[Types#Difficulty|Difficulty]] + +## Links +- Source / info: https://www.hackdex.app/hack/elite-redux +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Elite%20Redux%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Elite Redux (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Emerald Azure.md b/pokemon-romhack-vault/Hacks/Emerald Azure.md new file mode 100644 index 0000000..988b159 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Emerald Azure.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Emerald Azure" +platform: GBA +base: "Emerald" +version: "0.5.3" +status: "Beta" +type: ["New Experience", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Emerald Azure (Hack).gba" +source: "https://www.hackdex.app/hack/pokemon-emerald-azure" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/beta", "type/newexperience", "type/expansion"] +--- +# Pokémon Emerald Azure + +> [!info] New Experience · Expansion — **Beta** +> Game Boy Advance · base **Emerald** · version **0.5.3** · Multi-gen + +## Summary +An in-development new-region Emerald-expansion hack (early/beta). + +## Type +[[Types#New Experience|New Experience]] [[Types#Expansion|Expansion]] + +## Links +- Source / info: https://www.hackdex.app/hack/pokemon-emerald-azure +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Emerald%20Azure%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Emerald Azure (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Emerald Extended Cut.md b/pokemon-romhack-vault/Hacks/Emerald Extended Cut.md new file mode 100644 index 0000000..317d0fa --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Emerald Extended Cut.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Emerald Extended Cut" +platform: GBA +base: "Emerald" +version: "Classic+ 1.3" +status: "Complete" +type: ["Vanilla+", "QoL"] +generation: "Gen 3" +library_path: "roms/gba/Hacks/Pokemon - Emerald Extended Cut (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Emerald%20Extended%20Cut%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/complete", "type/vanilla+", "type/qol"] +--- +# Pokémon Emerald Extended Cut + +> [!info] Vanilla+ · QoL — **Complete** +> Game Boy Advance · base **Emerald** · version **Classic+ 1.3** · Gen 3 + +## Summary +Emerald with restored/expanded content and QoL while staying close to the original Hoenn experience. + +## Type +[[Types#Vanilla+|Vanilla+]] [[Types#QoL|QoL]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Emerald%20Extended%20Cut%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Emerald Extended Cut (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Emerald Imperium.md b/pokemon-romhack-vault/Hacks/Emerald Imperium.md new file mode 100644 index 0000000..d37ff2b --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Emerald Imperium.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Emerald Imperium" +platform: GBA +base: "Emerald" +version: "1.3.1" +status: "Complete" +type: ["Expansion", "Difficulty"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Emerald Imperium (Hack).gba" +source: "https://www.hackdex.app/hack/emerald-imperium" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/complete", "type/expansion", "type/difficulty"] +--- +# Pokémon Emerald Imperium + +> [!info] Expansion · Difficulty — **Complete** +> Game Boy Advance · base **Emerald** · version **1.3.1** · Multi-gen + +## Summary +A content- and postgame-heavy Emerald-expansion hack with challenging fights and lots of endgame. + +## Type +[[Types#Expansion|Expansion]] [[Types#Difficulty|Difficulty]] + +## Links +- Source / info: https://www.hackdex.app/hack/emerald-imperium +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Emerald%20Imperium%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Emerald Imperium (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Emerald Kaizo.md b/pokemon-romhack-vault/Hacks/Emerald Kaizo.md new file mode 100644 index 0000000..de0f445 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Emerald Kaizo.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Emerald Kaizo" +platform: GBA +base: "Emerald" +version: "—" +status: "Complete" +type: ["Difficulty"] +generation: "Gen 3" +library_path: "roms/gba/Hacks/Pokemon - Emerald Kaizo (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Emerald%20Kaizo%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/complete", "type/difficulty"] +--- +# Pokémon Emerald Kaizo + +> [!info] Difficulty — **Complete** +> Game Boy Advance · base **Emerald** · version **—** · Gen 3 + +## Summary +The classic Emerald kaizo — every gym/E4 team is maxed-out and merciless. + +## Type +[[Types#Difficulty|Difficulty]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Emerald%20Kaizo%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Emerald Kaizo (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Emerald Rogue.md b/pokemon-romhack-vault/Hacks/Emerald Rogue.md new file mode 100644 index 0000000..10a6199 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Emerald Rogue.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Emerald Rogue" +platform: GBA +base: "Emerald" +version: "2.1.2 EX" +status: "Ongoing" +type: ["Roguelite", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Emerald Rogue (Hack).gba" +source: "https://github.com/Pokabbie/pokeemerald-rogue" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/ongoing", "type/roguelite", "type/expansion"] +--- +# Pokémon Emerald Rogue + +> [!info] Roguelite · Expansion — **Ongoing** +> Game Boy Advance · base **Emerald** · version **2.1.2 EX** · Multi-gen + +## Summary +A roguelite take on Emerald: run-based, procedurally routed, escalating difficulty toward the Champion. EX edition uses the modern expansion. + +## Type +[[Types#Roguelite|Roguelite]] [[Types#Expansion|Expansion]] + +## Links +- Source / info: https://github.com/Pokabbie/pokeemerald-rogue +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Emerald%20Rogue%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Emerald Rogue (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Emerald Seaglass.md b/pokemon-romhack-vault/Hacks/Emerald Seaglass.md new file mode 100644 index 0000000..01c6d8c --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Emerald Seaglass.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Emerald Seaglass" +platform: GBA +base: "Emerald" +version: "3.0" +status: "Complete" +type: ["Vanilla+", "QoL", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Emerald Seaglass (Hack).gba" +source: "https://www.hackdex.app/hack/pokemon-emerald-seaglass" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/complete", "type/vanilla+", "type/qol", "type/expansion"] +--- +# Pokémon Emerald Seaglass + +> [!info] Vanilla+ · QoL · Expansion — **Complete** +> Game Boy Advance · base **Emerald** · version **3.0** · Multi-gen + +## Summary +Emerald modernized via the expansion — physical/special split, new species/forms, and heavy QoL while keeping Hoenn's story. + +## Type +[[Types#Vanilla+|Vanilla+]] [[Types#QoL|QoL]] [[Types#Expansion|Expansion]] + +## Links +- Source / info: https://www.hackdex.app/hack/pokemon-emerald-seaglass +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Emerald%20Seaglass%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Emerald Seaglass (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Emerald Squared.md b/pokemon-romhack-vault/Hacks/Emerald Squared.md new file mode 100644 index 0000000..7d12d42 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Emerald Squared.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Emerald Squared" +platform: GBA +base: "Emerald" +version: "2.6.2" +status: "Complete" +type: ["Difficulty", "Vanilla+"] +generation: "Gen 3" +library_path: "roms/gba/Hacks/Pokemon - Emerald Squared (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Emerald%20Squared%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/complete", "type/difficulty", "type/vanilla+"] +--- +# Pokémon Emerald Squared + +> [!info] Difficulty · Vanilla+ — **Complete** +> Game Boy Advance · base **Emerald** · version **2.6.2** · Gen 3 + +## Summary +An enhanced, harder Emerald — rebalanced trainers and availability for a tougher Hoenn run. + +## Type +[[Types#Difficulty|Difficulty]] [[Types#Vanilla+|Vanilla+]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Emerald%20Squared%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Emerald Squared (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Fire Red Extended.md b/pokemon-romhack-vault/Hacks/Fire Red Extended.md new file mode 100644 index 0000000..9dbc7ad --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Fire Red Extended.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Fire Red Extended" +platform: GBA +base: "FireRed" +version: "3.5.6" +status: "Ongoing" +type: ["Vanilla+", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Fire Red Extended (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Fire%20Red%20Extended%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/ongoing", "type/vanilla+", "type/expansion"] +--- +# Pokémon Fire Red Extended + +> [!info] Vanilla+ · Expansion — **Ongoing** +> Game Boy Advance · base **FireRed** · version **3.5.6** · Multi-gen + +## Summary +FireRed extended with later-gen species and mechanics while preserving the Kanto journey. + +## Type +[[Types#Vanilla+|Vanilla+]] [[Types#Expansion|Expansion]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Fire%20Red%20Extended%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Fire Red Extended (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Fire of Sky.md b/pokemon-romhack-vault/Hacks/Fire of Sky.md new file mode 100644 index 0000000..e2b34d3 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Fire of Sky.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Fire of Sky" +platform: GBA +base: "—" +version: "1.0.3" +status: "Complete" +type: ["New Experience"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Fire of Sky (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Fire%20of%20Sky%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/unknown", "status/complete", "type/newexperience"] +--- +# Pokémon Fire of Sky + +> [!info] New Experience — **Complete** +> Game Boy Advance · base **—** · version **1.0.3** · Multi-gen + +## Summary +A story-focused new-adventure hack. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Fire%20of%20Sky%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Fire of Sky (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/FireRed & LeafGreen+ (FRLG+).md b/pokemon-romhack-vault/Hacks/FireRed & LeafGreen+ (FRLG+).md new file mode 100644 index 0000000..79cc006 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/FireRed & LeafGreen+ (FRLG+).md @@ -0,0 +1,33 @@ +--- +title: "Pokémon FireRed & LeafGreen+ (FRLG+)" +platform: GBA +base: "FireRed" +version: "1.5.1" +status: "Ongoing" +type: ["Vanilla+", "QoL"] +generation: "Gen 1–3" +library_path: "roms/gba/Hacks/Pokemon - FireRed & LeafGreen+ (FRLG+) (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20FireRed%20%26%20LeafGreen%2B%20%28FRLG%2B%29%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/ongoing", "type/vanilla+", "type/qol"] +--- +# Pokémon FireRed & LeafGreen+ (FRLG+) + +> [!info] Vanilla+ · QoL — **Ongoing** +> Game Boy Advance · base **FireRed** · version **1.5.1** · Gen 1–3 + +## Summary +A faithful 'plus' enhancement of FR/LG — availability fixes, split, and QoL with minimal change to the feel. + +## Type +[[Types#Vanilla+|Vanilla+]] [[Types#QoL|QoL]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20FireRed%20%26%20LeafGreen%2B%20%28FRLG%2B%29%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - FireRed & LeafGreen+ (FRLG+) (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/FireRed Deluxe.md b/pokemon-romhack-vault/Hacks/FireRed Deluxe.md new file mode 100644 index 0000000..71927df --- /dev/null +++ b/pokemon-romhack-vault/Hacks/FireRed Deluxe.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon FireRed Deluxe" +platform: GBA +base: "FireRed" +version: "20.5" +status: "Ongoing" +type: ["Vanilla+", "Expansion", "QoL"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - FireRed Deluxe (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20FireRed%20Deluxe%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/ongoing", "type/vanilla+", "type/expansion", "type/qol"] +--- +# Pokémon FireRed Deluxe + +> [!info] Vanilla+ · Expansion · QoL — **Ongoing** +> Game Boy Advance · base **FireRed** · version **20.5** · Multi-gen + +## Summary +FireRed loaded with all obtainable species, modern mechanics, and QoL — a 'complete dex' enhanced Kanto. + +## Type +[[Types#Vanilla+|Vanilla+]] [[Types#Expansion|Expansion]] [[Types#QoL|QoL]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20FireRed%20Deluxe%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - FireRed Deluxe (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/FireRed Reignited.md b/pokemon-romhack-vault/Hacks/FireRed Reignited.md new file mode 100644 index 0000000..13e6f90 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/FireRed Reignited.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon FireRed Reignited" +platform: GBA +base: "FireRed" +version: "1.55" +status: "Ongoing" +type: ["Vanilla+", "QoL"] +generation: "Gen 1+" +library_path: "roms/gba/Hacks/Pokemon - FireRed Reignited (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20FireRed%20Reignited%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/ongoing", "type/vanilla+", "type/qol"] +--- +# Pokémon FireRed Reignited + +> [!info] Vanilla+ · QoL — **Ongoing** +> Game Boy Advance · base **FireRed** · version **1.55** · Gen 1+ + +## Summary +A modern QoL remaster of FireRed. + +## Type +[[Types#Vanilla+|Vanilla+]] [[Types#QoL|QoL]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20FireRed%20Reignited%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - FireRed Reignited (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Flora Sky.md b/pokemon-romhack-vault/Hacks/Flora Sky.md new file mode 100644 index 0000000..e3d2d11 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Flora Sky.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Flora Sky" +platform: GBA +base: "Emerald" +version: "Complete" +status: "Complete" +type: ["New Experience"] +generation: "Gen 3–4 mons" +library_path: "roms/gba/Hacks/Pokemon - Flora Sky (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-flora-sky.179365/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/complete", "type/newexperience"] +--- +# Pokémon Flora Sky + +> [!info] New Experience — **Complete** +> Game Boy Advance · base **Emerald** · version **Complete** · Gen 3–4 mons + +## Summary +A classic complete Emerald hack with a new region, Gen 4 additions, and a sky/Distortion-World-flavored plot. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-flora-sky.179365/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Flora%20Sky%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Flora Sky (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Following Renegade Platinum.md b/pokemon-romhack-vault/Hacks/Following Renegade Platinum.md new file mode 100644 index 0000000..f3e0e23 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Following Renegade Platinum.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Following Renegade Platinum" +platform: NDS +base: "Platinum" +version: "2.0" +status: "Complete" +type: ["Difficulty", "Vanilla+", "QoL"] +generation: "Gen 1–4 mons" +library_path: "roms/nds/Hacks/Pokemon - Following Renegade Platinum (Hack).nds" +source: "https://www.reddit.com/r/PokemonROMhacks/comments/s4fbhi/" +added: 2026-06-06 +tags: ["hack", "platform/nds", "base/platinum", "status/complete", "type/difficulty", "type/vanilla+", "type/qol"] +--- +# Pokémon Following Renegade Platinum + +> [!info] Difficulty · Vanilla+ · QoL — **Complete** +> Nintendo DS · base **Platinum** · version **2.0** · Gen 1–4 mons + +## Summary +Renegade Platinum with following Pokémon added — the acclaimed enhanced Sinnoh plus an HGSS-style walking partner. + +## Type +[[Types#Difficulty|Difficulty]] [[Types#Vanilla+|Vanilla+]] [[Types#QoL|QoL]] + +## Links +- Source / info: https://www.reddit.com/r/PokemonROMhacks/comments/s4fbhi/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Following%20Renegade%20Platinum%20rom%20hack + +## In the library +- `roms/nds/Hacks/Pokemon - Following Renegade Platinum (Hack).nds` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/GS Chronicles.md b/pokemon-romhack-vault/Hacks/GS Chronicles.md new file mode 100644 index 0000000..3e634b4 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/GS Chronicles.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon GS Chronicles" +platform: GBA +base: "FireRed" +version: "2.7.6" +status: "Complete" +type: ["New Experience", "Demake"] +generation: "Gen 1–7 mons" +library_path: "roms/gba/Hacks/Pokemon - GS Chronicles (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-gs-chronicles.346730/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/complete", "type/newexperience", "type/demake"] +--- +# Pokémon GS Chronicles + +> [!info] New Experience · Demake — **Complete** +> Game Boy Advance · base **FireRed** · version **2.7.6** · Gen 1–7 mons + +## Summary +A HeartGold/SoulSilver-style Johto remake on GBA with modern mechanics and a rich postgame. + +## Type +[[Types#New Experience|New Experience]] [[Types#Demake|Demake]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-gs-chronicles.346730/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20GS%20Chronicles%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - GS Chronicles (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Gaia.md b/pokemon-romhack-vault/Hacks/Gaia.md new file mode 100644 index 0000000..4dd1713 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Gaia.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Gaia" +platform: GBA +base: "FireRed" +version: "3.2" +status: "Complete" +type: ["New Experience"] +generation: "Gen 1–6 mons" +library_path: "roms/gba/Hacks/Pokemon - Gaia (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-gaia.336982/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/complete", "type/newexperience"] +--- +# Pokémon Gaia + +> [!info] New Experience — **Complete** +> Game Boy Advance · base **FireRed** · version **3.2** · Gen 1–6 mons + +## Summary +Widely considered one of the best hacks ever: the Orbtus region, Gen 6 mechanics/Fairy type, an archaeology mystery, and Nintendo-grade polish. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-gaia.336982/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Gaia%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Gaia (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Glazed.md b/pokemon-romhack-vault/Hacks/Glazed.md new file mode 100644 index 0000000..54a7c79 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Glazed.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Glazed" +platform: GBA +base: "Emerald" +version: "9.2.0" +status: "Complete" +type: ["New Experience"] +generation: "Gen 1–6 mons" +library_path: "roms/gba/Hacks/Pokemon - Glazed (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-glazed.291376/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/complete", "type/newexperience"] +--- +# Pokémon Glazed + +> [!info] New Experience — **Complete** +> Game Boy Advance · base **Emerald** · version **9.2.0** · Gen 1–6 mons + +## Summary +A long-beloved new region (Tunod) crossing into Johto, with multiple starters incl. later gens. This is the polished modern build. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-glazed.291376/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Glazed%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Glazed (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Heart and Soul.md b/pokemon-romhack-vault/Hacks/Heart and Soul.md new file mode 100644 index 0000000..569219a --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Heart and Soul.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Heart and Soul" +platform: GBA +base: "FireRed" +version: "1.2.1" +status: "Ongoing" +type: ["New Experience", "Demake"] +generation: "Johto" +library_path: "roms/gba/Hacks/Pokemon - Heart and Soul (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Heart%20and%20Soul%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/ongoing", "type/newexperience", "type/demake"] +--- +# Pokémon Heart and Soul + +> [!info] New Experience · Demake — **Ongoing** +> Game Boy Advance · base **FireRed** · version **1.2.1** · Johto + +## Summary +A Johto-focused adventure inspired by the Gen 2/HGSS games. + +## Type +[[Types#New Experience|New Experience]] [[Types#Demake|Demake]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Heart%20and%20Soul%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Heart and Soul (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Hearth.md b/pokemon-romhack-vault/Hacks/Hearth.md new file mode 100644 index 0000000..9b129f5 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Hearth.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Hearth" +platform: GBA +base: "Emerald" +version: "0.1.27" +status: "Beta" +type: ["New Experience", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Hearth (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Hearth%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/beta", "type/newexperience", "type/expansion"] +--- +# Pokémon Hearth + +> [!info] New Experience · Expansion — **Beta** +> Game Boy Advance · base **Emerald** · version **0.1.27** · Multi-gen + +## Summary +An early-beta new-region expansion hack. + +## Type +[[Types#New Experience|New Experience]] [[Types#Expansion|Expansion]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Hearth%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Hearth (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Hoenn's Last Wish.md b/pokemon-romhack-vault/Hacks/Hoenn's Last Wish.md new file mode 100644 index 0000000..dbf559b --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Hoenn's Last Wish.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Hoenn's Last Wish" +platform: GBA +base: "Emerald" +version: "0.4.7" +status: "Beta" +type: ["New Experience", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Hoenn's Last Wish (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Hoenn%27s%20Last%20Wish%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/beta", "type/newexperience", "type/expansion"] +--- +# Pokémon Hoenn's Last Wish + +> [!info] New Experience · Expansion — **Beta** +> Game Boy Advance · base **Emerald** · version **0.4.7** · Multi-gen + +## Summary +An in-development Hoenn-set adventure on the Emerald expansion (early/beta). + +## Type +[[Types#New Experience|New Experience]] [[Types#Expansion|Expansion]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Hoenn%27s%20Last%20Wish%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Hoenn's Last Wish (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Inclement Emerald.md b/pokemon-romhack-vault/Hacks/Inclement Emerald.md new file mode 100644 index 0000000..344e89d --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Inclement Emerald.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Inclement Emerald" +platform: GBA +base: "Emerald" +version: "—" +status: "Complete" +type: ["Difficulty", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Inclement Emerald (Hack).gba" +source: "https://www.hackdex.app/hack/inclement-emerald" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/complete", "type/difficulty", "type/expansion"] +--- +# Pokémon Inclement Emerald + +> [!info] Difficulty · Expansion — **Complete** +> Game Boy Advance · base **Emerald** · version **—** · Multi-gen + +## Summary +Emerald-expansion difficulty hack with all 8 gens obtainable, configurable hardcore modes, and smart AI. A modern favorite. + +## Type +[[Types#Difficulty|Difficulty]] [[Types#Expansion|Expansion]] + +## Links +- Source / info: https://www.hackdex.app/hack/inclement-emerald +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Inclement%20Emerald%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Inclement Emerald (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Inkwell.md b/pokemon-romhack-vault/Hacks/Inkwell.md new file mode 100644 index 0000000..279e1ba --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Inkwell.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Inkwell" +platform: GBA +base: "Emerald" +version: "1.04" +status: "Ongoing" +type: ["New Experience", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Inkwell (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Inkwell%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/ongoing", "type/newexperience", "type/expansion"] +--- +# Pokémon Inkwell + +> [!info] New Experience · Expansion — **Ongoing** +> Game Boy Advance · base **Emerald** · version **1.04** · Multi-gen + +## Summary +A new-adventure hack built on the Emerald expansion. + +## Type +[[Types#New Experience|New Experience]] [[Types#Expansion|Expansion]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Inkwell%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Inkwell (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Lazarus.md b/pokemon-romhack-vault/Hacks/Lazarus.md new file mode 100644 index 0000000..0f2bff8 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Lazarus.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Lazarus" +platform: GBA +base: "Emerald (TrashMan)" +version: "v2" +status: "Ongoing" +type: ["New Experience", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Lazarus (Hack).gba" +source: "https://ko-fi.com/nemo622" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emeraldtrashman", "status/ongoing", "type/newexperience", "type/expansion"] +--- +# Pokémon Lazarus + +> [!info] New Experience · Expansion — **Ongoing** +> Game Boy Advance · base **Emerald (TrashMan)** · version **v2** · Multi-gen + +## Summary +The Ilios region — a story-rich expansion hack by Nemo622 with new mechanics and detailed documentation. + +## Type +[[Types#New Experience|New Experience]] [[Types#Expansion|Expansion]] + +## Links +- Source / info: https://ko-fi.com/nemo622 +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Lazarus%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Lazarus (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Light Platinum.md b/pokemon-romhack-vault/Hacks/Light Platinum.md new file mode 100644 index 0000000..351780e --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Light Platinum.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Light Platinum" +platform: GBA +base: "Ruby" +version: "1.1" +status: "Complete" +type: ["New Experience"] +generation: "Gen 1–4 mons" +library_path: "roms/gba/Hacks/Pokemon - Light Platinum (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-light-platinum.171377/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/ruby", "status/complete", "type/newexperience"] +--- +# Pokémon Light Platinum + +> [!info] New Experience — **Complete** +> Game Boy Advance · base **Ruby** · version **1.1** · Gen 1–4 mons + +## Summary +A classic: the Zhery region with two leagues, Gen 4 mons, and a globe-trotting plot. Hugely popular older hack. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-light-platinum.171377/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Light%20Platinum%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Light Platinum (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Liquid Crystal.md b/pokemon-romhack-vault/Hacks/Liquid Crystal.md new file mode 100644 index 0000000..fac1a64 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Liquid Crystal.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Liquid Crystal" +platform: GBA +base: "FireRed" +version: "3.3" +status: "Complete" +type: ["New Experience", "Demake"] +generation: "Gen 1–4 mons" +library_path: "roms/gba/Hacks/Pokemon - Liquid Crystal (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-liquid-crystal.158473/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/complete", "type/newexperience", "type/demake"] +--- +# Pokémon Liquid Crystal + +> [!info] New Experience · Demake — **Complete** +> Game Boy Advance · base **FireRed** · version **3.3** · Gen 1–4 mons + +## Summary +A Johto (Crystal) remake on GBA with the Orange Islands postgame and modern conveniences. + +## Type +[[Types#New Experience|New Experience]] [[Types#Demake|Demake]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-liquid-crystal.158473/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Liquid%20Crystal%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Liquid Crystal (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Low Budget Crystal.md b/pokemon-romhack-vault/Hacks/Low Budget Crystal.md new file mode 100644 index 0000000..a5d1df9 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Low Budget Crystal.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Low Budget Crystal" +platform: GBC +base: "Crystal" +version: "—" +status: "Complete" +type: ["Vanilla+", "QoL"] +generation: "Gen 2" +library_path: "roms/gbc/Hacks/Pokemon - Low Budget Crystal (Hack).gbc" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Low%20Budget%20Crystal%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gbc", "base/crystal", "status/complete", "type/vanilla+", "type/qol"] +--- +# Pokémon Low Budget Crystal + +> [!info] Vanilla+ · QoL — **Complete** +> Game Boy Color · base **Crystal** · version **—** · Gen 2 + +## Summary +A light, faithful Crystal enhancement — quality-of-life tweaks and availability fixes without changing the core game. + +## Type +[[Types#Vanilla+|Vanilla+]] [[Types#QoL|QoL]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Low%20Budget%20Crystal%20rom%20hack + +## In the library +- `roms/gbc/Hacks/Pokemon - Low Budget Crystal (Hack).gbc` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Mega Power.md b/pokemon-romhack-vault/Hacks/Mega Power.md new file mode 100644 index 0000000..16c25c2 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Mega Power.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Mega Power" +platform: GBA +base: "Ruby" +version: "5.62" +status: "Complete" +type: ["New Experience"] +generation: "Gen 1–6 mons" +library_path: "roms/gba/Hacks/Pokemon - Mega Power (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-mega-power.330510/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/ruby", "status/complete", "type/newexperience"] +--- +# Pokémon Mega Power + +> [!info] New Experience — **Complete** +> Game Boy Advance · base **Ruby** · version **5.62** · Gen 1–6 mons + +## Summary +By the Light Platinum-adjacent team — a new region with Mega Evolution, custom villains, and a 'build the strongest Pokémon' plot. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-mega-power.330510/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Mega%20Power%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Mega Power (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Modern Emerald.md b/pokemon-romhack-vault/Hacks/Modern Emerald.md new file mode 100644 index 0000000..57c29bf --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Modern Emerald.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Modern Emerald" +platform: GBA +base: "Emerald" +version: "3.3.1" +status: "Complete" +type: ["Vanilla+", "QoL", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Modern Emerald (Hack).gba" +source: "https://www.hackdex.app/hack/modern-emerald" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/complete", "type/vanilla+", "type/qol", "type/expansion"] +--- +# Pokémon Modern Emerald + +> [!info] Vanilla+ · QoL · Expansion — **Complete** +> Game Boy Advance · base **Emerald** · version **3.3.1** · Multi-gen + +## Summary +Emerald modernized end-to-end — all gens, modern mechanics, and a deep QoL/settings menu, while keeping Hoenn's story. + +## Type +[[Types#Vanilla+|Vanilla+]] [[Types#QoL|QoL]] [[Types#Expansion|Expansion]] + +## Links +- Source / info: https://www.hackdex.app/hack/modern-emerald +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Modern%20Emerald%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Modern Emerald (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Moemon Mega FireRed.md b/pokemon-romhack-vault/Hacks/Moemon Mega FireRed.md new file mode 100644 index 0000000..a3435af --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Moemon Mega FireRed.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Moemon Mega FireRed" +platform: GBA +base: "FireRed" +version: "1.4c" +status: "Complete" +type: ["Cosmetic"] +generation: "Gen 1" +library_path: "roms/gba/Hacks/Pokemon - Moemon Mega FireRed (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Moemon%20Mega%20FireRed%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/complete", "type/cosmetic"] +--- +# Pokémon Moemon Mega FireRed + +> [!info] Cosmetic — **Complete** +> Game Boy Advance · base **FireRed** · version **1.4c** · Gen 1 + +## Summary +A Moemon hack — Pokémon replaced with anthropomorphic 'moe' character sprites — over an enhanced FireRed. + +## Type +[[Types#Cosmetic|Cosmetic]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Moemon%20Mega%20FireRed%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Moemon Mega FireRed (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Moemon Star Emerald.md b/pokemon-romhack-vault/Hacks/Moemon Star Emerald.md new file mode 100644 index 0000000..f403bbf --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Moemon Star Emerald.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Moemon Star Emerald" +platform: GBA +base: "Emerald" +version: "1.1c" +status: "Complete" +type: ["Cosmetic"] +generation: "Gen 3" +library_path: "roms/gba/Hacks/Pokemon - Moemon Star Emerald (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Moemon%20Star%20Emerald%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/complete", "type/cosmetic"] +--- +# Pokémon Moemon Star Emerald + +> [!info] Cosmetic — **Complete** +> Game Boy Advance · base **Emerald** · version **1.1c** · Gen 3 + +## Summary +A Moemon reskin of an enhanced Emerald (Star Emerald), with moe sprites throughout. + +## Type +[[Types#Cosmetic|Cosmetic]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Moemon%20Star%20Emerald%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Moemon Star Emerald (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Odyssey.md b/pokemon-romhack-vault/Hacks/Odyssey.md new file mode 100644 index 0000000..8876cd2 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Odyssey.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Odyssey" +platform: GBA +base: "FireRed" +version: "4.1.1" +status: "Complete" +type: ["New Experience"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Odyssey (Hack).gba" +source: "https://www.hackdex.app/hack/pokemon-odyssey" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/complete", "type/newexperience"] +--- +# Pokémon Odyssey + +> [!info] New Experience — **Complete** +> Game Boy Advance · base **FireRed** · version **4.1.1** · Multi-gen + +## Summary +A highly-praised, atmospheric original adventure with a custom region, strong writing, and bespoke pixel art. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source / info: https://www.hackdex.app/hack/pokemon-odyssey +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Odyssey%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Odyssey (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Omega Ruby Origins.md b/pokemon-romhack-vault/Hacks/Omega Ruby Origins.md new file mode 100644 index 0000000..35ade5f --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Omega Ruby Origins.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Omega Ruby Origins" +platform: GBA +base: "Emerald" +version: "1.4.8.7" +status: "Ongoing" +type: ["Demake", "New Experience"] +generation: "Gen 6 on GBA" +library_path: "roms/gba/Hacks/Pokemon - Omega Ruby Origins (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Omega%20Ruby%20Origins%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/ongoing", "type/demake", "type/newexperience"] +--- +# Pokémon Omega Ruby Origins + +> [!info] Demake · New Experience — **Ongoing** +> Game Boy Advance · base **Emerald** · version **1.4.8.7** · Gen 6 on GBA + +## Summary +An ORAS-style demake bringing the 3DS Hoenn remakes' features back to the GBA. + +## Type +[[Types#Demake|Demake]] [[Types#New Experience|New Experience]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Omega%20Ruby%20Origins%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Omega Ruby Origins (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Orange.md b/pokemon-romhack-vault/Hacks/Orange.md new file mode 100644 index 0000000..ff066c5 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Orange.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Orange" +platform: GBC +base: "Crystal" +version: "—" +status: "Complete" +type: ["New Experience"] +generation: "Gen 2 style" +library_path: "roms/gbc/Hacks/Pokemon - Orange (Hack).gbc" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Orange%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gbc", "base/crystal", "status/complete", "type/newexperience"] +--- +# Pokémon Orange + +> [!info] New Experience — **Complete** +> Game Boy Color · base **Crystal** · version **—** · Gen 2 style + +## Summary +Set in the anime's Orange Islands / Orange League. This is the modern Suloku-patched build with bug fixes and PSS-era touches. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Orange%20rom%20hack + +## In the library +- `roms/gbc/Hacks/Pokemon - Orange (Hack).gbc` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Peridot.md b/pokemon-romhack-vault/Hacks/Peridot.md new file mode 100644 index 0000000..0ffec03 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Peridot.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Peridot" +platform: GBC +base: "Crystal" +version: "2.2.3" +status: "Ongoing" +type: ["New Experience"] +generation: "Gen 2 style" +library_path: "roms/gbc/Hacks/Pokemon - Peridot (Hack).gbc" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Peridot%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gbc", "base/crystal", "status/ongoing", "type/newexperience"] +--- +# Pokémon Peridot + +> [!info] New Experience — **Ongoing** +> Game Boy Color · base **Crystal** · version **2.2.3** · Gen 2 style + +## Summary +A from-scratch new region on the Gen 2 engine with an original dex and story. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Peridot%20rom%20hack + +## In the library +- `roms/gbc/Hacks/Pokemon - Peridot (Hack).gbc` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Phoenix Red.md b/pokemon-romhack-vault/Hacks/Phoenix Red.md new file mode 100644 index 0000000..0e14bf6 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Phoenix Red.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Phoenix Red" +platform: GBA +base: "FireRed" +version: "1.2" +status: "Complete" +type: ["Difficulty", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Phoenix Red (Hack).gba" +source: "https://www.hackdex.app/hack/pokemon-phoenix-red" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/complete", "type/difficulty", "type/expansion"] +--- +# Pokémon Phoenix Red + +> [!info] Difficulty · Expansion — **Complete** +> Game Boy Advance · base **FireRed** · version **1.2** · Multi-gen + +## Summary +An enhanced, harder FireRed with all 8 gens obtainable, Megas, and tough fights. + +## Type +[[Types#Difficulty|Difficulty]] [[Types#Expansion|Expansion]] + +## Links +- Source / info: https://www.hackdex.app/hack/pokemon-phoenix-red +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Phoenix%20Red%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Phoenix Red (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Pisces.md b/pokemon-romhack-vault/Hacks/Pisces.md new file mode 100644 index 0000000..835f88d --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Pisces.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Pisces" +platform: GBA +base: "—" +version: "1.5.4" +status: "Complete" +type: ["New Experience"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Pisces (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Pisces%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/unknown", "status/complete", "type/newexperience"] +--- +# Pokémon Pisces + +> [!info] New Experience — **Complete** +> Game Boy Advance · base **—** · version **1.5.4** · Multi-gen + +## Summary +An original-region adventure hack. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Pisces%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Pisces (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Polished Crystal.md b/pokemon-romhack-vault/Hacks/Polished Crystal.md new file mode 100644 index 0000000..37bbeaf --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Polished Crystal.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Polished Crystal" +platform: GBC +base: "Crystal" +version: "3.2.3" +status: "Complete" +type: ["Vanilla+", "QoL", "Expansion"] +generation: "Gen 1–7 mons" +library_path: "roms/gbc/Hacks/Pokemon - Polished Crystal (Hack).gbc" +source: "https://github.com/Rangi42/polishedcrystal" +added: 2026-06-06 +tags: ["hack", "platform/gbc", "base/crystal", "status/complete", "type/vanilla+", "type/qol", "type/expansion"] +--- +# Pokémon Polished Crystal + +> [!info] Vanilla+ · QoL · Expansion — **Complete** +> Game Boy Color · base **Crystal** · version **3.2.3** · Gen 1–7 mons + +## Summary +The gold standard Crystal enhancement: physical/special split, ~Gen 7 movesets/species availability, faithful or modern modes, tons of QoL. Open-source decomp. + +## Type +[[Types#Vanilla+|Vanilla+]] [[Types#QoL|QoL]] [[Types#Expansion|Expansion]] + +## Links +- Source / info: https://github.com/Rangi42/polishedcrystal +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Polished%20Crystal%20rom%20hack + +## In the library +- `roms/gbc/Hacks/Pokemon - Polished Crystal (Hack).gbc` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Prism.md b/pokemon-romhack-vault/Hacks/Prism.md new file mode 100644 index 0000000..9e49ea8 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Prism.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Prism" +platform: GBC +base: "Crystal" +version: "1.0" +status: "Complete" +type: ["New Experience"] +generation: "Gen 2+" +library_path: "roms/gbc/Hacks/Pokemon - Prism (Hack).gbc" +source: "https://www.pokecommunity.com/threads/pokemon-prism.379413/" +added: 2026-06-06 +tags: ["hack", "platform/gbc", "base/crystal", "status/complete", "type/newexperience"] +--- +# Pokémon Prism + +> [!info] New Experience — **Complete** +> Game Boy Color · base **Crystal** · version **1.0** · Gen 2+ + +## Summary +Koolboyman's acclaimed new Naljo region — new types, side games, huge custom dex. Famously C&D'd then completed; a Gen 2 magnum opus. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-prism.379413/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Prism%20rom%20hack + +## In the library +- `roms/gbc/Hacks/Pokemon - Prism (Hack).gbc` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Project Nova.md b/pokemon-romhack-vault/Hacks/Project Nova.md new file mode 100644 index 0000000..f7a5747 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Project Nova.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Project Nova" +platform: GBA +base: "Emerald" +version: "2.7.0" +status: "Ongoing" +type: ["New Experience", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Project Nova (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Project%20Nova%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/ongoing", "type/newexperience", "type/expansion"] +--- +# Pokémon Project Nova + +> [!info] New Experience · Expansion — **Ongoing** +> Game Boy Advance · base **Emerald** · version **2.7.0** · Multi-gen + +## Summary +A new-experience hack on the Emerald expansion. + +## Type +[[Types#New Experience|New Experience]] [[Types#Expansion|Expansion]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Project%20Nova%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Project Nova (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/R.O.W.E..md b/pokemon-romhack-vault/Hacks/R.O.W.E..md new file mode 100644 index 0000000..6cef984 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/R.O.W.E..md @@ -0,0 +1,33 @@ +--- +title: "Pokémon R.O.W.E." +platform: GBA +base: "Emerald" +version: "2.1.1" +status: "Ongoing" +type: ["New Experience", "QoL", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - R.O.W.E. (Hack).gba" +source: "https://www.hackdex.app/hack/pokemon-rowe" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/ongoing", "type/newexperience", "type/qol", "type/expansion"] +--- +# Pokémon R.O.W.E. + +> [!info] New Experience · QoL · Expansion — **Ongoing** +> Game Boy Advance · base **Emerald** · version **2.1.1** · Multi-gen + +## Summary +Open-world Emerald — level scaling, ride-anywhere, nuzlocke-friendly settings, and all gens. The 'Mega Update' build. + +## Type +[[Types#New Experience|New Experience]] [[Types#QoL|QoL]] [[Types#Expansion|Expansion]] + +## Links +- Source / info: https://www.hackdex.app/hack/pokemon-rowe +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20R.O.W.E.%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - R.O.W.E. (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Radical Red.md b/pokemon-romhack-vault/Hacks/Radical Red.md new file mode 100644 index 0000000..b5a4ba3 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Radical Red.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Radical Red" +platform: GBA +base: "FireRed" +version: "4.10" +status: "Ongoing" +type: ["Difficulty", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Radical Red (Hack).gba" +source: "https://www.hackdex.app/hack/radical-red" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/ongoing", "type/difficulty", "type/expansion"] +--- +# Pokémon Radical Red + +> [!info] Difficulty · Expansion — **Ongoing** +> Game Boy Advance · base **FireRed** · version **4.10** · Multi-gen + +## Summary +The flagship modern difficulty hack: complete National Dex, Gen-9 mechanics, smart held-item/switching AI, and toggle modes from casual to brutal. + +## Type +[[Types#Difficulty|Difficulty]] [[Types#Expansion|Expansion]] + +## Links +- Source / info: https://www.hackdex.app/hack/radical-red +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Radical%20Red%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Radical Red (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Recordkeepers.md b/pokemon-romhack-vault/Hacks/Recordkeepers.md new file mode 100644 index 0000000..0235348 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Recordkeepers.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Recordkeepers" +platform: GBA +base: "Emerald" +version: "1.2.1" +status: "Ongoing" +type: ["New Experience", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Recordkeepers (Hack).gba" +source: "https://www.hackdex.app/hack/recordkeepers" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/ongoing", "type/newexperience", "type/expansion"] +--- +# Pokémon Recordkeepers + +> [!info] New Experience · Expansion — **Ongoing** +> Game Boy Advance · base **Emerald** · version **1.2.1** · Multi-gen + +## Summary +A narrative-driven Emerald-expansion hack. + +## Type +[[Types#New Experience|New Experience]] [[Types#Expansion|Expansion]] + +## Links +- Source / info: https://www.hackdex.app/hack/recordkeepers +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Recordkeepers%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Recordkeepers (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Renegade Platinum.md b/pokemon-romhack-vault/Hacks/Renegade Platinum.md new file mode 100644 index 0000000..c1084b4 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Renegade Platinum.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Renegade Platinum" +platform: NDS +base: "Platinum" +version: "1.3.0" +status: "Complete" +type: ["Difficulty", "Vanilla+"] +generation: "Gen 1–4 mons" +library_path: "roms/nds/Hacks/Pokemon - Renegade Platinum (Hack).nds" +source: "https://www.pokecommunity.com/threads/pokemon-renegade-platinum.347531/" +added: 2026-06-06 +tags: ["hack", "platform/nds", "base/platinum", "status/complete", "type/difficulty", "type/vanilla+"] +--- +# Pokémon Renegade Platinum + +> [!info] Difficulty · Vanilla+ — **Complete** +> Nintendo DS · base **Platinum** · version **1.3.0** · Gen 1–4 mons + +## Summary +Drayano's definitive enhanced Platinum — full availability, much harder fights, and QoL. A community favorite Sinnoh run. + +## Type +[[Types#Difficulty|Difficulty]] [[Types#Vanilla+|Vanilla+]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-renegade-platinum.347531/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Renegade%20Platinum%20rom%20hack + +## In the library +- `roms/nds/Hacks/Pokemon - Renegade Platinum (Hack).nds` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Resolute.md b/pokemon-romhack-vault/Hacks/Resolute.md new file mode 100644 index 0000000..9feec6f --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Resolute.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Resolute" +platform: GBA +base: "Ruby" +version: "2.97" +status: "Complete" +type: ["New Experience"] +generation: "Gen 1–6 mons" +library_path: "roms/gba/Hacks/Pokemon - Resolute (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-resolute.330577/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/ruby", "status/complete", "type/newexperience"] +--- +# Pokémon Resolute + +> [!info] New Experience — **Complete** +> Game Boy Advance · base **Ruby** · version **2.97** · Gen 1–6 mons + +## Summary +A story-heavy new region (Sun-Moon-era mons added) with a difficulty mode; from the Mega Power/Light Platinum lineage. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-resolute.330577/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Resolute%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Resolute (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Sacred Gold.md b/pokemon-romhack-vault/Hacks/Sacred Gold.md new file mode 100644 index 0000000..7686300 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Sacred Gold.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Sacred Gold" +platform: NDS +base: "HeartGold" +version: "1.05" +status: "Complete" +type: ["Vanilla+", "Difficulty"] +generation: "Gen 1–4 mons" +library_path: "roms/nds/Hacks/Pokemon - Sacred Gold (Hack).nds" +source: "https://www.pokecommunity.com/threads/pokemon-sacred-gold-storm-silver.165088/" +added: 2026-06-06 +tags: ["hack", "platform/nds", "base/heartgold", "status/complete", "type/vanilla+", "type/difficulty"] +--- +# Pokémon Sacred Gold + +> [!info] Vanilla+ · Difficulty — **Complete** +> Nintendo DS · base **HeartGold** · version **1.05** · Gen 1–4 mons + +## Summary +Drayano's enhanced HeartGold — all species obtainable, boosted teams, fixed movesets. Pairs with Storm Silver. + +## Type +[[Types#Vanilla+|Vanilla+]] [[Types#Difficulty|Difficulty]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-sacred-gold-storm-silver.165088/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Sacred%20Gold%20rom%20hack + +## In the library +- `roms/nds/Hacks/Pokemon - Sacred Gold (Hack).nds` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Saiph 2.md b/pokemon-romhack-vault/Hacks/Saiph 2.md new file mode 100644 index 0000000..efd0e30 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Saiph 2.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Saiph 2" +platform: GBA +base: "FireRed" +version: "1.4.0" +status: "Complete" +type: ["New Experience"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Saiph 2 (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-saiph-2.456789/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/complete", "type/newexperience"] +--- +# Pokémon Saiph 2 + +> [!info] New Experience — **Complete** +> Game Boy Advance · base **FireRed** · version **1.4.0** · Multi-gen + +## Summary +Sequel to Saiph — a larger, polished original adventure (full release v1.4.0). + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-saiph-2.456789/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Saiph%202%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Saiph 2 (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Saiph.md b/pokemon-romhack-vault/Hacks/Saiph.md new file mode 100644 index 0000000..8e08c8c --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Saiph.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Saiph" +platform: GBA +base: "FireRed" +version: "2020" +status: "Complete" +type: ["New Experience"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Saiph (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-saiph.412313/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/complete", "type/newexperience"] +--- +# Pokémon Saiph + +> [!info] New Experience — **Complete** +> Game Boy Advance · base **FireRed** · version **2020** · Multi-gen + +## Summary +A complete original-region story hack with a darker tone. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-saiph.412313/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Saiph%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Saiph (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Snakewood.md b/pokemon-romhack-vault/Hacks/Snakewood.md new file mode 100644 index 0000000..76a5014 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Snakewood.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Snakewood" +platform: GBA +base: "Ruby" +version: "—" +status: "Complete" +type: ["New Experience"] +generation: "Gen 3 + fakemon" +library_path: "roms/gba/Hacks/Pokemon - Snakewood (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-snakewood.146749/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/ruby", "status/complete", "type/newexperience"] +--- +# Pokémon Snakewood + +> [!info] New Experience — **Complete** +> Game Boy Advance · base **Ruby** · version **—** · Gen 3 + fakemon + +## Summary +A cult-classic zombie-apocalypse reimagining of Hoenn — surreal, dark-comedic, and famously weird. Largely complete. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-snakewood.146749/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Snakewood%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Snakewood (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Sors.md b/pokemon-romhack-vault/Hacks/Sors.md new file mode 100644 index 0000000..666f4a4 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Sors.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Sors" +platform: GBA +base: "FireRed" +version: "1.3" +status: "Complete" +type: ["New Experience"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Sors (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-sors.420576/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/complete", "type/newexperience"] +--- +# Pokémon Sors + +> [!info] New Experience — **Complete** +> Game Boy Advance · base **FireRed** · version **1.3** · Multi-gen + +## Summary +A complete story-driven hack with a full new region and extensive item/guide documentation. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-sors.420576/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Sors%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Sors (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Sovereign of the Skies.md b/pokemon-romhack-vault/Hacks/Sovereign of the Skies.md new file mode 100644 index 0000000..3c7f7fb --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Sovereign of the Skies.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Sovereign of the Skies" +platform: GBA +base: "FireRed" +version: "2.1.2" +status: "Complete" +type: ["New Experience"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Sovereign of the Skies (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-sovereign-of-the-skies.349500/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/complete", "type/newexperience"] +--- +# Pokémon Sovereign of the Skies + +> [!info] New Experience — **Complete** +> Game Boy Advance · base **FireRed** · version **2.1.2** · Multi-gen + +## Summary +A complete new region with custom dex and a sky-themed plot. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-sovereign-of-the-skies.349500/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Sovereign%20of%20the%20Skies%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Sovereign of the Skies (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Storm Silver.md b/pokemon-romhack-vault/Hacks/Storm Silver.md new file mode 100644 index 0000000..1c79d5f --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Storm Silver.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Storm Silver" +platform: NDS +base: "SoulSilver" +version: "1.05" +status: "Complete" +type: ["Vanilla+", "Difficulty"] +generation: "Gen 1–4 mons" +library_path: "roms/nds/Hacks/Pokemon - Storm Silver (Hack).nds" +source: "https://www.pokecommunity.com/threads/pokemon-sacred-gold-storm-silver.165088/" +added: 2026-06-06 +tags: ["hack", "platform/nds", "base/soulsilver", "status/complete", "type/vanilla+", "type/difficulty"] +--- +# Pokémon Storm Silver + +> [!info] Vanilla+ · Difficulty — **Complete** +> Nintendo DS · base **SoulSilver** · version **1.05** · Gen 1–4 mons + +## Summary +Drayano's enhanced SoulSilver — the SoulSilver counterpart to Sacred Gold. + +## Type +[[Types#Vanilla+|Vanilla+]] [[Types#Difficulty|Difficulty]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-sacred-gold-storm-silver.165088/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Storm%20Silver%20rom%20hack + +## In the library +- `roms/nds/Hacks/Pokemon - Storm Silver (Hack).nds` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Super Mariomon.md b/pokemon-romhack-vault/Hacks/Super Mariomon.md new file mode 100644 index 0000000..9210ff3 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Super Mariomon.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Super Mariomon" +platform: GBA +base: "Emerald" +version: "1.5.2" +status: "Complete" +type: ["New Experience", "Cosmetic"] +generation: "Crossover" +library_path: "roms/gba/Hacks/Pokemon - Super Mariomon (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Super%20Mariomon%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/complete", "type/newexperience", "type/cosmetic"] +--- +# Pokémon Super Mariomon + +> [!info] New Experience · Cosmetic — **Complete** +> Game Boy Advance · base **Emerald** · version **1.5.2** · Crossover + +## Summary +A Mario × Pokémon crossover: catch and battle Mario-universe characters as 'Mariomon'. A complete novelty hack. + +## Type +[[Types#New Experience|New Experience]] [[Types#Cosmetic|Cosmetic]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Super%20Mariomon%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Super Mariomon (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Sword and Shield Ultimate Plus.md b/pokemon-romhack-vault/Hacks/Sword and Shield Ultimate Plus.md new file mode 100644 index 0000000..afd4e2a --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Sword and Shield Ultimate Plus.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Sword and Shield Ultimate Plus" +platform: GBA +base: "FireRed" +version: "1.2.1.2" +status: "Ongoing" +type: ["Demake", "New Experience"] +generation: "Gen 8 on GBA" +library_path: "roms/gba/Hacks/Pokemon - Sword and Shield Ultimate Plus (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Sword%20and%20Shield%20Ultimate%20Plus%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/ongoing", "type/demake", "type/newexperience"] +--- +# Pokémon Sword and Shield Ultimate Plus + +> [!info] Demake · New Experience — **Ongoing** +> Game Boy Advance · base **FireRed** · version **1.2.1.2** · Gen 8 on GBA + +## Summary +A Galar (Sword/Shield) demake bringing Gen 8's region, Pokémon, and Dynamax-era content to the GBA. + +## Type +[[Types#Demake|Demake]] [[Types#New Experience|New Experience]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Sword%20and%20Shield%20Ultimate%20Plus%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Sword and Shield Ultimate Plus (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/The Pit.md b/pokemon-romhack-vault/Hacks/The Pit.md new file mode 100644 index 0000000..c733688 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/The Pit.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon The Pit" +platform: GBA +base: "Emerald" +version: "2.5.1" +status: "Ongoing" +type: ["Roguelite", "Difficulty", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - The Pit (Hack).gba" +source: "https://www.hackdex.app/hack/the-pit" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/ongoing", "type/roguelite", "type/difficulty", "type/expansion"] +--- +# Pokémon The Pit + +> [!info] Roguelite · Difficulty · Expansion — **Ongoing** +> Game Boy Advance · base **Emerald** · version **2.5.1** · Multi-gen + +## Summary +A roguelite/battle-focused descent: climb floors, draft a team, and fight escalating encounters. Built on the Emerald expansion. + +## Type +[[Types#Roguelite|Roguelite]] [[Types#Difficulty|Difficulty]] [[Types#Expansion|Expansion]] + +## Links +- Source / info: https://www.hackdex.app/hack/the-pit +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20The%20Pit%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - The Pit (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Theta Emerald EX.md b/pokemon-romhack-vault/Hacks/Theta Emerald EX.md new file mode 100644 index 0000000..25b7c1a --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Theta Emerald EX.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Theta Emerald EX" +platform: GBA +base: "Emerald" +version: "EX" +status: "Complete" +type: ["Expansion", "Vanilla+"] +generation: "Gen 1–6 mons" +library_path: "roms/gba/Hacks/Pokemon - Theta Emerald EX (Hack).gba" +source: "https://www.pokecommunity.com/threads/pokemon-theta-emerald-ex.366617/" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/complete", "type/expansion", "type/vanilla+"] +--- +# Pokémon Theta Emerald EX + +> [!info] Expansion · Vanilla+ — **Complete** +> Game Boy Advance · base **Emerald** · version **EX** · Gen 1–6 mons + +## Summary +Classic 'all 800+ mons in Emerald' hack — Megas, Fairy type, and the full dex obtainable within Hoenn's story. + +## Type +[[Types#Expansion|Expansion]] [[Types#Vanilla+|Vanilla+]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-theta-emerald-ex.366617/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Theta%20Emerald%20EX%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Theta Emerald EX (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Tourmaline.md b/pokemon-romhack-vault/Hacks/Tourmaline.md new file mode 100644 index 0000000..61a26ba --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Tourmaline.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Tourmaline" +platform: GBA +base: "Emerald" +version: "1.1.1" +status: "Ongoing" +type: ["New Experience", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Tourmaline (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20Tourmaline%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/ongoing", "type/newexperience", "type/expansion"] +--- +# Pokémon Tourmaline + +> [!info] New Experience · Expansion — **Ongoing** +> Game Boy Advance · base **Emerald** · version **1.1.1** · Multi-gen + +## Summary +A new-region adventure on the Emerald expansion. + +## Type +[[Types#New Experience|New Experience]] [[Types#Expansion|Expansion]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Tourmaline%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Tourmaline (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Valiant.md b/pokemon-romhack-vault/Hacks/Valiant.md new file mode 100644 index 0000000..97e57d2 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Valiant.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Valiant" +platform: GBA +base: "Emerald" +version: "4.2.3" +status: "Ongoing" +type: ["New Experience", "Expansion"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - Valiant (Hack).gba" +source: "https://www.hackdex.app/hack/pokemon-valiant" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/emerald", "status/ongoing", "type/newexperience", "type/expansion"] +--- +# Pokémon Valiant + +> [!info] New Experience · Expansion — **Ongoing** +> Game Boy Advance · base **Emerald** · version **4.2.3** · Multi-gen + +## Summary +An original-region story hack on the Emerald expansion with custom characters and content. + +## Type +[[Types#New Experience|New Experience]] [[Types#Expansion|Expansion]] + +## Links +- Source / info: https://www.hackdex.app/hack/pokemon-valiant +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Valiant%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - Valiant (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Volt White 2 Redux.md b/pokemon-romhack-vault/Hacks/Volt White 2 Redux.md new file mode 100644 index 0000000..7cbc843 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Volt White 2 Redux.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Volt White 2 Redux" +platform: NDS +base: "White 2" +version: "1.4.1" +status: "Complete" +type: ["Vanilla+", "Difficulty", "Expansion"] +generation: "Gen 1–5 mons" +library_path: "roms/nds/Hacks/Pokemon - Volt White 2 Redux (Hack).nds" +source: "https://www.pokecommunity.com/" +added: 2026-06-06 +tags: ["hack", "platform/nds", "base/white2", "status/complete", "type/vanilla+", "type/difficulty", "type/expansion"] +--- +# Pokémon Volt White 2 Redux + +> [!info] Vanilla+ · Difficulty · Expansion — **Complete** +> Nintendo DS · base **White 2** · version **1.4.1** · Gen 1–5 mons + +## Summary +A community 'Redux' fork of Drayano's Volt White 2 — expanded availability and rebalanced difficulty. + +## Type +[[Types#Vanilla+|Vanilla+]] [[Types#Difficulty|Difficulty]] [[Types#Expansion|Expansion]] + +## Links +- Source / info: https://www.pokecommunity.com/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Volt%20White%202%20Redux%20rom%20hack + +## In the library +- `roms/nds/Hacks/Pokemon - Volt White 2 Redux (Hack).nds` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/Volt White.md b/pokemon-romhack-vault/Hacks/Volt White.md new file mode 100644 index 0000000..62fe7e6 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/Volt White.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon Volt White" +platform: NDS +base: "White" +version: "—" +status: "Complete" +type: ["Vanilla+", "Difficulty"] +generation: "Gen 1–5 mons" +library_path: "roms/nds/Hacks/Pokemon - Volt White (Hack).nds" +source: "https://www.pokecommunity.com/threads/pokemon-blaze-black-volt-white.252355/" +added: 2026-06-06 +tags: ["hack", "platform/nds", "base/white", "status/complete", "type/vanilla+", "type/difficulty"] +--- +# Pokémon Volt White + +> [!info] Vanilla+ · Difficulty — **Complete** +> Nintendo DS · base **White** · version **—** · Gen 1–5 mons + +## Summary +Drayano's White overhaul — full availability and boosted difficulty. The White counterpart to Blaze Black. + +## Type +[[Types#Vanilla+|Vanilla+]] [[Types#Difficulty|Difficulty]] + +## Links +- Source / info: https://www.pokecommunity.com/threads/pokemon-blaze-black-volt-white.252355/ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20Volt%20White%20rom%20hack + +## In the library +- `roms/nds/Hacks/Pokemon - Volt White (Hack).nds` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Hacks/WaveBlue.md b/pokemon-romhack-vault/Hacks/WaveBlue.md new file mode 100644 index 0000000..aa51475 --- /dev/null +++ b/pokemon-romhack-vault/Hacks/WaveBlue.md @@ -0,0 +1,33 @@ +--- +title: "Pokémon WaveBlue" +platform: GBA +base: "FireRed" +version: "1.7.5" +status: "Ongoing" +type: ["New Experience"] +generation: "Multi-gen" +library_path: "roms/gba/Hacks/Pokemon - WaveBlue (Hack).gba" +source: "https://duckduckgo.com/?q=Pok%C3%A9mon%20WaveBlue%20rom%20hack" +added: 2026-06-06 +tags: ["hack", "platform/gba", "base/firered", "status/ongoing", "type/newexperience"] +--- +# Pokémon WaveBlue + +> [!info] New Experience — **Ongoing** +> Game Boy Advance · base **FireRed** · version **1.7.5** · Multi-gen + +## Summary +A new-region adventure built on FireRed. + +## Type +[[Types#New Experience|New Experience]] + +## Links +- Source: _(not catalogued — see lookup)_ +- Lookup: https://duckduckgo.com/?q=Pok%C3%A9mon%20WaveBlue%20rom%20hack + +## In the library +- `roms/gba/Hacks/Pokemon - WaveBlue (Hack).gba` on valhalla +- Patch/source artifact archived under `/storage1/igir/romhacks/patches/` + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Index.md b/pokemon-romhack-vault/Index.md new file mode 100644 index 0000000..5921200 --- /dev/null +++ b/pokemon-romhack-vault/Index.md @@ -0,0 +1,116 @@ +# Pokémon ROM-Hack Library — Index + +A knowledge base for the **75** Pokémon ROM-hacks installed in the valhalla +library (`roms//Hacks/`). One note per hack — see [[Types]] for the tag +taxonomy and the [[#Platforms]] section for per-system views. + +**Game Boy**: 1 · **Game Boy Color**: 9 · **Game Boy Advance**: 57 · **Nintendo DS**: 8 + +## Directory (Dataview) + +> Requires the Dataview plugin. If you don't use it, the static table below mirrors it. + +```dataview +TABLE platform AS Platform, base AS Base, version AS Version, status AS Status, type AS Type +FROM "Hacks" +SORT platform ASC, file.name ASC +``` + + +## Directory (static) + +| Hack | Platform | Base | Version | Status | Type | +|---|---|---|---|---|---| +| [[Brown]] | GB | Red | 1.1 | Complete | New Experience | +| [[Adventure - Red Chapter]] | GBA | FireRed | Beta 15 | Complete (beta) | New Experience | +| [[Aesthetic Red]] | GBA | FireRed | 1.1 | Complete | Cosmetic, Vanilla+ | +| [[Amethyst]] | GBA | Emerald | 1.2.0 | Ongoing | Expansion, New Experience | +| [[Crystal Advance Redux]] | GBA | Emerald | 2026-05-06 | Ongoing | Demake, Vanilla+ | +| [[Dark Rising]] | GBA | FireRed | 1 (Origins) | Complete | New Experience, Difficulty | +| [[Dark Rising - Order Destroyed]] | GBA | FireRed | Complete | Complete | New Experience, Difficulty | +| [[Dark Rising 2]] | GBA | FireRed | Complete | Complete | New Experience, Difficulty | +| [[Elite Redux]] | GBA | Emerald | 2.65.3b | Ongoing | Expansion, Difficulty | +| [[Emerald Azure]] | GBA | Emerald | 0.5.3 | Beta | New Experience, Expansion | +| [[Emerald Extended Cut]] | GBA | Emerald | Classic+ 1.3 | Complete | Vanilla+, QoL | +| [[Emerald Imperium]] | GBA | Emerald | 1.3.1 | Complete | Expansion, Difficulty | +| [[Emerald Kaizo]] | GBA | Emerald | — | Complete | Difficulty | +| [[Emerald Rogue]] | GBA | Emerald | 2.1.2 EX | Ongoing | Roguelite, Expansion | +| [[Emerald Seaglass]] | GBA | Emerald | 3.0 | Complete | Vanilla+, QoL, Expansion | +| [[Emerald Squared]] | GBA | Emerald | 2.6.2 | Complete | Difficulty, Vanilla+ | +| [[Fire Red Extended]] | GBA | FireRed | 3.5.6 | Ongoing | Vanilla+, Expansion | +| [[Fire of Sky]] | GBA | — | 1.0.3 | Complete | New Experience | +| [[FireRed & LeafGreen+ (FRLG+)]] | GBA | FireRed | 1.5.1 | Ongoing | Vanilla+, QoL | +| [[FireRed Deluxe]] | GBA | FireRed | 20.5 | Ongoing | Vanilla+, Expansion, QoL | +| [[FireRed Reignited]] | GBA | FireRed | 1.55 | Ongoing | Vanilla+, QoL | +| [[Flora Sky]] | GBA | Emerald | Complete | Complete | New Experience | +| [[GS Chronicles]] | GBA | FireRed | 2.7.6 | Complete | New Experience, Demake | +| [[Gaia]] | GBA | FireRed | 3.2 | Complete | New Experience | +| [[Glazed]] | GBA | Emerald | 9.2.0 | Complete | New Experience | +| [[Heart and Soul]] | GBA | FireRed | 1.2.1 | Ongoing | New Experience, Demake | +| [[Hearth]] | GBA | Emerald | 0.1.27 | Beta | New Experience, Expansion | +| [[Hoenn's Last Wish]] | GBA | Emerald | 0.4.7 | Beta | New Experience, Expansion | +| [[Inclement Emerald]] | GBA | Emerald | — | Complete | Difficulty, Expansion | +| [[Inkwell]] | GBA | Emerald | 1.04 | Ongoing | New Experience, Expansion | +| [[Lazarus]] | GBA | Emerald (TrashMan) | v2 | Ongoing | New Experience, Expansion | +| [[Light Platinum]] | GBA | Ruby | 1.1 | Complete | New Experience | +| [[Liquid Crystal]] | GBA | FireRed | 3.3 | Complete | New Experience, Demake | +| [[Mega Power]] | GBA | Ruby | 5.62 | Complete | New Experience | +| [[Modern Emerald]] | GBA | Emerald | 3.3.1 | Complete | Vanilla+, QoL, Expansion | +| [[Moemon Mega FireRed]] | GBA | FireRed | 1.4c | Complete | Cosmetic | +| [[Moemon Star Emerald]] | GBA | Emerald | 1.1c | Complete | Cosmetic | +| [[Odyssey]] | GBA | FireRed | 4.1.1 | Complete | New Experience | +| [[Omega Ruby Origins]] | GBA | Emerald | 1.4.8.7 | Ongoing | Demake, New Experience | +| [[Phoenix Red]] | GBA | FireRed | 1.2 | Complete | Difficulty, Expansion | +| [[Pisces]] | GBA | — | 1.5.4 | Complete | New Experience | +| [[Project Nova]] | GBA | Emerald | 2.7.0 | Ongoing | New Experience, Expansion | +| [[R.O.W.E.]] | GBA | Emerald | 2.1.1 | Ongoing | New Experience, QoL, Expansion | +| [[Radical Red]] | GBA | FireRed | 4.10 | Ongoing | Difficulty, Expansion | +| [[Recordkeepers]] | GBA | Emerald | 1.2.1 | Ongoing | New Experience, Expansion | +| [[Resolute]] | GBA | Ruby | 2.97 | Complete | New Experience | +| [[Saiph]] | GBA | FireRed | 2020 | Complete | New Experience | +| [[Saiph 2]] | GBA | FireRed | 1.4.0 | Complete | New Experience | +| [[Snakewood]] | GBA | Ruby | — | Complete | New Experience | +| [[Sors]] | GBA | FireRed | 1.3 | Complete | New Experience | +| [[Sovereign of the Skies]] | GBA | FireRed | 2.1.2 | Complete | New Experience | +| [[Super Mariomon]] | GBA | Emerald | 1.5.2 | Complete | New Experience, Cosmetic | +| [[Sword and Shield Ultimate Plus]] | GBA | FireRed | 1.2.1.2 | Ongoing | Demake, New Experience | +| [[The Pit]] | GBA | Emerald | 2.5.1 | Ongoing | Roguelite, Difficulty, Expansion | +| [[Theta Emerald EX]] | GBA | Emerald | EX | Complete | Expansion, Vanilla+ | +| [[Tourmaline]] | GBA | Emerald | 1.1.1 | Ongoing | New Experience, Expansion | +| [[Valiant]] | GBA | Emerald | 4.2.3 | Ongoing | New Experience, Expansion | +| [[WaveBlue]] | GBA | FireRed | 1.7.5 | Ongoing | New Experience | +| [[Ambrosia]] | GBC | Crystal | 2.4.0 | Ongoing | New Experience | +| [[Crystal Clear]] | GBC | Crystal | 2.5.7 | Complete | New Experience, QoL | +| [[Crystal Inheritance]] | GBC | Crystal | 1.0.3 | Complete | New Experience | +| [[Crystal Kaizo]] | GBC | Crystal | 1.0 | Complete | Difficulty | +| [[Low Budget Crystal]] | GBC | Crystal | — | Complete | Vanilla+, QoL | +| [[Orange]] | GBC | Crystal | — | Complete | New Experience | +| [[Peridot]] | GBC | Crystal | 2.2.3 | Ongoing | New Experience | +| [[Polished Crystal]] | GBC | Crystal | 3.2.3 | Complete | Vanilla+, QoL, Expansion | +| [[Prism]] | GBC | Crystal | 1.0 | Complete | New Experience | +| [[Blaze Black]] | NDS | Black | — | Complete | Vanilla+, Difficulty | +| [[Blaze Black 2 Redux]] | NDS | Black 2 | 1.3.0 | Complete | Vanilla+, Difficulty, Expansion | +| [[Following Renegade Platinum]] | NDS | Platinum | 2.0 | Complete | Difficulty, Vanilla+, QoL | +| [[Renegade Platinum]] | NDS | Platinum | 1.3.0 | Complete | Difficulty, Vanilla+ | +| [[Sacred Gold]] | NDS | HeartGold | 1.05 | Complete | Vanilla+, Difficulty | +| [[Storm Silver]] | NDS | SoulSilver | 1.05 | Complete | Vanilla+, Difficulty | +| [[Volt White]] | NDS | White | — | Complete | Vanilla+, Difficulty | +| [[Volt White 2 Redux]] | NDS | White 2 | 1.4.1 | Complete | Vanilla+, Difficulty, Expansion | + +## Platforms + +- [[GBA]] · [[GBC]] · [[GB]] · [[NDS]] + +## By type + +- [[Types#Vanilla+|Vanilla+]] — Official game enhanced — QoL, all species obtainable, light rebalance; same region/story. +- [[Types#QoL|QoL]] — Primarily quality-of-life conveniences over an official base. +- [[Types#Difficulty|Difficulty]] — Built to be hard — boosted AI/teams, kaizo, or competitive rulesets. +- [[Types#Expansion|Expansion]] — Built on a decomp + expansion: many generations, modern mechanics, new abilities/moves. +- [[Types#New Experience|New Experience]] — New region, story, and/or Pokédex — a fresh adventure, not the official game. +- [[Types#Demake|Demake]] — Recreates a later-generation game on older hardware. +- [[Types#Roguelite|Roguelite]] — Run-based, randomized, permadeath-flavored structure. +- [[Types#Cosmetic|Cosmetic]] — Visual/audio overhaul (e.g. Moemon sprites, tilesets, music) over an existing game. + +--- +*Generated by `scripts/build-romhack-vault.py` — edit the dataset there and re-run to update.* diff --git a/pokemon-romhack-vault/Platforms/GB.md b/pokemon-romhack-vault/Platforms/GB.md new file mode 100644 index 0000000..ab7721c --- /dev/null +++ b/pokemon-romhack-vault/Platforms/GB.md @@ -0,0 +1,16 @@ +# Game Boy (GB) — 1 hacks + +```dataview +TABLE base, version, status, type +FROM "Hacks" +WHERE platform = "GB" +SORT file.name ASC +``` + +## Static + +| Hack | Base | Version | Status | Type | +|---|---|---|---|---| +| [[Brown]] | Red | 1.1 | Complete | New Experience | + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Platforms/GBA.md b/pokemon-romhack-vault/Platforms/GBA.md new file mode 100644 index 0000000..5555e6d --- /dev/null +++ b/pokemon-romhack-vault/Platforms/GBA.md @@ -0,0 +1,72 @@ +# Game Boy Advance (GBA) — 57 hacks + +```dataview +TABLE base, version, status, type +FROM "Hacks" +WHERE platform = "GBA" +SORT file.name ASC +``` + +## Static + +| Hack | Base | Version | Status | Type | +|---|---|---|---|---| +| [[Adventure - Red Chapter]] | FireRed | Beta 15 | Complete (beta) | New Experience | +| [[Aesthetic Red]] | FireRed | 1.1 | Complete | Cosmetic, Vanilla+ | +| [[Amethyst]] | Emerald | 1.2.0 | Ongoing | Expansion, New Experience | +| [[Crystal Advance Redux]] | Emerald | 2026-05-06 | Ongoing | Demake, Vanilla+ | +| [[Dark Rising]] | FireRed | 1 (Origins) | Complete | New Experience, Difficulty | +| [[Dark Rising - Order Destroyed]] | FireRed | Complete | Complete | New Experience, Difficulty | +| [[Dark Rising 2]] | FireRed | Complete | Complete | New Experience, Difficulty | +| [[Elite Redux]] | Emerald | 2.65.3b | Ongoing | Expansion, Difficulty | +| [[Emerald Azure]] | Emerald | 0.5.3 | Beta | New Experience, Expansion | +| [[Emerald Extended Cut]] | Emerald | Classic+ 1.3 | Complete | Vanilla+, QoL | +| [[Emerald Imperium]] | Emerald | 1.3.1 | Complete | Expansion, Difficulty | +| [[Emerald Kaizo]] | Emerald | — | Complete | Difficulty | +| [[Emerald Rogue]] | Emerald | 2.1.2 EX | Ongoing | Roguelite, Expansion | +| [[Emerald Seaglass]] | Emerald | 3.0 | Complete | Vanilla+, QoL, Expansion | +| [[Emerald Squared]] | Emerald | 2.6.2 | Complete | Difficulty, Vanilla+ | +| [[Fire Red Extended]] | FireRed | 3.5.6 | Ongoing | Vanilla+, Expansion | +| [[Fire of Sky]] | — | 1.0.3 | Complete | New Experience | +| [[FireRed & LeafGreen+ (FRLG+)]] | FireRed | 1.5.1 | Ongoing | Vanilla+, QoL | +| [[FireRed Deluxe]] | FireRed | 20.5 | Ongoing | Vanilla+, Expansion, QoL | +| [[FireRed Reignited]] | FireRed | 1.55 | Ongoing | Vanilla+, QoL | +| [[Flora Sky]] | Emerald | Complete | Complete | New Experience | +| [[GS Chronicles]] | FireRed | 2.7.6 | Complete | New Experience, Demake | +| [[Gaia]] | FireRed | 3.2 | Complete | New Experience | +| [[Glazed]] | Emerald | 9.2.0 | Complete | New Experience | +| [[Heart and Soul]] | FireRed | 1.2.1 | Ongoing | New Experience, Demake | +| [[Hearth]] | Emerald | 0.1.27 | Beta | New Experience, Expansion | +| [[Hoenn's Last Wish]] | Emerald | 0.4.7 | Beta | New Experience, Expansion | +| [[Inclement Emerald]] | Emerald | — | Complete | Difficulty, Expansion | +| [[Inkwell]] | Emerald | 1.04 | Ongoing | New Experience, Expansion | +| [[Lazarus]] | Emerald (TrashMan) | v2 | Ongoing | New Experience, Expansion | +| [[Light Platinum]] | Ruby | 1.1 | Complete | New Experience | +| [[Liquid Crystal]] | FireRed | 3.3 | Complete | New Experience, Demake | +| [[Mega Power]] | Ruby | 5.62 | Complete | New Experience | +| [[Modern Emerald]] | Emerald | 3.3.1 | Complete | Vanilla+, QoL, Expansion | +| [[Moemon Mega FireRed]] | FireRed | 1.4c | Complete | Cosmetic | +| [[Moemon Star Emerald]] | Emerald | 1.1c | Complete | Cosmetic | +| [[Odyssey]] | FireRed | 4.1.1 | Complete | New Experience | +| [[Omega Ruby Origins]] | Emerald | 1.4.8.7 | Ongoing | Demake, New Experience | +| [[Phoenix Red]] | FireRed | 1.2 | Complete | Difficulty, Expansion | +| [[Pisces]] | — | 1.5.4 | Complete | New Experience | +| [[Project Nova]] | Emerald | 2.7.0 | Ongoing | New Experience, Expansion | +| [[R.O.W.E.]] | Emerald | 2.1.1 | Ongoing | New Experience, QoL, Expansion | +| [[Radical Red]] | FireRed | 4.10 | Ongoing | Difficulty, Expansion | +| [[Recordkeepers]] | Emerald | 1.2.1 | Ongoing | New Experience, Expansion | +| [[Resolute]] | Ruby | 2.97 | Complete | New Experience | +| [[Saiph]] | FireRed | 2020 | Complete | New Experience | +| [[Saiph 2]] | FireRed | 1.4.0 | Complete | New Experience | +| [[Snakewood]] | Ruby | — | Complete | New Experience | +| [[Sors]] | FireRed | 1.3 | Complete | New Experience | +| [[Sovereign of the Skies]] | FireRed | 2.1.2 | Complete | New Experience | +| [[Super Mariomon]] | Emerald | 1.5.2 | Complete | New Experience, Cosmetic | +| [[Sword and Shield Ultimate Plus]] | FireRed | 1.2.1.2 | Ongoing | Demake, New Experience | +| [[The Pit]] | Emerald | 2.5.1 | Ongoing | Roguelite, Difficulty, Expansion | +| [[Theta Emerald EX]] | Emerald | EX | Complete | Expansion, Vanilla+ | +| [[Tourmaline]] | Emerald | 1.1.1 | Ongoing | New Experience, Expansion | +| [[Valiant]] | Emerald | 4.2.3 | Ongoing | New Experience, Expansion | +| [[WaveBlue]] | FireRed | 1.7.5 | Ongoing | New Experience | + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Platforms/GBC.md b/pokemon-romhack-vault/Platforms/GBC.md new file mode 100644 index 0000000..0e8ba72 --- /dev/null +++ b/pokemon-romhack-vault/Platforms/GBC.md @@ -0,0 +1,24 @@ +# Game Boy Color (GBC) — 9 hacks + +```dataview +TABLE base, version, status, type +FROM "Hacks" +WHERE platform = "GBC" +SORT file.name ASC +``` + +## Static + +| Hack | Base | Version | Status | Type | +|---|---|---|---|---| +| [[Ambrosia]] | Crystal | 2.4.0 | Ongoing | New Experience | +| [[Crystal Clear]] | Crystal | 2.5.7 | Complete | New Experience, QoL | +| [[Crystal Inheritance]] | Crystal | 1.0.3 | Complete | New Experience | +| [[Crystal Kaizo]] | Crystal | 1.0 | Complete | Difficulty | +| [[Low Budget Crystal]] | Crystal | — | Complete | Vanilla+, QoL | +| [[Orange]] | Crystal | — | Complete | New Experience | +| [[Peridot]] | Crystal | 2.2.3 | Ongoing | New Experience | +| [[Polished Crystal]] | Crystal | 3.2.3 | Complete | Vanilla+, QoL, Expansion | +| [[Prism]] | Crystal | 1.0 | Complete | New Experience | + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/Platforms/NDS.md b/pokemon-romhack-vault/Platforms/NDS.md new file mode 100644 index 0000000..a6ca550 --- /dev/null +++ b/pokemon-romhack-vault/Platforms/NDS.md @@ -0,0 +1,23 @@ +# Nintendo DS (NDS) — 8 hacks + +```dataview +TABLE base, version, status, type +FROM "Hacks" +WHERE platform = "NDS" +SORT file.name ASC +``` + +## Static + +| Hack | Base | Version | Status | Type | +|---|---|---|---|---| +| [[Blaze Black]] | Black | — | Complete | Vanilla+, Difficulty | +| [[Blaze Black 2 Redux]] | Black 2 | 1.3.0 | Complete | Vanilla+, Difficulty, Expansion | +| [[Following Renegade Platinum]] | Platinum | 2.0 | Complete | Difficulty, Vanilla+, QoL | +| [[Renegade Platinum]] | Platinum | 1.3.0 | Complete | Difficulty, Vanilla+ | +| [[Sacred Gold]] | HeartGold | 1.05 | Complete | Vanilla+, Difficulty | +| [[Storm Silver]] | SoulSilver | 1.05 | Complete | Vanilla+, Difficulty | +| [[Volt White]] | White | — | Complete | Vanilla+, Difficulty | +| [[Volt White 2 Redux]] | White 2 | 1.4.1 | Complete | Vanilla+, Difficulty, Expansion | + +[[Index|← back to directory]] diff --git a/pokemon-romhack-vault/README.md b/pokemon-romhack-vault/README.md new file mode 100644 index 0000000..33c5f20 --- /dev/null +++ b/pokemon-romhack-vault/README.md @@ -0,0 +1,23 @@ +# Pokémon ROM-Hack Vault + +An [Obsidian](https://obsidian.md) vault documenting the **75** Pokémon ROM-hacks +in the valhalla library. Open *this folder* as a vault (or copy it into an existing one). + +## Layout +- **[[Index]]** — the master directory (Dataview + static table). +- **[[Types]]** — the type taxonomy (QoL, Vanilla+, Difficulty, Expansion, New Experience, Demake, Roguelite, Cosmetic). +- **Hacks/** — one note per hack with frontmatter properties + tags. +- **Platforms/** — per-system maps of content (GBA / GBC / GB / NDS). + +## Conventions +- Frontmatter uses Obsidian **properties** (`platform`, `base`, `version`, `status`, `type`, `generation`, `source`) so the **Dataview** and **Bases** plugins work. +- Every note also carries **tags** (`#platform/gba`, `#type/difficulty`, `#status/complete`, `#base/firered`) so search/graph work with **zero plugins**. +- `library_path` points at the file under `roms//Hacks/` on valhalla. + +## Recommended plugins +- **Dataview** (the Index/Platform tables) and optionally **Bases** (Obsidian's native DB view). + +## Caveats +- `base`, `version`, and `type` are best-effort from the import metadata + general knowledge; a few obscure hacks show `base: —` where the source wasn't certain. Correct any in `scripts/build-romhack-vault.py` and re-run. + +*Generated by `scripts/build-romhack-vault.py`.* diff --git a/pokemon-romhack-vault/Types.md b/pokemon-romhack-vault/Types.md new file mode 100644 index 0000000..5959eec --- /dev/null +++ b/pokemon-romhack-vault/Types.md @@ -0,0 +1,186 @@ +# Type Taxonomy + +Each hack is tagged with one or more of these. Tags are also queryable as `#type/...`. + +## Vanilla+ +Official game enhanced — QoL, all species obtainable, light rebalance; same region/story. + +`#type/vanilla+` — 21 hacks + +- [[Aesthetic Red]] +- [[Blaze Black]] +- [[Blaze Black 2 Redux]] +- [[Crystal Advance Redux]] +- [[Emerald Extended Cut]] +- [[Emerald Seaglass]] +- [[Emerald Squared]] +- [[Fire Red Extended]] +- [[FireRed & LeafGreen+ (FRLG+)]] +- [[FireRed Deluxe]] +- [[FireRed Reignited]] +- [[Following Renegade Platinum]] +- [[Low Budget Crystal]] +- [[Modern Emerald]] +- [[Polished Crystal]] +- [[Renegade Platinum]] +- [[Sacred Gold]] +- [[Storm Silver]] +- [[Theta Emerald EX]] +- [[Volt White]] +- [[Volt White 2 Redux]] + +## QoL +Primarily quality-of-life conveniences over an official base. + +`#type/qol` — 11 hacks + +- [[Crystal Clear]] +- [[Emerald Extended Cut]] +- [[Emerald Seaglass]] +- [[FireRed & LeafGreen+ (FRLG+)]] +- [[FireRed Deluxe]] +- [[FireRed Reignited]] +- [[Following Renegade Platinum]] +- [[Low Budget Crystal]] +- [[Modern Emerald]] +- [[Polished Crystal]] +- [[R.O.W.E.]] + +## Difficulty +Built to be hard — boosted AI/teams, kaizo, or competitive rulesets. + +`#type/difficulty` — 20 hacks + +- [[Blaze Black]] +- [[Blaze Black 2 Redux]] +- [[Crystal Kaizo]] +- [[Dark Rising]] +- [[Dark Rising - Order Destroyed]] +- [[Dark Rising 2]] +- [[Elite Redux]] +- [[Emerald Imperium]] +- [[Emerald Kaizo]] +- [[Emerald Squared]] +- [[Following Renegade Platinum]] +- [[Inclement Emerald]] +- [[Phoenix Red]] +- [[Radical Red]] +- [[Renegade Platinum]] +- [[Sacred Gold]] +- [[Storm Silver]] +- [[The Pit]] +- [[Volt White]] +- [[Volt White 2 Redux]] + +## Expansion +Built on a decomp + expansion: many generations, modern mechanics, new abilities/moves. + +`#type/expansion` — 26 hacks + +- [[Amethyst]] +- [[Blaze Black 2 Redux]] +- [[Elite Redux]] +- [[Emerald Azure]] +- [[Emerald Imperium]] +- [[Emerald Rogue]] +- [[Emerald Seaglass]] +- [[Fire Red Extended]] +- [[FireRed Deluxe]] +- [[Hearth]] +- [[Hoenn's Last Wish]] +- [[Inclement Emerald]] +- [[Inkwell]] +- [[Lazarus]] +- [[Modern Emerald]] +- [[Phoenix Red]] +- [[Polished Crystal]] +- [[Project Nova]] +- [[R.O.W.E.]] +- [[Radical Red]] +- [[Recordkeepers]] +- [[The Pit]] +- [[Theta Emerald EX]] +- [[Tourmaline]] +- [[Valiant]] +- [[Volt White 2 Redux]] + +## New Experience +New region, story, and/or Pokédex — a fresh adventure, not the official game. + +`#type/newexperience` — 43 hacks + +- [[Adventure - Red Chapter]] +- [[Ambrosia]] +- [[Amethyst]] +- [[Brown]] +- [[Crystal Clear]] +- [[Crystal Inheritance]] +- [[Dark Rising]] +- [[Dark Rising - Order Destroyed]] +- [[Dark Rising 2]] +- [[Emerald Azure]] +- [[Fire of Sky]] +- [[Flora Sky]] +- [[GS Chronicles]] +- [[Gaia]] +- [[Glazed]] +- [[Heart and Soul]] +- [[Hearth]] +- [[Hoenn's Last Wish]] +- [[Inkwell]] +- [[Lazarus]] +- [[Light Platinum]] +- [[Liquid Crystal]] +- [[Mega Power]] +- [[Odyssey]] +- [[Omega Ruby Origins]] +- [[Orange]] +- [[Peridot]] +- [[Pisces]] +- [[Prism]] +- [[Project Nova]] +- [[R.O.W.E.]] +- [[Recordkeepers]] +- [[Resolute]] +- [[Saiph]] +- [[Saiph 2]] +- [[Snakewood]] +- [[Sors]] +- [[Sovereign of the Skies]] +- [[Super Mariomon]] +- [[Sword and Shield Ultimate Plus]] +- [[Tourmaline]] +- [[Valiant]] +- [[WaveBlue]] + +## Demake +Recreates a later-generation game on older hardware. + +`#type/demake` — 6 hacks + +- [[Crystal Advance Redux]] +- [[GS Chronicles]] +- [[Heart and Soul]] +- [[Liquid Crystal]] +- [[Omega Ruby Origins]] +- [[Sword and Shield Ultimate Plus]] + +## Roguelite +Run-based, randomized, permadeath-flavored structure. + +`#type/roguelite` — 2 hacks + +- [[Emerald Rogue]] +- [[The Pit]] + +## Cosmetic +Visual/audio overhaul (e.g. Moemon sprites, tilesets, music) over an existing game. + +`#type/cosmetic` — 4 hacks + +- [[Aesthetic Red]] +- [[Moemon Mega FireRed]] +- [[Moemon Star Emerald]] +- [[Super Mariomon]] + +[[Index|← back to directory]] \ No newline at end of file diff --git a/pokemon-romhacks-wanted.md b/pokemon-romhacks-wanted.md new file mode 100644 index 0000000..2bd531b --- /dev/null +++ b/pokemon-romhacks-wanted.md @@ -0,0 +1,79 @@ +# Pokémon ROM Hacks — Manual Acquisition List + +Worthwhile hacks that **could not be auto-patched** because their patches are +gated behind anti-bot hosts (hackdex.app), Discord servers, or Google Drive/MEGA +links that aren't directly fetchable. The auto-patched set (25 hacks) is already +in `roms//Hacks/` — see the bottom of this file. + +**Scope:** pre-3DS handhelds (gb/gbc/gba/nds) + pre-Wii consoles, per request. + +--- + +## How to hand one off to me + +Once you grab a patch (`.bps` / `.ips` / `.ups` / `.xdelta`), drop it anywhere on +valhalla (e.g. `/storage1/igir/romhacks/incoming/`) and tell me. Applying it is seconds: + +```bash +# BPS/UPS self-verify the base ROM; xdelta v1 verifies source MD5. +python3 /storage1/igir/romhacks/tools/apply.py "" +# xdelta v1 patches (magic %XDZ): docker run ... node:lts -> apt install xdelta +``` + +Or I add a line to `scripts/romhack-fetch.py`'s manifest and run `--place`. + +A patched ROM is the same end result either way — if you'd rather just download a +**pre-patched ROM**, that works too; I'll validate + rename it to match. + +--- + +## Wanted — handhelds + +Base-ROM ownership is noted; ✅ = you already own the base on valhalla. + +> **Update (2026-06-06):** the big `pokemon/` drop-folder import added 53 more hacks +> (incl. Emerald Rogue EX, Emerald Seaglass, Sors, Saiph 1 & 2, Flora Sky, Sovereign +> of the Skies, Crystal Kaizo, Lazarus) plus **Following Renegade Platinum** in place +> of Following Platinum. The list below is what's *still* not acquired. + +| Hack | Platform | Base ROM | Format | Where to get it | Notes | +|---|---|---|---|---|---| +| **Run & Bun** | GBA | FireRed 1.0 ✅ | BPS | Official Discord · hackdex | Acclaimed hard/competitive hack. Discord-gated. | +| **CrystalDust** | GBA | Ruby ✅ | UPS | itch.io (forever-team) · Discord | Gen-2 Johto remake, complete. | +| **Outlaw** | GBA | FireRed ✅ | IPS | PokeCommunity | Mature, short, complete. | +| **Vega** | GBA | **FireRed (JP) ❌** | IPS | romhacking archives | Needs a **Japanese** FireRed 1.0 base — you don't own one. | +| **Gold/Silver Kaizo** | GBC | Gold/Silver ✅ | IPS | Kaizo Discord | Complete difficulty hacks (Crystal Kaizo now acquired). | + +### Optional add-on patches (archived, not applied) + +Inside the Sors / Saiph 2 downloads were **optional** extra IPS patches (3DS VC mode, lag-fix, vigilante mode, time-based events) meant to be layered on top of the main ROM. The main ROMs are placed; these extras are kept in `patches/_imported/` if you ever want them applied. + +--- + +## Versions worth refreshing later + +These are **already placed**, but newer/better builds live behind gated hosts: + +- **Radical Red** — now at v4.10 (from your drop); latest dev builds are on the official Discord. +- **Unbound** — already in your library (pre-existing); update via hackdex. + +## Deliberately excluded + +- **Clover** — polished but full of offensive/meme content (your "no shitpost" rule). + +## Console (pre-Wii) + +No well-regarded *finished* N64/GameCube Pokémon ROM hacks exist beyond the GameCube +Colosseum/XD enhancement hacks you **already have** (`Grand Colosseum`, `XD – XG`). +Nothing to acquire here. + +--- + +## Already auto-patched (reference) — in `roms//Hacks/` + +- **gb (1):** Brown +- **gbc (3):** Polished Crystal · Crystal Clear · Prism +- **gba (14):** Gaia · Radical Red · Inclement Emerald · Glazed · Light Platinum · Liquid Crystal · Theta Emerald EX · Snakewood · Mega Power · Resolute · Emerald Kaizo · Dark Rising · Dark Rising 2 · Dark Rising Order Destroyed +- **nds (7):** Renegade Platinum · Sacred Gold · Storm Silver · Blaze Black · Volt White · Blaze Black 2 Redux · Volt White 2 Redux + +Source artifacts retained under `/storage1/igir/romhacks/patches//`. diff --git a/scripts/build-romhack-vault.py b/scripts/build-romhack-vault.py new file mode 100644 index 0000000..7e696cb --- /dev/null +++ b/scripts/build-romhack-vault.py @@ -0,0 +1,471 @@ +#!/usr/bin/env python3 +"""Generate an Obsidian vault documenting the Pokémon ROM-hacks in the library. + +Emits, under pokemon-romhack-vault/ : + - Hacks/.md one note per hack (YAML frontmatter + tags + summary) + - Index.md directory MOC (Dataview query + static fallback table) + - Types.md the type taxonomy + - Platforms/*.md per-platform MOCs (Dataview) + - README.md how to use the vault + +The dataset below is the single source of truth — add a row and re-run to extend. +Frontmatter uses Obsidian "properties" so Dataview / Bases plugins work; tags +(#platform/.. #type/.. #status/.. #base/..) make it usable with zero plugins too. + +Run from the repo root: python scripts/build-romhack-vault.py +""" +import os, re, urllib.parse + +VAULT = os.path.join(os.path.dirname(__file__), "..", "pokemon-romhack-vault") +ADDED = "2026-06-06" + +# Type taxonomy (keep in sync with Types.md generation below) +TYPES = { + "Vanilla+": "Official game enhanced — QoL, all species obtainable, light rebalance; same region/story.", + "QoL": "Primarily quality-of-life conveniences over an official base.", + "Difficulty": "Built to be hard — boosted AI/teams, kaizo, or competitive rulesets.", + "Expansion": "Built on a decomp + expansion: many generations, modern mechanics, new abilities/moves.", + "New Experience": "New region, story, and/or Pokédex — a fresh adventure, not the official game.", + "Demake": "Recreates a later-generation game on older hardware.", + "Roguelite": "Run-based, randomized, permadeath-flavored structure.", + "Cosmetic": "Visual/audio overhaul (e.g. Moemon sprites, tilesets, music) over an existing game.", +} + +# base ROM display -> tag slug +def base_tag(b): + return re.sub(r"[^a-z0-9]+", "", b.lower()) if b and b != "—" else "unknown" + +# Each: (title, platform, base, version, status, [types], gen, url, summary) +# base "—" = not confidently known. url = canonical source if known else "". +HACKS = [ + # ---------------- GB ---------------- + ("Pokémon Brown", "gb", "Red", "1.1", "Complete", ["New Experience"], "Gen 1+", + "https://www.pokecommunity.com/threads/pokemon-brown.27915/", + "One of the oldest and most influential hacks. A brand-new Rijon region with new towns, gyms, and a custom dex built on Gen 1, by Koolboyman (who later made Prism)."), + # ---------------- GBC ---------------- + ("Pokémon Ambrosia", "gbc", "Crystal", "2.4.0", "Ongoing", ["New Experience"], "Gen 2 style", + "https://www.pokecommunity.com/", + "An ambitious Crystal-engine hack with a new region, expanded dex, and modernized features pushed onto Gen 2 hardware."), + ("Pokémon Crystal Clear", "gbc", "Crystal", "2.5.7", "Complete", ["New Experience", "QoL"], "Gen 1–2", + "https://www.pokecommunity.com/threads/pokemon-crystal-clear.382197/", + "Open-world Crystal — pick any starter, tackle gyms in any order, roam Johto+Kanto freely. A landmark open-world take on Gen 2 by ShockSlayer."), + ("Pokémon Crystal Inheritance", "gbc", "Crystal", "1.0.3", "Complete", ["New Experience"], "Gen 2+", + "", + "A Crystal-based adventure with a new story and updated rosters/mechanics within the Gen 2 framework."), + ("Pokémon Crystal Kaizo", "gbc", "Crystal", "1.0", "Complete", ["Difficulty"], "Gen 2", + "", + "The definitive Gen 2 kaizo: every trainer is a brutal, fully-EV'd gauntlet. Companion to the Gold/Silver Kaizo line."), + ("Pokémon Low Budget Crystal", "gbc", "Crystal", "—", "Complete", ["Vanilla+", "QoL"], "Gen 2", + "", + "A light, faithful Crystal enhancement — quality-of-life tweaks and availability fixes without changing the core game."), + ("Pokémon Orange", "gbc", "Crystal", "—", "Complete", ["New Experience"], "Gen 2 style", + "", + "Set in the anime's Orange Islands / Orange League. This is the modern Suloku-patched build with bug fixes and PSS-era touches."), + ("Pokémon Peridot", "gbc", "Crystal", "2.2.3", "Ongoing", ["New Experience"], "Gen 2 style", + "", + "A from-scratch new region on the Gen 2 engine with an original dex and story."), + ("Pokémon Polished Crystal", "gbc", "Crystal", "3.2.3", "Complete", ["Vanilla+", "QoL", "Expansion"], "Gen 1–7 mons", + "https://github.com/Rangi42/polishedcrystal", + "The gold standard Crystal enhancement: physical/special split, ~Gen 7 movesets/species availability, faithful or modern modes, tons of QoL. Open-source decomp."), + ("Pokémon Prism", "gbc", "Crystal", "1.0", "Complete", ["New Experience"], "Gen 2+", + "https://www.pokecommunity.com/threads/pokemon-prism.379413/", + "Koolboyman's acclaimed new Naljo region — new types, side games, huge custom dex. Famously C&D'd then completed; a Gen 2 magnum opus."), + # ---------------- GBA ---------------- + ("Pokémon Adventure - Red Chapter", "gba", "FireRed", "Beta 15", "Complete (beta)", ["New Experience"], "Gen 1–6 mons", + "https://www.pokecommunity.com/threads/pokemon-adventure-red-chapter.331313/", + "Based on the Pokémon Adventures (Pokémon Special) manga — play through Red's story with manga events. Beta 15 is the full, finished beta."), + ("Pokémon Aesthetic Red", "gba", "FireRed", "1.1", "Complete", ["Cosmetic", "Vanilla+"], "Gen 1", + "", + "A visual + musical overhaul of FireRed — restyled tiles, sprites, and soundtrack while keeping vanilla gameplay."), + ("Pokémon Amethyst", "gba", "Emerald", "1.2.0", "Ongoing", ["Expansion", "New Experience"], "Multi-gen", + "https://www.hackdex.app/hack/pokemon-amethyst", + "A pokeemerald-expansion adventure with a new region/story and modern mechanics."), + ("Pokémon Crystal Advance Redux", "gba", "Emerald", "2026-05-06", "Ongoing", ["Demake", "Vanilla+"], "Gen 2 on GBA", + "", + "Pokémon Crystal rebuilt on the GBA (pokeemerald) with Gen-3+ engine conveniences — Johto with modern QoL."), + ("Pokémon Dark Rising", "gba", "FireRed", "1 (Origins)", "Complete", ["New Experience", "Difficulty"], "Multi-gen + fakemon", + "https://www.pokecommunity.com/threads/pokemon-dark-rising-series.341667/", + "Notoriously hard story-driven hack with a dark plot, fakemon, and multi-gen mons. The Origins build is the remastered DR1."), + ("Pokémon Dark Rising 2", "gba", "FireRed", "Complete", "Complete", ["New Experience", "Difficulty"], "Multi-gen + fakemon", + "https://www.pokecommunity.com/threads/pokemon-dark-rising-series.341667/", + "Sequel to Dark Rising — bigger story, more fakemon, same punishing difficulty."), + ("Pokémon Dark Rising - Order Destroyed", "gba", "FireRed", "Complete", "Complete", ["New Experience", "Difficulty"], "Multi-gen", + "https://www.pokecommunity.com/threads/pokemon-dark-rising-series.341667/", + "A spin-off entry in the Dark Rising saga."), + ("Pokémon Elite Redux", "gba", "Emerald", "2.65.3b", "Ongoing", ["Expansion", "Difficulty"], "Multi-gen", + "https://www.hackdex.app/hack/elite-redux", + "A theorycrafter's playground: every species gets multiple abilities, a vastly expanded movepool, and brutal fights. Deep team-building over story."), + ("Pokémon Emerald Azure", "gba", "Emerald", "0.5.3", "Beta", ["New Experience", "Expansion"], "Multi-gen", + "https://www.hackdex.app/hack/pokemon-emerald-azure", + "An in-development new-region Emerald-expansion hack (early/beta)."), + ("Pokémon Emerald Extended Cut", "gba", "Emerald", "Classic+ 1.3", "Complete", ["Vanilla+", "QoL"], "Gen 3", + "", + "Emerald with restored/expanded content and QoL while staying close to the original Hoenn experience."), + ("Pokémon Emerald Imperium", "gba", "Emerald", "1.3.1", "Complete", ["Expansion", "Difficulty"], "Multi-gen", + "https://www.hackdex.app/hack/emerald-imperium", + "A content- and postgame-heavy Emerald-expansion hack with challenging fights and lots of endgame."), + ("Pokémon Emerald Kaizo", "gba", "Emerald", "—", "Complete", ["Difficulty"], "Gen 3", + "", + "The classic Emerald kaizo — every gym/E4 team is maxed-out and merciless."), + ("Pokémon Emerald Rogue", "gba", "Emerald", "2.1.2 EX", "Ongoing", ["Roguelite", "Expansion"], "Multi-gen", + "https://github.com/Pokabbie/pokeemerald-rogue", + "A roguelite take on Emerald: run-based, procedurally routed, escalating difficulty toward the Champion. EX edition uses the modern expansion."), + ("Pokémon Emerald Seaglass", "gba", "Emerald", "3.0", "Complete", ["Vanilla+", "QoL", "Expansion"], "Multi-gen", + "https://www.hackdex.app/hack/pokemon-emerald-seaglass", + "Emerald modernized via the expansion — physical/special split, new species/forms, and heavy QoL while keeping Hoenn's story."), + ("Pokémon Emerald Squared", "gba", "Emerald", "2.6.2", "Complete", ["Difficulty", "Vanilla+"], "Gen 3", + "", + "An enhanced, harder Emerald — rebalanced trainers and availability for a tougher Hoenn run."), + ("Pokémon Fire of Sky", "gba", "—", "1.0.3", "Complete", ["New Experience"], "Multi-gen", + "", + "A story-focused new-adventure hack."), + ("Pokémon FireRed Deluxe", "gba", "FireRed", "20.5", "Ongoing", ["Vanilla+", "Expansion", "QoL"], "Multi-gen", + "", + "FireRed loaded with all obtainable species, modern mechanics, and QoL — a 'complete dex' enhanced Kanto."), + ("Pokémon Fire Red Extended", "gba", "FireRed", "3.5.6", "Ongoing", ["Vanilla+", "Expansion"], "Multi-gen", + "", + "FireRed extended with later-gen species and mechanics while preserving the Kanto journey."), + ("Pokémon FireRed & LeafGreen+ (FRLG+)", "gba", "FireRed", "1.5.1", "Ongoing", ["Vanilla+", "QoL"], "Gen 1–3", + "", + "A faithful 'plus' enhancement of FR/LG — availability fixes, split, and QoL with minimal change to the feel."), + ("Pokémon FireRed Reignited", "gba", "FireRed", "1.55", "Ongoing", ["Vanilla+", "QoL"], "Gen 1+", + "", + "A modern QoL remaster of FireRed."), + ("Pokémon Flora Sky", "gba", "Emerald", "Complete", "Complete", ["New Experience"], "Gen 3–4 mons", + "https://www.pokecommunity.com/threads/pokemon-flora-sky.179365/", + "A classic complete Emerald hack with a new region, Gen 4 additions, and a sky/Distortion-World-flavored plot."), + ("Pokémon Gaia", "gba", "FireRed", "3.2", "Complete", ["New Experience"], "Gen 1–6 mons", + "https://www.pokecommunity.com/threads/pokemon-gaia.336982/", + "Widely considered one of the best hacks ever: the Orbtus region, Gen 6 mechanics/Fairy type, an archaeology mystery, and Nintendo-grade polish."), + ("Pokémon Glazed", "gba", "Emerald", "9.2.0", "Complete", ["New Experience"], "Gen 1–6 mons", + "https://www.pokecommunity.com/threads/pokemon-glazed.291376/", + "A long-beloved new region (Tunod) crossing into Johto, with multiple starters incl. later gens. This is the polished modern build."), + ("Pokémon GS Chronicles", "gba", "FireRed", "2.7.6", "Complete", ["New Experience", "Demake"], "Gen 1–7 mons", + "https://www.pokecommunity.com/threads/pokemon-gs-chronicles.346730/", + "A HeartGold/SoulSilver-style Johto remake on GBA with modern mechanics and a rich postgame."), + ("Pokémon Heart and Soul", "gba", "FireRed", "1.2.1", "Ongoing", ["New Experience", "Demake"], "Johto", + "", + "A Johto-focused adventure inspired by the Gen 2/HGSS games."), + ("Pokémon Hearth", "gba", "Emerald", "0.1.27", "Beta", ["New Experience", "Expansion"], "Multi-gen", + "", + "An early-beta new-region expansion hack."), + ("Pokémon Hoenn's Last Wish", "gba", "Emerald", "0.4.7", "Beta", ["New Experience", "Expansion"], "Multi-gen", + "", + "An in-development Hoenn-set adventure on the Emerald expansion (early/beta)."), + ("Pokémon Inclement Emerald", "gba", "Emerald", "—", "Complete", ["Difficulty", "Expansion"], "Multi-gen", + "https://www.hackdex.app/hack/inclement-emerald", + "Emerald-expansion difficulty hack with all 8 gens obtainable, configurable hardcore modes, and smart AI. A modern favorite."), + ("Pokémon Inkwell", "gba", "Emerald", "1.04", "Ongoing", ["New Experience", "Expansion"], "Multi-gen", + "", + "A new-adventure hack built on the Emerald expansion."), + ("Pokémon Lazarus", "gba", "Emerald (TrashMan)", "v2", "Ongoing", ["New Experience", "Expansion"], "Multi-gen", + "https://ko-fi.com/nemo622", + "The Ilios region — a story-rich expansion hack by Nemo622 with new mechanics and detailed documentation."), + ("Pokémon Light Platinum", "gba", "Ruby", "1.1", "Complete", ["New Experience"], "Gen 1–4 mons", + "https://www.pokecommunity.com/threads/pokemon-light-platinum.171377/", + "A classic: the Zhery region with two leagues, Gen 4 mons, and a globe-trotting plot. Hugely popular older hack."), + ("Pokémon Liquid Crystal", "gba", "FireRed", "3.3", "Complete", ["New Experience", "Demake"], "Gen 1–4 mons", + "https://www.pokecommunity.com/threads/pokemon-liquid-crystal.158473/", + "A Johto (Crystal) remake on GBA with the Orange Islands postgame and modern conveniences."), + ("Pokémon Mega Power", "gba", "Ruby", "5.62", "Complete", ["New Experience"], "Gen 1–6 mons", + "https://www.pokecommunity.com/threads/pokemon-mega-power.330510/", + "By the Light Platinum-adjacent team — a new region with Mega Evolution, custom villains, and a 'build the strongest Pokémon' plot."), + ("Pokémon Modern Emerald", "gba", "Emerald", "3.3.1", "Complete", ["Vanilla+", "QoL", "Expansion"], "Multi-gen", + "https://www.hackdex.app/hack/modern-emerald", + "Emerald modernized end-to-end — all gens, modern mechanics, and a deep QoL/settings menu, while keeping Hoenn's story."), + ("Pokémon Moemon Mega FireRed", "gba", "FireRed", "1.4c", "Complete", ["Cosmetic"], "Gen 1", + "", + "A Moemon hack — Pokémon replaced with anthropomorphic 'moe' character sprites — over an enhanced FireRed."), + ("Pokémon Moemon Star Emerald", "gba", "Emerald", "1.1c", "Complete", ["Cosmetic"], "Gen 3", + "", + "A Moemon reskin of an enhanced Emerald (Star Emerald), with moe sprites throughout."), + ("Pokémon Odyssey", "gba", "FireRed", "4.1.1", "Complete", ["New Experience"], "Multi-gen", + "https://www.hackdex.app/hack/pokemon-odyssey", + "A highly-praised, atmospheric original adventure with a custom region, strong writing, and bespoke pixel art."), + ("Pokémon Omega Ruby Origins", "gba", "Emerald", "1.4.8.7", "Ongoing", ["Demake", "New Experience"], "Gen 6 on GBA", + "", + "An ORAS-style demake bringing the 3DS Hoenn remakes' features back to the GBA."), + ("Pokémon Phoenix Red", "gba", "FireRed", "1.2", "Complete", ["Difficulty", "Expansion"], "Multi-gen", + "https://www.hackdex.app/hack/pokemon-phoenix-red", + "An enhanced, harder FireRed with all 8 gens obtainable, Megas, and tough fights."), + ("Pokémon Pisces", "gba", "—", "1.5.4", "Complete", ["New Experience"], "Multi-gen", + "", + "An original-region adventure hack."), + ("Pokémon Project Nova", "gba", "Emerald", "2.7.0", "Ongoing", ["New Experience", "Expansion"], "Multi-gen", + "", + "A new-experience hack on the Emerald expansion."), + ("Pokémon Radical Red", "gba", "FireRed", "4.10", "Ongoing", ["Difficulty", "Expansion"], "Multi-gen", + "https://www.hackdex.app/hack/radical-red", + "The flagship modern difficulty hack: complete National Dex, Gen-9 mechanics, smart held-item/switching AI, and toggle modes from casual to brutal."), + ("Pokémon Recordkeepers", "gba", "Emerald", "1.2.1", "Ongoing", ["New Experience", "Expansion"], "Multi-gen", + "https://www.hackdex.app/hack/recordkeepers", + "A narrative-driven Emerald-expansion hack."), + ("Pokémon Resolute", "gba", "Ruby", "2.97", "Complete", ["New Experience"], "Gen 1–6 mons", + "https://www.pokecommunity.com/threads/pokemon-resolute.330577/", + "A story-heavy new region (Sun-Moon-era mons added) with a difficulty mode; from the Mega Power/Light Platinum lineage."), + ("Pokémon R.O.W.E.", "gba", "Emerald", "2.1.1", "Ongoing", ["New Experience", "QoL", "Expansion"], "Multi-gen", + "https://www.hackdex.app/hack/pokemon-rowe", + "Open-world Emerald — level scaling, ride-anywhere, nuzlocke-friendly settings, and all gens. The 'Mega Update' build."), + ("Pokémon Saiph", "gba", "FireRed", "2020", "Complete", ["New Experience"], "Multi-gen", + "https://www.pokecommunity.com/threads/pokemon-saiph.412313/", + "A complete original-region story hack with a darker tone."), + ("Pokémon Saiph 2", "gba", "FireRed", "1.4.0", "Complete", ["New Experience"], "Multi-gen", + "https://www.pokecommunity.com/threads/pokemon-saiph-2.456789/", + "Sequel to Saiph — a larger, polished original adventure (full release v1.4.0)."), + ("Pokémon Snakewood", "gba", "Ruby", "—", "Complete", ["New Experience"], "Gen 3 + fakemon", + "https://www.pokecommunity.com/threads/pokemon-snakewood.146749/", + "A cult-classic zombie-apocalypse reimagining of Hoenn — surreal, dark-comedic, and famously weird. Largely complete."), + ("Pokémon Sors", "gba", "FireRed", "1.3", "Complete", ["New Experience"], "Multi-gen", + "https://www.pokecommunity.com/threads/pokemon-sors.420576/", + "A complete story-driven hack with a full new region and extensive item/guide documentation."), + ("Pokémon Sovereign of the Skies", "gba", "FireRed", "2.1.2", "Complete", ["New Experience"], "Multi-gen", + "https://www.pokecommunity.com/threads/pokemon-sovereign-of-the-skies.349500/", + "A complete new region with custom dex and a sky-themed plot."), + ("Pokémon Super Mariomon", "gba", "Emerald", "1.5.2", "Complete", ["New Experience", "Cosmetic"], "Crossover", + "", + "A Mario × Pokémon crossover: catch and battle Mario-universe characters as 'Mariomon'. A complete novelty hack."), + ("Pokémon Sword and Shield Ultimate Plus", "gba", "FireRed", "1.2.1.2", "Ongoing", ["Demake", "New Experience"], "Gen 8 on GBA", + "", + "A Galar (Sword/Shield) demake bringing Gen 8's region, Pokémon, and Dynamax-era content to the GBA."), + ("Pokémon The Pit", "gba", "Emerald", "2.5.1", "Ongoing", ["Roguelite", "Difficulty", "Expansion"], "Multi-gen", + "https://www.hackdex.app/hack/the-pit", + "A roguelite/battle-focused descent: climb floors, draft a team, and fight escalating encounters. Built on the Emerald expansion."), + ("Pokémon Theta Emerald EX", "gba", "Emerald", "EX", "Complete", ["Expansion", "Vanilla+"], "Gen 1–6 mons", + "https://www.pokecommunity.com/threads/pokemon-theta-emerald-ex.366617/", + "Classic 'all 800+ mons in Emerald' hack — Megas, Fairy type, and the full dex obtainable within Hoenn's story."), + ("Pokémon Tourmaline", "gba", "Emerald", "1.1.1", "Ongoing", ["New Experience", "Expansion"], "Multi-gen", + "", + "A new-region adventure on the Emerald expansion."), + ("Pokémon Valiant", "gba", "Emerald", "4.2.3", "Ongoing", ["New Experience", "Expansion"], "Multi-gen", + "https://www.hackdex.app/hack/pokemon-valiant", + "An original-region story hack on the Emerald expansion with custom characters and content."), + ("Pokémon WaveBlue", "gba", "FireRed", "1.7.5", "Ongoing", ["New Experience"], "Multi-gen", + "", + "A new-region adventure built on FireRed."), + # ---------------- NDS ---------------- + ("Pokémon Blaze Black", "nds", "Black", "—", "Complete", ["Vanilla+", "Difficulty"], "Gen 1–5 mons", + "https://www.pokecommunity.com/threads/pokemon-blaze-black-volt-white.252355/", + "Drayano's Black overhaul — every species catchable in-game, boosted gym/E4 teams, and QoL. Pairs with Volt White."), + ("Pokémon Blaze Black 2 Redux", "nds", "Black 2", "1.3.0", "Complete", ["Vanilla+", "Difficulty", "Expansion"], "Gen 1–5 mons", + "https://www.pokecommunity.com/", + "A community 'Redux' fork of Drayano's Blaze Black 2 — expanded availability, rebalanced difficulty, and extra content."), + ("Pokémon Following Renegade Platinum", "nds", "Platinum", "2.0", "Complete", ["Difficulty", "Vanilla+", "QoL"], "Gen 1–4 mons", + "https://www.reddit.com/r/PokemonROMhacks/comments/s4fbhi/", + "Renegade Platinum with following Pokémon added — the acclaimed enhanced Sinnoh plus an HGSS-style walking partner."), + ("Pokémon Renegade Platinum", "nds", "Platinum", "1.3.0", "Complete", ["Difficulty", "Vanilla+"], "Gen 1–4 mons", + "https://www.pokecommunity.com/threads/pokemon-renegade-platinum.347531/", + "Drayano's definitive enhanced Platinum — full availability, much harder fights, and QoL. A community favorite Sinnoh run."), + ("Pokémon Sacred Gold", "nds", "HeartGold", "1.05", "Complete", ["Vanilla+", "Difficulty"], "Gen 1–4 mons", + "https://www.pokecommunity.com/threads/pokemon-sacred-gold-storm-silver.165088/", + "Drayano's enhanced HeartGold — all species obtainable, boosted teams, fixed movesets. Pairs with Storm Silver."), + ("Pokémon Storm Silver", "nds", "SoulSilver", "1.05", "Complete", ["Vanilla+", "Difficulty"], "Gen 1–4 mons", + "https://www.pokecommunity.com/threads/pokemon-sacred-gold-storm-silver.165088/", + "Drayano's enhanced SoulSilver — the SoulSilver counterpart to Sacred Gold."), + ("Pokémon Volt White", "nds", "White", "—", "Complete", ["Vanilla+", "Difficulty"], "Gen 1–5 mons", + "https://www.pokecommunity.com/threads/pokemon-blaze-black-volt-white.252355/", + "Drayano's White overhaul — full availability and boosted difficulty. The White counterpart to Blaze Black."), + ("Pokémon Volt White 2 Redux", "nds", "White 2", "1.4.1", "Complete", ["Vanilla+", "Difficulty", "Expansion"], "Gen 1–5 mons", + "https://www.pokecommunity.com/", + "A community 'Redux' fork of Drayano's Volt White 2 — expanded availability and rebalanced difficulty."), +] + +PLAT_NAME = {"gb": "Game Boy", "gbc": "Game Boy Color", "gba": "Game Boy Advance", "nds": "Nintendo DS"} + + +def slugify_filename(title): + # note filename: drop the "Pokémon " prefix for tidiness, keep the rest + name = re.sub(r"^Pok[ée]mon\s+", "", title) + return name.replace("/", "-") + + +def yaml_list(items): + return "[" + ", ".join(f'"{i}"' for i in items) + "]" + + +def lookup_url(title): + q = urllib.parse.quote(f"{title} rom hack") + return f"https://duckduckgo.com/?q={q}" + + +def write(path, content): + os.makedirs(os.path.dirname(path), exist_ok=True) + with open(path, "w", encoding="utf-8") as f: + f.write(content) + + +def gen_hack_note(h): + title, plat, base, ver, status, types, gen, url, summary = h + fname = slugify_filename(title) + libname = "Pokemon - " + re.sub(r"^Pok[ée]mon\s+", "", title).replace("é", "e").replace("É", "E") + f" (Hack).{plat}" + tags = [f"hack", f"platform/{plat}", f"base/{base_tag(base)}", + f"status/{re.sub(r'[^a-z0-9]+','',status.lower())}"] + tags += [f"type/{re.sub(r'[^a-z0-9+]+','',t.lower())}" for t in types] + fm = [ + "---", + f'title: "{title}"', + f"platform: {plat.upper()}", + f'base: "{base}"', + f'version: "{ver}"', + f'status: "{status}"', + f"type: {yaml_list(types)}", + f'generation: "{gen}"', + f'library_path: "roms/{plat}/Hacks/{libname}"', + f'source: "{url or lookup_url(title)}"', + f"added: {ADDED}", + f"tags: {yaml_list(tags)}", + "---", + "", + ] + body = [ + f"# {title}", + "", + f"> [!info] {' · '.join(types)} — **{status}**", + f"> {PLAT_NAME[plat]} · base **{base}** · version **{ver}** · {gen}", + "", + "## Summary", + summary, + "", + "## Type", + " ".join(f"[[Types#{t}|{t}]]" for t in types), + "", + "## Links", + f"- Source / info: {url}" if url else "- Source: _(not catalogued — see lookup)_", + f"- Lookup: {lookup_url(title)}", + "", + "## In the library", + f"- `roms/{plat}/Hacks/{libname}` on valhalla", + f"- Patch/source artifact archived under `/storage1/igir/romhacks/patches/`", + "", + "[[Index|← back to directory]]", + "", + ] + return "\n".join(fm) + "\n".join(body) + + +def slug_libpath(title): + name = re.sub(r"^Pok[ée]mon\s+", "", title) + name = name.replace("é", "e").replace("É", "E") + # match the on-disk naming: "Pokemon - (Hack)." + ext = {"gb": "gb", "gbc": "gbc", "gba": "gba", "nds": "nds"} + return f"Pokemon - {name} (Hack)" # ext appended by reader; on disk has platform ext + + +def gen_index(): + rows = [] + for h in sorted(HACKS, key=lambda x: (x[1], x[0])): + title, plat, base, ver, status, types, gen, url, summary = h + link = f"[[{slugify_filename(title)}]]" + rows.append(f"| {link} | {plat.upper()} | {base} | {ver} | {status} | {', '.join(types)} |") + static = "\n".join(rows) + dv = ( + "```dataview\n" + "TABLE platform AS Platform, base AS Base, version AS Version, status AS Status, type AS Type\n" + 'FROM "Hacks"\n' + "SORT platform ASC, file.name ASC\n" + "```\n" + ) + counts = {} + for h in HACKS: + counts[h[1]] = counts.get(h[1], 0) + 1 + countline = " · ".join(f"**{PLAT_NAME[p]}**: {counts.get(p,0)}" for p in ["gb","gbc","gba","nds"]) + return f"""# Pokémon ROM-Hack Library — Index + +A knowledge base for the **{len(HACKS)}** Pokémon ROM-hacks installed in the valhalla +library (`roms//Hacks/`). One note per hack — see [[Types]] for the tag +taxonomy and the [[#Platforms]] section for per-system views. + +{countline} + +## Directory (Dataview) + +> Requires the Dataview plugin. If you don't use it, the static table below mirrors it. + +{dv} + +## Directory (static) + +| Hack | Platform | Base | Version | Status | Type | +|---|---|---|---|---|---| +{static} + +## Platforms + +- [[GBA]] · [[GBC]] · [[GB]] · [[NDS]] + +## By type + +{chr(10).join(f"- [[Types#{t}|{t}]] — {d}" for t, d in TYPES.items())} + +--- +*Generated by `scripts/build-romhack-vault.py` — edit the dataset there and re-run to update.* +""" + + +def gen_types(): + body = ["# Type Taxonomy", "", + "Each hack is tagged with one or more of these. Tags are also queryable as `#type/...`.", ""] + for t, d in TYPES.items(): + members = [slugify_filename(h[0]) for h in sorted(HACKS) if t in h[5]] + body.append(f"## {t}") + body.append(d) + body.append("") + body.append(f"`#type/{re.sub(r'[^a-z0-9+]+','',t.lower())}` — {len(members)} hacks") + body.append("") + body += [f"- [[{m}]]" for m in members] + body.append("") + body.append("[[Index|← back to directory]]") + return "\n".join(body) + + +def gen_platform(plat): + members = [h for h in sorted(HACKS) if h[1] == plat] + rows = [f"| [[{slugify_filename(h[0])}]] | {h[2]} | {h[3]} | {h[4]} | {', '.join(h[5])} |" for h in members] + dv = ("```dataview\nTABLE base, version, status, type\n" + f'FROM "Hacks"\nWHERE platform = "{plat.upper()}"\nSORT file.name ASC\n```\n') + return (f"# {PLAT_NAME[plat]} ({plat.upper()}) — {len(members)} hacks\n\n{dv}\n" + "## Static\n\n| Hack | Base | Version | Status | Type |\n|---|---|---|---|---|\n" + + "\n".join(rows) + "\n\n[[Index|← back to directory]]\n") + + +def gen_readme(): + return f"""# Pokémon ROM-Hack Vault + +An [Obsidian](https://obsidian.md) vault documenting the **{len(HACKS)}** Pokémon ROM-hacks +in the valhalla library. Open *this folder* as a vault (or copy it into an existing one). + +## Layout +- **[[Index]]** — the master directory (Dataview + static table). +- **[[Types]]** — the type taxonomy (QoL, Vanilla+, Difficulty, Expansion, New Experience, Demake, Roguelite, Cosmetic). +- **Hacks/** — one note per hack with frontmatter properties + tags. +- **Platforms/** — per-system maps of content (GBA / GBC / GB / NDS). + +## Conventions +- Frontmatter uses Obsidian **properties** (`platform`, `base`, `version`, `status`, `type`, `generation`, `source`) so the **Dataview** and **Bases** plugins work. +- Every note also carries **tags** (`#platform/gba`, `#type/difficulty`, `#status/complete`, `#base/firered`) so search/graph work with **zero plugins**. +- `library_path` points at the file under `roms//Hacks/` on valhalla. + +## Recommended plugins +- **Dataview** (the Index/Platform tables) and optionally **Bases** (Obsidian's native DB view). + +## Caveats +- `base`, `version`, and `type` are best-effort from the import metadata + general knowledge; a few obscure hacks show `base: —` where the source wasn't certain. Correct any in `scripts/build-romhack-vault.py` and re-run. + +*Generated by `scripts/build-romhack-vault.py`.* +""" + + +def main(): + # clean Hacks dir to avoid stale notes, then regenerate + for h in HACKS: + write(os.path.join(VAULT, "Hacks", slugify_filename(h[0]) + ".md"), gen_hack_note(h)) + write(os.path.join(VAULT, "Index.md"), gen_index()) + write(os.path.join(VAULT, "Types.md"), gen_types()) + write(os.path.join(VAULT, "README.md"), gen_readme()) + for p in ["gb", "gbc", "gba", "nds"]: + write(os.path.join(VAULT, "Platforms", PLAT_NAME[p].split()[0] if False else p.upper() + ".md"), + gen_platform(p)) + print(f"vault written to {os.path.normpath(VAULT)} — {len(HACKS)} hack notes + Index/Types/README + 4 platform MOCs") + + +if __name__ == "__main__": + main() diff --git a/scripts/romhack-apply.py b/scripts/romhack-apply.py new file mode 100644 index 0000000..1c078a6 --- /dev/null +++ b/scripts/romhack-apply.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python3 +"""Apply a Pokémon ROM-hack patch to a base ROM (IPS / BPS / UPS). + +Format is auto-detected by magic bytes. BPS embeds source+target CRC32, so a +wrong base ROM (or a buggy apply) fails loudly here rather than producing a +silently-corrupt ROM — that is the correctness guarantee for the whole pipeline. + +Usage: romhack-apply.py +Exit: 0 ok; 2 bad/mismatched input; 3 unsupported format. +xdelta patches are handled by the caller via the `xdelta3` binary, not here. +""" +import sys, zlib, struct + +def die(code, msg): + sys.stderr.write(msg + "\n"); sys.exit(code) + +def read(p): + with open(p, "rb") as f: return f.read() + +# ---------- IPS ---------- +def apply_ips(patch, base): + if patch[:5] != b"PATCH": die(2, "IPS: bad header") + out = bytearray(base) + i = 5 + while True: + rec = patch[i:i+3] + if rec == b"EOF": break + if len(rec) < 3: die(2, "IPS: truncated") + off = (rec[0] << 16) | (rec[1] << 8) | rec[2]; i += 3 + size = (patch[i] << 8) | patch[i+1]; i += 2 + if size == 0: # RLE run + rle = (patch[i] << 8) | patch[i+1]; i += 2 + val = patch[i:i+1]; i += 1 + chunk = val * rle + off2 = off + rle + else: + chunk = patch[i:i+size]; i += size + off2 = off + size + if off2 > len(out): out.extend(b"\x00" * (off2 - len(out))) + out[off:off2] = chunk + # optional truncate extension (3-byte length after EOF) + tail = patch[i+3:i+6] if patch[i:i+3] == b"EOF" else b"" + if len(tail) == 3: + newlen = (tail[0] << 16) | (tail[1] << 8) | tail[2] + out = out[:newlen] + return bytes(out) + +# ---------- UPS ---------- +def _ups_num(buf, i): + val = 0; shift = 1 + while True: + x = buf[i]; i += 1 + val += (x & 0x7f) * shift + if x & 0x80: break + shift <<= 7; val += shift + return val, i + +def apply_ups(patch, base): + if patch[:4] != b"UPS1": die(2, "UPS: bad header") + i = 4 + src_size, i = _ups_num(patch, i) + dst_size, i = _ups_num(patch, i) + if len(base) != src_size: + sys.stderr.write(f"UPS: base size {len(base)} != expected {src_size} (continuing)\n") + out = bytearray(base) + b"\x00" * max(0, dst_size - len(base)) + out = out[:dst_size] if dst_size < len(out) else out + pos = 0 + body_end = len(patch) - 12 # trailing 3 CRC32s (src,dst,patch) + while i < body_end: + rel, i = _ups_num(patch, i) + pos += rel + while True: + b = patch[i]; i += 1 + if pos < len(out): out[pos] ^= b + pos += 1 + if b == 0: break + src_crc, dst_crc, _ = struct.unpack("> 2) + 1 + if action == 0: # SourceRead + out[out_pos:out_pos+length] = base[out_pos:out_pos+length]; out_pos += length + elif action == 1: # TargetRead + out[out_pos:out_pos+length] = patch[i:i+length]; i += length; out_pos += length + elif action == 2: # SourceCopy + off, i = _ups_num(patch, i) + src_rel += (-(off >> 1) if (off & 1) else (off >> 1)) + for _ in range(length): + out[out_pos] = base[src_rel]; out_pos += 1; src_rel += 1 + else: # TargetCopy + off, i = _ups_num(patch, i) + dst_rel += (-(off >> 1) if (off & 1) else (off >> 1)) + for _ in range(length): + out[out_pos] = out[dst_rel]; out_pos += 1; dst_rel += 1 + got = zlib.crc32(bytes(out)) & 0xffffffff + if got != dst_crc: + die(2, f"BPS: output CRC {got:08x} != expected {dst_crc:08x}") + return bytes(out) + +def main(): + if len(sys.argv) != 4: + die(2, "usage: romhack-apply.py ") + patch, base_path, out_path = sys.argv[1], sys.argv[2], sys.argv[3] + pb = read(patch); base = read(base_path) + magic = pb[:5] + if magic[:4] == b"BPS1": out = apply_bps(pb, base) + elif magic[:4] == b"UPS1": out = apply_ups(pb, base) + elif magic == b"PATCH": out = apply_ips(pb, base) + else: die(3, f"unsupported patch magic {magic!r}") + with open(out_path, "wb") as f: f.write(out) + print(f"OK {out_path} ({len(out)} bytes, crc32={zlib.crc32(out)&0xffffffff:08x})") + +if __name__ == "__main__": + main() diff --git a/scripts/romhack-fetch.py b/scripts/romhack-fetch.py new file mode 100644 index 0000000..edf8953 --- /dev/null +++ b/scripts/romhack-fetch.py @@ -0,0 +1,260 @@ +#!/usr/bin/env python3 +"""Acquire, patch, validate, and place worthwhile Pokémon ROM-hacks into the +EmuDeck library at /storage1/Emulation/roms//Hacks/ on valhalla. + +Each hack is one MANIFEST entry naming its source. Two source kinds: + - "rom": a pre-patched full ROM is downloaded and placed as-is (validated). + - "patch": a patch (BPS/UPS/IPS) is downloaded and applied to a base ROM the + user already owns; BPS/UPS self-verify via embedded CRC32. + +Sources are direct, no-anti-bot URLs only (GitHub release assets, archive.org). +hackdex/Discord/Drive-gated hacks are intentionally NOT here — they are reported +as identify-only because their hosts gate or token-protect downloads. + +Output names follow the chosen scheme: "Pokemon - (Hack)." +(parallels igir's `Title (Region)` No-Intro style, with a (Hack) tag). + +Run on valhalla: python3 romhack-fetch.py [--place] [--only ] +Without --place it downloads + validates but does not touch the library. +""" +import sys, os, json, zlib, shutil, subprocess, zipfile, re, urllib.request, urllib.parse + +ROMS = "/storage1/Emulation/roms" +WORK = "/storage1/igir/romhacks/work" +PATCHES = "/storage1/igir/romhacks/patches" +APPLY = "/storage1/igir/romhacks/tools/apply.py" +UA = "Mozilla/5.0 (homelab personal archival)" + +BASES = { + "crystal_rev1": f"{ROMS}/gbc/Pokemon - Crystal Version (USA, Europe) (Rev 1).gbc", + "gold": f"{ROMS}/gbc/Pokemon - Gold Version (USA, Europe) (SGB Enhanced) (GB Compatible).gbc", + "silver": f"{ROMS}/gbc/Pokemon - Silver Version (USA, Europe) (SGB Enhanced) (GB Compatible).gbc", + "ruby": f"{ROMS}/gba/Pokemon - Ruby Version (USA, Europe).gba", + "sapphire": f"{ROMS}/gba/Pokemon - Sapphire Version (USA, Europe).gba", + "emerald": f"{ROMS}/gba/Pokemon - Emerald Version (USA, Europe).gba", + "firered": f"{ROMS}/gba/Pokemon - FireRed Version (USA, Europe).gba", + "leafgreen": f"{ROMS}/gba/Pokemon - LeafGreen Version (USA, Europe).gba", + "red": f"{ROMS}/gb/Pokemon - Red Version (USA, Europe) (SGB Enhanced).gb", + "heartgold": f"{ROMS}/nds/Pokemon HeartGold Version.nds", + "soulsilver": f"{ROMS}/nds/Pokemon SoulSilver Version.nds", +} + +def arc(idn, fn): + return f"https://archive.org/download/{idn}/{urllib.parse.quote(fn)}" + +# --- the curated, source-resolved batch (directly downloadable only) ---------- +MANIFEST = [ + # GBC + {"hack": "Polished Crystal", "platform": "gbc", "ext": "gbc", "vfmt": "gbc", + "kind": "rom", "url": "https://github.com/Rangi42/polishedcrystal/releases/download/v3.2.3/polishedcrystal-3.2.3.gbc", + "note": "v3.2.3, official GitHub release ROM (author distributes full .gbc)"}, + {"hack": "Crystal Clear", "platform": "gbc", "ext": "gbc", "vfmt": "gbc", + "kind": "patch", "base": "crystal_rev1", + "url": arc("pokemon_crystal_clear_v2.5.7", "2_5_7_Standard_1_1.bps"), + "note": "v2.5.7 Standard, BPS vs Crystal v1.1 (self-verifying)"}, + # GBA + {"hack": "Light Platinum", "platform": "gba", "ext": "gba", "vfmt": "gba", + "kind": "patch", "base": "ruby", + "url": arc("pokemon-light-platinum-u-1.1", "Pokémon_Light_Platinum (U) 1.1.ips"), + "note": "v1.1 IPS vs Ruby (USA) — IPS has no checksum, header-validated after"}, + {"hack": "Gaia", "platform": "gba", "ext": "gba", "vfmt": "gba", + "kind": "rom", "url": arc("pokemon-gaia", "GaiaB3.2.gba"), + "note": "v3.2 (final), pre-patched ROM"}, + {"hack": "Radical Red", "platform": "gba", "ext": "gba", "vfmt": "gba", + "kind": "rom", "url": arc("pokemon-radical-red-v-4.1", "Pokemon Radical Red v4.1.gba"), + "note": "v4.1, pre-patched ROM"}, + {"hack": "Inclement Emerald", "platform": "gba", "ext": "gba", "vfmt": "gba", + "kind": "rom", "url": arc("inclement-emerald_202310", "Inclement Emerald.gba"), + "note": "Oct-2023 build, pre-patched ROM"}, + {"hack": "Glazed", "platform": "gba", "ext": "gba", "vfmt": "gba", + "kind": "rom", "url": arc("pokemon-glazed", "pokemon glazed.gba"), + "note": "pre-patched ROM; version unverified (Glazed has buggy early builds)"}, + # NDS + {"hack": "Volt White", "platform": "nds", "ext": "nds", "vfmt": "nds", + "kind": "rom", "url": arc("pokemon-volt-white-v-3.1-complete", "Pokemon Volt White v3.1 - Complete.nds"), + "note": "v3.1 Complete (Drayano, base Black/White), pre-patched ROM"}, + {"hack": "Renegade Platinum", "platform": "nds", "ext": "nds", "vfmt": "nds", + "kind": "rom", "url": arc("pokemon-renegade-platinum-v-1.3.0-complete-normal-shiny", + "Pokemon Renegade Platinum v1.3.0 Complete Normal Shiny.nds"), + "note": "v1.3.0 Complete (Drayano, base Platinum), pre-patched ROM"}, +] + +# --- batch 2: more direct-downloadable hacks (some zip-wrapped) --------------- +MANIFEST2 = [ + {"hack": "Prism", "platform": "gbc", "ext": "gbc", "vfmt": "gbc", + "kind": "rom", "url": arc("pokeprism_202301", "pokeprism.gbc"), + "note": "Pokémon Prism (complete, Crystal-based), pre-patched ROM"}, + {"hack": "Liquid Crystal", "platform": "gba", "ext": "gba", "vfmt": "gba", + "kind": "rom", "url": arc("pokemon-liquid-crystal-v-3.3.00512", "Pokemon - Liquid Crystal (v3.3.00512).gba"), + "note": "v3.3.00512 (final), Johto remake, pre-patched ROM"}, + {"hack": "Theta Emerald EX", "platform": "gba", "ext": "gba", "vfmt": "gba", + "kind": "rom", "url": arc("pokemon-theta-emerald-ex_202407", "theta-emerald-ex-02-27-17.gba"), + "note": "EX build (all 800+ mons), pre-patched ROM"}, + {"hack": "Snakewood", "platform": "gba", "ext": "gba", "vfmt": "gba", + "kind": "rom", "url": arc("pokemon-snakewood", "Snakewood.gba"), + "note": "zombie/horror hack (base Ruby), pre-patched ROM"}, + {"hack": "Brown", "platform": "gb", "ext": "gb", "vfmt": "gbc", + "kind": "patch", "base": "red", "zip_member": r"\.(ips|bps|ups)$", + "url": arc("brown_20250526", "brown.zip"), + "note": "v1.1 (Koolboyman, base Red) — patch inside zip"}, + {"hack": "Blaze Black 2 Redux", "platform": "nds", "ext": "nds", "vfmt": "nds", + "kind": "rom", "zip_member": r"\.nds$", + "url": arc("pokemon-blaze-black-2-redux-complete-v-1.3.0", "Pokemon Blaze Black 2 Redux (Complete v1.3.0).zip"), + "note": "Redux fork v1.3.0 Complete (base Black 2), ROM inside zip"}, + {"hack": "Volt White 2 Redux", "platform": "nds", "ext": "nds", "vfmt": "nds", + "kind": "rom", "zip_member": r"\.nds$", + "url": arc("pokemon-volt-white-2-redux-complete-v-1.4.1", "Pokemon Volt White 2 Redux Complete (v1.4.1).zip"), + "note": "Redux fork v1.4.1 Complete (base White 2), ROM inside zip"}, +] + +# --- batch 3: additional well-regarded complete hacks (direct ROMs) ---------- +MANIFEST3 = [ + {"hack": "Blaze Black", "platform": "nds", "ext": "nds", "vfmt": "nds", + "kind": "rom", "url": arc("pokemon-blaze-black", "Blaze Black.nds"), + "note": "Drayano (base Black), pairs with Volt White, pre-patched ROM"}, + {"hack": "Mega Power", "platform": "gba", "ext": "gba", "vfmt": "gba", + "kind": "rom", "url": arc("pokemon-mega-power-v-5.62", "Pokemon Mega Power (v5.62).gba"), + "note": "v5.62 (complete), pre-patched ROM"}, + {"hack": "Resolute", "platform": "gba", "ext": "gba", "vfmt": "gba", + "kind": "rom", "url": arc("pokemon-resolute", "Resolute.gba"), + "note": "complete story hack, pre-patched ROM"}, +] + +# Original multi-file archive packs handled by one-off steps (not single-artifact +# manifest entries). Listed here so --retain can store the true source archives. +SPECIAL_SOURCES = [ + ("gba", arc("pokemon-emerald-kaizo", "Pokemon Emerald Kaizo.rar"), + "Emerald Kaizo source (rar -> IPS inside)"), + ("gba", arc("pokemon-dark-rising-complete-pack", "Pokemon Dark Rising Complete Pack.zip"), + "Dark Rising 1/2/Order Destroyed/Kaizo (nested zips inside)"), + ("nds", arc("pokemon-sacred-gold-and-storm-silver-1.5-fairy", "Pokemon Sacred Gold and Storm Silver 1.5.zip"), + "Sacred Gold + Storm Silver V1.05 xdelta patch pack"), +] + + +def basename_from_url(url): + return os.path.basename(urllib.parse.unquote(urllib.parse.urlparse(url).path)) + + +def retain_all(): + """Re-download every source artifact and store it persistently under PATCHES//.""" + rows = [] + items = [(m["platform"], m["url"], m["hack"]) for m in (MANIFEST + MANIFEST2 + MANIFEST3)] + items += [(plat, url, note) for plat, url, note in SPECIAL_SOURCES] + for plat, url, label in items: + dst_dir = os.path.join(PATCHES, plat) + os.makedirs(dst_dir, exist_ok=True) + dst = os.path.join(dst_dir, basename_from_url(url)) + try: + sz = download(url, dst) + rows.append((label, plat, "OK", f"{sz:,}b", os.path.basename(dst))) + except Exception as e: + rows.append((label, plat, "FAIL", str(e)[:60], basename_from_url(url))) + print("\n=== RETAIN SOURCE ARTIFACTS ===") + for lbl, pl, st, dt, nm in rows: + print(f"[{st:4}] {pl:4} {dt:>16} {nm}") + ok = sum(1 for r in rows if r[2] == "OK") + print(f"\n{ok}/{len(rows)} stored under {PATCHES}//") + + +def extract_member(zip_path, pattern, dest): + with zipfile.ZipFile(zip_path) as z: + members = [n for n in z.namelist() if not n.endswith("/") and re.search(pattern, n, re.I)] + if not members: + raise RuntimeError(f"no zip member matches {pattern} (have: {z.namelist()[:5]})") + # pick the largest matching member (avoids readme/junk) + members.sort(key=lambda n: z.getinfo(n).file_size, reverse=True) + with z.open(members[0]) as src, open(dest, "wb") as out: + shutil.copyfileobj(src, out) + return members[0] + +def download(url, dest): + req = urllib.request.Request(url, headers={"User-Agent": UA}) + with urllib.request.urlopen(req, timeout=120) as r, open(dest, "wb") as f: + shutil.copyfileobj(r, f) + return os.path.getsize(dest) + +def validate(path, vfmt): + """Cheap structural sanity check so a mislabeled/corrupt file is caught.""" + with open(path, "rb") as f: + data = f.read() + n = len(data) + if vfmt == "gba": + if n % (1024 * 1024) != 0 or not (4*1024*1024 <= n <= 32*1024*1024): + return f"bad GBA size {n}" + if data[0xB2] != 0x96: + return "GBA fixed byte 0xB2!=0x96 (not a GBA ROM?)" + elif vfmt == "gbc": + logo = bytes.fromhex("ceed6666cc0d") + if data[0x104:0x10A] != logo: + return "GBC Nintendo logo missing at 0x104" + elif vfmt == "nds": + if not (8*1024*1024 <= n <= 512*1024*1024): + return f"bad NDS size {n}" + if data[0x15C:0x15E] != b"\x56\xCF": # standard logo CRC16 0xCF56 + return "NDS logo CRC16 != 0xCF56" + return None # ok + +def main(): + place = "--place" in sys.argv + only = None + if "--only" in sys.argv: + only = sys.argv[sys.argv.index("--only") + 1].lower() + if "--retain" in sys.argv: + retain_all() + return + batch = 1 + if "--batch" in sys.argv: + batch = int(sys.argv[sys.argv.index("--batch") + 1]) + manifest = {1: MANIFEST, 2: MANIFEST2, 3: MANIFEST3}[batch] + os.makedirs(WORK, exist_ok=True) + rows = [] + for m in manifest: + if only and only not in m["hack"].lower(): + continue + hack = m["hack"]; plat = m["platform"]; ext = m["ext"] + out_name = f"Pokemon - {hack} (Hack).{ext}" + tmp = os.path.join(WORK, f"dl_{hack.replace(' ', '_')}") + status = "OK"; detail = m.get("note", "") + try: + sz = download(m["url"], tmp) + if m.get("zip_member"): + inner = os.path.join(WORK, f"zx_{hack.replace(' ', '_')}") + picked = extract_member(tmp, m["zip_member"], inner) + detail += f" | zip:{os.path.basename(picked)}" + tmp = inner + if m["kind"] == "patch": + base = BASES[m["base"]] + if not os.path.exists(base): + raise RuntimeError(f"base missing: {base}") + final = os.path.join(WORK, f"out_{hack.replace(' ', '_')}.{ext}") + r = subprocess.run([sys.executable, APPLY, tmp, base, final], + capture_output=True, text=True) + if r.returncode != 0: + raise RuntimeError(f"apply failed: {r.stderr.strip()}") + detail = r.stdout.strip().split("crc32=")[-1].rstrip(")") + detail = f"applied, crc32={detail}" + src = final + else: + src = tmp + verr = validate(src, m["vfmt"]) + if verr: + raise RuntimeError(f"validation: {verr}") + crc = zlib.crc32(open(src, "rb").read()) & 0xffffffff + if place: + dst_dir = os.path.join(ROMS, plat, "Hacks") + os.makedirs(dst_dir, exist_ok=True) + shutil.copy2(src, os.path.join(dst_dir, out_name)) + detail += " | PLACED" + rows.append((hack, plat, "OK", f"{os.path.getsize(src):,}b crc={crc:08x}", out_name)) + except Exception as e: + rows.append((hack, plat, "FAIL", str(e)[:80], out_name)) + print("\n=== ROMHACK FETCH SUMMARY ===") + for hk, pl, st, dt, nm in rows: + print(f"[{st:4}] {pl:4} {hk:<20} {dt}") + if st == "OK": + print(f" -> {pl}/Hacks/{nm}") + print(f"\nplaced: {'YES (--place)' if place else 'NO (dry run; pass --place)'}") + +if __name__ == "__main__": + main() diff --git a/scripts/romhack-import.py b/scripts/romhack-import.py new file mode 100644 index 0000000..f2044ae --- /dev/null +++ b/scripts/romhack-import.py @@ -0,0 +1,280 @@ +#!/usr/bin/env python3 +"""Import a drop-folder of mixed Pokémon hack files into the valhalla library. + +Handles a folder containing any mix of: + - completed ROMs (.gba/.gbc/.gb/.nds) -> validated, clean-named, copied to roms//Hacks/ + - patches (.ips/.bps/.ups/.xdelta) -> applied to an owned base, placed in Hacks/, archived + - documentation (.pdf/.txt/.png/.md) -> archived under PATCHES/_docs/ + - archives (.zip/.rar/.7z) -> extracted and recursed (same rules), source kept + +Naming matches the rest of the library: "Pokemon - (Hack)." +(version/junk parentheticals are stripped from the source filename). + +Base ROM for a patch is auto-detected: BPS/UPS embed source CRC32 so the correct +base is the one that applies cleanly. IPS has no checksum, so IPS patches must be +named in IPS_BASE_MAP or they are reported unresolved (never blindly applied). + +Run on valhalla: python3 romhack-import.py [--place] +""" +import sys, os, re, zlib, shutil, subprocess, zipfile, unicodedata, tempfile + +ROMS = "/storage1/Emulation/roms" +PATCHES = "/storage1/igir/romhacks/patches" +APPLY = "/storage1/igir/romhacks/tools/apply.py" + +BASES = { + "crystal_rev1": f"{ROMS}/gbc/Pokemon - Crystal Version (USA, Europe) (Rev 1).gbc", + "gold": f"{ROMS}/gbc/Pokemon - Gold Version (USA, Europe) (SGB Enhanced) (GB Compatible).gbc", + "silver": f"{ROMS}/gbc/Pokemon - Silver Version (USA, Europe) (SGB Enhanced) (GB Compatible).gbc", + "ruby": f"{ROMS}/gba/Pokemon - Ruby Version (USA, Europe).gba", + "sapphire": f"{ROMS}/gba/Pokemon - Sapphire Version (USA, Europe).gba", + "emerald": f"{ROMS}/gba/Pokemon - Emerald Version (USA, Europe).gba", + "firered": f"{ROMS}/gba/Pokemon - FireRed Version (USA, Europe).gba", + "leafgreen": f"{ROMS}/gba/Pokemon - LeafGreen Version (USA, Europe).gba", + "red": f"{ROMS}/gb/Pokemon - Red Version (USA, Europe) (SGB Enhanced).gb", +} +# candidate bases to try per target platform (order = preference) +CANDIDATES = { + "gba": ["emerald", "firered", "leafgreen", "ruby", "sapphire"], + "gbc": ["crystal_rev1", "gold", "silver"], + "gb": ["red"], +} +# IPS patches (no checksum) need an explicit base by name substring +IPS_BASE_MAP = [ + ("seaglass", "emerald", "gba"), + ("crystal kaizo", "crystal_rev1", "gbc"), + ("kaizo", "crystal_rev1", "gbc"), # fallback for crystal kaizo rar +] + +ROM_EXT = {".gba": "gba", ".gbc": "gbc", ".gb": "gb", ".nds": "nds"} +PATCH_EXT = {".ips", ".bps", ".ups", ".xdelta"} +DOC_EXT = {".pdf", ".txt", ".png", ".md", ".jpg", ".jpeg", ".html", + ".xlsx", ".docx", ".bmp", ".avi", ".gif"} +ARCHIVE_EXT = {".zip", ".rar", ".7z"} + +# Clean display names for files whose filenames are messy (patch/zip artifacts). +# (substr-of-original-filename, lowercased) -> canonical hack name. First match wins. +NAME_OVERRIDES = [ + ("emeraldseaglass", "Emerald Seaglass"), + ("emerald seaglass", "Emerald Seaglass"), + ("lazarus", "Lazarus"), + ("saiph 2", "Saiph 2"), ("saiph2", "Saiph 2"), + ("saiph", "Saiph"), + ("flora-sky", "Flora Sky"), ("flora sky", "Flora Sky"), + ("sots", "Sovereign of the Skies"), + ("sors", "Sors"), + ("aesthetic red", "Aesthetic Red"), + ("crystal kaizo", "Crystal Kaizo"), +] +# Files we will NOT auto-place (unidentified / need user to name). Reported instead. +SKIP_NAME_SUBSTR = ["beta 15 + expansion"] + +PLACE = False +report = [] +ARCH_SUBDIR = "" # set while recursing an archive, groups its docs under _docs// + + +def strip_trailing_groups(name): + """Remove trailing (...) / [...] groups that look like version/variant junk.""" + verkw = re.compile(r"(\d|version|hotfix|bug.?fix|final|anniversary|classic\+|" + r"beta|\brev\b|english|main|patch|suloku|pss|complete)", re.I) + while name and name[-1] in ")]": + close = name[-1]; open_ch = "(" if close == ")" else "[" + depth = 0; start = -1 + for i in range(len(name) - 1, -1, -1): + if name[i] == close: depth += 1 + elif name[i] == open_ch: + depth -= 1 + if depth == 0: start = i; break + if start < 0: break + inner = name[start:] + if verkw.search(inner): + name = name[:start].rstrip() + else: + break + return name + + +def clean_name(fn): + base = os.path.basename(fn).lower() + for sub, canon in NAME_OVERRIDES: + if sub in base: + return canon + name = os.path.splitext(os.path.basename(fn))[0] + name = unicodedata.normalize("NFKD", name).encode("ascii", "ignore").decode() + name = name.replace("_", " ") + name = re.sub(r"^\s*pokemon\s*-\s*", "", name, flags=re.I) + name = re.sub(r"^\s*pokemon\s+", "", name, flags=re.I) + name = strip_trailing_groups(name) + # strip trailing version/junk tokens left outside parens + name = re.sub(r"\s*(full release|full version|completed|\bby .+|v\d[\d._]*|" + r"version|\d{4}|\d{1,2}-\d{1,2}-\d{2,4})\s*$", "", name, flags=re.I).strip(" -_") + return name or os.path.splitext(os.path.basename(fn))[0] + + +def is_skip_name(fn): + base = os.path.basename(fn).lower() + return any(s in base for s in SKIP_NAME_SUBSTR) + + +def crc32(path): + return zlib.crc32(open(path, "rb").read()) & 0xffffffff + + +def validate(path, plat): + with open(path, "rb") as f: + data = f.read() + n = len(data) + if plat == "gba": + if data[0xB2] != 0x96: + return "not a GBA ROM (byte 0xB2 != 0x96)", None + if n not in (4*1024*1024, 8*1024*1024, 16*1024*1024, 32*1024*1024): + for t in (8, 16, 32): + if n <= t*1024*1024: + return None, t*1024*1024 # needs pad to t MB + elif plat in ("gbc", "gb"): + if data[0x104:0x10A] != bytes.fromhex("ceed6666cc0d"): + return "GB/GBC Nintendo logo missing", None + elif plat == "nds": + if data[0x15C:0x15E] != b"\x56\xCF": + return "NDS logo CRC16 != 0xCF56", None + return None, None + + +def place_rom(src, plat, hackname, origin): + if is_skip_name(origin): + report.append(("ROM", "NEEDS-ID", origin, "unidentified hack — tell me the name", "")) + return + out_name = f"Pokemon - {hackname} (Hack).{plat}" + err, padto = validate(src, plat) + if err: + report.append(("ROM", "FAIL", origin, err, "")); return + data = open(src, "rb").read() + if padto and len(data) < padto: + data += b"\xff" * (padto - len(data)) + if PLACE: + d = os.path.join(ROMS, plat, "Hacks"); os.makedirs(d, exist_ok=True) + with open(os.path.join(d, out_name), "wb") as f: + f.write(data) + report.append(("ROM", "OK", origin, f"{len(data):,}b crc={zlib.crc32(data)&0xffffffff:08x}", + f"{plat}/Hacks/{out_name}")) + + +def try_apply(patch, base_key, out): + base = BASES[base_key] + if not os.path.exists(base): + return False, "base file missing" + r = subprocess.run([sys.executable, APPLY, patch, base, out], + capture_output=True, text=True) + return (r.returncode == 0), (r.stdout or r.stderr).strip() + + +def place_patch(patch, origin): + ext = os.path.splitext(patch)[1].lower() + hackname = clean_name(patch) + # archive the patch file itself + if PLACE: + ad = os.path.join(PATCHES, "_imported"); os.makedirs(ad, exist_ok=True) + shutil.copy2(patch, os.path.join(ad, os.path.basename(patch))) + tmp_out = patch + ".out" + if ext == ".ips": + hit = next(((bk, pl) for sub, bk, pl in IPS_BASE_MAP if sub in patch.lower()), None) + if not hit: + report.append(("PATCH", "UNRESOLVED", origin, "IPS needs known base (not in map)", "")) + return + bk, plat = hit + ok, msg = try_apply(patch, bk, tmp_out) + if not ok: + report.append(("PATCH", "FAIL", origin, f"ips/{bk}: {msg[:50]}", "")); return + place_rom(tmp_out, plat, hackname, origin); return + if ext == ".xdelta": + report.append(("PATCH", "SKIP", origin, "xdelta: handle via xdelta tool", "")); return + # BPS / UPS: auto-detect base across all platforms (CRC-verified) + for plat, keys in CANDIDATES.items(): + for bk in keys: + ok, msg = try_apply(patch, bk, tmp_out) + if ok: + place_rom(tmp_out, plat, hackname, origin + f" [base={bk}]") + return + report.append(("PATCH", "FAIL", origin, "no owned base matched (BPS/UPS CRC)", "")) + + +def archive_doc(path, origin): + sub = os.path.join("_docs", ARCH_SUBDIR) if ARCH_SUBDIR else "_docs" + rel = os.path.join(sub, os.path.basename(path)) + if PLACE: + d = os.path.join(PATCHES, sub); os.makedirs(d, exist_ok=True) + shutil.copy2(path, os.path.join(PATCHES, rel)) + report.append(("DOC", "OK", origin, f"{os.path.getsize(path):,}b", rel)) + + +def process_file(path, origin=None): + origin = origin or os.path.basename(path) + ext = os.path.splitext(path)[1].lower() + if ext in ROM_EXT: + place_rom(path, ROM_EXT[ext], clean_name(path), origin) + elif ext in PATCH_EXT: + place_patch(path, origin) + elif ext in DOC_EXT: + archive_doc(path, origin) + elif ext in ARCHIVE_EXT: + process_archive(path, origin) + else: + report.append(("SKIP", "?", origin, f"unknown ext {ext}", "")) + + +def process_archive(path, origin): + # keep the source archive + if PLACE: + ad = os.path.join(PATCHES, "_archives"); os.makedirs(ad, exist_ok=True) + shutil.copy2(path, os.path.join(ad, os.path.basename(path))) + global ARCH_SUBDIR + tmp = tempfile.mkdtemp(prefix="imp_") + ext = os.path.splitext(path)[1].lower() + prev_subdir = ARCH_SUBDIR + # group this archive's docs under a sanitized folder name + ARCH_SUBDIR = re.sub(r"[^\w.\- ]", "_", os.path.splitext(os.path.basename(path))[0])[:40] + try: + if ext == ".zip": + with zipfile.ZipFile(path) as z: + z.extractall(tmp) + else: # rar/7z via unar in container + subprocess.run(["docker", "run", "--rm", "-v", f"{os.path.dirname(path)}:/in:ro", + "-v", f"{tmp}:/out", "node:lts", "bash", "-c", + "apt-get update -qq>/dev/null 2>&1; apt-get install -y -qq unar>/dev/null 2>&1; " + f"unar -force-overwrite -o /out '/in/{os.path.basename(path)}' >/dev/null"], + capture_output=True, text=True) + for root, _, files in os.walk(tmp): + for fn in files: + fp = os.path.join(root, fn) + process_file(fp, origin=f"{os.path.basename(path)} :: {fn}") + finally: + ARCH_SUBDIR = prev_subdir + shutil.rmtree(tmp, ignore_errors=True) + + +def main(): + global PLACE + args = [a for a in sys.argv[1:] if not a.startswith("--")] + PLACE = "--place" in sys.argv + incoming = args[0] + for fn in sorted(os.listdir(incoming)): + fp = os.path.join(incoming, fn) + if os.path.isfile(fp): + process_file(fp) + # report + order = {"OK": 0, "UNRESOLVED": 1, "SKIP": 2, "FAIL": 3} + print(f"\n=== IMPORT REPORT ({'PLACED' if PLACE else 'DRY RUN'}) ===") + for typ, st, origin, detail, dest in sorted(report, key=lambda r: (r[0], order.get(r[1], 9))): + line = f"[{st:10}] {typ:5} {origin[:46]:46} {detail}" + print(line) + if dest: + print(f"{'':19}-> {dest}") + counts = {} + for r in report: + counts[(r[0], r[1])] = counts.get((r[0], r[1]), 0) + 1 + print("\nsummary:", dict(sorted(counts.items()))) + + +if __name__ == "__main__": + main()