GBS (Game Bean Station): a new GBA, GBC and GB emulator for the PS Vita, with local multiplayer and x8 fast-forward
Hey everyone!
I'd like to introduce GBS (Game Bean Station), an open-source Game Boy, Game Boy Color and Game Boy Advance emulator for the PS Vita and PS TV, with local multiplayer and real fast-forward!
>Heads-up: the code of GBS was written by Claude, Anthropic's AI model. I directed it and tested it on my own consoles. It works, but it is larger and more complicated than it needs to be. I plan to refactor it by hand over time. Don't hold your breath, though: I haven't written C in almost ten years, so it will go at my own pace.
The GBA was the handheld of my childhood, and the existing emulators on the Vita (mGBA and RetroArch) are fine, but they lack some features I wanted. Seeing all the new Vita ports made with the help of AI lately, I thought I could use it too, to build a more complete app, closer to the GBA emulator of my dreams.
GBS is built around two emulation cores, and owes them everything: gpSP (fast, the default for GBA games) and mGBA (accurate, for Game Boy and Game Boy Color games and the few GBA games gpSP doesn't run well). A huge thank you to their authors for their immense and so important work. GBS only tries to fill in what is missing around these cores to make a complete Vita app.
Here are a few features:
- Fast-forward at x2, x4 or x8 (held or toggled), even in heavy ROM hacks, plus slow motion
- Local multiplayer: consoles meet in a lobby, directly (ad hoc, no router needed) or over Wi-Fi. GBA wireless adapter games (Pokémon Fire Red, Leaf Green and Emerald with the Union Room, trades and battles...), GBA link cable games (Pokémon Ruby and Sapphire, Pokémon ROM hacks...) and the Game Boy / Game Boy Color link cable
- A library made for the Vita: four views, covers (downloaded, or your own for ROM hacks), search, filters, sorting, and regional versions grouped into one game
- Save states: 12 slots plus an automatic and a quick one, each with a preview
- Cheat codes: typed, imported, or downloaded from RetroArch's database for the exact version of your game
- Profiles: up to 8, each with its own saves, save states, settings and controls, and an optional code
- Controls: everything can be remapped, per game if you want, with turbo buttons and the rear touchpad
- Colors for Game Boy games: the ones a Game Boy Color gives them, or classic palettes (gray, green, pocket, light), and Super Game Boy borders
- Self-updates: GBS tells you when a new version is out and installs it in a few seconds, keeping your saves and settings. Every update is signed, and it's off by default
- Themes: light, dark, or the PSP's waves, with the accent color of your choice
- 15 languages, including Japanese, Chinese, Korean, Hindi and Arabic
- Works fully offline: every internet feature (covers, cheat codes, updates) has its own switch
More details on the GBS repository.
Download the VPK from the releases page and install it with VitaShell. VitaShell warns that GBS asks for extended permissions: GBS needs them to install its own updates.
If you find a problem or have an idea, feel free to open an issue or a merge request.
73 points · 10 comments
[Release] gpSP 3D (beta): GBA games with real per-layer stereoscopic 3D, full speed tested on Old 3DS
Update, Oct 26: Icon Maker is out, with its own post: make HOME Menu icons for your GBA and SNES games right on the 3DS. GBA icons open in gpSP 3D, SNES icons in Snes9x 3D. Get it from the v0.1.3 release.
v0.1.3 (Oct 26): Icon Maker, plus Mario Golf: Advance Tour much smoother on Old 3DS (close to full speed, some dips on the swing) and the Super Mario Galaxy GBA port from about 55% to 76% speed. Release notes
v0.1.2: closing the lid no longer freezes the game, faster menus, Sharp scaling fixed at Fit, OpenLara black screen fixed, 800px wide mode in 2D. Release notes
v0.1.1: New 3DS crash at launch fixed, screen effects (scanlines, LCD grid), Floor tilt for racing games, gyro for WarioWare: Twisted. Release notes
Discord for testing, game reports and help: discord.gg · Roadmap: ROADMAP.md · Tips: ko-fi.com
---
I've been building gpSP 3D, a standalone GBA emulator for the 3DS (based on gpSP) that puts each GBA background layer and sprite group at its own depth. Raise the 3D slider and maps, characters, HUDs and backgrounds actually separate. It runs at a full 60 fps on an Old 3DS: the dynarec runs on one CPU core and picture drawing runs on the second.
Download (CIA + 3DSX): github.com/bheppe/gpsp-3d/releases
Features
- Per-layer 3D with presets (Classic, Pop-out, Deep, Gentle, Flat map), or a custom depth for each layer, plus strength, sprite pop and focus
- Smart layers: layers that scroll together stay at one depth, so RPG maps like Pokémon look right (no glitched filler tiles)
- Per-game 3D profiles (Pokémon starts on Deep automatically)
- GPU display with Sharp / Crisp / Smooth scaling, color styles, saturation and brightness
- Save states with slots, auto frame skip, and a touch menu on the bottom screen with a live preview
- Saves are shared with RetroArch, so you can switch between the two
- HOME Menu icons for your games with Icon Maker, right on the 3DS
Honest limits (it's a beta)
- In 3D, the picture refreshes about 30 times a second on Old 3DS, while gameplay and audio stay at 60. New 3DS should do better (I'd love reports).
- Needs Luma3DS, and dspfirm.cdc for sound. No GBA BIOS needed.
Looking for testers and contributors
- Tell me which games look great and which look wrong in 3D. Layer setups vary a lot between games, and per-game reports are the most useful thing right now. Post them under Issues with the game name and a photo if you can.
- The code is GPL and on GitHub. Pull requests are welcome, especially for speeding up 3D drawing on Old 3DS.
Built on gpSP by Exophase, notaz, davidgfnet and the libretro team. Bring your own legally dumped games; please don't ask for ROMs.
---
About AI use
1. My involvement. I started gpSP 3D, a standalone 3DS app built on the libretro version of gpSP, to get per-layer stereoscopic 3D in GBA games at full speed on an Old 3DS. I came up with the idea and the goals: Old 3DS as the standard, plug-and-play 3D, and a touch menu on the bottom screen. I also did all of the testing on my Old 3DS: Mario Kart Super Circuit, Pokémon Emerald, LEGO Star Wars II and Sword of Mana so far. I reported every problem I found and picked between the fixes that were offered, for example the GPU display freezing, the HOME button hang, washed-out color correction, stutter in LEGO Star Wars, a crash when loading Emerald, and pink lines on Pokémon maps in 3D (which led to the "Smart layers" feature). I also chose the defaults, like Deep for Pokémon. I haven't tested it on a New 3DS.
2. My experience as a coder. I'm not a professional programmer. I'm a project manager by day and a hobbyist who tinkers with homebrew and retro hardware. I can follow the code and build it with devkitPro, but I couldn't have written this on my own.
3. How AI was involved. Most of the new code was written by Claude (Anthropic's AI, through Claude Code): the 3DS app and its menu, the GPU display, the threaded renderer that draws on the 3DS's second CPU core, and the per-layer 3D. I described what I wanted, tested every build on my 3DS, sent back photos of what was wrong along with the on-screen performance stats, and decided which way to go. When an approach didn't pay off on real hardware (an "experimental" 3D method that measured slower on the 3DS than the normal one), we kept the normal method as the default. The emulator itself (CPU, dynarec, sound, the original renderer) is gpSP's existing work by Exophase, notaz, davidgfnet and the libretro team, not AI-generated. The repo keeps the full upstream gpSP history, and everything new is in a few commits on top of it, so the diff is easy to review.
Source and download: github.com/bheppe/gpsp-3d/releases · GPL-licensed. No ROMs are included.
240 points · 120 comments
Mentions
GBS (Game Bean Station): a new GBA, GBC and GB emulator for the PS Vita, with local multiplayer and x8 fast-forward Hey everyone! I'd like to introduce GBS (Game Bean Station), an open-source Game Boy, Game Boy Color and Game Boy Advance emulator for the PS Vita and PS TV, with local multiplayer and real fast-forward! >Heads-up: the code of GBS was written by Claude, Anthropic's AI model. I directed it and tested it on my own consoles. It works, but it is larger and more complicated than it needs to be. I plan to refactor it by hand over time. Don't hold your breath, though: I haven't written C in almost ten years, so it will go at my own pace. The GBA was the handheld of my childhood, and the existing emulators on the Vita (mGBA and RetroArch) are fine, but they lack some features I wanted. Seeing all the new Vita ports made with the help of AI lately, I thought I could use it too, to build a more complete app, closer to the GBA emulator of my dreams. GBS is built around two emulation cores, and owes them everything: gpSP (fast, the default for GBA games) and mGBA (accurate, for Game Boy and Game Boy Color games and the few GBA games gpSP doesn't run well). A huge thank you to their authors for their immense and so important work. GBS only tries to fill in what is missing around these cores to make a complete Vita app. Here are a few features: - Fast-forward at x2, x4 or x8 (held or toggled), even in heavy ROM hacks, plus slow motion - Local multiplayer: consoles meet in a lobby, directly (ad hoc, no router needed) or over Wi-Fi. GBA wireless adapter games (Pokémon Fire Red, Leaf Green and Emerald with the Union Room, trades and battles...), GBA link cable games (Pokémon Ruby and Sapphire, Pokémon ROM hacks...) and the Game Boy / Game Boy Color link cable - A library made for the Vita: four views, covers (downloaded, or your own for ROM hacks), search, filters, sorting, and regional versions grouped into one game - Save states: 12 slots plus an automatic and a quick one, each with a preview - Cheat codes: typed, imported, or downloaded from RetroArch's database for the exact version of your game - Profiles: up to 8, each with its own saves, save states, settings and controls, and an optional code - Controls: everything can be remapped, per game if you want, with turbo buttons and the rear touchpad - Colors for Game Boy games: the ones a Game Boy Color gives them, or classic palettes (gray, green, pocket, light), and Super Game Boy borders - Self-updates: GBS tells you when a new version is out and installs it in a few seconds, keeping your saves and settings. Every update is signed, and it's off by default - Themes: light, dark, or the PSP's waves, with the accent color of your choice - 15 languages, including Japanese, Chinese, Korean, Hindi and Arabic - Works fully offline: every internet feature (covers, cheat codes, updates) has its own switch More details on the GBS repository. Download the VPK from the releases page and install it with VitaShell. VitaShell warns that GBS asks for extended permissions: GBS needs them to install its own updates. If you find a problem or have an idea, feel free to open an issue or a merge request.
[Release] gpSP 3D (beta): GBA games with real per-layer stereoscopic 3D, full speed tested on Old 3DS Update, Oct 26: Icon Maker is out, with its own post: make HOME Menu icons for your GBA and SNES games right on the 3DS. GBA icons open in gpSP 3D, SNES icons in Snes9x 3D. Get it from the v0.1.3 release. v0.1.3 (Oct 26): Icon Maker, plus Mario Golf: Advance Tour much smoother on Old 3DS (close to full speed, some dips on the swing) and the Super Mario Galaxy GBA port from about 55% to 76% speed. Release notes v0.1.2: closing the lid no longer freezes the game, faster menus, Sharp scaling fixed at Fit, OpenLara black screen fixed, 800px wide mode in 2D. Release notes v0.1.1: New 3DS crash at launch fixed, screen effects (scanlines, LCD grid), Floor tilt for racing games, gyro for WarioWare: Twisted. Release notes Discord for testing, game reports and help: discord.gg · Roadmap: ROADMAP.md · Tips: ko-fi.com --- I've been building gpSP 3D, a standalone GBA emulator for the 3DS (based on gpSP) that puts each GBA background layer and sprite group at its own depth. Raise the 3D slider and maps, characters, HUDs and backgrounds actually separate. It runs at a full 60 fps on an Old 3DS: the dynarec runs on one CPU core and picture drawing runs on the second. Download (CIA + 3DSX): github.com/bheppe/gpsp-3d/releases Features - Per-layer 3D with presets (Classic, Pop-out, Deep, Gentle, Flat map), or a custom depth for each layer, plus strength, sprite pop and focus - Smart layers: layers that scroll together stay at one depth, so RPG maps like Pokémon look right (no glitched filler tiles) - Per-game 3D profiles (Pokémon starts on Deep automatically) - GPU display with Sharp / Crisp / Smooth scaling, color styles, saturation and brightness - Save states with slots, auto frame skip, and a touch menu on the bottom screen with a live preview - Saves are shared with RetroArch, so you can switch between the two - HOME Menu icons for your games with Icon Maker, right on the 3DS Honest limits (it's a beta) - In 3D, the picture refreshes about 30 times a second on Old 3DS, while gameplay and audio stay at 60. New 3DS should do better (I'd love reports). - Needs Luma3DS, and dspfirm.cdc for sound. No GBA BIOS needed. Looking for testers and contributors - Tell me which games look great and which look wrong in 3D. Layer setups vary a lot between games, and per-game reports are the most useful thing right now. Post them under Issues with the game name and a photo if you can. - The code is GPL and on GitHub. Pull requests are welcome, especially for speeding up 3D drawing on Old 3DS. Built on gpSP by Exophase, notaz, davidgfnet and the libretro team. Bring your own legally dumped games; please don't ask for ROMs. --- About AI use 1. My involvement. I started gpSP 3D, a standalone 3DS app built on the libretro version of gpSP, to get per-layer stereoscopic 3D in GBA games at full speed on an Old 3DS. I came up with the idea and the goals: Old 3DS as the standard, plug-and-play 3D, and a touch menu on the bottom screen. I also did all of the testing on my Old 3DS: Mario Kart Super Circuit, Pokémon Emerald, LEGO Star Wars II and Sword of Mana so far. I reported every problem I found and picked between the fixes that were offered, for example the GPU display freezing, the HOME button hang, washed-out color correction, stutter in LEGO Star Wars, a crash when loading Emerald, and pink lines on Pokémon maps in 3D (which led to the "Smart layers" feature). I also chose the defaults, like Deep for Pokémon. I haven't tested it on a New 3DS. 2. My experience as a coder. I'm not a professional programmer. I'm a project manager by day and a hobbyist who tinkers with homebrew and retro hardware. I can follow the code and build it with devkitPro, but I couldn't have written this on my own. 3. How AI was involved. Most of the new code was written by Claude (Anthropic's AI, through Claude Code): the 3DS app and its menu, the GPU display, the threaded renderer that draws on the 3DS's second CPU core, and the per-layer 3D. I described what I wanted, tested every build on my 3DS, sent back photos of what was wrong along with the on-screen performance stats, and decided which way to go. When an approach didn't pay off on real hardware (an "experimental" 3D method that measured slower on the 3DS than the normal one), we kept the normal method as the default. The emulator itself (CPU, dynarec, sound, the original renderer) is gpSP's existing work by Exophase, notaz, davidgfnet and the libretro team, not AI-generated. The repo keeps the full upstream gpSP history, and everything new is in a few commits on top of it, so the diff is easy to review. Source and download: github.com/bheppe/gpsp-3d/releases · GPL-licensed. No ROMs are included.