1 ポイント 投稿者 GN⁺ 2023-07-16 | 1件のコメント | WhatsAppで共有
  • 作者は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件のコメント

 
GN⁺ 2023-07-16
Hacker News のコメント
  • Another World: 印象的なグラフィックと芸術的なスタイルで知られるクラシックなビデオゲーム
  • ゲームは短く、パズルは試行錯誤に依存しているが、芸術性の面で今なお人気がある
  • Another World のファンは Flashback: The Quest for Identity も楽しめる
  • Amstrad CPC、Nintendo 64、PlayStation 1 を含むさまざまなプラットフォーム向けの Another World 移植版がある
  • この記事の著者は FPGA 移植のために Silice というカスタム HDL 言語を使用している
  • Amiga で使われているプレーナーグラフィックスには、透明効果やモアレ効果のような利点がある
  • ゲームでの仮想マシン(VM)の使用は、90年代の PC では性能低下を招いていた可能性がある
  • このゲームには印象的なオープニングや、ライオンからの逃走など、やりごたえのあるゲームプレイがある
  • このゲームのオリジナル開発者は、開発ツールとアニメーション工程について GDC の振り返り講演を行っている
  • YouTube でプレイスルーを視聴することは、ゲームに苦戦しているプレイヤーの助けになるかもしれない