# Pokémon ROM Hacks — tooling Acquisition + patching pipeline for the Pokémon ROM-hack collection in the valhalla homelab library. Spun off from the `homelabstack` repo on 2026-06-06. > **The catalog (the notes) lives in the self-hosted Obsidian vault**, not in this > repo — under `Pokémon ROM Hacks/`: one note per hack, plus `Index`, `Types`, > `Play Queue`, `Bases/`, `Platforms/`, a `Wanted` acquisition list, and a > `_Claude.md` ops reference. Access it via the Obsidian MCP (`mcp__obsidian__*`) > or the `vault` skill. New hacks are added there **manually** (see the vault's > `_Claude.md` checklist). This repo is just the tooling. The ROMs live on valhalla under `/storage1/Emulation/roms//Hacks/`, served by the RomM stack (`roms.ginnoir.com`) — deployed from `homelabstack` (`stacks/roms/`). ## Layout | Path | What | |---|---| | `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. | | `scripts/build-romhack-vault.py` | **Archived.** Original generator that bootstrapped the vault notes from an in-script dataset. The vault has since been enriched and is now hand-maintained via the Obsidian MCP — do **not** re-run it against the live vault (its output is poorer: no `play_status`/`rating`/`Bases`/`Play Queue`). Kept only for the structured `HACKS` dataset; its output dir is gitignored. | | `drop/` | **gitignored** staging area (~1.3 GB) of ROM/patch binaries pending import. | ## Acquisition policy Pre-3DS handhelds (gb/gbc/gba/nds) + pre-Wii consoles. Direct, non-anti-bot sources only for auto-fetch; gated hacks are tracked in the vault's `Pokémon ROM Hacks/Wanted.md` for manual hand-off. No offensive/"shitpost" content (e.g. Clover excluded).