トッププチコン関連 > その他





リソース一覧(2012/04/12、2012/06/09更新)

リソースはPRG、MEM、GRP、CHR、SCR、COLの6種類で、
LOAD命令やグラフィック関連の命令では更にBGU、SPUなどのリソース名が出てきますが、
前者はデータの形式(種別)、後者は(操作先の)データ領域の名前といったところです。

一部のリソースは説明書のLOAD命令やCHRINITの説明には載っておらず、
キャラクタ一覧やパッケージパラメータの説明など、他の場所に記述があったりします。
(フォント(BGF)はサンプルのCHREDで編集できるので載せたほうがいいと思うのですが)
※追記:Ver2.1でLOAD命令の説明にBGF、SPSが追加されました。(2012/05/09)

ちなみに、説明書に載っていない仕様として、
リソース名を指定する命令(LOAD,SAVE命令やCHRSET命令など)で上下の各画面でデータが独立しているリソースは、
通常は操作先指定命令(BGPAGE、SPPAGE、GPAGE)で操作先として指定した画面に対して処理が行われますが、
「BGU0U」「BGFL」のように、
リソース名の末尾に「U」を付けると上画面、「L」を付けると下画面のリソースを直接指定できます。
(説明書の「SAVE命令(上級者向け)」に載っているパッケージパラメータの説明にはこの形で記述されています)
※パレット関連の命令(COLINIT、COLSET、COLREAD)は記述方法が異なるため、この方法は使えません。

種別 リソース名
(キャラ名)
上下画面で独立 説明
PRG PRG - プログラムデータ
MEM MEM - メモリ文字列
(専用変数MEM$の内容をやりとりできる)
GRP GRP0〜GRP3 - グラフィック面の画像データ(ページ0〜3)
CHR SPU0〜SPU7 ×(上画面のみ) 上画面スプライト用キャラクタ(バンク0〜7)
SPS0〜SPS1 下画面スプライト用キャラクタ(バンク0〜1)
SPD0〜SPD3 ×(下画面のみ) システムアイコン用キャラクタ(バンク0〜3)
(ICONSET命令などで使用するキャラクタ)
BGU0〜BGU3 BG用キャラクタ(バンク0〜3)
BGF (BGF0) フォント用キャラクタ
BGD0〜BGD1 ???(バンク0〜1)
主に下画面のダイアログやパネルの背景部用のキャラクタと思われる
SCR SCU0〜SCU1 BGスクリーンデータ(SCU0=手前、SCU1=奥)
COL COL0〜COL2 パレット(色情報)データ
(COL0=BG面、COL1=スプライト面、COL2=グラフィック面)



背景面に関して(2012/04/27)

COLOR命令の第2パラメータでコンソールの背景色が指定できますが、
これを表示する背景面は、扱い的にはBG面となっています。
背景色が0番の場合、リソース「BGD0」のキャラ0番(色番号0で塗りつぶされたキャラ)が、
それ以外の色の場合、リソース「BGD0」のキャラ15番(色番号15で塗りつぶされたキャラ)が配置されます。
パレットの系列番号は背景色の番号と同じ(背景色が5番ならパレット5番)になります。
BG扱いなので、BGのパレットの該当番号の色を変えると、背景色も変わります。
またBGD0はCHRSETで書き換えが可能です。
(ただしBGDはシステム用途のものなので、あまり手を付けないほうがいいと思います)

なお、プチコンmkIIの初期バージョンはACLSで背景色が0でなく1でクリアされるというバグがあります。
背景色0番でクリアしたい場合、ACLSの後、COLOR 15,0:CLSと入れておく必要があります。
※追記:上記のバグはVer2.1で修正されました。(2012/05/09)



SPHOMEの指定範囲(2012/05/09)

スプライトの表示原点および回転拡縮の中心点を指定するSPHOME命令ですが、
説明書では座標の指定範囲は0〜63となっていますが、実際には-128〜+127まで指定できるようです。
(範囲外を指定した場合は反対側へループします)
画面全体はカバーできないものの、スクリーン上の特定地点を中心とした回転・拡大縮小を
座標計算をせずに表示させることもできます。

方法は、SPOFSで中心となる座標を指定し、
SPHOMEの座標を「中心座標-表示座標+(キャラサイズ/2)」で指定します。
※表示座標は回転拡縮を行っていない時(SPANGLE=0,SPSCALE=100)の座標
※「+(キャラサイズ/2)」を入れることで表示座標の部分にキャラクタの中心部分が来る
 上記部分がない場合はキャラクタの左上部分の座標=表示座標の位置となる

また、SPSCALEによる拡大縮小で擬似3D的な表現にも応用できそうです。
(ただし、スケールの変化曲線など、調整が必要)
※拡大率が約140%を超えると、回転で一定の矩形範囲をはみ出た部分が表示が欠けてしまいます。
 これを防止するには、拡大率を100%を超えないようにする、
 またはキャラクタ画像をスプライトサイズの半分程度にする
 (例えば16*16ドットのキャラなら、32*32画像の中央16*16部分に描くなど)
 といった対策が必要です。



GAME4の隠し機能(2012/05/09)

サンプルゲームのGAME4(ダンマクシューティング)はタイトル画面で左右キーで無敵設定、
上下キーで開始ステージの変更ができます。
また、ゲーム中Yボタンで斜め前方へショットを撃ちます。



自動補間の更新間隔(2012/06/08)

スプライトの移動・回転拡縮やBG面のスクロールで使える自動補間機能ですが、
VSYNCやWAITの有無に関係なく、常に1フレーム(1/60秒)単位で割り込みで表示が更新されます。
メインループのウエイトがVSYNC 2(=30fps)でも、スプライトやBGスクロールの移動補間を2フレームにすると
「内部処理は30fpsでも見た目は60fps」なプログラムになります。



MEM$はCLEAR命令では初期化されない(2012/06/09)

MEM$の内容はCLEAR命令では初期化されません。
MEM$を使用するプログラムでは起動時に「MEM$=""」で初期化しておきましょう。
※この仕様を利用して、EXEC命令でのパラメータの受け渡しにも使えそうです。



INSTR命令で開始位置を指定する(2012/07/08)

INSTR命令の書式は INSTR( 文字列 , 検索対象文字列 ) で、
最初に検索対象文字列が見つかった位置が返りますが、
INSTR( 開始位置 , 文字列 , 検索対象文字列 ) で、
指定した位置から検索ができます。(位置はMID$と同様、文字列の先頭が0です)
なお、結果は常に文字列の先頭を起点(=0)とした値となります。



FLOOR命令の注意点(2012/08/09)

FLOOR命令は「整数部を取り出す命令」となっていますが、
実際には「指定した値を超えない、最も大きな整数」が返ります。
負の小数の場合、単純に小数点以下を切り捨てた数ではなく、それより-1した数が返ります。
例えば、FLOOR(1.5)だと1が返りますが、FLOOR(-1.5)だと-1ではなく-2が返ります。(-2<-1.5<-1のため)
おそらく、+1.5は「1+0.5」、-1.5は「-2+0.5」のように扱われており、
FLOOR命令は上記の状態での整数部分を取り出しているためだと思われます。

B=FLOOR(A)   →  B=FLOOR(ABS(A)) * SGN(A) のように変更することで、
符号に関係なく整数部のみを取得することができます。





戻る