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

» 2014年11月06日 16時59分 公開
[瓜生聖,ITmedia]

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

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

グラフィックページと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に相当するリソースはない。

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

関係する命令

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 © ITmedia, Inc. All Rights Reserved.

アクセストップ10

2026年07月01日 更新
  1. Macで外付けGPUが使える「TinyGPU」をRTX 5060 Tiで検証 実用性と浮き彫りになった課題 (2026年06月29日)
  2. 懐かしの「タマゴ型マウス」が現代仕様にアップデート エレコム創業40周年モデルの4代目「EGG MOUSE」は10色の着せ替え対応で4980円 (2026年06月30日)
  3. サブスク不要で画面を持たない潔さ Polarの新型フィットネストラッカー「POLAR Loop」を「Fitbit Air」と比較 (2026年06月30日)
  4. “縦2眼”で広角20mmから望遠120mmまでカバーするジンバルカメラ「DJI Osmo Pocket 4P」を試す (2026年06月30日)
  5. レノボ、スピーカー9基を備えた12.1型Androidタブレット「Lenovo Tab Plus Gen 2」 (2026年06月30日)
  6. NUC風PCやメモリ128GBのモンスターミニPC「DAIV CX」などを続々投入! マウスコンピューターが事業戦略発表会で明かした新製品ロードマップ (2026年06月29日)
  7. 各社製マザーボードをデザインしたカプセルトイ「手のひらPCパーツ」が発売予定 4大メーカーが監修 (2026年06月29日)
  8. アキバ夏のボーナス商戦は「コスパと延命」がキーワード! 5000円切りのピラーレスケースや3000円弱のDDR5用メモリクーラー登場 (2026年06月29日)
  9. GIGAスクール時代の学校に欠かせない「ネットワーク」と「周辺機器」 その動向に迫る (2026年06月30日)
  10. IBMが世界初のサブ1nm半導体チップ技術を発表/LenovoがノートPC向けで世界初となる“1000Wh/L”バッテリーの詳細を明らかに (2026年06月28日)
最新トピックスPR

過去記事カレンダー