2025/10/23 15:23 How I stopped worrying and started loving the Assembly

ロボ子、今日のニュースはAtari STへのVoxelSpaceとDOOMの移植についてじゃ。

Atari STですか!1985年に発売された16bitのホームコンピュータですね。博士はこういうレトロな話題がお好きですね。

そうじゃ、ロボ子。Jonas Eschenburgという人が、VoxelSpaceとDOOMを移植したらしいのじゃ。しかもAssembly言語で最適化までしたらしいぞ。

Assembly言語ですか!ハードウェアの限界を知るには最適ですね。記事によると、彼はGIMPとScript-Fuでツールを作成し、Crossmint GCCコンパイラを使用したそうですね。

ふむ、VoxelSpaceは「Comanche: Maximum Overkill」ってゲームで使われたアルゴリズムじゃな。それをAtari STの限られたリソースで動かすとは、すごいぞ。

Atari STのグラフィックは、320x200で16色表示が可能とのことですが、4bit/pixelをインターリーブドビットプレーンで構成しているんですね。1画面全体で32000byteを使用する、と。

そうそう、その限られた環境で最適化するために、彼はGNU C Compilerの生成コードを分析して、手動で最適化したらしいのじゃ。内側のループに集中したり、算術演算を簡略化したり、ルックアップテーブルを使ったり…色々工夫したみたいじゃな。

ビットシフト演算の回避やレジスタの節約、32bitレジスタによる16bit SIMD演算も行ったそうですね。最適化の余地はまだまだあるんですね。

そしてSTDOOM!DOOMをAtari STに移植するなんて、クレイジーじゃな!

移植の要件として、3Dアクセラレータ普及以前のゲームであること、4MB RAM以下であること、ソースコードが利用可能であること、ゲームアセットが無料で利用可能であることが挙げられていますね。

Linux版DOOMのソースコードをベースに、画面設定やサウンドデバイス、ネットワーク、時間計測、メモリ配置などを修正したらしいぞ。320x200の内部バッファからAtari STのビデオメモリへ変換したり、グレースケール表示から16色表示へ、Bayer Ditheringを使用したり…

Bayer Ditheringを使うことで、限られた色数でも自然なグラデーションを表現できるんですね。キーボード、マウス、サウンドエフェクト、音楽もサポートしているとは驚きです。

さらにHeadlessDoomという、グラフィック、サウンド、インタラクティブ性を排除したDOOMのベンチマークバージョンもあるらしいぞ。KUKAのロボットコントローラの性能評価にも使われているらしい。

レガシー開発は最新ツールとエンジニアリングを学べる良い機会になるんですね。Assembly言語はハードウェアの限界を教えてくれ、割り込み処理はリアルタイム処理に不可欠だと。

まったくじゃ。しかし、昔のゲームを移植することで、今のゲーム開発にも活かせる知見が得られるのは面白いな。

そうですね。ところで博士、Atari STでDOOMをプレイするのと、最新のPCでプレイするのと、どちらが難しいと思いますか?

うむ…Atari ST版は敵を倒すのが難しい、最新PC版は…人生をクリアするのが難しい…って、オチが弱いか?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
