スプライトの制御命令

↑目次に戻る

SPPAGE グラフィックページ

SPRITEに割り当てるグラフィックページの設定

引数

グラフィックページ

0~3(GRP0~GRP3) 初期状態のSPRITE用ページは3(GRP3)

参考(ページ3にはスプライト用の画像が定義されています)

SPPAGE 3

変数=SPPAGE()

SPRITEに割り当てられたグラフィックページの取得

戻り

グラフィックページ番号(0~3)

P=SPPAGE()

SPCLIP [始点X,始点Y,終点X, 終点Y]

SPRITEのクリッピング領域を指定

・範囲省略時画面全体
・始点と終点に指定できる座標の範囲はXSCREEENの解像度に依存します

引数

始点X,Y

クリップ領域の始点座標

終点X,Y

クリップ領域の終点座標

SPCLIP 100,100,200,200

SPDEF

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

引数

なし

SPDEF共通の補足

・SPRITEの定義用テンプレートは上下画面共通要素
・SPSETの定義を簡略化するために用意されています

SPDEF

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

SPRITEのキャラクタ定義用テンプレートを作成

引数

定義番号

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

U,V

定義する元画像の座標(U:0~1279、V:0~1023)

W,H

・定義する元画像サイズ 省略時16,16
・U+Wの値が1280、またはV+Hの値が1024を超えるとエラー

原点X,Y

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

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

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

引数

数値配列

SPRITEのテンプレートデータが格納された数値配列

・1個分の要素はU,V,W,H,原点X,原点Y,アトリビュートの7つ
・要素数は7の倍数である必要がある
・0から順に要素数/7までのSPRITEテンプレートが定義される

定義番号オフセット

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

U,Vオフセット

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

SPDEF SRCDATA
SPDEF SRCDATA 256, 0,256

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

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

引数

@ラベル文字列

SPRITEのテンプレートデータが列挙されたDATA命令のラベル

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

定義番号オフセット

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

U,Vオフセット

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

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

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

SPRITEのキャラクタ定義テンプレートの情報を得る

引数

定義番号

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

戻り

U,V

画像の座標を受け取る変数

W,H

画像サイズを受け取る変数

HX,HY

SPRITEの座標基準点を受け取る変数

A

アトリビュートを受け取る変数

SPDEF 2 OUT U,V,ATR

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

SPRITEキャラクタ定義用テンプレートをコピー

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

引数

定義番号

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

ソース定義番号

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

U,V

定義する元画像の座標(U:0~1279、V:0~1023)

W,H

定義する元画像サイズ 省略時16,16

※U+Wの値が1280、またはV+Hの値が1024を超えるとエラー

原点X,Y

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共通要素

・SPSETによりSPRITEは利用可能となる
・SPSET実行により回転等の情報は全て初期化
・SPVARの値はすべて0になる
・SPHIT系衝突判定を使う時はSPSET後にSPCOLを呼びます

引数

管理番号

作成するSPRITEの番号: 0~511

定義番号

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

SPSET 1,500

SPSET 管理番号 ,U,V [,W,H] ,アトリビュート

SPRITE作成(直接画像情報等を指定)

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

引数

管理番号

作成するSPRITEの番号: 0~511

U,V

定義する元画像の座標(U:0~1279、V:0~1023)

W,H

・定義する元画像サイズ 省略時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

SPSET 定義番号 OUT IX

SPRITEに空きを探して作成(定義テンプレート利用)

・SPRITE全体から空きを探す

引数

定義番号

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

戻り

IX

生成された番号を受け取る変数: 0~511(-1=空きなし)

SPSET 500 OUT IX

SPSET U,V,W,H,アトリビュート OUT IX

SPRITEに空きを探して作成(直接画像情報等を指定)

・SPRITE全体から空きを探す

引数

U,V

定義する元画像の座標(U:0~1279、V:0~1023)

W,H

・定義する元画像サイズ 省略時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

戻り

IX

生成された番号を受け取る変数: 0~511(-1=空きなし)

SPSET 0,0,32,32,1 OUT IX

SPSET 上限,下限, 定義番号 OUT IX

範囲内でSPRITEに空きを探して作成(定義テンプレート利用)

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

引数

上限,下限

空きを探す範囲(0~511)

定義番号

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

戻り

IX

生成された番号を受け取る変数: 0~511(-1=空きなし)

SPSET 100,120, 500 OUT IX

SPSET 上限,下限, U,V,W,H,アトリビュート OUT IX

範囲内でSPRITEに空きを探して作成(直接画像情報等を指定)

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

引数

上限,下限

空きを探す範囲(0~511)

U,V

定義する元画像の座標(U:0~1279、V:0~1023)

W,H

定義する元画像サイズ 省略時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)

戻り

IX

生成された番号を受け取る変数: 0~511(-1=空きなし)

SPSET 100,120, 0,0,32,32,1 OUT IX

SPCLR 管理番号

指定SPRITEの使用をやめてメモリーを解放

・利用後に開放しないとSPSET用の空きがなくなる

引数

管理番号

使用をやめるSPRITEの管理番号: 0~511

SPCLR 56

SPSHOW 管理番号

SPRITEの表示を開始

・SPSET前に使うとエラー

引数

管理番号

表示するSPRITEの管理番号: 0~511

SPSHOW 43

SPHIDE 管理番号

SPRITEの表示を隠す

・表示を隠すだけでありSPRITEは存在
・SPSET前に使うとエラー

引数

管理番号

表示を隠すSPRITEの管理番号: 0~511

SPHIDE 43

SPHOME 管理番号,位置X,位置Y

SPRITEの座標基準点(ホーム位置)指定

・SPOFS命令の位置基準点
・回転やスケーリングの中心点
・衝突判定の中心座標
・SPSET前に使うとエラー

引数

管理番号

基準点を設定するSPRITEの管理番号: 0~511

位置X,Y

SPRITEの左上を原点(0,0)とした相対座標

SPHOME 34,16,16

SPHOME 管理番号 OUT HX,HY

SPRITEの座標基準点(ホーム位置)取得

・SPSET前に使うとエラー

引数

管理番号

SPRITEの管理番号: 0~511

戻り

HX,HY

基準点の座標を受け取る変数

SPHOME 10 OUT HX,HY

SPOFS 管理番号,[X],[Y][,Z]

SPRITE座標の変更(移動)

・SPSET前に使うとエラー

引数

管理番号

対象のSPRITEの管理番号: 0~511

X,Y

SPRITEを表示する画面座標

Z

奥行方向の座標(奥:1024<液晶面:0<手前:-256)

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

SPOFS 管理番号 OUT X,Y[,Z]

SPRITEの座標を得る

・SPSET前に使うとエラー

引数

管理番号

対象のSPRITEの管理番号: 0~511

戻り

X,Y

座標を受け取る変数

Z

奥行情報を受け取る変数

SPOFS 12 OUT X,Y,Z

SPROT 管理番号,角度

SPRITEの回転角度指定

・SPSET前に使うとエラー

引数

管理番号

対象のSPRITEの管理番号: 0~511

角度

回転角度: 0~360(時計回り)

SPROT 23,45

SPROT 管理番号 OUT DR

SPRITEの回転角度を得る

・SPSET前に使うとエラー

引数

管理番号

対象のSPRITEの管理番号: 0~511

戻り

DR

角度を受け取る変数

SPROT 23 OUT DR

変数=SPROT( 管理番号 )

SPRITEの回転角度を得る(関数タイプ)

・SPSET前に使うとエラー

引数

管理番号

対象のSPRITEの管理番号: 0~511

戻り

現在の角度(0~360)

A=SPROT(23)

SPSCALE 管理番号, 倍率X, 倍率Y

SPRITEのスケール(表示倍率)の変更

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

引数

管理番号

対象のSPRITEの管理番号: 0~511

倍率X,Y

0.5(50%)~1.0(100%)~2.0(200%)~

SPSCALE 56, 0.75, 0.75

SPSCALE 管理番号 OUT SX,SY

SPRITEの表示倍率を得る

・SPSET前に使うとエラー

引数

管理番号

対象のSPRITEの管理番号: 0~511

戻り

SX,SY

倍率を受け取る変数

SPSCALE 45 OUT SX,SY

SPCOLOR 管理番号, 色コード

SPRITEの表示色を設定

・SPSET前に使うとエラー

引数

管理番号

対象のSPRITEの管理番号: 0~511

色コード

ARGB=8888形式の32ビット色コード

・Aの値を小さくすると透明度が上がる
・実際の表示色は色コードに元のドット色を乗算した値

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

SPCOLOR 管理番号 OUT C32

SPRITEの表示色を得る

・SPSET前に使うとエラー

引数

管理番号

対象のSPRITEの管理番号: 0~511

戻り

C32

現在の色コードが返る変数(32ビットARGB)

SPCOLOR 1 OUT C

SPCHR 管理番号, 定義番号

SPRITEのキャラクタ定義を変更(テンプレート指定)

・SPSET前に使うとエラー

引数

管理番号

定義を変更するSPRITEの管理番号: 0~511

定義番号

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

SPCHR 0,500

SPCHR 管理番号,[U],[V],[W],[H],[アトリビュート]

SPRITEのキャラクタ定義を変更(直接定義)

・管理番号以外の引数は省略可能
・SPSET前に使うとエラー

引数

管理番号

対象のSPRITEの管理番号: 0~511

U,V

定義する元画像の座標(U:0~1279、V:0~1023)

W,H

・定義する元画像サイズ 省略時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

SPCHR 管理番号 OUT U,V [,W,H [,A] ]

SPRITEのキャラクタ定義情報を得る

・SPSET前に使うとエラー

引数

管理番号

対象のSPRITEの管理番号: 0~511

戻り

U,V

元画像の座標を格納する変数

W,H

元画像のサイズを格納する変数

A

アトリビュートを格納する変数

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

SPCHR 管理番号 OUT DEFNO

SPRITEのキャラクタ定義番号を得る

・SPSET前に使うとエラー

引数

管理番号

対象のSPRITEの管理番号: 0~511

戻り

DEFNO

定義番号を受け取る変数

SPCHR 5 OUT DEFNO

SPLINK 管理番号, リンク先管理番号

SPRITEを別のSPRITEにリンク

・リンクは座標のみ(回転角度や倍率情報は対象外)
・リンク先(親)指定は自分よりも小さい管理番号のみ
・子の表示座標は、親を基準とした相対座標となる
・この座標系は画面左上が原点とはならない
・リンクの階層に制限はない
・SPSET前に使うとエラー

引数

管理番号

リンク元(子)のSPRITEの管理番号: 0~511

リンク先管理番号

リンク先(親)のSPRITEの管理番号: 0~511

※リンク元より小さい管理番号以外エラー

SPLINK 15,4

変数=SPLINK( 管理番号 )

指定された管理番号SPRITEのリンク先番号を得る

・SPSET前に使うとエラー

引数

管理番号

リンク元(子)のSPRITEの管理番号: 0~511

戻り

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

V=SPLINK()

SPUNLINK 管理番号

SPRITEのリンクを解除

・SPSET前に使うとエラー

引数

管理番号

リンクを解除するSPRITEの管理番号: 0~511

SPUNLINK 15

SPANIM 管理番号,アニメ対象,データ配列 [,ループ]

SPRITEによるアニメ表示(配列で指定)

・SPSET前に使うとエラー

SPRITEアニメ共通仕様

・アニメは値を設定して指定時間分待つという動作
・アニメ開始は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

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

SPRITEによるアニメ表示(DATA命令で指定)

・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

SPANIM 管理番号,アニメ対象,時間1,項目1[,項目2] [,時間2,項目1[,項目2]]… [,ループ]

SPRITEによるアニメ表示(直接引数として指定)

・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

SPSTOP [管理番号]

SPRITEのアニメーションを停止

・SPSET前に使うとエラー

引数

管理番号

対象のSPRITEの管理番号: 0~511

※管理番号を省略すると全SPRITEのアニメーションを停止

SPSTOP

SPSTART [管理番号]

SPRITEのアニメーションを開始

・SPSETの前に使うとエラー

引数

管理番号

対象のSPRITEの管理番号: 0~511

※管理番号を省略すると全SPRITEのアニメーションを開始

SPSTART

変数=SPCHK( 管理番号 )

SPRITEのアニメーション状態を取得

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

SPVAR 管理番号,内部変数番号,数値

SPRITE用内部変数への書き込み

・SPRITE用内部変数(8個ずつあるユーザー用変数)
・SPSET前でも利用可能(SPSET実行で8個とも0)

引数

管理番号

対象のSPRITE管理番号: 0~511

内部変数番号

内部変数の番号: 0~7

数値

内部変数に登録する数値(0~

SPVAR 0,7,1

変数=SPVAR( 管理番号,内部変数番号 )

SPRITE用内部変数の読み込み(関数型)

・SPRITE用内部変数(8個ずつあるユーザー用変数)
・SPSET前でも利用可能(SPSET実行で8個とも0)

引数

管理番号

対象のSPRITE管理番号: 0~511

内部変数番号

内部変数の番号: 0~7

戻り

SPVARで書き込んだ値

V=SPVAR(54,0)

SPVAR 管理番号,内部変数番号 OUT V
h5. SPRITE用内部変数の読み込み

・SPRITE用内部変数(8個ずつあるユーザー用変数)
・SPSET前でも利用可能(SPSET実行で8個とも0)

引数

管理番号

対象のSPRITE管理番号: 0~511

内部変数番号

内部変数の番号: 0~7

戻り

V

内部変数の値が戻る数値変数

SPVAR 54,0 OUT V

SPCOL 管理番号 [,スケール対応]

SPRITE衝突判定情報の設定

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

引数

管理番号

対象のSPRITE管理番号: 0~511

スケール対応

FALSE 無視(省略時=FALSE)
TRUE SPSCALEに判定領域を同期

※SPCOL命令後に設定したSPSCALEから有効

SPCOL 3,TRUE

SPCOL 管理番号,[スケール対応],マスク

SPRITE衝突判定情報の設定(マスク指定付)

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

引数

管理番号

対象のSPRITE管理番号: 0~511

スケール対応

FALSE 無視(省略時=FALSE)
TRUE SPSCALEに判定領域を同期

※SPCOL命令後に設定したSPSCALEから有効

マスク

0~&HFFFFFFFF

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

SPCOL 3,TRUE,31
SPCOL 3,,31

SPCOL 管理番号,始点X,始点Y,幅,高さ,[スケール対応],マスク

SPRITE衝突判定情報の設定(範囲指定付)

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

引数

管理番号

対象のSPRITE管理番号: 0~511

始点X,Y

・判定領域の始点座標: X,Y(-32768~32767)
・SPHOMEを原点(0,0)とした相対座標

幅,高さ

判定領域の幅と高さ: W,H(0~65535)

スケール対応

FALSE 無視(省略時=FALSE)
TRUE SPSCALEに判定領域を同期

※SPCOL命令後に設定したSPSCALEから有効

マスク

0~&HFFFFFFFF

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

SPCOL 3,0,0,32,32,TRUE,255
SPCOL 3,0,0,32,32,,255

SPCOL 管理番号 OUT スケール対応 [,マスク]

SPRITE衝突判定情報取得(スケール対応とマスク)

・SPSET前に使うとエラー

引数

管理番号

対象のSPRITE管理番号: 0~511

戻り

スケール対応

スケール値を受け取る変数

マスク

マスク値を受け取る変数

SPCOL 3 OUT SC,MSK

SPCOL 管理番号 OUT 始点X,始点Y,幅,高さ

SPRITE衝突判定情報取得(範囲)

・SPSET前に使うとエラー

引数

管理番号

対象のSPRITE管理番号: 0~511

戻り

始点X,Y

判定領域の始点座標を受け取る変数

幅,高さ

判定領域の幅と高さを受け取る変数

SPCOL 3 OUT X,Y,W,H

SPCOL 管理番号 OUT 始点X,始点Y,幅,高さ,スケール対応

SPRITE衝突判定情報の取得(範囲とスケール対応)

・SPSET前に使うとエラー

引数

管理番号

対象のSPRITE管理番号: 0~511

戻り

始点X,Y

判定領域の始点座標を受け取る変数

幅,高さ

判定領域の幅と高さを受け取る変数

スケール対応

スケール値を受け取る変数

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

SPCOL 管理番号 OUT 始点X,始点Y,幅,高さ,スケール対応,マスク

SPRITE衝突判定情報の取得(すべて)

・SPSET前に使うとエラー

引数

管理番号

対象のSPRITE管理番号: 0~511

戻り

始点X,Y

判定領域の始点座標を受け取る変数

幅,高さ

判定領域の幅と高さを受け取る変数

スケール対応

スケール値を受け取る変数

マスク

マスク値を受け取る変数

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

SPCOLVEC 管理番号 [,移動量X,移動量Y]

SPRITE衝突判定用移動速度の設定

・SPSET前に使うとエラー

引数

管理番号

対象のSPRITE管理番号: 0~511

移動量X,移動量Y

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

SPCOLVEC 93

変数 = SPHITSP( 管理番号 [,先頭ID,末尾ID] )

SPRITEの衝突判定

・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー

引数

管理番号

判定するSPRITEの管理番号: 0~511

先頭ID,末尾ID

判定するSPRITEの範囲(0~511)

戻り

衝突したSPRITEの管理番号(衝突のないとき-1)

H=SPHITSP(0)

変数 = SPHITSP( 管理番号 ,相手管理番号 )

指定SPRITEとのSPRITE衝突判定

・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー

引数

管理番号

判定するSPRITEの管理番号: 0~511

相手管理番号

相手側のSPRITEの管理番号: 0~511

戻り

FALSE=衝突なし、TRUE=衝突

H=SPHITSP( 0,34 )

変数 = SPHITSP()

直前に設定した情報からSPRITEの衝突判定

・引数を省略しないSPSETSPを呼び出しておくこと
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー

戻り

衝突したSPRITEの管理番号(衝突のないとき-1)

H=SPHITSP()

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

動く四角形とすべてのSPRITEの衝突判定

・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー

引数

始点X,Y

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

幅,高さ

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

マスク

0~&HFFFFFFFF( 32ビット )

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

移動量X,Y

判定元の四角形の移動量

戻り

衝突したSPRITEの管理番号(衝突のないとき-1)

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

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

指定したSPRITEと四角形の衝突判定

・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー

引数

管理番号

衝突相手のSPRITEの管理番号: 0~511

始点X,始点Y

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

幅,高さ

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

マスク

0~&HFFFFFFFF( 32ビット )

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

移動量X,Y

判定元の四角形の移動量

戻り

FALSE=衝突なし、TRUE=衝突

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

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

指定範囲のSPRITEと四角形の衝突判定

・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー

引数

先頭ID,末尾ID

判定するSPRITEの範囲(0~511)

始点X,Y

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

幅,高さ

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

マスク

0~&HFFFFFFFF( 32ビット )

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

移動量X,Y

判定元の四角形の移動量

戻り

衝突したSPRITEの管理番号(衝突のないとき-1)

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

変数 = SPHITRC()

直前に設定した情報からSPRITEの衝突判定

・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー

引数

なし

戻り

衝突したSPRITEの管理番号(衝突のないとき-1)

H=SPHITRC()

SPHITINFO OUT TM

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

・SPSET前に使うとエラー

引数

なし

戻り

TM

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

SPHITINFO OUT TM

SPHITINFO OUT TM,X1,Y1,X2,Y2

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

・SPSET前に使うとエラー

引数

なし

戻り

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

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

・SPSET前に使うとエラー

引数

なし

戻り

衝突時間

・衝突時間が戻る変数: 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 管理番号, "@ラベル"

SPRITEごとに処理を割り当て

・コールバック処理が必要な上級者向けの命令
・CALL SPRITE により全SPRITEの処理を実行
・@ラベルの代わりにDEFで定義したユーザー処理も指定可能
・処理先ではCALLIDXシステム変数で管理番号取得可能

引数

管理番号

対象のSPRITE管理番号: 0~511

@ラベル

呼び出される処理先のラベル(またはユーザー定義処理、ユーザー定義処理の場合は””不要)

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

変数=SPUSED( 管理番号 )

指定されたSPRITEが使われているか調査

引数

管理番号

対象のSPRITE管理番号: 0~511

戻り

TRUE=使用中、FALSE=空き

S=SPUSED(4)

↑目次に戻る