完成!!
何とか完成する事が出来ました。
作り始めたのが2009年の1月4日、出来たのが2010年2月20日、調整やバグ取りなどをして最終的に2010年4月1日となりました。
1年3ヶ月、少しずつトライ&エラーで何とかここまで来れました。
まずは、ゲーム自体を作り、次にタイトルとデモ、エンディングと作り、最後にそれを繋がるようにして、ICE-MAN Advanceの一連のゲームのシステムは完成しました。
問題その1
ところが、プレイしていて思ったのですが、AとBボタンで主人公バッキーは左右にアイスブロックを置きますが、どのボタンに割り当てるかはゲームボーイアドバンスの本体を見て決めました。
所有するゲームボーイアドバンス(SP)のボタンを見てみると、右側にAボタン、左側にBボタンの配置になっています。
なので、そのままアイスブロックを右に置くのはAボタン、左に置くのはBボタンと決めて、キー入力のプログラムを書きました。
そしてエミュレータで動かしてキーボードで操作してみると、Aボタンに割り当ててあるキーはZ、Bボタンに割り当ててあるキーはXでした。
なんと、キーボード上の操作では、左右が反対になってしまうのです。
エミュレータの設定でキーアサインで変えられると思いましたが、その機能は無いようでした(Mac OSX版 VisualBoyAdvance version 1.7.1-J)。
考えた末、SELECTキーを押すとボタンを入れ替えるようにしました(SELECTキーを押す毎にABボタンが入れ替わるしくみ)。
そして、わかりにくかった金塊の光るエフェクトですが、ただ薄い黄色に切り替えるのでは無く、金色→白→とても薄い金色→薄い金色→金色を2回連続で色を変えてみたら、前よりも光っているように見えるようになりました。
問題その2
これは、エンディングを作る前の事になりますが、音を再生する為に西田亙さんの「Linuxから目覚めるぼくらのゲームボーイ!」を参考に(というかそのまま)、エミュレータにてオリジナルから得たWAVファイルを8ビットモノラル形式に換えて、ソースコードとして利用する為テキストデータ化しました。
そしていざ鳴らしてみると、音が再生された後にノイズが鳴る問題が発生しました。
「Linuxから目覚めるぼくらのゲームボーイ!」のソースコードに間違いは無く、この問題を解決するのに1ヶ月以上かかったと思います(というか、自力で解決出来ませんでした)。
知人にデバッグを依頼してみたら、PCMのデータ転送をDMA(Direct Memory Access)を使って、CPUを介さずにメモリからメモリへ転送する様にしていたのですが、DMA割り込み時にV-RAMのバッファ転送に時間がかかっていた為に、DMA転送できずにいたのが原因でした。
わかる人にはわかると思いますが、私のプログラムは、一度割り込みがかかったら、後からの割り込みを処理が終了するまでシャットアウトするようにしていたのです(重複する割り込み処理の方法を知らないのと、管理が大変そうだった理由です)。
そこで、V-RAMのバッファ転送もDMA転送で高速化した為、PCMデータ転送が上手くいき、ちゃんと音が再生するようになりました。
それでは、完成版のデモの動画をご覧ください。
|