psp-homebrew-testing
Skill2 starsChanged 2 months agoMITView on GitHub
Test and debug PSP homebrew on PPSSPP emulator for Windows — deploy EBOOT, capture screenshots, read debug logs, manage emulator config and processes.
In this repository58 other files it gives its agents.
- ad-hoc-script-verificationSkill
- architecture-diagramSkill
- blocked-page-recoverySkill
- cadquery-enclosure-designSkill
- canonical-thumbnailSkill
- circuit-designSkill
- competitor-news-monitorSkill
- component-alternativesSkill
- debugging-hermes-tui-commandsSkill
- docker-container-update-checkSkill
- document-to-action-itemsSkill
- docxSkill
- email-inbox-triageSkill
- embedded-porting-patternsSkill
- ephemeral-file-sharingSkill
- excalidrawSkill
- flash-game-researchSkill
- flutter-android-buildSkill
- flutter-content-renderingSkill
- github-code-reviewSkill
- githubSkill
- goatcounter-analyticsSkill
- google-oauth-file-pollSkill
- grounded-citationsSkill
- hermes-agent-skill-authoringSkill
- hermes-gateway-slash-commandSkill
- hermes-gateway-supervisionSkill
- jellyseerr-watch-suggestionsSkill
- maintained-fork-publishingSkill
- meeting-action-itemsSkill
- native-mcpSkill
- obsidian-mapsSkill
- pdf-flattenSkill
- pdfSkill
- pdf-surgical-editsSkill
- planSkill
- product-price-monitorSkill
- psp-developmentSkill
- psp-prx-plugin-maintenanceSkill
- python-debugpySkill
- python-webapp-patternsSkill
- reddit-readingSkill
- retro-fansiteSkill
- reverse-proxy-websocket-debuggingSkill
- rss-feedsSkill
- simplify-codeSkill
- sketchSkill
- skit-thumbnailSkill
- spikeSkill
- subagent-driven-developmentSkill
- test-driven-developmentSkill
- usb-device-enumerationSkill
- weekly-review-planningSkill
- wiki-media-asset-pipelineSkill
- windows-c-build-toolchainSkill
- windows-crash-forensicsSkill
- writing-plansSkill
- yt-dlp-anti-botSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 4 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 16
Test workflow for PSP homebrew builds using PPSSPP on Windows.
- Very specific: line 40
Place EBOOT.PBP + assets in <memstick>/PSP/GAME/<SOMEID>/
- Distinctive: line 53
Use Windows screen capture (PowerShell) to capture the full PPSSPP window including overlays:
- Distinctive: line 65
Run from git-bash via:
- Very specific: line 81
Check PSP debug logs for svga_init success, createRenderer OK, frame loop timestamps
- Distinctive: line 82
Check PPSSPP log for game load traces
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
PSP Homebrew Testing (PPSSPP on Windows)
Test workflow for PSP homebrew builds using PPSSPP on Windows. Covers deploying EBOOTs, capturing visual output, reading debug logs, and managing PPSSPP process lifecycle.
Prerequisites
- PPSSPP installed on Windows (
/path/to/PPSSPP.exe) - PSP homebrew EBOOT.PBP built with pspdev toolchain
- Game data files (CRITTER.DAT, MASTER.DAT, DATA/ etc.) alongside EBOOT
PPSSPP Config Management
Config lives at: <memstick>/PSP/SYSTEM/ppsspp.ini
Key settings to toggle:
| Setting | Section | Effect |
iShowFPSCounter = 1 | [Graphics] | Show FPS overlay (0=off, 1=FPS, 2=FPS+speed, 3=detailed) |
FileLogging = True | [General] | Enable PPSSPP logging to file |
AutoRun = True | [General] | Auto-run last booted game on launch |
NOTE: Changes to ppsspp.ini only take effect on PPSSPP restart. Running PPSSPP processes cache the config at startup.
Deploying to PPSSPP
- Place EBOOT.PBP + assets in
<memstick>/PSP/GAME/<SOMEID>/- Folder name (e.g.
FOUT00002) becomes the game's entry name in PPSSPP browser - Folder ID (6 chars from PARAM.SFO) used for playtime tracking in
[PlayTime]section
- Folder name (e.g.
- Launch PPSSPP with game path as argument:
/f/emulators/ppsspp/PPSSPPWindows64.exe "/f/emulators/ppsspp/memstick/PSP/GAME/FOUT00002/EBOOT.PBP" - Alternative: launch PPSSPP normally, navigate game browser to the entry, press Enter/X
Capturing Screenshots
The FPS counter and other PPSSPP overlays are NOT captured by PSP internal framebuffer dumps (sceIoWrite, etc.). They render in PPSSPP's Vulkan/D3D presentation layer.
Use Windows screen capture (PowerShell) to capture the full PPSSPP window including overlays:
Add-Type -AssemblyName System.Drawing,System.Windows.Forms
$bounds = [System.Windows.Forms.Screen]::PrimaryScreen.Bounds
$bmp = New-Object System.Drawing.Bitmap $bounds.Width, $bounds.Height
$g = [System.Drawing.Graphics]::FromImage($bmp)
$g.CopyFromScreen($bounds.X, $bounds.Y, 0, 0, $bounds.Size)
$bmp.Save("/tmp/screenshot.png", [System.Drawing.Imaging.ImageFormat]::Png)
$g.Dispose(); $bmp.Dispose()Run from git-bash via:
powershell.exe -ExecutionPolicy Bypass -File C:/path/to/script.ps1IMPORTANT: The PPSSPP window must be visible and not minimized. Use ShowWindow + SetForegroundWindow Win32 APIs to activate it before capture if needed.
Reading PSP Debug Logs
PSP homebrew can write debug output via sceIoWrite to the memstick. Common paths:
<memstick>/psp_debug.txt<memstick>/palette_log.txt<memstick>/showrect_log.txt<memstick>/ppsspp.log(PPSSPP emulator log)
To check if the game is actually running (vs PPSSPP sitting on game browser):
- Check PSP debug logs for
svga_initsuccess,createRenderer OK, frame loop timestamps - Check PPSSPP log for game load traces
- Compare log file modification timestamps
Process Management
Kill all zombie PPSSPP processes:
cmd.exe //c "taskkill /F /IM PPSSPPWindows64.exe"Launch game directly (background):
/f/emulators/ppsspp/PPSSPPWindows64.exe "/f/emulators/ppsspp/memstick/PSP/GAME/FOUT00002/EBOOT.PBP"Send keystrokes to activate and control PPSSPP:
Add-Type -AssemblyName System.Windows.Forms
Add-Type @"
using System; using System.Runtime.InteropServices;
public class WinAPI {
[DllImport("user32.dll")] public static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
}
"@
$hwnd = (Get-Process PPSSPPWindows64)[0].MainWindowHandle
[WinAPI]::ShowWindow($hwnd, 1); [WinAPI]::SetForegroundWindow($hwnd)
Start-Sleep -Milliseconds 300
[System.Windows.Forms.SendKeys]::SendWait("~") # EnterPitfalls
- Zombie processes: PPSSPP processes accumulate if not cleanly exited. Always
taskkill /Fbefore restarting. - Config changes ignored: PPSSPP reads
ppsspp.iniat startup. Changes to a running instance's config file have no effect. - Vulkan overlay not in framebuffer dumps: The FPS counter and emulator overlays are rendered by PPSSPP's GPU presentation layer. Internal PSP framebuffer dumps (via sceIoWrite) will NOT show them. Always use Windows
CopyFromScreenfor overlay-inclusive screenshots. - AutoRun ambiguity:
AutoRun=Trueruns the LAST booted game. A fresh PPSSPP install with no boot history goes to game browser regardless. - SendKeys unreliability:
SendKeysonly works if the target window is in the foreground.SetForegroundWindowmay fail if another app (like a UAC prompt or terminal) has focus.
See Also
windows-environmentskill — general Windows/git-bash usagereferences/ppsspp-settings.md— PPSSPP config details
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

