0~3(GRP0~GRP3) 初期状態のSPRITE用ページは3(GRP3)
参考(ページ3にはスプライト用の画像が定義されています)
SPPAGE 3
グラフィックページ番号(0~3)
P=SPPAGE()
・範囲省略時画面全体
・始点と終点に指定できる座標の範囲はXSCREEENの解像度に依存します
クリップ領域の始点座標
クリップ領域の終点座標
SPCLIP 100,100,200,200
なし
・SPRITEの定義用テンプレートは上下画面共通要素
・SPSETの定義を簡略化するために用意されています
SPDEF
テンプレートの定義番号: 0~4095
定義する元画像の座標(U:0~1279、V:0~1023)
・定義する元画像サイズ 省略時16,16
・U+Wの値が1280、またはV+Hの値が1024を超えるとエラー
SPRITEの座標基準点 省略時0,0
b00 | 表示(0=OFF、1=ON) #SPSHOW |
b01 | ↑90度単位の回転(b01とb02の2ビットで指定) |
b02 | ↓#SPROT0、#SPROT90、#SPROT0180、#SPROT270 |
b03 | 横反転(0=OFF、1=ON)、#SPREVH |
b04 | 縦反転(0=OFF、1=ON)、#SPREVV |
b05 | 加算合成(0=OFF、1=ON)、#SPADD |
省略時 0x01(表示のみON)
SPDEF 0,192,352,32,32,16,16,1
SPRITEのテンプレートデータが格納された数値配列
・1個分の要素はU,V,W,H,原点X,原点Y,アトリビュートの7つ
・要素数は7の倍数である必要がある
・0から順に要素数/7までのSPRITEテンプレートが定義される
定義開始番号を指定:0~4095
画像の定義位置調整用として加算されます(各0~511)
SPDEF SRCDATA SPDEF SRCDATA 256, 0,256
SPRITEのテンプレートデータが列挙されたDATA命令のラベル
・@ラベル名は""でくくるか、文字列変数で指定する
・先頭データは定義するSPRITE数とし、
続いて各SPRITEのデータを列挙(1個につき7データ)
・1個分のデータはU,V,W,H,原点X,原点Y,アトリビュートの7つ
定義開始番号を指定:0~4095
画像の定義位置調整用として加算されます(各0~511)
SPDEF "@SRCDATA" SPDEF "@SRCDATA", 256, 0,256
テンプレートの定義番号: 0~4095
画像の座標を受け取る変数
画像サイズを受け取る変数
SPRITEの座標基準点を受け取る変数
アトリビュートを受け取る変数
SPDEF 2 OUT U,V,ATR
・コピー不要な要素は省略可能(区切りの','カンマは必要)
・引数部分はコピーした上で調整する場合に利用
テンプレートの定義番号:0~4095
コピー元になる定義番号:0~4095
定義する元画像の座標(U:0~1279、V:0~1023)
定義する元画像サイズ 省略時16,16
※U+Wの値が1280、またはV+Hの値が1024を超えるとエラー
SPRITEの座標基準点 省略時0,0
b00 | 表示(0=OFF、1=ON) #SPSHOW |
b01 | ↑90度単位の回転(b01とb02の2ビットで指定) |
b02 | ↓#SPROT0、#SPROT90、#SPROT0180、#SPROT270 |
b03 | 横反転(0=OFF、1=ON)、#SPREVH |
b04 | 縦反転(0=OFF、1=ON)、#SPREVV |
b05 | 加算合成(0=OFF、1=ON)、#SPADD |
省略時 0x01(表示のみON)
SPDEF 0,255,192,352,32,32,16,16,1 SPDEF 1,255,,,32,32,,,
・SPSETによりSPRITEは利用可能となる
・SPSET実行により回転等の情報は全て初期化
・SPVARの値はすべて0になる
・SPHIT系衝突判定を使う時はSPSET後にSPCOLを呼びます
作成するSPRITEの番号: 0~511
SPDEFで定義したテンプレートの定義番号: 0~4095
SPSET 1,500
・SPDEFの値を使わずに独自に設定する場合に利用
作成するSPRITEの番号: 0~511
定義する元画像の座標(U:0~1279、V:0~1023)
・定義する元画像サイズ 省略時16,16
・U+Wの値が1280、またはV+Hの値が1024を超えるとエラー
b00 | 表示(0=OFF、1=ON) #SPSHOW |
b01 | ↑90度単位の回転(b01とb02の2ビットで指定) |
b02 | ↓#SPROT0、#SPROT90、#SPROT0180、#SPROT270 |
b03 | 横反転(0=OFF、1=ON)、#SPREVH |
b04 | 縦反転(0=OFF、1=ON)、#SPREVV |
b05 | 加算合成(0=OFF、1=ON)、#SPADD |
省略時 0x01(表示のみON)
SPSET 54,0,0,32,32,1
・SPRITE全体から空きを探す
SPDEFで定義したテンプレートの定義番号: 0~4095
生成された番号を受け取る変数: 0~511(-1=空きなし)
SPSET 500 OUT IX
・SPRITE全体から空きを探す
定義する元画像の座標(U:0~1279、V:0~1023)
・定義する元画像サイズ 省略時16,16
・U+Wの値が1280、またはV+Hの値が1024を超えるとエラー
b00 | 表示(0=OFF、1=ON) #SPSHOW |
b01 | ↑90度単位の回転(b01とb02の2ビットで指定) |
b02 | ↓#SPROT0、#SPROT90、#SPROT0180、#SPROT270 |
b03 | 横反転(0=OFF、1=ON)、#SPREVH |
b04 | 縦反転(0=OFF、1=ON)、#SPREVV |
b05 | 加算合成(0=OFF、1=ON)、#SPADD |
生成された番号を受け取る変数: 0~511(-1=空きなし)
SPSET 0,0,32,32,1 OUT IX
・指定範囲内で空きを探す
空きを探す範囲(0~511)
SPDEFで定義したテンプレートの定義番号: 0~4095
生成された番号を受け取る変数: 0~511(-1=空きなし)
SPSET 100,120, 500 OUT IX
・指定範囲内で空きを探す
空きを探す範囲(0~511)
定義する元画像の座標(U:0~1279、V:0~1023)
定義する元画像サイズ 省略時16,16
※U+Wの値が1280、またはV+Hの値が1024を超えるとエラー
b00 | 表示(0=OFF、1=ON) #SPSHOW |
b01 | ↑90度単位の回転(b01とb02の2ビットで指定) |
b02 | ↓#SPROT0、#SPROT90、#SPROT0180、#SPROT270 |
b03 | 横反転(0=OFF、1=ON)、#SPREVH |
b04 | 縦反転(0=OFF、1=ON)、#SPREVV |
b05 | 加算合成(0=OFF、1=ON)、#SPADD |
省略時 0x01(表示のみON)
生成された番号を受け取る変数: 0~511(-1=空きなし)
SPSET 100,120, 0,0,32,32,1 OUT IX
・利用後に開放しないとSPSET用の空きがなくなる
使用をやめるSPRITEの管理番号: 0~511
SPCLR 56
・SPSET前に使うとエラー
表示するSPRITEの管理番号: 0~511
SPSHOW 43
・表示を隠すだけでありSPRITEは存在
・SPSET前に使うとエラー
表示を隠すSPRITEの管理番号: 0~511
SPHIDE 43
・SPOFS命令の位置基準点
・回転やスケーリングの中心点
・衝突判定の中心座標
・SPSET前に使うとエラー
基準点を設定するSPRITEの管理番号: 0~511
SPRITEの左上を原点(0,0)とした相対座標
SPHOME 34,16,16
・SPSET前に使うとエラー
SPRITEの管理番号: 0~511
基準点の座標を受け取る変数
SPHOME 10 OUT HX,HY
・SPSET前に使うとエラー
対象のSPRITEの管理番号: 0~511
SPRITEを表示する画面座標
奥行方向の座標(奥:1024<液晶面:0<手前:-256)
SPOFS 23,50,80 SPOFS 23,,,1000 SPOFS 23,150,180,0
・SPSET前に使うとエラー
対象のSPRITEの管理番号: 0~511
座標を受け取る変数
奥行情報を受け取る変数
SPOFS 12 OUT X,Y,Z
・SPSET前に使うとエラー
対象のSPRITEの管理番号: 0~511
回転角度: 0~360(時計回り)
SPROT 23,45
・SPSET前に使うとエラー
対象のSPRITEの管理番号: 0~511
角度を受け取る変数
SPROT 23 OUT DR
・SPSET前に使うとエラー
対象のSPRITEの管理番号: 0~511
現在の角度(0~360)
A=SPROT(23)
・スケールを考慮した当り判定は先にSPCOLを実行
・SPSET前に使うとエラー
対象のSPRITEの管理番号: 0~511
0.5(50%)~1.0(100%)~2.0(200%)~
SPSCALE 56, 0.75, 0.75
・SPSET前に使うとエラー
対象のSPRITEの管理番号: 0~511
倍率を受け取る変数
SPSCALE 45 OUT SX,SY
・SPSET前に使うとエラー
対象のSPRITEの管理番号: 0~511
ARGB=8888形式の32ビット色コード
・Aの値を小さくすると透明度が上がる
・実際の表示色は色コードに元のドット色を乗算した値
SPCOLOR 1,RGB(16, 255,0,0) 'A=16,R=255,G=0,B=0
・SPSET前に使うとエラー
対象のSPRITEの管理番号: 0~511
現在の色コードが返る変数(32ビットARGB)
SPCOLOR 1 OUT C
・SPSET前に使うとエラー
定義を変更するSPRITEの管理番号: 0~511
SPDEF命令で登録したテンプレートの番号: 0~4095
SPCHR 0,500
・管理番号以外の引数は省略可能
・SPSET前に使うとエラー
対象のSPRITEの管理番号: 0~511
定義する元画像の座標(U:0~1279、V:0~1023)
・定義する元画像サイズ 省略時16,16
・U+Wの値が1280、またはV+Hの値が1024を超えるとエラー
b00 | 表示(0=OFF、1=ON) | #SPSHOW |
b01 | ↑90度単位の回転 | #SPROT0, #SPROT0180 |
b02 | ↓b01とb02の2ビットで指定 | #SPROT90, #SPROT270 |
b03 | 横反転(0=OFF、1=ON) | #SPREVH |
b04 | 縦反転(0=OFF、1=ON) | #SPREVV |
b05 | 加算合成(0=OFF、1=ON) | #SPADD |
省略時 0x01(表示のみON)
SPCHR 5,64,64,16,16,1 SPCHR 6,,,32,32,1 'UV skip
・SPSET前に使うとエラー
対象のSPRITEの管理番号: 0~511
元画像の座標を格納する変数
元画像のサイズを格納する変数
アトリビュートを格納する変数
SPCHR 5 OUT U,V,W,H,ATR
・SPSET前に使うとエラー
対象のSPRITEの管理番号: 0~511
定義番号を受け取る変数
SPCHR 5 OUT DEFNO
・リンクは座標のみ(回転角度や倍率情報は対象外)
・リンク先(親)指定は自分よりも小さい管理番号のみ
・子の表示座標は、親を基準とした相対座標となる
・この座標系は画面左上が原点とはならない
・リンクの階層に制限はない
・SPSET前に使うとエラー
リンク元(子)のSPRITEの管理番号: 0~511
リンク先(親)のSPRITEの管理番号: 0~511
※リンク元より小さい管理番号以外エラー
SPLINK 15,4
・SPSET前に使うとエラー
リンク元(子)のSPRITEの管理番号: 0~511
リンク先の管理番号:0~511(-1の時リンク無し)
V=SPLINK()
・SPSET前に使うとエラー
リンクを解除するSPRITEの管理番号: 0~511
SPUNLINK 15
・SPSET前に使うとエラー
・アニメは値を設定して指定時間分待つという動作
・アニメ開始はSPANIMを実行した次フレームから
・対象要素ごとに最大32個のデータを受け付ける
・時間にマイナス値を指定すると直前の値から線形補間を行う
アニメーションを設定するSPRITEの管理番号: 0~511
変化させる要素を管理する数値または文字列
0 | "XY" | XY座標 |
1 | "Z" | Z座標 |
2 | "UV" | UV座標(定義元画像座標) |
3 | "I" | 定義番号 |
4 | "R" | 回転角度 |
5 | "S" | 倍率XY |
6 | "C" | 表示色 |
7 | "V" | 変数(SPRITE内部変数7の値) |
対象数値に8を加えると実行時からの相対指定
文字列の末尾に"+"を付けた場合も相対指定(例 "XY+")
アニメデータが格納された1次元数値配列
ループ回数: (1~) 0で無限ループ
・アニメデータは数値配列に次の順で用意(最大32個まで)
・時間1, 項目1,[項目2,] 時間2,項目1,[項目2,]…
DIM PANIM[ 6 ] PANIM[0] = -60 'frame(-60=smooth) PANIM[1] = 200 'offset X,Y PANIM[2] = 100 PANIM[3] = -30 'frame PANIM[4] = 50 'offset PANIM[5] = 20 SPSET 0,0 SPANIM 0,"XY",PANIM
・SPSET前に使うとエラー
アニメーションを設定するSPRITEの管理番号: 0~511
変化させる要素を管理する数値または文字列
0 | "XY" | XY座標 |
1 | "Z" | Z座標 |
2 | "UV" | UV座標(定義元画像座標) |
3 | "I" | 定義番号 |
4 | "R" | 回転角度 |
5 | "S" | 倍率XY |
6 | "C" | 表示色 |
7 | "V" | 変数(SPRITE内部変数7の値) |
対象数値に8を加えると実行時からの相対指定
文字列の末尾に"+"を付けた場合も相対指定(例 "XY+")
・アニメデータが格納されたDATA命令の先頭ラベル
・@ラベル名を""でくくって文字列として指定(または文字変数)
ループ回数: (1~) 0で無限ループ
アニメデータはDATA命令に次の順で用意
DATA キーフレーム数(最大32)
DATA 時間1,項目1[,項目2]
DATA 時間2,項目1[,項目2]
:
@MOVDATA DATA 2 'counter DATA -60,200,100 'frame,offset DATA -30,50,20 'frame,offset SPSET 0,0 SPANIM 0,XY,@MOVDATA
・SPSET前に使うとエラー
アニメーションを設定するSPRITEの管理番号: 0~511
変化させる要素を管理する数値または文字列
0 | "XY" | XY座標 |
1 | "Z" | Z座標 |
2 | "UV" | UV座標(定義元画像座標) |
3 | "I" | 定義番号 |
4 | "R" | 回転角度 |
5 | "S" | 倍率XY |
6 | "C" | 表示色 |
7 | "V" | 変数(SPRITE内部変数7の値) |
対象数値に8を加えると実行時からの相対指定
文字列の末尾に"+"を付けた場合も相対指定(例 "XY+")
・アニメデータそのもの(必要な数分並べる、最大32個)
ループ回数: (1~) 0で無限ループ
SPSET 0,0 SPANIM 0,XY, -60,200,100, -30,50,20
・SPSET前に使うとエラー
対象のSPRITEの管理番号: 0~511
※管理番号を省略すると全SPRITEのアニメーションを停止
SPSTOP
・SPSETの前に使うとエラー
対象のSPRITEの管理番号: 0~511
※管理番号を省略すると全SPRITEのアニメーションを開始
SPSTART
・SPSET前に使うとエラー
対象のSPRITEの管理番号: 0~511
b00 | XY座標 | 1 | #CHKXY |
b01 | Z座標 | 2 | #CHKZ |
b02 | UV座標 | 4 | #CHKUV |
b03 | 定義番号 | 8 | #CHKI |
b04 | 回転 | 16 | #CHKR |
b05 | 倍率XY | 32 | #CHKS |
b06 | 表示色 | 64 | #CHKC |
b07 | 変数 | 128 | #CHKV |
ビットごとに対象割り当て(すべて0の時アニメ停止中)
ST=SPCHK(5) '|b00|#CHKXY| '|b01|#CHKZ| '|b02|#CHKUV| '|b03|#CHKI| '|b04|#CHKR| '|b05|#CHKS| '|b06|#CHKC| '|b07|#CHKV|
・SPRITE用内部変数(8個ずつあるユーザー用変数)
・SPSET前でも利用可能(SPSET実行で8個とも0)
対象のSPRITE管理番号: 0~511
内部変数の番号: 0~7
内部変数に登録する数値(0~
SPVAR 0,7,1
・SPRITE用内部変数(8個ずつあるユーザー用変数)
・SPSET前でも利用可能(SPSET実行で8個とも0)
対象のSPRITE管理番号: 0~511
内部変数の番号: 0~7
SPVARで書き込んだ値
V=SPVAR(54,0)
・SPRITE用内部変数(8個ずつあるユーザー用変数)
・SPSET前でも利用可能(SPSET実行で8個とも0)
対象のSPRITE管理番号: 0~511
内部変数の番号: 0~7
内部変数の値が戻る数値変数
SPVAR 54,0 OUT V
・SPHIT系の命令を使う前に必ず呼ぶこと
・SPSET前に使うとエラー
対象のSPRITE管理番号: 0~511
FALSE | 無視(省略時=FALSE) |
TRUE | SPSCALEに判定領域を同期 |
※SPCOL命令後に設定したSPSCALEから有効
SPCOL 3,TRUE
・SPHIT系の命令を使う前に必ず呼ぶこと
・SPSET前に使うとエラー
対象のSPRITE管理番号: 0~511
FALSE | 無視(省略時=FALSE) |
TRUE | SPSCALEに判定領域を同期 |
※SPCOL命令後に設定したSPSCALEから有効
0~&HFFFFFFFF
※衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす(省略時&HFFFFFFFF)
SPCOL 3,TRUE,31 SPCOL 3,,31
・SPHIT系の命令を使う前に必ず呼ぶこと
・SPSET前に使うとエラー
対象のSPRITE管理番号: 0~511
・判定領域の始点座標: X,Y(-32768~32767)
・SPHOMEを原点(0,0)とした相対座標
判定領域の幅と高さ: W,H(0~65535)
FALSE | 無視(省略時=FALSE) |
TRUE | SPSCALEに判定領域を同期 |
※SPCOL命令後に設定したSPSCALEから有効
0~&HFFFFFFFF(32ビット)
※衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす(省略時&HFFFFFFFF)
SPCOL 3,0,0,32,32,TRUE,255 SPCOL 3,0,0,32,32,,255
・SPSET前に使うとエラー
対象のSPRITE管理番号: 0~511
スケール値を受け取る変数
マスク値を受け取る変数
SPCOL 3 OUT SC,MSK
・SPSET前に使うとエラー
対象のSPRITE管理番号: 0~511
判定領域の始点座標を受け取る変数
判定領域の幅と高さを受け取る変数
SPCOL 3 OUT X,Y,W,H
・SPSET前に使うとエラー
対象のSPRITE管理番号: 0~511
判定領域の始点座標を受け取る変数
判定領域の幅と高さを受け取る変数
スケール値を受け取る変数
SPCOL 3 OUT X,Y,W,H,SC
・SPSET前に使うとエラー
対象のSPRITE管理番号: 0~511
判定領域の始点座標を受け取る変数
判定領域の幅と高さを受け取る変数
スケール値を受け取る変数
マスク値を受け取る変数
SPCOL 3 OUT X,Y,W,H,SC,MSK
・SPSET前に使うとエラー
対象のSPRITE管理番号: 0~511
・省略時は次の要領で自動計算される
・SPANIMのXYを線形補完で実行中:前フレームからの移動距離
・それ以外の場合:0,0
SPCOLVEC 93
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
判定するSPRITEの管理番号: 0~511
判定するSPRITEの範囲(0~511)
衝突したSPRITEの管理番号(衝突のないとき-1)
H=SPHITSP(0)
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
判定するSPRITEの管理番号: 0~511
相手側のSPRITEの管理番号: 0~511
FALSE=衝突なし、TRUE=衝突
H=SPHITSP( 0,34 )
・引数を省略しないSPSETSPを呼び出しておくこと
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
衝突したSPRITEの管理番号(衝突のないとき-1)
H=SPHITSP()
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
判定元の四角形の左上座標
判定元の四角形の幅と高さ
0~&HFFFFFFFF( 32ビット )
・衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす(省略時&HFFFFFFFF)
判定元の四角形の移動量
衝突したSPRITEの管理番号(衝突のないとき-1)
H=SPHITRC( 0,0,16,16 )
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
衝突相手のSPRITEの管理番号: 0~511
判定元の四角形の左上座標
判定元の四角形の幅と高さ
0~&HFFFFFFFF( 32ビット )
・衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす(省略時&HFFFFFFFF)
判定元の四角形の移動量
FALSE=衝突なし、TRUE=衝突
H=SPHITRC( 1,0,0,16,16 )
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
判定するSPRITEの範囲(0~511)
判定元の四角形の左上座標
判定元の四角形の幅と高さ
0~&HFFFFFFFF( 32ビット )
・衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす(省略時&HFFFFFFFF)
判定元の四角形の移動量
衝突したSPRITEの管理番号(衝突のないとき-1)
H=SPHITRC( 0,0,16,16 )
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
なし
衝突したSPRITEの管理番号(衝突のないとき-1)
H=SPHITRC()
・SPSET前に使うとエラー
なし
・衝突時間が戻る変数: 0~1の実数値
・判定時の位置+速度×衝突時間が衝突座標と一致
SPHITINFO OUT TM
・SPSET前に使うとエラー
なし
・衝突時間が戻る変数: 0~1の実数値
・判定時の位置+速度×衝突時間が衝突座標と一致
衝突時の物体1の座標が戻る変数
衝突時の物体2の座標が戻る変数
SPHITINFO OUT TM,X1,Y1,X2,Y2
・SPSET前に使うとエラー
なし
・衝突時間が戻る変数: 0~1の実数値
・判定時の位置+速度×衝突時間が衝突座標と一致
衝突時の物体1の座標が戻る変数
衝突時の物体1の速度が戻る変数
衝突時の物体2の座標が戻る変数
衝突時の物体2の速度が戻る変数
SPHITINFO OUT TM,X1,Y1,VX1,VY1,X2,Y2,VX2,VY2
・コールバック処理が必要な上級者向けの命令
・CALL SPRITE により全SPRITEの処理を実行
・@ラベルの代わりにDEFで定義したユーザー処理も指定可能
・処理先ではCALLIDXシステム変数で管理番号取得可能
対象のSPRITE管理番号: 0~511
呼び出される処理先のラベル(またはユーザー定義処理、ユーザー定義処理の場合は””不要)
SPFUNC 0,"@PROG" SPFUNC 1,"USERDEF"
対象のSPRITE管理番号: 0~511
TRUE=使用中、FALSE=空き
S=SPUSED(4)