- 作者はUP5K FPGAを使って、ゲーム「Another World」をハードウェアとして再実装しました。
- このゲームは、グラフィックスを生成するためにブリッターとラスタライザを呼び出す仮想マシン(VM)上で動作します。
- 作者はFPGA上でVM、ブリッター、ラスタライザのハードウェア実装を作成しました。
- この設計はFPGAのリソース要件内に収まり、128KBのSPRAMメモリを使用します。
- 作者は、ゲームデータとコードを通じてデータがどのように流れるかを理解することから始めました。
- この設計には、すべてを接続し、ディスプレイ更新を追加するSoCが含まれています。
- フレームバッファはSPRAMブロックを使用し、各フレームバッファはSPRAMブロックにぴったり対応しています。
- ディスプレイコントローラは25 MHzでピクセルをストリーミングし、ちらつきを防ぐためにダブルバッファリングを使用します。
- ブリッターは、あるフレームバッファの内容を別のフレームバッファにコピーしたり、単色でフレームバッファを塗りつぶしたりします。
- 作者は、さまざまなFPGAボード上で動作するハードウェアとして、このゲームの再構築に成功しました。
- この記事では、ゲームエンジンにおけるブリッターとラスタライザの実装について論じています。
- ブリッターユニットはvblank中にピクセルをコピーし、ラスタライザユニットはフレームバッファにポリゴンを描画します。
- ブリッターは開始パルスを確認し、指定されていれば色で塗りつぶします。
- ラスタライザはデュアルポートBRAMからポリゴン頂点を読み出し、凹ポリゴンを描画します。
- ラスタライザは透明度のためにパレットのトリックを使い、別のソースフレームバッファからピクセルをコピーできます。
- ゲームエンジンにはフォント描画エンジンが含まれており、事前レンダリングされた背景をサポートします。
- ビルドプロセスには、ゲームデータファイルのコピー、シミュレーションの実行、または別のハードウェアプラットフォームでゲームをプレイすることが含まれます。
- この記事では、ゲームAnother WorldのためにFPGA上で動作するハードウェア設計の開発について説明しています。
- 作者は、ゲームテスト、タイミング調整、レンダリング問題の修正、音楽の追加など、まだ完了していない複数の作業に言及しています。
- 作者はまた、ゲームの別の部分を接続することや、ゲーム状態を保存する可能性にも言及しています。
- このハードウェア上で別のゲームやデモを構築することも、将来のプロジェクト候補として挙げられています。
- この記事は、ブログシリーズ、移植版、ツールに関連する資料へのリンクを提供しています。
- このプロジェクトで使われたSiliceデザインはMITライセンスで提供されており、修正されたC++移植版は元のGPLライセンスを維持しています。
- この記事では、フレームバッファ、ラスタライザ、ブリッター、仮想マシン(VM)といった中核用語について、業界に不慣れな読者向けに説明しています.
1件のコメント
Hacker News のコメント