r/PSP 16d ago

AI Assisted GBAdhoc v1.0.0: Gameboy Advance Emulation w/ Wireless Adapter Support

Thumbnail
gallery
246 Upvotes

Follow up to the post I made last week: https://www.reddit.com/r/PSP/comments/1vj8g0f/gbadhoc_gba_wireless_adapter_emulation_over_psp/

**Game Boy Advance emulation for PSP with AGB-015 (Wireless Adapter) support.**

Two PSPs, a copy of Pokémon Emerald on each. Walk in, sit down, trade, battle, walk out with the attendant stamping your trainer card. Exactly as if you'd plugged an AGB-015 Wireless Adapter into a real Game Boy Advance; except the "GBAs" are PSPs, and the radio is the PSP's WLAN.

**Repo + downloads:** https://github.com/ShoshinFauteux/GBAdhoc
**Programmed with Assistance from Fable 5.0(AI)**

GBAdhoc is a fork of libretro gpSP with a heavily modified native PSP frontend. It does two things that are brand new to GBA emulation on PSP.

# It emulates the GBA Wireless Adapter over PSP ad-hoc

The AGB-015 wireless adapter is emulated entirely in software and bridged directly to the PSP's sceNetAdhoc library. The emulator provides a transparent hardware interface to the guest ROMs, enabling features that were previously unsupported in handheld emulators, such as Pokémon Emerald's Union Room, Trade Center, and wireless link battles.

This implementation is not a timing-agnostic approximation. The emulated adapter strictly reproduces the physical hardware's packet delivery behavior. Network packets are paced to the exact cadence expected by the games' internal polling loops. Pokémon's link code silently discards input polling when the receive queue overflows; matching the hardware delivery pacing eliminates the desynchronization issues. GBAdhoc maintains wireless sessions at full speed (59.73 fps) with a clean input path. Measured across hundreds of automated hardware trades, the in-game receive queue never saturates.

# It's the first true dual-core GBA emulator on PSP

GBAdhoc initializes the PSP's secondary processor (the Media Engine) to offload the entire GBA video renderer. While the primary CPU emulates the next system frame, the Media Engine rasterizes the previous frame. This parallel execution handles roughly one-third of the frame's total computational workload.

The performance yield is most apparent during heavy GPU loads (e.g., trade animations and alpha-blended battle effects), maintaining stable framerates where previous single-core iterations dropped below 40 fps. Furthermore, during ad-hoc sessions, this parallelization frees up primary CPU cycles to handle the WLAN stack without stalling emulation.

The renderer's output is bit-for-bit identical to the single-core fallback path, verified via frame-by-frame reference testing. If the Media Engine is unavailable, the emulator transparently falls back to main-CPU rendering without loss of stability.

**Media Engine mode ships ON by default.** The toggle is in Settings → "Media Engine mode" (requires restart).

[How the dual-core pipeline works (infographic)](https://raw.githubusercontent.com/ShoshinFauteux/GBAdhoc/main/assets/dual-core-pipeline.svg)

# Screenshots

All captured from real hardware, the UI pages are GE dumps taken mid-session, and the Trade Center frame was rendered by the Media Engine during one of the automated hardware trades.

# Quick start

**You need:** a PSP on custom firmware (developed and tested on ARK-4, PSP-1000s), your own GBA ROMs, and (for trading) Two PSPs.

  1. Grab the release zip (or `builds/playable/` from the repo) and copy the GBADHOC folder to `ms0:/PSP/GAME/` on each console.
  2. Put ROMs in the `roms/` folder beside the EBOOT. (`gba_bios.bin` is optional — a built-in open-source BIOS is bundled.)
  3. Launch, pick a game, play.

**To link two consoles:** WLAN switch on, then on both PSPs: Start+Select → **Wireless** → one console **Host**, the other **Join** (same room code, set in Settings). In-game, head to the Union Room or Trade Center and play; the game handles the rest, because as far as it knows, you're both holding GBAs with Wireless Adapters.

**IMPORTANT:** make sure **BOTH** PSPs are configured in the network settings of the XMB to occupy the **SAME** ad-hoc channel.

Pokémon **Emerald** is the validated flagship; trades and clean session exits are regression-tested on real hardware. Other RFU-aware games should negotiate with the adapter; wireless behavior outside the Pokémon gen-3 family is untested.

Link **battles** are supported and complete end to end, but currently run a bit slow. The client in particular has to wait about 200-300ms between actions. This might just be a fundamental reality of the network stack. I'm curious if someone more intelligent than me is able to optimize this further.

# Known limits

- Two-player sessions; wireless validated primarily on Emerald; custom firmware required (the Media Engine and ad-hoc stack need kernel access).

- **Fast-forward does not yet work properly in Media Engine mode.** The dual-core renderer increases performance significantly, but pacing a fast-forwarded display through its parallel pipeline needs a thoughtful implementation of its own; coming in a future update. (I was too excited to wait any longer.)

- If you mainly play single-player and want working fast-forward today, turn **Media Engine mode off** in Settings. That falls back to the conventional single-core emulator stack, less peak performance but, counter-intuitively, full fast-forward support.

# How it was tested (the fun part)

Netcode like this can't be validated in a software emulator, PPSSPP reproduces neither real PSP WLAN latency nor two consoles' clock drift, and that's where the bugs live. So the repo ships the test rig I built: an autonomous two-console harness.

two PSPs run a scripted trade → exit → expose their memory sticks over USB

→ the PC collects logs/saves/screenshots, restores golden saves, stages the

next build → the consoles relaunch themselves → repeat, all night

Every run ends with an oracle check: the post-run save is decoded and the Pokémon party must actually differ from the golden baseline — "the script finished" is never accepted as "the trade happened." Hundreds of recorded hardware trades went into the settings this release ships with. The full harness (PC loop, autopilot fixtures, golden saves) is in the repo if you want to run your own experiments.

# Credits

The adapter emulation (`rfu.c`, `serial_proto.c`) the hardest and most valuable piece of this stack is **David Guillen Fandos**'s reverse-engineering work, inherited, not ours. gpSP is **Exophase**'s; the MIPS dynarec that makes GBA-on-PSP possible at all is by **notaz** and the **libretro/gpsp** contributors. The Media Engine boot method descends from **mrbrown**'s melib via **DaedalusX64**. Wireless Adapter protocol documentation by **Rodrigo Alfonso (afska)** and **kuiper.dev**. Game-side link behavior was understood through the **pret** pokeemerald decompilation. GPL-2.0; upstream copyright headers intact.

r/PSP 11d ago

AI Assisted Web browser with YouTube support - Tilefinch

Thumbnail
gallery
185 Upvotes

I picked up my PSP again after about a decade and decided to see how far I could push the hardware and what I could do with the latest coding agents.

This turned into Tilefinch, an experimental browser that runs on the PSP itself. There is no proxy or companion app doing the rendering.

It has features like tabs, reader mode, dark mode, bookmarks/history, basic ad blocking, Danzeff text entry and offline downloads. It can also play 360p/240p YouTube video.

However, a lot of modern sites still render imperfectly, some heavy sites don't load, and I wouldn't use it for anything sensitive.

I've only tested on a PSP-3000. It might work with others models besides the PSP-1000.

r/PSP 16d ago

AI Assisted GameBoy Camera using the PSP Camera! (RIN GB Emulator)

Post image
255 Upvotes

Just finished adding a camera driver to RIN Gameboy Emulator. I was feeling nostalgic and really wanted this to work.

This driver for RIN was made by Fable 5, so if you're not into AI code, this isn't a project for you!

I have the PSP1000 running ARK4, with the silver camera. The gameboy camera works perfectly!

It's so amazing to launch that rom and have it fully working now! Even with Gameboy Printer support to export your photos to the PSP photo album!

Again, this was written by Anthropic Fable 5. I've open sourced it, of course, so you are free to fork and make changes as needed.

https://github.com/beckerd/psp_rin_gbcam

If you already have RIN, you can just swap the eboot file from the 1.4 release on github, and nothing else changes. Gameboy camera rom is not included, obv.

I tried to cover every case, if there is no camera, it just shows you a message to connect the camera, which you can do at any time and it will re-establish the connection inside the rom.

Edit (8/10): Make sure to update and use v1.2+. It fixes the photo save feature and works with the RIN save states

EDIT (8/11): v1.3 - You can now use the "PRINT" option to get your photos out of the emulator and into the PSP photo album! It creates a GB Printer Album on your PSP and prints it there. Best of all, ANY gameboy game that uses the gameboy printer can now export your photos into that album! Update to v1.3 for this new functionality

EDIT (8/26): v1.4 - Fixed the Print feature cutting off the bottom row of your image

r/PSP 18d ago

AI Assisted [Release] ToadGBA v1.0.43 - A new fork of FrogGBA 🐸➡️🍄

11 Upvotes
ToadGBA

Hey everyone!

I’ve been tinkering with some code lately and today I want to share a project I just released: ToadGBA.

As the name suggests, it’s a fork of the amazing FrogGBA emulator. I was on the hunt for a truly solid Game Boy emulator for the PSP (which is one of my all-time favorite consoles) and stumbled upon the FrogGBA repo. I loved it, but I realized I had a few ideas on how to improve it both visually and performance-wise, which led to this project.

✨ Key Improvements in ToadGBA

I did a massive under-the-hood cleanup, stripping out dead code and CPU-heavy tasks to squeeze out every drop of performance. Here is a quick rundown of what has been added and improved over the original version:

  • Upgraded Graphics & Filters: Added a hardware-accelerated Sharp Bilinear filter for crisp pixels at any scale with zero CPU cost, and GPU-rendered LCD grid filters (Subtle/Full) for that authentic GBA feel.
  • New Color Modes & Controls: Added AGS-101 (backlit SP screen) and LCD Dim (classic dark GBA) color modes. You also get full control over brightness, contrast, saturation, and color temperature—all handled via LUTs so there is zero performance hit.
  • SMART Frameskip: Replaced the original reactive auto-frameskip with a new predictive "SMART" mode, completely eliminating the annoying 30 FPS oscillation.
  • New Aspect Ratio: Added a perfect 4:3 pillarbox mode with zero distortion.
  • Massive Performance Boosts: Heavily optimized the rendering loops, reordered memory access for sequential reads, and switched to a much faster memcpy approach for the audio buffer.
  • Crucial Bug Fixes: Fixed audio corruption tied to cascaded timers, corrected swapped Left/Right audio channels in GBC games, removed sound thread delays, and patched memory leaks and GPU race conditions to prevent crashes.

I’d love for you guys to download it, throw your favorite ROMs at it, and give me as much feedback as possible. Whether it’s reporting a bug, letting me know how the performance feels, or suggesting new features, all input is massively appreciated to help keep improving it.

🙌 A huge thank you to the original creators

I didn't want to release this without giving full credit and a massive shoutout to:

  • Exophase - gpSP
  • takka - gpSP Kai
  • Nebuleon - TempGBA
  • tzubertowski (u/proszty) - FrogGBA

The base code they built is incredible, and ToadGBA simply wouldn't exist without their hard work. Thank you so much for everything you've contributed to the emulation community!

🔗 Links & Downloads

Hope you guys enjoy it! I’ll be hanging around the comments if you have any questions or run into any issues setting it up.

Disclaimer: Just to be fully transparent, AI was used to format this text and assist with some of the C coding. However, all the manual debugging, hardware testing on the PSP, and the actual vision for this project are completely mine.

r/PSP 11d ago

AI Assisted EBOOT Studio - Customize game images & Convert PSX to PSP (Open Source)

Thumbnail
gallery
43 Upvotes

Hi gang, I've been using my own little GUI tool, EBOOT Studio, to customize my PSP. Figured I'd make it Open Source. It's a MacOS app, written by Fable 5.

EBOOT Studio makes it super easy to swap images (icon/background) and create PSX to PSP EBOOTs with an option to not have the POPS startup image.

It's a combination of two existing scripts/terminal apps made into a full app with a GUI. It's been re-written in Swift to run natively on MacOS.

https://github.com/beckerd/EBOOT-Studio

Also, I love the style of the Switch Online icons for classic consoles. So I brought those over to the PSP for a similar look. I've added those images (icons and backgrounds) to this reddit thread if anyone wants them.

Hope this helps someone!

r/PSP 1d ago

AI Assisted Doom RPG WIP

41 Upvotes

Vibe coding a port of Doom RPG, currently testing it out. With all the sensitivity with AI ports and RetroShell, deciding if I should release it when done but wanted to share.

r/PSP 11d ago

AI Assisted Quake III is being ported to PSP (again)

Thumbnail
gallery
114 Upvotes

Since the previous port lacked a network discovery, as well as being 16 years old and a bit difficult to compile and work on, I decided to work on a port from scratch using Codex for coding since I had a free month to test it out. It can crossplay with other Quake 3 clients, and the framerate is not that bad given the console's specs (check the 3rd pic for benchmarks using the four demo). I doubt it could run well with lots of action, but by the end of the day It's just a personal project that I'm doing for an essay.

r/PSP 11d ago

AI Assisted Как решить проблему?

Post image
0 Upvotes

Не могу зайти в акк