SmileBASIC 4.4.8
リファレンスマニュアル
更新日 2023/12/07
目次
- 命令概要(基本命令)
- 命令概要(表示命令)
- 命令概要(入力、サウンド、その他)
- ダイレクトモード専用命令
- 変数や配列の定義、操作に関する命令
- 制御命令
- 数学関連
- 文字列操作
- その他
- 各種入力
- 各種入力(Toy-Con)
- ファイル
- スクリーン制御
- テキストスクリーン入出力
- グラフィック
- スプライト
- レイヤー
- サウンド
- 高度な演算
- ソースコード操作
- サブプログラム
更新日 2023/12/07
・SPSETによりスプライトは利用可能となる。
・SPSET実行により回転等の情報は全て初期化。
・スプライト変数はクリアされる。
・SPHIT系衝突判定を使う時はSPSET後にSPCOLを呼びます。
作成するスプライトの番号:0~4095
SPDEFで定義したテンプレートの定義番号:0~8191
作成したスプライトを表示するかどうかを指定する
・1で表示、0で表示しない。
・省略時は1。
SPSET 1,500
・SPDEFの値を使わずに独自に設定する場合に利用する。
作成するスプライトの番号:0~4095
参照する画像のグラフィックページ上の座標
スプライトの大きさ:0~2048
b00 | ↑90度単位の回転(b00とb01の2ビットで指定) |
b01 | ↓#A_ROT0、#A_ROT90、#A_ROT0180、#A_ROT270 |
b02 | 横反転(0=OFF、1=ON)、#A_REVH |
b03 | 縦反転(0=OFF、1=ON)、#A_REVV |
b04 | 加算合成(0=OFF、1=ON)、#A_ADD |
・省略時は0。
作成したスプライトを表示するかどうかを指定する
・1で表示、0で表示しない。
・省略時は1。
SPSET 54,0,0,32,32,1,0
・スプライト全体から空きを探す。
SPDEFで定義したテンプレートの定義番号: 0~8191
作成したスプライトを表示するかどうかを指定する
・1で表示、0で表示しない。
・省略時は1。
生成されたスプライトの番号: 0~4095
・空きがなく生成できなかった時は-1が返る。
IX=SPSET(500)
・スプライト全体から空きを探す。
参照する画像のグラフィックページ上の座標
スプライトの大きさ:0~2048
b00 | ↑90度単位の回転(b00とb01の2ビットで指定) |
b01 | ↓#A_ROT0、#A_ROT90、#A_ROT0180、#A_ROT270 |
b02 | 横反転(0=OFF、1=ON)、#A_REVH |
b03 | 縦反転(0=OFF、1=ON)、#A_REVV |
b04 | 加算合成(0=OFF、1=ON)、#A_ADD |
作成したスプライトを表示するかどうかを指定する
・1で表示、0で表示しない。
・省略時は1。
生成されたスプライトの番号:0~4095
・空きがなく生成できなかった時は-1が返る。
IX=SPSET(0,0,32,32,1)
・指定範囲内で空きを探す。
空きを探す範囲(0~4095)
・開始番号の方を大きくすると、空き番号を降順で探す。
SPDEFで定義したテンプレートの定義番号:0~8191
作成したスプライトを表示するかどうかを指定する
・1で表示、0で表示しない。
・省略時は1。
生成されたスプライトの番号:0~4095
・空きがなく生成できなかった時は-1が返る。
IX=SPSET(100,120, 500)
・指定範囲内で空きを探す。
空きを探す範囲(0~4095)
・開始番号の方を大きくすると、空き番号を降順で探す。
参照する画像のグラフィックページ上の座標
スプライトの大きさ:0~2048
b00 | ↑90度単位の回転(b00とb01の2ビットで指定) |
b01 | ↓#A_ROT0、#A_ROT90、#A_ROT0180、#A_ROT270 |
b02 | 横反転(0=OFF、1=ON)、#A_REVH |
b03 | 縦反転(0=OFF、1=ON)、#A_REVV |
b04 | 加算合成(0=OFF、1=ON)、#A_ADD |
作成したスプライトを表示するかどうかを指定する
・1で表示、0で表示しない。
・省略時は1。
生成されたスプライトの番号:0~4095
・空きがなく生成できなかった時は-1が返る。
IX=SPSET(100,120, 0,0,32,32,1)
・グラフィック表示用スプライト(4095)は削除されない。
SPCLR
・利用後に削除しないとSPSETで指定できるスプライトの空きがなくなる。
削除するスプライトの番号:0~4095
SPCLR 56
削除するスプライト範囲の番号開始位置:0~4095
削除するスプライト範囲の番号終了位置:0~4095
SPCLR 2,10
・SPSET前に使うとエラー。
表示するスプライトの番号:0~4095
表示する場合は1、表示しない場合は0
・省略時の値は1。
SPSHOW 43 SPSHOW 44, #TRUE
・SPSET前に使うとエラー。
確認するスプライトの番号:0~4095
表示中であれば1,消えていたら0を返す
S = SPSHOW(43)
・表示を隠すだけで、スプライトを削除するわけではない。
・SPSET前に使うとエラー。
表示を隠すスプライトの番号:0~4095
表示を隠す場合1、表示する場合0
・省略時の値は1。
SPHIDE 43
・SPSET前に使うとエラー。
確認するスプライトの番号:0~4095
表示中であれば0,消えていたら1を返す
H=SPHIDE(43)
・ホーム座標はSPOFS(移動)、SPROT(回転)、SPSCALE(拡大・縮小)の基準点として使用する。
・SPCOL(衝突判定)では、始点X,Yを指定しない場合のデフォルト値としてSPHOMEの値を使用する。詳細はSPCOLの解説を参照。
・SPSET前に使うとエラー。
基準点を設定するスプライトの番号:0~4095
スプライトの左上を原点(0,0)とした相対座標
・ハードウェアの仕様により、実数値を設定すると参照画像が1ピクセルずれる事がある。
SPHOME 34,16,16
・SPSET前に使うとエラー。
スプライトの番号:0~4095
ホーム座標
SPHOME 10 OUT HX,HY
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
設定するスプライトの表示座標
・ハードウェアの仕様により、実数値を設定すると参照画像が1ピクセルずれる事がある。
表示優先度:-4095~4095
・小さいほど手前に表示される。
SPOFS 23,50,80 SPOFS 23,,,1000 SPOFS 23,150,180,0
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
1の場合、スプライトの絶対座標を返す
0の場合、スプライトの相対座標を返す
・相対座標はSPOFSで設定した座標そのものを意味する。
・絶対座標はレイヤー上での表示座標を返す。
・両者はSPLINKを使用した時に異なる座標となる。
・省略時は0。
スプライトの座標
表示優先順位
SPOFS 12 OUT X,Y,Z
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
回転角度:0~360(時計回り)
・ハードウェアの仕様により、角度によって参照画像が1ピクセルずれる事がある。
SPROT 23,45
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
スプライトの角度
DR=SPROT(23)
・スケールを考慮した当たり判定は先にSPCOLを実行。
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
0.5(50%)~1.0(100%)~2.0(200%)~
・ハードウェアの仕様により、設定値によって参照画像が1ピクセルずれる事がある。
SPSCALE 56,0.75, 0.75
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
スプライトの倍率
SPSCALE 45 OUT SX,SY
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
・実際の表示色は色コードに元のピクセル色を乗算した値。
SPCOLOR 1,RGB(16, 255,0,0) 'A=16,R=255,G=0,B=0
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
スプライトに設定されている色コード
C=SPCOLOR(1)
・SPSET前に使うとエラー。
定義を変更するスプライトの番号:0~4095
SPDEF命令で登録したテンプレートの番号:0~8191
SPCHR 0,500
・スプライト番号以外の引数は省略可能。
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
参照する画像のグラフィックページ上の座標
スプライトの大きさ:0~2048
・省略時はW,Hとも16。
b00 | ↑90度単位の回転(b00とb01の2ビットで指定) |
b01 | ↓#A_ROT0、#A_ROT90、#A_ROT0180、#A_ROT270 |
b02 | 横反転(0=OFF、1=ON)、#A_REVH |
b03 | 縦反転(0=OFF、1=ON)、#A_REVV |
b04 | 加算合成(0=OFF、1=ON)、#A_ADD |
・省略時は0。
SPCHR 5,64,64,16,16,0 SPCHR 6,,,32,32,1 'UV skip
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
参照する画像のグラフィックページ上の座標
スプライトの画像サイズ
スプライトのアトリビュート
SPCHR 5 OUT U,V,W,H,ATR
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
指定スプライトのキャラクタ定義番号
DEFNO=SPCHR(5)
対象のスプライトの番号:0~4095
-1~5
・初期状態のスプライト用ページは4。
SPPAGE 100, 3
対象のスプライトの番号:0~4095
グラフィックページ番号:-1~5
P=SPPAGE(100)
-1~5(GRP-1~GRP5) 初期状態のスプライト用ページは4(GRP4)
SPPAGE 3
グラフィックページ番号:-1~5
P=SPPAGE()
対象のスプライトの番号:0~4095
スプライトが所属するレイヤーのID:0~7
SPLAYER 100,3
対象のスプライトの番号:0~4095
レイヤーID
P=SPLAYER(100)
0~7
・初期状態のレイヤーIDは0。
SPLAYER 3
レイヤーID
P=SPLAYER()
テンプレートの定義番号:0~8191
参照する画像のグラフィックページ上の座標
スプライトの大きさ
・省略時はW,Hとも16。
スプライトの座標基準点
・省略時はX,Yとも0。
b00 | ↑90度単位の回転(b00とb01の2ビットで指定) |
b01 | ↓#A_ROT0、#A_ROT90、#A_ROT0180、#A_ROT270 |
b02 | 横反転(0=OFF、1=ON)、#A_REVH |
b03 | 縦反転(0=OFF、1=ON)、#A_REVV |
b04 | 加算合成(0=OFF、1=ON)、#A_ADD |
・省略時は0。
SPDEF 0,192,352,32,32,16,16,1
スプライトのテンプレートデータが格納された数値配列
・1個分の要素はU,V,W,H,原点X,原点Y,アトリビュートの7つ。
・要素数は7の倍数である必要がある。
・要素数/7個のスプライトテンプレートが0から順に定義される。
定義開始番号を指定:0~8191
画像の定義位置調整用として加算される(各0~4095)
SPDEF SRCDATA SPDEF SRCDATA 256,0,256
スプライトのテンプレートデータが列挙されたDATA命令のラベル
・@ラベル名は""でくくるか、文字列変数で指定する。
・先頭データは定義するスプライト数とし、。
続いて各スプライトのデータを列挙(1個につき7データ)
・1個分のデータはU,V,W,H,原点X,原点Y,アトリビュートの7つ。
定義開始番号を指定:0~8191
画像の定義位置調整用として加算されます(各0~4095)
SPDEF "@SRCDATA" SPDEF "@SRCDATA",256,0,256
テンプレートの定義番号:0~8191
参照する画像のグラフィックページ上の座標
スプライト定義の画像サイズ
スプライト定義の基準点座標
スプライト定義のアトリビュート
SPDEF 2 OUT U,V,ATR
・コピー不要な要素は省略可能(区切りの','カンマは必要)。
・引数部分はコピーした上で調整する場合に利用。
テンプレートの定義番号:0~8191
コピー元になる定義番号:0~8191
参照する画像のグラフィックページ上の座標
定義するスプライトの大きさ
・省略時はW,Hとも16。
スプライトの座標基準点
・省略時はX,Yとも0。
b00 | ↑90度単位の回転(b00とb01の2ビットで指定) |
b01 | ↓#A_ROT0、#A_ROT90、#A_ROT0180、#A_ROT270 |
b02 | 横反転(0=OFF、1=ON)、#A_REVH |
b03 | 縦反転(0=OFF、1=ON)、#A_REVV |
b04 | 加算合成(0=OFF、1=ON)、#A_ADD |
・省略時は0。
SPDEF 0,255,192,352,32,32,16,16,1 SPDEF 1,255,,,32,32,,,
SPDEF
・リンクすると座標がリンク先(親)に追従するようになる。
・子の表示座標と表示優先度は、親を基準とした相対座標となる。
・SPSET前に使うとエラー。
リンク元(子)のスプライトの番号: 0~4095
リンク先(親)のスプライトの番号: 0~4095
・リンク元の子孫を指定するとエラー。
リンク先(親)の情報のどれを引き継ぐかを指定するビット値の組合わせ
・表示座標・表示優先度以外の属性を引き継ぎたい場合に指定する。
・bit0を指定した場合、親がSPCLRされてから1V経過後に子孫が消去される。
・省略時は0。
bit0 | 1 | 表示ON/OFFや消去のタイミング |
bit1 | 2 | 回転 |
bit2 | 4 | スケーリング |
bit3 | 8 | 色 |
bit4 | 16 | レイヤーID |
SPLINK 15,4 SPLINK 2,0,3
・SPSET前に使うとエラー。
リンク元(子)のスプライトの番号: 0~4095
取得したいリンク先種別・リンクフラグ
0 | 親 |
1 | 子 |
2 | 兄弟 |
3 | リンクフラグ |
・省略時は0
リンク先の番号:0~4095(-1の時リンク無し)
'スプライトPARENTのすべての子供をひろう CHILD=SPLINK( PARENT,1 ) '一番最初の子供 WHILE CHILD!=-1 CHILD=SPLINK( CHILD, 2 ) '他の子供を順番に取得 WEND
・SPSET前に使うとエラー。
リンクを解除するスプライトの番号:0~4095
SPUNLINK 15
・SPSET前に使うとエラー。
・設定したアニメーションが自動的に再生される。
・アニメーションは値を設定して指定時間分待つという動作。
・アニメーション開始はSPANIMを実行した次フレームから。
・対象要素ごとに最大32個のデータを受け付ける。
・時間にマイナス値を指定すると直前の値から線形補間を行う(なめらかに動かす)。
アニメーションを設定するスプライトの番号:0~4095
変化させる要素を管理する数値または文字列
0 | "XY" | XY座標 |
1 | "Z" | Z座標 |
2 | "R" | 回転角度 |
3 | "S" | 倍率XY |
4 | "C" | 表示色 |
5 | "V" | 変数(スプライト内部変数7の値) |
6 | "UV" | UV座標(定義元画像座標) |
7 | "I" | 定義番号 |
・文字列の末尾に"+"を付けるか、数値に8を加えるとアニメーション開始時点からの相対値となる。
・文字列の末尾に"."を付けるか、数値に16を加えるとアニメーション終了時にスプライトを削除する。
アニメデータが格納された1次元数値配列
ループ回数: (1~)
・ 0を指定するとで無限ループとなる。
・ 省略時は1。
・アニメデータは数値配列に次の順で用意(最大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前に使うとエラー。
アニメーションを設定するスプライトの番号:0~4095
変化させる要素を管理する数値または文字列
0 | "XY" | XY座標 |
1 | "Z" | Z座標 |
2 | "R" | 回転角度 |
3 | "S" | 倍率XY |
4 | "C" | 表示色 |
5 | "V" | 変数(スプライト内部変数7の値) |
6 | "UV" | UV座標(定義元画像座標) |
7 | "I" | 定義番号 |
・文字列の末尾に"+"を付けるか、数値に8を加えるとアニメーション開始時点からの相対値となる。
・文字列の末尾に"."を付けるか、数値に16を加えるとアニメーション終了時にスプライトを削除する。
・アニメデータが格納されたDATA命令の先頭ラベル。
・@ラベル名を""でくくって文字列として指定(または文字変数)。
ループ回数: (1~)
・ 0を指定するとで無限ループとなる。
・ 省略時は1。
アニメデータは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前に使うとエラー。
アニメーションを設定するスプライトの番号:0~4095
変化させる要素を管理する数値または文字列
0 | "XY" | XY座標 |
1 | "Z" | Z座標 |
2 | "R" | 回転角度 |
3 | "S" | 倍率XY |
4 | "C" | 表示色 |
5 | "V" | 変数(スプライト内部変数7の値) |
6 | "UV" | UV座標(定義元画像座標) |
7 | "I" | 定義番号 |
・文字列の末尾に"+"を付けるか、数値に8を加えるとアニメーション開始時点からの相対値となる。
・文字列の末尾に"."を付けるか、数値に16を加えるとアニメーション終了時にスプライトを削除する。
・アニメデータそのもの(必要な数分並べる、最大32個)。
ループ回数:(1~)
・0を指定するとで無限ループとなる。
・省略時は1。
SPSET 0,0 SPANIM 0,"XY",-60,200,100,-30,50,20
・ANIMDEFで定義したアニメーション定義を指定できる。
・SPSET前に使うとエラー。
アニメーションを設定するスプライトの番号:0~4095
ANIMDEF命令で定義済みの定義番号:0~1023
ANIMDEF 0,"XY",-60,100,0 SPSET 0,0 SPANIM 0,0
アニメーションをクリアするスプライトの番号:0~4095
・SPSETしていない番号を指定するとエラー。
・省略時は全スプライトのアニメーションをクリアする。
SPANIM 0 SPANIM
・SPSET前に使うとエラー。
対象のスプライトの番号: 0~4095
・省略時は全スプライトのアニメーションを停止させる。
SPSTOP
・SPSETの前に使うとエラー。
対象のスプライトの番号:0~4095
・省略時は全スプライトのアニメーションを開始させる。
SPSTART
・SPSET前に使うとエラー。
対象のスプライトの番号: 0~4095
b00 | XY座標 | 1 | #CHKXY |
b01 | Z座標 | 2 | #CHKZ |
b02 | 回転 | 4 | #CHKR |
b03 | 倍率XY | 8 | #CHKS |
b04 | 表示色 | 16 | #CHKC |
b05 | 変数 | 32 | #CHKV |
b06 | UV座標 | 64 | #CHKUV |
b07 | 定義番号 | 128 | #CHKI |
ビットごとに対象割り当て(すべて0の時アニメ停止中)
ST=SPCHK(5) '|b00|#CHKXY| '|b01|#CHKZ| '|b02|#CHKR| '|b03|#CHKS| '|b04|#CHKC| '|b05|#CHKV| '|b06|#CHKUV| '|b07|#CHKI|
・すべてのスプライトはスプライト変数と呼ばれる特殊な変数を持っている。
・スプライト変数はプログラム実行開始時、SPSET,SPCLR呼び出し時にクリアされる。
対象のスプライト番号:0~4095
スプライト変数の名前
・文字列または整数を名前として付ける事ができる。
内部変数に登録する値
・数値または文字列を登録する事ができる。
SPVAR 0,7,1 SPVAR 0,"NAME","VALUE"
対象のスプライト番号:0~4095
スプライト変数の名前。文字列または整数を名前として付ける事ができる
SPVARで登録した値
SPVARで値を登録していない場合は、整数の0が返る。
V=SPVAR(54,0)
対象のスプライト番号:0~4095
削除するスプライト変数の名前
・文字列または整数を名前として付ける事ができる。
・省略時は指定スプライトの全スプライト変数を削除する。
SPVAR 0,7 SPVAR 0,"NAME"
・SPHIT系の命令を使う前に必ず呼ぶこと。
・SPSET前に使うとエラー。
・SPCOLで始点X,始点Yを指定しない場合、その時のSPHOMEの情報が始点X,始点Yとして使用される。その後SPHOMEを変更しても始点X,始点Yは追従しない。
対象のスプライト番号:0~4095
1を指定するとSPSCALEやSPANIMでのスケール変更に合わせて衝突判定の大きさが変化する
0を指定するとスケール変更しても衝突判定の大きさは変化しない
・省略時は0。
SPCOL 3,1
・SPHIT系の命令を使う前に必ず呼ぶこと。
・SPSET前に使うとエラー。
・SPCOLで始点X,始点Yを指定しない場合、その時のSPHOMEの情報が始点X,始点Yとして使用される。その後SPHOMEを変更しても始点X,始点Yは追従しない。
対象のスプライト番号:0~4095
1を指定するとSPSCALEやSPANIMでのスケール変更に合わせて衝突判定の大きさが変化する
0を指定するとスケール変更しても衝突判定の大きさは変化しない
・省略時は0。
0~&HFFFFFFFF(32ビット)
・衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす。
・省略時は&HFFFFFFFF。
SPCOL 3,1,31 SPCOL 3,,31
・SPHIT系の命令を使う前に必ず呼ぶこと。
・SPSET前に使うとエラー。
・SPCOLで始点X,始点Yを指定する場合、SPHOMEの情報は全く使用しない。
対象のスプライト番号:0~4095
・判定領域の始点座標:X,Y(-32768~32767)。
・スプライト左上を原点(0,0)とした相対座標。
判定領域の幅と高さ:W,H(1~65535)
1を指定するとSPSCALEやSPANIMでのスケール変更に合わせて衝突判定の大きさが変化する
0を指定するとスケール変更しても衝突判定の大きさは変化しない
・省略時は0。
0~&HFFFFFFFF(32ビット)
・衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす。
・省略時は&HFFFFFFFF。
SPCOL 3,0,0,32,32,1,255 SPCOL 3,0,0,32,32,,255
・SPSET前に使うとエラー。
対象のスプライト番号:0~4095
スプライトに設定されているスケール対応フラグ
スプライトに設定されている衝突マスク値
SPCOL 3 OUT SC,MSK
・SPSET前に使うとエラー。
対象のスプライト番号:0~4095
衝突判定領域の始点座標
衝突判定領域の幅と高さ
スプライトに設定されているスケール対応フラグ
衝突判定マスク値
SPCOL 3 OUT X,Y,W,H,SC,MSK
・SPSET前に使うとエラー。
対象のスプライト番号:0~4095
・省略時は次の要領で自動計算される。
・SPANIMのXYを線形補完で実行中:前フレームからの移動距離。
・それ以外の場合:0,0。
SPCOLVEC 93
・事前にSPCOLを呼び出しておくこと。
判定するスプライトの番号:0~4095
判定するスプライトの範囲(0~4095)
衝突したスプライトの番号(衝突のないとき-1)
H=SPHITSP(0)
・事前にSPCOLを呼び出しておくこと。
判定するスプライトの番号:0~4095
相手側のスプライトの番号:0~4095
0=衝突なし、1=衝突
H=SPHITSP(0,34)
・引数付きのSPHITSPで衝突先が複数ある場合、引数を省略して再度呼び出す事で衝突先を全て取り出す事ができる。
・事前にSPCOLを呼び出しておくこと。
・事前に引数を省略しないSPHITSPを呼び出しておくこと。
衝突したスプライトの番号(衝突のないとき-1)
H=SPHITSP(0) WHILE H>=0 H=SPHITSP() WEND
・事前にSPCOLを呼び出しておくこと。
判定元の四角形の左上座標
判定元の四角形の幅と高さ
0~&HFFFFFFFF(32ビット)
・衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす。
・省略時は&HFFFFFFFF。
判定元の四角形の移動量
衝突したスプライトの番号(衝突のないとき-1)
H=SPHITRC(0,0,16,16)
・事前にSPCOLを呼び出しておくこと。
衝突相手のスプライトの番号:0~4095
判定元の四角形の左上座標
判定元の四角形の幅と高さ
0~&HFFFFFFFF(32ビット)
・衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす。
・省略時は&HFFFFFFFF。
判定元の四角形の移動量
0=衝突なし、1=衝突
H=SPHITRC(1,0,0,16,16)
・事前にSPCOLを呼び出しておくこと。
判定するスプライトの範囲(0~4095)
判定元の四角形の左上座標
判定元の四角形の幅と高さ
0~&HFFFFFFFF(32ビット)
・衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす。
・省略時は&HFFFFFFFF。
判定元の四角形の移動量
衝突したスプライトの番号(衝突のないとき-1)
H=SPHITRC(0,0,16,16)
・引数付きのSPHITRCで衝突先が複数ある場合、引数を省略して再度呼び出す事で衝突先を全て取り出す事ができる。
・事前にSPCOLを呼び出しておくこと。
衝突したスプライトの番号(衝突のないとき-1)
H=SPHITRC(0,0,16,16) WHILE (H >= 0) H=SPHITRC() WEND
・衝突時間: 0~1の実数値。
・判定時の座標+速度×衝突時間が衝突座標と一致。
TM=SPHITINFO()
・衝突時間: 0~1の実数値。
・判定時の座標+速度×衝突時間が衝突座標と一致。
衝突時の物体1の座標
衝突時の物体2の座標
SPHITINFO OUT TM,X1,Y1,X2,Y2
・衝突時間: 0~1の実数値。
・判定時の座標+速度×衝突時間が衝突座標と一致。
衝突時の物体1の座標
衝突時の物体1の速度
衝突時の物体2の座標
衝突時の物体2の速度
SPHITINFO OUT TM,X1,Y1,VX1,VY1,X2,Y2,VX2,VY2
・コールバック処理が必要な上級者向けの命令。
・GOSUBでジャンプしてきてほしいラベルか、実行してほしいDEF命令名のどちらかを指定できる。
・CALL SPRITE により全スプライトのコールバック処理を一度に実行する。
・コールバック先ではCALLIDX()関数で番号を取得できる。
対象のスプライト番号:0~4095
呼び出される処理先のラベル
呼び出されるユーザー定義命令の名前
SPFUNC 0,"@PROG" SPFUNC 1,"USERDEF"
クリア対象のスプライト番号:0~4095
SPFUNC 0
対象のスプライト番号:0~4095
0=空き、1=使用中
S=SPUSED(4)