すべてのリファレンス

ダイレクトモード専用命令

NEW

全てのプログラムスロット内のプログラムを消去する

・ダイレクトモード専用。

NEW

NEW プログラムスロット

指定プログラムスロットのプログラムを消去する

・ダイレクトモード専用。

引数

プログラムスロット

消去するプログラムスロット:0~5

NEW 3

LIST

エディットモードへ切り替える

・DIRECTモード専用。

LIST

LIST [プログラムスロット:]行番号

エディットモードへ切り替え、指定プログラムスロットの指定行番号にカーソルを移動させる

・DIRECTモード専用。

引数

プログラムスロット

編集するプログラムスロットを指定する
・省略時は現在編集中のプログラムスロットを指定した事になる。

行番号

編集したい行番号を指定する

LIST 20
LIST 2:20

LIST ERR

編集モードへ切り替え、直前にエラーが発生した位置にカーソルを移動させる。

・DIRECTモード専用。

LIST ERR

RUN

プログラムスロット0のプログラムを実行する。

・DIRECTモード専用。
・変数、SPFUNC,TFUNC設定内容はクリアされる。

RUN

RUN プログラムスロット

指定プログラムスロット内のプログラムを実行する。

・DIRECTモード専用。
・指定スロットの変数、SPFUNC,TFUNC設定内容はクリアされる。

引数

プログラムスロット

実行したいプログラムスロット:0~5

RUN 1

CONT

停止中のプログラムの実行を再開する。

・DIRECTモード専用。
・STOP命令やBreakボタンでプログラム実行を中断した位置から実行再開できる。
・エラーでプログラム実行が停止した場合は再開できない。
・プログラム実行中断後、プログラムを編集すると再開できない。
・入力待ちの途中で中断したときは再開できない。

CONT

TRACE

停止中のプログラムを1命令だけ実行する

・DIRECTモード専用。
・STOP命令やBreakボタンでプログラム実行を中断した位置から実行再開できる。
・エラーでプログラム実行が停止した場合は実行できない。
・プログラム実行中断後、プログラムを編集すると実行できない。
・入力待ちの途中で中断したときは実行できない。

TRACE

BACKTRACE

サブルーチン、ユーザー定義命令の呼び出し履歴を表示する

・ダイレクトモード専用。
・STOP命令やエラー停止でプログラム実行が中断した時点までの呼び出し履歴を表示する。
・プログラムスロット番号と行番号のリストを表示する。

BACKTRACE

PROJECT "プロジェクト名"

カレントプロジェクトを変更する

・ダイレクトモード専用。

引数

プロジェクト名

カレントプロジェクトにしたいプロジェクトの名前
・空文字列""を指定すると、ワークスペースプロジェクトを設定する。

PROJECT "MYGAME" 

SUBRUN ファイル名文字列

指定プログラムをサブプログラム側でロードし、サブプログラムとして実行を開始する

・ダイレクトモード専用。
・サブインタプリタの変数、SPFUNC,TFUNC設定内容はクリアされる。

引数

ファイル名文字列

サブプログラムとしてロードしたいプログラムのファイル名文字列

SUBSTOP

実行中のサブプログラムをメインプログラム側から停止させる

・ダイレクトモード専用。

SUBSHOW

サブプログラムの画面を表示させる

・ダイレクトモード専用。

SUBHIDE

サブプログラムの画面を消す

・ダイレクトモード専用。

CLEAR

BASIC内部のメモリーを初期化する。

・ダイレクトモード専用。

CLEAR

変数や配列の定義、操作に関する命令

VAR 変数[=式][,変数[=式]…]
DIM 変数[=式][,変数[=式]…]

変数を明示的に定義する

・VARとDIMはどちらを使ってもよい。
・カンマで区切る事で複数の変数を同時に定義できる。

引数

変数名

・変数名には英数字とアンダースコア(_)が使用できる。
・先頭に数字は使用できない。

・式の結果が変数の初期値となる。
・式が省略された場合、変数名末尾の型記号(%/#/$)により%:整数型ゼロ、#:実数型ゼロ、$:空文字列が初期値としてセットされる。
・式が省略され、変数名に型記号がついていない場合はデフォルト数値型のゼロが初期値としてセットされる。

VAR A=0,B,C
DIM B$

VAR 配列変数名[[要素数[,要素数…]]]
DIM 配列変数名[[要素数[,要素数…]]]

配列を作成し、変数にセットする

・VARとDIMはどちらを使ってもよい。

引数

配列変数名

・変数名末尾に型記号(%/#/$)を付けると、それぞれ整数配列、実数配列、文字列配列を作成する。
・型記号を省略した場合はデフォルト数値型配列を作成する。

要素数

・確保する配列の要素数を[]でかこって指定する。
・要素数はカンマ(,)で区切る事で4次元配列まで作成できる。
・要素数を省略すると、要素数ゼロの1次元配列を作成する。

VAR ATR[4]
VAR DX[5],DY[5],DZ[5]
DIM POS$[10,5]
DIM IMAGE[]

VAR 配列変数名[[要素数[,要素数…]]]=[値1,値2,…]
DIM 配列変数名[[要素数[,要素数…]]]=[値1,値2,…]

配列を作成し、要素の値をあらかじめ設定した上で変数にセットする

・VARとDIMはどちらを使ってもよい。

引数

配列変数名

・変数名末尾に型記号(%/#/$)を付けると、それぞれ整数配列、実数配列、文字列配列を作成する。
・型記号を省略した場合はデフォルト数値型配列を作成する。

要素数

確保する配列の要素数を[]でかこって指定する
・要素数はカンマ(,)で区切る事で4次元配列まで作成できる。
・要素数を省略すると、要素数ゼロの1次元配列を作成する。

配列要素の初期値として設定する値のリスト
・要素数を省略した場合、値の数が要素数の1次元配列となる。

VAR ATR[4]=[1,2,3,4]
DIM POS$[10,5]=["X","Y","Z","W"]
DIM IMAGE[]=[0,1,2,3,4]

変数 = 式

変数に式の計算結果を代入する

・OPTION STRICTが定義されていない場合は未定義変数に代入しようとすると自動的に変数を定義する。
・OPTION STRICTが定義されている場合は未定義変数に代入しようとするとUndefined Variableエラーが発生する。

A=10
B=A*6
C[4]=A+B

SWAP 変数1,変数2

2つの変数に入っている値を交換する

引数

変数1,変数2

値を交換する2つの変数

SWAP A,B
SWAP A[5],B[2]

INC 変数[,式]

変数に入っている値に式の計算結果を加算する

引数

変数

操作する変数

加算する値
・省略時には1を指定した事になる。

INC X
INC X,3

DEC 変数[,式]

変数に入っている値から式の計算結果を引く

引数

変数

減算する変数

減算する値
・省略時には1を指定した事になる。

DEC X
DEC X,3

COPY(コピー元配列[,コピー元オフセット[,コピー要素数]])

配列をコピーする

引数

コピー元配列

コピー元の配列
・1次元配列のみ指定できる。

コピー元オフセット

コピー元の先頭要素番号
・省略時は0を指定した事になる。

コピー要素数

コピーする要素数
・省略時はコピー元配列の要素数からコピー元オフセットを引いた数を指定した事になる。

返値

コピー結果の配列
・文字列配列の場合、各要素の文字列もコピーされる。

COPY(コピー元文字列[,コピー元オフセット[,コピー文字数]])

文字列をコピーする

引数

コピー元文字列

コピー元の文字列

コピー元オフセット

コピー元の先頭位置
・省略時は0を指定した事になる。

コピー文字数

コピーする文字数
・省略時はコピー元文字列の文字数からコピー元オフセットを引いた数を指定した事になる。

返値

コピー結果の文字列

COPY コピー先配列[,コピー先オフセット],コピー元配列[[,コピー元オフセット],コピー要素数]

配列の内容を他の配列にコピーする

・1次元配列に限り、コピー先配列がコピー元配列より要素数が足りない場合自動拡張する。
・コピー元、コピー先とも配列の次元は無視される。

引数

コピー先配列

コピー先の配列

コピー先オフセット

コピー先の先頭要素番号
・省略時は0を指定した事になる。

コピー元配列

コピー元の配列

コピー元オフセット

コピー元の先頭要素番号
・省略時は0を指定した事になる。

コピー要素数

コピーする要素数
・省略時はコピー元配列の要素数からコピー元オフセットを引いた数を指定した事になる。

DIM SRC[10],DST[10]
COPY DST,SRC

COPY コピー先配列[,コピー先オフセット],ラベル文字列[,コピーデータ数]

DATA列を配列に読み込む

・DATA文で定義されたデータを配列に読み込む。
・配列要素数がコピーデータ数より少ない場合、1次元配列に限り、コピー先配列の要素数が足りない場合自動拡張する。

引数

コピー先配列

コピー先の配列

コピー先オフセット

コピー先の先頭要素番号
・省略時は0を指定した事になる。

ラベル文字列

読み込みたいDATA文を示すラベル名文字列
・ラベル名の後に最初に現れたDATA文から読み出しを開始する。

コピーデータ数

読み込むデータ数
・読み込めるデータ数がここで指定した値より少ない場合エラー。
・省略時はコピー先配列の要素数が指定される。

DIM DST[5]
COPY DST,"@SRC" 
@SRC
DATA 5,1,1,2,4

COPY コピー先文字列変数[,コピー先オフセット],コピー元文字列[[,コピー元オフセット],コピー文字数]

文字列の一部または全部を他の文字列変数にコピーする

引数

コピー先文字列変数

コピー先の文字列変数

コピー先オフセット

コピー先の先頭位置
・省略時は0を指定した事になる。

コピー元文字列

コピー元の文字列

コピー元オフセット

コピー元の先頭位置
・省略時は0を指定した事になる。

コピー文字数

コピーする文字数
・省略時はコピー元文字列の文字数からコピー元オフセットを引いた数を指定した事になる。

COPY A$,"12345" 

RINGCOPY コピー先配列,コピー先オフセット,コピー元配列[[,コピー元オフセット],コピー要素数]
RINGCOPY コピー先配列,コピー先オフセット,コピー元配列[[,コピー元オフセット],コピー要素数] OUT 変数

配列をリングバッファと見て、そこにデータをコピーする

・COPY命令と同じく配列間の値をコピーするが、コピー先よりもコピー元のコピー要素数が多い場合でも要素数を拡張せず、配列の先頭に折り返してデータをコピーする。
・コピー先、コピー元共に2次元配列まで指定できる。2次元配列を指定した場合、マルチチャンネルのリングバッファ(もしくはデータ)として扱う。
・コピー先、コピー元両方に2次元配列を指定した場合、双方のチャンネル数(第1次元の要素数)は同じにする必要がある。
・コピー先が2次元、コピー元が1次元配列の場合、コピー元のデータがコピー先の全チャンネルに同じようにコピーされる。
・コピー先、コピー元が同じ配列だった場合の動作は保証しない。

引数

コピー先配列

コピー先のリングバッファとして扱われる配列

コピー先オフセット

コピー先でのコピー開始位置

コピー元配列

コピー元の配列

コピー元オフセット

コピー元でのコピー開始位置
・省略時は0。

コピー要素数

コピーする要素の数
・省略時はコピー元配列の要素数。

返値

コピーしたデータの末尾位置
・リングバッファとして扱う場合、帰ってきた値が次回のコピー先オフセットとなる。

SORT [開始位置,要素数,]配列1[,配列2,…]

配列を昇順で並び替える

引数

開始位置

配列1内の並び替えを開始する位置
・省略時は0。

要素数

並び替える要素数
・省略時は配列1の要素数。

配列1

並び替える数値の入った配列

配列2

配列1の並び替え結果に連動して並び替える配列
・配列2~8は省略できる。
・配列2~8は文字列配列でも可。

DIM WORK[10]
SORT 0,10,WORK

RSORT [開始位置,要素数,]配列1[,配列2,…]

配列を降順で並び替える

引数

開始位置

配列1内の並び替え開始位置
・省略時は0。

要素数

並び替える要素数
・省略時は配列1の要素数。

配列1

並び替える数値の入った配列

配列2

配列1の並び替え結果に連動して並び替える配列
・配列2~8は省略できる。
・配列2~8は文字列配列でも可。

DIM WORK[10]
RSORT 0,10,WORK

PUSH 配列,式

配列の末尾に要素を追加する

・要素数が1つ増える。

引数

配列

要素を追加される配列

追加する要素の値

DIM WORK[10]
PUSH WORK,123

POP(配列)

配列の末尾から要素を取り出す

・要素数が1つ減る。

引数

配列

要素を取り出される配列

戻り

取り出した要素の値

DIM WORK[10]
PUSH WORK,123
A=POP(WORK)

UNSHIFT 配列,式

配列の先頭に要素を追加する

・要素数が1つ増える。

引数

配列

要素を追加される配列

追加する要素の値

DIM WORK[10]
UNSHIFT WORK,123

SHIFT(配列)

配列の先頭から要素を取り出す

・要素数が1つ減る。

引数

配列

要素を取り出される配列

DIM WORK[10]
UNSHIFT WORK,123
A=SHIFT(WORK)

FILL 配列,値[,オフセット[,要素数]]

配列内容をすべて指定値に設定する

・配列の型は、整数、実数、文字列いずれでも構わない。
・オフセットと要素数を指定すると部分的な変更も可能。

引数

配列

値を上書きする配列

数値や文字列

オフセット

値を書き込み始める位置

要素数

書き込む数

DIM WORK[10]
FILL WORK,0

TYPEOF(値)

値の型を調べる

引数

型を調べたい値

返値

値の型に応じて、次のいずれかの数値が返る。

0 デフォルト型 #T_DEFAULT
1 整数型 #T_INT
2 実数型 #T_REAL
3 文字列型 #T_STR
5 整数配列 #T_INTARRAY
6 実数配列 #T_REALARRAY
7 文字列配列 #T_STRARRAY

・デフォルト型は関数・命令コールで引数を省略した場合に設定される特殊な型。

ARRAY%(要素数[,要素数…])
ARRAY#(要素数[,要素数…])
ARRAY$(要素数[,要素数…])

配列を作成する

・VARによる変数定義時以外に配列を作成したい場合に使用する。
・ARRAY%は整数配列、ARRAY#は実数配列、ARRAY$は文字列配列を作成する。

引数

要素数 [,要素数…]

作成する配列の次元と要素数

返値

作成した配列

DIM(配列)
DIM(配列,次元)

配列の次元数や、各次元の要素数を調べる

引数

配列

調査する配列

次元

要素数を調べたい次元:0~3
・省略時は配列の次元数が返る。

返値

・次元を指定した場合は指定した次元の要素数が返る。
・次元を省略した場合は配列の次元数が返る。

DIM WORK[10,20]
? DIM(WORK)
? DIM(WORK,0)
? DIM(WORK,1)

RESIZE 配列,要素数[,要素数…]

配列のサイズを変更する

・拡張部分の要素には数値の0もしくは空文字列が入る。

引数

配列

サイズを変更する配列

要素数

サイズ変更後の要素数
・変更できるのは、配列定義の時に一番最初に書く要素数のみ。
・次元の変更はできない。

INSERT 配列,挿入位置[,要素数[,初期値]]

一次元配列に要素を挿入する

引数

配列

要素を増やす配列

挿入位置

要素を挿入する位置:0~配列要素数

要素数

挿入する要素数:正の数
・省略時は1。

初期値

挿入要素の値
・省略時は、数値配列では0、文字列配列では空文字列。

REMOVE 配列,削除位置[,要素数]

一次元配列の要素を削除する

引数

配列

要素を削除する配列

削除位置

要素を削除する位置:0~配列要素数-1

要素数

削除する要素数:正の数
・省略時は1。

FIND(配列,値)

指定した値を配列から検索して、見つかった位置を返す

引数

配列

検索対象の配列
・多次元配列も指定可能。

検索する値

返値

見つかった位置
・値が見つからなかった場合は-1が返る。

DIM A[]=[1,2,3,4,5]
?FIND(A,3)

FIND 配列,値 OUT 添字1[,添字2…]

指定した値を配列から検索して、見つかった位置を返す

引数

配列

検索対象の配列
・多次元配列も指定可能。

検索する値

返値

見つかった位置の添字
・返値の数は検索対象配列の次元数と同じでなければならない。
・値が見つからなかった場合は全ての返値に-1が返る。

DIM A$[3,3]=["1","2","3","4","5","6","7","8","9"]
FIND A$, "4" OUT Y,X
?A$[Y,X]

INSPECT 値

値の詳細情報を表示する

・型、値、配列の場合要素数と全要素の値を表示する。
・文字列・文字列変数では、文字列の長さも表示する。
・文字列の内容が長すぎる場合、後ろは省略される。
・INSPECTのかわりに??と省略可能。

INSPECT A
?? "12345"*10

制御命令

@ラベル

プログラムやデータの位置を示す識別子

・GOTO, GOSUB,命令で指定するジャンプ飛び先やRESTORE命令で指定するREAD命令の読み込み先を定義する。
・ラベルは、英数字とアンダースコア(_)からなる識別子の先頭に@をつけたもの。

@MAINLOOP

GOTO @ラベル
GOTO 文字列

指定したラベル位置に処理を移す

引数

@ラベル

ジャンプ先のラベル

文字列

ラベルのかわりにラベル名の入った文字列も指定できる
・"1:@ラベル名" の形式でプログラムスロット指定も可能。
・プログラムスロット指定をする場合、あらかじめEXEC命令で対象スロット内のプログラムを実行可能にしておくこと。

GOTO @MAIN
JP$="@MAIN":GOTO JP$

GOSUB @ラベル
GOSUB 文字列

指定したラベル位置に処理を移す

・GOTOと違い、RETURN命令でGOSUBの次の命令に戻ってくる。

引数

@ラベル

ジャンプ先のラベル

文字列

ラベルのかわりにラベル名の入った文字列も指定できる
・"1:@ラベル名" の形式でプログラムスロット指定も可能。
・プログラムスロット指定をする場合、あらかじめEXEC命令で対象スロット内のプログラムを実行可能にしておくこと。

GOSUB @SUB
JP$="@MAIN":GOSUB JP$

RETURN

直前に使用したGOSUB命令の次の命令に処理を移す

RETURN

ON 式 GOTO @ラベル0,@ラベル1…

式の値に対応したラベル行に分岐する

引数

ここに書かれた式の値によってジャンプ先を選択する。
・値は数値でなければならない。

@ラベル0

式の値が0のときのジャンプ先

@ラベル1

式の値が1のときのジャンプ先

・必要な数だけ飛び先を用意する。
・ON~GOTOのラベルには、文字列は使えない。

ON IDX GOTO @JMP_A,@JMP_B
PRINT OVER:END
@JMP_A
PRINT "IDX=0":END
@JMP_B
PRINT "IDX=1":END

ON 式 GOSUB @ラベル0,@ラベル1…

式の値に対応したラベル行に分岐し、RETURN命令の使用でON GOSUBの次の命令に戻る

引数

ここに書かれた式の値によってジャンプ先を選択する。
値は数値でなければならない。

@ラベル0

式の値が0のときのジャンプ先

@ラベル1

式の値が1のときのジャンプ先
 :
・必要な数だけ飛び先を用意する。
・ON~GOSUBのラベルには、文字列は使えない。

ON IDX GOSUB @SUB_A,@SUB_B
PRINT EXIT:END
@SUB_A
PRINT "IDX=0":RETURN
@SUB_B
PRINT "IDX=1":RETURN

ON BREAK GOTO @ラベル

ユーザーがプログラムを停止させようとした時のジャンプ先を登録する

・プログラム実行中に+ボタン等を押した場合、通常はプログラムが停止するが、ON BREAK GOTOを使用すると指定したラベルにジャンプさせる事ができる。
・一度登録ラベルにジャンプすると、登録は解除される。
・エラー、TRACE,STOP実行、+ボタン長押しによる強制停止、TOPMENUからのプログラム起動等によりプログラムが停止する場合はラベルを登録していてもジャンプしない。

引数

@ラベル

プログラム停止時のジャンプ先

ON BREAK GOTO @FINISH
LOOP
ENDLOOP

@FINISH
PRINT "ていししました!" 

IF 式 THEN 処理1
IF 式 THEN 処理1 ELSE 処理2

式の値が真(0以外)の時に処理1を実行する
ELSEがある場合、偽(0)の時に処理2を実行する

・THENやELSE直後のGOTOは、GOTOを省略可能。

IF A==1 THEN PRINT OK
IF A>1 THEN @JMP1 ELSE PRINT DATE$
@JMP1
END

IF 式 THEN [改行] 処理1 ENDIF
IF 式 THEN [改行] 処理1 ELSE [改行] 処理2 ENDIF

式の値が真(0以外)の時に処理1を実行する
ELSEがある場合、偽(0)の時に処理2を実行する

・THENやELSEの直後で改行すると、処理1または処理2で複数行の処理を書く事ができる。
・THENやELSEの直後で改行する場合、IF文の終了を明示するためにENDIFを最後に記述する。

IF A==1 THEN
 PRINT "オメデトウ" 
 BEEP 2
ELSE
 PRINT "ザンネン" 
ENDIF

ELSEIF 式 THEN ...

IF文による条件不成立時にさらに追加IF文を実行する場合のキーワード

・ELSEのかわりにELSEIFを使う事で、条件不成立時に続けて条件判断を行う事ができる。
・ELSEIF と ELSE IFで以降のコード記述内容が変化するので注意が必要。例の2つのコードは同じ意味。

IF A==1 THEN
 PRINT "オメデトウ":BEEP 0
ELSEIF A==2 THEN 
 PRINT "ザンネン" 
ELSE
 PRINT "まあまあ" 
ENDIF

IF A==1 THEN
 PRINT "オメデトウ":BEEP 0
ELSE
 IF A==2 THEN 
  PRINT "ザンネン" 
 ELSE
  PRINT "まあまあ" 
 ENDIF ' ELSE IF の場合は必要
ENDIF

IF 式 GOTO @ラベル [ELSE 不成立時処理]

式が真(0以外)の時ラベルに分岐する

ラベルに文字列を使う場合の注意事項

・ラベルにはラベル文字列も使用できる。
・ELSE直後でのGOTO省略時に文字列は使えない。

× IF A==0 GOTO "@LABEL1" ELSE "@LABEL2"
○ IF A==0 GOTO "@LABEL1" ELSE @LABEL2
○ IF A==0 GOTO "@LABEL1" ELSE GOTO "@LABEL2"

IF A==1 GOTO @MAIN
IF X<0 GOTO @JMP1 ELSE PRINT A$
IF Y==5 GOTO @JMP1 ELSE @JMP2
@JMP1
PRINT "@JMP1" 
@JMP2
PRINT "@JMP2" 
END

CASE 式

CASEによる条件分岐を開始する

・ENDCASEで分岐処理を終了する。
・分岐条件はWHEN,OTHERWISEで指定する。

引数

CASEで条件として参照する式
・WHENで指定する式との比較に使用する。

A=1
CASE A
WHEN 0: PRINT"A" 
WHEN 1: PRINT"B" 
OTHERWISE: PRINT"X" 
ENDCASE

WHEN 式

CASE~ENDCASE内で分岐条件を指定する

・WHENで指定した式の値とCASEで指定した式の値が同じだった場合、WHENの次の命令にジャンプし、値が違った場合は次のWHENまたはOTHERWISEにジャンプする。
・WHENの次の命令にジャンプした場合、次のWHENの直前まで実行するとENDCASEにジャンプする。
・WHENを連続して書いた場合は、ひとまとまりのグループとして扱う。
・つまり、WHEN A:WHEN Bと書いた場合、「CASEの値がAまたはBの場合」という意味になる。
・CASE~ENDCASE内でのみ使用できる。

引数

分岐条件となる式

OTHERWISE

CASE~ENDCASE内でどのWHENにも該当しなかった場合の処理を指定する

・全てのWHENに該当しなかった場合はOTHERWISEの次の命令にジャンプする。
・IF文でのELSE相当の処理。
・OTHERWISEの後にWHENを使用する事はできない。

ENDCASE

CASEによる条件分岐を終了する

・CASEで条件分岐を開始した後は必ずENDCASEを使用しなければならない。

LOOP

LOOP~ENDLOOPループの開始キーワード

・この命令自体は何も行わない。
・ENDLOOP命令実行時に、対応するLOOPキーワードの直後の命令に処理を移す。

I=0
LOOP
 PRINT I;",";
 I=I+1
 IF I>100 THEN BREAK
ENDLOOP

ENDLOOP

対応するLOOPキーワード直後の命令に処理を移す

・FOR,WHILE,REPEATといった他のループ命令と異なり、無限にループし続ける。
・ループから抜けるには、BREAK命令を使用する必要がある。

I=0
LOOP
 PRINT I;",";
 I=I+1
 IF I>100 THEN BREAK
ENDLOOP

FOR ループ変数=初期値 TO 終了値
FOR ループ変数=初期値 TO 終了値 STEP 増分

処理を指定回数繰り返す

・処理の最後にはNEXT命令を置く。
・条件が満たされない場合、1回も実行されないことがある。

引数

ループ変数

ループのたびに自動更新される変数
・1ループごとに増分が加算される。

初期値

ループ開始時のループ変数の値

TO 終了値

ループを終了させるループ変数の値
・ループ変数の値がこの値を超えるとループを終了させる。

STEP 増分

・ループ終わりにループ変数に加算する増分。
・省略時は1が増分値として使用される。
・負の数を指定すると値が減る方向にループさせる事ができる。
・増分が小数の場合、演算誤差で意図した回数にならない可能性がある。

FOR I=0 TO 9 STEP 2
 PRINT I;",";
NEXT

NEXT

FORループの終わりを示す命令

・対応するFOR変数を更新し、TOの値を超えていなければFOR直後の命令にジャンプし、超えていればNEXT直後の命令にジャンプする。
・FOR変数にはSTEPがあればSTEPの値を加算し、STEPがなければ1を加算する。

FOR I=0 TO 9 STEP 2
 PRINT I;",";
NEXT

WHILE 式

式の計算結果が偽(0)の場合、続くWENDの次の命令に処理を移す

・式が真(0以外)の場合WHILEの次の命令に処理を移し、WEND命令が来たらWHILEに戻って再度式を計算する。

A=0:B=4
WHILE A<B
 A=A+1
WEND

WEND

直前のWHILE命令に処理を移し、再度WHILEから実行する

A=0:B=4
WHILE A<B
 A=A+1
WEND

REPEAT

REPEAT~UNTILループの開始命令

・この命令自体は何も行わない。
・UNTIL命令でループ実行が継続される場合に、対応するREPEAT命令に処理を移す。

A=0:B=4
REPEAT
 A=A+1
UNTIL A>B

UNTIL 式

式の評価結果が偽(0)の場合、対応するREPEAT命令に処理を移す

・式の評価結果が真(0以外)の場合、ループを終了しUNTIL文の次の命令に処理を移す。
・ループの始まりにREPEAT命令を置く。
・WHILE命令とは異なりループ内処理を実行した後で条件判定を行う。

A=0:B=4
REPEAT
 A=A+1
UNTIL A>B

CONTINUE

強制的に次のループ処理を開始する

・LOOP~ENDLOOP、FOR~NEXT、WHILE~WEND、REPEAT~UNTIL内で使用可能。
・LOOP文では、CONTINUEを実行するとLOOPにジャンプする。
・FOR文では、CONTINUEを実行するとFORにジャンプし、ループ変数が更新される。
・WHILE文では、CONTINUEを実行するとWHILEにジャンプする。
・REPEAT文では、CONTINUEを実行するとUNTILにジャンプする。

FOR I=0 TO 9
 IF I==1 THEN CONTINUE
 IF I==7 THEN BREAK
 PRINT I;",";
NEXT

BREAK

ループを強制的に脱出する

・LOOP~ENDLOOP、FOR~NEXT、WHILE~WEND、REPEAT~UNTIL内で使用可能。
・BREAKを使用すると、すべてのループ文でループ直後の命令に処理を移す。

FOR I=0 TO 9
 IF I==1 THEN CONTINUE
 IF I==7 THEN BREAK
 PRINT I;",";
NEXT

END

プログラムを終了する

END

STOP [表示文字列]

実行中のプログラムを中断する

・中断したプログラムスロット:行番号が表示される。
・STOPで中断したプログラムはCONT命令で継続続行可能。

引数

表示文字列

停止メッセージとして表示する文字列を指定する
・文字列は255文字まで表示可能。
・省略した場合停止メッセージは表示されない。

STOP
STOP "とまりました" 

DEF ユーザー定義命令について

DEFを使うと下記のような命令を独自に定義できる

1) USER ※引数なし、返値なし
2) USER X,Y ※引数あり、返値なし
3) A=USER(X) ※引数あり、返値1つ
4) USER X OUT A,B ※引数あり、返値複数

DEF共通ルール

・DEF~ENDまでが定義範囲となる。
・DEF~END範囲で定義された変数やラベルはDEF外から使用できない(ローカル変数)。
・DEF~END範囲をまたがったGOTO,GOSUBはできない。
・COMMON を付けることで定義したプログラムスロット外から使用可能な命令を定義できる。

DEF 定義名

引数と返り値のないユーザー定義命令を定義する

' 文字表示
DEF FUNC
PRINT "SAMPLE" 
END
' 呼び出し
FUNC

DEF 定義名 引数[,引数…]

引数があり返値がないユーザー定義命令を定義する

引数

関数に渡したい引数があれば必要な分の引数名をカンマで区切って指定する
・ここで指定した引数名はDEF~END内で変数として使用できる。

' 指定位置に文字表示
DEF FUNC2 X,Y
LOCATE X,Y
PRINT "SAMPLE" 
END
' 呼び出し
FUNC2 10,4

DEF 関数名([引数[,引数…]])

ユーザー定義関数(返値が1つだけあるユーザー定義命令)を定義する

引数

関数に渡したい引数があれば必要な分の引数名をカンマで区切って指定する
・ここで指定した引数名はDEF~END内で変数として使用できる。

返値

結果として呼び出し側に返したい値は、DEF~END内でRETURN命令を使用して設定する(RETURN ANS のような記述)

'足し算
DEF ADD(X,Y)
RETURN X+Y
END

' 再帰を使った階乗計算
DEF FACTORIAL(N)
IF N==1 THEN RETURN N
RETURN N*FACTORIAL(N-1)
END

' 文字列反転
DEF REVERSE$(T$)
VAR A$="" 'ローカル文字列
VAR L=LEN(T$) 'ローカル
WHILE L>0
 A$=A$+MID$(T$,L-1,1)
 DEC L
WEND
RETURN A$
END

' 呼び出し
PRINT ADD(10,5)
PRINT FACTORIAL(4)
PRINT REVERSE$("BASIC")

DEF 命令名[引数[,引数…]] OUT 返値[,返値…]]

複数の返値を持つユーザー命令を定義する

引数

関数に渡したい引数があれば必要な分の引数名をカンマで区切って指定する
・ここで指定した引数名はDEF~END内で変数として使用できる。

返値

結果として返したい数分の変数名をOUTの後に記述する
・DEF~END内でここで指定した変数に値を代入すると、呼び出し側に値を返す事ができる。

' 足し算と掛け算
DEF CALCPM A,B OUT OP,OM
OP=A+B
OM=A*B
END

' 呼び出し
CALCPM 5,10 OUT P,M
PRINT P,M

DEF 命令名 * [OUT *]

可変長の引数や可変長の返値を持つユーザー定義命令の定義

・引数だけ可変長にしたり、返値だけ可変長にしたりする事も可能。

引数

命令名の後ろに*(アスタリスク)を書くと、引数の数が可変である事を宣言できる
・DEFARGC,DEFARG,TYPEOFを使用して引数の数・内容・型を調査できる。

返値

OUTの後ろに*(アスタリスク)を書くと、返値の数が可変である事を宣言できる
・DEFOUTC,DEFOUTを使用して返値の数を調査したり、返値を設定したりできる。

DEF VARFUNC * OUT *
 FOR I=0 TO DEFOUTC()-1
  DEFOUT I, DEFARG(I)*2
 NEXT
END

COMMON について

プログラムスロットを超えてユーザー定義命令・関数を定義する場合に利用するキーワード

・異なるプログラムスロット間でプログラムを使う場合はEXECで先に実行しておくこと。

1) COMMON DEF USER
2) COMMON DEF USER(X)
3) COMMON DEF USER X OUT A,B

COMMON DEF FOO(X,Y,Z)

RETURN 値

DEFの返値を設定して呼び出し元に復帰する

・関数型として定義されたDEF命令内で値を返す場合に利用する。

DEF CALC(A,B)
 RETURN A*B
END
PRINT CALC(2,3)

END

ユーザー関数、ユーザー命令のDEF定義を終了する

DEF FUNC
 PRINT FUNC
END

DEFARGC()

ユーザー定義命令・関数の引数の個数を調べる

・ユーザー定義命令・関数内でのみ使用可能。
・可変長引数と組合わせると便利。

返値

ユーザー定義命令・関数の引数の個数

DEF FOO X,Y
PRINT DEFARGC()
END

DEFARG(引数番号)

ユーザー定義命令・関数の引数の値を調べる

・ユーザー定義命令・関数内でのみ使用可能。
・可変長引数と組合わせると便利。

引数

引数番号

調べたい引数の番号
・最初の引数から順に0,1,2,3…と指定する。

返値

指定引数の値

DEF FOO X,Y
PRINT DEFARG(0) 'Xの値が返る
PRINT DEFARG(1) 'Yの値が返る
END

DEFOUTC()

ユーザー定義命令・関数の返値の個数を調べる

・ユーザー定義命令・関数内でのみ使用可能。
・可変長返値と組合わせると便利。

返値

ユーザー定義命令・関数の返値の個数

DEF FOO OUT X,Y
PRINT DEFOUTC()
END

DEFOUT 返値番号,値

ユーザー定義命令・関数の返値を設定する

・ユーザー定義命令・関数内でのみ使用可能。
・可変長返値と組合わせると便利。

引数

返値番号

設定する返値の番号
・最初の返値から順に0,1,2,3…と指定する。

指定返値に設定する値

DEF FOO OUT X,Y
DEFOUT 0,10 'X=10と同じ意味
DEFOUT 1,20 'Y=20と同じ意味
END

CALL 命令名[,引数…][ OUT 変数1[,変数2…]]

指定名称を持つユーザー定義命令を呼び出す

引数

命令名

・呼び出すユーザー定義命令名の文字列。
・文字列なので""でかこうか文字列変数を使用。
・"1:ユーザー定義命令名" の形式でプログラムスロット指定も可能。
・あらかじめEXEC命令で対象スロット内のプログラムを実行可能にしておくこと。

引数~

指定した命令に必要な引数

返値

結果として返したい数分の変数名をOUTの後に記述

CALL "USERCD",X,Y OUT A,B
'
DEF USERCD X,Y OUT A,B
A=X+Y:B=X*Y
END

CALL(関数名[,引数…])

指定名称を持つ関数を呼び出す

・組み込み関数、ユーザー定義関数どちらでも指定可能。

引数

関数名

・呼び出すユーザー定義関数名の文字列。
・文字列なので""でかこうか文字列変数を使用。
・"1:ユーザー定義関数名" の形式でプログラムスロット指定も可能。
・あらかじめEXEC命令で対象スロット内のプログラムを実行可能にしておくこと。

引数

指定した関数に必要な引数を列挙する

返値

指定した関数が返した値

A=CALL("USERFC",X,Y)
'
DEF USERFC(X,Y)
RETURN X*Y
END

CALL SPRITE
CALL TEXT

コールバックを呼び出す

・SPFUNC, TFUNCで設定されたコールバック処理を一斉に呼び出す。
・SPFUNCで設定されたコールバックはCALL SPRITEで呼び出す。
・TFUNCで設定されたコールバックはCALL TEXTで呼び出す。
・呼び出したコールバックに関連するスプライト管理番号やテキストスクリーンIDはCALLIDX()で取得できる。

CALL SPRITE
CALL TEXT

数学関連

INT(数値)

整数型に変換する

・小数点以下は切り捨てられる。
・結果は整数型となる。

引数

数値

元になる数値

返値

整数に変換された数値

関連

FLOOR:切り下げ、ROUND:四捨五入、CEIL:切り上げ

FLOAT(数値)

実数型に変換する

・結果は実数型となる。

引数

数値

元になる数値

返値

実数型に変換された数値

関連

INT:整数化(切り捨て)

FLOOR(数値)

小数点以下を切り下げる

・その数を超えない最大の整数を得る(床関数)。
・FLOOR(12.5)は12、FLOOR(-12.5)は-13となる。
・結果は小数点以下すべて0となるが、実数型となる。

引数

数値

元になる数値

返値

小数部を切り下げた値

関連

INT:整数化(切り捨て)、ROUND:四捨五入、CEIL:切り上げ

A=FLOOR(12.345)

ROUND(数値)

小数部を四捨五入し整数に丸める

・ROUND(12.5)は13、ROUND(-12.5)は-13となる。
・結果は小数点以下すべて0となるが、実数型となる。

引数

数値

元になる数値

返値

小数部を四捨五入した値

関連

INT:整数化(切り捨て)、FLOOR:切り下げ、CEIL:切り上げ

A=ROUND(12.345)

CEIL(数値)

小数点以下を切り上げる

・その数を下回らない最小の整数を得る(天井関数)。
・CEIL(12.5)は13、CEIL(-12.5)は-12となる。
・結果は小数点以下すべて0となるが、実数型となる。

引数

数値

元になる数値

返値

小数部を切り上げた値

関連

INT:整数化(切り捨て)、ROUND:四捨五入、FLOOR:切り下げ

A=CEIL(12.345)

ABS(数値)

絶対値を取得する

引数

数値

絶対値を得る数値

返値

絶対値

A=ABS(-12.345)

SGN(数値)

符号を取得する

引数

数値

符号を得る数値

返値

引数の値の正負に応じて1,0,-1のいずれかを返す

1 正の値
0 0
-1 負の値

A=SGN(12.345)

MIN(数値配列)

指定した数値配列内の一番小さい値を得る

引数

数値配列

最小値を調べる数値配列

返値

数値配列の中で一番小さい数

DIM TMP[2]=[50,3]
A=MIN(TMP)

MIN(数値,数値[,数値…])

指定した複数の数値から一番小さい値を得る

引数

数値

最小値を調べたい数値を引数として並べる

返値

渡された引数の中で一番小さい数

A=MIN(1,2,3,4)

MAX(数値配列)

指定した数値配列内の一番大きい値を得る

引数

数値配列

最大値を取得する数値配列

返値

数値配列の中で一番大きい数

DIM TMP[2]=[50,3]
A=MAX(TMP)

MAX(数値,数値[,数値…])

指定された複数の数値から一番大きい値を得る

引数

数値

最大値を調べたい数値を引数として並べる

返値

渡された引数の中で一番大きい数

A=MAX(1,2,3,4)

RND([シードID,]最大値)

整数乱数を取得する

引数

シードID

乱数の系列:0~7

最大値

取得する乱数の上限

返値

0~最大値-1までのランダムな整数

A=RND(100)

RNDF([シードID])

実数乱数を取得する

引数

シードID

乱数の系列:0~7

返値

0以上1未満のランダムな実数

A=RNDF()

RANDOMIZE シードID[,シード値]

乱数系列を初期化する

引数

シードID

乱数系列の種類:0~7

シード値

乱数系列を選択する整数値

・RND,RNDFが返す値はシード値によって順序が決まる。
・0を設定すると利用可能なエントロピー情報をシード値とする。
・省略時は0が設定される。

RANDOMIZE 0

SQR(数値)

平方根を計算する

引数

数値

平方根を求める数値

返値

求めた平方根

A=SQR(4)

EXP([数値])

e(自然対数の底)のべき乗を計算する

引数

数値

指数
・省略時は定数#EXPの値を返す。

返値

求めた結果

A=EXP(2)

POW(数値,乗数)

べき乗を計算する

引数

数値

べき乗を求める数値

乗数

べき乗の乗数

返値

求めた結果

A=POW(1,4)

LOG(数値[,底])

対数を計算する

引数

数値

真数:正の実数

底:正の実数
・省略時は自然対数を求める

返値

求めた結果

A=LOG(2,2)

RAD(数値)

角度の単位を度からラジアンに変換する
・定数式でも使用できる。

引数

数値

度単位の角度

返値

ラジアン単位の角度

R=RAD(45)

DEG(数値)

角度の単位をラジアンから度に変換する
・定数式でも使用できる。

引数

数値

ラジアン単位の角度

返値

度単位の角度

A=DEG(0.5*#PI)

SIN(角度)

サイン(正弦)を計算する

引数

角度

ラジアン単位の角度

返値

求めたサイン値

A=SIN(RAD(45))

COS(角度)

コサイン(余弦)を計算する

引数

角度

ラジアン単位の角度

返値

求めたコサイン値

A=COS(RAD(45))

TAN(角度)

タンジェント(正接)を計算する

引数

角度

ラジアン単位の角度

返値

求めたタンジェント値

A=TAN(RAD(45))

ASIN(数値)

アークサイン(SINの逆関数)を計算する

引数

数値

-1.0~1.0

返値

求めた角度(ラジアン単位)

A=ASIN(0)

ACOS(数値)

アークコサイン(COSの逆関数)を計算する

引数

数値

-1.0~1.0

返値

求めた角度(ラジアン単位)

A=ACOS(1)

ATAN(数値)

アークタンジェント(TANの逆関数)を計算する(数値から)

引数

数値

角度を求める数値

返値

求めた角度(ラジアン単位)

A=ATAN(1)

ATAN(座標Y,座標X)

アークタンジェント(TANの逆関数)を計算する(XY座標から)

引数

座標Y,X

角度を求める座標値
・原点からの向きを角度として計算する。
・引数順に注意すること。

返値

求めた角度(ラジアン単位)

A=ATAN(1,1)

SINH(数値)

ハイパボリックサイン(双曲線正接)を計算する

引数

数値

ハイパボリックサインを求める数値

返値

求めたハイパボリックサイン

A=SINH(1)

COSH(数値)

ハイパボリックコサイン(双曲線余弦)を計算する

引数

数値

ハイパボリックコサインを求める数値

返値

求めたハイパボリックコサイン

A=COSH(1)

TANH(数値)

ハイパボリックタンジェント(双曲線正接)を計算する

引数

数値

ハイパボリックタンジェントを求める数値

返値

求めたハイパボリックタンジェント

A=TANH(0.5)

CLASSIFY(数値)

通常数値、無限大、非数(NaN)を判定する

引数

数値

チェックしたい数値

返値

0 通常数値
1 無限大
2 NaN

A=CLASSIFY(0.5)

文字列操作

文字列の配列型参照について

[]を使用することで、文字列内の1文字を取得したり指定位置の文字を置換できる。

A$="12345" 
A$[3] → "4" 
A$[3]="ABC" → "123ABC5" 

ASC(文字列)

文字列先頭文字の文字コードを取得する

引数

文字列

調べたい文字が先頭に入った文字列

返値

指定された文字の文字コード

A=ASC("A")
X=ASC("XYZ")

CHR$(文字コード)

指定された文字コードから文字を返す
・定数式で使用可能。

引数

文字コード

取得したい文字の文字コード

返値

文字コードに対応する1文字の文字列

S$=CHR$(65)

VAL(文字列)

数値を表す文字列を数値に変換する

引数

文字列

数値を表す文字列("123"など)

返値

文字列から解釈した数値

A=VAL("123")
F=VAL("-12.56")

STR$(数値[,桁数])

数値を文字列に変換する

引数

数値

文字列に変換したい数値

桁数

指定桁数で右揃えしたい場合に指定:0~63
・数値の桁数が指定桁数より大きい場合指定を無視する。
・0を指定した場合桁揃えをしない。
・省略時は0。

返値

変換された文字列(123→"123")

S$=STR$(123)

HEX$(数値[,桁数])

数値を16進数文字列に変換する

引数

数値

16進数文字列に変換したい数値
・実数を指定した場合、小数部は切り捨てられる。

桁数

出力する16進数文字列の桁数:0~8
・1以上の値を指定すると先頭に0を埋めた文字列を返す。
・0を指定した場合先頭に0を埋めない。
・省略時は0。

返値

変換結果16進数文字列

S$=HEX$(65535,4)

BIN$(数値[,桁数])

数値を2進数文字列に変換する

引数

数値

2進数文字列に変換したい数値
・実数を指定した場合、小数部は切り捨てられる。

桁数

出力する2進数文字列の桁数:0~32
・1以上の値を指定すると先頭に0を埋めた文字列を返す。
・0を指定すると先頭に0を埋めない。
・省略時は0。

返値

変換結果2進数文字列

S$=BIN$(65535,16)

FORMAT$(書式文字列,値,…)

表示書式を使って値を整形し文字列化する

引数

書式文字列

値を整形して埋め込む文字列
・%の後に以下の型指定や補助指定をつける事で値の整形方法を制御する。

%S 文字列変数の内容を出力
%D 整数を10進出力
%X 整数を16進出力
%F 実数を出力
%B 整数を2進出力
%% %を1文字出力

書式文字列の補助指定

%のあとに次の補助指定を行うことにより出力を整形する

・桁数指定:桁数の数値を指定(%8D,%4X)
・小数の桁数指定:全体桁数.小数部の桁数(%8.2F)
・空白埋め:空白文字+桁数を指定(% 4D→"   0")
・ゼロ埋め:0+桁数を指定(%08D→"00000000")
・左寄せ:-記号+桁数を指定(%-8D)
・+符号表示:+記号+桁数を指定(%+8D)

・整形して文字列化する値を、書式文字列中の%指定の数だけ引数として指定する(%%をのぞく)。
・%指定が期待する型と引数の型がマッチしない場合エラーが発生する。

返値

生成された文字列

S$=FORMAT$("%06D",A)

LEN(文字列)
LEN(配列)

文字列の文字数、または配列の要素数を取得する

引数

文字列の場合

文字数を調べたい文字列

配列の場合

要素数を調べたい配列

返値

・文字列のとき:文字数
・配列のとき:要素数

? LEN("ABC123")
DIM B[4]
? LEN(B)

LAST(文字列)
LAST(配列)

文字列または配列の末尾の添字番号を返す

引数

文字列または配列

末尾を調べたい文字列、または配列

返値

末尾の添字番号
・文字列、配列ともLEN関数の返値から1を引いた値を返す。

DIM X[10]
FOR I=0 TO LAST(X)
 X[I]=I
NEXT

MID$(文字列,開始位置 [,文字数])

文字列の指定位置から指定文字数分の部分文字列を取得する

引数

文字列

対象文字列

開始位置

取得文字列の開始位置

文字数

取得文字列の文字数
・省略時は開始位置から文字列末端までの文字数を指定した事になる。

返値

取得した文字列

S$=MID$("ABC",0,2)

LEFT$(文字列,文字数)

文字列の先頭から指定文字数分の部分文字列を取得する

引数

文字列

対象文字列

文字数

取得文字列の文字数

返値

取得した文字列

S$=LEFT$("ABC",2)

RIGHT$(文字列,文字数)

文字列の末端から指定文字数分の部分文字列を取得する

引数

文字列

対象文字列

文字数

取得文字列の文字数

返値

取得した文字列

S$=RIGHT$("ABC",2)

INSTR(文字列,検索文字列)
INSTR(開始位置,文字列,検索文字列)

文字列内から指定文字列を検索して位置を返す

引数

開始位置

文字列内で検索を開始する位置
・省略時は文字列先頭から検索する。

文字列

検索対象の文字列

検索文字列

検索したい文字列

返値

見つかった場合:文字列内の位置
見つからなかった場合:-1

A=INSTR(0,"ABC","B")

SUBST$(文字列,開始位置,置換文字列)
SUBST$(文字列,開始位置,文字数,置換文字列)

文字列の一部を置き換えて新しい文字列を作成する

引数

文字列

置換対象の文字列

開始位置

置換開始位置

文字数

置換対象の文字数
・省略時は、開始位置以降の全文字を置換文字列で置き換える。

置換文字列

開始位置から文字数分をこの文字列で置き換える

返値

置き換えが完了した文字列

A$=SUBST$("ABC",0,2,"XY")

DATE$()

現在の日付を文字列として返す

返値

現在の日付文字列
・書式は"西暦/月/日"。

TIME$()

現在の時刻を文字列として返す

返値

現在の時刻文字列
・書式は"時:分:秒"。

その他

CONST #定数名=定数式[,#定数名=定数式]

定数を定義する

・1個の定義の後ろにカンマを書いて、続けて別の定数を定義する事ができる。

定数名

・定数名は変数名と同じ形式で、先頭に#が付く。

定数式

・定数式には数値、文字列、他の定数、CHR$,RGB,RGBF,HSV,HSVF,DEG,RADの各関数、及びそれらの演算が使用できる。

CONST #C1=1,#C2="ABC",#C3=RAD(180)
?#C1,#C2,#C3

ENUM #定数名[=定数式][,#定数名[=定数式]]

定数を連番で定義する

・CONSTと違い、整数定数のみ定義できる。
・定数式は省略できる。
・省略時は場合直前の定数定義に設定した値+1が使用される。

定数名

・定数名は変数名と同じ形式で、先頭に'#'が付く

定数式

・定数式には整数、他の整数定数、RGB,RGBF,HSV,HSVF,DEG,RAD、及びそれらの演算が使用できる。
・定数式が実数の場合、小数点以下は切り捨てられる。
・省略時は直前の定数定義に設定した値+1が使用される。

ENUM #TYPE1=2,#TYPE2,#TYPE3
?#TYPE1,#TYPE2,#TYPE3

DATA 定数式[,定数式…]

READ命令で読み込むデータを定義する

引数

定数式

・定数式には数値、文字列、他の定数、CHR$,RGB,RGBF,HSV,HSVF,DEG,RADの各関数、及びそれらの演算が使用できる。
・定数式であれば、数値も文字列も混在可能。

DATA 123,#C_RED,56,"SAMPLE"+CHR$(20)

READ 変数1[,変数2…]

DATA命令で定義した値を読み込む

・読み込めるデータがない場合、Out of data エラーが発生する。

引数

変数

読み込む情報を格納する変数(複数指定可能)
・最初のDATA文から順番に取得する。
・RESTORE命令を使用すると、読み込むDATA文を変更できる。

READ X,Y,Z,G$
DATA 200,120,0,"JAN" 
DATA 210,120,0,"FEB" 

RESTORE @ラベル
RESTORE 文字列

READ命令で読み込むDATA文を変更する

引数

@ラベル

読み込むDATA文の先頭に付けられた@ラベル名
・RESTORE "1:@ラベル名" などと、ラベル名の前に"数字:"をつけた場合、他のプログラムスロットも参照できる。
・プログラムスロットを指定する場合、あらかじめEXEC命令で対象プログラムスロット内のプログラムを使用可能にしておく必要がある。

文字列

・ラベルの代わりに文字列を指定すると、実行時に式の値をラベルと見なし、そのラベルを参照する。
・ラベル以外に、次の文字列を指定した場合それぞれ特殊な機能を持つ。

"PUSH" READ読み出し位置をスタックに待避させる。現在のREAD読み出し位置は変化しない。
"POP" READ読み出し位置をスタックから読み出した場所に設定する。
"BEGIN" READ読みだし位置をプログラム先頭のDATA文に設定する。
"数字:BEGIN" READ読み出し位置を指定プログラムスロット先頭のDATA文に設定する。

RESTORE @DATATOP
READ X,Y,Z,T$
@DATATOP
DATA 123,345,56,"SAMPLE" 

OPTION 機能名

プログラムの動作モードを設定する

引数

機能名

|STRICT|変数定義が必須となり、未定義変数への代入がエラーとなる。| |DEFINT|変数のデフォルト値として実数ではなく整数の0が設定される。数値配列のデフォルト型が整数配列となる。|"

OPTION STRICT

WAIT [フレームカウント]

指定フレームカウントが経過するまでプログラムの実行を停止させる

引数

フレームカウント

現在からの経過フレームカウントを指定
・0を指定すると停止しない。
・省略時は1を指定した事になる。

WAIT 60

VSYNC [フレームカウント]

指定フレームカウントが経過するまでプログラムの実行を停止させる

・WAITとは異なり前回VSYNC実行時からのフレームカウントを指定する。

引数

フレームカウント

前回のVSYNCからの経過フレームカウントを指定
・0を指定すると停止しない。
・省略時は1を指定した事になる。

VSYNC 1

REM
'

コメント記述用の記号

・REMまたは' 以降行末まではコメントとみなし、無視される。
・コメント内容はプログラム実行に影響しない。

' MAIN ROUTINE

TMREAD OUT H,M,S
TMREAD 時間文字列 OUT H,M,S

時間文字列を数値に変換する

引数

時間文字列

"HH:MM:SS"形式の時間文字列
・HHは00~23、MM,SSは00~59の数値文字。
・省略時は現在の時間。

返値

H,M,S

H 時間を受け取る変数
M 分を受け取る変数
S 秒を受け取る変数

TMREAD "12:59:31" OUT H,M,S

DTREAD OUT Y,M,D[,W]
DTREAD 日付文字列 OUT Y,M,D[,W]

日付文字列を数値に変換する

引数

日付文字列

"YYYY/MM/DD"形式の日付文字列
・YYYYは0000~9999、MMは01~12、DDは01~31の数値文字。
・省略時は現在の日時。

返値

Y,M,D,W

Y 年を受け取る変数
M 月を受け取る変数
D 日を受け取る変数
W 曜日(日曜日を0とする数値)を受け取る変数(省略可)

DTREAD "2014/10/12" OUT Y,M,D

CHKLABEL(文字列[,フラグ])

指定文字列と同名のラベルが存在するかどうか確認する

引数

文字列

ラベルとして検索する文字列
・CHKLABEL "1:@ラベル名" で他のプログラムスロットにあるラベルも確認できる。
・プログラムスロットを指定する場合、あらかじめEXEC命令で対象プログラムスロットを使用可能にしておく必要がある。

フラグ

DEF内でCHKLABELを使用した時に、DEF外部のラベルも検索するかを指定する

0 DEF内だけを検索
1 DEF内に無ければグローバルラベルを検索

・省略時は0。

返値

存在する時は1、存在しない時は0

A=CHKLABEL("@MAIN")

CHKCALL(文字列)

指定文字列と同名の命令・関数が存在するかどうか確認する

引数

文字列

命令・関数として検索する文字列

返値

存在する時は1、存在しない時は0

A=CHKCALL("KEYCHECK")

CHKVAR(文字列)

指定文字列と同名の変数が存在するかどうか確認する

引数

文字列

変数として検索する文字列

返値

存在する時は1、存在しない時は0

A=CHKVAR("COUNTX")

DIALOG 表示文字列 [,選択タイプ [,キャプション文字列 [,タイムアウト時間]]]

ダイアログを表示しボタンが押されるまで待つ

・押されたボタン情報はRESULT関数で取得できる。
・1:決定、-1:キャンセル、0:タイムアウト。

引数

表示文字列

ダイアログに表示する文字列
・表示文字列は256文字まで
・表示文字列内にCHR$(10)かCHR$(13)があると改行する。

選択タイプ

0 了解(デフォルト)
1 いいえ/はい
2 戻る/次へ
3 中止/決定
4 中止/実行
5 次へ

・省略時は0を指定した事になる。

キャプション文字列

ダイアログ上部のキャプション欄に表示する文字列
・キャプション文字列が46文字より長い場合、46文字までしか表示されない。
・省略時、キャプション欄には"DIALOG"と表示される。

タイムアウト時間

ダイアログを自動的に閉じるまでの秒数

・マイナス値を指定するとフレームカウント単位で指定となる。
・0を指定するとユーザーが操作するまで待ち続ける。
・省略時は0を指定した事になる。

DIALOG "はじめましょう",5,"シナリオ",-120

DIALOG(表示文字列,ボタン種類 [,キャプション文字列 [,タイムアウト時間]])

ダイアログを表示しタッチやハードウェアボタンが押されるまで待つ

引数

表示文字列

ダイアログに表示する文字列
・表示文字列は256文字まで。
・表示文字列内にCHR$(10)かCHR$(13)があると改行する。

ボタン種類

bit0 Xボタン
bit1 Bボタン
bit2 Yボタン
bit3 Aボタン
bit4 上ボタン
bit5 下ボタン
bit6 左ボタン
bit7 右ボタン
bit8 L
bit9 R
bit10 ZL
bit11 ZR
bit12 Lスティック押し込み
bit13 Rスティック押し込み
bit14 A,B,X,Yボタンのいずれか
bit15 上,下,左,右ボタンのいずれか
bit16 スティック押し込み以外のいずれかのボタン
bit17 タッチパネル

・上記ビット値をORしたものを指定する。
・ゼロを指定するとエラー。

キャプション文字列

ダイアログ上部のキャプション欄に表示する文字列
・キャプション文字列が46文字より長い場合、46文字までしか表示されない。
・省略時、キャプション欄には"DIALOG"と表示される。

タイムアウト時間

ダイアログを自動的に閉じるまでの秒数
・マイナス値を指定するとフレームカウント単位で指定となる。
・0を指定するとユーザーが操作するまで待ち続ける。
・省略時は0を指定した事になる。

返値

押されたボタンにより、ボタン種類引数相当のビット値が1になった値が返る
・タッチ以外はBUTTON()の返値と同じ物が返る。
・タイムアウトの場合は0が返る。

R=DIALOG("ABXYLR/十字キー/タッチ",(1 << #B_ANY) OR (1 << 17),"特別",0)

DIALOG(初期文字列,キャプション文字列[,最大文字数])

ファイル名入力専用のダイアログを表示する

引数

初期文字列

入力値としてあらかじめ設定しておくファイル名文字列
・ファイル名に使えない文字を使用するとエラーとなる。

キャプション文字列

キャプションに表示する文字列
・キャプション文字列が39文字より長い場合、39文字までしか表示されない。

最大文字数

最大32文字まで

返値

取得した文字列

・RESULT関数の返値が-1の場合はキャンセル(文字列無効)。

T$=DIALOG("NEWNAME0","SAVE",14)

RESULT()

一部命令の実行結果を取得する

・DIALOG, ファイル操作命令, XCTRLSTYLE等の、実行結果を取得する必要のある命令の実行結果を返す。
・RESULTを更新する命令の実行後に使用する。

返値

命令の実行結果
・結果の値は各命令により異なるが、共通要素としてすべての命令で1は成功、0は失敗をあらわす。

CALLIDX()

コールバックと結びついた番号を返す

返値

コールバックと結びついた番号
・CALL SPRITEの場合コールバックを呼び出したスプライトID。
・CALL TEXTの場合コールバックを呼び出したテキストスクリーンのID。
・コールバック外で呼び出すと無意味な値が返る。

CLIPBOARD 文字列

クリップボードの内容を設定する

引数

文字列

クリップボードに格納する文字列

CLIPBOARD "おはようございます" 

CLIPBOARD()

クリップボードの内容を取得する

返値

クリップボード内の文字列

PRINT CLIPBOARD()

KEY キー番号,文字列

ファンクションキーの内容を設定する

・Ctrl+F1~F5で設定した内容を入力できる。

引数

キー番号

登録するファンクションキー番号:1~5

文字列

ファンクションキーに登録する文字列
・文字列の最大長は256文字。

KEY 1,"PRINT" 

KEY(ファンクションキー番号)

ファンクションキーの内容を取得する

引数

キー番号

内容を取得するファンクションキー番号:1~5

返値

ファンクションキーに登録されている文字列

A$=KEY(1)

FONTINFO 文字コード,フォント種類 OUT X,Y
FONTINFO 文字列,フォント種類 OUT X,Y

フォントの格納座標を取得する

・GRPF内での指定フォントの格納座標を取得する。

引数

文字コード

調査したい文字の文字コード
・ユーザー定義文字は指定できない。

文字列

調査したい文字が1文字目に入っている文字列
・1文字目以外は無視する。
・ユーザー定義文字は指定できない。

フォント種類

調査したいフォントの種類
・8または16を指定できる。

返値

X,Y

GRPF上で文字が格納されている座標が返る

FREEMEM()
FREEMEM OUT 総空き容量,連続空き容量

文字列や配列で使用するメモリの空き容量を取得する

・容量の単位はバイト。SmileBASICでは1文字2バイト、整数配列1要素で4バイト、実数配列1要素で8バイト消費する。
・関数形式で使用すると総空き容量が返る。

返値

総空き容量

未使用メモリの合計サイズ

連続空き容量

未使用メモリのうち、一度に使用できるサイズ

MILLISEC()

プチコン4を起動してからの経過時間を返す

・単位はミリセコンド(1000分の1秒)

返値

起動してからの経過時間

MAINCNT()

プチコンを起動してからのフレームカウントを返す

・フレームカウント1あたりの時間は、処理落ちが発生しない場合で約60分の1秒。
・画面更新が何回行われたかを計るのに使用する。正確な時間を計るには向いていない。

返値

起動してからのフレームカウント

SYSPARAM(情報名文字列)
SYSPARAM 情報名文字列 OUT 設定値1,設定値2
SYSPARAM 情報名文字列,設定値

各種情報を取得・設定する

引数

設定項目名文字列

取得・設定したい項目の名前を文字列で指定する
指定可能な項目名は次の通り

LANG Switchに設定されている使用言語名(取得)
SYSBEEP システムUIの効果音再生フラグ(設定・取得)
TABSTEP エディタでTABキーを使用する際に挿入される空白の数(取得)
KEYREPEAT 設定メニューのキーリピート値(取得)
MOUSECURSOR マウスカーソルの表示(設定・取得)
TVMODE テレビモードかどうか(取得)
TOOL1 ツール1のファイル名(取得)
TOOL2 ツール2のファイル名(取得)
TOOL3 ツール3のファイル名(取得)

・KEYREPEATはリピート開始とリピート間隔の2つの値を返す

返値

項目名に応じた値が返る

PRINT SYSPARAM("LANG")
SYSPARAM "KEYREPEAT" OUT ST,IT

PERFBEGIN 計測番号[,色コード]

実行時間計測を開始する

・PERFEND命令とセットで使用する。

引数

計測番号

使用する計測情報の番号:0~7

色コード

パフォーマンスゲージ上で情報を表示する時の色
・省略可能。

PERFEND 計測番号

実行時間計測を終えて、結果をパフォーマンスゲージに登録する

・同じ計測番号を指定してPERFBEGINを呼び出していなかった場合、正しい計測結果を取得できない。

引数

計測番号

使用する計測情報の番号:0~7

PERFEND(計測番号)

実行時間計測を終えて、結果をパフォーマンスゲージに登録する

・同じ計測番号を指定してPERFBEGINを呼び出していなかった場合、正しい計測結果を取得できない。
・関数として使用すると、PERFBEGIN~PERFEND間の実行時間を取得できる。
・計測時間が2147秒以上になると正しい結果を返さなくなる。

引数

計測番号

使用する計測情報の番号:0~7

返値

PERFBEGINからPERFENDまでに経過した時間をマイクロセコンド(100万分の1秒)単位で返す

METALOAD ["プロジェクト名"]

指定プロジェクトのメタデータを読み込む

・指定プロジェクトのアイコンや説明文をメモリ上に読み込み、編集可能にする。

引数

プロジェクト名

読み込み対象のプロジェクト名文字列
・省略した場合カレントプロジェクトが読み込み対象となる

METAEDIT メタデータ項目,設定データ

メタデータ項目を設定する

引数

メタデータ項目

設定するメタデータ項目を数値で指定する

0 タイトル
1 説明文
2 アイコン

設定データ

設定する値を指定する
・値はメタデータ項目番号毎に型や内容が異なる。
・タイトルの場合、最大24文字の文字列を設定する。
・説明文の場合、最大240文字の文字列を設定する。CHR$(10)で改行。
・アイコンの場合、要素数1600(縦40,横40)の数値配列でアイコン画像を指定する。

METAEDIT メタデータ項目 OUT 設定データ

現在設定されているメタデータ項目を取得する

引数

メタデータ項目

取得するするメタデータ項目を数値で指定する

0 タイトル
1 説明文
2 アイコン

返値

設定データ

メタデータ項目番号毎に返る値が異なる
・タイトルの場合、最大24文字の文字列を返す。
・説明文の場合、最大24文字×10行の文字列を返す。CHR$(10)で改行。
・アイコンの場合、アイコン画像として要素数1600(縦40,横40)の2次元整数配列を返す。

METASAVE

メタデータを保存する

・カレントプロジェクトのメタデータが書き換えられる。

各種入力

XCTRLSTYLE 最大接続数,操作スタイル[,モーションセンサー使用フラグ,IRセンサー使用フラグ[,接続画面表示フラグ]]

コントローラーの最大接続数、操作スタイル、使用機能を設定する

・設定した操作スタイルによって、接続可能なコントローラーの種類、想定するJoy-Conの持ち方、取得できるボタン・スティックの種類、使用できるコントローラー機能が変わる。
・接続確認画面の操作結果はRESULT関数で確認できる(1:成功, -1:キャンセル)。
・サブプログラムからの呼び出しは無視される。

引数

最大接続数

接続したい最大のコントローラー数を指定する

・操作スタイルに応じて指定可能な値の範囲が異なる。

フル 1~2
2本持ち 1~2
横持ち 2~4
縦持ち 2~4

操作スタイル

設定する操作スタイル:0~3

番号 スタイル名 使用可能なコントローラー
0 フル 携帯モード、Joy-Con2本持ち、Proコントローラー
1 2本持ち Joy-Con2本持ち
2 横持ち Joy-Con(L)/(R)横持ち、Proコントローラー
3 縦持ち Joy-Con(L)/(R)縦持ち

モーションセンサー使用フラグ

モーションセンサー(加速度センサー、ジャイロセンサー)を使用したい場合1を、使用しない場合は0を指定する
・省略時は0。

IRセンサー使用フラグ

モーションIRカメラを使用したい場合1を、使用しない場合は0を指定する
・省略時は0。
・モーションIRカメラを使用する場合は操作スタイルを1(2本持ち)にする必要がある。

接続画面表示フラグ

コントローラー接続画面を必ず表示するかどうかを指定する
・1を指定すると、コントローラー接続画面が必ず表示される。
・0を指定すると、設定が変わった時だけコントローラー接続画面が表示される。
・省略時は0。

XCTRLSTYLE 0

コントローラーの操作スタイルを起動時状態にリセットする

・0だけを指定すると、コントローラーの操作スタイルを起動時状態にリセットする。
・XCTRLSTYLE 1,0,0,0と指定するのと同じ。
・接続確認画面の操作結果はRESULT関数で確認できる(1:成功, -1:キャンセル)。
・サブプログラムからの呼び出しは無視される。

引数

0(ゼロ)

数値のゼロのみ指定
・異なる値を指定するとエラー。

XCTRLSTYLE OUT 最大接続数,操作スタイル

現在設定されているコントローラー最大接続数と操作スタイルを取得する

返値

最大接続数

接続可能な最大コントローラー数

操作スタイル

現在の操作スタイル

0 フル
1 2本持ち
2 横持ち
3 縦持ち

CONTROLLER(コントローラーID)

コントローラーの種類や接続状況を調べる

引数

コントローラーID

0 デフォルトコントローラー
1~4 通常コントローラー

・通常コントローラーのIDは接続したコントローラーのプレイヤーランプの点灯数に対応する。
・携帯モードコントローラーが使える場合、IDは常に1。
・デフォルトコントローラーは全接続コントローラーの入力を合成し、現在設定されている操作スタイルに関係なく、常に携帯モードコントローラー相当の入力として扱う。
・コントローラーID1~4を使用する場合は事前にXCTRLSTYLE命令で使用したい操作スタイルを設定しておくことを強く推奨する。

返値

0 未接続
1 携帯モードコントローラー
2 Proコントローラー
3 Joy-Con 2本持ち
4 Joy-Con(L)
5 Joy-Con(R)

CONTROLLER コントローラーID OUT コントローラー種類,メイン色,サブ色
CONTROLLER コントローラーID OUT コントローラー種類,左メイン色,左サブ色,右メイン色,右サブ色

コントローラーの接続状況や種類を調べる

引数

コントローラーID

0 デフォルトコントローラー
1~4 通常コントローラー

・通常コントローラーのIDは接続したコントローラーのプレイヤーランプの点灯数に対応する。
・携帯モードコントローラーのIDは常に1。
・デフォルトコントローラーは全接続コントローラーの入力を合成し、現在設定されている操作スタイルに関係なく、常に携帯モードコントローラー相当の入力として扱う。
・コントローラーID1~4を使用する場合は事前にXCTRLSTYLE命令で使用したい操作スタイルを設定しておくことを強く推奨する。

返値

コントローラー種類

0 未接続
1 携帯モードコントローラー
2 Proコントローラー
3 Joy-Con 2本持ち
4 Joy-Con(L)
5 Joy-Con(R)

メイン色,サブ色

コントローラーの色をメイン色とサブ色の2つの色コードで返す
・取得した色コードは他の描画命令の色コードとして使用可能。
・コントローラーが未接続の場合はメイン、サブ共に黒が返る。

左メイン色, 左サブ色, 右メイン色、右サブ色

2本持ちや携帯モードの場合、左右のコントローラーの色を別々に取得できる
・横持ちや縦持ちの場合、右メイン色と右サブ色には黒が返る。

BUTTON(コントローラーID,ボタンID[,機能ID])

コントローラーの特定ボタンの操作状態を取得する

引数

コントローラーID

調べたいコントローラーのID

0 デフォルトコントローラー
1~4 通常コントローラー

・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

ボタンID

調べたいボタンのID

ボタンIDとボタンとの対応は次の通り
・ボタンIDとボタンとの対応は操作スタイル毎に異なる。

ボタンID フル、2本持ち 縦持ち 横持ち
#B_RUP Xボタン 上ボタン 上ボタン
#B_RDOWN Bボタン 下ボタン 下ボタン
#B_RLEFT Yボタン 左ボタン 左ボタン
#B_RRIGHT Aボタン 右ボタン 右ボタン
#B_LUP 上ボタン
#B_LDOWN 下ボタン
#B_LLEFT 左ボタン
#B_LRIGHT 右ボタン
#B_L1
#B_SL
L SL SL
#B_R1
#B_SR
R SR SR
#B_L2
#B_S1
ZL LまたはR LまたはR
#B_R2
#B_S2
ZR ZLまたはZR ZLまたはZR
#B_LSTICK Lスティック押し込み スティック押し込み スティック押し込み
#B_RSTICK Rスティック押し込み
#B_RANY A,B,X,Yボタンのいずれか
#B_LANY 上,下,左,右ボタンのいずれか
#B_ANY スティック押し込み以外のいずれかのボタン

・方向ボタンの上下左右は、コントローラーを持った方向に対するボタン位置。縦持ちの「上」は横持ちの「左」となる。

機能ID

知りたい状態の種類
・省略時は0。

0 ボタンが押されている
1 ボタンを押した瞬間(BREPEAT対応あり)
2 ボタンを押した瞬間(BREPEAT対応なし)
3 ボタンを離した瞬間

返値

指定ボタンが指定機能IDの条件を満たしていれば1、そうでなければ0

BUTTON(コントローラーID)
BUTTON(コントローラーID,-1[,機能ID])

コントローラの全ボタン状態をまとめて取得する

・1個のボタンの状態だけ取得したい場合は、もう一つのBUTTON関数のヘルプを参照。

引数

コントローラーID

調べたいコントローラーのID

0 デフォルトコントローラー
1~4 通常コントローラー

・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

-1

ボタンIDに-1を設定すると、全ボタン状態をまとめて取得するようになる
・コントローラーIDだけ指定した場合も-1を指定した事になる。

機能ID

知りたい状態の種類
・省略時は0。

0 ボタンが押されている
1 ボタンを押した瞬間(BREPEAT対応あり)
2 ボタンを押した瞬間(BREPEAT対応なし)
3 ボタンを離した瞬間

返値

指定したコントローラーのボタン状態がビット毎にセットされて返ってくる
ボタンが押されているか調べるには、次のようなプログラムを書けば良い


'ボタンに対応するビットをONにした値を作るには、1をボタンIDだけ左シフト(<<)すれば良い
'たとえば#B_RLEFTが押されているか調べたい場合 
BTNBIT_RLEFT = 1 << #B_RLEFT
'ビット値を作ったら、BUTTON関数の結果とANDを求めて、結果が0以外なら押されている 
IF (BUTTON(0) AND BTNBIT_RLEFT) != 0 THEN PRINT "ひだりボタン" 

BREPEAT ボタンID,リピート開始時間,リピート間隔

ボタンのリピート速度を設定する

・BUTTON関数の機能IDで1を指定した時の結果に影響する。
・全接続コントローラーに影響する。

引数

ボタンID

リピート速度を設定したいボタンのID
・ボタンIDの詳細はBUTTON関数のヘルプを参照。

リピート開始時間

ボタンが押され始めてから、リピートが開始するまでのフレームカウント

リピート間隔

リピートが発生してから次のリピートが発生するまでのフレームカウント

BREPEAT ボタンID OUT リピート開始時間,リピート間隔

ボタンのリピート速度を取得する

引数

ボタンID

リピート速度を取得したいボタンのID
・ボタンIDの詳細はBUTTON関数のヘルプを参照。

返値

リピート開始時間

ボタンが押され始めてから、リピートが開始するまでのフレームカウント

リピート間隔

リピートが発生してから次のリピートが発生するまでのフレームカウント

STICK コントローラーID[,スティックID] OUT X,Y

コントローラーのスティック状態を調べる

引数

コントローラーID

調べたいコントローラーのID

0 デフォルトコントローラー
1~4 通常コントローラー

・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

スティックID

0 Lスティック
1 Rスティック

・省略時は0。
・スティックが1本しかない時に1を指定してもエラーにはならず、X,Y共に0が返ってくる。

返値

X,Y

スティックの傾き情報

・横方向(X)には左<->右で-1.0<->1.0。
・縦方向(Y)には上<->下で-1.0<->1.0。
・操作をしていない時にはX,Y共に0が返る。

ACCEL コントローラーID[,センサーID] OUT X,Y,Z

加速度センサーの情報を取得する

・XCTRLSTYLEでモーションセンサーを有効にしていない場合は正常な値が返らない。

引数

コントローラーID

調べたいコントローラーのID:1~4
・コントローラーID 0 は指定できない。
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

センサーID

調べたいセンサーのID:0~1
・2本持ちの場合のみ、ID 1で意味のある値が返ってくる。
・省略時は0。

返値

X,Y,Z

加速度センサーの値
・単位は重力加速度。
・Xは方向キー左右方向(右ボタン方向が正)
・Yは方向キー上下方向(下ボタン方向が正)
・Zはコントローラー表面に対して垂直方向(上向きが正)

GYROV コントローラーID[,センサーID] OUT X,Y,Z

ジャイロセンサーの角速度を取得する

・XCTRLSTYLEでモーションセンサーを有効にしていない場合は正常な値が返らない。

引数

コントローラーID

調べたいコントローラーのID:1~4
・コントローラーID 0 は指定できない。
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

センサーID

調べたいセンサーのID:0~1
・ID 1は2本持ちの場合のみ有効。
・省略時は0。

返値

X,Y,Z

各軸まわりのジャイロセンサーの角速度
・単位はラジアン/秒。
・Xはピッチ。
・Yはロール。
・Zはヨー。
・それぞれ正の向きに対して右ネジの回転する向きが正の値となる。

GYROA コントローラーID[,センサーID] OUT X,Y,Z

ジャイロセンサーの角度を取得する

・XCTRLSTYLEでモーションセンサーを有効にしていない場合は全て0が返る。
・コントローラーを激しく動かしたり、長時間使用を続けると誤差が蓄積し正しい値を返さなくなるため、必要なタイミングでGYROSYNC命令を呼び出し角度をリセットする必要がある。

引数

コントローラーID

調べたいコントローラーのID:1~4
・コントローラーID 0 は指定できない。
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

センサーID

調べたいセンサーのID:0~1
・ID 1は2本持ちの場合のみ有効。
・省略時は0。

返値

X,Y,Z

各軸まわりのジャイロセンサーの角度
・単位はラジアン。
・Xはピッチ。
・Yはロール。
・Zはヨー。
・それぞれ正の向きに対して右ネジの回転する向きが正の値となる。

GYROSYNC コントローラーID[,センサーID]

ジャイロセンサーの角度をリセットする

・命令を呼び出した直後のコントローラー姿勢がX:0,Y:0,Z:0となる。
・GYROSYNC命令を使用してから実際のリセットが行われるまで最大で1Vカウントの時間が必要。

引数

コントローラーID

リセットしたいコントローラーのID:1~4
・コントローラーID 0 は指定できない。
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

センサーID

リセットしたいセンサーのID:0~1
・2本持ち以外の場合、1を指定しても無視される。
・省略時は0。

VIBRATE コントローラID[,左右指定],振動パターン番号

コントローラーを振動させる

・サブプログラムからの呼び出しは無視される。

引数

コントローラID

振動させたいコントローラID:1~4
・コントローラーID0は指定できない。
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

左右指定

振動させたいコントローラの左右指定

0
1

・省略時は左右両方が振動する。
・縦持ち、横持ちの場合、1を指定しても無視される。

振動パターン番号

プリセットの振動パターン番号:0~62
・0を指定すると振動が停止する。

VIBRATE 1,40
VIBRATE 1,0,1:VIBRATE 1,1,3

VIBRATE コントローラID[,左右指定],低帯域周波数,低帯域振幅,高帯域周波数,高帯域振幅

周波数と振幅を指定してコントローラーを振動させる

・サブプログラムからの呼び出しは無視される。

引数

コントローラID

振動させたいコントローラID:1~4
・コントローラーID0は指定できない。
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

左右指定

振動させたいコントローラの左右指定

0
1

・省略時は左右両方が振動する。
・縦持ち、横持ちの場合、1を指定しても無視される。

低帯域周波数

振動周波数 (Hz)
・0を指定すると振動が停止する。

低帯域振幅

振動の振幅:-128.0~127.0
・0を指定すると振動が停止する。

高帯域周波数

振動周波数 (Hz)
・0を指定すると振動が停止する。

高帯域振幅

振動の振幅:-128.0~127.0
・0を指定すると振動が停止する。

VIBRATE 1,440,127,220,64

VIBRATE(コントローラID[,左右指定])

コントローラの振動状態を取得する

引数

コントローラID

振動状態を取得したいコントローラID:1~4
・コントローラーID0は指定できない。
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

左右指定

左右どちらの振動状態を取得するかの指定

0
1

・省略時は左右の状態を合成した値が返る。
・縦持ち横持ちの場合、1を指定すると常に0が返る。

返値

・振動している場合は、振動パターン番号または周波数・振幅を直接指定している場合には65535。
・振動していない場合は0。
・縦持ち横持ち以外で左右指定を省略した場合、右状態値*65536+左状態値が返る。
・縦持ち横持ちで左右指定を省略した場合は左状態値のみ返る。

PRINT VIBRATE(1,0)

VIBRATE

全コントローラーの振動を停止する

・サブプログラムからの呼び出しは無視される。

VIBRATE

TOUCH [タッチID[,座標系変換フラグ]] OUT タッチ時間,X,Y[,タッチ面積]

タッチパネルのタッチ情報を返す

・TVモードではTOUCH関数は有効な値を返さない。

引数

タッチID

マルチタッチで、タッチを開始したポイント順に、0,1,2,3…と9まで指定できる
・省略時は0。

座標系変換フラグ

0を指定すると、タッチ座標が表示されているBASIC画面内の座標に変換され、画面外のタッチはタッチされていない物として扱われる
1を指定すると、BASIC画面に関係なく液晶画面全体でのタッチ座標を取得する

・省略時は0。

返値

タッチ時間

タッチを開始してから現在までのフレームカウント
・タッチしていない場合にはゼロが返る。

X,Y

タッチされている場合の座標
・タッチされていない場合は無意味な値が返る。

面積

タッチされている場合のタッチ面積
・タッチされていない場合には無意味な値が返る。

MOUSE [座標系変換フラグ] OUT X,Y[,ホイール]

マウスの座標情報を返す

引数

座標系変換フラグ

0を指定すると、マウス座標が表示されているBASIC画面の座標に変換される
1を指定すると、BASIC画面に関係なく液晶画面全体でのマウス座標を取得する

返値

X,Y

現在のマウス座標

ホイール

現在のホイール値

MOUSE X,Y [,座標系変換フラグ]

マウス座標を設定する

引数

X,Y

設定するマウス座標

座標系変換フラグ

0を指定すると、X,YをBASIC画面の座標として扱う
1を指定すると、X,Yを液晶画面全体での座標として扱う

・省略時は0。

MBUTTON()

マウスの全ボタン状態をまとめて取得する

・1個のボタンの状態だけ取得したい場合は、もう一つのMBUTTONのヘルプを参照。

引数

返値

マウスのボタン状態がビット毎にセットされて返ってくる

MBUTTON(ボタンID[,機能ID])

マウスの特定ボタンの操作状態を取得する

引数

ボタンID

調べたいボタンのID

0 左ボタン
1 右ボタン
2 中央ボタン
3 ボタン4
4 ボタン5

機能ID

知りたい状態の種類

0 ボタンが押されている
1 (使用不可)
2 ボタンを押した瞬間
3 ボタンを離した瞬間

・省略時は0。

返値

指定ボタンが指定機能IDの条件を満たしていれば1、そうでなければ0

IRSTART コントローラーID,IR認識タイプ

IRカメラの使用を開始する

・XCTRLSTYLEであらかじめIR使用フラグをONにしておく必要がある。
・サブプログラムからの呼び出しは無視される。

引数

コントローラーID

IRカメラを使用するコントローラーのID:1~2
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

IR認識タイプ

IRカメラの認識方法を指定する

0 クラスタリングモード
1 撮影モード
2 モーメントモード

・クラスタリングモードは明るい領域を矩形として認識する。同時に最大16個の領域を認識できる。
・撮影モードはIRカメラの撮像画像を画像として取得する。
・撮影モードで撮影したデータはIRSPRITEで表示する事ができる。データをBASICプログラム内に取り出す事はできない。
・撮影モード起動中は画面キャプチャが禁止される。
・モーメントモードは撮像範囲を8x6の小領域に分割し、それぞれの認識情報を取得する。

IRSTART コントローラーID,0,[照明タイプ],[ゲイン],[露出],[最小クラスタ],[最大クラスタ],[最低輝度]

IRカメラの使用を開始する(クラスタリングモード詳細パラメーター設定型)

・XCTRLSTYLEであらかじめIR使用フラグをONにしておく必要がある。
・サブプログラムからの呼び出しは無視される。

引数

コントローラーID

IRカメラを使用するコントローラーのID:1~2
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

0

クラスタリングモードとするために0を指定する

照明タイプ

IRカメラの照明を指定する

0 全て(遠+近)
1 遠距離用のみ
2 近距離用のみ
3 照明OFF

・省略時は0。

ゲイン

IRカメラの撮影ゲイン:1~16

・省略時は2。

露出

IRカメラの撮影露出時間:7~600

・省略時は200。

最小クラスタ

クラスタとして認識する最小の面積(ピクセル数):0~76800
・省略時は3。

最大クラスタ

クラスタとして認識する最大の面積(ピクセル数):0~76800
・省略時は76800。

最低輝度

クラスタとして認識する最低の輝度:0~255
・省略時は150。

IRSTART コントローラーID,1,[照明タイプ],[ゲイン],[露出],[イメージサイズ]

IRカメラの使用を開始する(撮影モード詳細パラメーター設定型)

・XCTRLSTYLEであらかじめIR使用フラグをONにしておく必要がある。
・撮影モードで撮影したデータはIRSPRITEで表示する事ができる。データをBASICプログラム内に取り出す事はできない。
・撮影モード起動中は画面キャプチャが禁止される。
・サブプログラムからの呼び出しは無視される。

引数

コントローラーID

IRカメラを使用するコントローラーのID:1
・撮影モードでは1以外指定できない。
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

IR認識タイプ

撮影モードとするために必ず1を指定する

照明タイプ

IRカメラの照明を指定する

0 全て(遠+近)
1 遠距離用のみ
2 近距離用のみ
3 照明OFF

・省略時は0。

ゲイン

IRカメラの撮影ゲイン:1~16

・省略時は8。

露出

IRカメラの撮影露出時間:7~600

・省略時は300。

イメージサイズ

撮影画像のサイズを指定する

0 320×240
1 160×120
2 80×60
3 40×30
4 20×15

・イメージサイズが大きいほど転送に時間がかかる。320×240で最短4秒、以下サイズが小さくなるごとに4倍速くなる。
・省略時は2。

IRSTART コントローラーID,2,[照明タイプ],[ゲイン],[露出]

IRカメラの使用を開始する(モーメントモード詳細パラメーター設定型)

・XCTRLSTYLEであらかじめIR使用フラグをONにしておく必要がある。
・サブプログラムからの呼び出しは無視される。

引数

コントローラーID

IRカメラを使用するコントローラーのID:1~2
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

2

モーメントモードとするために2を指定する

照明タイプ

IRカメラの照明を指定する

0 全て(遠+近)
1 遠距離用のみ
2 近距離用のみ
3 照明OFF

・省略時は0。

ゲイン

IRカメラの撮影ゲイン:1~16

・省略時は8。

露出

IRカメラの撮影露出時間:7~600

・省略時は300。

IRSTOP コントローラーID

IRカメラの使用を停止する

・サブプログラムからの呼び出しは無視される。

引数

コントローラーID

IRカメラの使用を停止するコントローラーのID:1~2
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

IRSTATE(コントローラーID)

IRカメラの開始状況を取得する

引数

コントローラーID

IRカメラの状況を取得するコントローラーのID:1~2
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

返値

IRカメラの状況

0 使用していない
1 停止中
2 クラスタリング起動中
3 撮影モード起動中
4 モーメントモード起動中

IRREAD コントローラーID OUT サンプリング番号,ノイズレベル,データ数,データ配列

IRカメラの認識結果を読み取る

・IRSTARTでIRカメラの使用を開始しておく必要がある。

引数

コントローラーID

IRカメラの認識結果を読み取るコントローラーのID:1~2
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

返値

サンプリング番号

新しいデータを読み取るたびに1増えていく番号
・同じ番号を連続して取得した場合は、新しいデータがまだ受信できていない事を示す。

ノイズレベル

認識中のノイズレベル
・0~2の値が返り、値が小さいほどノイズが少なく、正確な値が取れている事を示す。

データ数

データ配列に含まれるデータの数
・クラスタリングモードの場合、認識したクラスタの数を示す。配列には各クラスタの情報が入る。
・モーメントモードの場合常に48。配列には撮影領域内を横8×縦6に分割した各ブロックの情報が入る。

データ配列

読み取った認識結果を格納した配列
・幅8の2次元配列。
・高さは0~データ数-1までに意味のある値が入っている。
・座標の範囲はX:(0~320)Y:(0~240)。
・クラスタリングでのデータ形式は次の通り。

0 クラスタX座標
1 クラスタY座標
2 クラスタ幅
3 クラスタ高さ
4 クラスタのピクセル数
5 クラスタの重心座標X
6 クラスタの重心座標Y
7 クラスタの平均輝度

・モーメントモードでのデータ形式は次の通り。

0 ブロックの平均輝度
1 ブロックの重心座標X
2 ブロックの重心座標Y

IRSPRITE コントローラーID,スプライトID

撮影モードで取得したモーションIRカメラ画像をスプライトに貼り付ける

・指定したスプライトには撮影画像がリアルタイムで反映され続ける。
・IRSPRITEで作成したスプライトは通常のスプライトと同様に扱う事ができる。ただしSPPAGEを設定した場合元に戻す事はできない。
・撮影モードの撮影データをBASICデータとして取得する事はできない。
・サブプログラムからの呼び出しは無視される。

引数

コントローラーID

スプライトと結びつけるIRカメラを持ったコントローラーのID:1
・IRSPRITEでは1のみ指定可能。
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。

スプライトID

撮影画像と結びつけるスプライトのID:0~4095

KEYBOARD(スキャンコード[,機能ID])
KEYBOARD スキャンコード[,機能ID] OUT 結果,モディファイヤキー情報

USBキーボードの入力情報を取得する
・USBキーボードが接続されていない時の返値はすべてゼロ。

引数

スキャンコード

調べたいキーのUSB Usage ID:0~255

機能ID

知りたい状態の種類。

0 キーが押されている
1 使用不可(指定すると結果としてゼロが返る)
2 キーを押した瞬間
3 キーを離した瞬間

・省略時は0。

返値

結果

キーが機能IDで指定した状態であれば1、なければ0

モディファイヤキー情報

モディファイヤキーの押下情報をビットで返す

bit0 Windowsキー
bit1 Shiftキー
bit2 Ctrlキー
bit3 Altキー

各種入力(Toy-Con)

XCTRLSTYLE 最大接続数,100,Toy-Con種類左1,Toy-Con種類右1[,接続画面表示フラグ]
XCTRLSTYLE 最大接続数,100,Toy-Con種類左1,Toy-Con種類右1,Toy-Con種類左2,Toy-Con種類右2[,接続画面表示フラグ]

Toy-Conの接続設定をする

・Toy-Conを使用する場合、操作スタイルは専用スタイルを使用する。
・通常ジョイコンとしての情報は、BUTTON,STICK,ACCEL,GYROA,GYROVで2本持ちスタイル相当として取得できる。
・Toy-Con使用中はIRカメラ命令は使用できない。
・接続確認画面の操作結果はRESULT関数で確認できる(1:成功,-1:キャンセル)。
・サブプログラムからの呼び出しは無視される。

引数

最大接続数

接続したい最大のコントローラー数を指定する:1~2

100

Toy-Conを使用する場合操作スタイルに100を指定する

Toy-Con種類

認識するToy-Conの種類を左右別に設定する

0 ToyCon認識OFF ToyCon認識OFF
1 × ピアノ
2 × おうち
3 △バイク △バイク
4 △つり △つり
5 × ロボット
6 バイザー ×
7 △クルマ △クルマ
8 △ヒコウキ △ヒコウキ
9 △センスイカン △センスイカン
10 7,8,9すべて 7,8,9すべて

・×となっている値は指定できない。
・バイザーは左にのみ指定可能。
・ピアノ、おうち、ロボットは右にのみ指定可能。
・△のついた種類は左右両方に指定しなければならない。
・10はカギToy-Conの装着により7,8,9を自動で切替える。

接続画面表示フラグ

コントローラー接続画面を必ず表示するかどうかを指定する
・1を指定すると、コントローラー接続画面が必ず表示される。
・0を指定すると、設定が変わった時だけコントローラー接続画面が表示される。
・省略時は0。

TCPIANO コントローラーID OUT 認識フラグ[,キー・ボタン情報,ダイアル種類,ダイアル回転角速度]

ピアノToy-Conの認識情報を取得する

・XCTRLSTYLEでToy-Con種類に1以外を指定するとエラーとなる。
・キー・ボタン情報以降の返値はすべて省略可能。

引数

コントローラーID

情報を取得するコントローラーのID:1~2

返値

認識フラグ

ピアノToy-Conを認識しているかどうかを返す
・1で認識中。0で認識していない。

キー・ボタン情報

ピアノToy-Conのキー・ボタン状況をビット毎に返す
各ビットの意味は次の通り

bit0
bit1 ド♯
bit2
bit3 レ♯
bit4
bit5 ファ
bit6 ファ♯
bit7
bit8 ソ♯
bit9
bit10 ラ♯
bit11
bit12 ド(1オクターブ上)
bit13 読み込みボタン
bit14 オクターブアップ
bit15 オクターブダウン
bit16 再生ボタン
bit17 録音ボタン

ダイアル種類

ToyConに挿入されているダイアルの種類

0 挿入していない、認識できない
1 太線
2 細線
3 2本線
4 中線

ダイアル回転角速度

ダイアルが挿入されている場合の回転角速度
・時計回りに1周で1.0、反時計回りに1周で-1.0。

TCROBOT コントローラーID OUT 認識フラグ,手足情報配列[,ピッチ,ロール,ヨー]

ロボットToy-Conの認識情報を取得する

・XCTRLSTYLEでロボットToy-Conの認識を開始しない状態で使用するとエラーとなる。

引数

コントローラーID

情報を取得するコントローラーのID:1~2

返値

認識フラグ

ロボットToy-Conの各スロットを認識しているかどうかをビット値で返す
・各ビット1で認識中、0で認識していない。

bit0 右足
bit1 右手
bit2 左手
bit3 左足

手足情報配列

各スロットの情報が格納された2次元数値配列を返す
配列要素を[Y,X]とした時のYとXの意味は次の通り

Y=0 右足
1 右手
2 左手
3 左足
X=0 補正済検出値:0~1
1 補正前検出値:0~320
2 補正最小値:0~320
3 補正最大値:0~320
4 対応するクラスタID

ピッチ,ロール,ヨー

ロボットToy-Conを背負った状態での姿勢角度情報
・角度の単位はラジアン。

ピッチ 前後の傾き。Toy-Conを背中側に傾けると正(値が大きくなる)
ロール 左右の傾き。Toy-Conを左側に傾けると正
ヨー 腰の回転。反時計まわりに回転させると正

TCVISOR コントローラーID OUT 認識フラグ,ピッチ,ロール,ヨー

ロボットToy-Conのバイザー認識情報を取得する

・XCTRLSTYLEでロボットToy-Conバイザーの認識を開始しない状態で使用するとエラーとなる。

引数

コントローラーID

情報を取得するコントローラーのID:1~2

返値

認識フラグ

バイザーを正しく認識している場合は1、認識していない場合は0が返る

ピッチ,ロール,ヨー

バイザーの姿勢角度情報
・バイザーを頭に装着した状態を想定している。
・角度の単位はラジアン。

ピッチ バイザー上げ下げの傾き。Toy-Conを上げると正(値が大きくなる)
ロール 頭の左右の傾き。首を左に傾けると正
ヨー 頭の回転。反時計まわりに回転させると正

TCHOUSE コントローラーID OUT 認識フラグ,情報配列

おうちToy-Conの認識情報を取得する

・XCTRLSTYLEでおうちToy-Conの認識を開始しない状態で使用するとエラーとなる。

引数

コントローラーID

情報を取得するコントローラーのID:1~2

返値

認識フラグ

おうちToy-Conを認識しているかどうかを返す。1で認識中。0で認識していない

情報配列

各差し込み口の情報が格納された2次元数値配列を返す
配列要素を[Y,X]とした時のYとXの意味は次の通り

Y=0 下差し込み口
1 左差し込み口
2 右差し込み口

・X=0に次のように差し込まれているブロックのタイプが格納される。

0 ブロックなし
1 くるくる
2 ぷすぷす
3 ねじねじ
4 ケーブル1
5 ケーブル2

・X=1以降は次のような値が格納される。

X くるくる ぷすぷす ねじねじ その他
1 回転速度 フラグ フラグ 0
2 0 押し量 ねじり量 0
3 0 0 差し込み向き 0

・くるくるの回転速度は-1~1の値で、0で静止。
・ぷすぷすのフラグは次のとおり。

bit0 押されている
bit1 押した瞬間

・ぷすぷすの押し量は0~1.0。0で全く押されていない。
・ねじねじのフラグは1でつまみを離した瞬間、0で離していない。
・ねじり量は0~1.0。0で全くねじっていない。
・差し込み向きは0かそれ以外で、ねじねじを縦に刺したか横に刺したかをあらわす。

TCFISHING コントローラーID OUT 認識フラグ[,釣り竿ヨー,釣り竿ピッチ,リール速度,釣り竿ヨー角度,釣り竿ピッチ角度]

つりToy-Conの認識情報を取得する

・XCTRLSTYLEでつりToy-Conの認識を開始しない状態で使用するとエラーとなる。
・釣り竿ヨー以降の返値はすべて省略可能。

引数

コントローラーID

情報を取得するコントローラーのID:1~2

返値

認識フラグ

つりToy-Conを認識しているかどうかを返す。1で認識中。0で認識していない
・認識方法は、左右Joy-ConをつりToy-Conに装着し、認識フラグが1を返すまで静止させておく。

釣り竿ヨー

釣り竿のヨー(左右の角度)を-1.0~1.0の値で取得する
・左が正の値、右が負の値で、0が中央。
・左右に動かさない場合でも徐々に0に戻る。

釣り竿ピッチ

釣り竿のピッチ(上下の角度)を-1.0~1.0の値で取得する
・上向きが正の値、下向きが負の値で、0が水平。

リール速度

リールの巻き速度を取得する
・釣り竿を持って奥側に回すと正の値、手前側に回すと負の値で、0が静止。
・一周で1.0となる。

釣り竿ヨー角度

釣り竿のヨー(左右の角度)をラジアンで取得する
・左が正の値、右が負の値で、0が中央。
・左右に動かさない場合でも徐々に0に戻る。

釣り竿ピッチ角度

釣り竿のピッチ(上下の角度)をラジアンで取得する
・上向きが正の値、下向きが負の値で、0が水平。

TCBIKE コントローラーID OUT 認識フラグ[,ハンドル傾き,アクセル量,アクセル角度,ウイリー角度]

バイクToy-Conの認識情報を取得する

・XCTRLSTYLEでバイクToy-Conの認識を開始しない状態で使用するとエラーとなる。
・ハンドル傾き以降の返値はすべて省略可能。

引数

コントローラーID

情報を取得するコントローラーのID:1~2

返値

認識フラグ

バイクToy-Conを認識しているかどうかと、操作ボタンの状態をビット値で返す

0 認識していない
bit0 認識中
bit1 ブレーキレバー
bit2 左手前ボタン
bit3 右手前ボタン

・認識方法は、左右Joy-ConをバイクToy-Conに装着し、認識フラグが0以外の値を返すまで静止させておく。
・認識していない場合ボタン状態はかならず0になる。

ハンドル傾き

ハンドルの傾き量を-1.0~1.0の値で取得する
・左に傾けると正の値、右に傾けると負の値、0が水平。

アクセル量

アクセルのひねり量を0~1.0の値で取得する
・ひねっていない状態で0を返す。

アクセル角度

アクセルのひねり角度をラジアンで取得する
・ひねっていない状態で0を返す。

ウイリー角度

バイクToy-Conを上に向けた時の角度をラジアンで取得する

TCCAR コントローラーID OUT 認識フラグ [,アクセル,ハンドル入力[,ハンドル角度,左レバー,右レバー,ひも,サイドレバー,左ギミック,右ギミック]

クルマToy-Conの認識情報を取得する

・XCTRLSTYLEでToy-Con種類に7または10を指定しないとエラーとなる。
・アクセル以降の返値はすべて省略可能。

引数

コントローラーID

情報を取得するコントローラーのID:1~2

返値

認識フラグ

クルマToy-Conを認識しているかどうかと、操作ボタンの状態をビット値で返す。

0 認識していない
bit0 認識中
bit1 カギToy-Conボタン

アクセル

アクセルペダルの踏み込み量:0~1.0

ハンドル入力

ハンドルの回転量: -1.0~1.0
・-1.0で左180°、1.0で右180°、0でまっすぐ。
・180°以上ハンドルを回転しても上限・下限値を維持する。

ハンドル角度

ハンドルの回転角度:-0.5~0.5
・-0.5で左180°、0.5で右180°、0でまっすぐ。
・180°以上ハンドルを回転すると値が反転する。

左レバー

左レバーの操作量:0~1.0

右レバー

右レバーの操作量:0~1.0

ひも

ひもの引き量:0~1.0

サイドレバー

サイドレバーの操作量:0~1.0

左ギミック,右ギミック

左右レバーのギミックダイアル位置:0~4

TCPLANE コントローラーID OUT 認識フラグ [,アクセル,スティックX,スティックY]

ヒコウキToy-Conの認識情報を取得する

・XCTRLSTYLEでToy-Con種類に8または10を指定しないとエラーとなる。
・アクセル以降の返値はすべて省略可能。

引数

コントローラーID

情報を取得するコントローラーのID:1~2

返値

認識フラグ

ヒコウキToy-Conを認識しているかどうかと、操作ボタンの状態をビット値で返す。

0 認識していない
bit0 認識中
bit1 カギToy-Conボタン
bit2 トリガーボタン

アクセル

アクセルペダルの踏み込み量:0~1.0

スティックX

スティック左右方向の傾き:-1.0~1.0
・-1.0で左いっぱい,-1.0で右いっぱい、0で中央。

スティックY

スティック前後方向の傾き:-1.0~1.0
・-1.0で奥いっぱい,-1.0で手前いっぱい、0で中央。

TCSUBM コントローラーID, OUT 認識フラグ [,アクセル,左ハンドル角度,右ハンドル角度]

センスイカンToy-Conの認識情報を取得する

・XCTRLSTYLEでToy-Con種類に9または10を指定しないとエラーとなる。
・アクセル以降の返値はすべて省略可能。

引数

コントローラーID

情報を取得するコントローラーのID:1~2

返値

認識フラグ

センスイカンToy-Conを認識しているかどうかと、操作ボタンの状態をビット値で返す。

0 認識していない
bit0 認識中
bit1 カギToy-Conボタン
bit2 センスイカンToy-Conボタン

アクセル

アクセルペダルの踏み込み量:0~1.0

左ハンドル角度

左側ハンドルの回転角度:-0.5~0.5
・-0.5で-180°、0.5で180°をあらわす。
・180°以上ハンドルを回転すると値が反転する。

右ハンドル角度

右側ハンドルの回転角度:-0.5~0.5
・-0.5で-180°、0.5で180°をあらわす。
・180°以上ハンドルを回転すると値が反転する。

TCVEHICLE(コントローラーID)

現在認識中のDriveKit Toy-Con種類を返す

・XCTRLSTYLEでToy-Conを使用する設定にしていないとエラーとなる。

引数

コントローラーID

情報を取得するコントローラーのID:1~2

返値

Toy-Con種類

次のいずれかの値

0 未認識
7 クルマ
8 ヒコウキ
9 センスイカン

・XCTRLSTYLEでToy-Con種類として7,8,9,10を指定してる時のみ0以外の値を返す。

ファイル

FILES ["ファイル種類:"]
FILES "[ファイル種類:]プロジェクト名"

ファイルの一覧をコンソール上に表示する

・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0となる。

引数

ファイル種類

特定のファイル種類を表示させたい場合に指定する
・省略時はすべてのファイルを表示する。

プロジェクト名

一覧を取得したいプロジェクトの名前。
・省略時はカレントプロジェクト内のファイル一覧が表示される。

FILES
FILES "TXT:PROJECT" 

FILES "//"

プロジェクトの一覧をコンソール上に表示する

・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0となる。

引数

"//"

"//" を指定すると、プロジェクト一覧が表示される

FILES "//" 

FILES(["ファイル種類:"])
FILES("[ファイル種類:]プロジェクト名")

ファイル・プロジェクト一覧が格納された配列を作成する

・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0となる。

引数

ファイル種類

特定のファイル種類を取得したい場合に指定する
・省略時は全てのファイルを取得する。

プロジェクト名

一覧を取得したいプロジェクトの名前
・省略時はカレントプロジェクト内のファイル一覧を取得する。

返値

ファイル一覧が格納された文字列配列

NAMETBL$ = FILES()
FOR I=0 TO LAST(NAMETBL$)
 ?NAMETBL$[I]
NEXT

FILES("//")

プロジェクト一覧が格納された配列を作成する

・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0となる。

引数

"//"

"//" を指定すると、プロジェクト一覧を取得する

返値

プロジェクトの一覧が格納された文字列配列

NAMETBL$ = FILES("//")
FOR I=0 TO LAST(NAMETBL$)
 ?NAMETBL$[I]
NEXT

FILES ["ファイル種類:",]文字列配列
FILES "[ファイル種類:]プロジェクト名",文字列配列

ファイル一覧を配列に取得する

・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0となる。

引数

ファイル種類

特定のファイル種類を取得したい場合に指定する

プロジェクト名

一覧を取得したいプロジェクトの名前。
・省略時はカレントプロジェクト内のファイル一覧を取得する。

文字列配列

・ファイル一覧のファイル名が格納される文字列配列。
・1次元配列の場合取得したファイル数に応じて自動拡張。

DIM NAMETBL$[]
FILES NAMETBL$
FOR I=0 TO LAST(NAMETBL$)
 ?NAMETBL$[I]
NEXT

FILES "//",文字列配列

プロジェクト一覧を配列に取得する

・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0となる。

引数

"//"

"//" を指定すると、プロジェクト一覧を取得する

文字列配列

・プロジェクト一覧のプロジェクト名が格納される文字列配列。
・1次元配列の場合取得したファイル数に応じて自動拡張。

DIM NAMETBL$[]
FILES "//", NAMETBL$
FOR I=0 TO LAST(NAMETBL$)
 ?NAMETBL$[I]
NEXT

LOAD "[ファイル種類:]ファイル名"[,スロット]

プログラムを読み込む

・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。

引数

ファイル種類

ファイル種類はTXTのみ指定可能
・省略時はTXTを指定した事になる。

ファイル名文字列

読み込むファイル名

スロット

プログラムを読み込むスロット:0~3
・省略時は0。

LOAD "PROGNAME" 
LOAD "SUBPROG",1

LOADG "[ファイル種類:]ファイル名",グラフィックページ[,OX,OY]
LOADG "[ファイル種類:]ファイル名",グラフィックページ[,OX,OY] OUT 幅,高さ

画像ファイルを読み込む

・オフセット指定時はみ出した部分は無視される。
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。

引数

ファイル種類

GRP,JPGまたはDATを指定できる
・省略時はGRPを指定した事になる。
・DATを指定した場合、二次元整数配列以外のファイルはエラーとなる。

ファイル名文字列

読み込むファイル名

グラフィックページ

読み込んだ画像データを格納するグラフィックページ:0~5

OX,OY

画像の読み込み先座標
・省略時は0,0を指定した事になる。

返値

幅,高さ

読み込んだ画像データの幅と高さ

LOADG "GRPDATA",1
LOADG "DAT:DATA",2,0,64
LOADG "GRPDATA",2 OUT W,H

LOADV("ファイル種類:ファイル名")

ファイルの内容を読み込んで文字列または配列として返す

・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。

引数

ファイル種類

DAT,TXT,GRPを指定可能
・省略できない。

ファイル名

読み込むファイル名

返値

読み込んだファイルの内容
・DAT,GRPを指定した場合、DAT,GRPファイル内のデータを格納した配列を返す。
・DAT,GRPファイルの読み込みに失敗した場合は要素数0の1次元整数解列を返す。
・TXTを指定した場合、TXTファイル内容の文字列を返す。
・TXTファイルの読み込みに失敗した場合は空文字列を返す。

TX$=LOADV("TXT:MEMOFILE")
DT=LOADV("DAT:DATAFILE")

LOADV "ファイル種類:ファイル名",配列

ファイルの内容を配列に読み込む

・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。

引数

ファイル種類

DAT,GRPを指定可能
・省略できない。

ファイル名

読み込むファイル名

配列

読み込んだデータが格納される配列変数
・読み込むファイルに格納された配列データの次元と、読み込み先配列の次元は一致している必要がある。
・文字列配列を指定する場合、ファイル内のデータも文字列配列をセーブした物である必要がある。
・ファイル内の情報に応じて配列要素数が自動的に拡張される。

DIM MARRAY[]
LOADV "DAT:MDATA",MARRAY

SAVE "[ファイル種類:]ファイル名"[,スロット]

プログラムをセーブする

・上書きセーブ時は上書き前のファイルが @BACKUP.PRG として保存される。
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。

引数

ファイル種類

TXTのみ指定可能
・省略時はTXTを指定した事になる。

ファイル名

セーブするプログラムに付けるファイル名

スロット

セーブするプログラムのスロット番号:0~3
・省略時は0。

SAVE "TEST" 
SAVE "TEST2",2

SAVEG "[ファイル種類:]ファイル名",グラフィックページ[,始点X,始点Y,幅,高さ]

グラフィックページの内容をファイルに保存する

・上書きセーブ時は上書き前のファイルが @BACKUP.GRP という名前で保存される。
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。

引数

ファイル種類

GRPのみ指定可能
・省略時はGRPを指定した事になる。

ファイル名

セーブファイルに付ける名前

グラフィックページ

セーブするグラフィックページ:0~5

始点X,始点Y

保存したい領域の左上の座標を指定する(X,Y共に0~2047)
・省略時は0,0を指定した事になる。

幅,高さ

保存したい領域のサイズを指定する(幅,高さ共に1~2048)
・始点Xと幅、または始点Yと高さを足した結果が2048を超えるとエラーとなる。
・省略時は2048,2048を指定した事になる。

SAVEG "GRP:GAZOU",0
SAVEG "GAZOU_ICHIBU",3,100,100,300,300

SAVEG "JPG:ファイル名",グラフィックページ[,始点X,始点Y,幅,高さ] [,圧縮量]

グラフィックページの内容を高圧縮形式でファイルに保存する

・高圧縮形式は通常の圧縮形式に比べてより小さいファイルで保存できるが、保存するたびに画質が落ちていく(非可逆圧縮)。
・上書きセーブ時は上書き前のファイルが @BACKUP.JPG という名前で保存される。
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。

引数

ファイル種類

JPGのみ指定可能

ファイル名

セーブファイルに付ける名前

グラフィックページ

セーブするグラフィックページ:0~5

始点X,始点Y

保存したい領域の左上の座標を指定する(X,Y共に0~2047)
・省略時は0,0を指定した事になる

幅,高さ

保存したい領域のサイズを指定する(幅,高さ共に1~2048)
・始点Xと幅、または始点Yと高さを足した結果が2048を超えるとエラーとなる。
・省略時は2048,2048を指定した事になる。

圧縮量

圧縮量と画質を表す値を指定する(1~100)
・数字が小さいほど圧縮率が高くなるが、画質が落ちる。
・省略時は60。

SAVEG "JPG:GAZOU",0,80
SAVEG "JPG:GAZOU_ICHIBU",3,100,100,300,300

SAVEV "ファイル種類:ファイル名",変数

変数の内容をファイルに保存する

・上書き保存時は上書き前のファイルが @BACKUP.TXTまたは@BACKUP.DAT として保存される。
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。

引数

ファイル種類

TXT,DAT,GRPを指定可能
・省略できない。

ファイル名

保存ファイルに付ける名前

変数

セーブしたいデータを格納した変数
・TXTの場合文字列変数を指定する。
・DATの場合配列を指定する。配列の型や次元には制限がない。
・GRPの場合2次元の整数配列を指定する。

SAVEV "TXT:MEMO",TX$
DIM MAP[10,10]
SAVEV "DAT:MAP",MAP
DIM IMG%[32,32]
SAVEV "GRP:IMG",IMG%

PROJECT()

カレントプロジェクトを取得する

返値

カレントプロジェクトの名前

EXEC "[ファイル種類:]ファイル名文字列"[,スロット]

プログラムのロードと実行を行う

・DIRECTモードでは実行できない。
・指定スロットの変数、SPFUNC,TFUNC設定内容はクリアされる。
・現在実行中のスロットを指定した場合、実行中のプログラムが指定プログラムに入れ替わり、指定プログラムのENDで実行を終了する。
・現在実行中のスロット以外を指定した場合、指定スロットでプログラムを実行し、END命令を実行するとEXECの次の命令に戻ってくる。
・スロットを指定する場合、現在実行中のスロットと、実行される可能性のあるコードが存在しないスロットのみ指定できる。

引数

ファイル種類

TXTのみ指定可能
・省略時はTXTを指定した事になる。

ファイル名

読み込むプログラムのファイル名

スロット

プログラムを読み込むスロット:0~5
・省略時は現在実行中のスロットを指定した事になる。

EXEC "SAMPLE" 
EXEC "SBGED",1

EXEC スロット

指定スロットのプログラムを実行する

・DIRECTモードでは実行できない。
・指定スロットの変数、SPFUNC,TFUNC設定内容はクリアされる。
・現在実行中のスロットを指定した場合、実行中のプログラムを最初から実行しなおす。
・現在実行中のスロット以外を指定した場合、指定スロットのプログラムを実行し、END命令を実行するとEXECの次の命令に戻ってくる。
・スロットを指定する場合、現在実行中のスロットと、実行される可能性のあるコードが存在しないスロットのみ指定できる。

引数

スロット

実行するプログラムのスロット番号:0~5

EXEC 2

CHKFILE("[ファイル種類:]ファイル名文字列")

指定したファイルが存在するかどうかチェックする

引数

ファイル種類

調べるファイルの種別
・省略時はTXTを指定した事になる。

ファイル名

調べるファイル名

返値

存在する場合1が、存在しない場合0を返す

A=CHKFILE("SBATTACK")
B=CHKFILE("GRP:SBATTACK")

DELETE "[ファイル種類:]ファイル名"

ファイルを削除する

・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。

引数

ファイル種類

削除したいファイルの種別
・省略時はTXTを指定した事になる。

ファイル名

削除したいファイル名

DELETE "TEST" 
DELETE "GRP:PICTURE" 

RENAME "[ファイル種類1:]ファイル名1","[ファイル種類2:]ファイル名2"

ファイルの名前を変更する

・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。

引数

ファイル種類1

名前を変更したいファイルの種別
・省略時はTXTを指定した事になる。

ファイル名1

名前を変更したいファイル名

ファイル種類2

変更先ファイルのファイル種類
・ファイル種類1と異なる場合エラー。
・省略時はファイル種類1と同じ物となる。

ファイル名2

変更先のファイル名

RENAME "TEST1","TEST2" 
RENAME "GRP:PICTURE1","PICTURE2" 

スクリーン制御

ACLS
ACLS GRP保存フラグ,SPDEF保存フラグ,GRPF保存フラグ [,ANIMDEF保存フラグ]

画面設定を全てクリアし、起動時状態に戻す

・引数を指定すると、一部の設定のみリセットせずに保存することができる。

引数

GRP保存フラグ

1を指定するとフォントページを除いたグラフィックページをクリアせずに保存する
・省略時は0。

SPDEF保存フラグ

1を指定するとSPDEFの内容を保存する
・省略時は0。

GRPF保存フラグ

1を指定するとフォントページをクリアせずに保存する
・省略時は0。

ANIMDEF保存フラグ

1を指定するとANIMDEFで定義した内容をクリアせずに保存する
・省略時は0。

'ACLSは次のプログラムとほぼ同じ動作となる 
DEF ACLS KEEPGRP,KEEPSPDEF,KEEPGRPF
 VAR SCW=400,SCH=240

 XSCREEN SCW,SCH,2
 SPCLR
 BACKCOLOR &HFF000000
 FOR I=0 TO 3
  TSCREEN I,16,16:TPAGE I,4,1024,0
  TLAYER I,0:TOFS I,0,0,0:ATTR I,0
  COLOR I,#C_WHITE:CLS I
 NEXT
 TSCREEN #TCONSOLE,16,8:TPAGE #TCONSOLE,4,1024,0
 TLAYER #TCONSOLE, 0:TOFS #TCONSOLE,0,0,-4095:ATTR 0
 COLOR #C_WHITE:CLS
 IF !KEEPGRP THEN
  FOR I=0 TO 5:GTARGET I:GCLS:NEXT
  LOADG "GRP:#SYS/DEFGRP",4
 ENDIF
 IF !KEEPGRPF THEN
  LOADG "GRP:#SYS/DEFFONT",#GRPF
 ENDIF
 GTARGET 0
 GCOLOR #C_WHITE
 GCLIP 0,0,#GRPWIDTH-1,#GRPHEIGHT-1
 SPSET #GSPRITE,0,0,SCW,SCH,0,1
 SPPAGE #GSPRITE,0
 SPLAYER #GSPRITE,0
 SPOFS #GSPRITE,0,0,4095
 IF !KEEPSPDEF THEN
  SPDEF
 ENDIF
 ANIMDEF
 FOR I=0 TO 7:LAYER I:LFILTER I:LCLIP I:LMATRIX I:NEXT
 FADE 0
END

XSCREEN 幅,高さ[,サンプル倍率[,合成モード[,アスペクト比]]]

画面解像度を設定する

・コンソール(テキストスクリーン4)のサイズは幅,高さに合わせて変更される。
・それ以外のテキストスクリーン設定は変わらない。
・グラフィック表示用スプライトの設定は幅,高さに合わせて変更される。

引数

幅、高さ

画面の幅と高さをピクセル数で指定する
幅:128~1280
高さ:128~720
・幅・高さとも4で割り切れる数を指定可能。

サンプル倍率

ピクセルをさらに細かく分割して、回転や拡大をよりなめらかに表現する事ができる
・1以上、幅にサンプル倍率をかけた物が1280以内、高さにサンプル倍率をかけた物が720以内の値まで指定可能。
・省略時は1。

合成モード

BASIC画面を最終的に表示画面に合成する際の描画方法を指定する

0 バイリニア
1 スマートニアレストネイバー
2 ニアレストネイバー

・0はピクセルの角がなめらかになるが、全体にぼやけた表示になる。
・2は全体的にくっきりした表示になるが、ピクセルの角がギザギザになる。
・1は0と2の中間。
・省略時は0。

アスペクト比

画面の縦横比:0.1~10
・1で正方形、1より小さいと縦長に、1より大きいと横長になる。
・省略時は幅/高さが設定される。

XSCREEN OUT 幅,高さ[,サンプル倍率[,合成モード[,アスペクト比]]]

画面解像度を取得する

返値

幅, 高さ

画面の幅と高さ(ピクセル数単位)

サンプル倍率

合成モード

アスペクト比

ANIMDEF 定義番号,アニメ対象,データ配列[,ループ]

アニメーションの定義

・定義したアニメーションはSPANIMやTANIM命令で使用できる。

引数

定義番号

アニメーション定義番号:0~1023

アニメ対象

変化させる要素を管理する数値または文字列

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
ANIMDEF 0,"XY",PANIM

ANIMDEF 定義番号,アニメ対象,@ラベル[,ループ]
ANIMDEF 定義番号,アニメ対象,ラベル文字列[,ループ]

アニメーションの定義(DATA命令で指定)

・定義したアニメーションはSPANIMやTANIM命令で使用できる。

引数

定義番号

アニメーション定義番号:0~1023

アニメ対象

変化させる要素を管理する数値または文字列

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
ANIMDEF 0,"XY",@MOVDATA

ANIMDEF 定義番号,アニメ対象,時間1,項目1[,項目2][,時間2,項目1[,項目2]]…[,ループ]

アニメーションの定義(直接引数として指定)

・定義したアニメーションはSPANIMやTANIM命令で使用できる。

引数

定義番号

アニメーション定義番号:0~1023

アニメ対象

変化させる要素を管理する数値または文字列

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。

ANIMDEF 0,"XY",-60,200,100,-30,50,20

ANIMDEF 定義番号

指定定義番号のアニメーションをクリアする

引数

定義番号

クリアするアニメーション定義番号:0~1023

ANIMDEF 0

ANIMDEF

アニメーション定義をすべてクリアする

ANIMDEF

BACKCOLOR 背景色

BASIC画面の背景色を設定する

引数

背景色

背景色の色コード

BACKCOLOR()

BASIC画面の背景色を取得する

返値

背景色

設定されている背景色の色コード

FADE フェード色

画面にフェード効果をかける

・フェード色で塗りつぶしたスプライトを画面全体にかぶせるのと同じ効果となる。

引数

フェード色

フェード色の色コード
・アルファ成分が大きいほど濃く色が乗る。

FADE フェード色,時間

フェードイン、フェードアウト効果をかける

・指定時間をかけて現在のフェード色から指定色に徐々にフェード色を変更する。

引数

フェード色

フェード色の色コード
・アルファ成分が大きいほど濃く色が乗る。
・アルファ成分が255だとフェードアウト効果。
・アルファ成分が0だとフェードイン効果。

時間

フェード効果にかける時間をフレームカウントで指定する
・処理落ちがない場合、60で1秒。

FADE()

現在のフェード色を取得する

返値

現在のフェード色
・フェードイン・フェードアウト中の色も取得できる。

FADECHK()

フェードイン・フェードアウト中かどうかを調べる

返値

フェードイン・フェードアウト中であれば1、していない時は0

テキストスクリーン入出力

CLS
CLS スクリーンID

テキストスクリーンを消去する

引数

スクリーンID

消去するテキストスクリーンのID:0~4
・省略時は4。

CLS
CLS 1

COLOR [スクリーンID,]色コード

文字の描画色を設定する

・この命令を実行すると、以後PRINT文、TPRINT文、INPUT文等で表示する文字の色が変化する。

引数

スクリーンID

描画色を指定するテキストスクリーンのID:0~4
・省略時は4。

色コード

文字の描画色
・ARGB各8ビットの色コード。
※色コードの詳細はGCOLORを参照

COLOR #C_WHITE
COLOR 1,#C_RED
COLOR RGB(128,192,64,64)

COLOR([スクリーンID])

文字の描画色を取得する

・現在の文字描画色を取得する。

引数

スクリーンID

描画色を取得するテキストスクリーンのID:0~4
・省略時は4。

C=COLOR()
C1=COLOR(1)

LOCATE [座標X],[座標Y]
LOCATE スクリーンID,[座標X],[座標Y]

テキストスクリーンへの文字表示座標を指定する

・この命令を実行すると、以後PRINT文、TPRINT文、INPUT文等で表示する文字の表示座標が変化する。

引数

スクリーンID

表示座標を指定するテキストスクリーンのID:0~4
・省略時は4。

座標X, 座標Y

・文字を表示させる座標を指定する。
・表示できる文字数はTSCREENで設定するスクリーンサイズに依存する。
・XまたはYを省略すると、それぞれ以前のX,Y座標を維持する。

LOCATE 20,15
LOCATE ,10
LOCATE 1,10,0

LOCATE [スクリーンID] OUT 座標X,座標Y

文字表示座標を取得する

・現在の文字表示座標を取得する。

引数

スクリーンID

表示座標を指定するテキストスクリーンのID:0~4
・省略時は4。

返値

座標X, 座標Y

・現在の文字表示座標を取得する。

LOCATE OUT X,Y
LOCATE 1 OUT X1,Y1

PRINT [式[;または,式…]]

コンソールの文字表示

・式を省略すると改行のみ行う。
・省略形として、?と書いても良い。
・PRINTはスクリーン4に表示を行う。
・TPRINTは表示先のスクリーンを指定できる。

引数

・表示する変数、文字列変数、数値、文字列。

;(セミコロン)

表示の最後に改行しない

,(カンマ)

・表示後に改行せず、空白文字を表示する。

PRINT "RESULT(X,Y)=";DX*4+1,DY+1

TPRINT スクリーンID[,式[;または,式…]]

テキストスクリーンへの文字表示

・式を省略すると改行のみ行う。
・省略形として、T?と書いても良い。
・PRINTと異なりTPRINTは表示先のスクリーンを指定できる。

引数

スクリーンID

文字を表示するスクリーンのID:0~4

・表示する変数、文字列変数、数値、文字列。
・四則演算等や関数による計算式も記述可(計算結果が表示される)。

;(セミコロン)

表示後に改行せず、次の表示を密着させる

,(カンマ)

・表示後に改行せず、次の表示を一定間隔開ける。

TPRINT 1,CHR$(&HEA01);CHR$(&HEA02);

ATTR [スクリーンID,]水平反転,垂直反転,回転
ATTR [スクリーンID,]表示属性

テキストスクリーンに表示する文字の属性を設定する

・この命令を実行すると、以後PRINT文、TPRINT文、INPUT文等で表示する文字の表示属性が変化する。

引数

スクリーンID

文字表示属性を指定するテキストスクリーンのID:0~4
・省略時は4。

水平反転

・1で表示文字を左右に反転させる。
・0で反転しない。

垂直反転

・1で表示文字を上下に反転させる。
・0で反転しない。

回転

・0,1,2,3でそれぞれ文字を0°,90°,180°,270°回転させる。

表示属性

・水平反転、垂直反転、回転をまとめてビット値で設定する。

b00 ↑90度単位の回転(b00とb01の2ビットで指定)
b01
b02 水平反転(0=OFF、1=ON)
b03 垂直反転(0=OFF、1=ON)

ATTR 0,0,1:PRINT "ABC" 
ATTR 2,8:TPRINT 2,"XYZ" 

ATTR [スクリーンID] OUT 水平反転,垂直反転,回転
ATTR( [スクリーンID])

テキストスクリーンの表示文字属性を取得する

引数

スクリーンID

文字表示属性を取得するテキストスクリーンのID:0~4
・省略時は4。

返値

水平反転

・1で表示文字を左右に反転させる。
・0で反転しない。

垂直反転

・1で表示文字を上下に反転させる。
・0で反転しない。

回転

・0,1,2,3でそれぞれ文字を0°,90°,180°,270°回転させる。

表示属性

・水平反転、垂直反転、回転をまとめてビット値で取得する。

b00 ↑90度単位の回転(b00とb01の2ビットで指定)
b01
b02 水平反転(0=OFF、1=ON)
b03 垂直反転(0=OFF、1=ON)

ATTR OUT HREV,VREV,ROT
A2=ATTR(2)

SCROLL [スクリーンID,]文字数X,文字数Y

テキストスクリーンの表示内容をスクロールさせる

・テキストスクリーンの内容を文字単位で全体にずらす。
・スクロールの結果スクリーン外に押し出された文字は消える。

引数

スクリーンID

スクロールするテキストスクリーンのID:0~4
・省略時は4。

文字数X

横方向のスクロール文字数
・正の値で左方向、負の値で右方向にスクロールする。

文字数Y

縦方向のスクロール文字数
・正の値で上方向、負の値で下方向にスクロールする。

SCROLL 5,7
SCROLL 1,-1,0

CHKCHR([スクリーンID,]座標X,Y)

テキストスクリーンに表示されている文字の文字コードを調べる

引数

スクリーンID

スクロールするテキストスクリーンのID:0~4
・省略時は4。

座標X,Y

文字単位の座標

返値

指定座標に表示されている文字の文字コード
・文字が表示されていない場合はゼロが返る。

CODE=CHKCHR(0,0)
CODE=CHKCHR(1,10,10)

CHKCHR [スクリーンID,]座標X,Y OUT 文字コード,表示属性

テキストスクリーンに表示されている文字の文字コードと表示属性を調べる

引数

スクリーンID

スクロールするテキストスクリーンのID:0~4
・省略時は4。

座標X,Y

文字単位の座標

返値

文字コード

指定座標に表示されている文字の文字コード
・文字が表示されていない場合はゼロが返る。

表示属性

指定座標に設定されている表示属性
・ATTR命令を参照。

CHKCHR 0,0 OUT CH,AT
CHKCHR 1,10,10 OUT CH,AT

CHKCHR(スクリーンID,座標X,Y,座標変換フラグ)

テキストスクリーンに表示されている文字の文字コードを調べる

引数

スクリーンID

スクロールするテキストスクリーンのID:0~4

座標X,Y

文字コードを調べる座標
・次の座標変換フラグの値により座標の意味が変わる。

座標変換フラグ

座標X,Yの座標系を指定するフラグ
・0の場合、文字単位の座標と解釈する(LOCATEの座標と同じ)。
・1の場合、ディスプレイ座標と解釈する(TOFS等と同じ)。
・ディスプレイ座標の場合、LMATRIXの影響は考慮されない。

返値

指定座標に表示されている文字の文字コード
・文字が表示されていない場合はゼロが返る。

CODE=CHKCHR(1,10,10,0)
CODE=CHKCHR(1,200,120,1)

CHKCHR スクリーンID,座標X,Y,座標変換フラグ OUT 文字コード,表示属性

テキストスクリーンに表示されている文字の文字コードと表示属性を調べる

引数

スクリーンID

スクロールするテキストスクリーンのID:0~4

座標X,Y

文字コードを調べる座標
・次の座標変換フラグの値により座標の意味が変わる。

座標変換フラグ

座標X,Yの座標系を指定するフラグ
・0の場合、文字単位の座標と解釈する(LOCATEの座標と同じ)。
・1の場合、スクリーン座標と解釈する(TOFS等と同じ)。
・スクリーン座標の場合、LMATRIXの影響は考慮されない。

返値

文字コード

指定座標に表示されている文字の文字コード
・文字が表示されていない場合はゼロが返る。

表示属性

指定座標に設定されている表示属性
・ATTR命令を参照。

CHKCHR 1,10,10,0 OUT CH,AT
CHKCHR 1,200,120,1 OUT CH,AT

INPUT ["ガイド文字列";]変数[,変数2…]

キーボードから数値または文字列を入力する

・ENTERキーが入力されるまで入力待ち。
・入力数が不足時「?Redo from start」を表示し再入力。
・他のテキストスクリーン命令と異なり、テキストスクリーンは4で固定。

引数

ガイド文字列

入力用のガイドメッセージ(省略可能)
・ガイド文字列後の;を,(カンマ)にすると?が表示されない。
・;を使うときのみガイド文字列には文字列変数も使用可能。

変数

入力を受け取る変数(数値または文字列変数)
・変数を複数指定する場合,(カンマ)で区切る。

INPUT "なまえとねんれいは";NM$,AG

LINPUT ["ガイド文字列";]文字列変数

キーボードから文字列の取得

・INPUT命令では入力できない「,」等も受け付ける。
・ENTERキーが入力されるまで入力待ち。
・他のテキストスクリーン命令と異なり、テキストスクリーンは4で固定。

引数

ガイド文字列

入力用のガイドメッセージ(省略可能)

文字列変数

1行分の入力を受け取る文字列変数

LINPUT "ADDRESS:";ADR$

INKEY$()
INKEY$(コントローラー入力除外フラグ)

キーボードから入力された文字を1文字取得する

・キーボードからの入力がない場合でも、入力待ちをしない。
・先行キー入力があった場合、一番古い入力から1文字ずつ返す。

引数

コントローラー入力除外フラグ

・0を指定すると、コントローラーの一部ボタン入力をキー入力に見立てて返す。
・1を指定すると、コントローラー入力を無視する。
・省略時は0。

コントローラー入力と文字との対応は次の通り

十字ボタン右 CHR$(&H1C)
十字ボタン左 CHR$(&H1D)
十字ボタン上 CHR$(&H1E)
十字ボタン下 CHR$(&H1F)
Aボタン CHR$(&H0D)
Yボタン CHR$(&H08)

戻り

・キーボードから入力された文字を1文字ずつ返す。
・入力がない場合空文字列""が戻る。
・特殊キーは次のような文字を返す 。

Esc CHR$(&H1B)
Tab CHR$(&H09)
BackSpace CHR$(&H08)
Enter CHR$(&H0D)
Insert CHR$(&H1A)
Delete CHR$(&H10)
Home CHR$(&H02)
End CHR$(&H03)
PageUp CHR$(&H11)
PageDown CHR$(&H12)
CHR$(&H1C)
CHR$(&H1D)
CHR$(&H1E)
CHR$(&H1F)

C$=INKEY$()
KBONLY$=INKEY$(1)

TSCREEN フォント種類[,文字サイズ]

コンソール(テキストスクリーン4)の広さと表示に使用するフォントの設定を行う

・幅と高さは画面サイズを文字サイズで割った物が設定される 。

引数

フォント種類

表示に用いるフォントの種類:8~64(8の倍数)
・24以上を指定すると、ユーザー定義文字のみ表示されるようになる。

文字サイズ

文字の表示サイズ:8~64

TSCREEN 8

TSCREEN スクリーンID,フォント種類,文字サイズ[,幅,高さ]
TSCREEN スクリーンID,フォント種類,幅,高さ

テキストスクリーンの広さと表示に使用するフォントの設定を行う

引数

スクリーンID

設定するテキストスクリーンのID:0~4

フォント種類

表示に用いるフォントの種類:8~64(8の倍数)
・24以上を指定すると、ユーザー定義文字のみ表示されるようになる。

文字サイズ

文字の表示サイズ8~64

幅, 高さ

テキストスクリーンの幅と高さを文字単位で指定する
・幅×高さが32768まで指定可能。
・幅、高さを省略した場合、または0を指定した場合、現在の画面サイズを文字サイズで割った物が設定される。

TSCREEN 1,16,16,100,100

TSCREEN [スクリーンID] OUT フォント種類,文字サイズ,幅,高さ

テキストスクリーンの広さと表示に使用するフォントを取得する

引数

スクリーンID

消去するテキストスクリーンのID:0~4
・省略時は4。

返値

フォント種類

表示に用いるフォントの種類:8~64

文字サイズ

文字の表示サイズ:8~64

幅, 高さ

テキストスクリーンの幅と高さ

TSCREEN OUT FONT,SIZE,W,H
TSCREEN 1 OUT FONT,SIZE,W,H

TPAGE [スクリーンID,]グラフィックページ,参照原点X,参照原点Y

ユーザー定義文字の参照グラフィックページを設定する

・ユーザー定義文字の絵を参照するグラフィックページと、参照原点を設定する。
・ユーザー定義文字は文字コード&HE800から&HF7FFまでの4096文字で、この範囲の文字はTPAGEで設定した場所をフォントとして参照する。
・ユーザー定義文字ではない通常文字は参照グラフィックページや参照原点を変更できない。
・文字を表示してからTPAGEを呼び出すと、表示済みの文字にも影響が出る。

引数

スクリーンID

設定するテキストスクリーンのID:0~4
・省略時は4。

グラフィックページ

参照するグラフィックページ:-1~5

参照原点X, 参照原点Y

グラフィックページ内の参照原点座標
・ユーザー定義文字は、参照原点から64x64文字を並べた範囲を参照する。
・フォント種類が8の場合512x512ピクセル、16の場合1024x1024ピクセル、32の場合2048x2048ピクセルとなる。

TPAGE [スクリーンID] OUT グラフィックページ,参照原点X,参照原点Y

ユーザー定義文字の参照グラフィックページを取得する

引数

スクリーンID

参照情報を取得するテキストスクリーンのID:0~4
・省略時は4。

グラフィックページ

参照するグラフィックページ

参照原点X,参照原点Y

グラフィックページ内の参照原点座標

TCOLOR スクリーンID,色コード

テキストスクリーン全体に乗算する色を設定する

・COLORが文字単位で色を設定するのに対し、TCOLORはテキストスクリーン全体に指定色を乗算する事で、全体の色味を変更する。

引数

スクリーンID

設定するテキストスクリーンのID:0~4

色コード

設定する描画色
・ARGB各8ビットの色コード ※GCOLORを参照。

TCOLOR(スクリーンID)

テキストスクリーンの全体に乗算する色を取得する

引数

スクリーンID

色を取得するテキストスクリーンのID:0~4

返値

指定テキストスクリーンに設定されている描画色

TLAYER スクリーンID,レイヤーID

テキストスクリーンの所属レイヤーを設定する

引数

スクリーンID

設定するテキストスクリーンのID:0~4

レイヤーID

スクリーンを所属させるレイヤーのID:0~7

TLAYER(スクリーンID)

テキストスクリーンの所属レイヤーを取得する

引数

スクリーンID

レイヤーIDを取得するテキストスクリーンのID:0~4

返値

スクリーンが所属しているレイヤーID

TPUT スクリーンID,X,Y,文字コード[,表示属性]
TPUT スクリーンID,X,Y,文字列[,表示属性]

テキストスクリーンの指定座標に文字を一文字書く

引数

スクリーンID

文字を書き込むテキストスクリーンのID:0~4

X,Y

文字を書き込む座標

文字コード

書き込む文字の文字コード:0~65535
・フォントが存在しない文字コードを指定すると×が表示される 。

文字列

書き込む文字を格納した文字列
・先頭の文字を書き込む。

表示属性

文字の表示属性
・ATTRで設定する表示属性と同じ。
・省略時はATTRで設定した表示属性を使用する。

TFILL スクリーンID,始点X,始点Y,終点X,終点Y,文字コード[,表示属性]
TFILL スクリーンID,始点X,始点Y,終点X,終点Y,文字列[,表示属性]

テキストスクリーンの指定範囲を指定文字・文字列で埋める

引数

スクリーンID

文字を書き込むテキストスクリーンのID:0~4

始点X, 始点Y, 終点X, 終点Y

文字を書き込む範囲
・左上が始点X,始点Y、右下が終点X,終点Yで囲われた四角形の範囲。

文字コード

書き込む文字の文字コード:0~65535
・フォントが存在しない文字コードを指定すると×が表示される 。

文字列

書き込む文字を格納した文字列
・文字列内の文字を左上から右方向、右端まで行ったら一段下がって左端から右方向、と埋めていく。

表示属性

文字の表示属性
・ATTRで設定する表示属性と同じ。
・省略時はATTRで設定した表示属性を使用する。

TFILL 0,2,2,10,5,&HE810,#A_REVV
TFILL 0,2,6,11,10,"ABC" 

THOME スクリーンID,ホーム座標X,ホーム座標Y

テキストスクリーンのホーム座標(座標基準点)を設定する

ホーム座標はTOFS命令の座標基準点、TROT(回転)やTSCALE(スケーリング)の中心点として使用する

引数

スクリーンID

設定するテキストスクリーンのID:0~4

ホーム座標X,ホーム座標Y

設定するホーム座標の座標
・ハードウェアの仕様により、実数値を設定すると参照フォント画像が1ピクセルずれる事がある。

THOME スクリーンID OUT ホーム座標X,ホーム座標Y

テキストスクリーンのホーム座標を取得する

引数

スクリーンID

取得するテキストスクリーンのID:0~4

返値

ホーム座標X,ホーム座標Y

ホーム座標の座標

TOFS スクリーンID,X,Y[,Z]

テキストスクリーンの表示座標を設定する

・THOMEとTOFSの関係は、「THOMEで設定したテキストスクリーン上の座標を、TOFSで設定した画面上の座標に持って行く」と考えれば良い。

引数

スクリーンID

設定するテキストスクリーンのID:0~4

X,Y

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

Z

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

TOFS スクリーンID OUT X,Y[,Z]

テキストスクリーンの表示座標を取得する

引数

スクリーンID

取得するテキストスクリーンのID:0~4

返値

X,Y

表示座標座標

Z

表示優先度

TROT スクリーンID,角度

テキストスクリーンの回転角を設定する

・THOMEで設定したホームポジションを中心に回転する。

引数

スクリーンID

設定するテキストスクリーンのID:0~4

角度

回転角(度)
・ハードウェアの仕様により、設定角度により参照フォント画像が1ピクセルずれる事がある。

TROT(スクリーンID)

テキストスクリーンの回転角を取得する

引数

スクリーンID

取得するテキストスクリーンのID:0~4

返値

回転角

TSCALE スクリーンID,倍率X,倍率Y

テキストスクリーンの拡大・縮小を行う

・THOMEで設定したホームポジションを中心に拡大・縮小する。
・1.0より大きな値で拡大(2.0で2倍)、1.0より小さな値で縮小(0.5で半分)。

引数

スクリーンID

設定するテキストスクリーンのID:0~4

倍率X,倍率Y

拡大縮小の倍率を横(X)と縦(Y)に設定する
・ハードウェアの仕様により、設定値により参照フォント画像が1ピクセルずれる事がある。

TSCALE スクリーンID OUT 倍率X,倍率Y

テキストスクリーンの拡大・縮小倍率を取得する

引数

スクリーンID

取得するテキストスクリーンのID:0~4

倍率X,倍率Y

現在設定されている拡大・縮小倍率

TSHOW スクリーンID

テキストスクリーンを表示する

引数

スクリーンID

表示するスクリーンID:0~4

TSHOW(スクリーンID)

テキストスクリーンの表示状況を取得する

引数

スクリーンID

取得するスクリーンID:0~4

返値

テキストスクリーンが表示されていれば1、されていなければ0を返す

THIDE スクリーンID

テキストスクリーンを隠す

引数

スクリーンID

表示を隠すスクリーンID:0~4

THIDE(スクリーンID)

テキストスクリーンの表示状況を取得する

引数

スクリーンID

取得するスクリーンID:0~4

返値

テキストスクリーンが表示されていれば0、されていなければ1を返す

TBLEND スクリーンID,合成方法

テキストスクリーンの合成方法を設定する

引数

スクリーンID

合成方法を設定するテキストスクリーンのID:0~4

合成方法

設定する合成方法:0~1
・0で通常合成、1で加算合成。

TBLEND(スクリーンID)

テキストスクリーンの合成方法を取得する

引数

スクリーンID

合成方法を取得するテキストスクリーンのID:0~4

返値

設定されている合成方法
・0で通常合成、1で加算合成。

TANIM スクリーンID,アニメ対象,データ配列[,ループ]

テキストスクリーンにアニメを設定する(配列で指定)

テキストスクリーンアニメ共通仕様

・アニメは値を設定して指定時間分待つという動作。
・アニメ開始はTANIMを実行した次フレームから。
・対象要素ごとに最大32個のデータを受け付ける。
・時間にマイナス値を指定すると直前の値から線形補間を行う。

引数

テキストスクリーンID

アニメーションを設定するテキストスクリーンのID:0~4

アニメ対象

変化させる要素を管理する数値または文字列

0 "XY" XY座標
1 "Z" Z座標
2 "R" 回転角度
3 "S" 倍率XY
4 "C" 表示色
5 "V" 変数(テキストスクリーン内部変数7の値)

・文字列の末尾に"+"を付けるか、数値に8を加えるとアニメーション開始時点からの相対値となる。
・SPANIMで使用できる"I","UV"は指定しても無視される。

データ配列

アニメデータが格納された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
TANIM 0,"XY",PANIM

TANIM スクリーンID,アニメ対象,"@ラベル文字列"[,ループ]

テキストスクリーンにアニメを設定する(DATA命令で指定)

引数

スクリーンID

アニメーションを設定するテキストスクリーンのID:0~4

アニメ対象

変化させる要素を管理する数値または文字列

0 "XY" XY座標
1 "Z" Z座標
2 "R" 回転角度
3 "S" 倍率XY
4 "C" 表示色
5 "V" 変数(テキストスクリーン変数7の値)

・文字列の末尾に"+"を付けるか、数値に8を加えるとアニメーション開始時点からの相対値となる。
・SPANIMで使用できる"I","UV"は指定しても無視される。

@ラベル文字列

・アニメデータが格納された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
TANIM 0,"XY",@MOVDATA

TANIM スクリーンID,アニメ対象,時間1,項目1[,項目2][,時間2,項目1[,項目2]]…[,ループ]

テキストスクリーンにアニメを設定する(直接引数として指定)

引数

スクリーンID

アニメーションを設定するテキストスクリーンのID:0~4

アニメ対象

変化させる要素を管理する数値または文字列

0 "XY" XY座標
1 "Z" Z座標
2 "R" 回転角度
3 "S" 倍率XY
4 "C" 表示色
5 "V" 変数(テキストスクリーン変数7の値)
6 "UV" UV座標(定義元画像座標)
7 "I" 定義番号

・文字列の末尾に"+"を付けるか、数値に8を加えるとアニメーション開始時点からの相対値となる。
・SPANIMで使用できる"I","UV"は指定しても無視される。

時間,項目

・アニメデータそのもの(必要な数分並べる、最大32個)。

ループ

ループ回数:1~
・0を指定することで無限ループとなる。
・省略時は1。

TANIM 0,"XY",-60,200,100,-30,50,20

TANIM スクリーンID,アニメーション定義番号

テキストスクリーンにアニメを設定する(アニメーション定義番号で指定)

引数

スクリーンID

アニメーションを設定するテキストスクリーンのID:0~4

アニメーション定義番号

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

ANIMDEF 0,"XY",-60,100,0
TANIM 0,0

TANIM [スクリーンID]

テキストスクリーンに設定されているアニメをクリアする

引数

スクリーンID

アニメーションをクリアするテキストスクリーンのID:0~4
・省略時は全スクリーンのアニメをクリアする 。

TANIM 0
TANIM

TSTOP [スクリーンID]

テキストスクリーンのアニメーションを停止させる

引数

スクリーンID

対象のテキストスクリーンのID:0~4
・省略時は全テキストスクリーンのアニメーションを停止させる。

TSTOP

TSTART [スクリーンID]

テキストスクリーンのアニメーションを開始させる

引数

スクリーンID

対象のテキストスクリーンのID:0~4
・省略時は全テキストスクリーンのアニメーションを開始させる。

TSTART

TCHK(スクリーンID)

テキストスクリーンのアニメーション状態を取得する

引数

スクリーンID

対象のテキストスクリーンのID:0~4

返値

b00 XY座標 1 #CHKXY
b01 Z座標 2 #CHKZ
b02 回転 4 #CHKR
b03 倍率XY 8 #CHKS
b04 表示色 16 #CHKC
b05 変数 32 #CHKV

ビットごとに対象割り当て(すべて0の時アニメ停止中)

ST=TCHK(0)
'|b00|#CHKXY|
'|b01|#CHKZ|
'|b02|#CHKR|
'|b03|#CHKS|
'|b04|#CHKC|
'|b05|#CHKV|

TVAR スクリーンID,変数キー,値
TVAR スクリーンID,変数キー

テキストスクリーン変数への書き込み

・プログラム実行開始時、ACLS呼び出し時にクリアされる。

引数

スクリーンID

対象のテキストスクリーンのID:0~4

変数キー

テキストスクリーン変数の名前
・文字列または整数を名前として付ける事ができる。

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

・省略時は変数キーに結びついた値を削除する。

TVAR 0,7,1
TVAR 0,"NAME","VALUE" 
TVAR 0,"NAME" '値の削除

TVAR(スクリーンID,変数キー)

テキストスクリーン変数を取得する

引数

スクリーンID

対象のテキストスクリーンのID:0~4

内部変数番号

テキストスクリーン変数の名前
・文字列または整数を名前として付ける事ができる。

返値

TVARで設定した値
・TVARで値を設定していない場合は、整数の0が返る。

V=TVAR(0,0)

TVAR スクリーンID[,変数キー]

テキストスクリーン変数を削除する

引数

スクリーンID

対象のスクリーンID:0~4

変数キー

削除するテキストスクリーン変数の名前
・文字列または整数を名前として付ける事ができる。
・省略時は指定スクリーン内のすべてのテキストスクリーン変数を削除する。

TVAR 0,7
TVAR 0,"NAME" 

TCOPY コピー先スクリーンID[,コピー元スクリーンID],始点X,始点Y,終点X,終点Y,転送先X,転送先Y

テキストスクリーン内のキャラクタ情報をコピーする

引数

コピー先スクリーンID

コピー先のテキストスクリーンID:0~4

コピー先スクリーンID

コピー元のテキストスクリーンID:0~4

・省略時はコピー先スクリーンと同じスクリーンが指定される。

始点X,Y,終点X,Y

コピー元の始点座標と終点座標

転送先X,Y

コピー先の始点座標

TCOPY 4,0,0,9,9,10,10
TCOPY 4,1,0,0,9,9,10,10

TSAVE 読み出しスクリーンID,[X,Y,幅,高さ,]転送先配列

テキストスクリーンのキャラクタ情報を配列へコピーする

・配列内のデータ構成はTARRAYを参照。

引数

読み出しスクリーンID

キャラクタ情報を取り出すテキストスクリーンID:0~4

X,Y,幅,高さ

コピー元範囲の始点X,Y座標,幅,高さ
・省略時はテキストスクリーン全体を指定した事になる。

転送先配列

キャラクタ情報を格納する数値配列変数

・配列の要素が不足する場合、1次元配列に限り自動追加される。

DIM WORK%[]
TSAVE 4,WORK%

TLOAD 書き込みスクリーンID,[X,Y,幅,高さ,]転送元配列

配列からテキストスクリーンにキャラクタ情報をコピーする

・配列内のデータ構成はTARRAYを参照。

引数

書き込みスクリーンID

キャラクタ情報を書き込むテキストスクリーンID:0~4

X,Y,幅,高さ

書き込み範囲の始点X,Y座標,幅,高さ
・省略時はテキストスクリーン全体を指定した事になる。

画像配列

キャラクタ情報が格納された数値配列

DIM WORK%[]
TLOAD 4,WORK%

TARRAY(スクリーンID)

テキストスクリーンの内容を表す整数配列を取得する

・テキストスクリーンの文字、属性、色を整数型2次元配列として直接読み書きが可能。
・書き込んだ結果を反映するにはTUPDATEを使用する。

引数

スクリーンID

配列を取得する対象スクリーンのID:0~4

返値

対象スクリーンの内容を表す整数型2次元配列
・配列サイズは[スクリーン高さ, スクリーン幅x2]。
・1文字は2要素で表され、1要素目は上位16ビットに表示属性、下位16ビットに文字コード、2要素目は表示色が入る。

T=TARRAY(0)
T[0,0]=&HE810
PRINT HEX$(T[0,0])

TUPDATE スクリーンID [,始点X,始点Y,終点X,終点Y]

TARRAYによる書き込み内容を表示に反映させる

・通常のテキストスクリーン命令では内部でTUPDATE相当の処理を行っているため、文字表示命令実行後にTUPDATEを使用しても何の効果もない。
・TUPDATEを使用しなくても、更新座標付近に他の文字表示命令で書き込みを行うと自動的に反映が行われる。

引数

スクリーンID

反映を行うスクリーンのID:0~4

始点X,始点Y,終点X,終点Y

反映を行いたい四角形領域の始点と終点座標
・省略するとスクリーン全体を更新する。

T=TARRAY(0)
T[0,0]=&HE811
T[0,1]=#C_RED
TUPDATE 0

TFUNC スクリーンID,"@ラベル"
TFUNC スクリーンID,"ユーザー定義命令名"

テキストスクリーンごとにコールバック処理を割り当てる

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

引数

スクリーンID

対象のテキストスクリーンID:0~4

@ラベル

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

ユーザー定義命令名

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

TFUNC 0,"@PROG" 
TFUNC 1,"USERDEF" 

TFUNC スクリーンID

テキストスクリーンに割り当てたコールバック処理をクリアする

引数

スクリーンID

クリア対象のテキストスクリーンID:0~4

TFUNC 0

TCOORD スクリーンID,変換元座標X,Y[,モード] OUT 変換結果座標X,Y

ディスプレイ座標と、テキストスクリーン上座標との変換を行う

引数

スクリーンID

スクロールするテキストスクリーンのID:0~4

座標X,Y

文字コードを調べる座標
・次のモードの値により座標の意味が変わる。

モード

座標変換方法を指定する:0~2

0 テキストスクリーン上の座標(ドット単位)をディスプレイ座標に変換
1 ディスプレイ座標をテキストスクリーン上の文字単位座標に変換
2 ディスプレイ座標をテキストスクリーン上のドット単位座標に変換

・省略時は0。
・ディスプレイ座標を使用する場合、LMATRIXの影響は考慮されない。

返値

変換結果座標X,Y

変換結果の座標値
・モードの値により返ってくる座標の意味も変わる。

TCOORD 1,10,10,0 OUT DX,DY
GPSET DX,DY,#C_WHITE

TCOORD 1,100,50,1 OUT CX,CY
LOCATE CX,CY:?"A" 

TCOORD 1,100,50,2 OUT SX,SY

グラフィック

GTARGET 描画対象ページ

グラフィック描画対象ページを指定する

引数

描画対象ページ

0~5 GRP0~GRP5

GTARGET 0

GTARGET()

現在のグラフィック描画対象ページを取得する

返値

描画対象ページ

WP=GTARGET()

GCOLOR 色コード

グラフィック描画色を指定する

引数

色コード

・色を8桁の16進数で表わしたもの。
・&HAARRGGBBと、A,R,G,Bそれぞれ2桁指定する。
・Aは透明度,Rは赤,Gは緑,Bは青の強さを0~255(&H00~&HFF)で指定する。
・A(透明度)は0が完全に透明、255で完全に不透明。
・RGB関数、または#C_ではじまる色定数を使うと簡単に指定できる。

GCOLOR &HFF0A141E
GCOLOR RGB(255,10,20,30)
GCOLOR #C_BLUE

GCOLOR()

グラフィック描画色を取得する

返値

グラフィック描画色

C = GCOLOR()

RGB(R,G,B)
RGB(A,R,G,B)

RGB値から色コードを計算する

引数

A

透明度:0~255
・省略時は255。

R,G,B

色の要素:R,G,Bそれぞれ 0~255

・色の例。

RGB(0,0,0)
RGB(255,255,255)
薄いグレー RGB(224,224,224)
グレー RGB(128,128,128)
濃いグレー RGB(64,64,64)
RGB(255,0,0)
ピンク RGB(255,96,208)
RGB(160,32,255)
水色 RGB(80,208,255)
RGB(0,32,255)
黄緑 RGB(96,255,128)
RGB(0,192,0)
黄色 RGB(255,224,32)
オレンジ RGB(255,160,16)
茶色 RGB(160,128,96)
薄紅色 RGB(255,208,160)

返値

引数から計算された色コード

C1=RGB(0,100,200)
C2=RGB(128,0,100,200)

RGB(色コード,[A],[R],[G],[B])

色コードの各成分を置き換える

引数

色コード

置き換え元となる色コード

A,R,G,B

置き換える色成分
・値は0~255で指定する。
・それぞれ省略すると置き換え元色コードの対応成分がそのまま使われる。

返値

引数から計算された色コード

C1=RGB(#C_RED, 127,,,) '半透明赤
C2=RGB(#C_BLUE,,255,,) '紫

RGB 色コード OUT R,G,B
RGB 色コード OUT A,R,G,B

色コードからRGBの各成分を取得する

引数

色コード

ARGB各8ビットの色コード
・色コードの説明はGCOLORを参照。

返値

A

指定した色コードの透明度情報を受け取る変数
・0~255の値が返る。

R,G,B

指定した色コードの色成分情報を受け取る変数
・それぞれ0~255の値が返る。

RGB C OUT R,G,B

RGBF(R,G,B)
RGBF(A,R,G,B)

実数のRGB値から色コードを計算する

引数

A

透明度:0~1.0
・省略時は1.0。

R,G,B

色の要素:R,G,Bそれぞれ 0~1.0

返値

引数から計算された色コード

RGBF(色コード,[A],[R],[G],[B])

色コードの各成分を置き換える

引数

色コード

置き換え元となる色コード

A,R,G,B

置き換える色成分
・値は0~1.0で指定する。
・それぞれ省略すると置き換え元色コードの対応成分がそのまま使われる。

返値

引数から計算された色コード

C1=RGBF(#C_RED, 0.5,,,) '半透明赤
C2=RGBF(#C_BLUE,,1.0,,) '紫

RGBF 色コード OUT R,G,B
RGBF 色コード OUT A,R,G,B

色コードからRGBの各成分を取得する(実数版)

引数

色コード

色成分を取得する色コード
・色コードの説明はGCOLORを参照。

返値

A

指定色コードの透明度情報を受け取る変数
・0~1.0の値が返る。

R,G,B

指定色コードの色成分情報を受け取る変数
・それぞれ0~1.0の値が返る。

HSV(色相,彩度,明度 [,透明度])

HSV値から色コードを計算する

引数

色相

色の種類(H):正の値
・角度と同じで、360を超えると0と同じ色に戻る扱いになる。
・数が大きくなると赤→黄→緑→青→紫となめらかに変化する。

彩度

色のあざやかさ(S):0~255
・数が小さいほど白っぽくなる。

明度

色の明るさ(V):0~255
・0は黒、255は一番明るい状態をあらわす。

透明度

返値の色コードに設定する透明度:0~255
・省略時は255。

返値

HSV値相当の色コード

GCLS HSV(100,100,100,100)

FOR I=0 TO 360
GPSET I,10,HSV(I,255,255)
NEXT

HSV 色コード OUT 色相,彩度,明度 [,透明度]

色コードをHSV値に変換する

引数

色コード

変換したい色コード
・色コードの説明はGCOLORを参照。

返値

色相

指定した色の色相
・0~360の値が返る。

彩度

指定した色の彩度
・0~255の値が返る。

明度

指定した色の明度
・0~255の値が返る。

透明度

指定した色の透明度
・0~255の値が返る。

HSV RGB(192,128,0) OUT H,S,V
?H,S,V

HSVF(色相,彩度,明度[,透明度])

HSV値から色コードを計算する(実数版)

引数

色相

色の種類(H):正の値
・0~1で色の種類を指定する。
・数が大きくなると赤→黄→緑→青→紫となめらかに変化する。
・1を超えると0と同じ色に戻る。

彩度

色のあざやかさ(S):0~1
・数が小さいほど白っぽくなる。

明度

色の明るさ(V):0~1
・0は黒、1は一番明るい状態をあらわす。

透明度

返値の色コードに設定する透明度:0~1
・省略時は1。

返値

HSV値相当の色コード

GCLS HSVF(0.4,0.4,0.4,0.4)

FOR I=0 TO 360
GPSET I,10,HSVF(I/360,1,1)
NEXT

HSVF 色コード OUT 色相,彩度,明度[,透明度]

色コードをHSV値に変換する(実数版)

引数

色コード

変換したい色コード
・色コードの説明はGCOLORを参照。

返値

色相

指定した色の色相
・0~1.0の値が返る。

彩度

指定した色の彩度
・0~1.0の値が返る。

明度

指定した色の明度
・0~1.0の値が返る。

透明度

指定した色の透明度
・0~1.0の値が返る。

HSVF RGB(192,128,0) OUT H,S,V
?H,S,V

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

グラフィックページの書き込みクリッピング領域を指定する

・クリッピング領域を指定すると、以後のグラフィック描画命令は指定範囲内のみが操作対象となる。
・引数を全て省略すると、グラフィックページ全体を指定した事になる。

引数

始点X,Y

クリッピング領域の始点座標(X,Y共に0~2047)

終点X,Y

クリッピング領域の終点座標(X,Y共に0~2047)

GCLIP 100,100,200,200

GCLIP OUT 始点X,始点Y,終点X,終点Y

グラフィックページの書き込みクリッピング領域を取得する

返値

始点X,Y

クリッピング領域の始点座標

終点X,Y

クリッピング領域の終点座標

GCLIP OUT LEFT,TOP,RIGHT,BOTTOM

GCLS [色コード]

グラフィックページの内容を指定色で塗りつぶす

・塗りつぶされる範囲はGCLIPの設定範囲。

引数

色コード

塗りつぶしに使用する色コード
・色コードの説明はGCOLORを参照。
・省略時は0(透明色)で塗りつぶされる。

GCLS RGB(32,32,32)

GPGET(座標X,座標Y)

グラフィックページの指定座標の色を取得する

引数

座標X,Y

色を取得する座標
・グラフィックページ範囲外の座標を指定すると0が返る。

返値

指定座標のピクセルの色コード
・色コードの説明はGCOLORを参照。

C=GPGET(100,100)

GPSET 座標X,座標Y[,色コード[,描画方法]]

グラフィックページに点を打つ

引数

座標X,Y

点を打つ座標

色コード

描画する点の色
・色コードの説明はGCOLORを参照。
・省略時はGCOLORで設定した色を使用する。

描画方法

0 単純描画 #G_NORMAL
1 透明度が0以外の時単純描画 #G_NORMAL2
2 半透明描画 #G_ALPHA
3 描画先の透明度も考慮して半透明描画 #G_ALPHA2
4 加算描画 #G_ADD

・省略時は0。

GPSET 100,50

GLINE 始点X,始点Y,終点X,終点Y[,色コード[,描画方法]]

グラフィックページに直線を引く

引数

始点X,Y

始点座標

終点X,Y

終点座標

色コード

描画する線の色
・色コードの説明はGCOLORを参照。
・省略時はGCOLORで設定した色を使用する。

描画方法

0 単純描画 #G_NORMAL
1 透明度が0以外の時単純描画 #G_NORMAL2
2 半透明描画 #G_ALPHA
3 描画先の透明度も考慮して半透明描画 #G_ALPHA2
4 加算描画 #G_ADD

・省略時は0。

GLINE 0,0,399,239,RGB(0,255,255)

GCIRCLE 中心点X,中心点Y,半径[,色コード[,描画方法]]

グラフィックページに円を描く

引数

中心点X,Y

中心点座標

半径

円の半径(ドット) 1~

色コード

描画する円の色
・色コードの説明はGCOLORを参照。
・省略時はGCOLORで設定した色を使用する。

描画方法

0 単純描画 #G_NORMAL
1 透明度が0以外の時単純描画 #G_NORMAL2
2 半透明描画 #G_ALPHA
3 描画先の透明度も考慮して半透明描画 #G_ALPHA2
4 加算描画 #G_ADD

・省略時は0。

GCIRCLE 200,120,30

GCIRCLE 中心点X,中心点Y,半径,開始角,終了角,フラグ[,色コード[,描画方法]]

グラフィックページに円弧を描く

引数

中心点X,Y

中心点座標

半径

円の半径(ドット) 1~

開始角,終了角

円弧の書き始めの角度と書き終わりの角度
・時計の3時の方向が0度で、時計回りに角度が進む。
・0~360以外の値は0~360以内の値に丸められる。例えば-20は340と同じ意味。

フラグ

0 円弧
1 扇型

色コード

描画する円弧の色
・色コードの説明はGCOLORを参照。
・省略時はGCOLORで設定した色を使用する。

描画方法

0 単純描画 #G_NORMAL
1 透明度が0以外の時単純描画 #G_NORMAL2
2 半透明描画 #G_ALPHA
3 描画先の透明度も考慮して半透明描画 #G_ALPHA2
4 加算描画 #G_ADD

・省略時は0を指定した事になる。

GCIRCLE 200,120,30,0,45,1

GBOX 始点X,始点Y,終点X,終点Y[,色コード[,描画方法]]

グラフィックページに四角形を描く

引数

始点X,Y

始点座標

終点X,Y

終点座標

色コード

描画する四角形の色
・色コードの説明はGCOLORを参照。
・省略時はGCOLORで設定した色を使用する。

描画方法

0 単純描画 #G_NORMAL
1 透明度が0以外の時単純描画 #G_NORMAL2
2 半透明描画 #G_ALPHA
3 描画先の透明度も考慮して半透明描画 #G_ALPHA2
4 加算描画 #G_ADD

・省略時は0。

GBOX 0,0,399,239

GFILL 始点X,始点Y,終点X,終点Y[,色コード[,描画方法]]

グラフィックページに四角形を描いて塗りつぶす

引数

始点X,Y

始点座標

終点X,Y

終点座標

色コード

描画する四角形の色
・色コードの説明はGCOLORを参照。
・省略時はGCOLORで設定した色を使用する。

描画方法

0 単純描画 #G_NORMAL
1 透明度が0以外の時単純描画 #G_NORMAL2
2 半透明描画 #G_ALPHA
3 描画先の透明度も考慮して半透明描画 #G_ALPHA2
4 加算描画 #G_ADD

・省略時は0。

GFILL 0,0,399,239

GPAINT 開始点X,開始点Y[,塗りつぶし色]
GPAINT 開始点X,開始点Y[,塗りつぶし色,境界色]

グラフィックページを塗りつぶす

・境界色省略時、開始点座標にある色の範囲を塗る。

引数

開始点X,Y

塗りつぶしを開始する座標

塗りつぶし色

塗りつぶしに使用する色
・色コードの説明はGCOLORを参照。
・省略するとGCOLORで設定した色を使用する。

境界色

塗りつぶしの境界として見る色
・省略時は塗りつぶし色と異なる色をすべて境界として見る。

GPAINT 200,120,RGB(255,0,0),RGB(0,0,0)

GCOPY [転送元ページ,]始点X,始点Y,終点X,終点Y,転送先X,転送先Y,描画方法

他のグラフィックページから画像をコピーする

引数

転送元ページ

省略時 現在の描画ページ
0~5 GRP0~GRP5

始点X,Y 終点X,Y

コピー元範囲の始点座標と終点座標

転送先X,Y

コピー先範囲の始点座標

描画方法

0 単純描画 #G_NORMAL
1 透明度が0以外の時単純描画 #G_NORMAL2
2 半透明描画 #G_ALPHA
3 描画先の透明度も考慮して半透明描画 #G_ALPHA2
4 加算描画 #G_ADD

GCOPY 0,0,0,100,100,200,100 ,1

GCOPY 転送元ページ,始点X,始点Y,終点X,終点Y,転送先X,転送先Y,色コード,描画方法

他のグラフィックページから画像をコピーする

引数

転送元ページ

コピー元のグラフィックページ:0~5

始点X,Y 終点X,Y

コピー元範囲の始点座標と終点座標

転送先X,Y

コピー先範囲の始点座標

色コード

コピー元のピクセルと乗算する色コード

描画方法

0 単純描画 #G_NORMAL
1 透明度が0以外の時単純描画 #G_NORMAL2
2 半透明描画 #G_ALPHA
3 描画先の透明度も考慮して半透明描画 #G_ALPHA2
4 加算描画 #G_ADD

GCOPY 0,0,0,100,100,200,100,#C_RED,1

GSAVE [転送元ページ,][X,Y,幅,高さ,]転送先配列

画像を配列へコピーする

引数

転送元ページ

省略時 現在の描画ページ
0~5 GRP0~GRP5

X,Y,幅,高さ

コピー元範囲の始点X,Y座標,幅,高さ
・省略時は現在のクリッピング領域を使用する。

転送先配列

画像を格納する配列変数
※配列の要素が不足する場合、1次元配列に限り自動追加される

DIM WORK[0]
GSAVE 0,0,0,512,512,WORK

GLOAD [X,Y,幅,高さ,]画像配列,描画方法
GLOAD [X,Y,幅,高さ,]画像配列,色コード,描画方法

画像データを配列からグラフィックページにコピーする

引数

X,Y,幅,高さ

コピー先範囲の始点X,Y座標,幅,高さ
・省略時は現在のクリッピング領域を使用する。

画像配列

GSAVEによって画像データが格納された数値配列

色コード

画像配列内の画像データと乗算する色コード
・省略時は画像配列がそのまま使用される。

描画方法

0 単純描画 #G_NORMAL
1 透明度が0以外の時単純描画 #G_NORMAL2
2 半透明描画 #G_ALPHA
3 描画先の透明度も考慮して半透明描画 #G_ALPHA2
4 加算描画 #G_ADD

GLOAD 0,0,512,512,WORK,0
GLOAD WORK,#C_RED,0

GLOAD [X,Y,幅,高さ,]インデックス画像配列,パレット配列,描画方法
GLOAD [X,Y,幅,高さ,]インデックス画像配列,パレット配列,色コード,描画方法

画像データをインデックス画像配列から色変換しながらグラフィックページにコピーする

引数

X,Y,幅,高さ

コピー先範囲の始点X,Y座標,幅,高さ(ドット)
・省略時は現在のクリッピング領域を使用する。

インデックス画像配列

インデックス画像形式で保存された画像が格納された数値配列

パレット配列

パレットデータが格納された数値配列
・パレットデータは、インデックス画像内で使用する最大数より多い要素数の数値配列で、各要素にはインデクス画像内の数値に対応する色コードが入る。

色コード

画像配列内の画像データと乗算する色コード
・省略時は画像配列がそのまま使用される。

描画方法

0 単純描画 #G_NORMAL
1 透明度が0以外の時単純描画 #G_NORMAL2
2 半透明描画 #G_ALPHA
3 描画先の透明度も考慮して半透明描画 #G_ALPHA2
4 加算描画 #G_ADD

GLOAD 0,0,512,512,WORK,PALETTE,0
GLOAD WORK,PALETTE,#C_BLUE,1

GTRI X1,Y1,X2,Y2,X3,Y3[,色コード[,描画方法]]

グラフィックページに三角形を描いて塗りつぶす

引数

X1,Y1

頂点1

X2,Y2

頂点2

X3,Y3

頂点3

色コード

描画する三角形の色
・色コードの説明はGCOLORを参照。
・省略時はGCOLORで設定した色を使用する。

描画方法

0 単純描画 #G_NORMAL
1 透明度が0以外の時単純描画 #G_NORMAL2
2 半透明描画 #G_ALPHA
3 描画先の透明度も考慮して半透明描画 #G_ALPHA2
4 加算描画 #G_ADD

・省略時は0。

GTRI 200,10,300,200,100,200

GPUTCHR X,Y,"文字列"[,フォント種類[,色コード[,描画方法]]]
GPUTCHR X,Y,"文字列",フォント種類,スケールX,スケールY,色コード[,描画方法]

グラフィックページに文字を描く

引数

X,Y

表示座標

文字列

表示する文字列
・文字列のかわりに整数値を指定した場合、値を文字コードとして扱い、指定されたコードの文字1文字分の描画幅を計算する。

フォント種類

参照するフォントの種類。8または16を指定可能。
・省略時は16。

スケールX,Y

表示倍率:1~32767
・省略時は1,1(等倍)が指定される。

色コード

描画する文字の色
・色コードの説明はGCOLORを参照。
・省略時はGCOLORで設定した色を使用する。

描画方法

0 単純描画 #G_NORMAL
1 透明度が0以外の時単純描画 #G_NORMAL2
2 半透明描画 #G_ALPHA
3 描画先の透明度も考慮して半透明描画 #G_ALPHA2
4 加算描画 #G_ADD

・省略時は0。

GPUTCHR 10,10,"あいう" 
GPUTCHR 10,10,&H60

GPUTCHRP X,Y,"文字列"[,フォント種類[,色コード[,描画方法]]]
GPUTCHRP X,Y,"文字列",フォント種類,スケールX,スケールY,色コード[,描画方法[,文字間隔]]

グラフィックページにプロポーショナル文字を描く

引数

X,Y

表示座標

文字列

表示する文字列
・文字列のかわりに整数値を指定した場合、値を文字コードとして扱い、指定されたコードの文字1文字を描画する。

フォント種類

参照するフォントの種類。8または16を指定可能。
・省略時は16。

スケールX,Y

表示倍率:1~32767
・省略時は1,1(等倍)が指定される。

色コード

描画する文字の色
・色コードの説明はGCOLORを参照。
・省略時はGCOLORで設定した色を使用する。

描画方法

0 単純描画 #G_NORMAL
1 透明度が0以外の時単純描画 #G_NORMAL2
2 半透明描画 #G_ALPHA
3 描画先の透明度も考慮して半透明描画 #G_ALPHA2
4 加算描画 #G_ADD

・省略時は1。

文字間隔

文字と文字の間隔(ピクセル数):0~64
・省略時は1。

GPUTCHRP 10,10,"ABC" 
GPUTCHRP 10,10,&H55

GPUTCHRP("文字列"[,フォント種類[,スケールX[,文字間隔]]])

GPUTCHRPで文字列を描画する場合の描画幅を計算する

引数

文字列

表示幅を計算する文字列
・文字列のかわりに整数値を指定した場合、値を文字コードとして扱い、指定されたコードの文字1文字分の描画幅を計算する。

フォント種類

参照するフォントの種類。8または16を指定可能。
・省略時は16。

スケールX

表示倍率:1~32767
・省略時は1(等倍)が指定される。

文字間隔

文字と文字の間隔(ピクセル数):0~64
・省略時は1。

返値

GPUTCHRPで描画する際の描画幅(ピクセル)

W=GPUTCHRP("ABC")
W2=GPUTCHRP(&H55,16,1,2)

GARRAY(グラフィックページ)

グラフィックページの内容を表す整数配列を取得する

・グラフィックページを整数型2次元配列として直接読み書きが可能。
・書き込んだ結果を反映するにはGUPDATEを使用する。

引数

グラフィックページ

・配列を取得する対象のページを指定する。

0~5 GRP0~GRP5

返値

対象ページの内容を表す整数型2次元配列。

G=GARRAY(0)
G[0,0]=#C_WHITE
PRINT HEX$(G[100,100])

GUPDATE グラフィックページ[,始点X,始点Y,終点X,終点Y]

GARRAYによる書き込み内容を表示に反映させる

・通常のグラフィック描画命令では内部でGUPDATE相当の処理を行っているため、描画命令実行後にGUPDATEを使用しても何の効果もない。
・GUPDATEを使用しなくても、書き込み座標付近に他の描画命令で書き込みを行うと自動的に反映が行われる。

引数

グラフィックページ

反映を行うグラフィックページ

0~5 GRP0~GRP5

始点X,始点Y,終点X,終点Y

反映を行いたい四角形領域の始点と終点座標(各0~2047)
・座標指定はヒント情報として扱われ、領域からはみでた部分が更新される事もある。

G=GARRAY(0)
G[0,0]=#C_WHITE
GUPDATE 0

GSAMPLE グラフィックページ,サンプリングタイプ

グラフィックページのサンプリング方法を設定する

・サンプリングとは、スプライトやテキストスクリーンでグラフィックページから色を参照する際に、UV座標からグラフィックページのどの座標を参照するかを決める事。
・スプライト単位・テキストスクリーン単位・レイヤー単位に変更する事はできない 。

引数

グラフィックページ

設定を行うグラフィックページ: 0~5

サンプリングタイプ

0 ボーダー(0~2047以外のUV座標は透明色になる)
1 リピート(グラフィックページが0~2047の外にもずっと繰り返しているように扱う)

GSAMPLE(グラフィックページ)

グラフィックページのサンプリング方法を取得する

引数

グラフィックページ

設定を取得するグラフィックページ: 0~5

返値

現在設定されているサンプリングタイプ

スプライト

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(衝突判定)では、始点X,Yを指定しない場合のデフォルト値としてSPHOMEの値を使用する。詳細は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の倍数である必要がある。
・要素数/7個のスプライトテンプレートが0から順に定義される。

定義番号オフセット

定義開始番号を指定: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
bit4 16 レイヤーID

SPLINK 15,4
SPLINK 2,0,3

SPLINK(スプライト番号[,リンク種別])

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

・SPSET前に使うとエラー。

引数

スプライト番号

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

リンク種別

取得したいリンク先種別・リンクフラグ

0
1
2 兄弟
3 リンクフラグ

・省略時は0

返値

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

'スプライトPARENTのすべての子供をひろう
CHILD=SPLINK( PARENT,1 ) '一番最初の子供
WHILE CHILD!=-1
 CHILD=SPLINK( CHILD, 2 ) '他の子供を順番に取得
WEND

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前に使うとエラー。
・SPCOLで始点X,始点Yを指定しない場合、その時のSPHOMEの情報が始点X,始点Yとして使用される。その後SPHOMEを変更しても始点X,始点Yは追従しない。

引数

スプライト番号

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

スケール対応

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

SPCOL 3,1

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

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

・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

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

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

・SPHIT系の命令を使う前に必ず呼ぶこと。
・SPSET前に使うとエラー。
・SPCOLで始点X,始点Yを指定する場合、SPHOMEの情報は全く使用しない。

引数

スプライト番号

対象のスプライト番号: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)

レイヤー

LAYER レイヤーID[,合成タイプ[,合成色]]

レイヤーの設定を行う

引数

レイヤーID

設定を行うレイヤーのID:0~7

合成タイプ

0 合成しない(上書き)
1 単純合成
2 加算合成
3 乗算合成
4 スクリーン合成

・省略時は0(合成しない)を指定した事になる。

合成色

合成時にレイヤーに乗算する色コード
・色コードの説明はGCOLORを参照。
・省略時は&HFFFFFFFF(白=色を変えない)を指定した事になる。

LFILTER レイヤーID,フィルター種類,フィルターパラメーター
LFILTER レイヤーID[,0]

指定レイヤーにフィルターを適用させる

引数

レイヤーID

フィルターを設定するレイヤーのID:0~7

フィルター種類

0 フィルターなし
1 モザイク
2 ぼかし
3 水平ラスター変形
4 垂直ラスター変形
5 色変換

・省略時は0。

フィルターパラメーター

フィルター種類毎に異なるパラメーターを設定する。

1(モザイク) 整数(モザイクの大きさ)
2(ぼかし) 整数(ぼかし量)
3,4(ラスター変形) 実数配列(変形情報),整数(リピート)
5(色変換) 実数(色相),実数(彩度),実数(明度)

・モザイクの大きさは大きいほど画像が粗くなる。
・ぼかし量は大きいほど画像がぼける。
・変形情報配列は2次元の実数配列で、2次元目の要素数が2または4である必要がある。
・変形情報配列の要素数が2の場合、オフセット,スケール値が連続する。
・変形情報配列の要素数が4の場合、Xオフセット,Xスケール,Yオフセット,Yスケールが連続する。
・変形情報配列のオフセットは画面幅または高さを1.0として指定する。
・ラスター変形のリピートは変形結果が画像外に出た時に反対側を参照するかどうかを指定する。
・色変換の引数は描画色の各色要素に加算する値を指定する。HSV関数を参照。
・フィルター種類が0(なし)の場合はフィルターパラメータを指定できない。

LFILTER 1,1,4
LFILTER 1,2,8
LFILTER 1,5,180,-100,0
LFILTER 1,0

LFILTER(レイヤーID)

レイヤーに設定されているフィルター種類を取得する

引数

レイヤーID

フィルター種類を取得するレイヤーのID:0~7

返値

設定されているフィルター種類

FTYPE=LFILTER(1)

LCLIP レイヤーID,左上X座標,左上Y座標,右下X座標,右下Y座標
LCLIP レイヤーID

レイヤーのクリッピング設定を設定・解除する

・レイヤーに所属する表示要素(テキストスクリーンとスプライト)がクリッピング領域外に表示されなくなる。

引数

レイヤーID

クリッピング設定を行うレイヤーのID:0~7

左上X座標,左上Y座標,右下X座標,右下Y座標

クリッピング矩形を指定する左上座標と右下座標
・省略時はクリッピング設定を解除し、画面全体に表示されるようになる。

LCLIP レイヤーID OUT 左上X座標,左上Y座標,右下X座標,右下Y座標

レイヤーのクリッピング矩形座標を取得する

・クリッピング設定時に指定された座標を内部で整形しているため、設定座標と異なる座標が返ってくる事がある。

引数

レイヤーID

クリッピング設定を取得するレイヤーのID:0~7

返値

左上X座標,左上Y座標,右下X座標,右下Y座標

取得する左上座標と右下座標

LMATRIX レイヤーID,ホーム座標X,ホーム座標Y[,X,Y[,倍率X,倍率Y[,回転角]]]

レイヤー内の表示要素を描画する際に使用する変換行列を設定する

・引数から2D変換行列を生成し設定する。

引数

レイヤーID

変換行列を設定するレイヤーのID:0~7

ホーム座標X,ホーム座標Y

ホーム座標(座標基準点)
・ホーム座標はX,Y引数の座標基準点、回転やスケーリングの中心点として使用する。
・THOME,SPHOMEと同じような機能。

X,Y

表示座標
・ホーム座標X,YとX,Yとの関係は、「ホーム座標で設定したレイヤー上の座標を、X,Yで設定した画面上の座標に持って行く」と考えれば良い。
・TOFS,SPOFSと同じような機能。
・省略時は0,0を指定した事になる。

倍率X,倍率Y

拡大縮小の倍率を横(X)と縦(Y)に設定する
・ホーム座標X,Yを中心に拡大・縮小する。
・TSCALE,SPSCALEと同じような機能。
・省略時は1,1を指定した事になる。

回転角

回転角
・ホーム座標X,Yを中心に回転する。
・TROT,SPROTと同じような機能。
・省略時は0を指定した事になる。

LMATRIX レイヤーID,変換行列

レイヤー内の表示要素を描画する際に使用する変換行列を設定する

引数

レイヤーID

変換行列を設定するレイヤーのID:0~7

変換行列

変換行列の入っている実数配列
・要素数が16必要。
・全要素が単精度実数範囲内の値である必要がある。
・行列はOpenGLの変換行列に準じた形式で、射影行列まで含んでいる必要がある。

LMATRIX レイヤーID

レイヤーの変換行列をリセットする

引数

レイヤーID

変換行列をリセットするレイヤーのID:0~7

サウンド

BEEP [効果音番号[,[音程][,[音量][,[パンポット]]]]]

単純な警告音・効果音を再生する

引数

効果音番号

鳴らす音の種類

効果音番号 説明
0~156 プリセット音
224~255 ユーザ波形
256~383 BGM音源

・省略時は0。

音程

音程の値: -32768~32767 (100で半音)
・省略時は0。

音量

再生する音量: 0~127
・省略時は64。

パンポット

パンポット: 0(左)~64(中央)~127(右)
・省略時は64。

BEEP 3

BEEP([効果音番号[,[音程][,[音量][,[パンポット]]]]])

単純な警告音・効果音を再生する

引数

効果音番号

鳴らす音の種類

効果音番号 説明
0~156 プリセット音
224~255 ユーザ波形
256~383 BGM音源

・省略時は0。

音程

音程の値: -32768~32767 (100で半音)
・省略時は0。

音量

再生する音量: 0~127
・省略時は64。

パンポット

パンポット: 0(左)~64(中央)~127(右)
・省略時は64。

返値

ハンドル

発音後の停止・音量・ピッチ・パンポットを操作するためのハンドル:0~15

H=BEEP(152)

BEEPPAN ハンドル,パンポット

効果音のパンポットを変化させる

引数

ハンドル

BEEP命令を実行して取得したハンドル

パンポット

変化させるパンポットの値:0(左)~64(中央)~127(右)

H=BEEP(152)
WAIT 60
BEEPPAN H,0

BEEPPIT ハンドル,ピッチ

効果音の音程を変化させる

引数

ハンドル

BEEP命令を実行して取得したハンドル

ピッチ

変化させる音程の値:-32768~32767
・100で半音。

H=BEEP(152)
WAIT 60
BEEPPIT H,1200

BEEPSTOP [ハンドル[,フェード時間]]

効果音を停止する

引数

ハンドル

BEEP命令を実行して取得したハンドル
・省略時は全効果音を停止する。

フェード時間

秒で指定する
・実数での指定が可能。
・0で即時停止する。
・省略時は0。

BEEPSTOP

H=BEEP(152)
WAIT 60
BEEPSTOP H

BEEPVOL ハンドル,音量

効果音の音量を変化させる

引数

ハンドル

BEEP命令を実行して取得したハンドル

音量

変化させる音量の値: 0~127

H=BEEP(152)
WAIT 60
BEEPVOL H,16

BGMCLEAR [ユーザー定義曲番号]

ユーザー定義音楽を消去する

引数

ユーザー定義曲番号

曲番号:128~255
・省略時はすべての定義を消去する。

BGMCLEAR

BGMCONT [トラック番号[,フェード時間]]

一時停止中の音楽再生を再開する

・一時停止にはBGMPAUSEを利用。

引数

トラック番号

再生するトラック番号:0~15
・省略時は全トラックを再開させる。

フェード時間

秒で指定する
・実数での指定が可能。
・0で即時再開する。
・省略時は0。

BGMCONT

BGMPITCH [トラック番号,]ピッチ

再生している音楽の基準音程を変化させる

引数

トラック番号

対象のトラック番号: 0~15
・省略時は全トラックが対象。

ピッチ

変化させる音程の値:-32768~32767
・100で半音。

BGMPITCH 0,100

BGMPLAY [トラック番号,]曲番号[,音量][,フェード時間]

指定した曲の再生を開始する

引数

トラック番号

再生するトラック番号:0~15
・省略時は0。

曲番号

・プリセット音源(0~73)。
・ユーザー定義(128~255)。

音量

・再生する音量:0~127。

フェード時間

・フェードインする時間: 0~32767 秒。

BGMPLAY 128

BGMPLAY MML文字列

指定したMMLデータの再生を開始する

・MMLによる再生はトラック0で行われる。
・ユーザー定義曲番号255がMMLによる曲に書き換わる。

引数

MML文字列

コマンドの文字列

BGMPLAY "T120O4L4CC8D8EE8F8GA8G8E2" 

BGMPAUSE [トラック番号[,フェード時間]]

音楽再生を一時停止する

・再開にはBGMCONTを利用する。

引数

トラック番号

再生するトラック番号:0~15
・省略時は全トラック停止させる。

フェード時間

秒で指定する
・実数での指定が可能。
・0で即時停止。
・省略時は0。

BGMPAUSE

BGMSET ユーザー定義曲番号,MML文字列

ユーザー定義音楽を定義する

・定義した音楽はBGMPLAYで再生可能。

引数

ユーザー定義曲番号

ユーザ定義曲番号:128~255

MML文字列

コマンドの文字列

BGMSET 128,"CDEFG" 

BGMSETD ユーザー定義曲番号,@ラベル文字列

ユーザー定義音楽を事前定義する

・定義した音楽はBGMPLAYで再生可能。
・DATA命令を利用してMMLを内部に登録(DATA "CDEFGAB")。
・DATAの終端には数値の0を定義しておくこと。

引数

ユーザー定義曲番号

ユーザー定義曲番号:128~255

@ラベル文字列

DATAでMML文字列が登録されたラベルまたはラベル文字列

BGMSETD 128,"@MMLTOP" 

BGMSTOP [トラック番号[,フェード時間]]

音楽再生を停止する

引数

トラック番号

対象のトラック番号:0~15
・省略時は全トラック停止する。

フェード時間

秒で指定する
・実数での指定が可能。
・0で即時停止。
・省略時は0。

BGMSTOP

BGMVAR トラック番号,変数番号,値
BGMVAR トラック番号,変数番号 OUT 変数

BGMトラック変数の値を設定・取得する

引数

トラック番号

トラック番号:0~15

変数番号

値を設定・取得する変数の番号:0~7

返値

取得した変数の値

BGMVAR 0,1,2
V=BGMVAR(0,1)

BGMVOL [トラック番号,]音量

指定トラックの音量を設定する

引数

トラック番号

再生するトラック番号:0~15
・省略時は0。

音量

設定する音量:0~127

BGMVOL 0,64

BGMWET [トラック番号,]ウェット

指定トラックのエフェクタ効果量を設定する

・エフェクタがOFFの時は音量が変化する。エフェクタをONにして使用のこと。

引数

トラック番号

設定するトラック番号:0~15
・省略時は0。

ウェット

設定するエフェクタ効果量:0(ドライ)~127(ウェット)

BGMWET 0,64

EFCEN 状態
EFCEN OUT 変数

エフェクタの状態を設定・取得する

引数

状態

0 #EFCOFF OFF
1 #EFCON ON

返値

0: OFF
1: ON

EFCEN 0
S=EFCEN()

EFCSET プリセット番号

エフェクタを設定する(プリセット指定)

引数

プリセット番号

0 #EFCOFF OFF
1 #EFCBATH 風呂
2 #EFCCAVE 洞窟
3 #EFCSPACE 宇宙

EFCSET #EFCSPACE

EFCSET 反射音モード,反射音音量,反射音時間,残響音モード,残響音音量,残響音時間,高音減衰率,残響音音色,入力音量

エフェクタを設定する(詳細設定)

引数

反射音モード

0 #EFCREFSROOM 小さい部屋
1 #EFCREFLROOM 大きい部屋
2 #EFCREFHALL ホール
3 #EFCREFCAVE 洞窟
4 #EFCREFNONE 反射音なし

反射音音量

反射音の音量:0.0~1.0

反射音時間

反射音が減衰する時間:0~300(ミリ秒)

残響音モード

0 #EFCREVROOM 部屋
1 #EFCREVHALL ホール
2 #EFCREVMETAL 金属製の回廊
3 #EFCREVCAVE 洞窟
4 #EFCREVREV リバーブ

残響音音量

残響音の音量:0.0~1.0

残響音時間

残響音の減衰時間:100~20000(ミリ秒)

高音減衰率

残響音の高音の減衰率:0.1~1.0(値が小さいほど急速に高音が減衰する)

残響音音色

残響音の音色パラメータ:0.0~1.0

入力音量

エフェクタの入力音量:0.0~1.0

EFCSET #EFCREFSROOM,1,100,#EFCREVROOM,1,20000,1,0.01,0.5

EFCWET BEEPウェット,BGMウェット,TALKウェット,PCMウェット

エフェクタのウェットを設定する

・エフェクタがOFFの時は音量が変化する。エフェクタをONにして使用のこと。

引数

BEEPウエット

BEEPに対するエフェクタの効果:0(ドライ)~127(ウェット)

BGMウエット

BGMPLAYに対するエフェクタの効果:0(ドライ)~127(ウェット)

TALKウエット

TALKに対するエフェクタの効果:0(ドライ)~127(ウェット)

PCMウエット

PCMSTREAMに対するエフェクタの効果:0(ドライ)~127(ウェット)

EFCWET 64,64,64,64
EFCWET 0,0,127,0

PCMCONT

PCM再生を再開する

PCMCONT

PCMPOS 再生位置

PCM再生位置を設定する

・一定周期で行われるPCMデータの送出が次回はどの配列インデックスから行われるか設定する。

引数

再生位置

PCMSTREAMで指定した配列のインデックス

PCMPOS 1024

PCMPOS OUT 変数

PCM再生位置を取得する

・一定周期で行われるPCMデータの送出が次回はどの配列インデックスから行われるかを返す。

返値

PCMSTREAMで指定した配列のインデックス

PCMPOS OUT P

PCMSTOP

PCM再生を停止する

PCMSTOP

PCMSTREAM PCMデータ配列[,サンプリング周波数]

PCM再生を開始する

引数

PCMデータ配列

PCMデータが収容されている配列。1次元配列はモノラル、2次元配列はステレオ音声として再生される。
配列はリングバッファとして扱われ、再生しながら書き換えることが可能。

サンプリング周波数

再生するデータのサンプリング周波数(Hz):1~192000
・省略時は48000。

DIM PCMDATA[2,48000]
PCMSTREAM PCMDATA,48000

PCMSTREAM PCMデータ配列L,PCMデータ配列R[,サンプリング周波数]

PCM再生を開始する

引数

PCMデータ配列L

ステレオ音声の左側のPCMデータが収容されている配列。
配列はリングバッファとして扱われ、再生しながら書き換えることが可能。

PCMデータ配列R

ステレオ音声の右側のPCMデータが収容されている配列。
配列はリングバッファとして扱われ、再生しながら書き換えることが可能。

サンプリング周波数

再生するデータのサンプリング周波数(Hz):1~192000
・省略時は48000。

DIM PCML[48000],PCMR[48000]
PCMSTREAM PCML,PCMR,48000

PCMVOL チャンネル,音量[,サンプル数]

PCM音量を設定する

引数

チャンネル

音量を設定するチャンネルを指定

0 #PVLEFT
1 #PVRIGHT

音量

設定する音量:-32767~32767(負の値を指定すると位相が逆になる)

サンプル数

設定する音量になるまでの出力サンプル数
・省略時は0。

PCMVOL 0,0,48000

PCMVOL [チャンネル,]音量

PCM音量を設定する

引数

チャンネル

音量を設定するチャンネルを指定

0 #PVLEFT
1 #PVRIGHT

・省略時は両方。

音量

設定する音量:-32767~32767(負の値を指定すると位相が逆になる)

PCMVOL 16384

PCMVOL OUT 左音量[,右音量]

PCM音量を取得する

返値

左音量

現在の左チャンネル又はモノラル音量: -32767~32767

右音量

現在の右チャンネルの音量: -32767~32767

PCMVOL OUT L,R

RECCHK OUT 状態

RECSTARTによる録音の状態を取得

返値

録音完了/停止=0,録音中=1

RECSTART 10
WHILE RECCHK():WEND

RECDATA サンプル位置 OUT 左,右

RECSTARTで録音されたサンプル値を取り出す

引数

サンプル位置

0~RECLEN()-1

返値

左チャンネルのサンプル値

右チャンネルのサンプル値

RECSTART 10
WHILE RECCHK():WEND
FOR I=0 TO RECLEN()-1
  RECDATA I OUT L,R
NEXT

RECLEN()

RECSTARTで確保されたバッファのサンプル数を返す

返値

バッファのサンプル数

RECSTART 10
? RECLEN() '480000

RECPOS()

RECSTARTで録音される現在のサンプル位置を返す

返値

サンプル位置

RECSTART 10
WHILE RECCHK()
 ? RECPOS
WEND

RECSAVE 配列[,サンプル数][,サンプル位置]

RECSTARTで録音したサンプル値を配列に取り出す

引数

配列

1次元配列又は2次元配列を指定する。要素数は自動で調整される
1次元配列の時は左右のサンプルの平均値。2次元配列の時は[0,x]に左チャンネル、[1,x]に右チャンネルのサンプル値

サンプル数

取り出すサンプルの数
・省略時はRECPOS()と同じ値。

サンプル位置

サンプルを取り出す先頭位置
・省略時は0。

RECSTART 5
BGMPLAY 3
WHILE RECCHK():WEND
BGMSTOP
DIM BUF[2,1]
RECSAVE BUF
WAIT 60
PCMSTREAM BUF,48000
INPUT A$

RECSTART 時間

BEEP/BGMPLAY/TALKで再生されている音を録音

・サンプリング周波数48KHzで、引数で与えた時間のあいだ録音を行う。
・指定時間後に録音が停止する。
・途中で録音を停止したい時はRECSTOPを用いる。

引数

時間

録音する秒数 0.1~60

RECSTART 5
BGMPLAY 3
WHILE RECCHK():WEND
BGMSTOP
DIM BUF[2,1]
RECSAVE BUF
WAIT 60
PCMSTREAM BUF,48000
INPUT A$

RECSTART

BEEP/BGMPLAY/TALKで再生されている音を録音

・サンプリング周波数48KHzで録音する(時間無制限)。
・バッファは5秒間分用意される。
・録音を停止するときはRECSTOPを用いる。

LENGTH=48000/3
DIM BUF[2,LENGTH]
PCMSTREAM BUF,48000
PCMVOL 0,16384
PCMVOL 1,16384
RECSTART
BGMPLAY 1
PPOS=0
WPOS=0
LOOP
 NPOS=RECPOS()
 IF PPOS!=NPOS THEN
  FOR I=PPOS to NPOS-1
   RECDATA I OUT L,R
   BUF[0,WPOS]=L
   BUF[1,WPOS]=R
   WPOS=(WPOS+1) mod LENGTH
  NEXT
  PPOS=NPOS
 ENDIF
ENDLOOP

RECSTOP

RECSTARTによる録音を停止

RECSTART 10
WAIT 60*5
RECSTOP

SNDMSBAL バランス[,フェード時間]

メインインタプリタ/サブインタプリタの音量バランスを設定する

・サブプログラム内でのみ設定可能。

引数

バランス

設定するバランス:0(サブ側のみ)~64(メイン/サブ均等)~127(メイン側のみ)

フェード時間

設定したバランスになるまでの時間:0~32767(秒)

SNDMSBAL 0,3.5

SNDMSBAL OUT バランス

メインインタプリタ/サブインタプリタの音量バランスを取得する

返値

現在のバランス

SNDMSBAL OUT B

SNDMVOL 音量[,フェード時間]

サウンド全体の音量を設定する

・サブプログラムからの設定は無視される。

引数

音量

設定する音量: 0~127

フェード時間

設定した音量になるまでの時間:0~32767(秒)

SNDMVOL 0,1.5

SNDMVOL OUT 音量

サウンド全体の音量を取得する

返値

現在の音量(フェード中であれば指定した時間内で変化する)

V=SNDMVOL()

SNDSTOP

すべての音の発声を停止する

'BGM/BEEP/TALK
SNDSTOP

TALK 文字列

与えた文字列に従って音声合成を開始する

引数

ひらがな/カタカナ/句読点などの文字列 又は $ から始まる音素文字列

  a b d e f g h i j k m n o p q(ん) r s t u w y z
  by ch cl(っ:はねる音) dy gy hy ky my ny py sh ts
  #(0.1秒無音)

上記に加えて < で始まり > で終わる制御文字列

<S数値> スピード: 0(速)~1024(遅) 標準:128
<P数値> ピッチ: 0(高)~1024(低) 標準:128
<V数値> 音量: 0(小)~128(大) 標準:128

TALK "<S128>こんにちわ。わたしは、プチコンフォーです" 
TALK "$<S128>koqnichiwa######watashiwa##puchikoqfoodesu" 

TALKSTOP

音声合成を停止する

TALKSTOP

WAVSET 楽器番号,アタック,ディケイ,サスティン,リリース,定義文字列[,基準音程]

楽器音の波形を設定する

引数

楽器番号

波形を設定する楽器番号:224~255

アタック

音量が大きくなり最大になるまでの時間:0~127(値が大きくなるほど早い)

ディケイ

音量が最大値から小さくなり一定になるまでの時間:0~127(値が大きくなるほど早い)

サスティン

音を伸ばしている時の音量:0~127(値が大きくなるほど大きい)

リリース

音量が小さくなって0になるまでの時間:0~127(値が大きくなるほど早い)
・リリースを0にするとBGMSTOPで再生音が停止できなくなるが、SNDSTOP命令で強制停止ができる。

定義文字列

"00"~"FF" を8ビットの1サンプルとして連続して記述(128が減算され -128~127 の値として扱われる)
16,32,64,128,256,512サンプルで指定

基準音程

定義した波形の音程のノート番号を指定。
・省略時は69("O4A":オクターブ4のラ)。

WAVSET 224,127,0,0,127,"FF00"*8,69
BGMPLAY "@224O4A1" 

WAVSETA 楽器番号,アタック,ディケイ,サスティン,リリース,配列[,基準音程][,波形先頭][,波形終端]

楽器音の波形を設定する

・3号互換モード。
・サンプル長と基準音程によっては正しい音程が出ないことがある。

引数

楽器番号

波形を設定する楽器番号:224~255

アタック

音量が大きくなり最大になるまでの時間:0~127(値が大きくなるほど早い)

ディケイ

音量が最大値から小さくなり一定になるまでの時間:0~127 (値が大きくなるほど早い)

サスティン

音を伸ばしている時の音量:0~127(値が大きくなるほど大きい)

リリース

音量が小さくなって0になるまでの時間:0~127(値が大きくなるほど早い)
・リリースを0にするとBGMSTOPで再生音が停止できなくなるが、SNDSTOP命令で強制停止ができる。

配列

波形が格納された1次元配列
・1要素を8ビットの1サンプルとして扱う。(128が減算され -128~127 の値として扱われる)

基準音程

定義した波形の音程のノート番号を指定。
・省略時は69("O4A":オクターブ4のラ)。

波形先頭

波形の先頭位置のインデックスを指定。
・省略時は0。

波形終端

波形の終端位置のインデックスを指定。
・省略時は配列の末尾。

DIM W[2048]
WAVSETA 224,127,0,0,127,W,69,0,2047
BGMPLAY "@224O4A1" 

WAVSETA 楽器番号,アタック,ディケイ,サスティン,リリース,配列,基準音程,ループ先頭,ループ終端,サンプル周波数[,オフセット][,BEEPループフラグ]

楽器音の波形を設定する

・サウンドのメモリ容量が許す限りの長さの波形を収容可能(サンプル周波数 48000Hz で 80秒程度)。
・ループ設定、サンプル周波数の指定が可能。
・サンプル長と基準音程、サンプル周波数によっては正しい音程が出ないことがある。

引数

楽器番号

波形を設定する楽器番号:224~255

アタック

音量が大きくなり最大になるまでの時間:0~127(値が大きくなるほど早い)

ディケイ

音量が最大値から小さくなり一定になるまでの時間:0~127 (値が大きくなるほど早い)

サスティン

音を伸ばしている時の音量:0~127(値が大きくなるほど大きい)

リリース

音量が小さくなって0になるまでの時間:0~127(値が大きくなるほど早い)
・リリースを0にするとBGMSTOPで再生音が停止できなくなるが、SNDSTOP命令で強制停止ができる。

配列

波形が格納された1次元配列
・1要素を符号付き16ビットの1サンプルとして扱う。

基準音程

定義した波形の音程のノート番号
・省略時は69("O4A":オクターブ4のラ)。

ループ先頭

波形のループ先頭位置のインデックス(オフセットが加味される)
・省略時は0。

ループ終端

波形のループ終端位置のインデックス(オフセットが加味される)
・省略時は配列の末尾。

サンプル周波数

波形のサンプル周波数(単位はHz): 1~96000。
・省略時は 28160。

オフセット

配列の参照開始位置のインデックス
・省略時は0。

BEEPループフラグ

波形をBEEPで再生したときにループするかを指定する
・省略時は0(ループしない)。

DIM W[2048]
WAVSETA 224,127,0,0,127,W,69,1024,2047,44100,0,#false
BGMPLAY "@224O4A1" 

BGMCHK [トラック番号] OUT 変数

指定したトラックの音楽の再生状態を返す

引数

トラック番号

再生状態を取得したいトラックの番号:0~15
・省略時は0。

返値

0:再生していない
1:再生中

R=BGMCHK(1)
PRINT R

CHKMML MML文字列 OUT 変数

MML文字列の内容が正常にMMLとして解釈できるかどうかを返す

引数

MML文字列

コマンドの文字列

返値

-1:正常
0:エラー(解釈エラーになった文字列位置)

R=CHKMML("T120O4L4CC8D8EE8F8GA8G8E2")
PRINT R

TALKCHK OUT 変数

音声合成の状態を調査する

返値

FALSE=停止中、TRUE=再生中

RET=TALKCHK()

高度な演算

BIQUAD 出力配列(OUT),入力配列(IN),フィルタ係数配列(FP)

双二次フィルタを適用する

・指定された配列の全要素に対して以下の演算を行う。(0 <= t < len(IN))
OUT[t]=FP[0]*IN[t]+FP[1]*IN[t-1]+FP[2]*IN[t-2]-FP[3]*OUT[t-1]-FP[4]*OUT[t-2]

・1次元配列を指定するとモノラル、2次元配列を指定するとステレオ扱いになる。

※配列のインデックスが負の場合は、モノラル又は左チャンネルはFP[5..8]、右チャンネルはFP[9..12]の値を用いる。
 FP[5..12]の値は実行ごとに更新される。

・ローパスフィルタなど、主要な特性のフィルタ係数配列は BQPARAM 命令で得ることができる。

引数

出力配列

フイルタを適用した結果が格納される配列

入力配列

フイルタを適用する信号が格納されている配列

フィルタ係数配列

フィルタ係数が格納されている配列
・配列の要素数は13以上でなければならない。

DIM OD[2,1000],ID[2,1000],FP[13]
BQPARAM FP,#BQLPF,48000,8000,1/SQR(2)
BIQUAD OD,ID,FP 

BQPARAM フィルタ係数配列,フィルタ種別,サンプリング周波数,カットオフ周波数,Q値または帯域幅[,増幅率]

双二次フィルタのフィルタ係数を計算する

引数

フィルタ係数配列

フィルタ係数が格納される配列(長さが13以上であること)
・指定した配列の[5..12]は、この命令を実行しても変更されない

フィルタ種別

0 #BQAPF オールパスフィルタ カットオフ周波数付近の位相のみが変化する
1 #BQLPF ローパスフィルタ カットオフ周波数以下が通過する
2 #BQHPF ハイパスフィルタ カットオフ周波数以上が通過する
3 #BQBPF バンドパスフィルタ カットオフ周波数を中心とした指定の周波数帯域が通過する
4 #BQBSF バンドストップフィルタ カットオフ周波数を中心とした指定の周波数帯域を遮断する
5 #BQLSF ローシェルフフィルタ カットオフ周波数以下を指定の増幅率で増幅する
6 #BQHSF ハイシェルフフィルタ カットオフ周波数以上を指定の増幅率で増幅する
7 #BQPEQ ピーキングイコライザ カットオフ周波数を中心とした指定の周波数帯域を指定の増幅率で増幅する

サンプリング周波数

入力信号のサンプリング周波数
・0はエラーとなる。

カットオフ周波数

フィルタのカットオフ周波数

Q値または帯域幅

フィルタ種別 BPF/BSF/PEQでは帯域幅(単位:オクターブ)、それ以外ではQ値(フィルタ特性のなだらかさ)として扱う
・0はエラーとなる。

増幅率

フィルタの増幅率(単位:db)。フィルタ種別 #BQLSF #BQHSF #BQPEQ の時に記述が必要。

DIM OD[1000],ID[1000],FP[13]
BQPARAM FP,#BQLSF,48000,8000,1/SQR(2),3.0
BIQUAD OD,ID,FP 

FFT 出力実数部配列,出力虚数部配列,入力実数部配列,入力虚数部配列[,窓関数値配列]

複素数配列に対してフーリエ変換を行う

・指定する配列は全て同じ要素数で、要素数は2のn乗でなければならない。
・出力と入力の配列は同一でもよい。

引数

出力実数部配列,出力虚数部配列

演算結果が収容される実数部と虚数部の複素数配列

入力実数部配列,入力虚数部配列

演算する実数部と虚数部の複素数配列

窓関数値配列

窓関数の値が収容されている配列
・指定した場合、入力の複素数配列に同一インデックスの要素値を乗算した後、フーリエ変換を行う。
・窓関数値配列はFFTWFN命令で得ることもできる。

DIM iR[1024],iI[1024],WF[1024]
DIM oR[1024],oI[1024]
FFTWFN WF,3
FFT oR,oI,iR,iI,WF 

IFFT 出力実数部配列,出力虚数部配列,入力実数部配列,入力虚数部配列

複素数配列に対してフーリエ逆変換を行う

・指定する配列は全て同じ要素数で、要素数は2のn乗でなければならない。
・出力と入力の配列は同一でもよい。

引数

出力実数部配列,出力虚数部配列

演算結果が収容される実数部と虚数部の複素数配列

入力実数部配列,入力虚数部配列

演算する実数部と虚数部の複素数配列

DIM iR[1024],iI[1024]
DIM oR[1024],oI[1024]
IFFT oR,oI,iR,iI 

FFTWFN 配列,窓関数種別

窓関数値配列を得る

引数

配列

窓関数値を収容する配列

窓関数種別

0 #WFRECT 矩形窓
1 #WFHAMM ハミング窓
2 #WFHANN ハニング窓
3 #WFBLKM ブラックマン窓

DIM WF[1024]
FFTWFN WF,#WFHAMM

ARYOP 演算タイプ,結果格納配列,パラメータ1,パラメータ2[,パラメータ3]

配列内要素の一括演算を行う

・配列の先頭から、結果格納配列の末尾まで、それぞれの要素間で演算タイプで指定された演算を行い、結果格納配列に演算結果を格納する。
・パラメータ配列の要素数が結果格納配列の要素数と異なる場合、配列の末尾まで到達したら配列の先頭に戻ってくりかえし参照する。

引数

演算タイプ

0 #AOPADD 加算(p1+p2)
1 #AOPSUB 減算(p1-p2)
2 #AOPMUL 乗算(p1*p2)
3 #AOPDIV 除算(p1/p2)
4 #AOPMAD 積和(p1*p2+p3)
5 #AOPLIP 線形補間(p1*p3+p2*(1-p3))
6 #AOPCLP クランプ(p1の値をp2<=x<=p3の範囲内に丸める)

結果格納配列

演算結果を格納する数値配列

パラメータ1,パラメータ2,パラメータ3

パラメータ1,2,3には、数値配列、もしくは通常数値を指定できる
・通常数値を指定した場合すべての要素演算にその数値が使用される。

ソースコード操作

PRGEDIT プログラムスロット[,行番号]

エディタ上のソースコード操作を開始する

・PRGEDIT命令を実行すると、エディタの折り返しモードが強制的にOFFになる。
・次の場合、PRGEDIT状態が解除され、再度PRGEDITの実行が必要となる。
 ・LOAD命令やNEWコマンド等で対象スロットの中身が変更された場合
 ・プログラムをRUNした場合
 ・エディタで折り返しモードをONにした場合

引数

プログラムスロット

・操作するプログラムスロット:0~5。
・現在実行中のスロットを指定するとエラー。

行番号

・操作対象とする行(カレント行)。
・省略時は先頭行がカレント行となる。
・行番号に-1を指定した場合、最終行がカレント行となる。

PRGEDIT 0

PRGEDIT()
PRGEDIT OUT [プログラムスロット,]行番号

操作中のソースコード情報を取得する

・関数形式で使用すると行番号を返す。
・先にPRGEDITでソースコード操作を開始していないとエラー。

返値

プログラムスロット

・操作中のプログラムスロット。

行番号

・操作中のソースコード行番号。

PRGEDIT OUT SLOT,LINE
LINE=PRGEDIT()

PRGGET$([自動シークフラグ])

カレント行1行分の文字列を取得する

引数

自動シークフラグ

・1の場合、PRGGETを呼び出すとカレント行を取得後自動的に1行下に移動させる。これによりPRGGETを連続して呼び出すだけでソースコードを1行ずつ取得できる 。
・0の場合カレント行は自動で移動しない。カレント行の移動はPRGSEEKで行う必要がある。
・省略時は1が指定される。

返値

・カレント行のソース文字列(範囲外の場合、空文字列)。

A$=PRGGET$()

PRGSEEK [移動方向]
PRGSEEK([移動方向])

カレント行を1行前後に移動させる

引数

移動方向

1 1行下に移動する
-1 1行上に移動する

・省略時は1。

返値

・関数形式で使用した場合、移動できた場合は1を、先頭行または最終行から先に移動しようとしてできなかった場合は0を返す。

R=PRGSEEK(1)

PRGSET 文字列

カレント行の内容を指定文字列に置き換える

・PRGGET$が空文字列を返す場合は行追加。

引数

文字列

カレント行を置き換える文字列

PRGSET "'Comment" 

PRGINS 文字列[,フラグ]

カレント行へ文字列を1行挿入する

・改行コードCHR$(10)を含む文字列は複数行の挿入。

引数

文字列

・挿入するソース文字列。

フラグ

1 カレント行の後方に挿入する
0 カレント行の前方へ挿入する

・省略時は0。

PRGINS "PRINT "+CHR$(34)+"HELLO"+CHR$(34)

PRGDEL [削除行数]

カレント行を削除する

引数

削除行数

削除したい行の数
・マイナス値を入れた場合全体を削除する。
・省略時は1が指定される。

PRGDEL

PRGSIZE([プログラムスロット[,取得する値のタイプ]])

ソースコードの行数を取得する

引数

プログラムスロット

行数を取得するプログラムスロット:0~5
・省略時は現在実行中のプログラムスロットを指定した事になる。

取得する値のタイプ

0 行数(デフォルト)
1 文字数
2 空き文字数

返値

タイプに応じた値

A=PRGSIZE(0)

PRGNAME$([プログラムスロット])

プログラムのファイル名を取得する

・LOAD/SAVE命令で指定したファイル名が返る。

引数

プログラムスロット

ファイル名を取得するプログラムスロット:0~5
・省略時は現在実行中のプログラムスロットを指定した事になる。

返値

指定プログラムスロットに読み込まれているプログラムのファイル名

PRINT PRGNAME$(0)

サブプログラム

XSUBSCREEN 表示オフセットX,表示オフセットY,幅,高さ

サブプログラム画面の表示サイズを指定する

・サブプログラム内でのみ意味を持つ命令。メインプログラムやダイレクトモードから使用しても何も起きない。
・サブプログラムはこの命令を実行するまで画面表示ができない。
・XSUBSCREENはサブ画面の外形を設定する命令で、その中のBASIC画面解像度は別途XSCREENで設定する必要がある。

引数

表示オフセットX, 表示オフセットY

サブ画面のメイン画面上での表示オフセット:-32768~32767

幅, 高さ

サブ画面の表示サイズ 幅:1~1280, 高さ:1~720

XSUBSCREEN 0

サブプログラム画面の表示をやめる

・サブプログラム内でのみ意味を持つ命令。メインプログラムやダイレクトモードから使用しても何も起きない。
・この命令を実行するとサブプログラムが画面から消える。

引数

0

表示を消す場合、引数は0を指定する

XSUBSCREEN OUT 表示オフセットX,表示オフセットY,幅,高さ

サブプログラム画面の表示オフセットを取得する

・サブプログラム内でのみ意味を持つ命令。メインプログラムやダイレクトモードから使用すると 0,0 が返る。

返値

表示オフセットX, 表示オフセットY

サブ画面のメイン画面上での表示オフセット

幅,高さ

サブ画面の表示サイズ

ENVSTAT 状態

メインインタプリタの状況を設定する

・サブプログラム内でのみ意味を持つ命令。メインプログラムやダイレクトモードから使用しても何も起きない。

引数

状態

設定するメインインタプリタの状態
・0のみ指定可能。
・現在の状態が3,4の場合は設定されない。

ENVSTAT()

メインインタプリタの状況を取得する

返値

0 ダイレクトモードで待機中
1 実行中断中
2 エラーで実行停止
3 プログラム実行中
4 プログラム編集中

ENVSTAT OUT ステータス,実行スロット,編集スロット

メインインタプリタの状況を取得する

返値

ステータス

0 ダイレクトモードで待機中
1 実行中断中
2 エラーで実行停止
3 プログラム実行中
4 プログラム編集中

実行スロット

現在の実行スロット

編集スロット

現在の編集スロット

ENVSTAT OUT ステータス,エラー番号,エラー発生引数番号,エラー発生スロット,エラー発生文字位置,エラー発生行

メインインタプリタの状況を取得する

返値

ステータス

0 ダイレクトモードで待機中
1 実行中断中
2 エラーで実行停止
3 プログラム実行中
4 プログラム編集中

エラー番号

エラーが発生していた場合、0以外の値が返る

エラー発生引数番号

エラー発生時に発生した引数が分っている場合、正の値が返る

エラー発生スロット

エラーが発生していた場合、発生したプログラムスロットが返る

エラー発生文字位置

エラーが発生していた場合、発生したソースコード上の先頭からの文字位置が返る

エラー発生行

エラーが発生していた場合、発生したソースコード上の行番号が返る

ENVLOAD 0,メインID,サブID

メインインタプリタ上のプログラムスロットの内容ををサブインタプリタ側のプログラムスロットにコピーする

・サブインタプリタでのみ有効な命令。

引数

0

プログラムスロットをコピーする場合0を指定する

メインID

コピー元のメインインタプリタのプログラムスロット

サブID

コピー先のサブインタプリタのプログラムスロット

ENVLOAD 1,メインID,サブID

メインインタプリタ上のグラフィックページデータをサブインタプリタ側にコピーする

・サブインタプリタでのみ有効な命令。

引数

1

グラフィックページをコピーする場合1を指定する

メインID

コピー元のメインインタプリタのグラフィックページ

サブID

コピー先のサブインタプリタのグラフィックページ

ENVLOAD 2,メインID,サブID

メインインタプリタ上のSPDEF定義をサブインタプリタ側にコピーする

・サブインタプリタでのみ有効な命令。

引数

2

SPDEF定義をコピーする場合2を指定する

メインID

コピー元のメインインタプリタのSPDEF定義番号

サブID

コピー先のサブインタプリタのSPDEF定義番号

ENVSAVE 1,サブID,メインID

サブインタプリタ上のグラフィックページデータをメインインタプリタ側にコピーする

引数

1

グラフィックページをコピーする場合1を指定する

サブID

コピー元のサブインタプリタのグラフィックページ

メインID

コピー先のメインインタプリタのグラフィックページ

ENVSAVE 2,サブID,メインID

サブインタプリタ上のSPDEF定義をメインインタプリタ側にコピーする

引数

2

SPDEF定義をコピーする場合2を指定する

サブID

コピー元のサブインタプリタのSPDEF定義番号

メインID

コピー先のメインインタプリタのSPDEF定義番号

ENVINPUT$([履歴番号])

メインインタプリタのコンソール入力行、もしくは入力履歴の内容を取得する

引数

履歴番号

取得する入力履歴の番号。大きいほど過去の履歴となる:(0~32)
・0を指定すると、履歴ではなく現在入力中のコンソール行を取得する。
・省略時は0。

返値

入力行、もしくは指定入力履歴の内容文字列

ENVTYPE()
ENVTYPE OUT タイプ,パラメーター

現在実行中のプログラムがどのインタプリタで動いているかを取得する

返値

タイプ

インタプリタのタイプ

0 メインインタプリタ
1 サブインタプリタ
2 UIインタプリタ

パラメーター

起動時に設定されたパラメーター
・ユーザーが作成できるプログラムでは常に-1が返る。

ENVFOCUS フラグ

フォーカスを取得・譲渡する

引数

1でフォーカスを取得、0でフォーカスを譲渡

ENVFOCUS()

フォーカスの所持状況を取得する

返値

フォーカスを持っているかどうか
・1で持っている、0で持っていない。

ENVPROJECT

サブインタプリタの作業用プロジェクトをメインインタプリタの作業用プロジェクトに同期させる

PUSHKEY 文字列

指定文字列をキーボード入力した事にする

引数

文字列

入力される文字列
・最大64文字。

HELPINFO OUT 命令名文字列,数値配列

カーソル位置にあるヘルプデータの情報

・内部実装用命令。使用禁止。

返値

命令名文字列

カーソル位置にある命令名の文字列
・命令名がない場合は"DEFAULTHELPKEY"が返る。

配列

行数を返す配列
・配列の要素数はページ数となる。

HELPINFO 命令名文字列 OUT 数値配列

命令名に対してのヘルプデータの情報

・内部実装用命令。使用禁止。

引数

命令名文字列

取得する命令名の文字列

返値

配列

行数を返す配列
・配列の要素数はページ数となる。

HELPGET 命令名文字列,ページ番号 OUT 行文字列配列,タグ配列,属性数値配列,コード例文字列

ヘルプデータの取得

・内部実装用命令。使用禁止。

引数

命令名文字列

取得する命令名の文字列

ページ番号

取得するページ番号

行番号

取得する行番号

返値

行文字列配列

各値は1行分の文字列
・配列サイズは行分となる。

タグ配列

各値のタグはインデント数・色情報
・内部情報にHEADが含まれる場合は見出しとなり、PAGEUP・DOWNで見出し間移動に使われる。
・配列サイズは行分となる。

説明
0 基本的な行
1 タイトルスクロールしても見える
2 引数見出し
3 返値見出し
4 その他の見出し
5 タイトル直下の説明
6 引数小見出し
7 返値小見出し
8 その他の小見出し

属性数値配列

行内の特定の文字列に対して属性情報
・配列は3次元配列となり、配列の大きさは行数、行単位の属性数、属性番号となる。
・参考: ARRAY#(行数,行単位の属性数,属性種類)
・属性番号が0(位置)の取得値がマイナスの場合、各属性情報は無効。

Index 説明
0 位置
1 位置からの長さ
2

・対応する属性は増えるごとに配列内の構造も変化する可能性がある。

コード例文字列

コード例の文字列