SmileBASIC 4.4.8
リファレンスマニュアル
更新日 2023/12/07
目次
- 命令概要(基本命令)
- 命令概要(表示命令)
- 命令概要(入力、サウンド、その他)
- ダイレクトモード専用命令
- 変数や配列の定義、操作に関する命令
- 制御命令
- 数学関連
- 文字列操作
- その他
- 各種入力
- 各種入力(Toy-Con)
- ファイル
- スクリーン制御
- テキストスクリーン入出力
- グラフィック
- スプライト
- レイヤー
- サウンド
- 高度な演算
- ソースコード操作
- サブプログラム
更新日 2023/12/07
・ダイレクトモード専用。
NEW
・ダイレクトモード専用。
消去するプログラムスロット:0~5
NEW 3
・DIRECTモード専用。
LIST
・DIRECTモード専用。
編集するプログラムスロットを指定する
・省略時は現在編集中のプログラムスロットを指定した事になる。
編集したい行番号を指定する
LIST 20 LIST 2:20
・DIRECTモード専用。
LIST ERR
・DIRECTモード専用。
・変数、SPFUNC,TFUNC設定内容はクリアされる。
RUN
・DIRECTモード専用。
・指定スロットの変数、SPFUNC,TFUNC設定内容はクリアされる。
実行したいプログラムスロット:0~5
RUN 1
・DIRECTモード専用。
・STOP命令やBreakボタンでプログラム実行を中断した位置から実行再開できる。
・エラーでプログラム実行が停止した場合は再開できない。
・プログラム実行中断後、プログラムを編集すると再開できない。
・入力待ちの途中で中断したときは再開できない。
CONT
・DIRECTモード専用。
・STOP命令やBreakボタンでプログラム実行を中断した位置から実行再開できる。
・エラーでプログラム実行が停止した場合は実行できない。
・プログラム実行中断後、プログラムを編集すると実行できない。
・入力待ちの途中で中断したときは実行できない。
TRACE
・ダイレクトモード専用。
・STOP命令やエラー停止でプログラム実行が中断した時点までの呼び出し履歴を表示する。
・プログラムスロット番号と行番号のリストを表示する。
BACKTRACE
・ダイレクトモード専用。
カレントプロジェクトにしたいプロジェクトの名前
・空文字列""を指定すると、ワークスペースプロジェクトを設定する。
PROJECT "MYGAME"
・ダイレクトモード専用。
・サブインタプリタの変数、SPFUNC,TFUNC設定内容はクリアされる。
サブプログラムとしてロードしたいプログラムのファイル名文字列
・ダイレクトモード専用。
・ダイレクトモード専用。
・ダイレクトモード専用。
・ダイレクトモード専用。
CLEAR
・VARとDIMはどちらを使ってもよい。
・カンマで区切る事で複数の変数を同時に定義できる。
・変数名には英数字とアンダースコア(_)が使用できる。
・先頭に数字は使用できない。
・式の結果が変数の初期値となる。
・式が省略された場合、変数名末尾の型記号(%/#/$)により%:整数型ゼロ、#:実数型ゼロ、$:空文字列が初期値としてセットされる。
・式が省略され、変数名に型記号がついていない場合はデフォルト数値型のゼロが初期値としてセットされる。
VAR A=0,B,C DIM B$
・VARとDIMはどちらを使ってもよい。
・変数名末尾に型記号(%/#/$)を付けると、それぞれ整数配列、実数配列、文字列配列を作成する。
・型記号を省略した場合はデフォルト数値型配列を作成する。
・確保する配列の要素数を[]でかこって指定する。
・要素数はカンマ(,)で区切る事で4次元配列まで作成できる。
・要素数を省略すると、要素数ゼロの1次元配列を作成する。
VAR ATR[4] VAR DX[5],DY[5],DZ[5] DIM POS$[10,5] DIM IMAGE[]
・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
値を交換する2つの変数
SWAP A,B SWAP A[5],B[2]
操作する変数
加算する値
・省略時には1を指定した事になる。
INC X INC X,3
減算する変数
減算する値
・省略時には1を指定した事になる。
DEC X DEC X,3
コピー元の配列
・1次元配列のみ指定できる。
コピー元の先頭要素番号
・省略時は0を指定した事になる。
コピーする要素数
・省略時はコピー元配列の要素数からコピー元オフセットを引いた数を指定した事になる。
コピー結果の配列
・文字列配列の場合、各要素の文字列もコピーされる。
コピー元の文字列
コピー元の先頭位置
・省略時は0を指定した事になる。
コピーする文字数
・省略時はコピー元文字列の文字数からコピー元オフセットを引いた数を指定した事になる。
コピー結果の文字列
・1次元配列に限り、コピー先配列がコピー元配列より要素数が足りない場合自動拡張する。
・コピー元、コピー先とも配列の次元は無視される。
コピー先の配列
コピー先の先頭要素番号
・省略時は0を指定した事になる。
コピー元の配列
コピー元の先頭要素番号
・省略時は0を指定した事になる。
コピーする要素数
・省略時はコピー元配列の要素数からコピー元オフセットを引いた数を指定した事になる。
DIM SRC[10],DST[10] COPY DST,SRC
・DATA文で定義されたデータを配列に読み込む。
・配列要素数がコピーデータ数より少ない場合、1次元配列に限り、コピー先配列の要素数が足りない場合自動拡張する。
コピー先の配列
コピー先の先頭要素番号
・省略時は0を指定した事になる。
読み込みたいDATA文を示すラベル名文字列
・ラベル名の後に最初に現れたDATA文から読み出しを開始する。
読み込むデータ数
・読み込めるデータ数がここで指定した値より少ない場合エラー。
・省略時はコピー先配列の要素数が指定される。
DIM DST[5] COPY DST,"@SRC" @SRC DATA 5,1,1,2,4
コピー先の文字列変数
コピー先の先頭位置
・省略時は0を指定した事になる。
コピー元の文字列
コピー元の先頭位置
・省略時は0を指定した事になる。
コピーする文字数
・省略時はコピー元文字列の文字数からコピー元オフセットを引いた数を指定した事になる。
COPY A$,"12345"
・COPY命令と同じく配列間の値をコピーするが、コピー先よりもコピー元のコピー要素数が多い場合でも要素数を拡張せず、配列の先頭に折り返してデータをコピーする。
・コピー先、コピー元共に2次元配列まで指定できる。2次元配列を指定した場合、マルチチャンネルのリングバッファ(もしくはデータ)として扱う。
・コピー先、コピー元両方に2次元配列を指定した場合、双方のチャンネル数(第1次元の要素数)は同じにする必要がある。
・コピー先が2次元、コピー元が1次元配列の場合、コピー元のデータがコピー先の全チャンネルに同じようにコピーされる。
・コピー先、コピー元が同じ配列だった場合の動作は保証しない。
コピー先のリングバッファとして扱われる配列
コピー先でのコピー開始位置
コピー元の配列
コピー元でのコピー開始位置
・省略時は0。
コピーする要素の数
・省略時はコピー元配列の要素数。
コピーしたデータの末尾位置
・リングバッファとして扱う場合、帰ってきた値が次回のコピー先オフセットとなる。
配列1内の並び替えを開始する位置
・省略時は0。
並び替える要素数
・省略時は配列1の要素数。
並び替える数値の入った配列
配列1の並び替え結果に連動して並び替える配列
・配列2~8は省略できる。
・配列2~8は文字列配列でも可。
DIM WORK[10] SORT 0,10,WORK
配列1内の並び替え開始位置
・省略時は0。
並び替える要素数
・省略時は配列1の要素数。
並び替える数値の入った配列
配列1の並び替え結果に連動して並び替える配列
・配列2~8は省略できる。
・配列2~8は文字列配列でも可。
DIM WORK[10] RSORT 0,10,WORK
・要素数が1つ増える。
要素を追加される配列
追加する要素の値
DIM WORK[10] PUSH WORK,123
・要素数が1つ減る。
要素を取り出される配列
取り出した要素の値
DIM WORK[10] PUSH WORK,123 A=POP(WORK)
・要素数が1つ増える。
要素を追加される配列
追加する要素の値
DIM WORK[10] UNSHIFT WORK,123
・要素数が1つ減る。
要素を取り出される配列
DIM WORK[10] UNSHIFT WORK,123 A=SHIFT(WORK)
・配列の型は、整数、実数、文字列いずれでも構わない。
・オフセットと要素数を指定すると部分的な変更も可能。
値を上書きする配列
数値や文字列
値を書き込み始める位置
書き込む数
DIM WORK[10] FILL WORK,0
型を調べたい値
値の型に応じて、次のいずれかの数値が返る。
0 | デフォルト型 | #T_DEFAULT |
1 | 整数型 | #T_INT |
2 | 実数型 | #T_REAL |
3 | 文字列型 | #T_STR |
5 | 整数配列 | #T_INTARRAY |
6 | 実数配列 | #T_REALARRAY |
7 | 文字列配列 | #T_STRARRAY |
・デフォルト型は関数・命令コールで引数を省略した場合に設定される特殊な型。
・VARによる変数定義時以外に配列を作成したい場合に使用する。
・ARRAY%は整数配列、ARRAY#は実数配列、ARRAY$は文字列配列を作成する。
作成する配列の次元と要素数
作成した配列
調査する配列
要素数を調べたい次元:0~3
・省略時は配列の次元数が返る。
・次元を指定した場合は指定した次元の要素数が返る。
・次元を省略した場合は配列の次元数が返る。
DIM WORK[10,20] ? DIM(WORK) ? DIM(WORK,0) ? DIM(WORK,1)
・拡張部分の要素には数値の0もしくは空文字列が入る。
サイズを変更する配列
サイズ変更後の要素数
・変更できるのは、配列定義の時に一番最初に書く要素数のみ。
・次元の変更はできない。
要素を増やす配列
要素を挿入する位置:0~配列要素数
挿入する要素数:正の数
・省略時は1。
挿入要素の値
・省略時は、数値配列では0、文字列配列では空文字列。
要素を削除する配列
要素を削除する位置:0~配列要素数-1
削除する要素数:正の数
・省略時は1。
検索対象の配列
・多次元配列も指定可能。
検索する値
見つかった位置
・値が見つからなかった場合は-1が返る。
DIM A[]=[1,2,3,4,5] ?FIND(A,3)
検索対象の配列
・多次元配列も指定可能。
検索する値
見つかった位置の添字
・返値の数は検索対象配列の次元数と同じでなければならない。
・値が見つからなかった場合は全ての返値に-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 A ?? "12345"*10
・GOTO, GOSUB,命令で指定するジャンプ飛び先やRESTORE命令で指定するREAD命令の読み込み先を定義する。
・ラベルは、英数字とアンダースコア(_)からなる識別子の先頭に@をつけたもの。
@MAINLOOP
ジャンプ先のラベル
ラベルのかわりにラベル名の入った文字列も指定できる
・"1:@ラベル名" の形式でプログラムスロット指定も可能。
・プログラムスロット指定をする場合、あらかじめEXEC命令で対象スロット内のプログラムを実行可能にしておくこと。
GOTO @MAIN JP$="@MAIN":GOTO JP$
・GOTOと違い、RETURN命令でGOSUBの次の命令に戻ってくる。
ジャンプ先のラベル
ラベルのかわりにラベル名の入った文字列も指定できる
・"1:@ラベル名" の形式でプログラムスロット指定も可能。
・プログラムスロット指定をする場合、あらかじめEXEC命令で対象スロット内のプログラムを実行可能にしておくこと。
GOSUB @SUB JP$="@MAIN":GOSUB JP$
RETURN
ここに書かれた式の値によってジャンプ先を選択する。
・値は数値でなければならない。
式の値が0のときのジャンプ先
式の値が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
ここに書かれた式の値によってジャンプ先を選択する。
値は数値でなければならない。
式の値が0のときのジャンプ先
式の値が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を使用すると指定したラベルにジャンプさせる事ができる。
・一度登録ラベルにジャンプすると、登録は解除される。
・エラー、TRACE,STOP実行、+ボタン長押しによる強制停止、TOPMENUからのプログラム起動等によりプログラムが停止する場合はラベルを登録していてもジャンプしない。
プログラム停止時のジャンプ先
ON BREAK GOTO @FINISH LOOP ENDLOOP @FINISH PRINT "ていししました!"
・THENやELSE直後のGOTOは、GOTOを省略可能。
IF A==1 THEN PRINT OK IF A>1 THEN @JMP1 ELSE PRINT DATE$ @JMP1 END
・THENやELSEの直後で改行すると、処理1または処理2で複数行の処理を書く事ができる。
・THENやELSEの直後で改行する場合、IF文の終了を明示するためにENDIFを最後に記述する。
IF A==1 THEN PRINT "オメデトウ" BEEP 2 ELSE PRINT "ザンネン" ENDIF
・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
・ラベルにはラベル文字列も使用できる。
・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
・ENDCASEで分岐処理を終了する。
・分岐条件はWHEN,OTHERWISEで指定する。
CASEで条件として参照する式
・WHENで指定する式との比較に使用する。
A=1 CASE A WHEN 0: PRINT"A" WHEN 1: PRINT"B" OTHERWISE: PRINT"X" ENDCASE
・WHENで指定した式の値とCASEで指定した式の値が同じだった場合、WHENの次の命令にジャンプし、値が違った場合は次のWHENまたはOTHERWISEにジャンプする。
・WHENの次の命令にジャンプした場合、次のWHENの直前まで実行するとENDCASEにジャンプする。
・WHENを連続して書いた場合は、ひとまとまりのグループとして扱う。
・つまり、WHEN A:WHEN Bと書いた場合、「CASEの値がAまたはBの場合」という意味になる。
・CASE~ENDCASE内でのみ使用できる。
分岐条件となる式
・全てのWHENに該当しなかった場合はOTHERWISEの次の命令にジャンプする。
・IF文でのELSE相当の処理。
・OTHERWISEの後にWHENを使用する事はできない。
・CASEで条件分岐を開始した後は必ずENDCASEを使用しなければならない。
・この命令自体は何も行わない。
・ENDLOOP命令実行時に、対応するLOOPキーワードの直後の命令に処理を移す。
I=0 LOOP PRINT I;","; I=I+1 IF I>100 THEN BREAK ENDLOOP
・FOR,WHILE,REPEATといった他のループ命令と異なり、無限にループし続ける。
・ループから抜けるには、BREAK命令を使用する必要がある。
I=0 LOOP PRINT I;","; I=I+1 IF I>100 THEN BREAK ENDLOOP
・処理の最後にはNEXT命令を置く。
・条件が満たされない場合、1回も実行されないことがある。
ループのたびに自動更新される変数
・1ループごとに増分が加算される。
ループ開始時のループ変数の値
ループを終了させるループ変数の値
・ループ変数の値がこの値を超えるとループを終了させる。
・ループ終わりにループ変数に加算する増分。
・省略時は1が増分値として使用される。
・負の数を指定すると値が減る方向にループさせる事ができる。
・増分が小数の場合、演算誤差で意図した回数にならない可能性がある。
FOR I=0 TO 9 STEP 2 PRINT I;","; NEXT
・対応するFOR変数を更新し、TOの値を超えていなければFOR直後の命令にジャンプし、超えていればNEXT直後の命令にジャンプする。
・FOR変数にはSTEPがあればSTEPの値を加算し、STEPがなければ1を加算する。
FOR I=0 TO 9 STEP 2 PRINT I;","; NEXT
・式が真(0以外)の場合WHILEの次の命令に処理を移し、WEND命令が来たらWHILEに戻って再度式を計算する。
A=0:B=4 WHILE A<B A=A+1 WEND
A=0:B=4 WHILE A<B A=A+1 WEND
・この命令自体は何も行わない。
・UNTIL命令でループ実行が継続される場合に、対応するREPEAT命令に処理を移す。
A=0:B=4 REPEAT A=A+1 UNTIL A>B
・式の評価結果が真(0以外)の場合、ループを終了しUNTIL文の次の命令に処理を移す。
・ループの始まりにREPEAT命令を置く。
・WHILE命令とは異なりループ内処理を実行した後で条件判定を行う。
A=0:B=4 REPEAT A=A+1 UNTIL A>B
・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
・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
・中断したプログラムスロット:行番号が表示される。
・STOPで中断したプログラムはCONT命令で継続続行可能。
停止メッセージとして表示する文字列を指定する
・文字列は255文字まで表示可能。
・省略した場合停止メッセージは表示されない。
STOP STOP "とまりました"
1) USER ※引数なし、返値なし
2) USER X,Y ※引数あり、返値なし
3) A=USER(X) ※引数あり、返値1つ
4) USER X OUT A,B ※引数あり、返値複数
・DEF~ENDまでが定義範囲となる。
・DEF~END範囲で定義された変数やラベルはDEF外から使用できない(ローカル変数)。
・DEF~END範囲をまたがったGOTO,GOSUBはできない。
・COMMON を付けることで定義したプログラムスロット外から使用可能な命令を定義できる。
' 文字表示 DEF FUNC PRINT "SAMPLE" END ' 呼び出し FUNC
関数に渡したい引数があれば必要な分の引数名をカンマで区切って指定する
・ここで指定した引数名はDEF~END内で変数として使用できる。
' 指定位置に文字表示 DEF FUNC2 X,Y LOCATE X,Y PRINT "SAMPLE" END ' 呼び出し FUNC2 10,4
関数に渡したい引数があれば必要な分の引数名をカンマで区切って指定する
・ここで指定した引数名は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~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
・引数だけ可変長にしたり、返値だけ可変長にしたりする事も可能。
命令名の後ろに*(アスタリスク)を書くと、引数の数が可変である事を宣言できる
・DEFARGC,DEFARG,TYPEOFを使用して引数の数・内容・型を調査できる。
OUTの後ろに*(アスタリスク)を書くと、返値の数が可変である事を宣言できる
・DEFOUTC,DEFOUTを使用して返値の数を調査したり、返値を設定したりできる。
DEF VARFUNC * OUT * FOR I=0 TO DEFOUTC()-1 DEFOUT I, DEFARG(I)*2 NEXT END
・異なるプログラムスロット間でプログラムを使う場合はEXECで先に実行しておくこと。
1) COMMON DEF USER
2) COMMON DEF USER(X)
3) COMMON DEF USER X OUT A,B
COMMON DEF FOO(X,Y,Z)
・関数型として定義されたDEF命令内で値を返す場合に利用する。
DEF CALC(A,B) RETURN A*B END PRINT CALC(2,3)
DEF FUNC PRINT FUNC END
・ユーザー定義命令・関数内でのみ使用可能。
・可変長引数と組合わせると便利。
ユーザー定義命令・関数の引数の個数
DEF FOO X,Y PRINT DEFARGC() END
・ユーザー定義命令・関数内でのみ使用可能。
・可変長引数と組合わせると便利。
調べたい引数の番号
・最初の引数から順に0,1,2,3…と指定する。
指定引数の値
DEF FOO X,Y PRINT DEFARG(0) 'Xの値が返る PRINT DEFARG(1) 'Yの値が返る END
・ユーザー定義命令・関数内でのみ使用可能。
・可変長返値と組合わせると便利。
ユーザー定義命令・関数の返値の個数
DEF FOO OUT X,Y PRINT DEFOUTC() END
・ユーザー定義命令・関数内でのみ使用可能。
・可変長返値と組合わせると便利。
設定する返値の番号
・最初の返値から順に0,1,2,3…と指定する。
指定返値に設定する値
DEF FOO OUT X,Y DEFOUT 0,10 'X=10と同じ意味 DEFOUT 1,20 'Y=20と同じ意味 END
・呼び出すユーザー定義命令名の文字列。
・文字列なので""でかこうか文字列変数を使用。
・"1:ユーザー定義命令名" の形式でプログラムスロット指定も可能。
・あらかじめEXEC命令で対象スロット内のプログラムを実行可能にしておくこと。
指定した命令に必要な引数
結果として返したい数分の変数名をOUTの後に記述
CALL "USERCD",X,Y OUT A,B ' DEF USERCD X,Y OUT A,B A=X+Y:B=X*Y END
・組み込み関数、ユーザー定義関数どちらでも指定可能。
・呼び出すユーザー定義関数名の文字列。
・文字列なので""でかこうか文字列変数を使用。
・"1:ユーザー定義関数名" の形式でプログラムスロット指定も可能。
・あらかじめEXEC命令で対象スロット内のプログラムを実行可能にしておくこと。
指定した関数に必要な引数を列挙する
指定した関数が返した値
A=CALL("USERFC",X,Y) ' DEF USERFC(X,Y) RETURN X*Y END
・SPFUNC, TFUNCで設定されたコールバック処理を一斉に呼び出す。
・SPFUNCで設定されたコールバックはCALL SPRITEで呼び出す。
・TFUNCで設定されたコールバックはCALL TEXTで呼び出す。
・呼び出したコールバックに関連するスプライト管理番号やテキストスクリーンIDはCALLIDX()で取得できる。
CALL SPRITE CALL TEXT
・小数点以下は切り捨てられる。
・結果は整数型となる。
元になる数値
整数に変換された数値
FLOOR:切り下げ、ROUND:四捨五入、CEIL:切り上げ
・結果は実数型となる。
元になる数値
実数型に変換された数値
INT:整数化(切り捨て)
・その数を超えない最大の整数を得る(床関数)。
・FLOOR(12.5)は12、FLOOR(-12.5)は-13となる。
・結果は小数点以下すべて0となるが、実数型となる。
元になる数値
小数部を切り下げた値
INT:整数化(切り捨て)、ROUND:四捨五入、CEIL:切り上げ
A=FLOOR(12.345)
・ROUND(12.5)は13、ROUND(-12.5)は-13となる。
・結果は小数点以下すべて0となるが、実数型となる。
元になる数値
小数部を四捨五入した値
INT:整数化(切り捨て)、FLOOR:切り下げ、CEIL:切り上げ
A=ROUND(12.345)
・その数を下回らない最小の整数を得る(天井関数)。
・CEIL(12.5)は13、CEIL(-12.5)は-12となる。
・結果は小数点以下すべて0となるが、実数型となる。
元になる数値
小数部を切り上げた値
INT:整数化(切り捨て)、ROUND:四捨五入、FLOOR:切り下げ
A=CEIL(12.345)
絶対値を得る数値
絶対値
A=ABS(-12.345)
符号を得る数値
引数の値の正負に応じて1,0,-1のいずれかを返す
1 | 正の値 |
0 | 0 |
-1 | 負の値 |
A=SGN(12.345)
最小値を調べる数値配列
数値配列の中で一番小さい数
DIM TMP[2]=[50,3] A=MIN(TMP)
最小値を調べたい数値を引数として並べる
渡された引数の中で一番小さい数
A=MIN(1,2,3,4)
最大値を取得する数値配列
数値配列の中で一番大きい数
DIM TMP[2]=[50,3] A=MAX(TMP)
最大値を調べたい数値を引数として並べる
渡された引数の中で一番大きい数
A=MAX(1,2,3,4)
乱数の系列:0~7
取得する乱数の上限
0~最大値-1までのランダムな整数
A=RND(100)
乱数の系列:0~7
0以上1未満のランダムな実数
A=RNDF()
乱数系列の種類:0~7
乱数系列を選択する整数値
・RND,RNDFが返す値はシード値によって順序が決まる。
・0を設定すると利用可能なエントロピー情報をシード値とする。
・省略時は0が設定される。
RANDOMIZE 0
平方根を求める数値
求めた平方根
A=SQR(4)
指数
・省略時は定数#EXPの値を返す。
求めた結果
A=EXP(2)
べき乗を求める数値
べき乗の乗数
求めた結果
A=POW(1,4)
真数:正の実数
底:正の実数
・省略時は自然対数を求める
求めた結果
A=LOG(2,2)
度単位の角度
ラジアン単位の角度
R=RAD(45)
ラジアン単位の角度
度単位の角度
A=DEG(0.5*#PI)
ラジアン単位の角度
求めたサイン値
A=SIN(RAD(45))
ラジアン単位の角度
求めたコサイン値
A=COS(RAD(45))
ラジアン単位の角度
求めたタンジェント値
A=TAN(RAD(45))
-1.0~1.0
求めた角度(ラジアン単位)
A=ASIN(0)
-1.0~1.0
求めた角度(ラジアン単位)
A=ACOS(1)
角度を求める数値
求めた角度(ラジアン単位)
A=ATAN(1)
角度を求める座標値
・原点からの向きを角度として計算する。
・引数順に注意すること。
求めた角度(ラジアン単位)
A=ATAN(1,1)
ハイパボリックサインを求める数値
求めたハイパボリックサイン
A=SINH(1)
ハイパボリックコサインを求める数値
求めたハイパボリックコサイン
A=COSH(1)
ハイパボリックタンジェントを求める数値
求めたハイパボリックタンジェント
A=TANH(0.5)
チェックしたい数値
0 | 通常数値 |
1 | 無限大 |
2 | NaN |
A=CLASSIFY(0.5)
[]を使用することで、文字列内の1文字を取得したり指定位置の文字を置換できる。
A$="12345" A$[3] → "4" A$[3]="ABC" → "123ABC5"
調べたい文字が先頭に入った文字列
指定された文字の文字コード
A=ASC("A") X=ASC("XYZ")
取得したい文字の文字コード
文字コードに対応する1文字の文字列
S$=CHR$(65)
数値を表す文字列("123"など)
文字列から解釈した数値
A=VAL("123") F=VAL("-12.56")
文字列に変換したい数値
指定桁数で右揃えしたい場合に指定:0~63
・数値の桁数が指定桁数より大きい場合指定を無視する。
・0を指定した場合桁揃えをしない。
・省略時は0。
変換された文字列(123→"123")
S$=STR$(123)
16進数文字列に変換したい数値
・実数を指定した場合、小数部は切り捨てられる。
出力する16進数文字列の桁数:0~8
・1以上の値を指定すると先頭に0を埋めた文字列を返す。
・0を指定した場合先頭に0を埋めない。
・省略時は0。
変換結果16進数文字列
S$=HEX$(65535,4)
2進数文字列に変換したい数値
・実数を指定した場合、小数部は切り捨てられる。
出力する2進数文字列の桁数:0~32
・1以上の値を指定すると先頭に0を埋めた文字列を返す。
・0を指定すると先頭に0を埋めない。
・省略時は0。
変換結果2進数文字列
S$=BIN$(65535,16)
値を整形して埋め込む文字列
・%の後に以下の型指定や補助指定をつける事で値の整形方法を制御する。
%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("ABC123") DIM B[4] ? LEN(B)
末尾を調べたい文字列、または配列
末尾の添字番号
・文字列、配列ともLEN関数の返値から1を引いた値を返す。
DIM X[10] FOR I=0 TO LAST(X) X[I]=I NEXT
対象文字列
取得文字列の開始位置
取得文字列の文字数
・省略時は開始位置から文字列末端までの文字数を指定した事になる。
取得した文字列
S$=MID$("ABC",0,2)
対象文字列
取得文字列の文字数
取得した文字列
S$=LEFT$("ABC",2)
対象文字列
取得文字列の文字数
取得した文字列
S$=RIGHT$("ABC",2)
文字列内で検索を開始する位置
・省略時は文字列先頭から検索する。
検索対象の文字列
検索したい文字列
見つかった場合:文字列内の位置
見つからなかった場合:-1
A=INSTR(0,"ABC","B")
置換対象の文字列
置換開始位置
置換対象の文字数
・省略時は、開始位置以降の全文字を置換文字列で置き換える。
開始位置から文字数分をこの文字列で置き換える
置き換えが完了した文字列
A$=SUBST$("ABC",0,2,"XY")
現在の日付文字列
・書式は"西暦/月/日"。
現在の時刻文字列
・書式は"時:分:秒"。
・1個の定義の後ろにカンマを書いて、続けて別の定数を定義する事ができる。
・定数名は変数名と同じ形式で、先頭に#が付く。
・定数式には数値、文字列、他の定数、CHR$,RGB,RGBF,HSV,HSVF,DEG,RADの各関数、及びそれらの演算が使用できる。
CONST #C1=1,#C2="ABC",#C3=RAD(180) ?#C1,#C2,#C3
・CONSTと違い、整数定数のみ定義できる。
・定数式は省略できる。
・省略時は場合直前の定数定義に設定した値+1が使用される。
・定数名は変数名と同じ形式で、先頭に'#'が付く
・定数式には整数、他の整数定数、RGB,RGBF,HSV,HSVF,DEG,RAD、及びそれらの演算が使用できる。
・定数式が実数の場合、小数点以下は切り捨てられる。
・省略時は直前の定数定義に設定した値+1が使用される。
ENUM #TYPE1=2,#TYPE2,#TYPE3 ?#TYPE1,#TYPE2,#TYPE3
・定数式には数値、文字列、他の定数、CHR$,RGB,RGBF,HSV,HSVF,DEG,RADの各関数、及びそれらの演算が使用できる。
・定数式であれば、数値も文字列も混在可能。
DATA 123,#C_RED,56,"SAMPLE"+CHR$(20)
・読み込めるデータがない場合、Out of data エラーが発生する。
読み込む情報を格納する変数(複数指定可能)
・最初のDATA文から順番に取得する。
・RESTORE命令を使用すると、読み込むDATA文を変更できる。
READ X,Y,Z,G$ DATA 200,120,0,"JAN" DATA 210,120,0,"FEB"
読み込む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"
|STRICT|変数定義が必須となり、未定義変数への代入がエラーとなる。| |DEFINT|変数のデフォルト値として実数ではなく整数の0が設定される。数値配列のデフォルト型が整数配列となる。|"
OPTION STRICT
現在からの経過フレームカウントを指定
・0を指定すると停止しない。
・省略時は1を指定した事になる。
WAIT 60
・WAITとは異なり前回VSYNC実行時からのフレームカウントを指定する。
前回のVSYNCからの経過フレームカウントを指定
・0を指定すると停止しない。
・省略時は1を指定した事になる。
VSYNC 1
・REMまたは' 以降行末まではコメントとみなし、無視される。
・コメント内容はプログラム実行に影響しない。
' MAIN ROUTINE
"HH:MM:SS"形式の時間文字列
・HHは00~23、MM,SSは00~59の数値文字。
・省略時は現在の時間。
H | 時間を受け取る変数 |
M | 分を受け取る変数 |
S | 秒を受け取る変数 |
TMREAD "12:59:31" OUT H,M,S
"YYYY/MM/DD"形式の日付文字列
・YYYYは0000~9999、MMは01~12、DDは01~31の数値文字。
・省略時は現在の日時。
Y | 年を受け取る変数 |
M | 月を受け取る変数 |
D | 日を受け取る変数 |
W | 曜日(日曜日を0とする数値)を受け取る変数(省略可) |
DTREAD "2014/10/12" OUT Y,M,D
ラベルとして検索する文字列
・CHKLABEL "1:@ラベル名" で他のプログラムスロットにあるラベルも確認できる。
・プログラムスロットを指定する場合、あらかじめEXEC命令で対象プログラムスロットを使用可能にしておく必要がある。
DEF内でCHKLABELを使用した時に、DEF外部のラベルも検索するかを指定する
0 | DEF内だけを検索 |
1 | DEF内に無ければグローバルラベルを検索 |
・省略時は0。
存在する時は1、存在しない時は0
A=CHKLABEL("@MAIN")
命令・関数として検索する文字列
存在する時は1、存在しない時は0
A=CHKCALL("KEYCHECK")
変数として検索する文字列
存在する時は1、存在しない時は0
A=CHKVAR("COUNTX")
・押されたボタン情報はRESULT関数で取得できる。
・1:決定、-1:キャンセル、0:タイムアウト。
ダイアログに表示する文字列
・表示文字列は256文字まで
・表示文字列内にCHR$(10)かCHR$(13)があると改行する。
0 | 了解(デフォルト) |
1 | いいえ/はい |
2 | 戻る/次へ |
3 | 中止/決定 |
4 | 中止/実行 |
5 | 次へ |
・省略時は0を指定した事になる。
ダイアログ上部のキャプション欄に表示する文字列
・キャプション文字列が46文字より長い場合、46文字までしか表示されない。
・省略時、キャプション欄には"DIALOG"と表示される。
ダイアログを自動的に閉じるまでの秒数
・マイナス値を指定するとフレームカウント単位で指定となる。
・0を指定するとユーザーが操作するまで待ち続ける。
・省略時は0を指定した事になる。
DIALOG "はじめましょう",5,"シナリオ",-120
ダイアログに表示する文字列
・表示文字列は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)
入力値としてあらかじめ設定しておくファイル名文字列
・ファイル名に使えない文字を使用するとエラーとなる。
キャプションに表示する文字列
・キャプション文字列が39文字より長い場合、39文字までしか表示されない。
最大32文字まで
取得した文字列
・RESULT関数の返値が-1の場合はキャンセル(文字列無効)。
T$=DIALOG("NEWNAME0","SAVE",14)
・DIALOG, ファイル操作命令, XCTRLSTYLE等の、実行結果を取得する必要のある命令の実行結果を返す。
・RESULTを更新する命令の実行後に使用する。
命令の実行結果
・結果の値は各命令により異なるが、共通要素としてすべての命令で1は成功、0は失敗をあらわす。
コールバックと結びついた番号
・CALL SPRITEの場合コールバックを呼び出したスプライトID。
・CALL TEXTの場合コールバックを呼び出したテキストスクリーンのID。
・コールバック外で呼び出すと無意味な値が返る。
クリップボードに格納する文字列
CLIPBOARD "おはようございます"
クリップボード内の文字列
PRINT CLIPBOARD()
・Ctrl+F1~F5で設定した内容を入力できる。
登録するファンクションキー番号:1~5
ファンクションキーに登録する文字列
・文字列の最大長は256文字。
KEY 1,"PRINT"
内容を取得するファンクションキー番号:1~5
ファンクションキーに登録されている文字列
A$=KEY(1)
・GRPF内での指定フォントの格納座標を取得する。
調査したい文字の文字コード
・ユーザー定義文字は指定できない。
調査したい文字が1文字目に入っている文字列
・1文字目以外は無視する。
・ユーザー定義文字は指定できない。
調査したいフォントの種類
・8または16を指定できる。
GRPF上で文字が格納されている座標が返る
・容量の単位はバイト。SmileBASICでは1文字2バイト、整数配列1要素で4バイト、実数配列1要素で8バイト消費する。
・関数形式で使用すると総空き容量が返る。
未使用メモリの合計サイズ
未使用メモリのうち、一度に使用できるサイズ
・単位はミリセコンド(1000分の1秒)
起動してからの経過時間
・フレームカウント1あたりの時間は、処理落ちが発生しない場合で約60分の1秒。
・画面更新が何回行われたかを計るのに使用する。正確な時間を計るには向いていない。
起動してからのフレームカウント
取得・設定したい項目の名前を文字列で指定する
指定可能な項目名は次の通り
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
・PERFEND命令とセットで使用する。
使用する計測情報の番号:0~7
パフォーマンスゲージ上で情報を表示する時の色
・省略可能。
・同じ計測番号を指定してPERFBEGINを呼び出していなかった場合、正しい計測結果を取得できない。
使用する計測情報の番号:0~7
・同じ計測番号を指定してPERFBEGINを呼び出していなかった場合、正しい計測結果を取得できない。
・関数として使用すると、PERFBEGIN~PERFEND間の実行時間を取得できる。
・計測時間が2147秒以上になると正しい結果を返さなくなる。
使用する計測情報の番号:0~7
PERFBEGINからPERFENDまでに経過した時間をマイクロセコンド(100万分の1秒)単位で返す
・指定プロジェクトのアイコンや説明文をメモリ上に読み込み、編集可能にする。
読み込み対象のプロジェクト名文字列
・省略した場合カレントプロジェクトが読み込み対象となる
設定するメタデータ項目を数値で指定する
0 | タイトル |
1 | 説明文 |
2 | アイコン |
設定する値を指定する
・値はメタデータ項目番号毎に型や内容が異なる。
・タイトルの場合、最大24文字の文字列を設定する。
・説明文の場合、最大240文字の文字列を設定する。CHR$(10)で改行。
・アイコンの場合、要素数1600(縦40,横40)の数値配列でアイコン画像を指定する。
取得するするメタデータ項目を数値で指定する
0 | タイトル |
1 | 説明文 |
2 | アイコン |
メタデータ項目番号毎に返る値が異なる
・タイトルの場合、最大24文字の文字列を返す。
・説明文の場合、最大24文字×10行の文字列を返す。CHR$(10)で改行。
・アイコンの場合、アイコン画像として要素数1600(縦40,横40)の2次元整数配列を返す。
・カレントプロジェクトのメタデータが書き換えられる。
・設定した操作スタイルによって、接続可能なコントローラーの種類、想定する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カメラを使用したい場合1を、使用しない場合は0を指定する
・省略時は0。
・モーションIRカメラを使用する場合は操作スタイルを1(2本持ち)にする必要がある。
コントローラー接続画面を必ず表示するかどうかを指定する
・1を指定すると、コントローラー接続画面が必ず表示される。
・0を指定すると、設定が変わった時だけコントローラー接続画面が表示される。
・省略時は0。
・0だけを指定すると、コントローラーの操作スタイルを起動時状態にリセットする。
・XCTRLSTYLE 1,0,0,0と指定するのと同じ。
・接続確認画面の操作結果はRESULT関数で確認できる(1:成功, -1:キャンセル)。
・サブプログラムからの呼び出しは無視される。
数値のゼロのみ指定
・異なる値を指定するとエラー。
接続可能な最大コントローラー数
現在の操作スタイル
0 | フル |
1 | 2本持ち |
2 | 横持ち |
3 | 縦持ち |
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) |
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本持ちや携帯モードの場合、左右のコントローラーの色を別々に取得できる
・横持ちや縦持ちの場合、右メイン色と右サブ色には黒が返る。
調べたいコントローラーのID
0 | デフォルトコントローラー |
1~4 | 通常コントローラー |
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。
調べたいボタンの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 | スティック押し込み以外のいずれかのボタン |
・方向ボタンの上下左右は、コントローラーを持った方向に対するボタン位置。縦持ちの「上」は横持ちの「左」となる。
知りたい状態の種類
・省略時は0。
0 | ボタンが押されている |
1 | ボタンを押した瞬間(BREPEAT対応あり) |
2 | ボタンを押した瞬間(BREPEAT対応なし) |
3 | ボタンを離した瞬間 |
指定ボタンが指定機能IDの条件を満たしていれば1、そうでなければ0
・1個のボタンの状態だけ取得したい場合は、もう一つのBUTTON関数のヘルプを参照。
調べたいコントローラーのID
0 | デフォルトコントローラー |
1~4 | 通常コントローラー |
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。
ボタンIDに-1を設定すると、全ボタン状態をまとめて取得するようになる
・コントローラーIDだけ指定した場合も-1を指定した事になる。
知りたい状態の種類
・省略時は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 "ひだりボタン"
・BUTTON関数の機能IDで1を指定した時の結果に影響する。
・全接続コントローラーに影響する。
リピート速度を設定したいボタンのID
・ボタンIDの詳細はBUTTON関数のヘルプを参照。
ボタンが押され始めてから、リピートが開始するまでのフレームカウント
リピートが発生してから次のリピートが発生するまでのフレームカウント
リピート速度を取得したいボタンのID
・ボタンIDの詳細はBUTTON関数のヘルプを参照。
ボタンが押され始めてから、リピートが開始するまでのフレームカウント
リピートが発生してから次のリピートが発生するまでのフレームカウント
調べたいコントローラーのID
0 | デフォルトコントローラー |
1~4 | 通常コントローラー |
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。
0 | Lスティック |
1 | Rスティック |
・省略時は0。
・スティックが1本しかない時に1を指定してもエラーにはならず、X,Y共に0が返ってくる。
スティックの傾き情報
・横方向(X)には左<->右で-1.0<->1.0。
・縦方向(Y)には上<->下で-1.0<->1.0。
・操作をしていない時にはX,Y共に0が返る。
・XCTRLSTYLEでモーションセンサーを有効にしていない場合は正常な値が返らない。
調べたいコントローラーのID:1~4
・コントローラーID 0 は指定できない。
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。
調べたいセンサーのID:0~1
・2本持ちの場合のみ、ID 1で意味のある値が返ってくる。
・省略時は0。
加速度センサーの値
・単位は重力加速度。
・Xは方向キー左右方向(右ボタン方向が正)
・Yは方向キー上下方向(下ボタン方向が正)
・Zはコントローラー表面に対して垂直方向(上向きが正)
・XCTRLSTYLEでモーションセンサーを有効にしていない場合は正常な値が返らない。
調べたいコントローラーのID:1~4
・コントローラーID 0 は指定できない。
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。
調べたいセンサーのID:0~1
・ID 1は2本持ちの場合のみ有効。
・省略時は0。
各軸まわりのジャイロセンサーの角速度
・単位はラジアン/秒。
・Xはピッチ。
・Yはロール。
・Zはヨー。
・それぞれ正の向きに対して右ネジの回転する向きが正の値となる。
・XCTRLSTYLEでモーションセンサーを有効にしていない場合は全て0が返る。
・コントローラーを激しく動かしたり、長時間使用を続けると誤差が蓄積し正しい値を返さなくなるため、必要なタイミングでGYROSYNC命令を呼び出し角度をリセットする必要がある。
調べたいコントローラーのID:1~4
・コントローラーID 0 は指定できない。
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。
調べたいセンサーのID:0~1
・ID 1は2本持ちの場合のみ有効。
・省略時は0。
各軸まわりのジャイロセンサーの角度
・単位はラジアン。
・Xはピッチ。
・Yはロール。
・Zはヨー。
・それぞれ正の向きに対して右ネジの回転する向きが正の値となる。
・命令を呼び出した直後のコントローラー姿勢がX:0,Y:0,Z:0となる。
・GYROSYNC命令を使用してから実際のリセットが行われるまで最大で1Vカウントの時間が必要。
リセットしたいコントローラーのID:1~4
・コントローラーID 0 は指定できない。
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。
リセットしたいセンサーのID:0~1
・2本持ち以外の場合、1を指定しても無視される。
・省略時は0。
・サブプログラムからの呼び出しは無視される。
振動させたいコントローラID:1~4
・コントローラーID0は指定できない。
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。
振動させたいコントローラの左右指定
0 | 左 |
1 | 右 |
・省略時は左右両方が振動する。
・縦持ち、横持ちの場合、1を指定しても無視される。
プリセットの振動パターン番号:0~62
・0を指定すると振動が停止する。
VIBRATE 1,40 VIBRATE 1,0,1:VIBRATE 1,1,3
・サブプログラムからの呼び出しは無視される。
振動させたいコントローラ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
振動状態を取得したいコントローラID:1~4
・コントローラーID0は指定できない。
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。
左右どちらの振動状態を取得するかの指定
0 | 左 |
1 | 右 |
・省略時は左右の状態を合成した値が返る。
・縦持ち横持ちの場合、1を指定すると常に0が返る。
・振動している場合は、振動パターン番号または周波数・振幅を直接指定している場合には65535。
・振動していない場合は0。
・縦持ち横持ち以外で左右指定を省略した場合、右状態値*65536+左状態値が返る。
・縦持ち横持ちで左右指定を省略した場合は左状態値のみ返る。
PRINT VIBRATE(1,0)
・サブプログラムからの呼び出しは無視される。
VIBRATE
・TVモードではTOUCH関数は有効な値を返さない。
マルチタッチで、タッチを開始したポイント順に、0,1,2,3…と9まで指定できる
・省略時は0。
0を指定すると、タッチ座標が表示されているBASIC画面内の座標に変換され、画面外のタッチはタッチされていない物として扱われる
1を指定すると、BASIC画面に関係なく液晶画面全体でのタッチ座標を取得する
・省略時は0。
タッチを開始してから現在までのフレームカウント
・タッチしていない場合にはゼロが返る。
タッチされている場合の座標
・タッチされていない場合は無意味な値が返る。
タッチされている場合のタッチ面積
・タッチされていない場合には無意味な値が返る。
0を指定すると、マウス座標が表示されているBASIC画面の座標に変換される
1を指定すると、BASIC画面に関係なく液晶画面全体でのマウス座標を取得する
現在のマウス座標
現在のホイール値
設定するマウス座標
0を指定すると、X,YをBASIC画面の座標として扱う
1を指定すると、X,Yを液晶画面全体での座標として扱う
・省略時は0。
・1個のボタンの状態だけ取得したい場合は、もう一つのMBUTTONのヘルプを参照。
マウスのボタン状態がビット毎にセットされて返ってくる
調べたいボタンのID
0 | 左ボタン |
1 | 右ボタン |
2 | 中央ボタン |
3 | ボタン4 |
4 | ボタン5 |
知りたい状態の種類
0 | ボタンが押されている |
1 | (使用不可) |
2 | ボタンを押した瞬間 |
3 | ボタンを離した瞬間 |
・省略時は0。
指定ボタンが指定機能IDの条件を満たしていれば1、そうでなければ0
・XCTRLSTYLEであらかじめIR使用フラグをONにしておく必要がある。
・サブプログラムからの呼び出しは無視される。
IRカメラを使用するコントローラーのID:1~2
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。
IRカメラの認識方法を指定する
0 | クラスタリングモード |
1 | 撮影モード |
2 | モーメントモード |
・クラスタリングモードは明るい領域を矩形として認識する。同時に最大16個の領域を認識できる。
・撮影モードはIRカメラの撮像画像を画像として取得する。
・撮影モードで撮影したデータはIRSPRITEで表示する事ができる。データをBASICプログラム内に取り出す事はできない。
・撮影モード起動中は画面キャプチャが禁止される。
・モーメントモードは撮像範囲を8x6の小領域に分割し、それぞれの認識情報を取得する。
・XCTRLSTYLEであらかじめIR使用フラグをONにしておく必要がある。
・サブプログラムからの呼び出しは無視される。
IRカメラを使用するコントローラーのID:1~2
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。
クラスタリングモードとするために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。
・XCTRLSTYLEであらかじめIR使用フラグをONにしておく必要がある。
・撮影モードで撮影したデータはIRSPRITEで表示する事ができる。データをBASICプログラム内に取り出す事はできない。
・撮影モード起動中は画面キャプチャが禁止される。
・サブプログラムからの呼び出しは無視される。
IRカメラを使用するコントローラーのID:1
・撮影モードでは1以外指定できない。
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。
撮影モードとするために必ず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。
・XCTRLSTYLEであらかじめIR使用フラグをONにしておく必要がある。
・サブプログラムからの呼び出しは無視される。
IRカメラを使用するコントローラーのID:1~2
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。
モーメントモードとするために2を指定する
IRカメラの照明を指定する
0 | 全て(遠+近) |
1 | 遠距離用のみ |
2 | 近距離用のみ |
3 | 照明OFF |
・省略時は0。
IRカメラの撮影ゲイン:1~16
・省略時は8。
IRカメラの撮影露出時間:7~600
・省略時は300。
・サブプログラムからの呼び出しは無視される。
IRカメラの使用を停止するコントローラーのID:1~2
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。
IRカメラの状況を取得するコントローラーのID:1~2
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。
IRカメラの状況
0 | 使用していない |
1 | 停止中 |
2 | クラスタリング起動中 |
3 | 撮影モード起動中 |
4 | モーメントモード起動中 |
・IRSTARTでIRカメラの使用を開始しておく必要がある。
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で作成したスプライトは通常のスプライトと同様に扱う事ができる。ただしSPPAGEを設定した場合元に戻す事はできない。
・撮影モードの撮影データをBASICデータとして取得する事はできない。
・サブプログラムからの呼び出しは無視される。
スプライトと結びつけるIRカメラを持ったコントローラーのID:1
・IRSPRITEでは1のみ指定可能。
・コントローラーIDの詳細はCONTROLLER関数のヘルプを参照。
撮影画像と結びつけるスプライトのID:0~4095
調べたいキーのUSB Usage ID:0~255
知りたい状態の種類。
0 | キーが押されている |
1 | 使用不可(指定すると結果としてゼロが返る) |
2 | キーを押した瞬間 |
3 | キーを離した瞬間 |
・省略時は0。
キーが機能IDで指定した状態であれば1、なければ0
モディファイヤキーの押下情報をビットで返す
bit0 | Windowsキー |
bit1 | Shiftキー |
bit2 | Ctrlキー |
bit3 | Altキー |
・Toy-Conを使用する場合、操作スタイルは専用スタイルを使用する。
・通常ジョイコンとしての情報は、BUTTON,STICK,ACCEL,GYROA,GYROVで2本持ちスタイル相当として取得できる。
・Toy-Con使用中はIRカメラ命令は使用できない。
・接続確認画面の操作結果はRESULT関数で確認できる(1:成功,-1:キャンセル)。
・サブプログラムからの呼び出しは無視される。
接続したい最大のコントローラー数を指定する:1~2
Toy-Conを使用する場合操作スタイルに100を指定する
認識する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。
・XCTRLSTYLEでToy-Con種類に1以外を指定するとエラーとなる。
・キー・ボタン情報以降の返値はすべて省略可能。
情報を取得するコントローラーの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。
・XCTRLSTYLEでロボットToy-Conの認識を開始しない状態で使用するとエラーとなる。
情報を取得するコントローラーの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を左側に傾けると正 |
ヨー | 腰の回転。反時計まわりに回転させると正 |
・XCTRLSTYLEでロボットToy-Conバイザーの認識を開始しない状態で使用するとエラーとなる。
情報を取得するコントローラーのID:1~2
バイザーを正しく認識している場合は1、認識していない場合は0が返る
バイザーの姿勢角度情報
・バイザーを頭に装着した状態を想定している。
・角度の単位はラジアン。
ピッチ | バイザー上げ下げの傾き。Toy-Conを上げると正(値が大きくなる) |
ロール | 頭の左右の傾き。首を左に傾けると正 |
ヨー | 頭の回転。反時計まわりに回転させると正 |
・XCTRLSTYLEでおうちToy-Conの認識を開始しない状態で使用するとエラーとなる。
情報を取得するコントローラーの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かそれ以外で、ねじねじを縦に刺したか横に刺したかをあらわす。
・XCTRLSTYLEでつりToy-Conの認識を開始しない状態で使用するとエラーとなる。
・釣り竿ヨー以降の返値はすべて省略可能。
情報を取得するコントローラーの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が水平。
・XCTRLSTYLEでバイクToy-Conの認識を開始しない状態で使用するとエラーとなる。
・ハンドル傾き以降の返値はすべて省略可能。
情報を取得するコントローラーの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を上に向けた時の角度をラジアンで取得する
・XCTRLSTYLEでToy-Con種類に7または10を指定しないとエラーとなる。
・アクセル以降の返値はすべて省略可能。
情報を取得するコントローラーの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
・XCTRLSTYLEでToy-Con種類に8または10を指定しないとエラーとなる。
・アクセル以降の返値はすべて省略可能。
情報を取得するコントローラーのID:1~2
ヒコウキToy-Conを認識しているかどうかと、操作ボタンの状態をビット値で返す。
0 | 認識していない |
bit0 | 認識中 |
bit1 | カギToy-Conボタン |
bit2 | トリガーボタン |
アクセルペダルの踏み込み量:0~1.0
スティック左右方向の傾き:-1.0~1.0
・-1.0で左いっぱい,-1.0で右いっぱい、0で中央。
スティック前後方向の傾き:-1.0~1.0
・-1.0で奥いっぱい,-1.0で手前いっぱい、0で中央。
・XCTRLSTYLEでToy-Con種類に9または10を指定しないとエラーとなる。
・アクセル以降の返値はすべて省略可能。
情報を取得するコントローラーの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°以上ハンドルを回転すると値が反転する。
・XCTRLSTYLEでToy-Conを使用する設定にしていないとエラーとなる。
情報を取得するコントローラーのID:1~2
次のいずれかの値
0 | 未認識 |
7 | クルマ |
8 | ヒコウキ |
9 | センスイカン |
・XCTRLSTYLEでToy-Con種類として7,8,9,10を指定してる時のみ0以外の値を返す。
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0となる。
特定のファイル種類を表示させたい場合に指定する
・省略時はすべてのファイルを表示する。
一覧を取得したいプロジェクトの名前。
・省略時はカレントプロジェクト内のファイル一覧が表示される。
FILES FILES "TXT:PROJECT"
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0となる。
"//" を指定すると、プロジェクト一覧が表示される
FILES "//"
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0となる。
特定のファイル種類を取得したい場合に指定する
・省略時は全てのファイルを取得する。
一覧を取得したいプロジェクトの名前
・省略時はカレントプロジェクト内のファイル一覧を取得する。
ファイル一覧が格納された文字列配列
NAMETBL$ = FILES() FOR I=0 TO LAST(NAMETBL$) ?NAMETBL$[I] NEXT
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0となる。
"//" を指定すると、プロジェクト一覧を取得する
プロジェクトの一覧が格納された文字列配列
NAMETBL$ = FILES("//") FOR I=0 TO LAST(NAMETBL$) ?NAMETBL$[I] NEXT
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0となる。
特定のファイル種類を取得したい場合に指定する
一覧を取得したいプロジェクトの名前。
・省略時はカレントプロジェクト内のファイル一覧を取得する。
・ファイル一覧のファイル名が格納される文字列配列。
・1次元配列の場合取得したファイル数に応じて自動拡張。
DIM NAMETBL$[] FILES NAMETBL$ FOR I=0 TO LAST(NAMETBL$) ?NAMETBL$[I] NEXT
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0となる。
"//" を指定すると、プロジェクト一覧を取得する
・プロジェクト一覧のプロジェクト名が格納される文字列配列。
・1次元配列の場合取得したファイル数に応じて自動拡張。
DIM NAMETBL$[] FILES "//", NAMETBL$ FOR I=0 TO LAST(NAMETBL$) ?NAMETBL$[I] NEXT
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。
ファイル種類はTXTのみ指定可能
・省略時はTXTを指定した事になる。
読み込むファイル名
プログラムを読み込むスロット:0~3
・省略時は0。
LOAD "PROGNAME" LOAD "SUBPROG",1
・オフセット指定時はみ出した部分は無視される。
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。
GRP,JPGまたはDATを指定できる
・省略時はGRPを指定した事になる。
・DATを指定した場合、二次元整数配列以外のファイルはエラーとなる。
読み込むファイル名
読み込んだ画像データを格納するグラフィックページ:0~5
画像の読み込み先座標
・省略時は0,0を指定した事になる。
読み込んだ画像データの幅と高さ
LOADG "GRPDATA",1 LOADG "DAT:DATA",2,0,64 LOADG "GRPDATA",2 OUT W,H
・実行結果は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")
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。
DAT,GRPを指定可能
・省略できない。
読み込むファイル名
読み込んだデータが格納される配列変数
・読み込むファイルに格納された配列データの次元と、読み込み先配列の次元は一致している必要がある。
・文字列配列を指定する場合、ファイル内のデータも文字列配列をセーブした物である必要がある。
・ファイル内の情報に応じて配列要素数が自動的に拡張される。
DIM MARRAY[] LOADV "DAT:MDATA",MARRAY
・上書きセーブ時は上書き前のファイルが @BACKUP.PRG として保存される。
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。
TXTのみ指定可能
・省略時はTXTを指定した事になる。
セーブするプログラムに付けるファイル名
セーブするプログラムのスロット番号:0~3
・省略時は0。
SAVE "TEST" SAVE "TEST2",2
・上書きセーブ時は上書き前のファイルが @BACKUP.GRP という名前で保存される。
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。
GRPのみ指定可能
・省略時はGRPを指定した事になる。
セーブファイルに付ける名前
セーブするグラフィックページ:0~5
保存したい領域の左上の座標を指定する(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
・高圧縮形式は通常の圧縮形式に比べてより小さいファイルで保存できるが、保存するたびに画質が落ちていく(非可逆圧縮)。
・上書きセーブ時は上書き前のファイルが @BACKUP.JPG という名前で保存される。
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。
JPGのみ指定可能
セーブファイルに付ける名前
セーブするグラフィックページ:0~5
保存したい領域の左上の座標を指定する(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
・上書き保存時は上書き前のファイルが @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%
カレントプロジェクトの名前
・DIRECTモードでは実行できない。
・指定スロットの変数、SPFUNC,TFUNC設定内容はクリアされる。
・現在実行中のスロットを指定した場合、実行中のプログラムが指定プログラムに入れ替わり、指定プログラムのENDで実行を終了する。
・現在実行中のスロット以外を指定した場合、指定スロットでプログラムを実行し、END命令を実行するとEXECの次の命令に戻ってくる。
・スロットを指定する場合、現在実行中のスロットと、実行される可能性のあるコードが存在しないスロットのみ指定できる。
TXTのみ指定可能
・省略時はTXTを指定した事になる。
読み込むプログラムのファイル名
プログラムを読み込むスロット:0~5
・省略時は現在実行中のスロットを指定した事になる。
EXEC "SAMPLE" EXEC "SBGED",1
・DIRECTモードでは実行できない。
・指定スロットの変数、SPFUNC,TFUNC設定内容はクリアされる。
・現在実行中のスロットを指定した場合、実行中のプログラムを最初から実行しなおす。
・現在実行中のスロット以外を指定した場合、指定スロットのプログラムを実行し、END命令を実行するとEXECの次の命令に戻ってくる。
・スロットを指定する場合、現在実行中のスロットと、実行される可能性のあるコードが存在しないスロットのみ指定できる。
実行するプログラムのスロット番号:0~5
EXEC 2
調べるファイルの種別
・省略時はTXTを指定した事になる。
調べるファイル名
存在する場合1が、存在しない場合0を返す
A=CHKFILE("SBATTACK") B=CHKFILE("GRP:SBATTACK")
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。
削除したいファイルの種別
・省略時はTXTを指定した事になる。
削除したいファイル名
DELETE "TEST" DELETE "GRP:PICTURE"
・実行結果はRESULT関数で取得できる。
・RESULTの値は、成功時は1、失敗時は0、キャンセル時は-1となる。
名前を変更したいファイルの種別
・省略時はTXTを指定した事になる。
名前を変更したいファイル名
変更先ファイルのファイル種類
・ファイル種類1と異なる場合エラー。
・省略時はファイル種類1と同じ物となる。
変更先のファイル名
RENAME "TEST1","TEST2" RENAME "GRP:PICTURE1","PICTURE2"
・引数を指定すると、一部の設定のみリセットせずに保存することができる。
1を指定するとフォントページを除いたグラフィックページをクリアせずに保存する
・省略時は0。
1を指定するとSPDEFの内容を保存する
・省略時は0。
1を指定するとフォントページをクリアせずに保存する
・省略時は0。
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
・コンソール(テキストスクリーン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より大きいと横長になる。
・省略時は幅/高さが設定される。
画面の幅と高さ(ピクセル数単位)
・定義したアニメーションは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
・定義したアニメーションは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
・定義したアニメーションは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
クリアするアニメーション定義番号:0~1023
ANIMDEF 0
ANIMDEF
背景色の色コード
設定されている背景色の色コード
・フェード色で塗りつぶしたスプライトを画面全体にかぶせるのと同じ効果となる。
フェード色の色コード
・アルファ成分が大きいほど濃く色が乗る。
・指定時間をかけて現在のフェード色から指定色に徐々にフェード色を変更する。
フェード色の色コード
・アルファ成分が大きいほど濃く色が乗る。
・アルファ成分が255だとフェードアウト効果。
・アルファ成分が0だとフェードイン効果。
フェード効果にかける時間をフレームカウントで指定する
・処理落ちがない場合、60で1秒。
現在のフェード色
・フェードイン・フェードアウト中の色も取得できる。
フェードイン・フェードアウト中であれば1、していない時は0
消去するテキストスクリーンのID:0~4
・省略時は4。
CLS CLS 1
・この命令を実行すると、以後PRINT文、TPRINT文、INPUT文等で表示する文字の色が変化する。
描画色を指定するテキストスクリーンのID:0~4
・省略時は4。
文字の描画色
・ARGB各8ビットの色コード。
※色コードの詳細はGCOLORを参照
COLOR #C_WHITE COLOR 1,#C_RED COLOR RGB(128,192,64,64)
・現在の文字描画色を取得する。
描画色を取得するテキストスクリーンのID:0~4
・省略時は4。
C=COLOR() C1=COLOR(1)
・この命令を実行すると、以後PRINT文、TPRINT文、INPUT文等で表示する文字の表示座標が変化する。
表示座標を指定するテキストスクリーンのID:0~4
・省略時は4。
・文字を表示させる座標を指定する。
・表示できる文字数はTSCREENで設定するスクリーンサイズに依存する。
・XまたはYを省略すると、それぞれ以前のX,Y座標を維持する。
LOCATE 20,15 LOCATE ,10 LOCATE 1,10,0
・現在の文字表示座標を取得する。
表示座標を指定するテキストスクリーンのID:0~4
・省略時は4。
・現在の文字表示座標を取得する。
LOCATE OUT X,Y LOCATE 1 OUT X1,Y1
・式を省略すると改行のみ行う。
・省略形として、?と書いても良い。
・PRINTはスクリーン4に表示を行う。
・TPRINTは表示先のスクリーンを指定できる。
・表示する変数、文字列変数、数値、文字列。
表示の最後に改行しない
・表示後に改行せず、空白文字を表示する。
PRINT "RESULT(X,Y)=";DX*4+1,DY+1
・式を省略すると改行のみ行う。
・省略形として、T?と書いても良い。
・PRINTと異なりTPRINTは表示先のスクリーンを指定できる。
文字を表示するスクリーンのID:0~4
・表示する変数、文字列変数、数値、文字列。
・四則演算等や関数による計算式も記述可(計算結果が表示される)。
表示後に改行せず、次の表示を密着させる
・表示後に改行せず、次の表示を一定間隔開ける。
TPRINT 1,CHR$(&HEA01);CHR$(&HEA02);
・この命令を実行すると、以後PRINT文、TPRINT文、INPUT文等で表示する文字の表示属性が変化する。
文字表示属性を指定するテキストスクリーンの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"
文字表示属性を取得するテキストスクリーンの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)
・テキストスクリーンの内容を文字単位で全体にずらす。
・スクロールの結果スクリーン外に押し出された文字は消える。
スクロールするテキストスクリーンのID:0~4
・省略時は4。
横方向のスクロール文字数
・正の値で左方向、負の値で右方向にスクロールする。
縦方向のスクロール文字数
・正の値で上方向、負の値で下方向にスクロールする。
SCROLL 5,7 SCROLL 1,-1,0
スクロールするテキストスクリーンのID:0~4
・省略時は4。
文字単位の座標
指定座標に表示されている文字の文字コード
・文字が表示されていない場合はゼロが返る。
CODE=CHKCHR(0,0) CODE=CHKCHR(1,10,10)
スクロールするテキストスクリーンのID:0~4
・省略時は4。
文字単位の座標
指定座標に表示されている文字の文字コード
・文字が表示されていない場合はゼロが返る。
指定座標に設定されている表示属性
・ATTR命令を参照。
CHKCHR 0,0 OUT CH,AT CHKCHR 1,10,10 OUT CH,AT
スクロールするテキストスクリーンのID:0~4
文字コードを調べる座標
・次の座標変換フラグの値により座標の意味が変わる。
座標X,Yの座標系を指定するフラグ
・0の場合、文字単位の座標と解釈する(LOCATEの座標と同じ)。
・1の場合、ディスプレイ座標と解釈する(TOFS等と同じ)。
・ディスプレイ座標の場合、LMATRIXの影響は考慮されない。
指定座標に表示されている文字の文字コード
・文字が表示されていない場合はゼロが返る。
CODE=CHKCHR(1,10,10,0) CODE=CHKCHR(1,200,120,1)
スクロールするテキストスクリーンのID:0~4
文字コードを調べる座標
・次の座標変換フラグの値により座標の意味が変わる。
座標X,Yの座標系を指定するフラグ
・0の場合、文字単位の座標と解釈する(LOCATEの座標と同じ)。
・1の場合、スクリーン座標と解釈する(TOFS等と同じ)。
・スクリーン座標の場合、LMATRIXの影響は考慮されない。
指定座標に表示されている文字の文字コード
・文字が表示されていない場合はゼロが返る。
指定座標に設定されている表示属性
・ATTR命令を参照。
CHKCHR 1,10,10,0 OUT CH,AT CHKCHR 1,200,120,1 OUT CH,AT
・ENTERキーが入力されるまで入力待ち。
・入力数が不足時「?Redo from start」を表示し再入力。
・他のテキストスクリーン命令と異なり、テキストスクリーンは4で固定。
入力用のガイドメッセージ(省略可能)
・ガイド文字列後の;を,(カンマ)にすると?が表示されない。
・;を使うときのみガイド文字列には文字列変数も使用可能。
入力を受け取る変数(数値または文字列変数)
・変数を複数指定する場合,(カンマ)で区切る。
INPUT "なまえとねんれいは";NM$,AG
・INPUT命令では入力できない「,」等も受け付ける。
・ENTERキーが入力されるまで入力待ち。
・他のテキストスクリーン命令と異なり、テキストスクリーンは4で固定。
入力用のガイドメッセージ(省略可能)
1行分の入力を受け取る文字列変数
LINPUT "ADDRESS:";ADR$
・キーボードからの入力がない場合でも、入力待ちをしない。
・先行キー入力があった場合、一番古い入力から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)
・幅と高さは画面サイズを文字サイズで割った物が設定される 。
表示に用いるフォントの種類:8~64(8の倍数)
・24以上を指定すると、ユーザー定義文字のみ表示されるようになる。
文字の表示サイズ:8~64
TSCREEN 8
設定するテキストスクリーンのID:0~4
表示に用いるフォントの種類:8~64(8の倍数)
・24以上を指定すると、ユーザー定義文字のみ表示されるようになる。
文字の表示サイズ8~64
テキストスクリーンの幅と高さを文字単位で指定する
・幅×高さが32768まで指定可能。
・幅、高さを省略した場合、または0を指定した場合、現在の画面サイズを文字サイズで割った物が設定される。
TSCREEN 1,16,16,100,100
消去するテキストスクリーンのID:0~4
・省略時は4。
表示に用いるフォントの種類:8~64
文字の表示サイズ:8~64
テキストスクリーンの幅と高さ
TSCREEN OUT FONT,SIZE,W,H TSCREEN 1 OUT FONT,SIZE,W,H
・ユーザー定義文字の絵を参照するグラフィックページと、参照原点を設定する。
・ユーザー定義文字は文字コード&HE800から&HF7FFまでの4096文字で、この範囲の文字はTPAGEで設定した場所をフォントとして参照する。
・ユーザー定義文字ではない通常文字は参照グラフィックページや参照原点を変更できない。
・文字を表示してからTPAGEを呼び出すと、表示済みの文字にも影響が出る。
設定するテキストスクリーンのID:0~4
・省略時は4。
参照するグラフィックページ:-1~5
グラフィックページ内の参照原点座標
・ユーザー定義文字は、参照原点から64x64文字を並べた範囲を参照する。
・フォント種類が8の場合512x512ピクセル、16の場合1024x1024ピクセル、32の場合2048x2048ピクセルとなる。
参照情報を取得するテキストスクリーンのID:0~4
・省略時は4。
参照するグラフィックページ
グラフィックページ内の参照原点座標
・COLORが文字単位で色を設定するのに対し、TCOLORはテキストスクリーン全体に指定色を乗算する事で、全体の色味を変更する。
設定するテキストスクリーンのID:0~4
設定する描画色
・ARGB各8ビットの色コード ※GCOLORを参照。
色を取得するテキストスクリーンのID:0~4
指定テキストスクリーンに設定されている描画色
設定するテキストスクリーンのID:0~4
スクリーンを所属させるレイヤーのID:0~7
レイヤーIDを取得するテキストスクリーンのID:0~4
スクリーンが所属しているレイヤーID
文字を書き込むテキストスクリーンのID:0~4
文字を書き込む座標
書き込む文字の文字コード:0~65535
・フォントが存在しない文字コードを指定すると×が表示される 。
書き込む文字を格納した文字列
・先頭の文字を書き込む。
文字の表示属性
・ATTRで設定する表示属性と同じ。
・省略時はATTRで設定した表示属性を使用する。
文字を書き込むテキストスクリーンのID:0~4
文字を書き込む範囲
・左上が始点X,始点Y、右下が終点X,終点Yで囲われた四角形の範囲。
書き込む文字の文字コード:0~65535
・フォントが存在しない文字コードを指定すると×が表示される 。
書き込む文字を格納した文字列
・文字列内の文字を左上から右方向、右端まで行ったら一段下がって左端から右方向、と埋めていく。
文字の表示属性
・ATTRで設定する表示属性と同じ。
・省略時はATTRで設定した表示属性を使用する。
TFILL 0,2,2,10,5,&HE810,#A_REVV TFILL 0,2,6,11,10,"ABC"
ホーム座標はTOFS命令の座標基準点、TROT(回転)やTSCALE(スケーリング)の中心点として使用する
設定するテキストスクリーンのID:0~4
設定するホーム座標の座標
・ハードウェアの仕様により、実数値を設定すると参照フォント画像が1ピクセルずれる事がある。
取得するテキストスクリーンのID:0~4
ホーム座標の座標
・THOMEとTOFSの関係は、「THOMEで設定したテキストスクリーン上の座標を、TOFSで設定した画面上の座標に持って行く」と考えれば良い。
設定するテキストスクリーンのID:0~4
設定する表示座標
・ハードウェアの仕様により、実数値を設定すると参照フォント画像が1ピクセルずれる事がある。
表示優先度:-4095~4095
・小さいほど手前に表示される。
取得するテキストスクリーンのID:0~4
表示座標座標
表示優先度
・THOMEで設定したホームポジションを中心に回転する。
設定するテキストスクリーンのID:0~4
回転角(度)
・ハードウェアの仕様により、設定角度により参照フォント画像が1ピクセルずれる事がある。
取得するテキストスクリーンのID:0~4
回転角
・THOMEで設定したホームポジションを中心に拡大・縮小する。
・1.0より大きな値で拡大(2.0で2倍)、1.0より小さな値で縮小(0.5で半分)。
設定するテキストスクリーンのID:0~4
拡大縮小の倍率を横(X)と縦(Y)に設定する
・ハードウェアの仕様により、設定値により参照フォント画像が1ピクセルずれる事がある。
取得するテキストスクリーンのID:0~4
現在設定されている拡大・縮小倍率
表示するスクリーンID:0~4
取得するスクリーンID:0~4
テキストスクリーンが表示されていれば1、されていなければ0を返す
表示を隠すスクリーンID:0~4
取得するスクリーンID:0~4
テキストスクリーンが表示されていれば0、されていなければ1を返す
合成方法を設定するテキストスクリーンのID:0~4
設定する合成方法:0~1
・0で通常合成、1で加算合成。
合成方法を取得するテキストスクリーンのID:0~4
設定されている合成方法
・0で通常合成、1で加算合成。
・アニメは値を設定して指定時間分待つという動作。
・アニメ開始はTANIMを実行した次フレームから。
・対象要素ごとに最大32個のデータを受け付ける。
・時間にマイナス値を指定すると直前の値から線形補間を行う。
アニメーションを設定するテキストスクリーンの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
アニメーションを設定するテキストスクリーンの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
アニメーションを設定するテキストスクリーンの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
アニメーションを設定するテキストスクリーンのID:0~4
ANIMDEF命令で定義済みの定義番号: 0~1023
ANIMDEF 0,"XY",-60,100,0 TANIM 0,0
アニメーションをクリアするテキストスクリーンのID:0~4
・省略時は全スクリーンのアニメをクリアする 。
TANIM 0 TANIM
対象のテキストスクリーンのID:0~4
・省略時は全テキストスクリーンのアニメーションを停止させる。
TSTOP
対象のテキストスクリーンのID:0~4
・省略時は全テキストスクリーンのアニメーションを開始させる。
TSTART
対象のテキストスクリーンの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|
・プログラム実行開始時、ACLS呼び出し時にクリアされる。
対象のテキストスクリーンのID:0~4
テキストスクリーン変数の名前
・文字列または整数を名前として付ける事ができる。
内部変数に登録する値
・数値または文字列を登録する事ができる。
・省略時は変数キーに結びついた値を削除する。
TVAR 0,7,1 TVAR 0,"NAME","VALUE" TVAR 0,"NAME" '値の削除
対象のテキストスクリーンのID:0~4
テキストスクリーン変数の名前
・文字列または整数を名前として付ける事ができる。
TVARで設定した値
・TVARで値を設定していない場合は、整数の0が返る。
V=TVAR(0,0)
対象のスクリーンID:0~4
削除するテキストスクリーン変数の名前
・文字列または整数を名前として付ける事ができる。
・省略時は指定スクリーン内のすべてのテキストスクリーン変数を削除する。
TVAR 0,7 TVAR 0,"NAME"
コピー先のテキストスクリーンID:0~4
コピー元のテキストスクリーンID:0~4
・省略時はコピー先スクリーンと同じスクリーンが指定される。
コピー元の始点座標と終点座標
コピー先の始点座標
TCOPY 4,0,0,9,9,10,10 TCOPY 4,1,0,0,9,9,10,10
・配列内のデータ構成はTARRAYを参照。
キャラクタ情報を取り出すテキストスクリーンID:0~4
コピー元範囲の始点X,Y座標,幅,高さ
・省略時はテキストスクリーン全体を指定した事になる。
キャラクタ情報を格納する数値配列変数
・配列の要素が不足する場合、1次元配列に限り自動追加される。
DIM WORK%[] TSAVE 4,WORK%
・配列内のデータ構成はTARRAYを参照。
キャラクタ情報を書き込むテキストスクリーンID:0~4
書き込み範囲の始点X,Y座標,幅,高さ
・省略時はテキストスクリーン全体を指定した事になる。
キャラクタ情報が格納された数値配列
DIM WORK%[] TLOAD 4,WORK%
・テキストスクリーンの文字、属性、色を整数型2次元配列として直接読み書きが可能。
・書き込んだ結果を反映するにはTUPDATEを使用する。
配列を取得する対象スクリーンのID:0~4
対象スクリーンの内容を表す整数型2次元配列
・配列サイズは[スクリーン高さ, スクリーン幅x2]。
・1文字は2要素で表され、1要素目は上位16ビットに表示属性、下位16ビットに文字コード、2要素目は表示色が入る。
T=TARRAY(0) T[0,0]=&HE810 PRINT HEX$(T[0,0])
・通常のテキストスクリーン命令では内部でTUPDATE相当の処理を行っているため、文字表示命令実行後にTUPDATEを使用しても何の効果もない。
・TUPDATEを使用しなくても、更新座標付近に他の文字表示命令で書き込みを行うと自動的に反映が行われる。
反映を行うスクリーンのID:0~4
反映を行いたい四角形領域の始点と終点座標
・省略するとスクリーン全体を更新する。
T=TARRAY(0) T[0,0]=&HE811 T[0,1]=#C_RED TUPDATE 0
・コールバック処理が必要な上級者向けの命令。
・GOSUBでジャンプしてきてほしいラベルか、実行してほしいDEF命令名のどちらかを指定できる。
・CALL TEXT により全テキストスクリーンのコールバック処理を一度に実行する。
・コールバック先ではCALLIDX()関数で管理番号を取得できる。
対象のテキストスクリーンID:0~4
呼び出される処理先のラベル
呼び出されるユーザー定義命令の名前
TFUNC 0,"@PROG" TFUNC 1,"USERDEF"
クリア対象のテキストスクリーンID:0~4
TFUNC 0
スクロールするテキストスクリーンのID:0~4
文字コードを調べる座標
・次のモードの値により座標の意味が変わる。
座標変換方法を指定する:0~2
0 | テキストスクリーン上の座標(ドット単位)をディスプレイ座標に変換 |
1 | ディスプレイ座標をテキストスクリーン上の文字単位座標に変換 |
2 | ディスプレイ座標をテキストスクリーン上のドット単位座標に変換 |
・省略時は0。
・ディスプレイ座標を使用する場合、LMATRIXの影響は考慮されない。
変換結果の座標値
・モードの値により返ってくる座標の意味も変わる。
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
0~5 | GRP0~GRP5 |
GTARGET 0
描画対象ページ
WP=GTARGET()
・色を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
グラフィック描画色
C = GCOLOR()
透明度:0~255
・省略時は255。
色の要素: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)
置き換え元となる色コード
置き換える色成分
・値は0~255で指定する。
・それぞれ省略すると置き換え元色コードの対応成分がそのまま使われる。
引数から計算された色コード
C1=RGB(#C_RED, 127,,,) '半透明赤 C2=RGB(#C_BLUE,,255,,) '紫
ARGB各8ビットの色コード
・色コードの説明はGCOLORを参照。
指定した色コードの透明度情報を受け取る変数
・0~255の値が返る。
指定した色コードの色成分情報を受け取る変数
・それぞれ0~255の値が返る。
RGB C OUT R,G,B
透明度:0~1.0
・省略時は1.0。
色の要素:R,G,Bそれぞれ 0~1.0
引数から計算された色コード
置き換え元となる色コード
置き換える色成分
・値は0~1.0で指定する。
・それぞれ省略すると置き換え元色コードの対応成分がそのまま使われる。
引数から計算された色コード
C1=RGBF(#C_RED, 0.5,,,) '半透明赤 C2=RGBF(#C_BLUE,,1.0,,) '紫
色成分を取得する色コード
・色コードの説明はGCOLORを参照。
指定色コードの透明度情報を受け取る変数
・0~1.0の値が返る。
指定色コードの色成分情報を受け取る変数
・それぞれ0~1.0の値が返る。
色の種類(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
変換したい色コード
・色コードの説明はGCOLORを参照。
指定した色の色相
・0~360の値が返る。
指定した色の彩度
・0~255の値が返る。
指定した色の明度
・0~255の値が返る。
指定した色の透明度
・0~255の値が返る。
HSV RGB(192,128,0) OUT H,S,V ?H,S,V
色の種類(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
変換したい色コード
・色コードの説明は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
・クリッピング領域を指定すると、以後のグラフィック描画命令は指定範囲内のみが操作対象となる。
・引数を全て省略すると、グラフィックページ全体を指定した事になる。
クリッピング領域の始点座標(X,Y共に0~2047)
クリッピング領域の終点座標(X,Y共に0~2047)
GCLIP 100,100,200,200
クリッピング領域の始点座標
クリッピング領域の終点座標
GCLIP OUT LEFT,TOP,RIGHT,BOTTOM
・塗りつぶされる範囲はGCLIPの設定範囲。
塗りつぶしに使用する色コード
・色コードの説明はGCOLORを参照。
・省略時は0(透明色)で塗りつぶされる。
GCLS RGB(32,32,32)
色を取得する座標
・グラフィックページ範囲外の座標を指定すると0が返る。
指定座標のピクセルの色コード
・色コードの説明はGCOLORを参照。
C=GPGET(100,100)
点を打つ座標
描画する点の色
・色コードの説明はGCOLORを参照。
・省略時はGCOLORで設定した色を使用する。
0 | 単純描画 | #G_NORMAL |
1 | 透明度が0以外の時単純描画 | #G_NORMAL2 |
2 | 半透明描画 | #G_ALPHA |
3 | 描画先の透明度も考慮して半透明描画 | #G_ALPHA2 |
4 | 加算描画 | #G_ADD |
・省略時は0。
GPSET 100,50
始点座標
終点座標
描画する線の色
・色コードの説明は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)
中心点座標
円の半径(ドット) 1~
描画する円の色
・色コードの説明はGCOLORを参照。
・省略時はGCOLORで設定した色を使用する。
0 | 単純描画 | #G_NORMAL |
1 | 透明度が0以外の時単純描画 | #G_NORMAL2 |
2 | 半透明描画 | #G_ALPHA |
3 | 描画先の透明度も考慮して半透明描画 | #G_ALPHA2 |
4 | 加算描画 | #G_ADD |
・省略時は0。
GCIRCLE 200,120,30
中心点座標
円の半径(ドット) 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
始点座標
終点座標
描画する四角形の色
・色コードの説明はGCOLORを参照。
・省略時はGCOLORで設定した色を使用する。
0 | 単純描画 | #G_NORMAL |
1 | 透明度が0以外の時単純描画 | #G_NORMAL2 |
2 | 半透明描画 | #G_ALPHA |
3 | 描画先の透明度も考慮して半透明描画 | #G_ALPHA2 |
4 | 加算描画 | #G_ADD |
・省略時は0。
GBOX 0,0,399,239
始点座標
終点座標
描画する四角形の色
・色コードの説明はGCOLORを参照。
・省略時はGCOLORで設定した色を使用する。
0 | 単純描画 | #G_NORMAL |
1 | 透明度が0以外の時単純描画 | #G_NORMAL2 |
2 | 半透明描画 | #G_ALPHA |
3 | 描画先の透明度も考慮して半透明描画 | #G_ALPHA2 |
4 | 加算描画 | #G_ADD |
・省略時は0。
GFILL 0,0,399,239
・境界色省略時、開始点座標にある色の範囲を塗る。
塗りつぶしを開始する座標
塗りつぶしに使用する色
・色コードの説明はGCOLORを参照。
・省略するとGCOLORで設定した色を使用する。
塗りつぶしの境界として見る色
・省略時は塗りつぶし色と異なる色をすべて境界として見る。
GPAINT 200,120,RGB(255,0,0),RGB(0,0,0)
省略時 | 現在の描画ページ |
0~5 | GRP0~GRP5 |
コピー元範囲の始点座標と終点座標
コピー先範囲の始点座標
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
コピー元のグラフィックページ:0~5
コピー元範囲の始点座標と終点座標
コピー先範囲の始点座標
コピー元のピクセルと乗算する色コード
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
省略時 | 現在の描画ページ |
0~5 | GRP0~GRP5 |
コピー元範囲の始点X,Y座標,幅,高さ
・省略時は現在のクリッピング領域を使用する。
画像を格納する配列変数
※配列の要素が不足する場合、1次元配列に限り自動追加される
DIM WORK[0] GSAVE 0,0,0,512,512,WORK
コピー先範囲の始点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
コピー先範囲の始点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
頂点1
頂点2
頂点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
表示座標
表示する文字列
・文字列のかわりに整数値を指定した場合、値を文字コードとして扱い、指定されたコードの文字1文字分の描画幅を計算する。
参照するフォントの種類。8または16を指定可能。
・省略時は16。
表示倍率: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
表示座標
表示する文字列
・文字列のかわりに整数値を指定した場合、値を文字コードとして扱い、指定されたコードの文字1文字を描画する。
参照するフォントの種類。8または16を指定可能。
・省略時は16。
表示倍率: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
表示幅を計算する文字列
・文字列のかわりに整数値を指定した場合、値を文字コードとして扱い、指定されたコードの文字1文字分の描画幅を計算する。
参照するフォントの種類。8または16を指定可能。
・省略時は16。
表示倍率:1~32767
・省略時は1(等倍)が指定される。
文字と文字の間隔(ピクセル数):0~64
・省略時は1。
GPUTCHRPで描画する際の描画幅(ピクセル)
W=GPUTCHRP("ABC") W2=GPUTCHRP(&H55,16,1,2)
・グラフィックページを整数型2次元配列として直接読み書きが可能。
・書き込んだ結果を反映するにはGUPDATEを使用する。
・配列を取得する対象のページを指定する。
0~5 | GRP0~GRP5 |
対象ページの内容を表す整数型2次元配列。
G=GARRAY(0) G[0,0]=#C_WHITE PRINT HEX$(G[100,100])
・通常のグラフィック描画命令では内部でGUPDATE相当の処理を行っているため、描画命令実行後にGUPDATEを使用しても何の効果もない。
・GUPDATEを使用しなくても、書き込み座標付近に他の描画命令で書き込みを行うと自動的に反映が行われる。
反映を行うグラフィックページ
0~5 | GRP0~GRP5 |
反映を行いたい四角形領域の始点と終点座標(各0~2047)
・座標指定はヒント情報として扱われ、領域からはみでた部分が更新される事もある。
G=GARRAY(0) G[0,0]=#C_WHITE GUPDATE 0
・サンプリングとは、スプライトやテキストスクリーンでグラフィックページから色を参照する際に、UV座標からグラフィックページのどの座標を参照するかを決める事。
・スプライト単位・テキストスクリーン単位・レイヤー単位に変更する事はできない 。
設定を行うグラフィックページ: 0~5
0 | ボーダー(0~2047以外のUV座標は透明色になる) |
1 | リピート(グラフィックページが0~2047の外にもずっと繰り返しているように扱う) |
設定を取得するグラフィックページ: 0~5
現在設定されているサンプリングタイプ
・SPSETによりスプライトは利用可能となる。
・SPSET実行により回転等の情報は全て初期化。
・スプライト変数はクリアされる。
・SPHIT系衝突判定を使う時はSPSET後にSPCOLを呼びます。
作成するスプライトの番号:0~4095
SPDEFで定義したテンプレートの定義番号:0~8191
作成したスプライトを表示するかどうかを指定する
・1で表示、0で表示しない。
・省略時は1。
SPSET 1,500
・SPDEFの値を使わずに独自に設定する場合に利用する。
作成するスプライトの番号:0~4095
参照する画像のグラフィックページ上の座標
スプライトの大きさ:0~2048
b00 | ↑90度単位の回転(b00とb01の2ビットで指定) |
b01 | ↓#A_ROT0、#A_ROT90、#A_ROT0180、#A_ROT270 |
b02 | 横反転(0=OFF、1=ON)、#A_REVH |
b03 | 縦反転(0=OFF、1=ON)、#A_REVV |
b04 | 加算合成(0=OFF、1=ON)、#A_ADD |
・省略時は0。
作成したスプライトを表示するかどうかを指定する
・1で表示、0で表示しない。
・省略時は1。
SPSET 54,0,0,32,32,1,0
・スプライト全体から空きを探す。
SPDEFで定義したテンプレートの定義番号: 0~8191
作成したスプライトを表示するかどうかを指定する
・1で表示、0で表示しない。
・省略時は1。
生成されたスプライトの番号: 0~4095
・空きがなく生成できなかった時は-1が返る。
IX=SPSET(500)
・スプライト全体から空きを探す。
参照する画像のグラフィックページ上の座標
スプライトの大きさ:0~2048
b00 | ↑90度単位の回転(b00とb01の2ビットで指定) |
b01 | ↓#A_ROT0、#A_ROT90、#A_ROT0180、#A_ROT270 |
b02 | 横反転(0=OFF、1=ON)、#A_REVH |
b03 | 縦反転(0=OFF、1=ON)、#A_REVV |
b04 | 加算合成(0=OFF、1=ON)、#A_ADD |
作成したスプライトを表示するかどうかを指定する
・1で表示、0で表示しない。
・省略時は1。
生成されたスプライトの番号:0~4095
・空きがなく生成できなかった時は-1が返る。
IX=SPSET(0,0,32,32,1)
・指定範囲内で空きを探す。
空きを探す範囲(0~4095)
・開始番号の方を大きくすると、空き番号を降順で探す。
SPDEFで定義したテンプレートの定義番号:0~8191
作成したスプライトを表示するかどうかを指定する
・1で表示、0で表示しない。
・省略時は1。
生成されたスプライトの番号:0~4095
・空きがなく生成できなかった時は-1が返る。
IX=SPSET(100,120, 500)
・指定範囲内で空きを探す。
空きを探す範囲(0~4095)
・開始番号の方を大きくすると、空き番号を降順で探す。
参照する画像のグラフィックページ上の座標
スプライトの大きさ:0~2048
b00 | ↑90度単位の回転(b00とb01の2ビットで指定) |
b01 | ↓#A_ROT0、#A_ROT90、#A_ROT0180、#A_ROT270 |
b02 | 横反転(0=OFF、1=ON)、#A_REVH |
b03 | 縦反転(0=OFF、1=ON)、#A_REVV |
b04 | 加算合成(0=OFF、1=ON)、#A_ADD |
作成したスプライトを表示するかどうかを指定する
・1で表示、0で表示しない。
・省略時は1。
生成されたスプライトの番号:0~4095
・空きがなく生成できなかった時は-1が返る。
IX=SPSET(100,120, 0,0,32,32,1)
・グラフィック表示用スプライト(4095)は削除されない。
SPCLR
・利用後に削除しないとSPSETで指定できるスプライトの空きがなくなる。
削除するスプライトの番号:0~4095
SPCLR 56
削除するスプライト範囲の番号開始位置:0~4095
削除するスプライト範囲の番号終了位置:0~4095
SPCLR 2,10
・SPSET前に使うとエラー。
表示するスプライトの番号:0~4095
表示する場合は1、表示しない場合は0
・省略時の値は1。
SPSHOW 43 SPSHOW 44, #TRUE
・SPSET前に使うとエラー。
確認するスプライトの番号:0~4095
表示中であれば1,消えていたら0を返す
S = SPSHOW(43)
・表示を隠すだけで、スプライトを削除するわけではない。
・SPSET前に使うとエラー。
表示を隠すスプライトの番号:0~4095
表示を隠す場合1、表示する場合0
・省略時の値は1。
SPHIDE 43
・SPSET前に使うとエラー。
確認するスプライトの番号:0~4095
表示中であれば0,消えていたら1を返す
H=SPHIDE(43)
・ホーム座標はSPOFS(移動)、SPROT(回転)、SPSCALE(拡大・縮小)の基準点として使用する。
・SPCOL(衝突判定)では、始点X,Yを指定しない場合のデフォルト値としてSPHOMEの値を使用する。詳細はSPCOLの解説を参照。
・SPSET前に使うとエラー。
基準点を設定するスプライトの番号:0~4095
スプライトの左上を原点(0,0)とした相対座標
・ハードウェアの仕様により、実数値を設定すると参照画像が1ピクセルずれる事がある。
SPHOME 34,16,16
・SPSET前に使うとエラー。
スプライトの番号:0~4095
ホーム座標
SPHOME 10 OUT HX,HY
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
設定するスプライトの表示座標
・ハードウェアの仕様により、実数値を設定すると参照画像が1ピクセルずれる事がある。
表示優先度:-4095~4095
・小さいほど手前に表示される。
SPOFS 23,50,80 SPOFS 23,,,1000 SPOFS 23,150,180,0
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
1の場合、スプライトの絶対座標を返す
0の場合、スプライトの相対座標を返す
・相対座標はSPOFSで設定した座標そのものを意味する。
・絶対座標はレイヤー上での表示座標を返す。
・両者はSPLINKを使用した時に異なる座標となる。
・省略時は0。
スプライトの座標
表示優先順位
SPOFS 12 OUT X,Y,Z
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
回転角度:0~360(時計回り)
・ハードウェアの仕様により、角度によって参照画像が1ピクセルずれる事がある。
SPROT 23,45
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
スプライトの角度
DR=SPROT(23)
・スケールを考慮した当たり判定は先にSPCOLを実行。
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
0.5(50%)~1.0(100%)~2.0(200%)~
・ハードウェアの仕様により、設定値によって参照画像が1ピクセルずれる事がある。
SPSCALE 56,0.75, 0.75
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
スプライトの倍率
SPSCALE 45 OUT SX,SY
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
・実際の表示色は色コードに元のピクセル色を乗算した値。
SPCOLOR 1,RGB(16, 255,0,0) 'A=16,R=255,G=0,B=0
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
スプライトに設定されている色コード
C=SPCOLOR(1)
・SPSET前に使うとエラー。
定義を変更するスプライトの番号:0~4095
SPDEF命令で登録したテンプレートの番号:0~8191
SPCHR 0,500
・スプライト番号以外の引数は省略可能。
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
参照する画像のグラフィックページ上の座標
スプライトの大きさ:0~2048
・省略時はW,Hとも16。
b00 | ↑90度単位の回転(b00とb01の2ビットで指定) |
b01 | ↓#A_ROT0、#A_ROT90、#A_ROT0180、#A_ROT270 |
b02 | 横反転(0=OFF、1=ON)、#A_REVH |
b03 | 縦反転(0=OFF、1=ON)、#A_REVV |
b04 | 加算合成(0=OFF、1=ON)、#A_ADD |
・省略時は0。
SPCHR 5,64,64,16,16,0 SPCHR 6,,,32,32,1 'UV skip
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
参照する画像のグラフィックページ上の座標
スプライトの画像サイズ
スプライトのアトリビュート
SPCHR 5 OUT U,V,W,H,ATR
・SPSET前に使うとエラー。
対象のスプライトの番号:0~4095
指定スプライトのキャラクタ定義番号
DEFNO=SPCHR(5)
対象のスプライトの番号:0~4095
-1~5
・初期状態のスプライト用ページは4。
SPPAGE 100, 3
対象のスプライトの番号:0~4095
グラフィックページ番号:-1~5
P=SPPAGE(100)
-1~5(GRP-1~GRP5) 初期状態のスプライト用ページは4(GRP4)
SPPAGE 3
グラフィックページ番号:-1~5
P=SPPAGE()
対象のスプライトの番号:0~4095
スプライトが所属するレイヤーのID:0~7
SPLAYER 100,3
対象のスプライトの番号:0~4095
レイヤーID
P=SPLAYER(100)
0~7
・初期状態のレイヤーIDは0。
SPLAYER 3
レイヤーID
P=SPLAYER()
テンプレートの定義番号:0~8191
参照する画像のグラフィックページ上の座標
スプライトの大きさ
・省略時はW,Hとも16。
スプライトの座標基準点
・省略時はX,Yとも0。
b00 | ↑90度単位の回転(b00とb01の2ビットで指定) |
b01 | ↓#A_ROT0、#A_ROT90、#A_ROT0180、#A_ROT270 |
b02 | 横反転(0=OFF、1=ON)、#A_REVH |
b03 | 縦反転(0=OFF、1=ON)、#A_REVV |
b04 | 加算合成(0=OFF、1=ON)、#A_ADD |
・省略時は0。
SPDEF 0,192,352,32,32,16,16,1
スプライトのテンプレートデータが格納された数値配列
・1個分の要素はU,V,W,H,原点X,原点Y,アトリビュートの7つ。
・要素数は7の倍数である必要がある。
・要素数/7個のスプライトテンプレートが0から順に定義される。
定義開始番号を指定:0~8191
画像の定義位置調整用として加算される(各0~4095)
SPDEF SRCDATA SPDEF SRCDATA 256,0,256
スプライトのテンプレートデータが列挙されたDATA命令のラベル
・@ラベル名は""でくくるか、文字列変数で指定する。
・先頭データは定義するスプライト数とし、。
続いて各スプライトのデータを列挙(1個につき7データ)
・1個分のデータはU,V,W,H,原点X,原点Y,アトリビュートの7つ。
定義開始番号を指定:0~8191
画像の定義位置調整用として加算されます(各0~4095)
SPDEF "@SRCDATA" SPDEF "@SRCDATA",256,0,256
テンプレートの定義番号:0~8191
参照する画像のグラフィックページ上の座標
スプライト定義の画像サイズ
スプライト定義の基準点座標
スプライト定義のアトリビュート
SPDEF 2 OUT U,V,ATR
・コピー不要な要素は省略可能(区切りの','カンマは必要)。
・引数部分はコピーした上で調整する場合に利用。
テンプレートの定義番号:0~8191
コピー元になる定義番号:0~8191
参照する画像のグラフィックページ上の座標
定義するスプライトの大きさ
・省略時はW,Hとも16。
スプライトの座標基準点
・省略時はX,Yとも0。
b00 | ↑90度単位の回転(b00とb01の2ビットで指定) |
b01 | ↓#A_ROT0、#A_ROT90、#A_ROT0180、#A_ROT270 |
b02 | 横反転(0=OFF、1=ON)、#A_REVH |
b03 | 縦反転(0=OFF、1=ON)、#A_REVV |
b04 | 加算合成(0=OFF、1=ON)、#A_ADD |
・省略時は0。
SPDEF 0,255,192,352,32,32,16,16,1 SPDEF 1,255,,,32,32,,,
SPDEF
・リンクすると座標がリンク先(親)に追従するようになる。
・子の表示座標と表示優先度は、親を基準とした相対座標となる。
・SPSET前に使うとエラー。
リンク元(子)のスプライトの番号: 0~4095
リンク先(親)のスプライトの番号: 0~4095
・リンク元の子孫を指定するとエラー。
リンク先(親)の情報のどれを引き継ぐかを指定するビット値の組合わせ
・表示座標・表示優先度以外の属性を引き継ぎたい場合に指定する。
・bit0を指定した場合、親がSPCLRされてから1V経過後に子孫が消去される。
・省略時は0。
bit0 | 1 | 表示ON/OFFや消去のタイミング |
bit1 | 2 | 回転 |
bit2 | 4 | スケーリング |
bit3 | 8 | 色 |
bit4 | 16 | レイヤーID |
SPLINK 15,4 SPLINK 2,0,3
・SPSET前に使うとエラー。
リンク元(子)のスプライトの番号: 0~4095
取得したいリンク先種別・リンクフラグ
0 | 親 |
1 | 子 |
2 | 兄弟 |
3 | リンクフラグ |
・省略時は0
リンク先の番号:0~4095(-1の時リンク無し)
'スプライトPARENTのすべての子供をひろう CHILD=SPLINK( PARENT,1 ) '一番最初の子供 WHILE CHILD!=-1 CHILD=SPLINK( CHILD, 2 ) '他の子供を順番に取得 WEND
・SPSET前に使うとエラー。
リンクを解除するスプライトの番号:0~4095
SPUNLINK 15
・SPSET前に使うとエラー。
・設定したアニメーションが自動的に再生される。
・アニメーションは値を設定して指定時間分待つという動作。
・アニメーション開始はSPANIMを実行した次フレームから。
・対象要素ごとに最大32個のデータを受け付ける。
・時間にマイナス値を指定すると直前の値から線形補間を行う(なめらかに動かす)。
アニメーションを設定するスプライトの番号:0~4095
変化させる要素を管理する数値または文字列
0 | "XY" | XY座標 |
1 | "Z" | Z座標 |
2 | "R" | 回転角度 |
3 | "S" | 倍率XY |
4 | "C" | 表示色 |
5 | "V" | 変数(スプライト内部変数7の値) |
6 | "UV" | UV座標(定義元画像座標) |
7 | "I" | 定義番号 |
・文字列の末尾に"+"を付けるか、数値に8を加えるとアニメーション開始時点からの相対値となる。
・文字列の末尾に"."を付けるか、数値に16を加えるとアニメーション終了時にスプライトを削除する。
アニメデータが格納された1次元数値配列
ループ回数: (1~)
・ 0を指定するとで無限ループとなる。
・ 省略時は1。
・アニメデータは数値配列に次の順で用意(最大32個まで)。
・時間1, 項目1,[項目2,] 時間2,項目1,[項目2,]…。
DIM PANIM[6] PANIM[0]=-60 'frame(-60=smooth) PANIM[1]=200 'offset X,Y PANIM[2]=100 PANIM[3]=-30 'frame PANIM[4]=50 'offset PANIM[5]=20 SPSET 0,0 SPANIM 0,"XY",PANIM
・SPSET前に使うとエラー。
アニメーションを設定するスプライトの番号:0~4095
変化させる要素を管理する数値または文字列
0 | "XY" | XY座標 |
1 | "Z" | Z座標 |
2 | "R" | 回転角度 |
3 | "S" | 倍率XY |
4 | "C" | 表示色 |
5 | "V" | 変数(スプライト内部変数7の値) |
6 | "UV" | UV座標(定義元画像座標) |
7 | "I" | 定義番号 |
・文字列の末尾に"+"を付けるか、数値に8を加えるとアニメーション開始時点からの相対値となる。
・文字列の末尾に"."を付けるか、数値に16を加えるとアニメーション終了時にスプライトを削除する。
・アニメデータが格納されたDATA命令の先頭ラベル。
・@ラベル名を""でくくって文字列として指定(または文字変数)。
ループ回数: (1~)
・ 0を指定するとで無限ループとなる。
・ 省略時は1。
アニメデータはDATA命令に次の順で用意
DATA キーフレーム数(最大32)
DATA 時間1,項目1[,項目2]
DATA 時間2,項目1[,項目2]
:
@MOVDATA DATA 2 'counter DATA -60,200,100 'frame,offset DATA -30,50,20 'frame,offset SPSET 0,0 SPANIM 0,"XY",@MOVDATA
・SPSET前に使うとエラー。
アニメーションを設定するスプライトの番号:0~4095
変化させる要素を管理する数値または文字列
0 | "XY" | XY座標 |
1 | "Z" | Z座標 |
2 | "R" | 回転角度 |
3 | "S" | 倍率XY |
4 | "C" | 表示色 |
5 | "V" | 変数(スプライト内部変数7の値) |
6 | "UV" | UV座標(定義元画像座標) |
7 | "I" | 定義番号 |
・文字列の末尾に"+"を付けるか、数値に8を加えるとアニメーション開始時点からの相対値となる。
・文字列の末尾に"."を付けるか、数値に16を加えるとアニメーション終了時にスプライトを削除する。
・アニメデータそのもの(必要な数分並べる、最大32個)。
ループ回数:(1~)
・0を指定するとで無限ループとなる。
・省略時は1。
SPSET 0,0 SPANIM 0,"XY",-60,200,100,-30,50,20
・ANIMDEFで定義したアニメーション定義を指定できる。
・SPSET前に使うとエラー。
アニメーションを設定するスプライトの番号:0~4095
ANIMDEF命令で定義済みの定義番号:0~1023
ANIMDEF 0,"XY",-60,100,0 SPSET 0,0 SPANIM 0,0
アニメーションをクリアするスプライトの番号:0~4095
・SPSETしていない番号を指定するとエラー。
・省略時は全スプライトのアニメーションをクリアする。
SPANIM 0 SPANIM
・SPSET前に使うとエラー。
対象のスプライトの番号: 0~4095
・省略時は全スプライトのアニメーションを停止させる。
SPSTOP
・SPSETの前に使うとエラー。
対象のスプライトの番号:0~4095
・省略時は全スプライトのアニメーションを開始させる。
SPSTART
・SPSET前に使うとエラー。
対象のスプライトの番号: 0~4095
b00 | XY座標 | 1 | #CHKXY |
b01 | Z座標 | 2 | #CHKZ |
b02 | 回転 | 4 | #CHKR |
b03 | 倍率XY | 8 | #CHKS |
b04 | 表示色 | 16 | #CHKC |
b05 | 変数 | 32 | #CHKV |
b06 | UV座標 | 64 | #CHKUV |
b07 | 定義番号 | 128 | #CHKI |
ビットごとに対象割り当て(すべて0の時アニメ停止中)
ST=SPCHK(5) '|b00|#CHKXY| '|b01|#CHKZ| '|b02|#CHKR| '|b03|#CHKS| '|b04|#CHKC| '|b05|#CHKV| '|b06|#CHKUV| '|b07|#CHKI|
・すべてのスプライトはスプライト変数と呼ばれる特殊な変数を持っている。
・スプライト変数はプログラム実行開始時、SPSET,SPCLR呼び出し時にクリアされる。
対象のスプライト番号:0~4095
スプライト変数の名前
・文字列または整数を名前として付ける事ができる。
内部変数に登録する値
・数値または文字列を登録する事ができる。
SPVAR 0,7,1 SPVAR 0,"NAME","VALUE"
対象のスプライト番号:0~4095
スプライト変数の名前。文字列または整数を名前として付ける事ができる
SPVARで登録した値
SPVARで値を登録していない場合は、整数の0が返る。
V=SPVAR(54,0)
対象のスプライト番号:0~4095
削除するスプライト変数の名前
・文字列または整数を名前として付ける事ができる。
・省略時は指定スプライトの全スプライト変数を削除する。
SPVAR 0,7 SPVAR 0,"NAME"
・SPHIT系の命令を使う前に必ず呼ぶこと。
・SPSET前に使うとエラー。
・SPCOLで始点X,始点Yを指定しない場合、その時のSPHOMEの情報が始点X,始点Yとして使用される。その後SPHOMEを変更しても始点X,始点Yは追従しない。
対象のスプライト番号:0~4095
1を指定するとSPSCALEやSPANIMでのスケール変更に合わせて衝突判定の大きさが変化する
0を指定するとスケール変更しても衝突判定の大きさは変化しない
・省略時は0。
SPCOL 3,1
・SPHIT系の命令を使う前に必ず呼ぶこと。
・SPSET前に使うとエラー。
・SPCOLで始点X,始点Yを指定しない場合、その時のSPHOMEの情報が始点X,始点Yとして使用される。その後SPHOMEを変更しても始点X,始点Yは追従しない。
対象のスプライト番号:0~4095
1を指定するとSPSCALEやSPANIMでのスケール変更に合わせて衝突判定の大きさが変化する
0を指定するとスケール変更しても衝突判定の大きさは変化しない
・省略時は0。
0~&HFFFFFFFF(32ビット)
・衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす。
・省略時は&HFFFFFFFF。
SPCOL 3,1,31 SPCOL 3,,31
・SPHIT系の命令を使う前に必ず呼ぶこと。
・SPSET前に使うとエラー。
・SPCOLで始点X,始点Yを指定する場合、SPHOMEの情報は全く使用しない。
対象のスプライト番号:0~4095
・判定領域の始点座標:X,Y(-32768~32767)。
・スプライト左上を原点(0,0)とした相対座標。
判定領域の幅と高さ:W,H(1~65535)
1を指定するとSPSCALEやSPANIMでのスケール変更に合わせて衝突判定の大きさが変化する
0を指定するとスケール変更しても衝突判定の大きさは変化しない
・省略時は0。
0~&HFFFFFFFF(32ビット)
・衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす。
・省略時は&HFFFFFFFF。
SPCOL 3,0,0,32,32,1,255 SPCOL 3,0,0,32,32,,255
・SPSET前に使うとエラー。
対象のスプライト番号:0~4095
スプライトに設定されているスケール対応フラグ
スプライトに設定されている衝突マスク値
SPCOL 3 OUT SC,MSK
・SPSET前に使うとエラー。
対象のスプライト番号:0~4095
衝突判定領域の始点座標
衝突判定領域の幅と高さ
スプライトに設定されているスケール対応フラグ
衝突判定マスク値
SPCOL 3 OUT X,Y,W,H,SC,MSK
・SPSET前に使うとエラー。
対象のスプライト番号:0~4095
・省略時は次の要領で自動計算される。
・SPANIMのXYを線形補完で実行中:前フレームからの移動距離。
・それ以外の場合:0,0。
SPCOLVEC 93
・事前にSPCOLを呼び出しておくこと。
判定するスプライトの番号:0~4095
判定するスプライトの範囲(0~4095)
衝突したスプライトの番号(衝突のないとき-1)
H=SPHITSP(0)
・事前にSPCOLを呼び出しておくこと。
判定するスプライトの番号:0~4095
相手側のスプライトの番号:0~4095
0=衝突なし、1=衝突
H=SPHITSP(0,34)
・引数付きのSPHITSPで衝突先が複数ある場合、引数を省略して再度呼び出す事で衝突先を全て取り出す事ができる。
・事前にSPCOLを呼び出しておくこと。
・事前に引数を省略しないSPHITSPを呼び出しておくこと。
衝突したスプライトの番号(衝突のないとき-1)
H=SPHITSP(0) WHILE H>=0 H=SPHITSP() WEND
・事前にSPCOLを呼び出しておくこと。
判定元の四角形の左上座標
判定元の四角形の幅と高さ
0~&HFFFFFFFF(32ビット)
・衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす。
・省略時は&HFFFFFFFF。
判定元の四角形の移動量
衝突したスプライトの番号(衝突のないとき-1)
H=SPHITRC(0,0,16,16)
・事前にSPCOLを呼び出しておくこと。
衝突相手のスプライトの番号:0~4095
判定元の四角形の左上座標
判定元の四角形の幅と高さ
0~&HFFFFFFFF(32ビット)
・衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす。
・省略時は&HFFFFFFFF。
判定元の四角形の移動量
0=衝突なし、1=衝突
H=SPHITRC(1,0,0,16,16)
・事前にSPCOLを呼び出しておくこと。
判定するスプライトの範囲(0~4095)
判定元の四角形の左上座標
判定元の四角形の幅と高さ
0~&HFFFFFFFF(32ビット)
・衝突判定時に互いのビットのANDをとり0であれば衝突していないとみなす。
・省略時は&HFFFFFFFF。
判定元の四角形の移動量
衝突したスプライトの番号(衝突のないとき-1)
H=SPHITRC(0,0,16,16)
・引数付きのSPHITRCで衝突先が複数ある場合、引数を省略して再度呼び出す事で衝突先を全て取り出す事ができる。
・事前にSPCOLを呼び出しておくこと。
衝突したスプライトの番号(衝突のないとき-1)
H=SPHITRC(0,0,16,16) WHILE (H >= 0) H=SPHITRC() WEND
・衝突時間: 0~1の実数値。
・判定時の座標+速度×衝突時間が衝突座標と一致。
TM=SPHITINFO()
・衝突時間: 0~1の実数値。
・判定時の座標+速度×衝突時間が衝突座標と一致。
衝突時の物体1の座標
衝突時の物体2の座標
SPHITINFO OUT TM,X1,Y1,X2,Y2
・衝突時間: 0~1の実数値。
・判定時の座標+速度×衝突時間が衝突座標と一致。
衝突時の物体1の座標
衝突時の物体1の速度
衝突時の物体2の座標
衝突時の物体2の速度
SPHITINFO OUT TM,X1,Y1,VX1,VY1,X2,Y2,VX2,VY2
・コールバック処理が必要な上級者向けの命令。
・GOSUBでジャンプしてきてほしいラベルか、実行してほしいDEF命令名のどちらかを指定できる。
・CALL SPRITE により全スプライトのコールバック処理を一度に実行する。
・コールバック先ではCALLIDX()関数で番号を取得できる。
対象のスプライト番号:0~4095
呼び出される処理先のラベル
呼び出されるユーザー定義命令の名前
SPFUNC 0,"@PROG" SPFUNC 1,"USERDEF"
クリア対象のスプライト番号:0~4095
SPFUNC 0
対象のスプライト番号:0~4095
0=空き、1=使用中
S=SPUSED(4)
設定を行うレイヤーのID:0~7
0 | 合成しない(上書き) |
1 | 単純合成 |
2 | 加算合成 |
3 | 乗算合成 |
4 | スクリーン合成 |
・省略時は0(合成しない)を指定した事になる。
合成時にレイヤーに乗算する色コード
・色コードの説明はGCOLORを参照。
・省略時は&HFFFFFFFF(白=色を変えない)を指定した事になる。
フィルターを設定するレイヤーの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
フィルター種類を取得するレイヤーのID:0~7
設定されているフィルター種類
FTYPE=LFILTER(1)
・レイヤーに所属する表示要素(テキストスクリーンとスプライト)がクリッピング領域外に表示されなくなる。
クリッピング設定を行うレイヤーのID:0~7
クリッピング矩形を指定する左上座標と右下座標
・省略時はクリッピング設定を解除し、画面全体に表示されるようになる。
・クリッピング設定時に指定された座標を内部で整形しているため、設定座標と異なる座標が返ってくる事がある。
クリッピング設定を取得するレイヤーのID:0~7
取得する左上座標と右下座標
・引数から2D変換行列を生成し設定する。
変換行列を設定するレイヤーのID:0~7
ホーム座標(座標基準点)
・ホーム座標はX,Y引数の座標基準点、回転やスケーリングの中心点として使用する。
・THOME,SPHOMEと同じような機能。
表示座標
・ホーム座標X,YとX,Yとの関係は、「ホーム座標で設定したレイヤー上の座標を、X,Yで設定した画面上の座標に持って行く」と考えれば良い。
・TOFS,SPOFSと同じような機能。
・省略時は0,0を指定した事になる。
拡大縮小の倍率を横(X)と縦(Y)に設定する
・ホーム座標X,Yを中心に拡大・縮小する。
・TSCALE,SPSCALEと同じような機能。
・省略時は1,1を指定した事になる。
回転角
・ホーム座標X,Yを中心に回転する。
・TROT,SPROTと同じような機能。
・省略時は0を指定した事になる。
変換行列を設定するレイヤーのID:0~7
変換行列の入っている実数配列
・要素数が16必要。
・全要素が単精度実数範囲内の値である必要がある。
・行列はOpenGLの変換行列に準じた形式で、射影行列まで含んでいる必要がある。
変換行列をリセットするレイヤーのID:0~7
鳴らす音の種類
効果音番号 | 説明 |
---|---|
0~156 | プリセット音 |
224~255 | ユーザ波形 |
256~383 | BGM音源 |
・省略時は0。
音程の値: -32768~32767 (100で半音)
・省略時は0。
再生する音量: 0~127
・省略時は64。
パンポット: 0(左)~64(中央)~127(右)
・省略時は64。
BEEP 3
鳴らす音の種類
効果音番号 | 説明 |
---|---|
0~156 | プリセット音 |
224~255 | ユーザ波形 |
256~383 | BGM音源 |
・省略時は0。
音程の値: -32768~32767 (100で半音)
・省略時は0。
再生する音量: 0~127
・省略時は64。
パンポット: 0(左)~64(中央)~127(右)
・省略時は64。
発音後の停止・音量・ピッチ・パンポットを操作するためのハンドル:0~15
H=BEEP(152)
BEEP命令を実行して取得したハンドル
変化させるパンポットの値:0(左)~64(中央)~127(右)
H=BEEP(152) WAIT 60 BEEPPAN H,0
BEEP命令を実行して取得したハンドル
変化させる音程の値:-32768~32767
・100で半音。
H=BEEP(152) WAIT 60 BEEPPIT H,1200
BEEP命令を実行して取得したハンドル
・省略時は全効果音を停止する。
秒で指定する
・実数での指定が可能。
・0で即時停止する。
・省略時は0。
BEEPSTOP H=BEEP(152) WAIT 60 BEEPSTOP H
BEEP命令を実行して取得したハンドル
変化させる音量の値: 0~127
H=BEEP(152) WAIT 60 BEEPVOL H,16
曲番号:128~255
・省略時はすべての定義を消去する。
BGMCLEAR
・一時停止にはBGMPAUSEを利用。
再生するトラック番号:0~15
・省略時は全トラックを再開させる。
秒で指定する
・実数での指定が可能。
・0で即時再開する。
・省略時は0。
BGMCONT
対象のトラック番号: 0~15
・省略時は全トラックが対象。
変化させる音程の値:-32768~32767
・100で半音。
BGMPITCH 0,100
再生するトラック番号:0~15
・省略時は0。
・プリセット音源(0~73)。
・ユーザー定義(128~255)。
・再生する音量:0~127。
・フェードインする時間: 0~32767 秒。
BGMPLAY 128
・MMLによる再生はトラック0で行われる。
・ユーザー定義曲番号255がMMLによる曲に書き換わる。
コマンドの文字列
BGMPLAY "T120O4L4CC8D8EE8F8GA8G8E2"
・再開にはBGMCONTを利用する。
再生するトラック番号:0~15
・省略時は全トラック停止させる。
秒で指定する
・実数での指定が可能。
・0で即時停止。
・省略時は0。
BGMPAUSE
・定義した音楽はBGMPLAYで再生可能。
ユーザ定義曲番号:128~255
コマンドの文字列
BGMSET 128,"CDEFG"
・定義した音楽はBGMPLAYで再生可能。
・DATA命令を利用してMMLを内部に登録(DATA "CDEFGAB")。
・DATAの終端には数値の0を定義しておくこと。
ユーザー定義曲番号:128~255
DATAでMML文字列が登録されたラベルまたはラベル文字列
BGMSETD 128,"@MMLTOP"
対象のトラック番号:0~15
・省略時は全トラック停止する。
秒で指定する
・実数での指定が可能。
・0で即時停止。
・省略時は0。
BGMSTOP
トラック番号:0~15
値を設定・取得する変数の番号:0~7
取得した変数の値
BGMVAR 0,1,2 V=BGMVAR(0,1)
再生するトラック番号:0~15
・省略時は0。
設定する音量:0~127
BGMVOL 0,64
・エフェクタがOFFの時は音量が変化する。エフェクタをONにして使用のこと。
設定するトラック番号:0~15
・省略時は0。
設定するエフェクタ効果量:0(ドライ)~127(ウェット)
BGMWET 0,64
0 | #EFCOFF | OFF |
1 | #EFCON | ON |
0: OFF
1: ON
EFCEN 0 S=EFCEN()
0 | #EFCOFF | OFF |
1 | #EFCBATH | 風呂 |
2 | #EFCCAVE | 洞窟 |
3 | #EFCSPACE | 宇宙 |
EFCSET #EFCSPACE
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
・エフェクタがOFFの時は音量が変化する。エフェクタをONにして使用のこと。
BEEPに対するエフェクタの効果:0(ドライ)~127(ウェット)
BGMPLAYに対するエフェクタの効果:0(ドライ)~127(ウェット)
TALKに対するエフェクタの効果:0(ドライ)~127(ウェット)
PCMSTREAMに対するエフェクタの効果:0(ドライ)~127(ウェット)
EFCWET 64,64,64,64 EFCWET 0,0,127,0
PCMCONT
・一定周期で行われるPCMデータの送出が次回はどの配列インデックスから行われるか設定する。
PCMSTREAMで指定した配列のインデックス
PCMPOS 1024
・一定周期で行われるPCMデータの送出が次回はどの配列インデックスから行われるかを返す。
PCMSTREAMで指定した配列のインデックス
PCMPOS OUT P
PCMSTOP
PCMデータが収容されている配列。1次元配列はモノラル、2次元配列はステレオ音声として再生される。
配列はリングバッファとして扱われ、再生しながら書き換えることが可能。
再生するデータのサンプリング周波数(Hz):1~192000
・省略時は48000。
DIM PCMDATA[2,48000] PCMSTREAM PCMDATA,48000
ステレオ音声の左側のPCMデータが収容されている配列。
配列はリングバッファとして扱われ、再生しながら書き換えることが可能。
ステレオ音声の右側のPCMデータが収容されている配列。
配列はリングバッファとして扱われ、再生しながら書き換えることが可能。
再生するデータのサンプリング周波数(Hz):1~192000
・省略時は48000。
DIM PCML[48000],PCMR[48000] PCMSTREAM PCML,PCMR,48000
音量を設定するチャンネルを指定
0 | #PVLEFT | 左 |
1 | #PVRIGHT | 右 |
設定する音量:-32767~32767(負の値を指定すると位相が逆になる)
設定する音量になるまでの出力サンプル数
・省略時は0。
PCMVOL 0,0,48000
音量を設定するチャンネルを指定
0 | #PVLEFT | 左 |
1 | #PVRIGHT | 右 |
・省略時は両方。
設定する音量:-32767~32767(負の値を指定すると位相が逆になる)
PCMVOL 16384
現在の左チャンネル又はモノラル音量: -32767~32767
現在の右チャンネルの音量: -32767~32767
PCMVOL OUT L,R
録音完了/停止=0,録音中=1
RECSTART 10 WHILE RECCHK():WEND
0~RECLEN()-1
左チャンネルのサンプル値
右チャンネルのサンプル値
RECSTART 10 WHILE RECCHK():WEND FOR I=0 TO RECLEN()-1 RECDATA I OUT L,R NEXT
バッファのサンプル数
RECSTART 10 ? RECLEN() '480000
サンプル位置
RECSTART 10 WHILE RECCHK() ? RECPOS WEND
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$
・サンプリング周波数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$
・サンプリング周波数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
RECSTART 10 WAIT 60*5 RECSTOP
・サブプログラム内でのみ設定可能。
設定するバランス:0(サブ側のみ)~64(メイン/サブ均等)~127(メイン側のみ)
設定したバランスになるまでの時間:0~32767(秒)
SNDMSBAL 0,3.5
現在のバランス
SNDMSBAL OUT B
・サブプログラムからの設定は無視される。
設定する音量: 0~127
設定した音量になるまでの時間:0~32767(秒)
SNDMVOL 0,1.5
現在の音量(フェード中であれば指定した時間内で変化する)
V=SNDMVOL()
'BGM/BEEP/TALK SNDSTOP
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
波形を設定する楽器番号: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"
・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"
・サウンドのメモリ容量が許す限りの長さの波形を収容可能(サンプル周波数 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で再生したときにループするかを指定する
・省略時は0(ループしない)。
DIM W[2048] WAVSETA 224,127,0,0,127,W,69,1024,2047,44100,0,#false BGMPLAY "@224O4A1"
再生状態を取得したいトラックの番号:0~15
・省略時は0。
0:再生していない
1:再生中
R=BGMCHK(1) PRINT R
コマンドの文字列
-1:正常
0:エラー(解釈エラーになった文字列位置)
R=CHKMML("T120O4L4CC8D8EE8F8GA8G8E2") PRINT R
FALSE=停止中、TRUE=再生中
RET=TALKCHK()
・指定された配列の全要素に対して以下の演算を行う。(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
フィルタ係数が格納される配列(長さが13以上であること)
・指定した配列の[5..12]は、この命令を実行しても変更されない
0 | #BQAPF | オールパスフィルタ | カットオフ周波数付近の位相のみが変化する |
1 | #BQLPF | ローパスフィルタ | カットオフ周波数以下が通過する |
2 | #BQHPF | ハイパスフィルタ | カットオフ周波数以上が通過する |
3 | #BQBPF | バンドパスフィルタ | カットオフ周波数を中心とした指定の周波数帯域が通過する |
4 | #BQBSF | バンドストップフィルタ | カットオフ周波数を中心とした指定の周波数帯域を遮断する |
5 | #BQLSF | ローシェルフフィルタ | カットオフ周波数以下を指定の増幅率で増幅する |
6 | #BQHSF | ハイシェルフフィルタ | カットオフ周波数以上を指定の増幅率で増幅する |
7 | #BQPEQ | ピーキングイコライザ | カットオフ周波数を中心とした指定の周波数帯域を指定の増幅率で増幅する |
入力信号のサンプリング周波数
・0はエラーとなる。
フィルタのカットオフ周波数
フィルタ種別 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
・指定する配列は全て同じ要素数で、要素数は2のn乗でなければならない。
・出力と入力の配列は同一でもよい。
演算結果が収容される実数部と虚数部の複素数配列
演算する実数部と虚数部の複素数配列
窓関数の値が収容されている配列
・指定した場合、入力の複素数配列に同一インデックスの要素値を乗算した後、フーリエ変換を行う。
・窓関数値配列はFFTWFN命令で得ることもできる。
DIM iR[1024],iI[1024],WF[1024] DIM oR[1024],oI[1024] FFTWFN WF,3 FFT oR,oI,iR,iI,WF
・指定する配列は全て同じ要素数で、要素数は2のn乗でなければならない。
・出力と入力の配列は同一でもよい。
演算結果が収容される実数部と虚数部の複素数配列
演算する実数部と虚数部の複素数配列
DIM iR[1024],iI[1024] DIM oR[1024],oI[1024] IFFT oR,oI,iR,iI
窓関数値を収容する配列
0 | #WFRECT | 矩形窓 |
1 | #WFHAMM | ハミング窓 |
2 | #WFHANN | ハニング窓 |
3 | #WFBLKM | ブラックマン窓 |
DIM WF[1024] FFTWFN WF,#WFHAMM
・配列の先頭から、結果格納配列の末尾まで、それぞれの要素間で演算タイプで指定された演算を行い、結果格納配列に演算結果を格納する。
・パラメータ配列の要素数が結果格納配列の要素数と異なる場合、配列の末尾まで到達したら配列の先頭に戻ってくりかえし参照する。
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には、数値配列、もしくは通常数値を指定できる
・通常数値を指定した場合すべての要素演算にその数値が使用される。
・PRGEDIT命令を実行すると、エディタの折り返しモードが強制的にOFFになる。
・次の場合、PRGEDIT状態が解除され、再度PRGEDITの実行が必要となる。
・LOAD命令やNEWコマンド等で対象スロットの中身が変更された場合
・プログラムをRUNした場合
・エディタで折り返しモードをONにした場合
・操作するプログラムスロット:0~5。
・現在実行中のスロットを指定するとエラー。
・操作対象とする行(カレント行)。
・省略時は先頭行がカレント行となる。
・行番号に-1を指定した場合、最終行がカレント行となる。
PRGEDIT 0
・関数形式で使用すると行番号を返す。
・先にPRGEDITでソースコード操作を開始していないとエラー。
・操作中のプログラムスロット。
・操作中のソースコード行番号。
PRGEDIT OUT SLOT,LINE LINE=PRGEDIT()
・1の場合、PRGGETを呼び出すとカレント行を取得後自動的に1行下に移動させる。これによりPRGGETを連続して呼び出すだけでソースコードを1行ずつ取得できる 。
・0の場合カレント行は自動で移動しない。カレント行の移動はPRGSEEKで行う必要がある。
・省略時は1が指定される。
・カレント行のソース文字列(範囲外の場合、空文字列)。
A$=PRGGET$()
1 | 1行下に移動する |
-1 | 1行上に移動する |
・省略時は1。
・関数形式で使用した場合、移動できた場合は1を、先頭行または最終行から先に移動しようとしてできなかった場合は0を返す。
R=PRGSEEK(1)
・PRGGET$が空文字列を返す場合は行追加。
カレント行を置き換える文字列
PRGSET "'Comment"
・改行コードCHR$(10)を含む文字列は複数行の挿入。
・挿入するソース文字列。
1 | カレント行の後方に挿入する |
0 | カレント行の前方へ挿入する |
・省略時は0。
PRGINS "PRINT "+CHR$(34)+"HELLO"+CHR$(34)
削除したい行の数
・マイナス値を入れた場合全体を削除する。
・省略時は1が指定される。
PRGDEL
行数を取得するプログラムスロット:0~5
・省略時は現在実行中のプログラムスロットを指定した事になる。
0 | 行数(デフォルト) |
1 | 文字数 |
2 | 空き文字数 |
タイプに応じた値
A=PRGSIZE(0)
・LOAD/SAVE命令で指定したファイル名が返る。
ファイル名を取得するプログラムスロット:0~5
・省略時は現在実行中のプログラムスロットを指定した事になる。
指定プログラムスロットに読み込まれているプログラムのファイル名
PRINT PRGNAME$(0)
・サブプログラム内でのみ意味を持つ命令。メインプログラムやダイレクトモードから使用しても何も起きない。
・サブプログラムはこの命令を実行するまで画面表示ができない。
・XSUBSCREENはサブ画面の外形を設定する命令で、その中のBASIC画面解像度は別途XSCREENで設定する必要がある。
サブ画面のメイン画面上での表示オフセット:-32768~32767
サブ画面の表示サイズ 幅:1~1280, 高さ:1~720
・サブプログラム内でのみ意味を持つ命令。メインプログラムやダイレクトモードから使用しても何も起きない。
・この命令を実行するとサブプログラムが画面から消える。
表示を消す場合、引数は0を指定する
・サブプログラム内でのみ意味を持つ命令。メインプログラムやダイレクトモードから使用すると 0,0 が返る。
サブ画面のメイン画面上での表示オフセット
サブ画面の表示サイズ
・サブプログラム内でのみ意味を持つ命令。メインプログラムやダイレクトモードから使用しても何も起きない。
設定するメインインタプリタの状態
・0のみ指定可能。
・現在の状態が3,4の場合は設定されない。
0 | ダイレクトモードで待機中 |
1 | 実行中断中 |
2 | エラーで実行停止 |
3 | プログラム実行中 |
4 | プログラム編集中 |
0 | ダイレクトモードで待機中 |
1 | 実行中断中 |
2 | エラーで実行停止 |
3 | プログラム実行中 |
4 | プログラム編集中 |
現在の実行スロット
現在の編集スロット
0 | ダイレクトモードで待機中 |
1 | 実行中断中 |
2 | エラーで実行停止 |
3 | プログラム実行中 |
4 | プログラム編集中 |
エラーが発生していた場合、0以外の値が返る
エラー発生時に発生した引数が分っている場合、正の値が返る
エラーが発生していた場合、発生したプログラムスロットが返る
エラーが発生していた場合、発生したソースコード上の先頭からの文字位置が返る
エラーが発生していた場合、発生したソースコード上の行番号が返る
・サブインタプリタでのみ有効な命令。
プログラムスロットをコピーする場合0を指定する
コピー元のメインインタプリタのプログラムスロット
コピー先のサブインタプリタのプログラムスロット
・サブインタプリタでのみ有効な命令。
グラフィックページをコピーする場合1を指定する
コピー元のメインインタプリタのグラフィックページ
コピー先のサブインタプリタのグラフィックページ
・サブインタプリタでのみ有効な命令。
SPDEF定義をコピーする場合2を指定する
コピー元のメインインタプリタのSPDEF定義番号
コピー先のサブインタプリタのSPDEF定義番号
グラフィックページをコピーする場合1を指定する
コピー元のサブインタプリタのグラフィックページ
コピー先のメインインタプリタのグラフィックページ
SPDEF定義をコピーする場合2を指定する
コピー元のサブインタプリタのSPDEF定義番号
コピー先のメインインタプリタのSPDEF定義番号
取得する入力履歴の番号。大きいほど過去の履歴となる:(0~32)
・0を指定すると、履歴ではなく現在入力中のコンソール行を取得する。
・省略時は0。
入力行、もしくは指定入力履歴の内容文字列
インタプリタのタイプ
0 | メインインタプリタ |
1 | サブインタプリタ |
2 | UIインタプリタ |
起動時に設定されたパラメーター
・ユーザーが作成できるプログラムでは常に-1が返る。
1でフォーカスを取得、0でフォーカスを譲渡
フォーカスを持っているかどうか
・1で持っている、0で持っていない。
入力される文字列
・最大64文字。
・内部実装用命令。使用禁止。
カーソル位置にある命令名の文字列
・命令名がない場合は"DEFAULTHELPKEY"が返る。
行数を返す配列
・配列の要素数はページ数となる。
・内部実装用命令。使用禁止。
取得する命令名の文字列
行数を返す配列
・配列の要素数はページ数となる。
・内部実装用命令。使用禁止。
取得する命令名の文字列
取得するページ番号
取得する行番号
各値は1行分の文字列
・配列サイズは行分となる。
各値のタグはインデント数・色情報
・内部情報にHEADが含まれる場合は見出しとなり、PAGEUP・DOWNで見出し間移動に使われる。
・配列サイズは行分となる。
値 | 説明 |
---|---|
0 | 基本的な行 |
1 | タイトルスクロールしても見える |
2 | 引数見出し |
3 | 返値見出し |
4 | その他の見出し |
5 | タイトル直下の説明 |
6 | 引数小見出し |
7 | 返値小見出し |
8 | その他の小見出し |
行内の特定の文字列に対して属性情報
・配列は3次元配列となり、配列の大きさは行数、行単位の属性数、属性番号となる。
・参考: ARRAY#(行数,行単位の属性数,属性種類)
・属性番号が0(位置)の取得値がマイナスの場合、各属性情報は無効。
Index | 説明 |
---|---|
0 | 位置 |
1 | 位置からの長さ |
2 | 色 |
・対応する属性は増えるごとに配列内の構造も変化する可能性がある。
コード例の文字列