- Notifications
You must be signed in to change notification settings - Fork0
GPF/DCSinge
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
A Dreamcast-native port of the Singe / Hypseus-Singe FMV engine
by Troy Davis (GPF)
DCSinge is a ground-up Dreamcast reimplementation of the Singe/Hypseus FMVengine used in laserdisc-style games such as Dragon’s Lair, Space Ace, CrimePatrol, Mad Dog McCree, Hologram Time Traveler, and modern Singe 2 fan titles.
Unlike Hypseus (PC), DCSinge usesno SDL and no FFmpeg.
Everything is implemented directly on Dreamcast hardware:
- PVR for rendering
- AICA ADPCM for audio
- Lua 5.4 for game logic
- KallistiOS for filesystem, threading, and system services
DCSinge replaces MPEG-1 video decoding with a Dreamcast-optimized.dcmvcontainer format based on preprocessed VQ textures and ADPCM audio.
- Plays
.dcmvfiles containing:- VQ-compressed PVR texture frames
- Optional LZ4 or Zstandard compression
- Frame offset table
- AICA ADPCM (4-bit) audio stream
- Video synced to audio via
psTimer() - Optional threaded preloading
- Zero runtime video decoding overhead
DCSinge implements the Singe Lua API used by Hypseus, including:
start_clip(),stop_clip(), frame-range playback- Overlay drawing (
sep_draw_box,sep_draw_text,sep_draw_sprite) - Timer and event callbacks
- Input handling
- Branching and scene transitions
Runs.singe scripts directly.
- PVR textured quad rendering (no SDL abstraction)
- Maple controller input
- AICA streaming audio
- Optional Jump Pack rumble
- Supports ROM disk, ISO/CDI, and GDEMU
| Feature | Hypseus (PC) | DCSinge (Dreamcast) |
|---|---|---|
| Video | FFmpeg MPEG-1 (.m2v) | Custom.dcmv (VQ frames) |
| Audio | WAV / OGG | AICA ADPCM or cleaned MP3/WAV |
| Rendering | SDL2 | Native PVR |
| Timing | SDL timers | psTimer() |
| Input | SDL | Maple |
| Script engine | Lua 5.3 | Lua 5.4 |
| Filesystem | Desktop FS | ROM disk / CD / SD |
DCSinge preservesSinge Lua behavior, not FFmpeg or SDL renderer behavior.
spacerocksDC.mp4
DCSinge includes a working test port of the Singe 2 fan gameSpaceRocks,
bundledwith permission from its creator, Widge™.
To support Dreamcast hardware,Widge™ provided:
- A custom640×480 MPEG-1
.m2vfile for.dcmvconversion - An updated
spacerocks.singescript compatible with the DCSinge folder layout - Additional refinements for Dreamcast playback
Delivered via DirtBagXon® on 11/13/25:
“Widge has made some resolution changes to SpaceRocks LUA and video for DC…”
https://app.filen.io/#/f/5c906266-0185-46d4-884f-9408d0d35e04%23756b3659626f46356472376552614c466e744959504152526831302d616c6b4d
This example demonstrates:
- FMV playback
- Lua logic
- Sprites and overlays
- Input mapping
- Audio playback
All creative rights remain withWidge™.
A typical game folder looks like:
data/├── singe.cfg├── spacerocks.dcmv└── spacerocks/└── singe/└── spacerocks/├── spacerocks.singe├── images/.png└── sounds/.mp3 or *.wav
game_dir=spacerocks/video_file=spacerocks.dcmvscript_file=singe/spacerocks/spacerocks.singechunk_name=@spacerocks.singegame_name=SpaceRocks
DCSinge loads textures using KOS’s:
png_to_texture()
Dreamcast PVR requirespower-of-two dimensions.
- 32 / 64 / 128 / 256 / 512 pixels (width & height)
- Standard PNG (RGB or RGBA)
- Not required to be converted to
.pvr - Simply resized to POT dimensions
All PNGs used in.singe scripts should be resized accordingly.
Textures are placed in:
data//singe//images/*.png
WAV files are kept as-is.
However:
- Many Singe WAVs exceed64 KB, which Dreamcast cannot load fully into AICA
- These mayfail to play or play only partially
Future versions will include WAV → ADPCM conversion and audio chunking.
DCSinge’s MP3 decoder requires files to begin with a valid MPEG frame (FF FB).
Most MP3s in Singe fan games containID3 tags, which break decoding.
Clean files using:
ffmpeg -i input.mp3 -codec copy -map 0:a:0 -write_xing 0 output_clean.mp3Verify:
xxd -l 8 file.mp3Expected output:
ff fb …Cleaned MP3s are already included for SpaceRocks.
🎥 DCMV Movie Format.dcmv files contain:
VQ-compressed Dreamcast-ready texture frames
Optional Zstd/LZ4 compression
AICA ADPCM audio stream
Frame offset table
FPS, resolution, and metadata
This format eliminates runtime video decoding, enabling smooth FMV playback on Dreamcast.
🛠 FMV Encoding Toolchain(Required for .dcmv Movies)DCSinge relies on the Dreamcast FMV Encoder Toolchain:
👉https://github.com/GPF/dreamcast-fmv
This toolchain includes:
pack_dcmv — Frame+audio packer using LZ4 HC or Zstd
dcaconv — ADPCM encoder
pvrtex — VQ/PVR texture conversion
ffmpeg — Frame extraction
Example playback app (fmv_play.elf)
What it does✔ Converts MP4/M2V into YUV → VQ frames✔ Converts audio to ADPCM✔ Packs into .dcmv with frame offsets & compression blocks✔ Produces Dreamcast-ready movies for DCSinge
See its README for details and usage examples.
📦 LuaFileSystem (lfs) SupportSome Singe scripts require filesystem access.DCSinge includes a Dreamcast port of LuaFileSystem (lfs), supporting:
🔧 Building DCSingeRequirements:
KallistiOS
kos-ports (png, freetype, lua, mp3, zlib, zstd, lz4)
kos-cmake
Build:
bashCopy codekos-cmake -S . -B buildcd buildmake -j16Produces:
singe_dreamcast.elf
🚧 Development StatusWorkingFMV playback via .dcmv
ADPCM audio
Lua 5.4 engine
Singe API coverage
PNG overlays & sprites via POT PNGs
MP3 playback (clean files only)
Input handling
Full SpaceRocks port (custom provided assets)
In ProgressWAV → ADPCM conversion toolchain
Improved MP3 error handling
VMU save support
Sprite atlas optimization
Compatibility expansion for additional Singe titles
🎯 Project GoalsBring Singe-style FMV games to Dreamcast hardware
Provide a full FMV + Lua scripting engine for homebrew
Maintain compatibility with existing Singe scripts
Support new FMV-driven Dreamcast games
timetraveler_DC.mp4
🤝 CreditsWidge™ — SpaceRocks author; provided custom Dreamcast-ready assets
DirtBagXon® — Hypseus Singe developer; guidance and coordination
KallistiOS Team — SDK and system support
Dreamcast Homebrew Community
GPF — .dcmv format, FMV encoder, Dreamcast engine port, Lua integration
📣 Follow UpdatesTwitter/X: @GPFTroyGitHub:https://github.com/GPF
About
Hypseus Singe API simulation and FMV playback engine for Sega Dreamcast
Resources
Uh oh!
There was an error while loading.Please reload this page.