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