連載
» 2014年11月06日 16時59分 UPDATE

カウントダウン企画第8回:日刊!プチコン3号――取扱いがシンプルになった「リソース」

待ちきれないプチコン待機組のために、配信日まで日刊連載開始! 記事のネタが尽きるのが先か、配信が始まるのが先か! ……最近夜が冷え込むようになりました。

[瓜生聖,ITmedia]

取扱いがシンプルになった「リソース」

 前回の記事では、グラフィックページについて解説した。グラフィックページはSPRITE/BGのキャラクタデータ置き場やグラフィック画面として利用することができる、全6ページのメモリバッファだ。プチコンmkIIがSPU(SPRITE用)、BGU(BG用)のように用途別にリソースを分けていたのに対し、プチコン3号ではグラフィックページに1本化されている。

og_puticom3-8_001.png グラフィックページとSPRITEキャラ、BGキャラそれと各種画面の関係

 そのため、これらのリソースに対する入出力も極めてシンプルになっている。まず、グラフィックページをファイルに保存するSAVE、ファイルからグラフィックページに読み込むLOAD。ファイルではなく配列に保存する場合にはGSAVE、その逆はGLOADを使用する。GLOADはグラフィックページではなくグラフィック画面への書き出しになるので、GPAGEで読み込み先のグラフィックページを描画画面として設定する必要がある。グラフィックページ同士のコピーならGCOPYを使えばよい。なお、

「1画面分(400×240ピクセル)のデータ配列を用意し、GLOAD命令で毎フレーム、グラフィックページに転送することを繰り返した場合、60fpsを維持できるのか知りたいです」

というツイートがあったので、2パターンのデータ配列を用意して交互に切り替えてみたところ、配列がデフォルト(倍精度)の場合だと30fps強、整数だと50fps強という結果だった(ダブルバッファで描画した場合)。

 BG画面は直接ファイルに書き込む命令はないが、BGSAVE/BGLOADで配列への保存/配列からの読み込みができる。SAVE/LOADは配列に対しても利用可能なので、ワンクッションはさめばBG画面のファイル入出力も可能だ。

 そのほか、プチコンmkIIのMEMリソースの代用としては同じくSAVE/LOADを使った文字列保存/読み込み機能が利用できる。なお、カラーパレット機能は廃止されているため、プチコンmkIIのCOLに相当するリソースはない。

og_puticom3-8_002.png グラフィックページ・画面・配列・ファイルにおけるリソースの流れと命令

関係する命令

SAVE "[リソース名:]ファイル名"

 説明(1/3)

  ファイルの保存

  ・実行時、確認のダイアログが表示される

 引数

  リソース名:

   保存するリソースを指定

   省略時:カレントプログラムSLOT

   PRG0〜PRG3:プログラムSLOT(PRG=PRG0)

   GRP0〜GRP5:グラフィックページ

  ファイル名

   保存するファイルに付ける名前

SAVE "TXT:ファイル名",文字列変数

 説明(2/3)

  文字列変数をテキストファイルに保存

 引数

  ファイル名

   保存するファイルに付ける名前(先頭に"TXT:"を付ける)

  文字列変数

   保存するテキストデータの格納された文字列変数(UTF-8)

SAVE "DAT:ファイル名",数値配列

 説明(3/3)

  数値配列をバイナリファイルに保存

 引数

  ファイル名

   保存するファイルに付ける名前(先頭に"DAT:"を付ける)

  数値配列

   保存するデータの格納された数値配列

LOAD "[リソース名:]ファイル名"[,ダイアログ表示フラグ]

 説明(1/4)

  ファイルの読み込み

  ・実行時、確認のダイアログが表示される

  ・実行中のプログラムと同じSLOTへのロードはできない

  ・他のSLOTに読み込まれたプログラムの変数・ラベル・命令を参照するには、一度RUN/EXEC命令で実行するか、USE命令で使用可能にしておく必要がある

 引数

  リソース名

   読み込み先のリソースを指定

   省略時:カレントプログラムSLOT

   PRG0〜PRG3:プログラムSLOT(PRG=PRG0)

   GRP0〜GRP5:グラフィックページ

  ファイル名

   読み込むファイル名

  ダイアログ表示フラグ

   FALSE=LOAD用のダイアログを表示させない

 (著者注:連載第2回で紹介したときから仕様が変更されています)

LOAD "TXT:ファイル名"[,ダイアログ表示フラグ] OUT 文字列変数

 説明(2/4)

  テキストファイルを文字列変数に読み込む

  ・実行時、確認のダイアログが表示される

 引数

  ファイル名

   読み込むテキストファイル名(先頭に"TXT:"を付ける)

  ダイアログ表示フラグ

   FALSE=LOAD用のダイアログを表示させない

  文字列変数

   読み込んだテキストファイルが格納される文字列変数

 文字列変数=LOAD("TXT:ファイル名")[,ダイアログ表示フラグ]

 説明(3/4)

  テキストファイルを文字列変数に読み込む(関数タイプ)

  ・実行時、確認のダイアログが表示される

 引数

  ファイル名

   読み込むテキストファイル名(先頭に"TXT:"を付ける)

  ダイアログ表示フラグ

   FALSE=LOAD用のダイアログを表示させない

  文字列変数

   読み込んだテキストファイルが格納される文字列変数

LOAD "DAT:ファイル名",数値配列[,ダイアログ表示フラグ]

 説明(4/4)

  バイナリファイルを数値配列に読み込む

  ・実行時、確認のダイアログが表示される

 引数

  ファイル名

   読み込むバイナリファイル名(先頭に"DAT:"を付ける)

  数値配列

   読み込んだバイナリファイルが格納される数値配列

  ダイアログ表示フラグ

   FALSE=LOAD用のダイアログを表示させない

GSAVE [転送元ページ,][X,Y,幅,高さ,]転送先配列,色変換フラグ

 説明

  画像を配列へコピー(画面全体)

 引数

  転送元ページ

   0〜5(GRP0〜GRP5) 省略時:現在の描画ページ

   ※ 初期状態ではGRP4にSPRITE用キャラ、GRP5にBG用キャラが存在しているので注意

  X,Y,幅,高さ

   コピー元範囲の始点X座標,始点Y座標,幅,高さ(ドット)

   省略時:現在の描画領域

  転送先配列

   画像を格納する配列変数

   ※ 配列の要素が不足する場合、1次元配列に限り自動追加される

  色変換フラグ

   1:色情報をGCOLORなどで指定する色コードに変換

   0:色変換しない(本体の内部表現のまま)

GLOAD [X,Y,幅,高さ,]画像配列,色変換フラグ,コピーモード

 説明(1/2)

  画像データを配列からグラフィック画面にコピー

 引数

  X,Y

   コピー先範囲の始点座標

  幅,高さ

   コピー先範囲の幅・高さ(ドット)

  画像配列

   GSAVEによって画像データが格納された数値配列

  色変換フラグ

   1:色情報をGCOLORなどで指定する色コードに変換

   0:色変換しない(本体の内部表現のまま)

  コピーモード

   TRUE(1):透明色をコピーする FALSE(0):透明色をコピーしない

GLOAD [X,Y,幅,高さ,]画像配列,パレット配列,コピーモード

 説明(2/2)

  画像データを配列からグラフィック画面にコピー(インデックスカラー扱い)

 引数

  X,Y

   コピー先範囲の始点座標

  幅,高さ

   コピー先範囲の幅・高さ(ドット)

  画像配列

   GSAVEによって画像データが格納された数値配列

  パレット配列

   パレットデータが格納された数値配列

  色変換フラグ

   1:色情報をGCOLORなどで指定する色コードに変換

   0:色変換しない(本体の内部表現のまま)

  コピーモード

   TRUE(1):透明色をコピーする FALSE(0):透明色をコピーしない

GPAGE 表示ページ,操作ページ

 説明

  グラフィック表示ページと操作ページの指定

 引数

  表示ページ

   0〜5:GRP0〜GRP5

  操作ページ

   0〜5:GRP0〜GRP5

   初期状態ではGRP4にSPRITE用キャラ、GRP5にBG用キャラが存在しているので注意

GCOPY [転送元ページ,]始点X,始点Y,終点X,終点Y,転送先X,転送先Y,コピーモード

 説明

  他のグラフィックページから画像をコピー

 引数

  転送元ページ

   0〜5(GRP0〜GRP5) 省略時:現在の描画ページ

   ※ 初期状態ではGRP4にSPRITE用キャラ、GRP5にBG用キャラが存在しているので注意  始点X,Y 終点X,Y

   コピー元範囲の始点座標と終点座標(X:0〜399,Y:0〜239)

  転送先X,Y

   コピー先範囲の始点座標(X:0〜399,Y:0〜239)

  コピーモード

   0:透明色をコピーしない 1:透明色をコピーする

BGSAVE レイヤー,[始点X,始点Y,幅,高さ,]数値配列

 説明

  BGスクリーンの内容を数値配列へコピー

 引数

  レイヤー

   コピー元のレイヤー番号:0〜3

  始点X,始点Y

   コピー元範囲の始点座標(キャラ座標)

  幅,高さ

   コピー元範囲の幅・高さ(キャラ単位)

   ※ 範囲指定を省略した場合、BGスクリーン全体が対象となる

  数値配列

   データがコピーされる数値配列

   ※ 要素が不足する場合、1次元配列に限り要素が自動追加される

BGLOAD レイヤー,[始点X,始点Y,幅,高さ,]数値配列

 説明

  配列からBGデータをBGスクリーンにコピー

 引数

  レイヤー

   コピー先範囲のレイヤー番号:0〜3

  始点X,始点Y

   コピー先始点座標(キャラ座標)

  幅,高さ

   コピー先範囲の幅・高さ(キャラ単位)

   ※ 範囲指定を省略した場合、BGスクリーン全体が対象となる

  数値配列

   BGSAVEによってBGデータが格納された数値配列

 次回はマイク入力を紹介する。

※本稿の内容は開発中のものです。製品版配信時には仕様が変更される場合があります。

 「日刊!プチコン3号」で取り上げて欲しいネタや疑問、質問、感想は、ハッシュタグ「#nikkan_petitcom3」をつけてツイート! ライターの瓜生氏がたぶん(連載の中で)答えてくれるぞ。


Copyright© 2016 ITmedia, Inc. All Rights Reserved.