SNES-LoRA — a Qwen3.8-27B adapter for SNES / PVSnesLib
⚠️ A single LoRA cannot one-click-generate a game. This adapter is only the domain-knowledge half — it makes the base model fluent in the console. The one-click create & edit (prompt → a real
.sfcROM) comes from the agent (Python + toolchain + probes) on GitHub ↓. Download this alone and you get fluency, not a game.
A LoRA adapter that gives a Qwen3.8-27B base basic competence in the Super Famicom (SNES) domain — PVSnesLib C idioms, SNES hardware potholes, and SNES-shaped art & music — the things a general base model does not know out of the box.
It is one of three complementary specialists in the
snes-lora-agent-qwen3.8-27b project
(GitHub repo snes-lora-agent-qwen3.8-27b; this adapter's HF id: SNES-LoRA-Qwen3.8-27B):
| Part | Specialty |
|---|---|
| Base LLM | general reasoning / game logic (base already does this) |
| This LoRA | the SNES / PVSnesLib domain layer (idioms, potholes, art, music) |
| Python tools | deterministic build + probe verification (compile, run, check) |
The agent turns one prompt into a real, verified .sfc ROM. This adapter is the "knows the console"
half; the agent is the "makes it compile, run and verify" half.
Adapter details
- Base: Qwen3.8-27B (bf16) — the adapter is bound to this base; swap the base and it no longer applies.
- Type: LoRA — rank 64, alpha 64
- Target modules:
q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj - Framework: PEFT
Training data (sft_sfc_all.jsonl, 1,856 records, all permissive)
The base already does game logic; this LoRA is trained only on what the base lacks, and records enter the set only after they are verified (code compiles / probes pass; music round-trips; art builds to CHR).
| pack | records | source |
|---|---|---|
art |
924 | pixel-asset-library bodies → SNES CHR |
code |
664 | real MIT PVSnesLib C + verified examples (pvsneslib-c) |
sfx |
100 | parametric SFX synthesis → BRR |
music |
59 | jingles → multi-channel jianpu (round-trip verified) |
verified-game |
57 | whole shipped games (1 record, tagged by game name) |
doc |
32 | SNESdev / fullsnes hardware facts |
verified-example |
15 | compiled + probed snippets |
pothole-fix |
5 | corrected known SNES hazards |
Licenses (per-file provenance in the repo's corpus/*/SOURCES.json):
- code — MIT SNES/PVSnesLib homebrew (deadfall-snes [code only], bsdemo-mpack, snes-bg3-text, opensnes, snes-ruby, snes-super-penalty, SNES-Orbital-Trigonometry-Demo, snes-homebrew, snes-studio, mtklein/snes) + PVSnesLib SDK examples (zlib).
- art — CC0 pixel assets (project-cordon-sprites, kenney, Pixel-Art-Prototyping-CC0-Collection).
- music / sfx — self-synthesized (self-authored).
- doc — SNESdev wiki / fullsnes hardware facts (uncopyrightable).
How to use — you need the agent (this LoRA is one part, not a standalone app)
⚠️ A bare LoRA can't make a game by itself. To turn a prompt into a real .sfc ROM you run the
agent — the Python that builds the ROM, probe-verifies it, and creates/edits art, music, logic and
scenes. This adapter only makes the base model fluent in the console; the agent does everything else.
Get the agent (and full install steps):
👉 https://github.com/pottokao-dotcom/snes-lora-agent-qwen3.8-27b — see its SETUP.md + README.md.
# 1) get the agent + tools + probes
git clone https://github.com/pottokao-dotcom/snes-lora-agent-qwen3.8-27b
cd snes-lora-agent-qwen3.8-27b # then follow SETUP.md: PVSnesLib + Mesen2 + Python deps
# 2) serve Qwen3.8-27B with THIS adapter (any OpenAI-compatible endpoint works)
vllm serve <qwen3.8-27b> --enable-lora \
--lora-modules sfc800=pottokao/SNES-LoRA-Qwen3.8-27B \
--served-model-name qwen38 --port 8001
# 3) make a game
SFC_LLM_URL=http://localhost:8001 python3 agent_v2/sfc_agent.py \
--name mygame --prompt "a candy-crush-style match-3 starring a jazz rabbit" --target all --package
The agent uses this adapter for the music unit by default (sfc800); code/art run on the base
(qwen38). Models are per-unit config in game.json — see the repo.
Honest scope
This adapter adds the domain layer, not general ability. Its value shows where the base is weak (console idioms, hardware setup, SNES art/music); the base still carries the game logic, and the Python tools still carry verification. It is a component of a system, not a standalone game writer.
Also note the agent's "one-click edit" only edits games the agent itself generated — its own
PVSnesLib-C projects (a game.json brief + scaffold + manifest.json). It does not edit arbitrary
.sfc ROMs, 65816 assembly, or C from another codebase.
License
MIT (adapter weights). Training data is MIT / CC0 / self-authored as listed above; keep upstream attribution. "Nintendo", "Super Famicom", "SNES" are trademarks of Nintendo — this is an unofficial project, shipping no Nintendo ROM, BIOS, or artwork.