ラズパイでベアメタルをしたい

公開:2017-02-07 21:44
更新:2017-09-18 05:24
カテゴリ:raspberry pi

こんな小さなマシンで立派なデスクトップOSが動くさまを目の当たりにしてつい興奮してしまった私であるが、このためにラズパイを買ったのではない。

ラズパイで行いたいのはずばり「ベアメタルな自作ゲーム」である。OSを介さずに自作ゲームを動かしたいのである。できるだけアセンブラでコードを書いて作成したいとも考えている。ゲームはスカッシュとか、ブロック崩しとか簡単な内容のものでよいと考えている。

昔のアーケード・ゲーム基板はベアメタル・プログラミングそのものである。ブートするとセルフテストを行って、初期設定からタイトル画面の表示に至るまでのコードを自分で書くのである。 ただゲーム会社にいたころにはすでにブートからスクラッチでコードを書くことはなく、ライブラリ・コードがあって(それをゲーム・メインとか呼んでいたが)、それを基板に合わせて若干改変することで初期設定ができるようになっていた。なので先輩からそのようなコードを譲り受け、いわゆるゲームのアプリ部分を書くだけでよくなっていた。結局自分でそのようなコードを書く機会もあまりなくわずか2-3年で足を洗ってしまったのであった。

それはさておき、最近かなり前に買った(もう10年ほど前になるだろうか)「新・電子立国〈4〉ビデオゲーム・巨富の攻防」を読み返して、インベーダーゲームの西角さんのくだりを読んで、スクラッチでブートからコードを書くって面白そうだなあと思うようになった。

ラズパイを見たとき、そのようなコードを気兼ねなしに書けそうな気がした。PCは自分用に1台しかないので、そのような環境でブートするコードを1から書くというのは非常にリスキーだからね。ラズパイだったら、乱暴なコードを書いても、PCに影響を及ぼすことはない。また、ジョイスティックなんかのペリフェラルも簡単に接続できそうな気もしたので。

で、ここ2,3日Cortex A53の仕様やら、BCM2837 SoCの仕様やらを読んでみているが、SoCの仕様を理解するだけでも並大抵のことではないことが分かった。あとプログラミング環境を構築するのもなかなか面倒そうではある。まずはアセンブラ・コードを書いて、ブートして実行できるようになるまでを目指そうか。例によってそこまででおなか一杯になりそうな気もするけどね。

なんとなくBash on Ubuntu on Windows上で環境が作れないかなぁとか思っている。まあぼちぼちやっていこうか。