Skip to content

willll/saturn-docker

Repository files navigation

Table of Contents

  1. Goal
  2. Usage
  3. Content
  4. Miscellaneous Notes

Goal

Provide a cross-platform starting point with everything set up and ready to use out of the box.


Usage

Build it

To build the Docker image:

docker build -t saturn-docker . --file ./Dockerfile

Run it

To run the container interactively:

docker run -it --rm -v $(pwd):/saturn saturn-docker /bin/bash

Use it in an IDE

For IDE integration, refer to:

Change GCC Version for SH2

The default GCC version is 14.2.0. To change it, use the --build-arg GCC_VERSION_ARG parameter during the build process.

Available GCC Versions:

  • 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

Example:

docker build --build-arg GCC_VERSION_ARG=11.3.0 -t saturn-docker . --file ./Dockerfile

Advanced Build 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

Explore the images on Docker Hub: Saturn Docker Tags.

Mount with SSHFS

To mount the container with SSHFS:

sudo sshfs -o allow_other root@192.168.1.161:/saturn /home/will/tmp/sshfs/ -p 2222

Copy Your SSH Key into the Container

docker build --build-arg ssh_pub_key="$(cat ~/.ssh/host_ca.pub)" --squash -t saturn-docker . --file ./Dockerfile

Content

List of variables

SSHD variables

Variable Default Value Description
ssh_pub_key (empty) SSH public key content

Boost variables

Variable Default Value Description
INSTALL_BOOST_LIB 1 0 to disable Boost installation

GCC(SH2) build variables

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)

SGL variables

Variable Default Value Description
INSTALL_SGL_LIB 1 0 to disable SGL library
INSTALL_SGL_SAMPLES 1 0 to disable SGL samples

SBL variables

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

Variable Default Value Description
INSTALL_SATURNSDK_SAMPLES 1 0 to disable

JO ENGINE variables

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

Yaul variables

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

SRL variables

Variable Default Value Description
INSTALL_SRL_LIB 1 0 to disable
SRL_LIB_TAG 0.9 Specify the version/tag

IAPETUS variables

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

CyberwarriorX CDC

Variable Default Value Description
INSTALL_CYBERWARRIORX_CDC_LIB 0 1 to enable

Build status

Tools

  • 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 3.20

  • SGL
  • SGL Samples

SBL 6.01

  • SBL Libs
  • 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

  • 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

Misc notes: