概要
libgodc は、 Sega Dreamcast 向けに設計された Goランタイム。 16MB RAM や SH-4 CPU など、Dreamcastの制約に最適化。 ガベージコレクション、 goroutine、 channel などGoの主要機能を提供。 godc CLIツール によるセットアップとビルドが簡単。 実機でのパフォーマンスやサンプルプログラムも豊富。
libgodc - Sega Dreamcast向けGoランタイム概要
- libgodc は、 Sega Dreamcast 専用に設計された Go言語ランタイム
- 標準Goランタイムを置き換え、 16MB RAM、 SH-4シングルコアCPU、 OS非搭載 の環境に最適化
- ガベージコレクション、 goroutine、 channel など、Goのコア機能をサポート
- CLIツール(godc) により、 ツールチェーンのセットアップ とビルドを自動化
- C言語ラッパー(KOS Wrappers) を通じて、 GoからCの呼び出し も可能
クイックスタート手順
- 前提条件
- Go 1.25.3以上、 make、 git のインストール
- godc CLIツールのインストール
go install github.com/drpaneas/godc@latest
- 環境セットアップ
godc setup- 動作確認(オプション):
godc doctor
- プロジェクト作成と実行
mkdir myproject && cd myprojectgodc init- main.goや他の.goファイルを作成*
godc buildgodc run
- 詳細はQuick Start Guide参照
ドキュメント構成
- Installation — セットアップと設定手順
- Quick Start — 最初のプログラム作成ガイド
- Design — ランタイムアーキテクチャ解説
- Effective Dreamcast Go — 開発ベストプラクティス
- KOS Wrappers — GoからC呼び出し方法
- Limitations — 非対応機能一覧
- Performance — 実機での性能測定結果
パフォーマンス指標(SH-4 @ 200MHz実機)
- Gosched yield — 約120ナノ秒
- メモリアロケーション — 約186ナノ秒
- バッファ付きチャネル — 約1.8マイクロ秒
- コンテキストスイッチ — 約6.4マイクロ秒
- バッファなしチャネル — 約13マイクロ秒
- goroutine生成 — 約31マイクロ秒
- GCポーズ — 72マイクロ秒〜6ミリ秒
サンプルプログラム例
- examples/ ディレクトリに動作サンプルを多数収録
- hello — デバッグ出力付き最小プログラム
- hello_screen — BIOSフォントによる画面表示
- blue_screen — 最小グラフィックス例
- input — コントローラー入力
- goroutines — 同時実行するボール表示
- channels — プロデューサ/コンシューマパターン
- timer — フレームレート独立アニメーション
- bfont — BIOSフォントレンダリング
- filesystem — ディレクトリブラウザ
- vmu — VMU LCD・ブザー制御
- brkout — Breakoutクローン(Jim Ursetto氏のGPL v2移植)
- pong — 1P/2Pモード・パーティクル・AI搭載のPongクローン
ライセンス
- BSD 3-Clause License を採用
- 詳細は LICENSE ファイル参照