Libgodc: セガドリームキャスト用のGoプログラムを書く
108日前原文(github.com)
概要
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ファイル参照