drpaneas/libgodc: Go runtime for Dreamcast using gccgo and KOS


libgodc

Pong
Breakout
Platformer

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 godc CLI 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.

📚 Full Documentation

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

The examples/ directory contains working programs:

  • hello — Minimal program (debug output)
  • hello_screen — Hello World on screen using BIOS font
  • blue_screen — Minimal graphics
  • input — Controller input
  • goroutines — Concurrent bouncing balls
  • channels — Producer/consumer pattern
  • timer — Frame-rate independent animation
  • bfont — BIOS font rendering
  • filesystem — Directory browser
  • vmu — VMU LCD and buzzer
  • brkout — Breakout clone (GPL v2, port of Jim Ursetto’s original)
  • pong — Pong clone with 1P/2P mode, particle effects, and AI

BSD 3-Clause License. See LICENSE for details.



Source link