Go runtime for Dreamcast using gccgo and KOS
See the code
Replaces the standard Go runtime with one designed for the Dreamcast's constraints: memory 16MB RAM, CPU single-core SH-4, no operating system. Provides garbage collection, goroutines, channels, and the core runtime functions.
Prerequisites: Go 1.25.3+, make, and git must be installed.
go install github.com/drpaneas/godc@latest
godc setup
godc doctor # to check (optional)
Note: The
godcCLI tool is a separate project that handles toolchain setup and builds.
Create and run a project:
mkdir myproject && cd myproject
godc init
# write your main.go and other *.go files
godc build
godc run
See the Quick Start Guide for your first program.
๐ Full Documentation
The repo includes tests/bench_architecture.go for measuring runtime behavior
on Dreamcast hardware.
| Benchmark | What it reports |
|---|---|
gosched | Nanoseconds per yield |
| Buffered channel | Nanoseconds per buffered operation |
| Context switch | Nanoseconds per goroutine switch |
| Unbuffered channel | Nanoseconds per roundtrip |
| Goroutine spawn | Nanoseconds per spawn/run cycle |
| GC pause | Microseconds per forced collection across retained sizes from 32 KB to 1 MB |
| Memory layout | Stack size, context size, header size, and large-object threshold |
Run tests/bench_architecture.elf on your hardware for current numbers.
The examples/ directory contains working programs:
hello โ Minimal program (debug output)hello_screen โ Hello World on screen using BIOS fontblue_screen โ Minimal graphicsinput โ Controller inputgoroutines โ Concurrent bouncing ballschannels โ Producer/consumer patterntimer โ Frame-rate independent animationbfont โ BIOS font renderingfilesystem โ Directory browservmu โ VMU LCD and buzzerbrkout โ Breakout clone (GPL v2, port of Jim Ursetto's original)platformer โ Side-scrolling platformerpong โ Pong clone with 1P/2P mode, particle effects, and AIBSD 3-Clause License. See LICENSE for details.
C
67.1%
Go
26.0%
Assembly
5.1%
Makefile
1.8%
Go runtime for Dreamcast using gccgo and KOS
See the code
Replaces the standard Go runtime with one designed for the Dreamcast's constraints: memory 16MB RAM, CPU single-core SH-4, no operating system. Provides garbage collection, goroutines, channels, and the core runtime functions.
Prerequisites: Go 1.25.3+, make, and git must be installed.
go install github.com/drpaneas/godc@latest
godc setup
godc doctor # to check (optional)
Note: The
godcCLI tool is a separate project that handles toolchain setup and builds.
Create and run a project:
mkdir myproject && cd myproject
godc init
# write your main.go and other *.go files
godc build
godc run
See the Quick Start Guide for your first program.
๐ Full Documentation
The repo includes tests/bench_architecture.go for measuring runtime behavior
on Dreamcast hardware.
| Benchmark | What it reports |
|---|---|
gosched | Nanoseconds per yield |
| Buffered channel | Nanoseconds per buffered operation |
| Context switch | Nanoseconds per goroutine switch |
| Unbuffered channel | Nanoseconds per roundtrip |
| Goroutine spawn | Nanoseconds per spawn/run cycle |
| GC pause | Microseconds per forced collection across retained sizes from 32 KB to 1 MB |
| Memory layout | Stack size, context size, header size, and large-object threshold |
Run tests/bench_architecture.elf on your hardware for current numbers.
The examples/ directory contains working programs:
hello โ Minimal program (debug output)hello_screen โ Hello World on screen using BIOS fontblue_screen โ Minimal graphicsinput โ Controller inputgoroutines โ Concurrent bouncing ballschannels โ Producer/consumer patterntimer โ Frame-rate independent animationbfont โ BIOS font renderingfilesystem โ Directory browservmu โ VMU LCD and buzzerbrkout โ Breakout clone (GPL v2, port of Jim Ursetto's original)platformer โ Side-scrolling platformerpong โ Pong clone with 1P/2P mode, particle effects, and AIBSD 3-Clause License. See LICENSE for details.
C
67.1%
Go
26.0%
Assembly
5.1%
Makefile
1.8%