今私は小さな魚だけれど

ちょっぴり非日常な音楽を紹介するブログです

【GB】C言語でゲームボーイソフトをコンパイルし、beep音を鳴らす

いろいろ苦労したものの、LSDjを使って(稚拙ながら)音楽を打ち込めるようになりました。ただ、人間というのはできることが増えると欲が出るもので、「ゲームボーイ用ソフトが作れればもっといろいろできるんじゃないか」と考え始めました。

  • 例えば.nsfや.mml形式のファイルを、GBで演奏できるように変換したい
  • GBAだけではなく、初代GBでも動くようにしたい
  • 操作は一旦「スタートボタンを押せば演奏開始・停止」程度できればいい

いろいろ調べてもよく分からず悩んでいたものの、C言語で実装するツールがあるそうなのでそれを利用しました。最初からアセンブリできちんと理解して開発する道もありそうだったのですが、正直私の知識(一般的なPythonプログラマー)では学ぶことが多すぎ、動かしながら必要に応じて学ぶほうがモチベーションが保てそうだったからです。

hackaday.io

gbdkをインストールします。Macの場合はパッチを充てる必要があるそうなのですが、mistydemeo/formulae/gbdkではMac用にフォークしたGitHubリポジトリからインストールされるようです。

brew tap mistydemeo/formulae
brew install --HEAD mistydemeo/formulae/gbdk

コードの記述後、これでコンパイルできました。

lcc -o new.gb new.c

そして、こちらのサンプルにある"beep"のコードをコンパイルして、エミュレータで読み込むことに成功しました。

github.com

こんな感じ。

f:id:takeshi0406:20190201215556p:plain

アセンブリを学ぶのはかなり骨が折れそうでしたが、C言語なら改造して進められそうです。まずはいろいろな音を出すところからかな。