SmileBASIC 4.4.8
リファレンスマニュアル
更新日 2023/12/07
目次
- 命令概要(基本命令)
- 命令概要(表示命令)
- 命令概要(入力、サウンド、その他)
- ダイレクトモード専用命令
- 変数や配列の定義、操作に関する命令
- 制御命令
- 数学関連
- 文字列操作
- その他
- 各種入力
- 各種入力(Toy-Con)
- ファイル
- スクリーン制御
- テキストスクリーン入出力
- グラフィック
- スプライト
- レイヤー
- サウンド
- 高度な演算
- ソースコード操作
- サブプログラム
更新日 2023/12/07
消去するテキストスクリーンの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