日刊!プチコン3号――取扱いがシンプルになった「リソース」:カウントダウン企画第8回
待ちきれないプチコン待機組のために、配信日まで日刊連載開始! 記事のネタが尽きるのが先か、配信が始まるのが先か! ……最近夜が冷え込むようになりました。
- →第1回:プチコンの常識が変わる「画面レイヤー」
- →第2回:4倍編集拳!「プログラムSLOT」
- →第3回:「プログラムSLOT」を活用してみる
- →第4回:ちょっと便利な「SmileTool」
- →第5回:自由度が高くなった「BG画面」
- →第6回:上下画面の使い分け「XSCREEN」
- →第7回:柔軟な利用が可能な「グラフィックページ」
取扱いがシンプルになった「リソース」
前回の記事では、グラフィックページについて解説した。グラフィックページはSPRITE/BGのキャラクタデータ置き場やグラフィック画面として利用することができる、全6ページのメモリバッファだ。プチコンmkIIがSPU(SPRITE用)、BGU(BG用)のように用途別にリソースを分けていたのに対し、プチコン3号ではグラフィックページに1本化されている。
そのため、これらのリソースに対する入出力も極めてシンプルになっている。まず、グラフィックページをファイルに保存する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に相当するリソースはない。
関係する命令
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」をつけてツイート! ライターの瓜生氏がたぶん(連載の中で)答えてくれるぞ。
関連記事
- カウントダウン企画第7回:日刊!プチコン3号――柔軟な利用が可能な「グラフィックページ」
待ちきれないプチコン待機組のために、配信日まで日刊連載開始! 記事のネタが尽きるのが先か、配信が始まるのが先か! カウントダウンと言いながらカウントが増え続けているのも気になるぞ! - カウントダウン企画第6回:日刊!プチコン3号――上下画面の使い分け「XSCREEN」
待ちきれないプチコン待機組のために、配信日まで日刊連載開始! 記事のネタが尽きるのが先か、配信が始まるのが先か! もう11月なんだが。 - カウントダウン企画第5回:日刊!プチコン3号――自由度が高くなった「BG画面」
待ちきれないプチコン待機組のために、配信日まで日刊連載開始! 記事のネタが尽きるのが先か、配信が始まるのが先か! - カウントダウン企画第4回:日刊!プチコン3号――ちょっと便利な「SmileTool」
待ちきれないプチコン待機組のために、配信日まで日刊連載開始! 記事のネタが尽きるのが先か、配信が始まるのが先か! - カウントダウン企画第3回:日刊!プチコン3号――「プログラムSLOT」を活用してみる
待ちきれないプチコン待機組のために、配信日まで日刊連載開始! 記事のネタが尽きるのが先か、配信が始まるのが先か! - カウントダウン企画第2回:日刊!プチコン3号――4倍編集拳!「プログラムSLOT」
待ちきれないプチコン待機組のために、配信日まで日刊連載開始! 記事のネタが尽きるのが先か、配信が始まるのが先か! - カウントダウン企画第1回:日刊!プチコン3号――プチコンの常識が変わる「画面レイヤー」
待ちきれないプチコン待機組のために、配信日まで日刊連載開始! 記事のネタが尽きるのが先か、配信が始まるのが先か! - プチコンmkIISRじゃないよ:なかなか出ない“プチコン3号”を見てきた――東京ゲームショウ2014
自分の手から「作る」ということを奪われてしまった昔の少年にも、「作りたい」という気持ちがまだ形にならない今の少年にも応えてくれる――それがプチコン3号だ。 - 思い出をカタチに:「プチコンmkII」で懐かしむ「レトロPC」の世界
Twitterで相互フォローをしている某氏から、8ケタの番号が書かれたナゾめいたDMが届いた。近所のコンビニに向かい、コピー機のタッチパネルから指示された予約番号を打ち込む。吐き出されたA3用紙に印刷されていたのは、23枚のQRコードと取り扱い説明書だった……。
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.