ASM Space Invaders - x86アセンブリで記述されたブート可能なインベーダーゲーム

S 20170207 105100

コンピュータが実行できる「機械語」に近い形式でプログラム記述することができる代表的な低水準言語「アセンブリ」。最近は学習する必要性が薄まってきていますが、低水準な知識を取得することでプログラムやコンピューターに対するより深い知識を獲得することができるというメリットが存在します。

本日紹介する「ASM Space Invaders」は、このアセンブリ言語を使用して作られたインベーダーゲームです。

x86アセンブリ言語を使って記述されていて、ブートローダーを含んでいるためOSを必要とせず単体で動作します。既存BIOSの機能を利用し、キー入力を受け取り、アスキー文字をプリントするシンプルなゲームです。

以下実際の使用方法を説明します。

ASM Space Invadersの動かし方

以下macOS環境を想定しています。

まずソースコードをダウンロードしてビルドします。ビルドにはnasmが必要ですが、Xcodeをインストールしていれば/usr/bin/nasmとして存在しているはずです。

git clone https://github.com/flxbe/asm-space-invaders.git
cd asm-space-invaders
./scripts/create.sh

ビルドに成功するとbuild/image.imgが作られます。フロッピーから起動してx86マシンで動かせるはず…ということですが、QEMUを使うのが現実的です。以下のコマンドでQEMUを使って起動できます。

./scripts/start.sh

QEMUはHomebrewユーザーならば「brew install qemu」でインストール可能です。

実行すると以下の起動画面が表示されます。

S 20170207 104914

▲スペースをタイプするとゲームが始まります。

S 20170207 104939

▲Aで左に移動、Dで右に移動、スペースで弾を発射できます。ゲームオーバーになった場合Rキーを押せばリスタートできます。

なおゲームオーバー時にマウスカーソルが固まる現象が発生しました。この場合Cmd+Tabでウィンドウを切り替えるとよいようです。

まとめ

ASM Space Invadersのゲーム性はとても単純ですが、シンプルなだけにx86アセンブリ学習者にとってソースコードは参考にしやすい可能性があります。アセンブリ言語に興味のある方は参考にしてみてはいかがでしょうか。

スポンサーリンク