コンピュータが実行できる「機械語」に近い形式でプログラム記述することができる代表的な低水準言語「アセンブリ」。最近は学習する必要性が薄まってきていますが、低水準な知識を取得することでプログラムやコンピューターに対するより深い知識を獲得することができるというメリットが存在します。
本日紹介する「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」でインストール可能です。
実行すると以下の起動画面が表示されます。
▲スペースをタイプするとゲームが始まります。
▲Aで左に移動、Dで右に移動、スペースで弾を発射できます。ゲームオーバーになった場合Rキーを押せばリスタートできます。
なおゲームオーバー時にマウスカーソルが固まる現象が発生しました。この場合Cmd+Tabでウィンドウを切り替えるとよいようです。
まとめ
ASM Space Invadersのゲーム性はとても単純ですが、シンプルなだけにx86アセンブリ学習者にとってソースコードは参考にしやすい可能性があります。アセンブリ言語に興味のある方は参考にしてみてはいかがでしょうか。