WASM-4 APIリファレンス日本語版
このあたりでWASMのAPIについてみてみましょう。WASM-4のAPIはとても簡素で、関数がたった12個しかありません。この12個さえ理解すればWASM-4を完全に理解したも同然です。(ほんとか?)
この記事では、WASM-4の全体像をつかめるよう、すべての関数について簡単に紹介しておきたいと思います。でも、英語を読める人はこの公式のリファレンスを読もう!
グラフィックス
blit (spritePtr, x, y, width, height, flags)
画像をスクリーンに描画します。画像データは w4 png2src
でPNG画像から生成するといいです。
blitSub (spritePtr, x, y, width, height, srcX, srcY, stride, flags)
画像の一部分を指定してスクリーンに描画します。
line (x1, y1, x2, y2)
直線を描きます。
hline(x, y, len)
水平の直線を描きます。
vline(x, y, len)
垂直の直線を描きます。
oval (x, y, width, height)
楕円形を描きます。描画色を変更すると枠線を描くこともできます。
rect (x, y, width, height)
矩形を描画します。描画色を変更すると枠線を描くこともできます。
text (str, x, y)
8ピクセル四方のフォントサイズで文字列を描画します。ASCIIの文字しか描けず、日本語の平仮名や漢字はWASM-4に内蔵されていないので書けません。どうしても日本語を描画したいなら、使いたい文字を画像にしてblit
するしかないと思います。
フォントには矢印キーとボタン1、ボタン2のフォントも含まれていて、画面上に操作方法を表示したいときにはこれを使えば良さそうです。使える文字はフォントのファイルを見るとわかります。
サウンド
tone (frequency, duration, volume, flags)
周波数、長さ、ボリュームなどを指定して音を鳴らします。BGMを鳴らすのも、効果音を鳴らすのもこの関数を使います。MP3ファイルを再生するだとか、MIDIファイルを再生するだとか、そういう高度な機能は一切ありません。この関数の仕様は実はかなり複雑なので、詳しくは公式ドキュメントをどうぞ。しかもこの記事の執筆時点でバグらしき挙動があったので要注意です。
ゲームデータの保存と読み込み
diskw (srcPtr, size)
バイトブロックを渡してゲームのセーブデータを書き込みます。全体でひとつの領域になっていて、セーブデータ1、セーブデータ2……みたいな区別もないのでそのへんは自力でなんとかしましょう。しかも1キロバイトが最大長です。
diskr (destPtr, size)
ゲームのセーブデータを読み込みます。書き込まれたサイズがどのくらいなのかは引数で自力で指定しなければならないので、可変長のセーブデータだと微妙に困ります。先頭にファイル長を入れておけばいいんでしょうか。
デバッグ
trace (str)
デバッグ用にコンソールに文字列を出力します。Rustだとformat!
マクロを組み合わせてtrace(format!("PATERN", values))
の形で使うと良さそうです。
WASM-4の関数はこれで全部です。WASM-4が定める関数のインターフェイスは、上記の12個加えて、各ゲームごとに定義するコールバック関数である update
と start
だけです。
次回予告
次回はどんなゲームを作るのかの計画をちゃんと練りたいと思います。