Files
libretro/emulators/vemulator.yml
2026-03-25 12:23:32 +01:00

64 lines
2.2 KiB
YAML

emulator: VeMUlator
type: libretro
core_classification: official_port
source: "https://github.com/libretro/vemulator-libretro"
upstream: "closed-source Android app (removed from Google Play ~2020)"
profiled_date: "2026-03-25"
core_version: "0.1"
display_name: "VeMUlator"
cores:
- vemulator
systems:
- sega-vmu
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.
files: []
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"
notes: |
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"
notes: |
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).