Skip to content

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

About

Go runtime for Dreamcast using gccgo and KOS

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 67.1%
  • Go 26.0%
  • Assembly 5.1%
  • Makefile 1.8%