レトロPCでホビープログラミングにいそしんでいた人たちには、さまざまなテクニックの蓄積があるはずだ。当時のテクニックといえば、貧弱なハードウェア上でいかにして高速に処理を行うか、いかにして大量のデータを扱うか、という2点が中心だった。
キャラクターの重ね合わせ処理、高速多重スクロール、アニメーション、瞬間画面表示という課題に対し、プレーン分解による重ね合わせ、テキスト画面によるマスク、パレットアニメーション、PUSH/POP命令を利用した16ビット転送、ループの展開、FDCとのハンドシェークの簡略化、インタリーブフォーマットによるディスクアクセス高速化などなど、数十〜数百キロバイトの中に詰め込まれた叡智(えいち)は芸術の域に達する。
これらのテクニックの中にはプチコンでも利用可能なもの、同じ考え方が応用できるものもある。DSi/3DSに搭載された専用ハードウェアの機能、それに対応するプチコンのコマンド・機能をいかに使ってプログラムを作るか、といった実装方法についてはさまざまな工夫を盛り込める余地がある。そしてそれこそがレトロPCホビープログラマの真骨頂でもある。
例えば、暗闇に浮かび上がってくる“魔の元凶”を表現するにはパレット操作が利用できる。パレットとはGIF画像などで採用されているインデックスカラーと同じような仕組みで、それぞれのパレット番号に対してRGB値で指定した色を定義し、各ピクセルに対してはパレット番号を介して色を指定するというものだ。パレットを変更すると描画済みのグラフィックスもすべて色が変わるので、高速に全体を書き換えることができる。
さらにはフェードインだけではなく、パレットによって数コマのアニメーションを実現したものもある。そのテクニックをそのまま使うこともできるが、上下画面分の非表示グラフィックス画面を使って切り替える、それぞれのコマの画像をグラフィックス画面に置いてコンソール画面やBG画面でマスクしておくなど、プチコンで利用できるテクニックは多い。さらに、ハードウェア性能が上がったために有効となったテクニックもある。例えば、アニメーションのために都度、グラフィックス画面全体を本体メモリから読み直しても20fps程度は出せるようだ。
また、2枚のBG画面、優先度に自由度のあるスプライトもアプローチの幅を広げてくれる。BG画面の表示部分は256×192ピクセルだが、BG画面自体は512×512ピクセルあり、表示部分よりもはるかに広い。実際にどの部分を表示するかはピクセル単位で指定する。そのため、キャラクターの配置は8ピクセル単位だが、表示する際に1ピクセル単位で調整することができる。あらかじめBG画面に全体の絵を描いておき、表示位置(オフセット)を上にずらしていけば表示としては下にスクロールしていくことになる。
さらにこのオフセットの操作(BGOFS)では「何フレームかかって新しい位置に移動させるか」という指定ができるので、本来バックグラウンド処理ができない、リソースを読み込みながらスクロールさせる、といったことが可能になる。さらに2枚のBG画面をダブルバッファのように使えばバギュ=バデットからイースまで一気にスクロールできるだろう。
ところで、プチコンmkIIのBASICの仕様以外で大きな追加機能の1つがQRコードの読み込みだ。これによってプログラムの配布が可能となっただけでなく、有志の手によって「リソースファイルの取り込み」が可能になった。あおごん氏作のプチコン用画像コンバータ「DSPCBMP」は、BMPファイルをプチコンのキャラクターデータ、カラーパレットデータ、グラフィックスデータのPTCファイルに変換する。PTCファイルはスマイルブームのWebサイトにあるQRコード変換ツールでQRコード化した後、プチコンmkIIに取り込むことができる。
なんだか回りくどい、と思われたかもしれない。プチコンでは基本的にリソースファイルやプログラムファイルは、本体メモリ内に配置される。メニューには「SDメモリーカード書き込み」というものがあるが、これはQRコードに変換するための一方向の機能であり、SDメモリーカードから読み込むことはできない。ニンテンドーDSi/3DS用のソフトウェアとして、レギュレーションの範囲内でユーザーの利便性を追求した結果だろう。
Copyright © ITmedia, Inc. All Rights Reserved.