Provide a cross-platform starting point with everything set up and ready to use out of the box.
To build the Docker image:
docker build -t saturn-docker . --file ./DockerfileTo run the container interactively:
docker run -it --rm -v $(pwd):/saturn saturn-docker /bin/bashTo run the container with SSH support and current user:
docker run -it -p 2222:22 --rm --user $(id -u):$(id -g) -v $(pwd):/saturn saturn-docker:latest /bin/bashFor IDE integration, refer to:
The default GCC version is 14.2.0. To change it, use the --build-arg GCC_VERSION_ARG parameter during the build process.
- 14.3.0
- 14.2.0 (default)
14.1.0(deprecated)- 13.3.0
13.2.0(deprecated)- 12.4.0
12.3.0(deprecated)12.2.0(deprecated)- 11.5.0
11.3.0(deprecated)- 10.4.0
- 9.5.0
- 8.4.0
docker build --build-arg GCC_VERSION_ARG=11.3.0 -t saturn-docker . --file ./Dockerfiledocker 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 ./Dockerfiledocker 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 ./DockerfileExplore the images on Docker Hub: Saturn Docker Tags.
To mount the container with SSHFS:
sudo sshfs -o allow_other [email protected]:/saturn /home/will/tmp/sshfs/ -p 2222docker build --build-arg ssh_pub_key="$(cat ~/.ssh/host_ca.pub)" --squash -t saturn-docker . --file ./Dockerfile| Variable | Default Value | Description |
|---|---|---|
ssh_pub_key |
(empty) | SSH public key content |
| Variable | Default Value | Description |
|---|---|---|
INSTALL_BOOST_LIB |
1 | 0 to disable Boost installation |
| Variable | Default Value | Description |
|---|---|---|
MAKEFLAGS_ARG |
"-j 1" | Extra parameters for make |
GCC_VERSION_ARG |
13.2.0 | GCC version |
NCPU |
1 | Number of CPUs for GCC build |
BUILD_TYPE_ARG |
Release | Build type (Release/Debug) |
| Variable | Default Value | Description |
|---|---|---|
INSTALL_SGL_LIB |
1 | 0 to disable SGL library |
INSTALL_SGL_SAMPLES |
1 | 0 to disable SGL samples |
| 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 |
| Variable | Default Value | Description |
|---|---|---|
INSTALL_SATURNSDK_SAMPLES |
1 | 0 to disable |
| Variable | Default Value | Description |
|---|---|---|
INSTALL_JO_ENGINE_LIB |
1 | 0 to disable |
INSTALL_JO_ENGINE_SAMPLES |
1 | 0 to disable |
JO_ENGINE_TAG |
v2024.2 | Specify the version/tag |
| Variable | Default Value | Description |
|---|---|---|
INSTALL_YAUL_LIB_ARG |
1 | 0 to disable |
INSTALL_YAUL_SAMPLES |
0 | 0 to disable |
YAUL_TAG |
0.3.1 | Tag to retrieve from Yaul's GitHub |
YAUL_EXAMPLES_COMMIT_SHA |
21fd76d83dffd49afc4926d6a8408eecfec474f5 | Commit matching YAUL_TAG in Yaul examples GitHub |
| Variable | Default Value | Description |
|---|---|---|
INSTALL_SRL_LIB |
1 | 0 to disable |
SRL_LIB_TAG |
0.9 | Specify the version/tag |
| Variable | Default Value | Description |
|---|---|---|
INSTALL_IAPETUS_LIB |
0 | 1 to enable |
INSTALL_IAPETUS_SAMPLES |
0 | 1 to enable |
IAPETUS_COMMIT_SHA |
955d7c50f634cdd18722657c920987200d9ba3a5 | Specify commit SHA |
| Variable | 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.5.0 for SH2 : https://github.com/willll/Saturn-SDK-GCC-SH2/tree/gcc_11.5.0
- GCC 12.4.0 for SH2 : https://github.com/willll/Saturn-SDK-GCC-SH2/tree/gcc_12.4.0
- GCC 13.3.0 for SH2 : https://github.com/willll/Saturn-SDK-GCC-SH2/tree/gcc_13.3.0
- GCC 14.2.0 for SH2 (Default) : https://github.com/willll/Saturn-SDK-GCC-SH2/tree/gcc_14.2.0
- GDB for SH2 (Not tested yet)
- GCC 14.2.0 for M68K : https://github.com/willll/Saturn-SDK-GCC-M68K
- 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)
-
-
-
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 -
dspTO BE VALIDATED -
gfs -
fldConverted from COFF -
int -
mem -
mpg -
mth(copied from https://github.com/shicky256/sbl/tree/master/segalib/mth) -
pcmTO 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) -
sndTO 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(Runtime ???)
-
-
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 -
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-
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 -
dp2-line-scroll -
vdp2-nbg0 -
vdp2-normal-bitmap -
vdp2-rbg0-bitmap -
vdp2-rbg0 -
vdp2-reduction-bitmap -
vdp2-special-function -
vdp2-zooming
-
-
-
SRL-
SRL Library(Headers only, no static library) -
SRL Samples(https://github.com/ReyeMe/SaturnRingLib/tree/main/Samples)-
CD - File reading -
Input - Analog -
Input - Gamepad -
Input - Gun -
Logs -
Makefile - pre and post build -
Math - Random -
Math - Random image -
SH2 - Slave -
SMPC - Clock -
Sound - CDDA -
Sound - PCM -
SRL - Event -
STL -
VDP1 - 3D - Animation -
VDP1 - 3D - Flat teapot -
VDP1 - 3D - Smooth teapot -
VDP1 - Clipping -
VDP1 - Distorted sprite -
VDP1 - Gouraud -
VDP1 - Interactive polygon -
VDP1 - Lines -
VDP1 - Sprite effects -
VDP1 - Sprites -
VDP2 - Bmp2Tile -
VDP2 - Layers -
VDP2 - RBG0 Rotation
-
-