Skip to content

VeMUlator emulates Sega Dreamcast VMU.

About this profile
Detail Value
Type libretro
Classification Official port
Source https://github.com/libretro/vemulator-libretro
Upstream closed-source Android app (removed from Google Play ~2020)
Version 0.1, stated in main.cpp
Revision libretro/vemulator-libretro@27a062f6ae53
Profiled 2026-03-25
Profile YAML, JSON
Cores vemulator
Systems Sega Dreamcast VMU
Platform details
  • hle_implementation:

    • source_ref: vmu.cpp:195-222
    • sfr_init: {'SP': '0x7F', 'PSW': '0x02', 'IE': '0x80', 'MCR': '0x08', 'P7': '0x02', 'OCR': '0xA3', 'BTCR': '0x41'}
    • ram_init: 0x31 = 0xFF (battery level), 0x6E = 0xFF, P3 = 0xFF (no buttons pressed), BCD date/time at 0x10-0x16, raw at 0x17-0x1D
    • note: HLE skips the BIOS boot sequence and jumps directly into the loaded game. System clock, date, and button state are initialized in RAM. The EXT register is set to 1 to signal HLE mode to the CPU (vmu.cpp:198-199). Games that depend on BIOS-initialized state beyond what HLE provides may not work correctly.
  • unused_bios_loader:

    • source_ref: vmu.cpp:82-137
    • max_file_size: 61444
    • rom_load_size: 61440
    • encryption: XOR 0x37 after stripping 4-byte header
    • detection: first byte 0x2A (JMPF) = unencrypted, otherwise encrypted
    • note: The loadBIOS() method is fully implemented but unreachable from the libretro interface. No system directory query, no BIOS path construction, and no call site exists in main.cpp. A future update could wire this up to support real VMU firmware boot (file manager, clock, mini-games menu).
Technical notes

Sega Dreamcast VMU/VMS emulator. Same author (Mahmoud Jaoune) ported the original Android Java app to C++ for libretro. Emulates the Sanyo LC8670 CPU, 128 KB flash, 48x32 LCD, piezo buzzer, and timers.

No BIOS files required. The core uses HLE exclusively: startCPU() checks BIOSExists (always false), then initializeHLE() sets SFR registers and system RAM directly (vmu.cpp:193-222).

A loadBIOS() function exists (vmu.cpp:82-137) handling encrypted and unencrypted BIOS images, but is never called from the libretro interface. retro_load_game() only loads game flash data, with no system directory query. README lists BIOS support as planned.

No BIOS or firmware files required.

.