Libgodc
Go runtime for Dreamcast using gccgo and KOS
Install / Use
/learn @drpaneas/LibgodcREADME
libgodc - Go runtime for Sega Dreamcast
<p align="center"> <img src="logo.png" alt="libgodc" width="400"> </p> <p align="center"> <img src="examples/pong/pong.gif" alt="Pong" width="240"> <img src="examples/brkout/brkout.gif" alt="Breakout" width="240"> <img src="examples/platformer/platformer.gif" alt="Platformer" width="240"> </p>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.
Quick Start
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 you main.go and other *.go files
godc build
godc run
See the Quick Start Guide for your first program.
Documentation
- Installation — Setup and configuration
- Quick Start — First program walkthrough
- Design — Runtime architecture
- Effective Dreamcast Go — Best practices
- KOS Wrappers — Calling C from Go
- Limitations — What doesn't work
Performance
Measured on real hardware (SH-4 @ 200MHz):
| Operation | Time | |---------------------|----------| | Gosched yield | ~120 ns | | Allocation | ~186 ns | | Buffered channel | ~1.8 μs | | Context switch | ~6.4 μs | | Unbuffered channel | ~13 μs | | Goroutine spawn | ~31 μs | | GC pause | 72 μs - 6 ms |
Examples
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)pong— Pong clone with 1P/2P mode, particle effects, and AI
License
BSD 3-Clause License. See LICENSE for details.
