TempGBA4PSP-mod 20260807 (pre-release)
Everything since 20260612, plus three download packages this time. As usual you need an original GBA BIOS in the emulator folder.
If you're upgrading an existing multi-ROM install, replace EBOOT.PBP (keep gba_bios.bin, exception.prx, saves, and game_config.txt). Add the dir.ini boxart lines below if you want covers in the file browser.
Downloads
TempGBA4PSP-mod_Emulator.zip
Main emulator zip.
For a new install, unzip and copy the tempgba4psp-mod folder into your GAME folder. To update an existing version, just replace EBOOT.PBP and add in dir.ini:
boxart_directory = roms
folder_boxart_directory = folder_boxart
TempGBA4PSP-mod_Single-Game_Launcher.zip
Single game launcher XMB app. Check readme.txt.
MUST write into rom_path.txt the PSP path of the ROM you want to launch with the app.
Optional: if you don't follow the default folder and naming scheme of the emulator path, you must write the PSP TempGBA4PSP-mod path into emulator_path.txt.
TempGBA4PSP-mod_Single-Game_Launcher_Builder.zip
Single game launcher XMB app builder.
Fast and easy way to create single game launcher XMB apps with modified pictures and sound. Just open the .exe file and have fun!
What's new since 20260612
Accuracy & performance
- Dynarec ADCS / SBCS / RSCS flags — port of libretro/gpsp
88454e9so carry-with-borrow instructions set C/V correctly. This unsticks Kingdom Hearts: Chain of Memories opening movies (and similar titles that depended on those flags). - LTO enabled in the PSP build for better cross-unit codegen.
- Thumb ROM PC-pool loads — same-page
LDR rd,[pc,#imm]folded into immediates in the dynarec where safe. - ZIP / path hardening — reject oversized or negative ZIP name fields, safer
file_lengthon failedgetstat, and tighter crash-log / directory browser edges.
File browser & UI
- Boxart — 141×141 covers beside the ROM list. Place PNGs in the directory set by
boxart_directoryindir.ini. The PNG filename must match the ROM (e.g.PokemonEmerald.pngforPokemonEmerald.gba). On first load the PNG is decoded and a.rawcache is written for instant loading afterward. - Carousel mode — alternate 3D-style browser with boxart / savestate-style previews. Folder covers use
folder_boxart_directory. Press SELECT to toggle list ↔ carousel. - Recent ROMs — up to 5 recently played games pinned at the top of the browser (page-scroll is ignored while in that section). Single-game boots are not added — Recent stays for normal multi-game browsing only.
- Sleep auto-savestate — silent auto-save when the PSP sleeps.
- Themed popups — load / confirm dialogs follow the active theme colours.
- Scrolling menus and related browser polish.
- Auto savestate slot is labelled as auto in confirm text (slot 10).
Branding
- Custom XMB icon and full 480×272 splash embedded in
EBOOT.PBP(fixes the old undersized ~408-wide PIC1).
Single-game installs (big addition)
You can put individual GBA games on the XMB as their own bubbles (custom icon / splash / menu music). This release supports two layouts. Pick one — don't mix them in the same folder.
Huge thanks to @JxPv2 for PR #24 and the builder / launcher work.
Boot order inside the emulator:
- Launcher argv — ROM path passed in by a bubble (
argv[1]) - Else
roms/game.gba— GrabowskiDev-style fixed ROM - Else normal ROM browser (multi-game)
Single-game boots (1 and 2) do not get added to Recent ROMs.
Approach A — Launcher stub (recommended, this repo)
A tiny separate EBOOT.PBP lives in its own PSP/GAME/... folder. It does not contain a full emulator copy. It only:
- Reads
rom_path.txt(required) — full PSP path to the.gba, e.g.ms0:/PSP/GAME/tempgba4psp-mod/roms/PokemonEmerald.gba - Resolves the main emulator:
emulator_path.txt(optional) — folder ending in/, or a full path toEBOOT.PBP- If omitted: looks one folder up for a sibling folder named
tempgba4psp-mod, then bootsEBOOT.PBPthere
e.g. launcher at…/PSP/GAME/MyPokemon/→ expects…/PSP/GAME/tempgba4psp-mod/EBOOT.PBP
- Chain-loads the main emulator and passes the ROM path as
argv[1] - Game starts straight into gameplay — no ROM browser
Why this approach: one shared TempGBA install, many XMB bubbles. Update the emulator once; all launchers keep working.
CFW vs PPSSPP: on real CFW it uses sctrlKernelLoadExecVSHWithApitype; otherwise sceKernelLoadExec (PPSSPP / non-CFW). Failures show an on-screen error (missing rom_path.txt, bad ROM path, missing emulator folder / EBOOT.PBP).
Package layout (from the builder or by hand):
PSP/GAME/YourGameFolder/
├── EBOOT.PBP ← launcher (required)
├── rom_path.txt ← required
├── emulator_path.txt ← only if not using default sibling folder name
├── assets/ ← optional (ICON0 / PIC0 / PIC1 / SND0)
└── readme.txt
Copy that whole folder under PSP/GAME/.
Builder (TempGBA4PSP-mod_Single-Game_Launcher_Builder.zip) — Windows GUI (also runnable from source on Linux/macOS). Sets title, ROM/emulator paths, ICON0 (144×80), PIC1 (480×272), PIC0 overlay, and looping SND0.AT3 from a local file or YouTube (ffmpeg / atracdenc / yt-dlp bundled). One-click output of the folder above.
Launcher zip (TempGBA4PSP-mod_Single-Game_Launcher.zip) — prebuilt stub if you want to write the .txt files yourself (see readme.txt). rom_path.txt is mandatory. Use emulator_path.txt whenever the emulator isn't in a sibling tempgba4psp-mod folder (or you renamed the boot file).
Approach B — GrabowskiDev single-game compatibility
Compatible with GrabowskiDev/TempGBA4PSP-Single-game folder layouts: a full emulator copy per game, with the ROM fixed as roms/game.gba.
On startup, if nobody passed a ROM via argv and roms/game.gba exists, this build loads it and skips the browser. If game.gba is absent, behaviour is unchanged — normal multi-ROM file browser.
Typical layout:
| Path | Purpose |
|---|---|
roms/game.gba |
ROM (unzipped) |
save/game.sav |
Battery save |
state/game_*.svs |
Save states |
cfg/game.cfg |
Per-game settings |
dir.ini |
Paths (rom_directory = roms, etc.) |
Upgrading an existing GrabowskiDev-style bubble: copy these from a fresh Emulator zip build, and keep your custom PBOOT.PBP / XMB assets, roms/game.gba, and saves:
EBOOT.PBPDATA.PSPTempGBA.prxexception.prxku_bridge.prx(if present)gba_bios.bin
Trade-off vs Approach A: each game is a self-contained install (easy drop-in for existing GrabowskiDev folders), but you duplicate the emulator per bubble and must update each folder when the emulator changes. Prefer A for new setups; use B to keep / upgrade existing single-game folders without rebuilding launchers.
Suggested first look
- Drop in the new
EBOOT.PBP, add thedir.iniboxart lines, put a matching PNG next to a ROM, and try list + SELECT carousel. - Confirm Recent ROMs populates after launching a couple of games normally (not via single-game).
- If you care about KH:CoM or other intro movies that used to break, re-test those openings.
- Optional: build one launcher bubble with the PC tool (Approach A), or drop this
EBOOT.PBPinto an existing GrabowskiDevroms/game.gbafolder (Approach B).
Credits:
Boxart Carousel, Recent ROMs, Single-game launcher + Builder, GrabowskiDev compatibility — JxPv2.
Kingdom Hearts fix, Dynarec flag fix, LTO / Thumb opts, ZIP hardening, merge/integration — andymcca.