Jo Engine

Make Sega Saturn games in plain C.

Jo Engine is an open source 2D and 3D game engine for the Sega Saturn. You write the game; it handles the two SH-2 CPUs, the VDP1 and VDP2, the CD block and the sound processor. Your game runs on emulators and on the original console.

License
MIT
Language
C
Since
2012
Develop on
Windows, Linux, macOS
main.c
#include <jo/jo.h>

void my_draw(void)
{
    jo_sprite_draw3D(0, 0, 0, 500);
}

void jo_main(void)
{
    jo_core_init(JO_COLOR_Black);
    jo_sprite_add_tga("TEX", "A.TGA", JO_COLOR_Transparent);
    jo_core_add_callback(my_draw);
    jo_core_run();
}
A complete program: load a TGA sprite from the CD and draw it every frame.

One API for a famously complex console

The Saturn spreads its work across a dozen chips. Jo Engine gives each of them a simple C interface, and every feature comes with a sample you can build and run.

VDP1 Sprites and polygons

  • TGA, 15-bit and raw images loaded from the CD
  • Sprite animation and storyboards
  • 3D meshes, camera, Gouraud shading
  • Software rendering and voxel terrain

VDP2 Backgrounds

  • Parallax scrolling and line scroll
  • Mode 7 rotation planes
  • Tilesets and maps
  • Text, fonts and palettes

CD CD block

  • File system access
  • CD audio tracks
  • Video playback (Sega FILM / CPK)
  • VCD card support

SCSP Sound

  • PCM sound effects
  • Several channels at once

SMPC Controllers

  • Gamepad, 3D pad, Mission Stick, racing wheel
  • Mouse, keyboard and multitap

RAM Memory and saves

  • Dynamic memory allocation
  • Backup RAM saves
  • Hitboxes, physics and math tools
Jo Map Editor showing a tileset

Jo Map Editor

A companion tool for preparing assets: convert images to TGA, PNG or 15-bit binary, build tilesets and maps, and export images as C source. It ships with the engine.

Jo Map Editor on GitHub

From download to a running game

The download contains the compiler, the engine, emulators and more than forty samples.

  1. Download Jo Engine

    Get the latest release or clone the repository.

  2. Open a sample

    Copy a folder from Samples into Projects. Start with demo - sprite animation or demo - 3D.

  3. Build and run

    Run compile.bat on Windows or ./compile.sh on Linux and macOS to build a CD image, then a run_with_… script to start it in Yabause, Mednafen, Kronos or another emulator.

  4. Play it on a real Saturn

    Burn the generated image, or load it with an optical drive emulator such as the Satiator, and test on the console.

Made with Jo Engine

Homebrew games and ports built by the community, from weekend experiments to finished, commercially released titles.

  • Bridget Bishop

    Bridget Bishop

    3D adventure, Fran Matsusaka (EGS Studio Games), 2022

    A survival-horror adventure inspired by Alone in the Dark, finished and playable from start to end.

    Read the article
  • Vigilant Paradise

    Vigilant Paradise

    First-person shooter, Riccardo Campione (Playnautic)

    A commercial FPS that uses both CPUs and both VDPs, with voice-acted cutscenes. Red Moon: Lost Days, another Jo Engine game, has been sold on disc since 2023.

    Read the article
  • Dragon Ball

    Dragon Ball

    Beat 'em up tech demo, NaiSan, 2025

    A side-scrolling brawler with smoothly scaled sprites, meant to become an original game.

    Read the article
  • X-Men Arcade

    X-Men Arcade

    Arcade recreation, hotrodx, 2024

    A fan recreation of Konami's 1992 beat 'em up. The first demo has the opening stage and two playable characters, and runs on real hardware.

    Read the article
  • Celeste Classic

    Celeste Classic

    Port, En83, 2026

    The PICO-8 platformer ported to the Saturn from its C source.

    Read the article
  • ZYGO

    ZYGO

    2D platformer, JBeretta, 2021

    An original platformer with transformations, entered in the SegaXtreme game competition. A 3D version is in progress.

    Read the article
  • Puff Pastry Panic

    Puff Pastry Panic

    3D game, Tails of Saturn

    Its author released Enceladus, the model converter and stage builder he wrote for it, for other Jo Engine developers.

    See it on SegaXtreme
  • Circuit Breaker

    Circuit Breaker

    3D racing, alfanhui

    An open source game with a development video series, a good read if you want to see a project grow.

    Source code

Made something with Jo Engine? Tell us on GitHub and it can be listed here.

Jo Engine in print and in the press

Books, interviews and articles that cover the engine.

Books

Homebrew Game Development and The Extra Lives of Consoles

Robin Wilde

Pages 61–62 and 78, ISBN 978-1-399-07265-6

Programación de Videojuegos Para SEGA Saturn

Rolando Fernández Benavidez

In Spanish, ISBN 980-1509-68-7

Ask, share, contribute

Most Saturn homebrew talk happens on SegaXtreme. Bugs and pull requests go to GitHub.

About

I'm Johannes Fetz and I live near Montpellier, in France. I'm the CEO of Eureka Technology, where I've worked for more than 17 years, and a Group Leader at Volaris Group.

The Saturn is full of memories of middle school with my friends, and it is still my favourite console. Games like Panzer Dragoon Saga stayed with me. The console has a reputation as one of the hardest platforms ever to program, which is why so few homebrew games existed. So I wrote an engine simple enough for anyone to make one. Everyone at work calls me Jo, hence the name.

Thanks to The Rockin'-B for his work and tutorials, and to everyone who supports the project on SegaXtreme, SEGASaturno, Sega-16, Gamopat, Sega Saturn Shiro and Segasaturnshine.