ユーザ用ツール


reference:スプライト

スプライト

SPSET スプライト番号,定義番号[,表示フラグ]

スプライトを作成する(定義テンプレートを利用)

SPSET共通要素

・SPSETによりスプライトは利用可能となる
・SPSET実行により回転等の情報は全て初期化
・スプライト変数はクリアされる
・SPHIT系衝突判定を使う時はSPSET後にSPCOLを呼びます

引数

スプライト番号

作成するスプライトの番号:0~4095

定義番号

SPDEFで定義したテンプレートの定義番号:0~8191

表示フラグ

作成したスプライトを表示するかどうかを指定する
・1で表示、0で表示しない
・省略時は1

SPSET 1,500

SPSET スプライト番号,U,V,W,H[,アトリビュート[,表示フラグ]]

スプライトを作成する(直接画像情報等を指定)

・SPDEFの値を使わずに独自に設定する場合に利用する

引数

スプライト番号

作成するスプライトの番号:0~4095

U,V

参照する画像のグラフィックページ上の座標

W,H

スプライトの大きさ: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

SPSET(定義番号[,表示フラグ])

空いている番号を探してスプライトを作成し、番号を返す

・スプライト全体から空きを探す

引数

定義番号

SPDEFで定義したテンプレートの定義番号: 0~8191

表示フラグ

作成したスプライトを表示するかどうかを指定する
・1で表示、0で表示しない
・省略時は1

返値

スプライト番号

生成されたスプライトの番号: 0~4095
・空きがなく生成できなかった時は-1が返る

IX=SPSET(500)

SPSET(U,V,W,H,アトリビュート[,表示フラグ])

空いている番号を探してスプライトを作成し、番号を返す

・スプライト全体から空きを探す

引数

U,V

参照する画像のグラフィックページ上の座標

W,H

スプライトの大きさ: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)

SPSET(開始番号,終了番号,定義番号[,表示フラグ])

空いている番号を探してスプライトを作成し、番号を返す

・指定範囲内で空きを探す

引数

開始番号,終了番号

空きを探す範囲(0~4095)
・開始番号の方を大きくすると、空き番号を降順で探す

定義番号

SPDEFで定義したテンプレートの定義番号:0~8191

表示フラグ

作成したスプライトを表示するかどうかを指定する
・1で表示、0で表示しない
・省略時は1

返値

スプライト番号

生成されたスプライトの番号:0~4095
・空きがなく生成できなかった時は-1が返る

IX=SPSET(100,120, 500)

SPSET(開始番号,終了番号,U,V,W,H,アトリビュート[,表示フラグ])

空いている番号を探してスプライトを作成し、番号を返す

・指定範囲内で空きを探す

引数

開始番号,終了番号

空きを探す範囲(0~4095)
・開始番号の方を大きくすると、空き番号を降順で探す

U,V

参照する画像のグラフィックページ上の座標

W,H

スプライトの大きさ: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)

SPCLR

全スプライトを削除する

・グラフィック表示用スプライト(4095)は削除されない

SPCLR

SPCLR スプライト番号

指定スプライトを削除する

・利用後に削除しないとSPSETで指定できるスプライトの空きがなくなる

引数

スプライト番号

削除するスプライトの番号:0~4095

SPCLR 56

SPCLR スプライト番号1,スプライト番号2

指定範囲のスプライトを削除する

引数

スプライト番号1

削除するスプライト範囲の番号開始位置:0~4095

スプライト番号2

削除するスプライト範囲の番号終了位置:0~4095

SPCLR 2,10

SPSHOW スプライト番号
SPSHOW スプライト番号,表示フラグ

スプライトを表示させる

・SPSET前に使うとエラー

引数

スプライト番号

表示するスプライトの番号:0~4095

表示フラグ

表示する場合は1、表示しない場合は0
・省略時の値は1

SPSHOW 43
SPSHOW 44, #TRUE

SPSHOW(スプライト番号)

スプライトが表示中かどうかを取得する

・SPSET前に使うとエラー

引数

スプライト番号

確認するスプライトの番号:0~4095

返値

表示中であれば1,消えていたら0を返す

S = SPSHOW(43)

SPHIDE スプライト番号
SPHIDE スプライト番号,表示オフフラグ

スプライトの表示を隠す

・表示を隠すだけで、スプライトを削除するわけではない
・SPSET前に使うとエラー

引数

スプライト番号

表示を隠すスプライトの番号:0~4095

表示オフフラグ

表示を隠す場合1、表示する場合0
・省略時の値は1

SPHIDE 43

SPHIDE(スプライト番号)

スプライトが消えているかどうかを取得する

・SPSET前に使うとエラー

引数

スプライト番号

確認するスプライトの番号:0~4095

返値

表示中であれば0,消えていたら1を返す

H=SPHIDE(43)

SPHOME スプライト番号,座標X,座標Y

スプライトのホーム座標(座標基準点)を指定する

・ホーム座標はSPOFS(移動)、SPROT(回転)、SPSCALE(拡大・縮小)の基準点として使用する
・SPCOL(衝突判定)の基準点ではないので注意
・SPSET前に使うとエラー

引数

スプライト番号

基準点を設定するスプライトの番号:0~4095

座標X,Y

スプライトの左上を原点(0,0)とした相対座標
・ハードウェアの仕様により、実数値を設定すると参照画像が1ピクセルずれる事がある

SPHOME 34,16,16

SPHOME スプライト番号 OUT HX,HY

スプライトのホーム座標を取得する

・SPSET前に使うとエラー

引数

スプライト番号

スプライトの番号:0~4095

返値

HX,HY

ホーム座標

SPHOME 10 OUT HX,HY

SPOFS スプライト番号,[X],[Y][,Z]

スプライトを移動させる

・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライトの番号:0~4095

X,Y

設定するスプライトの表示座標
・ハードウェアの仕様により、実数値を設定すると参照画像が1ピクセルずれる事がある

Z

表示優先度:4095~-4095
・小さいほど手前に表示される

SPOFS 23,50,80
SPOFS 23,,,1000
SPOFS 23,150,180,0

SPOFS スプライト番号[,座標系フラグ] OUT X,Y[,Z]

スプライトの表示座標を取得する

・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライトの番号:0~4095

座標系フラグ

1の場合、スプライトの絶対座標を返す
0の場合、スプライトの相対座標を返す

・相対座標はSPOFSで設定した座標そのものを意味する
・絶対座標はレイヤー上での表示座標を返す
・両者はSPLINKを使用した時に異なる座標となる
・省略時は0

返値

X,Y

スプライトの座標

Z

表示優先順位

SPOFS 12 OUT X,Y,Z

SPROT スプライト番号,角度

スプライトを回転させる

・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライトの番号:0~4095

角度

回転角度:0~360(時計回り)
・ハードウェアの仕様により、角度によって参照画像が1ピクセルずれる事がある

SPROT 23,45

SPROT(スプライト番号)

スプライトの回転角度を取得する

・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライトの番号:0~4095

返値

DR

スプライトの角度

DR=SPROT(23)

SPSCALE スプライト番号,倍率X,倍率Y

スプライトのスケール(表示倍率)を変更する

・スケールを考慮した当たり判定は先にSPCOLを実行
・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライトの番号:0~4095

倍率X,Y

0.5(50%)~1.0(100%)~2.0(200%)~
・ハードウェアの仕様により、設定値によって参照画像が1ピクセルずれる事がある

SPSCALE 56,0.75, 0.75

SPSCALE スプライト番号 OUT SX,SY

スプライトの表示倍率を取得する

・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライトの番号:0~4095

返値

SX,SY

スプライトの倍率

SPSCALE 45 OUT SX,SY

SPCOLOR スプライト番号,色コード

スプライトの表示色を設定する

・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライトの番号:0~4095

色コード

・実際の表示色は色コードに元のピクセル色を乗算した値

SPCOLOR 1,RGB(16, 255,0,0) 'A=16,R=255,G=0,B=0

SPCOLOR(スプライト番号)

スプライトの表示色を取得する

・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライトの番号:0~4095

返値

色コード

スプライトに設定されている色コード

C=SPCOLOR(1)

SPCHR スプライト番号,定義番号

スプライトのキャラクタ定義を変更する

・SPSET前に使うとエラー

引数

スプライト番号

定義を変更するスプライトの番号:0~4095

定義番号

SPDEF命令で登録したテンプレートの番号:0~8191

SPCHR 0,500

SPCHR スプライト番号,[U],[V],[W],[H],[アトリビュート]

スプライトのキャラクタ定義を変更する

・スプライト番号以外の引数は省略可能
・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライトの番号:0~4095

U,V

参照する画像のグラフィックページ上の座標

W,H

スプライトの大きさ: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

SPCHR スプライト番号 OUT U,V[,W,H[,ATR]]

スプライトのキャラクタ定義情報を取得する

・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライトの番号:0~4095

返値

U,V

参照する画像のグラフィックページ上の座標

W,H

スプライトの画像サイズ

ATR

スプライトのアトリビュート

SPCHR 5 OUT U,V,W,H,ATR

SPCHR(スプライト番号)

スプライトのキャラクタ定義番号を取得する

・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライトの番号:0~4095

返値

定義番号

指定スプライトのキャラクタ定義番号

DEFNO=SPCHR(5)

SPPAGE スプライト番号,グラフィックページ

指定スプライトの参照グラフィックページを設定する

引数

スプライト番号

対象のスプライトの番号:0~4095

グラフィックページ

-1~5
・初期状態のスプライト用ページは4

SPPAGE 100, 3

SPPAGE(スプライト番号)

指定スプライトの参照グラフィックページを取得する

引数

スプライト番号

対象のスプライトの番号:0~4095

返値

グラフィックページ番号:-1~5

P=SPPAGE(100)

SPPAGE グラフィックページ

これから作成するスプライトに割り当てるグラフィックページを設定する

引数

グラフィックページ

-1~5(GRP-1~GRP5) 初期状態のスプライト用ページは4(GRP4)

SPPAGE 3

SPPAGE()

これから作成するスプライトに割り当てるグラフィックページを取得する

返値

グラフィックページ番号:-1~5

P=SPPAGE()

SPLAYER スプライト番号,レイヤーID

指定スプライトの所属レイヤーを設定する

引数

スプライト番号

対象のスプライトの番号:0~4095

レイヤーID

スプライトが所属するレイヤーのID:0~7

SPLAYER 100,3

SPLAYER(スプライト番号)

指定スプライトの所属レイヤーを取得する

引数

スプライト番号

対象のスプライトの番号:0~4095

返値

レイヤーID

P=SPLAYER(100)

SPLAYER レイヤーID

これから作成するスプライトが所属するレイヤーを設定する

引数

レイヤーID

0~7
・初期状態のレイヤーIDは0

SPLAYER 3

SPLAYER()

これから作成するスプライトが所属するレイヤーを取得する

返値

レイヤーID

P=SPLAYER()

SPDEF 定義番号,U,V[,W,H[,原点X,原点Y]][,アトリビュート]

スプライトのキャラクタ定義用テンプレートを作成する

引数

定義番号

テンプレートの定義番号:0~8191

U,V

参照する画像のグラフィックページ上の座標

W,H

スプライトの大きさ
・省略時はW,Hとも16

原点X,Y

スプライトの座標基準点
・省略時は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

SPDEF 数値配列[,定義番号オフセット[,Uオフセット,Vオフセット]]

スプライトのキャラクタ定義用テンプレートを配列から一括作成する

引数

数値配列

スプライトのテンプレートデータが格納された数値配列
・1個分の要素はU,V,W,H,原点X,原点Y,アトリビュートの7つ
・要素数は7の倍数である必要がある
・0から順に要素数/7までのスプライトテンプレートが定義される

定義番号オフセット

定義開始番号を指定:0~8191

U,Vオフセット

画像の定義位置調整用として加算される(各0~4095)

SPDEF SRCDATA
SPDEF SRCDATA 256,0,256

SPDEF "@ラベル文字列"[,定義番号オフセット[,Uオフセット,Vオフセット]]

スプライトのキャラクタ定義用テンプレートをDATA列から一括作成する

引数

@ラベル文字列

スプライトのテンプレートデータが列挙されたDATA命令のラベル
・@ラベル名は""でくくるか、文字列変数で指定する
・先頭データは定義するスプライト数とし、
 続いて各スプライトのデータを列挙(1個につき7データ)
・1個分のデータはU,V,W,H,原点X,原点Y,アトリビュートの7つ

定義番号オフセット

定義開始番号を指定:0~8191

U,Vオフセット

画像の定義位置調整用として加算されます(各0~4095)

SPDEF "@SRCDATA" 
SPDEF "@SRCDATA",256,0,256

SPDEF 定義番号 OUT U,V[,W,H[,HX,HY]][,A]

スプライトのキャラクタ定義テンプレートの情報を取得する

引数

定義番号

テンプレートの定義番号:0~8191

返値

U,V

参照する画像のグラフィックページ上の座標

W,H

スプライト定義の画像サイズ

HX,HY

スプライト定義の基準点座標

A

スプライト定義のアトリビュート

SPDEF 2 OUT U,V,ATR

SPDEF 定義番号,元になる定義番号,[U],[V],[W],[H],[原点X],[原点Y],[アトリビュート]

スプライトキャラクタ定義用テンプレートをコピーする

・コピー不要な要素は省略可能(区切りの','カンマは必要)
・引数部分はコピーした上で調整する場合に利用

引数

定義番号

テンプレートの定義番号:0~8191

ソース定義番号

コピー元になる定義番号:0~8191

U,V

参照する画像のグラフィックページ上の座標

W,H

定義するスプライトの大きさ
・省略時はW,Hとも16

原点X,Y

スプライトの座標基準点
・省略時は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

スプライトキャラクタ定義用テンプレートを初期状態に戻す

引数

なし

SPDEF

SPLINK スプライト番号,リンク先スプライト番号[,リンクフラグ]

スプライトを別のスプライトにリンクさせる

・リンクすると座標がリンク先(親)に追従するようになる
・子の表示座標と表示優先度は、親を基準とした相対座標となる
・SPSET前に使うとエラー

引数

スプライト番号

リンク元(子)のスプライトの番号: 0~4095

リンク先スプライト番号

リンク先(親)のスプライトの番号: 0~4095
・リンク元の子孫を指定するとエラー

リンクフラグ

リンク先(親)の情報のどれを引き継ぐかを指定するビット値の組合わせ
・表示座標・表示優先度以外の属性を引き継ぎたい場合に指定する
・bit0を指定した場合、親がSPCLRされてから1V経過後に子孫が消去される
・省略時は0

bit0 1 表示ON/OFFや消去のタイミング
bit1 2 回転
bit2 4 スケーリング
bit3 8

SPLINK 15,4
SPLINK 2,0,3

SPLINK(スプライト番号)

指定された番号スプライトのリンク先番号を取得する

・SPSET前に使うとエラー

引数

スプライト番号

リンク元(子)のスプライトの番号: 0~4095

返値

リンク先の番号:0~4095(-1の時リンク無し)

V=SPLINK(15)

SPUNLINK スプライト番号

スプライトのリンクを解除する

・SPSET前に使うとエラー

引数

スプライト番号

リンクを解除するスプライトの番号:0~4095

SPUNLINK 15

SPANIM スプライト番号,アニメ対象,データ配列[,ループ]

スプライトにアニメーションを設定する

・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

SPANIM スプライト番号,アニメ対象,"@ラベル文字列"[,ループ]

スプライトにアニメーションを設定する(DATA命令で指定)

・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

SPANIM スプライト番号,アニメ対象,時間1,項目1[,項目2][,時間2,項目1[,項目2]]…[,ループ]

スプライトにアニメーションを設定する(直接引数として指定)

・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

SPANIM スプライト番号,アニメーション定義番号

スプライトにアニメーションを設定する(アニメーション定義番号で指定)

・ANIMDEFで定義したアニメーション定義を指定できる
・SPSET前に使うとエラー

引数

スプライト番号

アニメーションを設定するスプライトの番号:0~4095

アニメーション定義番号

ANIMDEF命令で定義済みの定義番号:0~1023

ANIMDEF 0,"XY",-60,100,0
SPSET 0,0
SPANIM 0,0

SPANIM [スプライト番号]

スプライトアニメーションをクリアする

引数

スプライト番号

アニメーションをクリアするスプライトの番号:0~4095
・SPSETしていない番号を指定するとエラー
・省略すると全スプライトのアニメーションをクリアする

SPANIM 0
SPANIM

SPSTOP [スプライト番号]

スプライトのアニメーションを停止させる

・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライトの番号: 0~4095
・省略すると全スプライトのアニメーションを停止させる

SPSTOP

SPSTART [スプライト番号]

スプライトのアニメーションを再開する

・SPSETの前に使うとエラー

引数

スプライト番号

対象のスプライトの番号:0~4095
・省略すると全スプライトのアニメーションを開始させる

SPSTART

SPCHK(スプライト番号)

スプライトのアニメーション状態を取得する

・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|

SPVAR スプライト番号,変数キー,値

スプライト変数を設定する

・すべてのスプライトはスプライト変数と呼ばれる特殊な変数を持っている
・スプライト変数はプログラム実行開始時、SPSET,SPCLR呼び出し時にクリアされる

引数

スプライト番号

対象のスプライト番号:0~4095

変数キー

スプライト変数の名前
・文字列または整数を名前として付ける事ができる

内部変数に登録する値
・数値または文字列を登録する事ができる

SPVAR 0,7,1
SPVAR 0,"NAME","VALUE" 

SPVAR(スプライト番号,変数キー)

スプライト変数を読み出す

引数

スプライト番号

対象のスプライト番号:0~4095

変数キー

スプライト変数の名前。文字列または整数を名前として付ける事ができる

返値

SPVARで登録した値
SPVARで値を登録していない場合は、整数の0が返る。

V=SPVAR(54,0)

SPVAR スプライト番号[,変数キー]

スプライト変数を削除する

引数

スプライト番号

対象のスプライト番号:0~4095

変数キー

削除するスプライト変数の名前
・文字列または整数を名前として付ける事ができる
・省略すると指定スプライトの全スプライト変数を削除する

SPVAR 0,7
SPVAR 0,"NAME" 

SPCOL スプライト番号[,スケール対応]

スプライト衝突判定情報を設定する

・SPHIT系の命令を使う前に必ず呼ぶこと
・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライト番号:0~4095

スケール対応

1を指定するとSPSCALEやSPANIMでのスケール変更に合わせて衝突判定の大きさが変化する
0を指定するとスケール変更しても衝突判定の大きさは変化しない
・省略時は0

SPCOL 3,1

SPCOL スプライト番号,[スケール対応],マスク

スプライト衝突判定情報を設定する(マスク指定付)

・SPHIT系の命令を使う前に必ず呼ぶこと
・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライト番号:0~4095

スケール対応

1を指定するとSPSCALEやSPANIMでのスケール変更に合わせて衝突判定の大きさが変化する
0を指定するとスケール変更しても衝突判定の大きさは変化しない
・省略時は0

マスク

0~&HFFFFFFFF(32ビット)

・衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす
・省略時は&HFFFFFFFF

SPCOL 3,1,31
SPCOL 3,,31

SPCOL スプライト番号,始点X,始点Y,幅,高さ[,スケール対応]
SPCOL スプライト番号,始点X,始点Y,幅,高さ,[スケール対応],マスク

スプライト衝突判定情報を設定する(範囲指定付)

・SPHIT系の命令を使う前に必ず呼ぶこと
・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライト番号:0~4095

始点X,Y

・判定領域の始点座標: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

SPCOL スプライト番号 OUT スケール対応[,マスク]

スプライト衝突判定情報を取得する(スケール対応とマスク)

・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライト番号:0~4095

返値

スケール対応

スプライトに設定されているスケール対応フラグ

マスク

スプライトに設定されている衝突マスク値

SPCOL 3 OUT SC,MSK

SPCOL スプライト番号 OUT 始点X,始点Y,幅,高さ[,スケール対応[,マスク]]

スプライト衝突判定情報を取得する(すべて)

・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライト番号:0~4095

返値

始点X,Y

衝突判定領域の始点座標

幅,高さ

衝突判定領域の幅と高さ

スケール対応

スプライトに設定されているスケール対応フラグ

マスク

衝突判定マスク値

SPCOL 3 OUT X,Y,W,H,SC,MSK

SPCOLVEC スプライト番号[,移動量X,移動量Y]

スプライト衝突判定用移動速度を設定する

・SPSET前に使うとエラー

引数

スプライト番号

対象のスプライト番号:0~4095

移動量X,移動量Y

・省略時は次の要領で自動計算される
・SPANIMのXYを線形補完で実行中:前フレームからの移動距離
・それ以外の場合:0,0

SPCOLVEC 93

SPHITSP(スプライト番号[,先頭ID,末尾ID])

スプライトの衝突判定結果を返す

・事前にSPCOLを呼び出しておくこと

引数

スプライト番号

判定するスプライトの番号:0~4095

先頭ID,末尾ID

判定するスプライトの範囲(0~4095)

返値

衝突したスプライトの番号(衝突のないとき-1)

H=SPHITSP(0)

SPHITSP(スプライト番号,相手スプライト番号)

指定スプライトとのスプライト衝突判定結果を返す

・事前にSPCOLを呼び出しておくこと

引数

スプライト番号

判定するスプライトの番号:0~4095

相手スプライト番号

相手側のスプライトの番号:0~4095

返値

0=衝突なし、1=衝突

H=SPHITSP(0,34)

SPHITSP()

直前に設定した情報からスプライトの衝突判定結果を返す

・引数付きのSPHITSPで衝突先が複数ある場合、引数を省略して再度呼び出す事で衝突先を全て取り出す事ができる。
・事前にSPCOLを呼び出しておくこと
・事前に引数を省略しないSPHITSPを呼び出しておくこと

返値

衝突したスプライトの番号(衝突のないとき-1)

H=SPHITSP(0)
WHILE H>=0
 H=SPHITSP()
WEND

SPHITRC(始点X,始点Y,幅,高さ[,[マスク],移動量X,移動量Y])

動く四角形とすべてのスプライトの衝突判定結果を返す

・事前にSPCOLを呼び出しておくこと

引数

始点X,Y

判定元の四角形の左上座標

幅,高さ

判定元の四角形の幅と高さ

マスク

0~&HFFFFFFFF(32ビット)

・衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす
・省略時は&HFFFFFFFF

移動量X,Y

判定元の四角形の移動量

返値

衝突したスプライトの番号(衝突のないとき-1)

H=SPHITRC(0,0,16,16)

SPHITRC(スプライト番号,始点X,始点Y,幅,高さ[,[マスク],移動量X,移動量Y])

指定したスプライトと四角形の衝突判定結果を返す

・事前にSPCOLを呼び出しておくこと

引数

スプライト番号

衝突相手のスプライトの番号:0~4095

始点X,始点Y

判定元の四角形の左上座標

幅,高さ

判定元の四角形の幅と高さ

マスク

0~&HFFFFFFFF(32ビット)

・衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす
・省略時は&HFFFFFFFF

移動量X,Y

判定元の四角形の移動量

返値

0=衝突なし、1=衝突

H=SPHITRC(1,0,0,16,16)

SPHITRC(先頭ID,末尾ID,始点X,始点Y,幅,高さ[,[マスク],移動量X,移動量Y])

指定範囲のスプライトと四角形の衝突判定結果を返す

・事前にSPCOLを呼び出しておくこと

引数

先頭ID,末尾ID

判定するスプライトの範囲(0~4095)

始点X,Y

判定元の四角形の左上座標

幅,高さ

判定元の四角形の幅と高さ

マスク

0~&HFFFFFFFF(32ビット)

・衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす
・省略時は&HFFFFFFFF

移動量X,Y

判定元の四角形の移動量

返値

衝突したスプライトの番号(衝突のないとき-1)

H=SPHITRC(0,0,16,16)

SPHITRC()

直前に設定した情報からスプライトの衝突判定結果を返す

・引数付きのSPHITRCで衝突先が複数ある場合、引数を省略して再度呼び出す事で衝突先を全て取り出す事ができる。
・事前にSPCOLを呼び出しておくこと

引数

なし

返値

衝突したスプライトの番号(衝突のないとき-1)

H=SPHITRC(0,0,16,16)
WHILE (H >= 0)
 H=SPHITRC()
WEND

SPHITINFO()

衝突判定結果の詳細情報取得(衝突時間)

引数

なし

返値

衝突時間

・衝突時間: 0~1の実数値
・判定時の座標+速度×衝突時間が衝突座標と一致

TM=SPHITINFO()

SPHITINFO OUT TM,X1,Y1,X2,Y2

衝突判定結果の詳細情報取得(衝突時間と座標)

引数

なし

返値

TM

・衝突時間: 0~1の実数値
・判定時の座標+速度×衝突時間が衝突座標と一致

X1,Y1

衝突時の物体1の座標

X2,Y2

衝突時の物体2の座標

SPHITINFO OUT TM,X1,Y1,X2,Y2

SPHITINFO OUT TM,X1,Y1,VX1,VY1,X2,Y2,VX2,VY2

衝突判定結果の詳細情報を取得する(衝突時間と座標と速度)

引数

なし

返値

衝突時間

・衝突時間: 0~1の実数値
・判定時の座標+速度×衝突時間が衝突座標と一致

X1,Y1

衝突時の物体1の座標

VX1,VY1

衝突時の物体1の速度

X2,Y2

衝突時の物体2の座標

VX2,VY2

衝突時の物体2の速度

SPHITINFO OUT TM,X1,Y1,VX1,VY1,X2,Y2,VX2,VY2

SPFUNC スプライト番号,"@ラベル"
SPFUNC スプライト番号,"ユーザー定義命令名"

スプライトごとにコールバック処理を割り当てる

・コールバック処理が必要な上級者向けの命令
・GOSUBでジャンプしてきてほしいラベルか、実行してほしいDEF命令名のどちらかを指定できる
・CALL SPRITE により全スプライトのコールバック処理を一度に実行する
・コールバック先ではCALLIDX()関数で番号を取得できる

引数

スプライト番号

対象のスプライト番号:0~4095

@ラベル

呼び出される処理先のラベル

ユーザー定義命令名

呼び出されるユーザー定義命令の名前

SPFUNC 0,"@PROG" 
SPFUNC 1,"USERDEF" 

SPFUNC スプライト番号

スプライトに割り当てたコールバック処理をクリアする

引数

スプライト番号

クリア対象のスプライト番号:0~4095

SPFUNC 0

SPUSED(スプライト番号)

指定されたスプライトが使われているか調査する

引数

スプライト番号

対象のスプライト番号:0~4095

返値

0=空き、1=使用中

S=SPUSED(4)

reference/スプライト.txt · 最終更新: 2019/08/15 12:54 (外部編集)

ページ用ツール