mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-20 20:50:21 +02:00
ec9dc29646
Silver: derived import manifest (tools/make_silver_manifest.py re-resolves the Gold manifest's symbols from pokesilver.sym), silver GameVersion row, generation-keyed extractor routing, required-files override, edition save stamping (a Silver playthrough no longer writes into the Gold save), checkver-driven edition data, SILVER/KAMON/OSCAR/MAX presets, GOLD rival default, edition credits banner, Lugia title screen (OAM layouts, bob, trail, palettes as title.lua data keys with Gold defaults so old caches need no re-import), packaging for every build target, docs, and tests. Launcher: the installed-mods list is one continuous scroll (rows culled to the viewport) instead of a pager with an inner scroll viewport; the pad cursor's edge-scroll no longer runs it to the bottom. The game dropdown shows just the initial and caret. Find-tab behavior unchanged. Title tempo: a sprite-anim frame shows duration+1 ticks (engine/sprite_anims/core.asm GetSpriteAnimFrame), which locks both editions' 64-tick wing beat to the 64-tick sine bob; the title screens no longer run fast and out of phase.
68 lines
2.6 KiB
Markdown
68 lines
2.6 KiB
Markdown
# What This Port Requires
|
|
|
|
The packaged desktop app requires one user-supplied input on first boot: a
|
|
canonical 1 MiB US Pokemon Red, Blue, or Yellow ROM, or a canonical 2 MiB US
|
|
Pokemon Gold or Silver ROM.
|
|
|
|
The importer verifies the SHA-1 for the game (see `src/core/GameVersion.lua`
|
|
for specific hashes). Other revisions and Virtual Console releases are rejected
|
|
rather than decoded with incorrect addresses.
|
|
|
|
After verification, the app generates its private cache in the LÖVE save
|
|
directory. It does not keep a copy of the ROM. Later boots use the cache.
|
|
Python and Pillow are not required by the packaged app.
|
|
|
|
## Bundled Metadata
|
|
|
|
Assembly removes high-level names and some relationships that the Lua port
|
|
needs. The version-specific files `tools/rom_manifest.json`,
|
|
`tools/rom_manifest_blue.json`, `tools/rom_manifest_yellow.json`,
|
|
`tools/rom_manifest_gold.json`, and `tools/rom_manifest_silver.json` therefore
|
|
contain:
|
|
|
|
- the ROM symbol addresses actually read by the extractor
|
|
- symbolic IDs and ordering for maps, species, moves, items, and trainers
|
|
- source-erased dimensions, image names, and map object integration names
|
|
- hand-ported field/script integration tables
|
|
- text labels and runtime substitution markers, but no dialogue payload
|
|
- music, sound-effect, and cry header names and addresses
|
|
|
|
The manifest contains no ROM bytes, graphics, dialogue, audio samples, or
|
|
complete symbol file. Dialogue, map blocks, encounters, stats, names, parties,
|
|
palettes, artwork, and audio channel programs are read from the user's ROM.
|
|
|
|
## Generated Output
|
|
|
|
First boot writes:
|
|
|
|
- `data/generated/`: constants, maps, tilesets, text and pointer tables,
|
|
Pokemon, moves, items, trainers, encounters, field data, palettes, and font
|
|
mappings, detailed battle animation programs, plus compact audio metadata
|
|
- `assets/generated/`: 495 PNGs covering maps, overworld sprites, fonts,
|
|
Pokemon/trainer pictures, title and intro art, menus, field effects, and
|
|
battle animation tiles
|
|
- `assets/generated/audio/programs.bin`: three 16 KiB ROM banks containing
|
|
the music, sound-effect, cry, and waveform programs used by live synthesis
|
|
|
|
Map behavior remains hand-ported under `data/scripts/`.
|
|
|
|
## Developer Builder
|
|
|
|
The optional source-tree builder provides a repeatable audit path:
|
|
|
|
```sh
|
|
python3 tools/build_data.py --rom /path/to/pokemon-red.gb --clean
|
|
```
|
|
|
|
That path requires Python 3.10+ and Pillow. It is not part of a packaged
|
|
game's first boot.
|
|
|
|
## Not Required
|
|
|
|
- a `pret/pokered` checkout
|
|
- the `symbols` branch or a `.sym` file
|
|
- Git
|
|
- RGBDS
|
|
- a separately compiled ROM
|
|
- Python or Pillow when running the packaged app
|