Table of Contents

Dreamcast VMU

The Visual Memory Unit (VMU), known as the Visual Memory System (VMS) in Japan, is a removable storage device developed by Sega for use with the Dreamcast console. Released in 1998, it doubles as a standalone handheld gaming device featuring a monochrome 48×32 pixel LCD screen, a D-pad, and four buttons (A, B, MODE, SLEEP). The VMU could run mini-games that were often bundled with Dreamcast titles, as well as homebrew software.

This system scrapes metadata for the “vemulator” group and loads the vemulator set from the currently selected theme, if available.

Quick reference

BIOS

No Dreamcast VMU emulator in Batocera needs a BIOS file to run.

ROMs

Place your VMU ROMs in /userdata/roms/vemulator.

VMU games come in several formats:

Extension Description
.vms Standard VMU save/mini-game file
.dci DCI format (alternative VMU dump format)
.bin Full 128 KB VMU flash memory dump

Many Dreamcast games included VMU mini-games that were downloaded to the VMU when a save file was created. These mini-games can be extracted and played standalone. There is also an active homebrew scene producing original VMU games.

Emulators

RetroArch

RetroArch (formerly SSNES), is a ubiquitous frontend that can run multiple “cores”, which are essentially the emulators themselves. The most common cores use the libretro API, so that's why cores run in RetroArch in Batocera are referred to as “libretro: (core name)”. RetroArch aims to unify the feature set of all libretro cores and offer a universal, familiar interface independent of platform.

RetroArch configuration

RetroArch offers a Quick Menu accessed by pressing [HOTKEY] + South button (B SNES) which can be used to alter various things like RetroArch and core options, and controller mapping. Most RetroArch related settings can be altered from Batocera's EmulationStation.

Standardized features available to all libretro cores: vemulator.videomode, vemulator.ratio, vemulator.smooth, vemulator.shaders, vemulator.pixel_perfect, vemulator.decoration, vemulator.game_translation

ES setting name batocera.conf_key Description ⇒ ES option key_value
Settings that apply to all cores of this emulator
GRAPHICS API vemulator.gfxbackend Choose which graphics API library to use. Vulkan is better, when supported.
⇒ OpenGL opengl, Vulkan vulkan.
AUDIO LATENCY vemulator.audio_latency In milliseconds. Can reduce crackling/cutting out.
⇒ 256 256, 192 192, 128 128, 64 64, 32 32, 16 16, 8 8.
THREADED VIDEO vemulator.video_threaded Improves performance at the cost of latency and more video stuttering. Use only if full speed cannot be obtained otherwise.
⇒ On true, Off false.

libretro: vemulator

VeMUlator is the only VMU emulator available for Batocera. It is a port of the Android VeMUlator application by Mahmoud Jaoune, translated from Java to C++. The core uses high-level emulation (HLE) to emulate the Sanyo LC86K87 “Potato” CPU found in the VMU hardware.

libretro: vemulator configuration
ES setting name batocera.conf_key Description ⇒ ES option key_value
Settings that apply to all systems this core supports
ENABLE FLASH WRITE global.vemulator_enable_flash_write When enabled, allows writing to .bin flash memory files. Changes persist between sessions. Requires a restart to take effect.
⇒ On enabled, Off disabled.

Controls

Here are the default Dreamcast VMU controls shown on a Batocera Retropad:

The VMU has a simple control scheme consisting of a D-pad and two action buttons (A and B), plus MODE and SLEEP buttons.

VMU button Retropad equivalent
D-pad Up D-pad Up
D-pad Down D-pad Down
D-pad Left D-pad Left
D-pad Right D-pad Right
A South button (B SNES)
B East button (A SNES)
MODE Start
SLEEP Select

Specifications

Specification Detail
CPU 8-bit Sanyo LC86K87 “Potato”
RAM 256 bytes (application) + 256 bytes (system)
Flash storage 128 KB (200 blocks of 512 bytes)
Display 48 x 32 pixels, monochrome LCD
Audio 1-channel 8-bit PWM
Buttons D-pad, A, B, MODE, SLEEP
Power 2x CR-2032 lithium batteries
Release Japan: 1998, NA: 1999, EU: 1999

Known issues

Troubleshooting

Further troubleshooting

For further troubleshooting, refer to the generic support pages.