Skip to content

Virtual Virtual Boy - RetroBIOS

Type standalone
Classification Other
Source https://github.com/SupernaviX/vvb
Version 1.18.2
Profiled 2026-08-12
Cores virtual-virtual-boy, VIRTUAL-VIRTUAL-BOY, vvb, com.simongellis.vvb, com.simongellis.vvb.leia
Systems nintendo-virtualboy
Author Simon Gellis
Technical notes

Virtual Boy emulator for Android, published as com.simongellis.vvb (app/build.gradle:62,65-66) and reached by ES-DE through its VIRTUAL-VIRTUAL-BOY find rule, which hands the game over as an ACTION_VIEW intent on a content URI (MainActivity.kt:126-131, MainActivity.kt:40-45). The hardware sits in a Rust library packaged as libvvb.so and loaded when the application starts (VvbApplication.kt:69, Cargo.toml [lib]); the Kotlin side owns the menus, the input mapping and every file access. Display goes through mono, anaglyph, stereo, Google Cardboard and Leia CNSDK renderers, each carrying its GLSL as string constants in the Rust sources (src/video/renderers/mono.rs:10-26, src/video/renderers/stereo.rs:13-29).

The console has no boot ROM and the emulator loads none. The memory map declares Vram, Audio, Hardware, Dram, Sram and Rom, and load_game_pak takes the cartridge image and its SRAM, leaving the Rom region unpopulated until a game arrives (src/emulator/memory.rs:8-14, src/emulator/memory.rs:115, src/emulator/memory.rs:134-149).

Games are read from .vb, .vboy and .bin, or from the first member of a zip answering the same test (GamePakLoader.kt:20-27, GamePakLoader.kt:97-98). The image has to be a power of two and at most 0x01000000 bytes, either test aborting the load (GamePakLoader.kt:39-45, GamePakLoader.kt:57), and the core applies the same two limits again when the image reaches it (src/emulator/memory.rs:136-141). The MD5 of the image names the directory that holds the save data, where the app writes .srm and save_states/.sav as it runs (GamePakLoader.kt:30-32, GamePak.kt:8-9,30, src/emulator/state.rs:30-38). Cardboard lens parameters come from scanning the viewer QR code and are kept by the SDK, the app asking for them and starting a scan when none are saved (src/video/renderers/cardboard.rs:29-34).

One tree ships two flavours: playStore, and leia, which appends .leia to the application id and renders through the CNSDK (app/build.gradle:92-100). Both carry the same nine homebrew titles, stored uncompressed so they can be opened by descriptor (app/build.gradle:117).

12 files | 0 required, 12 optional | 12 in repo, 0 missing Categories: 12 game data

BLOX.vb optional in repo game_data bundled
Bundled homebrew game by KR155E

BLOX 2.vb optional in repo game_data bundled
Bundled homebrew game by KR155E

Elevated Speed.vb optional in repo game_data bundled
Bundled homebrew game by PizzaRollsRoyce

Fishbone.vb optional in repo game_data bundled
Bundled homebrew game by thunderstruck

Formula V Public Demo.vb optional in repo game_data bundled
Bundled homebrew game by KR155E

Red Square.vb optional in repo game_data bundled
Bundled homebrew game by Kresna and Nyrator

The Red Castle.vb optional in repo game_data bundled
Bundled homebrew game by Timothy Beck

VUE Snake.vb optional in repo game_data bundled
Bundled homebrew game by KR155E

VUEngine Platformer Demo.vb optional in repo game_data bundled
Bundled homebrew game by KR155E

bundledgames.json optional in repo game_data bundled
Index of the bundled homebrew titles

vbtitlescreen_left.png optional in repo game_data bundled
Left eye of the settings preview image

vbtitlescreen_right.png optional in repo game_data bundled
Right eye of the settings preview image

Generated on 2026-08-23T16:12:06Z