← Browse

@grarak/run-local

B

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.

skillclaude

Install

agr install @grarak/run-local --target claude

Writes 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
actioncommand
Boot the test rom ($DSVITA_TEST_ROM)tools/launch_hw.sh
Open the menu UI on $DSVITA_ROMS_DIRtools/launch.sh
Screenshot the emulator windowtools/shot.sh <out.png>
Stoppkill -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