PSP Store › Emulators › GBAdhoc

GBAdhoc changelog

v4.5.0 · Nov 1, 2026

Pokémon MonoMyth is compatible, and demanding GBA games run much faster. 46 test scenes on real PSPs average 26.7% higher frame rates than 4.1.0, and 68% on the scenes that were struggling (under 58 fps on 4.1.0).

Download GBAdhoc-4.5.0.zip and unzip it to the root of your Memory Stick. It installs into PSP/GAME/GBAdhoc, so unzipping over 3.5.0 or 4.0.0 upgrades in place. Your config.ini, saves and save states carry over. Update both PSPs before linking.

> Coming from 4.1.0? It installed into its own PSP/GAME/GBAdhoc410 folder. Copy anything you want to keep from there (saves, save states, config.ini, your cheats folder) into PSP/GAME/GBAdhoc, then delete GBAdhoc410.

Pokémon MonoMyth

MonoMyth turns away inaccurate emulators such as VBA and tells you to use an accurate one like mGBA. 4.1.0 stops on its "emulator is incompatible" screen. 4.5.0 passes its accuracy check and plays on a real PSP, through the intro, the first battles and picking your starter. There are no game-specific hacks: the fix is live timer counters and the ARM7 instruction prefetch window, and every game gets them.

Much faster GBA games

Some GBA games rewrite their own code while they run, and each rewrite used to cost GBAdhoc a lot of work. 4.5.0 redoes only what actually changed.

PSP-3000, Fit scale, sharp bilinear and ambient art on:

| Game | 4.1.0 | 4.5.0 |
|---|--:|--:|
| Doom II | 18.7 fps | 59.0 fps |
| Back to Stone | 17.8 fps | 59.6 fps |
| Duke Nukem Advance | 17.5 fps | 57.8 fps |
| FIFA 07 | 21.8 fps | 59.5 fps |
| Ice Nine | 24.6 fps | 58.5 fps |

A real GBA runs at about 59.7 fps. These are the hardest scenes, so don't read them as a typical 3x. Across all 46 scenes, on both the PSP-1000 and PSP-3000, the CPU does about 25% less work per frame, and scenes under 58 fps went from 18 to 5. The README has the full table.

Also new

  • Lower input lag. In light GBA games at full speed, from 4 frames to between 1 and 1.5.
  • Link Cable play is in great shape. Every link session we test passes, and speed stays where it was, except Super Street Fighter II Turbo Revival, which dropped about 2 fps.
  • Wireless Adapter fixes. An adapter session after a cable session now works, the game is told when the other player leaves, and less lag builds up on the joining PSP. This is a first step: the adapter path still needs work, and more is coming.
  • Faster Game Boy and Game Boy Color core, and GBC games no longer hitch every few seconds.
  • Better screenshots: small PNGs saved to PICTURE/GBAdhoc.
  • New screen filters: LCD grid, dot grid and scanlines.
  • Reset game in the in-game menu.
  • Fixes. ROMs with accented names show up and open. Need for Speed Underground, Big Mutha Truckers and Street Racing Syndicate start. Sleep is steadier around the menus.

Known issues

Mario Tennis: Power Tour and Mario Golf: Advance Tour over the Wireless Adapter. The link can't keep up: Tennis's connection icon flickers and play hitches constantly; Golf lags and eventually disconnects. The Wireless Adapter path is the focus of the next updates, and they will address both.

Thanks

  • KarnFu (#9) sent save states for the games that ran worst and retested build after build on a PSP-1000.
  • ChandlerHardy for the sleep fixes (#15, #16, #20).
  • u/Far_Froyo_6317 for the filter patch.

Full details are in the README.

Checksums (SHA-256)

4edb093f5750602ec8bbe27b9aac7f44f9d812132ebf61ca85635aab5a55b0ef GBAdhoc-4.5.0.zip
43f3c66c5fbfc9f98951c6d0c6085311918d4fcaa17c962e8953fd0968e177ec EBOOT.PBP
4f4989149f29c984cc6275d5f92993b4f886dc1639275e09ee72ddaa52d54eb6 gbadhoc_me.prx
4cd1b5fcd666ba159686604ac0a3ca86f9fbbf5509f18bdc0b3a64c3298631c9 gbadhoc_home.prx

v4.1.0 · Oct 14, 2026

GBAdhoc 4.1.0

Built on libretro/gpSP and davidgfnet's wireless adapter emulation, with protocol
documentation by afska and Corwin. GBAdhoc/gpSP is GPL-2.0; the bundled mGBA
open-source BIOS has its separate MPL-2.0 license.

4.1.0 is the current stable release. Promoted after owner gameplay testing found no significant or obvious regressions. The executable and PRX modules are identical to Beta 1; existing beta users already have this runtime.

Changes

  • Protect previous battery images after failed full writes/loads and finish queued writes before GBA cable startup replaces session RAM.
  • GB/GBC timer, delayed reload and HALT corrections, plus audio, SGB and state fixes.
  • Rewind cartridge-clock restoration and recovery after failed restores.
  • GBA malformed-state, EEPROM, sound and timer bounds checks.
  • PSP worker, Media Engine, standby and USB ownership corrections.
  • Wireless/save-share session validation and explicit PSP adhoc host creation.
  • Bounded GBA GameShark v1/v2 and Action Replay v3 RAM cheats.

Update both PSPs for linking and save sharing: those transports now use
protocol version 2 and refuse older versions safely.

Validation and scope

All 30 registered host suites passed. Matching application harness load/save/
relaunch tests and native persistence fault tests passed on both physical models.
Wireless/share component probes passed in both host directions. Owner gameplay testing found no significant or obvious regressions. Physical
sleep/wake, abrupt power loss and exhaustive game compatibility are not certified.
Rewind defaults are retained; no new rewind speedup or LCD filter is advertised.

Cheats: pick a name and switch it on

Choose cheats from an on-screen list. Open Cheats, select a named cheat such as “Have All Badges”, and press X to turn it on or off. Your choices are remembered for that game. You do not need to type codes or choose a format to use the supplied pack.

Get the ready-made lists

Download the cheat pack — 48 game lists with 1,618 entries, including Pokemon, Mario, Zelda, Kirby and more. The pack is a separate download from the emulator.

  1. Extract the ZIP's PSP folder onto your Memory Stick. The lists go into PSP/GAME/GBAdhoc410/cheats.
  2. Launch or reload your game, open the in-game menu and select Cheats. You can also press RIGHT on a game in the ROM browser.
  3. Highlight a cheat and press X to toggle it. L/R page through the list; SQUARE turns everything off after confirmation.

New cheats start off. Cheats are disabled during link/wireless sessions.

List missing? The cheat filename must match your ROM filename, without the extension: Pokemon - FireRed Version (USA).gba uses Pokemon - FireRed Version (USA).cht. If you renamed the ROM, rename its cheat file too. Codes must also match the game's region/revision; the pack's manifest lists the supported versions. Games without a supplied list need a compatible cheat file added first.

Please experiment with cheats and share results! Start with one at a time on copies of your saves, then explore combinations. Turning a cheat off does not necessarily undo changes already made. Report your game, region/revision, cheat name/code, PSP model and observed behavior; working results are welcome too.

All included entries passed production-parser/RAM-bounds checks with ASan/UBSan; their individual gameplay effects have not all been certified. Unsupported source entries were omitted and large lists capped at 200 entries. Sources: Libretro database (CC BY-SA 4.0) and small attributed GameHacking.org subsets. Full credits and license are in the ZIP.

<details>
<summary>Optional: adding your own GameShark / Action Replay codes</summary>

The supplied pack is already formatted. These instructions are only for importing additional codes yourself.

Put one tag at the start of the complete entry, followed by its 8+8 digit pairs:

| Tag | Format |
| --- | --- |
| GS1: | Encrypted GameShark / Action Replay v1/v2 |
| AR3: | Encrypted Action Replay v3 |
| GS1RAW: | Already decrypted v1/v2 device instructions |
| AR3RAW: | Already decrypted v3 device instructions |

For example, FireRed USA/Europe revision 1 only:

cheat0_desc = "Have All Badges"
cheat0_code = "AR3RAW: 00226510+000000FF"
cheat0_enable = false

Do not guess the family or mix formats within an entry. Plain CodeBreaker 8+4 codes and supported GB/GBC 01 GameShark codes need no GBA family tag. "Choose a format" means an untagged GBA 8+8 entry needs one of the tags above; edit the file and reload. There is no on-screen format picker. Supported GS/AR operations are a bounded RAM subset: hooks/master codes, ROM patches and non-RAM operations remain refused. See the ZIP's README and full cheat documentation.

</details>

Install

Extract the install ZIP onto your Memory Stick. It installs into
PSP/GAME/GBAdhoc410. Keep EBOOT.PBP and both PRX modules together. Put your games
in its roms directory. A separate BIOS dump is optional. Use a separate folder
and copies of existing game data when comparing with your stable installation.
The package contains no personal ROMs, BIOS dumps or saves. Corresponding source
and checksums are attached below.

Source commit: 205b7cc9113cb8dc6160fc91ab6330df757d1955. Stable publication changes documentation only; the tested runtime is unchanged. Checksums and corresponding source are attached.

Documentation encoding was corrected after publication. The source ZIP, manifest and checksums were updated; the install ZIP and cheat pack are unchanged.

v4.0.0 · Oct 13, 2026

Rewind. GBAdhoc 4.0.0 lets you hold a button and run a Game Boy Advance game backwards, then carry on from that moment. It also adds per-game cheats, save and save-state sharing between two PSPs, turbo buttons, and faster link play.

Download GBAdhoc-4.0.0.zip and unzip it to the root of your Memory Stick. Upgrading: copy EBOOT.PBP, gbadhoc_me.prx and gbadhoc_home.prx over your install, always all three together. Your ROMs, saves, save states and settings are kept. For link play, update both PSPs.

New: Rewind

  • Hold △ to rewind, let go to play. The picture and the sound run backwards. A ring shows how far back you are and how much history is left.
  • Your saves are permanent. Rewinding past an in-game save never undoes it, and the rewind will not set you down in the middle of a save.
  • Sleep-safe. Slide the POWER switch mid-rewind and the PSP wakes to the picture you were looking at.
  • Settings → Rewind turns it on (off by default, from the next game you start). Rewind length: Short (1 MB), Medium (2 MB, default) or Long (4 MB). Medium is about 40 seconds of Pokémon Emerald and a few seconds of a busy 3D racer. Long is meant for the PSP-2000, 3000 and Go; on a PSP-1000 use Short or Medium.
  • GBA games only. Off during link play. △ no longer cycles the video preset by default.

New: Cheats

  • One text file per game in GBAdhoc/cheats/, named like the ROM with .cht. RetroArch .cht files are read as they are; cheats/README.txt is a worked example.
  • Switch codes on and off from Cheats in the in-game menu, or RIGHT on a game in the list.
  • GBA: CodeBreaker codes and plain ADDRESS:VALUE writes. GB/GBC: GameShark codes.
  • We kept this first version small on purpose. A cheat can only write to the game's working memory, so a bad code cannot damage a ROM or a save file. GameShark and Action Replay codes for GBA are listed but cannot be switched on yet. An expanded cheat engine will follow in a later update.

New: Share game data

  • Settings → Share game data on one PSP, join from the other. Send or fetch save files and save states for the games you both have, with the other PSP's slots, pictures and times in front of you.
  • Every transfer is checked end to end. Replacing a save asks first and keeps the old one as .sav.bak.
  • Saves and states only. ROMs are never sent.

New: Turbo buttons

  • Settings → Controls → Turbo buttons: four turbo actions (two for A, two for B), each with its own button, speed (10, 15 or 30 a second) and Hold or Toggle mode. Nothing is bound by default. Off during link play.

Faster link play

  • GBA Link Cable sessions cost much less. On a PSP-3000 + PSP-1000 pair: Advance Wars 2 at 58.6–59.0 fps, Mario Kart: Super Circuit at 58.4, and Super Street Fighter II Turbo Revival up from about 39 fps to 47.
  • Wireless → Fast link (off by default; the host decides) helps games that still run below full speed: Street Fighter II Turbo Revival reaches about 50.
  • Street Fighter Alpha 3 and Sonic Battle link at full speed between two real consoles.
  • A finished trade is written to the Memory Stick straight away.

Fixes

  • Music is right again in Golden Sun: The Lost Age, Castlevania: Harmony of Dissonance and Iridion II (wrong since 3.0.0).
  • A save always reaches the Memory Stick while you play, even when a game runs below full speed.
  • Saving after a sleep cannot leave an empty file, and a save is no longer dropped on exit after a failed write.
  • Driver 2 Advance runs at full speed. Need for Speed Underground 2 no longer flickers.
  • PSP-1000: the second-processor renderer needs about 280 KB less system memory.
  • Sleeping again on the wake screen no longer drops to the XMB. Game clocks keep better time across sleeps.
  • The thumbstick can be a second d-pad or bound per direction. The battery level is in the menu header.

Good to know

  • With Rewind on, a GBA game gives up a little memory to the history. On a PSP-1000 that comes out of the part of a large cartridge kept in memory (about 0.7 MB at Medium, 2.7 MB at Long) and stays reserved during a link session.
  • Rewind runs backwards at normal speed in demanding games and faster in light ones.
  • Rewind, cheats and turbo do nothing during link play.
  • Save states shared between two PSPs need the same GBAdhoc version on both.

Full details are in the README.

Checksums (SHA-256)

6894cc2949833d5ae4ac3210814143f3eaf77e2ec33ac24d9b3c31e65f656410 GBAdhoc-4.0.0.zip
0f79d26865f33a19cb2a012758911cfe787e34db3fe54a35772afc2581a9d495 EBOOT.PBP
4f4989149f29c984cc6275d5f92993b4f886dc1639275e09ee72ddaa52d54eb6 gbadhoc_me.prx
4cd1b5fcd666ba159686604ac0a3ca86f9fbbf5509f18bdc0b3a64c3298631c9 gbadhoc_home.prx

v3.5.0 · Oct 4, 2026

Two PSPs, one game. GBAdhoc 3.5.0 links two PSPs the way a cable links two Game Boys, for Game Boy Advance games as well as Game Boy and Game Boy Color. Race a friend in Mario Kart: Super Circuit, fight them in Advance Wars 2, trade Pokémon across generations. For one player there's a new in-game menu over your paused game, save states you can see, every button remappable, sharper pixels, and a quit to the game list that takes about a second.

▶ Watch the trailer

Download GBAdhoc-3.5.0.zip and unzip it to the root of your Memory Stick. Upgrading: copy EBOOT.PBP, gbadhoc_me.prx and gbadhoc_home.prx over your install, always all three together. Your CONFIG.INI, ROMs, saves and save states carry over.

New: GBA link cable, over the air

A real link cable answers in microseconds and PSP WiFi in milliseconds, so GBAdhoc doesn't send the cable over the air. Each PSP runs both players' games, joined by a perfect cable in memory, and only which buttons each player pressed crosses the air. Both PSPs get the same buttons in the same order, so they compute exactly the same race, battle or trade. No game needs special code: if it links by cable, it can link this way.

  • How to play: in a GBA game, menu → Wireless → Host on one PSP; it keeps playing while it waits. On the other, Wireless → Join: scan for rooms and pick the room. Both games carry on from where they are.
  • Safe by design: every four seconds the two PSPs compare a fingerprint of both games. If they ever disagree, the link ends and nothing is saved. If the other PSP leaves, your game carries on.
  • Full speed on real hardware: Advance Wars 2 at 58.5–59.8 fps and a Mario Kart: Super Circuit race at 58.4–59.0 fps on a PSP-3000 + PSP-1000 pair.
  • Games that link both ways (FireRed, LeafGreen, Emerald) ask whether to use the cable or the Wireless Adapter; Settings → Link mode sets it per game.
  • What you need: the same ROM and the same GBAdhoc release on both PSPs, on the same fixed ad-hoc channel (1, 6 or 11). Two players.

New: Game Boy / Game Boy Color link cable

Trades and battles in Red, Blue, Yellow, Gold, Silver and Crystal. Only one PSP needs the cartridge: it is sent over for the session, kept in memory and never written to the other Memory Stick.

New: a menu over your game

  • The in-game menu opens over your paused game: Resume · Save states · Wireless · Settings · Quit to game list · Exit.
  • Save states you can see: five slots, each with a full-size picture and the time you saved. ✕ loads, □ saves (asking before it overwrites), △ deletes.
  • Quit to game list in about a second, with no relaunch, and your battery save written first.
  • Remap every button and every shortcut in Settings → Controls. The menu can be on START+SELECT (default) or HOME.
  • Settings over the game's art, a loading screen with the game's art, per-console display settings, integer 2x, sharp bilinear, Ambient bars, and more accurate GBC colours.
  • Fast-forward reworked: Unlimited draws 30 frames a second and Unlimited Smooth 60, so more of the PSP goes to the game.

Faster, and steadier

  • Dynarec optimisations and a pinned instruction-cache layout make GBA games faster across the board. Every change was checked frame for frame against the previous version on a library of 35 games.
  • Rare crashes on the PSP-2000, 3000 and Go are fixed. The cause was the PSP firmware itself: asking it to clear 16 KB or more of the instruction cache silently does nothing. GBAdhoc works around it everywhere.
  • Audio no longer drifts out of sync after a few minutes. Media Engine sprite ghosting and mid-frame effects are fixed. CONFIG.INI is written once and atomically.

Good to know

  • Sleep waits for a reload to finish: while a game boots, a link session starts or ends, or Quit to game list unloads, the POWER switch is held for a second or two, then the PSP sleeps.
  • Mario Golf: Advance Tour's cable link doesn't form, so it's offered the Wireless Adapter instead. Two-cartridge pairs (Ruby with Sapphire) can't link by cable.
  • On a PSP-1000, link support keeps about 2 MB less of a cartridge in memory in single player, so a very large cartridge may page from the Memory Stick a little more.
  • Seen once during testing, on a PSP-1000 in the first session after upgrading: a Game Boy game quit to the XMB instead of the game list, and the console restarted when woken right after loading a GB save state. Neither has happened again since. If you see either, please open an issue with your PSP model and what you'd just done.

Full details are in the README.

Checksums (SHA-256)

d6457c64b856ba5905ca4b58de0a5566f0b82ac20b4da931fa3c7feece5448cd GBAdhoc-3.5.0.zip
7376a90fdc56f8a29bb229d83b7ce1ae30c0b4de2fec261f56a15a2de91f617b EBOOT.PBP
ee40522346acc9c5f53351e63f49de8ce0069ec75c54d5e40518244bb83e92ef gbadhoc_me.prx
4cd1b5fcd666ba159686604ac0a3ca86f9fbbf5509f18bdc0b3a64c3298631c9 gbadhoc_home.prx

v3.0.0 · Sep 27, 2026

Game Boy and Game Boy Color join the library, the browser grows up, and wireless link battles stay quick from the first turn to the last.

Download GBAdhoc-3.0.0.zip and unzip it to the root of your Memory Stick. Upgrading: copy EBOOT.PBP and gbadhoc_me.prx over your install (both together), then delete your old CONFIG.INI.

New

  • Game Boy and Game Boy Color on TGB Dual (from MasterBoy): full speed with sound on every PSP model, with the same browser, save states, fast-forward and sleep as GBA. Real-time clock for Gold/Silver/Crystal, and a GB palette setting.
  • Console switch: △ cycles GBA → GB → GBC, each with its own list and colour.
  • Favourites: □ stars a game, SELECT shows your stars (roms/favourites.txt).
  • Five save-state slots with thumbnails, and a state shelf in the browser (LEFT).
  • Wireless that stays quick: link shedding stops lag building up over a battle, and link hold rides out bursts of lost radio instead of dropping the link. Put both PSPs on the same fixed Ad Hoc channel (1, 6 or 11), away from your router.
  • Under the hood: startup-sized JIT caches; full ROM residency on PSP-2000/3000/Go (rom_resident = 0 turns it off); in-game saves during Unlimited fast-forward are written on time; dynarec fixes; the Media Engine sprite flash fixed at normal speed; PSP-1000 ROM loading fixed.
  • A new logo.

Full details, demos and screenshots are in the README.

Checksums (SHA-256)

96258b9540a1af7e9675ac4e6d4202d78fa28d2ee2a918ee88574274576a6876 GBAdhoc-3.0.0.zip
db8f61aa6d087dc310cf81604b453638e29c295a539bed63091239dfe5ffd946 EBOOT.PBP
1e2d4d7f8bd256d37cc56d350d84588618214b052ef0f0c1f40f32bf27e4947c gbadhoc_me.prx

v2.1.0 · Sep 19, 2026

Extract the zip to the root of your memory stick. It puts everything at ms0:/PSP/GAME/GBAdhoc.

Upgrading from any earlier version: copy EBOOT.PBP and gbadhoc_me.prx over your install, then delete your old CONFIG.INI — several defaults changed and a stale file keeps the old ones. Your roms/, saves and save states are untouched.

Music stopped being expensive

Pokémon games build their sound mixer at runtime and then keep rewriting its instructions as they play, and every rewrite makes the emulator throw away compiled code. It already knew how to handle that cheaply, but it only recognised one game's mixer by sight — Heart & Soul's sits a few bytes further along, failed the check, and took the expensive path every single time.

It now recognises the whole family:

| | |
|---|---|
| Heart & Soul, heavy music, PSP-1000 | 57.00 → 59.79 fps, 37.5% less work per frame |
| same, PSP-3000 | 56.70 → 59.81 fps, 37.6% |
| Pokémon Unbound | unchanged at 59.96 — it was already passing the check |

Frame output is identical: 3330 frames compared, none differing.

A freeze is closed

A compiled block could contain a direct jump to an address that was never resolved — a jump into unmapped memory, which locked the console up hard instead of recovering. Those jumps now land on a known-good block. The emulator's notes about which addresses rewrite themselves are also wiped when a ROM loads, so one game's habits are no longer applied to the next.

36 unattended runs across two consoles, both test games, all three fast-forward presets, and 1440 save-state reloads with fast-forward toggling throughout: no failures, no lockups. The original freeze was rare and was never reproduced on demand, so this closes the mechanism that was demonstrated rather than proving the symptom gone for good.

For the best frame rate

  • Pokémon Unbound — use its medium music preset.
  • Heart & Soul — set sound to mono.

Known issue

In Heart & Soul there is a slight visual artifact on some attacks. It is not present on the game's classic soundtrack. Testing has been extensive, but there may still be a bug here and there — this one is a work in progress.

Mystery Gift

Gen 3 Mystery Gift works, from an Android phone standing in for the old distribution station: start a 2.4 GHz hotspot named exactly Mystery Gift with no password, run the app, then press SELECT + DOWN in game. The app is Mystery Gift Station.

v2.0.3 · Sep 12, 2026

A stability release. One fix, and it undoes a piece of 2.0.2.

Download GBAdhoc-2.0.3.zip — or copy EBOOT.PBP and gbadhoc_me.prx over your 2.0.x install and keep everything else.

What's fixed

Pokémon Heart & Soul no longer switches the PSP off. Two ways in: any Growl in a battle, and sometimes the fade at the end of a battle with no Growl involved. The screen froze, the sound turned to noise, the Pokémon on screen went the wrong colours, and then the console powered off.

What was actually going wrong

The emulator translates the game's code into PSP code once and keeps the result, because translating is the expensive part. Pokémon's music engine rewrites its own instructions thousands of times a second, so those saved translations keep going out of date.

2.0.2 handles that with eight gates — markers telling the translator to break a block wherever the game rewrites itself, so each rebuild is small instead of enormous. That is where Heart & Soul's speed came from, and it is staying.

The mistake was letting gates move. When all eight were in use, 2.0.2 would take the quietest one and reassign it elsewhere. But code translated earlier was built around where the gates were at that moment, and it stays in memory. Move a gate and the older code and the gate table no longer agree — so the emulator can run a translation that no longer matches what the game actually says. It then executes nonsense: noise instead of music, wrong colours instead of graphics, and finally a jump into nothing, which is the console switching off.

Gates are permanent again, as they were in 2.0.1. Once placed, one is never moved, so code translated at any point can never disagree with the table.

What it costs

On a PSP Go, in the heaviest battle in the game:

| | 2.0.2 | 2.0.3 |
|---|---|---|
| Rival battle, music on | ~60, then crash | ~50 |
| Rival battle, music off | — | locked 60 |
| Everywhere else | 60 | 60 |

More is coming

This release is deliberately narrow. It changes one rule and nothing else, because the priority was to stop people losing progress to a crash. The ~10 fps is a known gap with a known cause, and closing it without giving up the stability is the next piece of work, not the end of it.

Nothing else changed — everything fixed in 2.0.2 is still in: the Heart & Soul boot fix, sleep on every model, the PSP-1000 waking in big games, and the real date.

Thank you to everyone who reported this. A crash that only happens when a specific move is used is a hard thing to describe, and the reports were good enough to reproduce it on the first try.

Hero art for the browser: GBAdhoc HeroForge.

v2.0.2 · Sep 11, 2026

Five fixes, all from bug reports. Thank you to everyone who took the time to write one.

Download GBAdhoc-2.0.2.zip — or copy EBOOT.PBP and gbadhoc_me.prx over your 2.0.x install and keep everything else.

What's fixed

Pokémon Heart & Soul boots. It went to a white screen and then a black one with spots. The speed-up behind Unbound's frame rate could miss part of a block copy and keep running old code. Copies now take the safe path.

Music no longer drags the frame rate down. Heart & Soul dropped as low as 37 fps whenever the music changed. It's a locked 60 on a PSP-1000 now, and Unbound holds 59–60 with music playing.

Sleep works on every model. A PSP-3000 could fail to wake, and a PSP-1000 or Go could power off shortly after pressing Continue. Sleep now waits for the current frame to finish before releasing the second processor's memory.

A PSP-1000 no longer crashes after waking in big games. It reads large games from the memory stick as you play, and that file didn't survive sleep. It's reopened automatically now.

The clock shows the real date. Pokémon games showed 1 January 2070. The clock now comes from your PSP's own date and time, and save states made under the old clock come back to today when you load them.

> An in-game save made under the old clock remembers 2070, so the game sees time run backwards, and daily things like berry growth may stay paused on that save. Day and night are right for everyone, and new saves work normally.

Sleep no longer writes to your memory stick. 2.0 and 2.0.1 added a line to log/standby.log every time the PSP slept.

Hero art for the browser: GBAdhoc HeroForge.

v2.0.1 · Sep 9, 2026

Fixes the game list. If 2.0 was only showing you some of your library, this is why.

Download GBAdhoc-2.0.1.zip — or just copy EBOOT.PBP and gbadhoc_me.prx over your 2.0 install and keep everything else. Nothing else changed.

What was wrong

2.0 stopped scanning at 64 ROMs, and it stopped before sorting them — so the 64 you saw were whichever ones landed on the memory stick first, not the first 64 alphabetically. That reads as random rather than as a limit, which is the worst way for it to fail: it looks like the emulator is broken rather than full.

Two smaller things could also hide a game: filenames of 96 characters or more were silently skipped, and subfolders under roms/ weren't scanned at all.

What 2.0.1 does

  • Lists 1024 games, with names packed into a shared pool instead of fixed-width slots.
  • Walks subfolders under roms/, two levels deep. Sorted by filename, so a library organised into folders still reads as one alphabetical list.
  • No practical filename length limit.
  • If your library is still bigger than it can show, it now says "Showing 1024 of N games" on screen instead of leaving you to figure it out. If you see that message, please open an issue — I'd like to know how big real libraries get.
  • Faster boot on a large library: the browser no longer stats every ROM up front to check for a save file, which was costing about two seconds and computing something only the visible entries ever used.
  • The browser reopens on the game you last played again, which quietly stopped working for anyone whose filenames were longer than 63 characters.

Thanks to the person who reported this the day after release.

Hero art for the browser is separate: GBAdhoc HeroForge.

v2.0 · Sep 9, 2026

GBA emulation on the PSP with the renderer on the second CPU, and GBA Wireless Adapter multiplayer carried over the PSP's own ad-hoc WiFi.

Download GBAdhoc-2.0.zip — unzip to the root of your memory stick. It creates PSP/GAME/GBAdhoc/. Put your ROMs in PSP/GAME/GBAdhoc/roms/ and a gba_bios.bin next to the EBOOT if you have one.

Tested on PSP-1000, PSP-3000 and PSP Go.

What's new

Sleep and wake. Close the lid and the emulator parks the Media Engine, keeps the frame you were on, and comes back to a Continue / Quit prompt drawn over it.

Link sessions no longer degrade. Three bugs, all measured on hardware:

  • The PSP-1000 reported "WLAN switch is OFF" with the switch on — an error code collision.
  • The send queue ratcheted until the input gate nulled every button. Frames stuck at rfu_rxgate 596/600 now sit at 0/600.
  • The retransmit floor was 18x too large. Round-trip estimate 49 ms → 10 ms; retransmit age 231 ms → 52 ms.

Faster and quieter. Telemetry compiles out of the release build. Same-frame presentation no longer fights uncapped fast-forward. The network arena takes exactly 1 MiB so ROM loading still works on a PSP-1000's tiny heap.

Hero art for the game browser now lives in its own repo: GBAdhoc-heroart. 27 cards, plus the prompt and scripts to make your own.

v1.0.4 · Aug 14, 2026

Pokémon Unbound — very near full speed

Around 50 fps, with no frameskip and completely uncompromised audio.

Large CFRU-based ROM hacks have never run well on PSP. Unbound sat in the low
20s in battle — not a game you could actually play. It now runs very near full
speed, drawing every single frame, with completely uncompromised audio.
No frames skipped to inflate a counter, no sample rate cut, no channels
disabled.

What was actually wrong

One 372-byte routine.

CFRU rewrites its own code while running — a legitimate speed trick that works
on real hardware — which forced the emulator to throw away and rebuild its
translated code about 1,450 times a second. Profiling the frame directly
showed dynarec recompilation eating 58% of every frame, while the emulation
it was supposed to be doing sat idle behind it.

The fix splits translation at exactly the addresses a game patches, so each
rebuild is a small fragment instead of an entire routine.

Recompilation: 58% of the frame → ~5%.

The mechanism this uses has existed in gpSP for years. Nothing had ever added
an entry to it.

Nothing else changed

Games that don't rewrite their own code never trigger any of this. Pokémon
Emerald was verified frame-hash and audio-hash identical to the previous
build — not "looks fine", byte-for-byte the same output.

Also in this release: frameskip_sparse (draw N frames, skip 1) for
Compatibility Mode, where rendering runs on the main CPU. Off by default —
with the Media Engine rendering, frameskip saves only ~15% of a frame.

Install

  1. Copy the GBADHOC folder to ms0:/PSP/GAME/ on your CFW PSP
  2. Put your .gba ROMs in GBADHOC/roms/
  3. Launch from the XMB. Wireless: Start+Select → Wireless

Requires custom firmware. Tested on PSP-1000 and PSP-3000.

*Performance figures measured on a PSP-3000 at 333 MHz; your mileage will vary
with model, firmware and clock.*

v1.0.3 · Aug 14, 2026

Smooth fast-forward

Fast-forward now offers a smooth variant at every speed. The Settings row
cycles 1.5x / 3x / uncapped, and the same three again as smooth.

Ordinary fast-forward skips frames to buy speed — which is why it looks like a
slideshow on every handheld emulator. Smooth mode draws every frame instead:
a lower top speed, but fast motion rather than a strobe. It is affordable here
specifically because the Media Engine renders on the PSP's second core.

Also in this release

  • FPS counter reports frames actually drawn alongside the emulated rate — e.g. 59.7 fps (60) — so fast-forward can never flatter itself.
  • Fixed: the Media Engine "renderer is late" watchdog counted fast-forward against the ME and could tear it down mid-FF. Outrunning the ME during fast-forward is expected, not a fault; only normal-speed lateness trips it now.
  • New config.ini keys: ff_smooth, ff_audio (keep audio during FF, default off), bench_mode (developer instrumentation, default off).

Install

  1. Copy the GBADHOC folder to ms0:/PSP/GAME/ on your CFW PSP
  2. Put your .gba ROMs in GBADHOC/roms/
  3. Launch from the XMB. Wireless: Start+Select → Wireless

Requires custom firmware. Box art is optional — see the README for the
boxart/ folder convention.

v1.0.0 · Aug 11, 2026

No notes for this release.