Get a cross platform starting point, with everything up and running out of the box
build it : docker build -t saturn-docker . --file ./Dockerfile
Run it : docker run -it --rm -v $(pwd):/saturn saturn-docker /bin/bash
Use it in an IDE : TODO
Change GCC version (default 13.2.0) :
- 8.4.0 : docker build --build-arg GCC_VERSION_ARG=8.4.0 -t saturn-docker . --file ./Dockerfile
- 9.5.0 : docker build --build-arg GCC_VERSION_ARG=9.5.0 -t saturn-docker . --file ./Dockerfile
- 10.4.0 : docker build --build-arg GCC_VERSION_ARG=10.4.0 -t saturn-docker . --file ./Dockerfile
- 11.3.0 : docker build --build-arg GCC_VERSION_ARG=11.3.0 -t saturn-docker . --file ./Dockerfile
- 12.2.0 : docker build --build-arg GCC_VERSION_ARG=12.2.0 -t saturn-docker . --file ./Dockerfile
- 12.3.0 : docker build --build-arg GCC_VERSION_ARG=12.3.0 -t saturn-docker . --file ./Dockerfile
- 13.2.0 : docker build --build-arg GCC_VERSION_ARG=13.2.0 -t saturn-docker . --file ./Dockerfile
- 13.3.0 : docker build --build-arg GCC_VERSION_ARG=13.3.0 -t saturn-docker . --file ./Dockerfile
- 14.1.0 : docker build --build-arg GCC_VERSION_ARG=14.1.0 -t saturn-docker . --file ./Dockerfile
Examples :
-
docker build
--build-arg GCC_VERSION_ARG=11.3.0
--build-arg INSTALL_SATURNSDK_SAMPLES=0
--build-arg INSTALL_JO_ENGINE_LIB=0
--build-arg INSTALL_JO_ENGINE_SAMPLES=0
--build-arg INSTALL_YAUL_LIB_ARG=0
--build-arg INSTALL_YAUL_SAMPLES=0
--build-arg INSTALL_SBL_LIB=1
--build-arg INSTALL_SBL_SAMPLES=0
--build-arg INSTALL_SBL_EXAMPLES=0
--build-arg INSTALL_SGL_LIB=0
--build-arg INSTALL_SGL_SAMPLES=0
-t saturn-docker . --file ./Dockerfile -
docker build --build-arg GCC_VERSION_ARG=12.3.0
--build-arg INSTALL_SATURNSDK_SAMPLES=1
--build-arg INSTALL_JO_ENGINE_LIB=1
--build-arg INSTALL_JO_ENGINE_SAMPLES=1
--build-arg INSTALL_YAUL_LIB_ARG=1
--build-arg INSTALL_YAUL_SAMPLES=1
--build-arg INSTALL_SBL_LIB=1
--build-arg INSTALL_SBL_SAMPLES=1
--build-arg INSTALL_SBL_EXAMPLES=1
--build-arg INSTALL_SGL_LIB=1
--build-arg INSTALL_SGL_SAMPLES=1
--build-arg MAKEFLAGS_ARG="-j 8"
-t saturn-docker . --file ./Dockerfile
Docker Hub : https://hub.docker.com/r/willll/saturn-docker/tags
Mount it with SSHFS : sudo sshfs -o allow_other root@192.168.1.161:/saturn /home/will/tmp/sshfs/ -p 2222
GCC build variables | Default Value | Description |
---|---|---|
MAKEFLAGS_ARG | "-j 1" | Extra parameters for make |
GCC_VERSION_ARG | 13.2.0 | Version of GCC, possible values : [ 8.4.0, 9.5.0, 10.4.0, 11.3.0, 12.2.0, 12.3.0, 13.2.0, 13.3.0, 14.1.0 ] |
NCPU | 1 | Number of CPUs available to build GCC |
CREATEINSTALLER | "NO" | To be removed ? |
BUILD_TYPE_ARG | Release | Release vs Debug, use CMAKE_BUILD_TYPE [ Release, Debug, RelWithDebInfo,MinSizeRel ] |
SGL variables | Default Value | Description |
---|---|---|
INSTALL_SGL_LIB | 1 | 0 to disable |
INSTALL_SGL_SAMPLES | 1 | 0 to disable |
SBL variable | Default Value | Description |
---|---|---|
INSTALL_SBL_LIB | 1 | 0 to disable |
INSTALL_SBL_SAMPLES | 1 | 0 to disable |
INSTALL_SBL_EXAMPLES | 1 | 0 to disable |
SATURN SDK Variables | Default Value | Description |
---|---|---|
INSTALL_SATURNSDK_SAMPLES | 1 | 0 to disable |
JO ENGINE variables | Default Value | Description |
---|---|---|
INSTALL_JO_ENGINE_LIB | 1 | 0 to disable |
INSTALL_JO_ENGINE_SAMPLES | 1 | 0 to disable |
JO_ENGINE_TAG | v2024.2 | ... |
Yaul variables | Default Value | Description |
---|---|---|
INSTALL_YAUL_LIB_ARG | 1 | 0 to disable |
INSTALL_YAUL_SAMPLES | 1 | 0 to disable |
YAUL_TAG | 0.3.1 | Tag to retrieve from Yaul's github |
YAUL_EXAMPLES_COMMIT_SHA | 21fd76d83dffd49afc4926d6a8408eecfec474f5 | Commit that match YAUL_TAG in yaul-examples github |
IAPETUS variables | Default Value | Description |
---|---|---|
INSTALL_IAPETUS_LIB | 0 | 1 to enable |
INSTALL_IAPETUS_SAMPLES | 0 | 1 to enable |
IAPETUS_COMMIT_SHA | 955d7c50f634cdd18722657c920987200d9ba3a5 | ... |
CyberwarriorX CDC reimplementation variables | Default Value | Description |
---|---|---|
INSTALL_CYBERWARRIORX_CDC_LIB | 0 | 1 to enable |
- GCC 8.4.0 for SH2 : https://github.com/willll/Saturn-SDK-GCC-SH2/tree/gcc_8.4.0
- GCC 9.5.0 for SH2 : https://github.com/willll/Saturn-SDK-GCC-SH2/tree/gcc_9.5.0
- GCC 10.4.0 for SH2 : https://github.com/willll/Saturn-SDK-GCC-SH2/tree/gcc_10.4.0
- GCC 11.3.0 for SH2 : https://github.com/willll/Saturn-SDK-GCC-SH2/tree/gcc_11.3.0
- GCC 12.2.0 for SH2 : https://github.com/willll/Saturn-SDK-GCC-SH2/tree/gcc_12.2.0
- GCC 12.3.0 for SH2 : https://github.com/willll/Saturn-SDK-GCC-SH2/tree/gcc_12.3.0
- GCC 13.2.0 for SH2 (Default) : https://github.com/willll/Saturn-SDK-GCC-SH2/tree/gcc_13.2.0
- GCC 13.3.0 for SH2 (Default) : https://github.com/willll/Saturn-SDK-GCC-SH2/tree/gcc_13.3.0
- GCC 14.1.0 for SH2 (not stable) : https://github.com/willll/Saturn-SDK-GCC-SH2/tree/gcc_14.1.0
- GDB for SH2 (Not tested yet)
- GCC 10.2.0 for M68K : https://github.com/willll/Saturn-SDK-GCC-M68K (To be integrated)
- CMake profile
- schily-tools : ISO generation tools
- Saturn-SDK-Tool-IPMaker : IP.BIN generation tool : https://github.com/willll/Saturn-SDK-Tool-IPMaker
- satcon : Sega Saturn image convertor https://git.sr.ht/~ndiddy/satconv/
- SGL (patched)
- SGL Samples
- akira
- akira3
- demo_a
- demo_b
- demo_c
- demo_d
- demogun
- design1
- design2
- design3
- driving
- driving2
- fighting
- s_2_2
- s_3_2
- s_4_2
- s_4_3_1
- s_4_3_2
- s_4_3_3
- s_4_3_4
- s_4_5
- s_5_2
- s_6_3
- s_7_2
- s_7_4
- s_7_6
- s_8_8_1
- s_8_8_2
- s_8_8_3
- s_8_9_1
- s_8_9_2
- s_8_10_1
- s_8_10_2
- s_8_11
- s_8_12
- s_9_1
- s_10
- s_cd1
- s_cd2
- s_cd3
- s_cd4
- sampsnd1
- sampsnd2
- sbklib
- sega2d_1
- sega3d_1
- sega3d_2
- sega3d_3
- shooting
- torus2
- torus3
- SGL Samples from SGL 3.20
- bitmap
- cdda (Missing tracks ?)
- coloff
- expccalc
- grad
- linecol
- linscl
- pcm
- seamless
- all (Error : Stream System open)
- basic (Error : Stream System open)
- ff (Error : Stream System open)
- pause (Error : Stream System open)
- simple
- all (Error : Stream System open)
- gfs (Error : Stream System open)
- mem (Error : Stream System open)
- stm (Error : Stream System open)
- seamless
- rotatebg
- coef
- linecol
- shadow
- msb
- sprite
- sound
- mapchg (Black screen)
- sndtest (no sounds ?)
- spccalc
- cel
- dot
- spprio
- cel
- dot
- sprcc2bg
- apply
- basic
- window
- sprwin
- SGL Demos
- biplane (Missing files in scroll folder)
- cdda_sgl (Missing files in src folder)
- chrome
- flying
- SGL
- SGL Samples
- SBL Libs
- blp
- cdc (copied from https://github.com/shicky256/sbl/tree/master/segalib/cdc)
- cmp
- csh
- dbg
- dma
- dsp TO BE VALIDATED
- gfs
- fld Converted from COFF
- int
- mem
- mpg
- mth (copied from https://github.com/shicky256/sbl/tree/master/segalib/mth)
- pcm TO BE VALIDATED
- per (copied from https://github.com/shicky256/sbl/tree/master/segalib/per)
- scl (copied from https://github.com/shicky256/sbl/tree/master/segalib/scl)
- snd TO BE VALIDATED
- spr (copied from https://github.com/shicky256/sbl/tree/master/segalib/spr)
- stm
- SBL Samples
- bup
- csh
- dbg
- smpdbg1
- dma
- dma0
- dma1
- dma2
- dma10
- dma12
- dual (required or just sample code ?)
- fld
- smpfld01 (Crash at runtime)
- [?] game (black screen at runtime)
- [?] game_cd (black screen at runtime)
- gfs
- smpgfs1a (Crash at runtime)
- smpgfs1b (Crash at runtime)
- smpgfs2 (Crash at runtime)
- mem
- smpmem0 (Crash at runtime)
- [?] smpmem1 (black screen at runtime)
- mpg
- smpmpg1
- pcm
- pcm2 (Crash at runtime)
- pcm3 (black screen at runtime)
- pcm4 (black screen at runtime)
- pcm5 (Crash at runtime)
- pcm13 (black screen at runtime)
- per
- smpper0 (no output)
- smpper1 (no output)
- smpper7 (controls ?)
- smpper8
- smpper12
- sblsgl
- sblsgl00 (Link errors)
- sblsgl01 (Link errors)
- sblsgl02 (Link errors)
- sblsgl03 (Link errors)
- sblsgl04 (Link errors)
- scl
- smpscl1
- smpscl3
- smpscl5
- sgl
- demo_a
- demo_b
- demo_c
- s_2_2
- s_3_2
- s_4_2
- s_4_3_1
- s_4_3_2
- s_4_3_3
- s_4_3_4
- s_4_5 (black screen at runtime)
- s_5_2 (black screen at runtime)
- s_6_3 (black screen at runtime)
- s_7_2
- s_7_4
- s_7_6 (black screen at runtime)
- snd
- smpsnd1 (Runtime ???)
- smpsnd4 (Runtime ???)
- smpsnd5 (Runtime ???)
- smpsnd6 (Missing header file)
- spr
- spr2
- spr7
- spr8
- stm
- smpstm1 (Crash at runtime)
- smpstm2 (Crash at runtime)
- sys (Not tested)
- tim
- smp0 (Crash at runtime)
- smp1 (Crash at runtime)
- SDK Samples
- Basic
- Sprite
- Textured Sprite
- CDBrowser
Jo Engine 2024.2 (https://www.jo-engine.org/)
- Jo Engine
- Jo Engine Samples
- demo1
- demo - homing laser
- demo - 2D storyboard
- demo - line scroll
- demo - 3D
- demo - map
- demo - 3D map
- demo - mode7
- demo - 3D - programmatically
- demo - mouse
- demo - multitap
- demo - 8bits tga
- demo - nbg2 font
- demo - advanced 3D
- demo - paint
- demo - audio
- demo - analog
- demo - printf
- demo - render to image
- demo - background
- demo - shooter
- demo - backup
- demo - simple water effect
- demo - bullet
- demo - software rendering
- demo - debug console
- demo - sonic
- demo - everydaycute
- demo - sprite animation
- demo - filesystem
- demo - tileset
- demo - gamepad
- demo - vdp2 plane
- demo - gouraud shading
- demo - video
- demo - hardcoded image
- demo - visual novel
- demo - voxel
Yaul (https://github.com/yaul-org/libyaul) (Version 0.3.1)
- Yaul
- Yaul Library
- Yaul Examples (https://github.com/yaul-org/libyaul-examples)
- arp-comm << This example is disabled
- bcl
- c++
- cd-block
- cpu-divu
- cpu-dmac
- cpu-dual
- cpu-frt
- cpu-wdt
- dbgio-font
- dbgio-menu
- dbgio-usb-cart
- dma-queue
- dram-cart
- fibers
- fileserver
- gdb
- mm-stats
- netlink-template
- scu-dsp
- scu-timers << This example is disabled
- smpc-rtc
- usb-cart
- vdp1-balls
- vdp1-drawing
- vdp1-interlace
- vdp1-mesh
- vdp1-mic3d
- vdp1-normal-sprite
- vdp1-software-blending
- vdp1-st-niccc
- vdp1-uv-coords
- vdp1-zoom-sprite
- vdp2-24bpp-bitmap
- vdp2-all-nbgs
- vdp2-back-screen
- vdp2-effect-tunnel
- vdp2-line-scroll
- vdp2-nbg0
- vdp2-normal-bitmap
- vdp2-rbg0-bitmap
- vdp2-rbg0
- vdp2-reduction-bitmap
- vdp2-special-function
- vdp2-zooming
https://github.com/RetroReversing/retroReversing/tree/master/pages/sega/saturn
Boost preprocessor introduction : https://www.boost.org/doc/libs/1_76_0/libs/preprocessor/doc/AppendixA-AnIntroductiontoPreprocessorMetaprogramming.html