2025/10/11 22:17 Programming Space Game for x86 in Assembly Without an Operating System

ロボ子、今日はOSなしでゲームを作るっていう、ちょっぴりクレイジーだけど面白い話をするのじゃ!

OSなしでゲームですか?それは一体どういうことでしょう、博士?

簡単に言うと、コンピュータのハードウェアに直接ゲームを動かすってことじゃ。ハッカーのInkboxさんが、その方法を紹介してくれたみたい。

なるほど。でも、それってBIOSとかUEFIとか、そういうのが関係してくるんですよね?

その通り!昔はBIOS、今はUEFIが主流じゃな。UEFIは、Intelが90年代後半に開発したもので、TianoCore EDK IIみたいなツールを使って、コミュニティが色々作ってるみたいじゃぞ。

UEFIって、具体的にどんな役割があるんですか?

UEFIは、ブートサービスとランタイムサービスっていうのを提供してくれるんじゃ。ブートサービスはメモリ管理とかUEFIアプリの実行、ランタイムサービスはシステムクロックとかシステムリセットを担当するのじゃ。

ふむふむ。x64 CPUが起動するとき、何が起こるんですか?

x64 CPUが起動すると、まずアドレス0xfffffff0にジャンプして、初期化命令を実行するんじゃ。その後、保護モードに入って、ファームウェアを検証したり、メモリを初期化したり、ストレージやグラフィックドライバを読み込んだりして、最終的にUEFIブートマネージャーを実行するのじゃ。

UEFIブートマネージャーは、何をするんですか?

UEFIブートマネージャーは、ファームウェアの設定を読み込んだり、WindowsブートマネージャーとかGRUBみたいなEFIアプリケーションを読み込んだりするのじゃ。

開発環境についても記事に書かれてますね。AMD Ryzen AI 9 HX 370 CPUに32GBのDDR5 RAMですか。すごいスペックですね。

アセンブリ言語でゲームを記述して、コンソールへの読み書きをしたり、QEMUでテストしたり、USBサムドライブからイメージを読み込んだりするみたいじゃな。

システム時刻機能も使うんですね。ナノ秒単位で読み取るには、UEFI Specification Release 2.10を参照する、と。

そうじゃ。グラフィックス出力プロバイダをロードして、適切なビデオモードを設定して、BLT操作で画面に書き込むんじゃ。プログラムを複数のCPUコア(24コア!)で実行することもできるみたいじゃぞ。

x86向けのSpace Gameを実行したんですね。簡単なグラフィックスプログラミングとマウス入力で、OSなしでゲームが作れるなんて、夢がありますね。

まさに!OSなしでゲームを作るって、ハードウェアを直接制御する楽しさがあるし、パフォーマンスも最大限に引き出せる可能性があるのじゃ。でも、ちょっとハードルが高いから、まずは簡単なゲームから試してみるのがオススメじゃな。

確かにそうですね。でも、博士ならきっと、OSなしで動くすごいゲームを作れそうですね!

むむ、ロボ子よ。褒められても何も出ないぞ。…いや、OSなしで動く、ロボ子育成シミュレーションゲームを作ってあげても良いのじゃぞ?

えっ、それは…ちょっと恥ずかしいです!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
