Skip to content

drpaneas/libgodc

Repository files navigation

libgodc - Go runtime for Sega Dreamcast

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.

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

Documentation

πŸ“š Full Documentation

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

License

BSD 3-Clause License. See LICENSE for details.