Skip to content

TempGBA4PSP-mod 20260807

Latest

Choose a tag to compare

@JxPv2 JxPv2 released this 07 Aug 17:40

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 88454e9 so 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_length on failed getstat, 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_directory in dir.ini. The PNG filename must match the ROM (e.g. PokemonEmerald.png for PokemonEmerald.gba). On first load the PNG is decoded and a .raw cache 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:

  1. Launcher argv — ROM path passed in by a bubble (argv[1])
  2. Else roms/game.gba — GrabowskiDev-style fixed ROM
  3. 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:

  1. Reads rom_path.txt (required) — full PSP path to the .gba, e.g. ms0:/PSP/GAME/tempgba4psp-mod/roms/PokemonEmerald.gba
  2. Resolves the main emulator:
    • emulator_path.txt (optional) — folder ending in /, or a full path to EBOOT.PBP
    • If omitted: looks one folder up for a sibling folder named tempgba4psp-mod, then boots EBOOT.PBP there
      e.g. launcher at …/PSP/GAME/MyPokemon/ → expects …/PSP/GAME/tempgba4psp-mod/EBOOT.PBP
  3. Chain-loads the main emulator and passes the ROM path as argv[1]
  4. 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.PBP
  • DATA.PSP
  • TempGBA.prx
  • exception.prx
  • ku_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

  1. Drop in the new EBOOT.PBP, add the dir.ini boxart lines, put a matching PNG next to a ROM, and try list + SELECT carousel.
  2. Confirm Recent ROMs populates after launching a couple of games normally (not via single-game).
  3. If you care about KH:CoM or other intro movies that used to break, re-test those openings.
  4. Optional: build one launcher bubble with the PC tool (Approach A), or drop this EBOOT.PBP into an existing GrabowskiDev roms/game.gba folder (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.