@grarak/run-local
BRun DSVita locally on the dev machine under qemu-arm and take screenshots — use when asked to launch the emulator locally, boot a rom for a quick correctness check, open the menu UI, or capture what the local emulator window shows.
Install
agr install @grarak/run-local --target claudeWrites 1 file into .claude/skills/, pinned to git-0ac1892c.
- .claude/skills/run-local/SKILL.md
Document
name: run-local description: Run DSVita locally on the dev machine under qemu-arm and take screenshots — use when asked to launch the emulator locally, boot a rom for a quick correctness check, open the menu UI, or capture what the local emulator window shows.
Run DSVita locally (qemu-arm)
Prerequisite: a .env in the repo root (copy .env.example, fill in DSVITA_SYSROOT,
DSVITA_ROMS_DIR, DSVITA_TEST_ROM). All tools/ scripts source it automatically.
Build first (dev profile has overflow-checks + debug-assertions on):
cargo build --profile release-debug --target thumbv7neon-unknown-linux-gnueabihf
| action | command |
|---|---|
Boot the test rom ($DSVITA_TEST_ROM) | tools/launch_hw.sh |
Open the menu UI on $DSVITA_ROMS_DIR | tools/launch.sh |
| Screenshot the emulator window | tools/shot.sh <out.png> |
| Stop | pkill -9 -f "release-debug/dsvita" |
Runtime log: /tmp/dsvita.log. The emulator runs detached; give it a few seconds before
screenshotting.
Constraints:
- The dev machine is x86, so the armhf binary only runs here under qemu-arm — ~100x slower
than native, fine for a quick correctness check, useless for perf. Default to running
roms/games on the pi5 test box (run-on-testbox skill; roms there live at
~/nds); reach for qemu locally only for a fast boot/correctness sanity check. - Under Xwayland, mouse injection reaches SDL but keyboard does NOT — touch-navigable flows can be driven (mouse click on the bottom-screen area = touch), button-only flows cannot.
- CLI:
-f 0|1|2..framelimit (0 = uncapped, 1 = 100%, 5 = 200%, 9 = 500%),-e 0|1|2= ARM7 mode (AccurateLle / SoundHle / Hle),--ui <dir>menu mode.
Trustgrade B
- passBody integrity
Whether the stored document is plausibly the kind of file the artifact declares, rather than something fetched by mistake.
- passType matchnot applicable to this artifact type
Whether the artifact is really the kind of thing its metadata claims it is.
- passFreshness
How long since the source repository was last pushed to.
- passPrompt injection
Scans the artifact's own text for instructions aimed at your agent rather than at you.
- warnLicensecopyleft/unknown — index-and-link only
Whether the source repository declares an SPDX license permissive enough to redistribute.
How the grade is calculated
Each check contributes 0 points when it passes, 1 when it warns, and 2 when it fails. The total maps to a letter:
- Aevery check passed
- Bone warning
- Ctwo warnings
- Dprompt injection or body integrity failed, or three warnings
- Fone of those failed, and something else is wrong
These are automated hygiene checks, not a security audit, and not a dependency or vulnerability scan. A grade of A means nothing was flagged — not that the artifact is safe.
Versions
git-0ac1892c19472026-07-31