Pasocom Mini SmileBASIC Reference manual
Version 2017.07.07
こちらは、株式会社ハル研究所から発売される「パソコンミニ」に搭載されたSmileBASICのリファレンスマニュアルページとなります。
最終的な命令等の仕様については今後の調整で予告なく変更になる可能性があります。ご了承ください。
→ 株式会社ハル研究所「パソコンミニ」の公式ページはこちら
→ Pasocom Mini 用 SmileBASICのリファレンスマニュアル PDF はこちら
※「Pasocom Mini」は株式会社ハル研究所の登録商標です
※「SmileBASIC」は株式会社スマイルブームの登録商標です
■目次
▼基本的な情報
▼DIRECTモードでのみ利用できる命令
▼変数や配列の定義、配列操作に関する命令
▼比較、分岐、くりかえしなどの制御命令
▼ユーザー定義関数や拡張機器の制御などの命令
▼データ読み込み、垂直同期、コメントなどの命令
▼コンソール画面への文字表示や文字列の入力に関する命令
▼入力装置関係の命令
▼ファイルへの読み書き、一覧取得などの命令
▼画面の表示モードなどに関する命令
▼グラフィック画面への描画命令
▼スプライトの制御命令
▼サウンド関係の命令
▼数学関係の命令
▼文字列操作関係の命令
▼ソースコード操作関係の命令
▼拡張サウンドユニット関係の命令
▼エミュレータ関係の命令
▼GPIO制御関係の命令(I2C/SPI含む)
 
 
 
©2017 SmileBoom Co.Ltd.
▼基本的な情報
■エラー表
◎エラー用システム変数
エラーが発生すると、システム変数に情報が残ります。
ERRNUM (エラー番号)
ERRLINE (発生した行番号)
◎主なエラーの内容
3:Syntax error(文法が間違っている)
4:Illegal function call(命令や関数の引数の数が違う)
5:Stack overflow(スタックがあふれた)
6:Stack underflow(スタックが不足)
7:Divide by zero(0による除算)
8:Type mismatch(変数の型が一致しない)
9:Overflow(演算結果が許容範囲を超えた)
10:Out of range(範囲外の数値を指定)
11:Out of memory(メモリー不足)
12:Out of code memory(コード領域のメモリー不足)
13:Out of DATA(READできるDATAが不足)
14:Undefined label(指定されたラベルが存在しない)
15:Undefined variable(指定された変数が存在しない)
16:Undefined function(指定された命令・関数が存在しない)
17:Duplicate label(ラベルが二重定義されている)
18:Duplicate variable(変数が二重定義されている)
19:Duplicate function(命令・関数が二重定義されている)
20:FOR without NEXT(NEXTが無いFORがある)
21:NEXT without FOR(FORが無いNEXTがある)
22:REPEAT without UNTIL(UNTILが無いREPEATがある)
23:UNTIL without REPEAT(REPEATが無いUNTILがある)
24:WHILE without WEND(WENDが無いWHILEがある)
25:WEND without WHILE(WHILEが無いWENDがある)
26:THEN without ENDIF(ENDIFが無いTHENがある)
27:ELSE without ENDIF(ENDIFが無いELSEがある)
28:ENDIF without IF(IFが無いENDIFがある)
29:DEF without END(ENDが無いDEFがある)
30:RETURN without GOSUB(GOSUBが無いRETURNがある)
31:Subscript out of range(配列添字が範囲外)
32:Nested DEF(DEF内でDEFを定義した)
33:Can't continue(CONTでプログラムを再開できない)
34:Illegal symbol string(ラベル文字列の記述方法が間違っている)
35:Illegal file format(SMILEBASICでは扱えないファイル形式)
38:Use PRGEDIT before any PRG function(PRGEDITせずにPRG系の命令を使った)
39:Animation is too long(アニメーション定義が長すぎる)
40:Illegal animation data(不正なアニメーションデータ)
41:String too long(文字列が長すぎる)
43:Can't use from direct mode(ダイレクトモードでは使えない命令)
44:Can't use in program(プログラム内では使えない命令)
45:Can't use in tool program(ツールプログラム内からは使えない命令)
46:Load failed(ファイル読み込みに失敗)
48:Uninitialized variable used(未初期化変数を参照しようとした)
49:Protected resource(保護リソースを読み出そうとした)
50:Protected file(保護ファイルを操作しようとした)
52:Incompatible statement(現在の互換モードで使用できない機能を使おうとした)
53:without CALL(ユーザー定義命令を呼び出す前にユーザー定義末尾のENDに遭遇)
54:Array is too large(SAVE命令で保存しようとした配列のサイズが大きすぎる)
■システム変数
◎システム変数とは?
SmileBASICが管理しているシステムで予約された変数です。
※基本読み取り専用ですが一部代入できる変数もあります
◎例
CSRX 'カーソル位置X
CSRY 'カーソル位置Y
CSRZ 'カーソル位置Z(奥行)
FREEMEM '残りユーザーメモリー(キロバイト)
VERSION 'システムバージョン(&HXXYYZZZZ)
TABSTEP 'TAB移動量(書込み可能)
SYSBEEP 'システム効果音制御(書込み可能、TRUE=許可)
ERRNUM 'エラー番号
ERRLINE 'エラー発生行
ERRPRG 'エラー発生プログラムSLOT
PRGSLOT 'PRG命令のカレントプログラムSLOT
RESULT 'ダイアログの結果(TRUE/FALSE/-1=中断)
MAINCNT 'SmileBASIC起動時からのフレーム数
MILLISEC 'SmileBASIC起動時からのミリセカンド値
MICPOS 'サンプリングの現在位置
MICSIZE 'サンプリングバッファのサンプリング数
TRUE '常に1
FALSE '常に0
TIME$ '時刻文字列("HH:MM:SS")
DATE$ '日付文字列("YYYY/MM/DD")
HARDWARE 'ハードウェア情報(0=ニンテンドー3DS,1=Newニンテンドー3DS,2=Wii U)
CALLIDX 'SPFUNCおよびBGFUNCで呼び出された番号
■DIRECTモード専用
DIRECTボタンを押した状態でのみ利用できる命令
※EDITモードでプログラムに書くことはできません
◎例
CLEAR
NEW
LIST
RUN
CONT
PROJECT "DEFAULT"
■変数と配列
変数や配列の定義、配列操作に関する命令
◎例
DIM TMP%[10]
VAR A
INC NO
DEC NO
SWAP A,B
COPY TMP%,WRK%
SORT TMP%
RSORT TMP%
PUSH TMP%,123
V=POP(TMP%)
UNSHIFT TMP%,123
SHIFT(TMP%)
FILL TMP%,0
■制御と分岐
比較、分岐、くりかえしなどの制御命令
◎例
GOTO @LABEL
GOSUB @LABEL
END
STOP
@LABEL
RETURN
IF NO==0 THEN NO=1 ELSE NO=2
IF NO==0 THEN NO=1 ELSEIF NO==2 THEN N=3
ON IX GOTO @LABEL
ON IX GOSUB @LABEL
IF IX==0 GOTO @LABEL
FOR IX=0 TO 9 STEP 1:NEXT
WHILE SW==0:WEND
REPEAT:UNTIL SW==0
BREAK
CONTINUE
■高度な制御
ユーザー定義関数や拡張機器の制御などの命令
◎例
DEF SUB X,Y:END
DEF FUNC(X,Y):RETURN 0:END
DEF GETXY NO OUT X,Y:END
COMMON DEF SUB X,Y:END
CALL "LOCATE",X,Y
V=CALL("ASC","A")
XON MOTION 'MOTION/MIC/EXPAD
XOFF EXPAD
■データ操作・その他
データ読み込み、垂直同期、コメントなどの命令
◎例
READ A,B$
DATA 123,"ABC"
RESTORE @DTOP
OPTION STRICT
WAIT 60
VSYNC 1
'--- comment
KEY 1,"TEST"
TMREAD OUT H,M,S
DTREAD OUT Y,M,D
F=CHKLABEL("@SUB",1)
F=CHKCALL("PRINT")
F=CHKVAR("SW")
DIALOG "MESSAGE"
CLIPBOARD "SAMPLE"
S$=CLIPBOARD()
DLCOPEN "XEVIOUS"
■コンソール入出力
テキスト画面への文字表示や文字列の入力に関する命令
◎例
CLS
PRINT "A=";A;",B$=";B$
COLOR 15,0
LOCATE 0,0,0
ATTR 0
SCROLL VX,VY
C=CHKCHR(X,Y)
INPUT "NO:";NO
LINPUT "STR=";S$
K$=INKEY$()
FONTDEF
WIDTH 16
A=WIDTH()
■各種入力
ボタン・スティック・タッチ・センサー・マイクの情報取得命令
◎例
B=BUTTON(0) '0=NEW/1=REPEAT/2=IMPACT/3=RELEASE
BREPEAT BID,W1ST,WREP
STICK OUT STX,STY
STICKEX OUT STEX,STEY
ACCEL OUT X,Y,Z
GYROV OUT P,R,Y
GYROA OUT P,R,Y
GYROSYNC
TOUCH OUT TIME,TCX,TCY
MICSTART RATE,BIT,SEC
MICSTOP
V=MICDATA(POS)
MICSAVE W%
V=CONTROLLER(ID)
■ファイル
一覧取得、ファイルへの読み書きなどの命令
◎例
FILES
LOAD"SYS/PRG1:EX1TEXT"
SAVE"TEST"
RENAME "TEST","NEWTEST"
DELETE "NEWTEST"
EXEC"PRG1:STDLIB"
USE 1
■スクリーン制御
画面の表示モードなどに関する命令
◎例
XSCREEN MODE,SPMAX,BGMAX
DISPLAY 0
VISIBLE CON,GRP,BG,SP
BACKCOLOR RGB(0,0,0)
C=BACKCOLOR()
FADE RGB(255,64,64,64),60
C=FADE()
R=FADECHK()
■グラフィック描画
ピクセル単位で線や円や矩形などを描画するための機能
◎例
GPAGE VPG,WPG
GPAGE OUT VP,WP
GCOLOR RGB(255,255,255)
C=RGB(255,128,64)
RGBREAD C OUT R,G,B
GCLIP MODE,TX,TY,EX,EY 'MODE(0=V,1=W)
GPRIO Z
GCLS
C=GSPOIT(X,Y)
GPSET X,Y,C
GLINE TX,TY,EX,EY,C
GCIRCLE CX,CY,R,C
GBOX TX,TY,EX,EY,C
GFILL TX,TY,EX,EY,C
GPAINT X,Y,C
GCOPY PG,TX,TY,EX,EY,MD 'MD(0=OVERWRITE)
GSAVE PG,W%,FLG 'FLG(0=32bitCOLOR)
GSAVE PG,TX,TY,EX,EY,W%,FLG
GLOAD W%,FLG,MD<b>
GLOAD X,Y,W,H,W%,FLG,MD
GLOAD W%,PAL%,MD
GTRI X1,Y1,X2,Y2,X3,Y3
GPUTCHR X,Y,ABC
GPUTCHR16 X,Y,ABC
■スプライト
自由に動かせる矩形単位の画像表示に関する機能
◎例
SPPAGE 4
P=SPPAGE()
SPCLIP TX,TY,EX,EY
SPDEF DEFNO,U,V,W,H,HX,HY,A
SPDEF "@DEFDT"
SPDEF DEFNO OUT U,V,W,H,HX,HY,A
SPDEF "@DEFDT",OFS,UOFS,VOFS 
SPSET IX,DEFNO
SPSET IX,U,V,W,H,A
SPCLR IX
SPSHOW IX
SPHIDE IX
SPHOME IX,HX,HY
SPOFS IX,X,Y,Z
SPOFS IX OUT X,Y,Z
SPROT IX,A
SPROT IX OUT A
SPSCALE IX,SX,SY
SPSCALE IX OUT SX,SY
SPCOLOR IX,RGB(128,255,255,255)
SPCOLOR IX OUT C
SPCHR IX,DEFNO
SPCHR IX,U,V,W,H,A
SPCHR IX OUT U,V,W,H,A
SPCHR IX OUT DEFNO
SPLINK IX,PARENTIX
SPUNLINK IX
SPANIM IX,"XY+",-60,200,120,0
SPANIM IX,"XY+",W%,0
SPANIM IX,"XY+","@SPDAT"
A=SPCHK(IX)
SPVAR IX,VNO,123
SPVAR IX OUT V
SPCOL IX,SCALE,MASK
SPCOL IX,OX,OY,W,H,SCALE,MASK
SPCOLVEC IX,VX,VY
SW=SPHITSP(IX,IX2)
SW=SPHITRC(X,Y,W,H,MASK,VX,VY)
SPHITINFO OUT T,X1,Y1,VX1,VY1,X2,Y2,VX2,VY2
S=SPUSED(IX)
SPFUNC IX,@PROG
■サウンド
音楽や効果音の演奏とエフェクター設定および音声合成
◎例
BEEP NO,PITCH,VOL,PAN
WAVSET IX,A,D,S,R,WAV$
WAVSETA IX,A,D,S,R,TMP%,NOTE,OT,OE
V=BGMCHK()
BGMCLEAR
BGMPLAY NO
BGMPLAY "CDEFGAB<C"
BGMSET BGMNO,"CDEFGAB<C"
BGMSETD BGMNO,"@BGMDT"
BGMVAR TRK,IX,123
V=BGMVAR(TRK,IX)
BGMSTOP
BGMVOL VOL
BGMPAUSE
V=BGMPAUSE()
BGMCONT
SNDSTOP
■数学
三角関数や対数などの数学系の命令
◎例
VI=FNUM DIV FNUM2
VI=FNUM MOD FNUM2
VI=FNUM AND NUM
VI=FNUM OR NUM
VI=FNUM XOR NUM
VI=FNUM << NUM
VI=FNUM >> NUM
VI=FLOOR(FNUM)
VI=ROUND(FNUM)
VI=CEIL(FNUM)
V=ABS(NUM)
V=SGN(NUM)
V=MIN( NUMARR )
V=MAX( NUMARR )
V=RND(100)
VF=RNDF(100)
RANDOMIZE SEED
V=SQR(NUM)
V=EXP(NUM)
V=LOG(NUM)
V=POW(NUM,2)
V=PI()
V=RAD(NUM)
V=DEG(NUM)
V=SIN(NUM)
V=COS(NUM)
V=TAN(NUM)
V=ASIN(NUM)
V=ACOS(NUM)
V=ATAN(NUM)
V=ATAN(Y,X)
V=SINH(NUM)
V=COSH(NUM)
V=TANH(NUM)
V=CLASSIFY(NUM)
■文字列操作
文字列の表示書式指定や抽出などの命令
◎例
V=ASC("A")
S$=CHR$(&H41)
V=VAL("123")
S$=STR$(123)
S$=HEX$(123,4)
S$=FORMAT$("%03D",NUM)
S$=FORMAT$("%8.2F",NUM)
V=LEN("ABCDE")
S$=MID$("ABCDE",2,1)
S$=LEFT$("ABCDE",2)
S$=RIGHT$("ABCDE",2)
V=INSTR("ABCDE",CD)
S$=SUBST$("ABCDE",2,"XY")
■ソースコード操作
指定したSLOTにプログラム文字列を書き込む機能
◎例
PRGEDIT SLOT
S$=PRGGET$()
PRGSET "BEEP 27"
PRGINS "'--- comment"
PRGDEL
V=PRGSIZE(SLOT)
S$=PRGNAME$(SLOT)
■利用可能な漢字
◎例
'--- あ(45)
DATA "あぁアァ亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏"
'--- い(62)
DATA "いぃイィ以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭院陰隠韻吋"
'--- う(32)
DATA "うぅウゥヴ右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲"
'--- え(58)
DATA "えぇエェ荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩"
'--- お(39)
DATA "おぉオォ於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音"
'--- か(239)
DATA "かがカガ下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願"
'--- き(186)
DATA "きぎキギ企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀"
'--- く(50)
DATA "くぐクグ九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡"
'--- け(112)
DATA "けげケゲ卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限"
'--- こ(176)
DATA "こごコゴ乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂"
'--- さ(116)
DATA "さざサザ些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残"
'--- し(401)
DATA "しじシジ仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭"
'--- す(44)
DATA "すずスズ笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸"
'--- せ(119)
DATA "せぜセゼ世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎"
'--- そ(103)
DATA "そぞソゾ噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜"
'--- た(113)
DATA "ただタダ他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談"
'--- ち(90)
DATA "ちぢチヂ値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳"
'--- つ(35)
DATA "つっづツッヅ津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴"
'--- て(70)
DATA "てでテデ亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電"
'--- と(124)
DATA "とどトド兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍"
'--- な(21)
DATA "なナ奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝"
'--- に(21)
DATA "にニ二尼弐迩匂賑肉虹廿日乳入如尿韮任妊忍認"
'--- ぬ(3)
DATA "ぬヌ濡"
'--- ね(14)
DATA "ねネ禰祢寧葱猫熱年念捻撚燃粘"
'--- の(16)
DATA "のノ乃廼之埜嚢悩濃納能脳膿農覗蚤"
'--- は(124)
DATA "はばぱハバパ巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮"
'--- ひ(93)
DATA "ひびぴヒビピ匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶"
'--- ふ(74)
DATA "ふぶぷフブプ不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞"
'--- へ(41)
DATA "へべぺヘベペ丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭"
'--- ほ(103)
DATA "ほぼぽホボポ保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"
'--- ま(35)
DATA "まマ摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓"
'--- み(18)
DATA "みミ味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠"
'--- む(12)
DATA "むム務夢無牟矛霧鵡椋婿娘"
'--- め(19)
DATA "めメ冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺"
'--- も(29)
DATA "もモ摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁"
'--- や(22)
DATA "やゃヤャ也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓"
'--- ゆ(36)
DATA "ゆゅユュ愉愈油癒諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕"
'--- よ(44)
DATA "よょヨョ予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀"
'--- ら(21)
DATA "らラ羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧"
'--- り(68)
DATA "りリ利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟"
'--- る(7)
DATA "るル瑠塁涙累類"
'--- れ(35)
DATA "れレ令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯蓮連錬"
'--- ろ(31)
DATA "ろロ呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論"
'--- わ(25)
DATA "わをんワヲン倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"
■定数
・システムに用意された32bit数値の定義
・色の指定やボタンを扱う時に数値代わりに利用
・IF BUTTON() AND (#A OR #B) THEN のように使用
◎例
'--- 汎用
#ON    '1
#OFF   '0
#YES   '1
#NO    '0
#TRUE  '1
#FALSE '0
'--- RGB(グラフィック用)
#AQUA    '&HFF00F8F8
#BLACK   '&HFF000000
#BLUE    '&HFF0000FF
#CYAN    '&HFF0000F8
#FUCHSIA '&HFFF800F8
#GRAY    '&HFF808080
#GREEN   '&HFF008000
#LIME    '&HFF00F800
#MAGENTA '&HFFF800F8
#MAROON  '&HFF800000
#NAVY    '&HFF000080
#OLIVE   '&HFF808000
#PURPLE  '&HFF800080
#RED     '&HFFF80000
#SILVER  '&HFFC0C0C0
#TEAL    '&HFF008080
#WHITE   '&HFFF8F8F8
#YELLOW  '&HFFF8F800
'--- TEXTCOLOR(文字の色)
#TBLACK   '1、黒
#TMAROON  '2、暗い赤
#TRED     '3、赤
#TGREEN   '4、緑
#TLIME    '5、明るい緑
#TOLIVE   '6、暗い黄色
#TYELLOW  '7、黄色
#TNAVY    '8、暗い青
#TBLUE    '9、青
#TPURPLE  '10、紫
#TMAGENTA '11、明るい紫
#TTEAL    '12、暗い水色
#TCYAN    '13、水色
#TGRAY    '14、灰
#TWHITE   '15、白
'--- BUTTON
#UP    '&H0001、上
#DOWN  '&H0002、下
#LEFT  '&H0004、左
#RIGHT '&H0008、右
#A     '&H0010
#B     '&H0020
#X     '&H0040
#Y     '&H0080
#L     '&H0100
#R     '&H0200
#ZR    '&H0800
#ZL    '&H1000
'--- ATTR
#TROT0   '&H00、回転なし
#TROT90  '&H01、回転90度
#TROT180 '&H02、回転180度
#TROT270 '&H03、回転270度
#TREVH   '&H04、左右反転
#TREVV   '&H08、上下反転
'---SPSET/SPCHR ATTR
#SPSHOW   '&H01、表示
#SPROT0   '&H00、回転なし
#SPROT90  '&H02、回転90度
#SPROT180 '&H04、回転180度
#SPROT270 '&H06、回転270度
#SPREVH   '&H08、左右反転
#SPREVV   '&H10、上下反転
#SPADD    '&H20、加算合成
'--- BG ATTR
#BGROT0   '&H0000、回転なし
#BGROT90  '&H1000、回転90度
#BGROT180 '&H2000、回転180度
#BGROT270 '&H3000、回転270度
#BGREVH   '&H4000、左右反転
#BGREVV   '&H8000、上下反転
'--- SPCHK/BGCHK
#CHKXY '&H01、XY座標
#CHKZ  '&H02、Z座標
#CHKUV '&H04、画像位置
#CHKI  '&H08、DEF定義
#CHKR  '&H10、回転
#CHKS  '&H20、スケール
#CHKC  '&H40、色
#CHKV  '&H80、内部変数
'--- DLC:SOUND:BQPARAM
#BQAPF '0、オールパスフィルタ
#BQLPF '1、ローパスフィルタ
#BQHPF '2、ハイパスフィルタ
#BQBPF '3、バンドパスフィルタ
#BQBSF '4、バンドストップフィルタ
#BQLSF '5、ローシェルフフィルタ
#BQHSF '6、ハイシェルフフィルタ
#BQPEQ '7、ピーキングイコライザ
'--- DLC:SOUND:FFTWIN
#WFRECT '0、矩形窓
#WFHAMM '1、ハミング窓
#WFHANN '2、ハニング窓
#WFBLKM '3、ブラックマン窓
'--- DLC:SOUND:ARYOP
#AOPADD '0、加算(p1+p2)
#AOPSUB '1、減算(p1-p2)
#AOPMUL '2、乗算(p1*p2)
#AOPDIV '3、除算(p1/p2)
#AOPMAD '4、積和(p1*p2+p3)
#AOPLIP '5、線形補間(p1*p3+p2*(1-p3))
#AOPCLP '6、クランプ(p1をp2<=x<=p3に丸める)
'--- DLC:SOUND:PCMVOL
#PVLEFT '0
#PVRIGHT '1
■CSRX
現在のカーソル位置(横方向)
◎例
PRINT CSRX
■CSRY
現在のカーソル位置(縦方向)
◎例
PRINT CSRY
■CSRZ
現在の奥行方向のカーソル座標
(奥:1024<液晶面:0<手前:-256)
◎例
PRINT CSRZ
■FREEMEM
残りユーザー用のメモリー容量(バイト単位)
◎例
PRINT FREEMEM
■VERSION
◇システムのバージョン番号
Ver XX.YY.ZZZZの場合、16進で&HXXYYZZZZとなる
◎例
PRINT HEX$(VERSION)
■TABSTEP
◇PRINT命令の「,」による基準幅
※書き込み可能
◎例
PRINT TABSTEP
TABSTEP=4
■SYSBEEP
◇システム効果音の有無(TRUE=あり、FALSE=なし)
※書き込み可能
◎例
PRINT SYSBEEP
SYSBEEP=FALSE
■ERRNUM
エラーが発生した時のエラー番号
◎例
PRINT ERRNUM
■ERRLINE
エラーが発生した時の行番号
◎例
PRINT ERRLINE
■ERRPRG
エラーが発生した時のプログラムSLOT
◎例
PRINT ERRPRG
■PRGSLOT
プログラム操作命令(PRGEDIT等)のカレントプログラムSLOT
◎例
PRINT PRGSLOT
■RESULT
◇確認ダイアログを表示する命令(※)の処理結果
・TRUE=成功、FALSE=失敗、-1=中断
※LOAD、SAVE、DELETEを実行した際に表示される
◎例
PRINT RESULT
■MAINCNT
SmileBASIC起動時からのフレームカウント数
◎例
PRINT MAINCNT
■MILLSEC
SmileBASIC起動時からのミリセカンド値
◎例
PRINT MILLISEC
■TRUE
◇論理値の「真」(TRUEの値は常に1)
例えばA=0の時、B=(A==0)の結果BにはTRUE(=1)が入る
◎例
PRINT TRUE
■FALSE
◇論理値の「偽」(FALSEの値は常に0)
例えばA=0の時、B=(A!=0)の結果BにはFALSE(=0)が入る
◎例
PRINT FALSE
■TIME$
◇現在の時刻文字列("HH:MM:SS")
7時41分5秒の時、"07:41:05"
◎例
PRINT TIME$
■DATE$
◇現在の日付文字列("YYYY/MM/DD")
2014年9月15日の時、"2014/09/15"
◎例
PRINT DATE$
■HARDWARE
環境判定用システム変数(0=ニンテンドー3DS,1=Newニンテンドー3DS,2=Wii U)
◎例
PRINT HARDWARE
■CALLIDX
◇SPFUNCおよびBGFUNCで呼び出された番号
・SPRITEの場合0~511、BGの場合0~3
◎例
PRINT CALLIDX
■EXTFEATURE
◇拡張命令のサポート状況
デフォルトは0、高度サウンド命令パックが存在する場合は1
◎例
PRINT EXTFEATURE
▼DIRECTモードでのみ利用できる命令
■CLEAR
◇BASIC内部のメモリーを初期化
DIRECTモード専用
◎例
CLEAR
■NEW [プログラムSLOT]
◇プログラムを消去
DIRECTモード専用
◎引数
◇プログラムSLOT
0~3:指定SLOTのみ消去(省略時:全SLOT消去)
◎例
NEW
NEW 3
■LIST [ 行番号/ERR ]
◇EDITモードへの切り替えと編集開始
・DIRECTモード専用
・引数のないLISTは、EDITボタンを押すことと同じ働き
◎引数
◇行番号
・省略するとデフォルト行から表示
・2:120のような書き方でプログラムSLOTを指定
◇ERR
直前にエラーの発生した行を指定
◎例
LIST ERR
LIST 1:
■RUN [プログラムSLOT]
◇プログラムの実行
DIRECTモード専用
◎引数
◇プログラムSLOT
実行する指定プログラムSLOT(0~3、省略時=0)
◎例
RUN
RUN 1
■CONT
◇停止中のプログラムを再開
・DIRECTモード専用
・STARTボタン、STOP、エラー等の中断位置から実行再開
・プログラム編集を行うと再開できない
・入力待ちの途中で中断したときは再開できない
・エラー種類によっても再開できない
◎例
CONT
■PROJECT プロジェクト名 (1/2 →)
◇デフォルトプロジェクトの切り替え
DIRECTモード専用
◎引数
◇プロジェクト名
変更するプロジェクト名文字列
・新規作成はTOP MENUから行う
・プロジェクト名を  にするとDEFAULT扱いとなる
◎補足
◇カレントプロジェクト3つの状態
1) 起動時のカレントプロジェクト(OPTIONで設定)
2) 非実行時のカレントプロジェクト(PROJECT命令で設定)
3) 実行時のカレントプロジェクト(EXEC等の実行時に設定)
それぞれの設定時には下位のプロジェクト設定も更新されます。例えば、OPTION設定でカレントプロジェクトを変更した場合、非実行時と実行時のプロジェクトも同時に変化します。また、実行開始(RUN、ツール実行、VIEWERから実行)時には、実行時カレントプロジェクトは非実行時カレントプロジェクトが初期値として設定されます。
◎例
PROJECT 
■PROJECT OUT PJ$ (← 2/2)
◇デフォルトプロジェクトの取得
プログラムの中からも利用可能
◎引数
なし
◎戻り
◇PJ$
カレントのプロジェクト名
◎例
PROJECT OUT PJ$
■BACKTRACE
◇直前の呼び出し元の履歴表示
・DIRECTモード専用
・STOP命令等で止めた際に直前までの呼び出し履歴を表示
・スロット番号と行番号のリストを表示
◎例
BACKTRACE
▼変数や配列の定義、配列操作に関する命令
■=
◇変数に数値や式の値を代入
・従来のBASICのLET命令を省略した書き方
・本製品ではLET命令自体が省略されており代入には'='のみ使用
◎例
A=10
A$="HELLO"
■DIM 配列変数名[ 要素数 ] ,…(→ 1/2)
◇使用する配列を宣言
・本製品では配列の宣言は省略できない
・添字は0から始まる
・要素数は必ず[]でくくり()は使用できない
・DIMとVARはどちらを使ってもよい
◎引数
◇配列変数名[ 要素数 ]
・英数字とアンダースコア(_)が使用可能
・先頭に数字は使用不可
・配列変数には文字列変数も使用可能
◇要素数
・確保する配列の個数を[]でくくって指定
・要素数はカンマ(,)で区切って4次元まで指定可能
◎例
DIM ATR[4]
DIM DX[5], DY[5], DZ[5]
DIM POS[10,5]
■DIM 変数名 ,…(← 2/2)
◇使用する変数を宣言
・OPTION STRICT指定時、すべての変数の宣言が必要
・DIMを変数の定義用として利用する使い方
◎引数
◇変数名
・英数字とアンダースコア(_)が使用可能
・先頭に数字は使用不可
・文字列変数も宣言可能
◎例
DIM A, ATRB, B$
■VAR 変数名 ,…(→ 1/2)
◇使用する変数を宣言
OPTION STRICT指定時、すべての変数の宣言が必要
◎引数
◇変数名
・英数字とアンダースコア(_)が使用可能
・先頭に数字は使用不可
・文字列変数も宣言可能
◎例
VAR A, ATRB, B$
■VAR 配列変数名[ 要素数 ] ,…(← 2/2)
◇使用する配列を宣言
・本製品では配列の宣言は省略できない
・添字は0から始まる
・要素数は必ず[]でくくり()は使用できない
・DIMとVARはどちらを使ってもよい
◎引数
◇配列変数名[ 要素数 ]
・英数字とアンダースコア(_)が使用可能
・先頭に数字は使用不可
・配列変数には文字列変数も使用可能
◇要素数
・確保する配列の個数を[]でくくって指定
・要素数はカンマ(,)で区切って4次元まで指定可能
◎例
VAR ATR[4]
VAR DX[5], DY[5], DZ[5]
VAR POS[10, 5]
■SWAP 変数1, 変数2
◇2つの変数の値を交換
文字列と数値の交換は不可
◎引数
◇変数1
交換元の変数
◇変数2
交換先の変数
◎例
SWAP A,B
■INC 変数 [, 式 ]
◇変数の値を+1
引数がある場合式の値を加算
◎引数
◇変数
加算する変数名
◇式
加算する値(省略時:1)
◎文字列参照型についての補足
・文字列変数と配列は参照型です
・INC,DEC,SHIFT,UNSHIFT,PUSH,POPは参照型命令
(例)
A$=ABC  '初期値ABCのメモリーを確保
B$=A$    '変数は別だが参照先メモリーは同じ
?A$,B$    'ABCとABCと表示
INC B$,Z '参照先に対してZを加算
?A$,B$   'ABCZとABCZと表示
B$=B$+X  '変数への足し算はコピーが発生
?A$,B$   'ABCZとABCZXと表示
C$=B$   '変数は異なるが参照先は同じメモリー
?A$,B$,C$  'ABCZとABCZXとABCZXと表示
INC C$,W '参照先に対してWを加算
?A$,B$,C$  'ABCZとABCZXWとABCZXWと表示
◎例
INC X
INC X,3
■DEC 変数 [, 式 ]
◇変数の値を-1
引数がある場合式の値を減算
◎引数
◇変数
減算する変数名
◇式
減算する値(省略時:1)
◎文字列参照型についての補足
・INC命令内の補足説明をご覧ください
◎例
DEC X
DEC X,3
■COPY コピー先配列 [,コピー先オフセット],コピー元配列 [[,コピー元オフセット], コピー要素数](→ 1/2)
◇配列を他の配列にコピー
・1次元配列に限りコピー先要素数不足の際自動追加
・コピー元、コピー先とも次元は無視される
◎引数
◇コピー先配列
コピー先の配列(コピー元配列の内容で上書きされる)
◇コピー先オフセット
上書きされる先頭要素(省略時はコピー先の先頭から)
◇コピー元配列
コピー元の配列
◇コピー元オフセット
上書きする先頭要素(省略時はコピー元の先頭から)
◇コピー要素数
上書きする要素数(省略時はコピー元の末尾まで)
◎例
DIM SRC[10],DST[10]
COPY DST,SRC
■COPY コピー先配列 [,コピー先オフセット], @ラベル文字列 [,コピーデータ数](← 2/2)
◇DATA列を配列に読み込む
・DATA命令に列挙されたデータを配列に読み込む
・1次元配列に限りコピー先要素数不足の際自動追加
◎引数
◇コピー先配列
コピー先の配列(DATA列の内容で上書きされる)
◇コピー先オフセット
上書きされる先頭要素(省略時は配列の先頭から)
◇@ラベル文字列
読み込むDATA命令に付けられている@ラベル名を文字列で指定
◇コピーデータ数
・読み込むデータ数(省略時はコピー先配列の要素数分)
・※コピー先配列数よりDATA数が少ない場合エラー
◎例
DIM DST[5]
COPY DST,"@SRC"
@SRC
DATA 5,1,1,2,4
■SORT [開始位置, 要素数,] 配列1 [,配列2 ,…]
配列を昇順で並び替える
◎引数
◇開始位置
配列1内のソートを開始する位置(0~)
◇要素数
配列1内のソートする要素数(1~)
◇配列1
ソートする数値の入った配列
◇配列2
・配列1のソート結果に従いソートする配列
・列挙できる配列は配列1~配列8まで
◎例
DIM WORK[10]
SORT 0, 10, WORK
■RSORT [開始位置, 要素数,] 配列1 [,配列2 ,…]
配列を降順で並び替える
◎引数
◇開始位置
配列1内のソート開始位置(0~)
◇要素数
配列1内のソートする要素数(1~)
◇配列1
ソートする数値の入った配列
◇配列2
・配列1のソート結果に従いソートする配列
・列挙できる配列は配列1~配列8まで
◎例
DIM WORK[10]
RSORT 0, 10, WORK
■PUSH 配列, 式
配列の末尾に要素を追加(要素数が1つ増える)
◎引数
◇配列
要素を追加される配列
◇式
追加する要素の値
◎文字列参照型についての補足
・INC命令内の補足説明をご覧ください
◎例
DIM WORK[10]
PUSH WORK, 123
■変数=POP( 配列 )
配列の末尾から要素を取り出す(要素数が1つ減る)
◎引数
◇配列
要素を取り出される配列
◎戻り
取り出した要素の値
◎文字列参照型についての補足
・INC命令内の補足説明をご覧ください
◎例
DIM WORK[10]
PUSH WORK, 123
A=POP(WORK)
■UNSHIFT 配列, 式
配列の先頭に要素を追加(要素数が1つ分増える)
◎引数
◇配列
要素を追加される配列
◇式
追加する要素の値
◎文字列参照型についての補足
・INC命令内の補足説明をご覧ください
◎例
DIM WORK[10]
UNSHIFT WORK, 123
■変数=SHIFT( 配列 )
配列の先頭から要素を取り出す(要素数が1つ分減る)
◎引数
◇配列
要素を取り出される配列
◎文字列参照型についての補足
・INC命令内の補足説明をご覧ください
◎例
DIM WORK[10]
UNSHIFT WORK, 123
A=SHIFT(WORK)
■FILL 配列, 値 [,オフセット [,要素数]]
◇配列内容をすべて指定値に設定
・オフセットと要素数で部分的な変更も可能
・配列の型は、整数、実数、文字列いずれでも構わない
◎引数
◇配列
値を上書きする配列
◇値
数値や文字列
◇オフセット
値を書き込み始める位置
◇要素数
書き込む数
◎例
DIM WORK[10]
FILL WORK,0
▼比較、分岐、くりかえしなどの制御命令
■@ラベル名
◇プログラムやデータの位置を示す名前
・GOTOなどで行番号を直接指定することはできない
・分岐先やデータ位置はすべてラベルで指定
◎引数
◇@ラベル名
@で始まる英数字とアンダースコア(_)
◎例
@MAINLOOP
■GOTO @ラベル(→ 1/3)
強制分岐
◎引数
◇@ラベル
・ジャンプ先の@ラベル名
・ラベル名をでくくったラベル文字列(文字列変数も可)
・1:@ラベル名 の形式でプログラムSLOT指定も可能
・あらかじめUSE命令で対象SLOTを使用可能にしておくこと
◎例
GOTO @MAIN
JP$="@MAIN":GOTO JP$
■GOSUB @ラベル(→ 1/2)
サブルーチンの呼び出し
◎引数
◇@ラベル
・呼び出すサブルーチンの@ラベル名
・ラベル名をでくくったラベル文字列(文字列変数も可)
・1:@ラベル名 の形式でプログラムSLOT指定も可能
・あらかじめUSE命令で対象SLOTを使用可能にしておくこと
◎例
GOSUB "@SUB"
■RETURN(→ 1/2)
サブルーチンから呼び出し元へ復帰
◎例
RETURN
■RETURN(← 2/2)
◇サブルーチンから値を返しつつ呼び出し元へ復帰
関数型として定義されたDEF命令内で値を戻す場合に利用
◎例
DEF CALC(A,B)
 RETURN A*B
END
PRINT CALC(2,3)
■OUT
◇複数出力が必要な場合に利用する命令
・複数の値を返すDEF命令の宣言で利用
・複数の値を返す組み込み命令でも利用される
◎例
DEF SUB A OUT D,M
 D=A DIV 10
 M=A MOD 10
END
SUB 34 OUT DV,ML
PRINT DV,ML
■ON 制御変数 GOTO @ラベル0, @ラベル1…(→ 1/2)
◇制御変数の値に合わせてラベル行に分岐
・従来型BASICとは異なり分岐番号は0からとなる
◎引数
◇@ラベル0
制御変数が0のときのジャンプ先
◇@ラベル1
制御変数が1のときのジャンプ先
 :
・必要な数だけ飛び先を用意する
・ON~GOTOのラベルには、ラベル文字列は使えない
◎例
ON IDX GOTO @JMP_A,@JMP_B
PRINT OVER:END
@JMP_A
PRINT "IDX=0":END
@JMP_B
PRINT "IDX=1":END
■ON 制御変数 GOTO @ラベル0, @ラベル1…(←→ 2/3)
◇制御変数の値に合わせてラベル行に分岐
・従来型BASICとは異なり分岐番号は0からとなる
◎引数
◇@ラベル0
制御変数が0のときのジャンプ先
◇@ラベル1
制御変数が1のときのジャンプ先
 :
・必要な数だけ飛び先を用意する
・ON~GOTOのラベルには、ラベル文字列は使えない
◎例
ON IDX GOTO @JMP_A,@JMP_B
PRINT OVER:END
@JMP_A
PRINT "IDX=0":END
@JMP_B
PRINT "IDX=1":END
■ON 制御変数 GOSUB @ラベル0, @ラベル1…(← 2/2)
◇制御変数の値に合わせてサブルーチン呼び出し
・従来型BASICとは異なり分岐番号は0からとなる
◎引数
◇@ラベル0
制御変数が0のときのサブルーチン
◇@ラベル1
制御変数が1のときのサブルーチン
 :
・必要な数だけ飛び先を用意する
・ON~GOSUBのラベルには、ラベル文字列は使えない
◎例
ON IDX GOSUB @SUB_A,@SUB_B
PRINT EXIT:END
@SUB_A
PRINT "IDX=0":RETURN
@SUB_B
PRINT "IDX=1":RETURN
■ON 制御変数 GOSUB @ラベル0, @ラベル1…(← 2/2)
◇制御変数の値に合わせてサブルーチン呼び出し
・従来型BASICとは異なり分岐番号は0からとなる
◎引数
◇@ラベル0
制御変数が0のときのサブルーチン
◇@ラベル1
制御変数が1のときのサブルーチン
 :
・必要な数だけ飛び先を用意する
・ON~GOSUBのラベルには、ラベル文字列は使えない
◎例
ON IDX GOSUB @SUB_A,@SUB_B
PRINT EXIT:END
@SUB_A
PRINT "IDX=0":RETURN
@SUB_B
PRINT "IDX=1":RETURN
■IF 条件式 THEN 成立時処理 [ELSE 不成立時処理] [ENDIF](→ 1/2)
条件成立時に処理1を、不成立時に処理2を実行
・THENやELSE直後のGOTOは、GOTOを省略可能
・処理が複数行にわたるときはENDIFを使用
◎条件式
◇比較演算子
== 等しい
!= 等しくない
> より大きい
< より小さい
>= 以上
<= 以下
◇論理演算子(複数条件の比較用)
(条件1 AND 条件2) 同時に満たす
(条件1 && 条件2) 同時に満たす
(条件1 OR 条件2) いずれかを満たす
(条件1 || 条件2) いずれかを満たす
※||の文字は、キーボード上で ? の左上にあります
◎例
IF A==1 THEN PRINT OK
IF A>1 THEN @JMP1 ELSE PRINT DATE$
IF A==1 THEN
 PRINT "オメデトウ":BEEP 72
ELSE
 PRINT "ザンネン"
ENDIF
@JMP1
END
■IF 条件式 THEN 成立時処理 [ELSE 不成立時処理] [ENDIF]
◇IFによる条件が成立した時の制御先
条件判定については、IFの説明をご覧ください
◎例
IF A==1 THEN PRINT OK
IF A>1 THEN @JMP1 'GOTOの省略
IF A==1 THEN
 PRINT "オメデトウ":BEEP 72
ELSE
 PRINT "ザンネン"
ENDIF
@JMP1
END
■IF 条件式 THEN 成立時処理 ELSE 不成立時処理 [ENDIF]
◇IFによる条件が成立しない時の制御先
条件判定については、IFの説明をご覧ください
◎例
IF A==1 THEN PRINT OK
IF A>1 THEN @JMP1 ELSE PRINT DATE$
IF A==1 THEN
 PRINT "オメデトウ":BEEP 72
ELSE
 PRINT "ザンネン"
ENDIF
@JMP1
END
■IF 条件式 THEN 成立時処理 ELSEIF 条件式 THEN 成立時処理 ENDIF
◇IFによる条件不成立時の追加条件判定
・不成立時に続けて条件判断を行う場合に利用
・条件判定については、IFの説明をご覧ください
◎例
IF A==1 THEN
 PRINT "オメデトウ":BEEP 0
ELSEIF A==2 THEN 
 PRINT "ザンネン"
ELSE IF A==3 THEN 
 PRINT "まあまあ"
ENDIF '--- ELSE IF の場合は必要
ENDIF
■IF 条件式 THEN 成立時処理 ELSE 不成立時処理 [ENDIF]
◇IFによる制御切替後処理が複数行になる場合の終了
条件判定については、IFの説明をご覧ください
◎例
IF A==0 THEN
 PRINT "A=0"
ENDIF
■IF 条件式 GOTO @ラベル [ELSE 不成立時処理](← 2/2)
◇条件が成立時@ラベルに分岐
条件判定については、IFの説明をご覧ください
◎ラベルに文字列を使う場合の注意事項
・ラベルにはラベル文字列も使用可能
・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
■IF 条件式 GOTO @ラベル [ELSE 不成立時処理](← 3/3)
◇条件が成立時@ラベルに分岐
・条件判定については、IFの説明をご覧ください
◎ラベルに文字列を使う場合の注意事項
・ラベルにはラベル文字列も使用可能
・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
■FOR ループ変数=初期値 TO 終了値 [STEP 増分]
◇処理を指定回数繰り返す
・処理の最後にはNEXT命令を置く
・条件が満たされない場合、1回も実行されないことがある
◎引数
◇ループ変数
ループ回数をカウントする変数(1ループごとに増分が加算)
◇初期値
ループ開始時のループ変数の値または式
◇TO 終了値
ループ終了時のループ変数の値または式
◇STEP 増分
・ループ終わりにループ変数に加算する増分(省略時=1)
・増分が小数の時、演算誤差で意図した回数にならない可能性あり
◎例
FOR I=0 TO 9 STEP 2
 PRINT I;",";
NEXT
■TO 終了値
◇ループ数の終わりの値指定
・FOR~NEXTについてはFOR命令の説明をご覧ください
◎例
FOR I=0 TO 9 STEP 2
 PRINT I;",";
NEXT
■STEP 増分
◇FORループ数の増分の値指定
・FOR~NEXTについてはFOR命令の説明をご覧ください
◎例
FOR I=0 TO 9 STEP 2
 PRINT I;",";
NEXT
■NEXT [ 制御変数 ]
◇FORループの終わりを示す命令
・FOR~NEXTについてはFOR命令の説明をご覧ください
・FORループ内のIFでNEXTを使うのは非推奨
・強制的に次のループへ進める時はCONTINUEを使用
・ループの強制終了はBREAKを使用
◎引数
◇制御変数
・制御変数は記述しても無視され単なるNEXTと同じ働き
・NEXT J,I のような記述は不可
◎例
FOR I=0 TO 9 STEP 2
 PRINT I;",";
NEXT
■WHILE 条件式
◇条件が成立している間、WENDまでをくりかえす
・不成立時、またはBREAK命令でループを抜ける
◎条件式
IFと同等の条件式を書くことができます
◇比較演算子
== 等しい
!= 等しくない
> より大きい
< より小さい
>= 以上
<= 以下
◇論理演算子(複数条件の比較用)
(条件1 AND 条件2) 同時に満たす
(条件1 && 条件2) 同時に満たす
(条件1 OR 条件2) いずれかを満たす
(条件1 || 条件2) いずれかを満たす
※||の文字は、キーボード上で ? の左上にあります
◎例
A=0:B=4
WHILE A<B
 A=A+1
WEND
■WEND
WHILEループの終わりを示す命令
◎例
A=0:B=4
WHILE A<B
 A=A+1
WEND
■REPEAT
◇REPEATループの開始命令
・ループの終わりにUNTIL命令と条件式を置く
・WHILE命令とは異なり先に処理を実行してから条件判断
・成立時、またはBREAK命令でループを抜ける
◎例
A=0:B=4
REPEAT
 A=A+1
UNTIL A>B
■UNTIL 条件式
◇条件が満たされるまでREPEATからをくりかえす
・ループの始まりにREPEAT命令を置く
・WHILE命令とは異なり先に処理を実行してから条件判断
・成立時、またはBREAK命令でループを抜ける
◎条件式
IFと同等の条件式を書くことができます
◇比較演算子
== 等しい
!= 等しくない
> より大きい
< より小さい
>= 以上
<= 以下
◇論理演算子(複数条件の比較用)
(条件1 AND 条件2) 同時に満たす
(条件1 && 条件2) 同時に満たす
(条件1 OR 条件2) いずれかを満たす
(条件1 || 条件2) いずれかを満たす
※||の文字は、キーボード上で ? の左上にあります
◎例
A=0:B=4
REPEAT
 A=A+1
UNTIL A<B
■CONTINUE
◇ループを強制的に次に進める
・FOR~NEXT、WHILE~WEND、REPEAT~UNTIL内で使用
◎例
FOR I=0 TO 9
 IF I==1 THEN CONTINUE
 IF I==7 THEN BREAK
 PRINT I;",";
NEXT
■BREAK
◇ループから強制的に抜ける
・FOR~NEXT、WHILE~WEND、REPEAT~UNTIL内で使用
◎例
FOR I=0 TO 9
 IF I==1 THEN CONTINUE
 IF I==7 THEN BREAK
 PRINT I;",";
NEXT
■END(→ 1/2)
プログラムを終了
◎例
END
■END(← 2/2)
ユーザー関数、ユーザー命令のDEF定義を終了
◎例
DEF FUNC
 PRINT FUNC
END
■STOP
◇実行中のプログラムを中断
・中断したプログラムSLOT:行番号が表示される
・CONT命令で続行可能(ただし状況によっては続行できない)
◎例
STOP
▼ユーザー定義関数や拡張機器の制御などの命令
■DEF ユーザー定義命令について (→ 1/5)
1) USER ※引数なし、戻り値なし
2) USER X,Y ※引数あり、戻り値なし
3) A=USER(X) ※引数あり、戻り値1つ
4) USER(X) OUT A,B ※引数あり、戻り値複数
DEFを使うと上記のような命令を独自定義が可能
◎DEF共通の補足
・DEF~ENDまでが定義範囲となる
・DEF~END範囲で定義された変数やラベルはローカル扱い
・DEF~END範囲を越えるGOTOはできない
・DEF~END範囲内でGOSUBやON GOSUBは使用できない
 GOSUB 0:@SUBのようにSLOT指定があれば利用可能
・COMMON 命令を付けることでSLOTを超えて利用可能
◎DEF引数の仕様
・DEFで受け取る引数に関して厳密な型チェックは行わない
・必要な数だけカンマ(,)で区切り受け取る変数名を記述可能
・文字列変数には変数名の終わりに$を付けることも可能
◎DEF戻り値の仕様
・DEFの戻り値に関しての厳密な型チェックは行わない
・出力用変数に最初に書いた値で型が確定
・数値変数に整数値を代入すると整数型として扱う
・実数型として扱う場合は、A=100.0のように記述
・DEFからの戻り値を受け取った側の型と異なる場合エラー
■DEF 定義名 (←→ 2/5)
返り値と引数の無いユーザー命令の定義
◎引数
なし
◎戻り
なし
◎例
'--- 文字表示
DEF FUNC
PRINT "SAMPLE"
END
'--- 呼び出し
FUNC
■DEF 定義名 引数 [,引数…] (←→ 3/5)
引数があり返り値が無いユーザー命令の定義
◎引数
関数に渡したい引数があれば必要な分の変数名を記述
◎戻り
なし
◎例
'--- 指定位置に文字表示
DEF FUNC2 X,Y
LOCATE X,Y
PRINT "SAMPLE"
END
'--- 呼び出し
FUNC2 10,4
■DEF 関数名([引数 [,引数…]])(←→ 4/5)
戻り値が1つだけあるユーザー関数の定義
◎引数
関数に渡したい引数があれば必要な分の変数名を記述
◎戻り
結果として返したい値を、RETURN命令の後に書く
※RETURN ANS のような記述
◎例
'---足し算
DEF ADD(X,Y)
RETURN X+Y
END
'--- 再帰を使った階乗計算
DEF FACTORIAL(N)
IF N==1 THEN RETURN N
RETURN N*FACTORIAL(N-1)
END
'--- 文字列反転
DEF REVERSE$(T$)
VAR A$="" 'ローカル文字列
VAR L=LEN(T$) 'ローカル
WHILE L>0
 A$=A$+MID$(T$,L-1,1)
 DEC L
WEND
RETURN A$
END
'--- 呼び出し
PRINT ADD(10,5)
PRINT FACTORIAL(4)
PRINT REVERSE$(BASIC)
■DEF 命令名 [引数 [,引数…]] OUT V1 [,V2…]](← 5/5)
複数の返り値を持つユーザー命令の定義
◎引数
関数に渡したい引数があれば必要な分の変数名を記述
◎戻り
結果として返したい数分の変数名をOUTの後に記述
◎例
'--- 足し算と掛け算
DEF CALCPM A,B OUT OP,OM
OP=A+B
OM=A*B
END
'--- 呼び出し
CALCPM 5,10 OUT P,M
PRINT P,M
■COMMONについて
1) COMMON DEF USER
2) COMMON DEF USER(X)
3) COMMON DEF USER(X) OUT A,B
COMMONはSLOTを超えて独自命令を使う場合に利用
異なるSLOT間でプログラムを使う場合はUSEが必要
◎例
COMMON DEF FOO(X, Y, Z)
■CALL 命令名 [,引数…] [OUT 変数1 [,変数2…]](→ 1/4)
指定名称を持つユーザー定義命令を呼び出す
◎引数
◇命令名
・呼び出すユーザー定義命令名の文字列
・文字列なので""でくくるか文字列変数を使用
◇引数~
指定した命令に必要な引数
◎戻り
結果として返したい数分の変数名をOUTの後に記述
◎例
CALL "USERCD",X,Y OUT A,B
'
DEF USERCD X,Y OUT A,B
A=X+Y:B=X*Y
END
■変数=CALL(関数名 [,引数…])(←→ 2/4)
指定名称を持つユーザー定義関数を呼び出す
◎引数
◇関数名
・呼び出すユーザー定義関数名の文字列
・文字列なので""でくくるか文字列変数を使用
◇引数
 指定した関数に必要な引数を列挙
◎例
A=CALL("USERFC",X,Y)
'
DEF USERFC(X,Y)
RETURN X*Y
END
■CALL SPRITE(←→ 3/4)
◇SPRITEコールバックの呼び出し
SPFUNCで設定されたSPRITE毎の処理を一斉呼び出し
◎例
CALL SPRITE
■CALL BG(← 4/4)
◇BGコールバックの呼び出し
BGFUNCで設定されたBG毎の処理を一斉呼び出し
◎例
CALL BG
■XON 使用する機能名
◇特殊機能の利用宣言
・これらの機能は宣言しないと利用できない
・XON EXPADが成功するとRESULTにTRUEが返る
・すでにXON状態の場合ダイアログ等は表示されない
・Wii U専用の機能を使う場合には必ず先にXON WIIUが必要
◎引数
◇使用する機能名
MOTION: モーションセンサー、ジャイロセンサー
EXPAD: 拡張スライドパッド
MIC: マイク
COMPAT: ニンテンドー3DS/Wii U互換モードへ切替
3DS: ニンテンドー3DS専用モードへ切替
WIIU: Wii U専用モードへの切替
※Wii Uでは、EXPADを指定しなくても入力値取得可能
◎例
XON MOTION
■XOFF 停止する機能名
XONで宣言した特殊機能の使用終了
◎引数
◇停止する機能名
MOTION: モーションセンサー、ジャイロセンサー
EXPAD: 拡張スライドパッド
MIC: マイク
◎例
XOFF MOTION
▼データ読み込み、垂直同期、コメントなどの命令
■READ 取得変数1 [, 取得変数2…]
◇DATA命令で列挙した情報を変数に読み込む
DATA命令で列挙した型と同じ型で読むこと
◎引数
◇取得変数
・読み込む情報を格納する変数(複数指定可能)
・RESTORE命令で指定した行以降のDATAから取得
・RESTORE省略時、最初のDATAから取得
◎例
READ X,Y,Z,G$
DATA 200,120,0,"JAN"
DATA 210,120,0,"FEB"
■DATA データ [, データ…]
◇READで読み込むデータの定義
・数値も文字列も混在可能
・数値定数のみの式は定数として扱われるためDATA文に記述可能
・#で始まる定数も記述可能
・&&、||、変数や関数の混ざった式は記述できない
・文字列式は記述できない
◎データの記述方法
・数値や文字列を ',' で区切って並べる
・文字列は必ず""でくくる(は省略不可)
◎例
READ X,Y,Z,ST$ '行末にコメントが書けます
DATA 123,345,56,"SAMPLE"
■RESTORE @ラベル
READ命令が読み込む先頭DATAを指定
◎引数
◇@ラベル
・読み込むDATA命令の先頭に付けられた@ラベル名
・@ラベル名が代入された文字列変数も指定可能
・RESTORE 1:@ラベル名 で他のSLOTから参照も可能
・あらかじめUSE 1等で対象SLOTを使用可能にしておく
◎例
RESTORE @DATATOP
@DATATOP
DATA 123,345,56,"SAMPLE"
■OPTION 機能名
プログラムの動作モードを設定
◎引数
◇機能名    
STRICT: 変数宣言が必須となる(宣言なし参照はエラー)
DEFINT: 変数のデフォルト型を整数型にする
◎例
OPTION STRICT
■WAIT [フレーム数]
指定回数分の垂直同期が来るまでプログラム停止
◎引数
◇フレーム数
現在からの経過フレーム数を指定(0:無視、省略時は1)
◎例
WAIT 60
■VSYNC [フレーム数]
◇指定回数分の垂直同期が来るまでプログラム停止
WAITとは異なり前回VSYNCからのVSYNC回数
◎引数
◇フレーム数
前回のVSYNCからの経過フレーム数を指定(0:無視 省略時=1)
◎例
VSYNC 1
■' [文字列]
◇コメント記述用の記号
・コメント内容はプログラム実行に影響しない
◎例
' ---MAIN ROUTINE---
■REM [文字列]
◇コメント記述用の命令
・コメント内容はプログラム実行に影響しない
◎例
REM ---MAIN ROUTINE---
■KEY 番号,"文字列"
ファンクションキーに任意の文字列を割り当てる
◎引数
◇番号
ファンクションキーの番号(1~5)
◇文字列
・割り当てる文字列
・表示しきれない場合は最後を'…'として表示
◎例
KEY 1,CLS+CHR$(13)
■TMREAD ["時間文字列"] OUT H,M,S
時間文字列を数値に変換
◎引数
◇時間文字列
HH:MM:SS形式の時間文字列(省略時、現在の時間)
◎戻り
◇数値格納先変数
H: 時間を受け取る変数(0~23)
M: 分を受け取る変数
S: 秒を受け取る変数
◎例
TMREAD "12:59:31" OUT H,M,S
■DTREAD ["日付文字列"] OUT Y,M,D [,W]
日付文字列を数値に変換
◎引数
◇日付文字列
YYYY/MM/DD形式の日付文字列(省略時現在の日時)
◎戻り
◇数値格納先変数
Y: 年を受け取る変数
M: 月を受け取る変数
D: 日を受け取る変数
W: 曜日(日曜日を0とする数値)を受け取る変数
◎例
DTREAD "2014/10/12" OUT Y,M,D
■変数 = CHKLABEL("@ラベル文字列" [,フラグ])
指定文字列で参照できるラベルの存在確認
◎引数
◇@ラベル文字列
・CHKLABEL 1:@ラベル名 で他のSLOT確認も可能
・あらかじめUSE 1 等で対象SLOTを使用可能にしておく
◇フラグ
0=DEF内だけを検索(省略時=0)
1=DEF内に無ければグローバルラベルを検索
◎戻り
FALSE=存在しない、TRUE=存在
◎例
A=CHKLABEL("@MAIN")
■変数 = CHKCALL("文字列")
指定文字列で参照できる命令・関数の存在確認
◎引数
◇文字列
調べたい命令・関数の文字列
◎戻り
FALSE=存在しない、TRUE=存在
◎例
A=CHKCALL("KEYCHECK")
■変数 = CHKVAR("文字列")
指定文字列で参照できる変数の存在確認
◎引数
◇文字列
調べたい変数の文字列
◎戻り
FALSE=存在しない、TRUE=存在
◎例
A=CHKVAR("COUNTX")
■DIALOG "テキスト文字列" (→ 1/6)
◇ダイアログを表示しボタンが押されるまで待つ
・システム変数 RESULT に結果を返す
・RESULT:1(決定)、-1(キャンセル)、0(タイムアウト)
◎引数
◇テキスト文字列
ダイアログに表示する文字列
◎補足(DIALOG命令共通)
・ダイアログは必ず下画面に表示
・テキスト文字列、キャプション文字列の合計は250文字まで
・テキスト文字列にCHR$(10)かCHR$(13)があると改行
・タイムアウト時間をマイナス値にするとフレーム単位となる
◎例
DIALOG "おはようございます!"
■DIALOG "テキスト文字列",[選択タイプ],["キャプション文字列"],[タイムアウト時間](←→ 2/6)
ダイアログを表示しボタンが押されるまで待つ
◎引数
◇テキスト文字列
ダイアログに表示する文字列
◇選択タイプ
0: 了解(デフォルト)
5: 次へ
◇キャプション文字列
ダイアログ上部のキャプション欄に表示する文字列
◇タイムアウト時間
ダイアログを自動的に閉じるまでの秒数(省略時=0:閉じない)
◎例
DIALOG "はじめましょう",5,"シナリオ",-120
■変数 = DIALOG("テキスト文字列",[選択タイプ],["キャプション文字列"],[タイムアウト時間])(←→ 3/6)
ダイアログを表示し指定したボタンが押されるまで待つ
◎引数
◇テキスト文字列
ダイアログに表示する文字列
◇選択タイプ
0: 了解(デフォルト)
1: いいえ/はい
2: 戻る/次へ
3: 中止/決定
4: 中止/実行
5: 次へ
◇キャプション文字列
ダイアログ上部のキャプション欄に表示する文字列
◇タイムアウト時間
ダイアログを自動的に閉じるまでの秒数(省略時=0:閉じない)
◎戻り
-1: 否定(左ボタン)
0: タイムアウト
1: 肯定(右ボタン)
※システム変数 RESULT にも値が残ります
◎例
R=DIALOG("もう一度しますか?",1,"確認",0)
■変数 = DIALOG("テキスト文字列",ボタン種類,["キャプション文字列"],[タイムアウト時間])(←→ 4/6)
ダイアログ表示しタッチやハードウェアボタンが押されるまで待つ
◎引数
◇テキスト文字列
ダイアログに表示する文字列
◇ボタン種類
|b00|ABXYボタン(1)
|b01|十字キー(2)
|b02|L,Rボタン(4)
|b03|タッチパネル(8)
・上記ビット値をORし符号反転したものを指定する
・ZL,ZRボタンは検出不可
・-1でABXYのみの指定となる
・例えば、ABXYと十字キーを検出する場合は-3を指定
◇キャプション文字列
ダイアログ上部のキャプション欄に表示する文字列
◇タイムアウト時間
ダイアログを自動的に閉じるまでの秒数(省略時=0:閉じない)
◎戻り
128: Aボタン押下
129: Bボタン押下
130: Xボタン押下
131: Yボタン押下
132: 十字キー上押下
133: 十字キー下押下
134: 十字キー左押下
135: 十字キー右押下
136: Lボタン押下
137: Rボタン押下
140: タッチパネル押下
◎例
R=DIALOG("ABXYLR/十字キー/タッチ",-15,"特別",0)
■文字列=DIALOG( "初期文字列", "キャプション文字列" [,最大文字数]) (←→ 5/6)
ファイル名入力専用のダイアログを表示
◎引数
◇初期文字列
最初に入力されている文字列
◇キャプション文字列
キャプションに表示する文字列
◇最大文字数
最大14文字まで
◎戻り
取得した文字列が返ります
※RESULT=-1の時は中止(文字列無効)
◎例
T$=DIALOG( "NEWNAME0", "SAVE", 14 )
■DIALOGへの漢字表示サンプル(← 6/6)
漢字を使う場合はUTF-16形式の文字コードをCHR$に渡す
※UTF-16形式については専門書等を参考にしてください
◎例
' もう一度?
T$=もう+CHR$(&H4E00)+CHR$(&H5EA6)+?
' 確認
C$=CHR$(&H78BA)+CHR$(&H8A8D)
R=DIALOG(T$,1,C$,0)
■CLIPBOARD "文字列"(1/2 →)
クリップボードの内容を設定する
◎引数
◇文字列
クリップボードに格納する文字列
◎例
CLIPBOARD "おはようございます"
■CLIPBOARD() (← 2/2)
クリップボードの内容を取得する
◎戻り
クリップボード内の文字列
◎例
PRINT CLIPBOARD()
■DLCOPEN "IP名" [,"IP名2" ,... ]
「カタログIPオープン化プロジェクト」対象IPが利用可能か調べる。対象IPを利用する場合、作品内で使用するすべてのIPを宣言する必要がある。宣言しないで利用している場合、サーバー公開時に公開停止対象となる。
・「カタログIPオープン化プロジェクト」参加規約に準拠
・オリジナルと全く同じルールのゲーム公開は禁止
・非購入者が公開キーで購入者の作品を入手しても実行できません
・非購入者によるカタログIP作品の公開は削除対象となります
・日本国内専用
◇COPYRIGHT
(C)BANDAI NAMCO Entertainment Inc.
◎引数
◇IP名
利用する対象IP名略語(以下の文字列より指定、配信されていないIP名は無効です)
GALAXIAN
PACMAN
XEVIOUS
GALAGA
MAPPY
DIGDUG
DRUAGA
B_CITY
S_LUSTER
SKYKID
D_BUSTER
GENPEI
BABEL
A_VALKYRIE
YOKAI
W_MOMO
WAGAN
◇IP名2~
同時に複数のIPを利用する場合は含まれるすべてのIP名を引数として渡す
◎例
DLCOPEN "XEVIOUS"
▼コンソール画面への文字表示や文字列の入力に関する命令
■CLS
コンソール画面を消去(DISPLAY命令で指定された画面)
◎例
DISPLAY 0
CLS
■COLOR 描画色 [,背景色]
◇コンソール画面の表示色を指定
テキストカラー用の定数利用可能(#TBLACK~#TWHITE)
◎引数
◇描画色
0: 透明色
1: 黒、#TBLACK
2: 暗い赤、#TMAROON
3: 赤、#TRED
4: 暗い緑、#TGREEN
5: 緑、#TLIME
6: 暗い黄色、#TOLIVE
7: 黄色、#TYELLOW
8: 紺色、#TNAVY
9: 青、#TBLUE
10: 暗いマゼンタ、#TPURPLE
11: マゼンタ、#TMAGENTA
12: 暗いシアン、#TTEAL
13: シアン、#TCYAN
14: 灰色、#TGRAY
15: 白、#TWHITE
◇背景色
・文字ごとの背景用色番号(0~15:描画色参照)
・背景色だけを変更するときは、描画色の省略可能
◎例
COLOR 7,4
COLOR #TWHITE
COLOR ,0
■LOCATE [座標X],[座標Y] [,座標Z]
コンソール画面への文字表示位置を指定
◎引数
◇座標X,Y
・文字単位の座標(X:0~49,Y:0~29)
・XSCREEN 4と下画面は(X:0~39)
・WIDTH 16実行時(X:0~24,Y:0~14)
・WIDTH 16のXSCREEN 4と下画面は(X:0~19)
・X,Yを省略すると、それぞれ以前のX,Y座標を維持
◇座標Z
・奥行方向の座標(奥:1024<液晶面:0<手前:-256)
・省略すると、以前のZ座標を維持
◎例
LOCATE 20,15
LOCATE 0,0,-200
■PRINT [式 [;または, 式…]]
◇コンソール画面への文字表示
・式を省略すると改行のみ行う
・PRINTは?で代用可能
◎引数
◇式
・表示する変数、文字列変数、数値、文字列
・四則演算等や関数による計算式も記述可(計算結果が表示される)
◇;(セミコロン)
表示後に改行せず、次の表示を密着させる
◇,(カンマ)
・表示後に改行せず、次の表示を一定間隔開ける
・表示位置はシステム変数のTABSTEP単位に従う
◎例
PRINT RESULT(X,Y)=;DX*4+1,DY+1
■ATTR 表示属性
◇コンソール画面に表示する文字の回転・反転属性を設定
テキスト属性用の定数利用可能(#TROT0~270、#TREVH,V)
◎引数
◇表示属性
|b00|↑90度単位の回転(b00とb01の2ビットで指定)
|b01|↓#TROT0、#TROT90、#TROT180、#TROT270
|b02|横反転(0=OFF、1=ON)、#TREVH
|b03|縦反転(0=OFF、1=ON)、#TREVV
◎例
ATTR 3:PRINT ABC
■SCROLL 文字数X, 文字数Y
◇コンソール画面全体の表示位置調整
・視点が移動するイメージ(文字が移動する方向は逆)
・画面外に押し出された文字は消える
◎引数
◇文字数X
横方向の視点移動量(マイナス値で左、プラス値で右)
◇文字数Y
縦方向の視点移動量(マイナス値で上、プラス値で下)
◎例
SCROLL 5,7
■変数 = CHKCHR( 座標X,座標Y )
コンソール画面の文字コードを調べる
◎引数
◇座標X,Y
文字単位の座標(X:0~49,Y:0~29)
◎戻り
UTF-16文字コード
◎例
CODE=CHKCHR(0,0)
■INPUT ["ガイド文字列";] 変数[,変数2…]
◇キーボードから数値または文字列を入力
・ENTERキーが入力されるまで入力待ち
・入力数が不足時「?Redo from start」を表示し再入力
◎引数
◇ガイド文字列
・入力用のガイドメッセージ(省略可能)
・ガイド文字列後の;を,(カンマ)にすると?が表示されない
・;を使うときのみガイド文字列には文字列変数も使用可能
◇変数
・入力を受け取る変数(数値または文字列変数)
・変数を複数指定する場合,(カンマ)で区切る
◎例
INPUT "名前と年齢は";NM$,AG
■LINPUT ["ガイド文字列";] 文字列変数
◇キーボードから文字列の取得
・INPUT命令では入力できない「,」等も受け付ける
・ENTERキーが入力されるまで入力待ち
◎引数
◇ガイド文字列
入力用のガイドメッセージ(省略可能)
◇文字列変数
1行分の入力を受け取る文字列変数
◎例
LINPUT "ADDRESS:";ADR$
■文字列変数=INKEY$()
キーボードから1文字取得(入力待ちなし)
◎引数
なし
◎戻り
・キーボードからの1文字(UTF-16)
・入力がない場合  が戻る
◎例
C$=INKEY$()
■FONTDEF 文字コード, フォント定義文字列(→ 1/3)
指定文字コードのフォントを定義
◎引数
◇文字コード
フォントを定義する文字コード(UTF-16)
◇フォント定義文字列
・1ドットはRGBA=5551形式の16ビット色コード
・RGB各色5ビット(0~31) +α1ビット(0:透明、1:不透明)
・色要素を16進数4ケタの文字列で扱う
・例)白:FFFF 黒:0001 赤:F801
・1文字は8×8=64ドットフォント定義文字列は計256文字
◎関連
GCOPY、GSAVEのページ番号-1でフォント画像操作可能
◎例
F$="FFFF":Z$="0000"
D$=F$*7+Z$
D$=D$+F$*2+Z$*3+F$*2+Z$
D$=D$+F$+Z$+F$*3+Z$+F$+Z$
D$=D$+F$+Z$*5+F$+Z$
D$=D$+F$+Z$+F$*3+Z$+F$+Z$
D$=D$+F$+Z$+F$*3+Z$+F$+Z$
D$=D$+F$*7+Z$
D$=D$+Z$*8
FONTDEF ASC("A"),D$
■FONTDEF 文字コード, 数値配列(←→ 2/3)
指定文字コードのフォントを定義
◎引数
◇文字コード
フォントを定義する文字コード(UTF-16)
◇フォント定義配列
・1ドット1要素の数値配列を用意(1文字8×8ドット=64要素)
・1ドットはRGBA=5551形式の16ビット色コード
・RGB各色5ビット(0~31) +α1ビット(0:透明、1:不透明)
・例)白:&HFFFF 黒:&H0001 赤:&HF801
◎関連
GCOPY、GSAVEのページ番号-1でフォント画像操作可能
◎例
DIM F%[64]
DATA 11111110
DATA 11000110
DATA 10111010
DATA 10000010
DATA 10111010
DATA 10111010
DATA 11111110
DATA 00000000
TOP=ASC(A):CNT=1
FOR I=0 TO CNT-1
 FOR D=0 TO 7
  READ F$
  FOR B=0 TO 7
   C=0:IF MID$(F$,B,1)==1 THEN C=&HFFFF
   F%[D*8+B]=C
  NEXT
 NEXT
 FONTDEF TOP+I,F%
NEXT
■FONTDEF(← 3/3)
フォントの定義を初期状態に戻す
◎例
FONTDEF
■WIDTH フォントサイズ(1/2 →)
◇コンソール文字サイズの変更
・文字拡大表示のため滑らかな表示拡大ではありません
・文字が小さくて見えにくい人向けの表示補助機能
◎引数
◇フォントサイズ
 8: 8x8ドット(標準状態)
16: 16x16ドット(通常の縦横2倍表示)
◎例
WIDTH 16
■変数=WIDTH()(← 2/2)
◇コンソール文字サイズの取得
◎引数
なし
◎戻り
 8: 8x8ドット(標準状態)
16: 16x16ドット(通常の縦横2倍表示)
◎例
FS=WIDTH()
▼ボタン・スティック・タッチ・センサー・マイクの情報取得命令
■変数=BUTTON( [機能ID [,端末ID]] )
◇ハードウェアボタンの状態取得
・戻り値に対してボタン用の定数利用可能
◎引数
◇機能ID
0: 押され続けている状態
1: 押された瞬間(リピート機能付き)
2: 押された瞬間(リピート機能なし)
3: 放された瞬間
◇端末ID(0~3)
ワイヤレス通信で他の端末から取得時に指定
◎戻り
|b00|十字ボタン上(1)、#UP
|b01|十字ボタン下(2)、#DOWN
|b02|十字ボタン左(4)、#LEFT
|b03|十字ボタン右(8)、#RIGHT
|b04|Aボタン(16)、#A
|b05|Bボタン(32)、#B
|b06|Xボタン(64)、#X
|b07|Yボタン(128)、#Y
|b08|Lボタン(256)、#L
|b09|Rボタン(512)、#R
|b10|未使用
|b11|ZRボタン(2048)、#ZR
|b12|ZLボタン(4096)、#ZL
・b0~b12のビットに各ボタンが対応(押されたビット=1)
・ボタン名称横の()内は10進数表記
・ZRとZLボタンは拡張スライドパッド使用時のみ有効
◎例
B=BUTTON()
B=BUTTON( 0,3 )
■BREPEAT ボタンID, 開始時間, インターバル
◇キーリピート機能の設定
・開始時間とインターバルを省略した場合リピートOFF
・BUTTONのボタンごとのビット値とは異なる管理番号
・ZRとZLボタンは拡張スライドパッド使用時のみ有効
◎引数
◇ボタンID
0: 十字ボタン上のID
1: 十字ボタン下のID
2: 十字ボタン左のID
3: 十字ボタン右のID
4: AボタンのID
5: BボタンのID
6: XボタンのID
7: YボタンのID
8: LボタンのID
9: RボタンのID
10: 未使用
11: ZRボタンのID
12: ZLボタンのID
◇開始時間
最初に押されてからリピート開始までの時間(1/60秒単位)
◇インターバル
リピート開始後のリピート間隔(1/60秒単位、0=リピートOFF)
◎例
BREPEAT 0,15,4
■STICK [端末ID] OUT X,Y
・スライドパッドの情報取得
◎引数
◇端末ID(0~3)
ワイヤレス通信で他の端末から取得時に指定
◎戻り
◇X,Y
・変化量を受け取る変数( X:±1.0, Y:±1.0 )
・実際に返る値は±約0.86ぐらい
・Yの値は↑が正↓が負となる
◎例
STICK OUT X,Y
STICK 3 OUT X,Y
■STICKEX [端末ID] OUT X,Y
◇拡張スライドパッド/Cスティックの情報取得
・事前にXON EXPADで拡張スライドパッドの有効化が必要
◎引数
◇端末ID(0~3)
ワイヤレス通信で他の端末の情報を取得する際に指定
◎戻り
◇X,Y
変化量を受け取る変数( X:±1.0, Y:±1.0 )
◎例
XON EXPAD
STICKEX OUT X,Y
■ACCEL OUT X,Y,Z
◇加速度情報取得
・事前にXON MOTIONでモーションセンサーを有効化
・常に重力方向へ1Gの加速度を検出し続ける事に注意
・傾けて操作する場合に利用すると便利
◎引数
なし
◎戻り
◇X,Y,Z
加速度を受け取る変数(単位:G)
◎例
XON MOTION
ACCEL OUT X,Y,Z
■GYROV OUT P,R,Y
◇ジャイロセンサーの角速度情報取得
事前にXON MOTIONでモーションセンサーを有効化
◎引数
なし
◎戻り
◇P
Pitch(X軸の角速度)を取得する変数(単位:ラジアン/秒)
◇R
Roll(Y軸の角速度)を取得する変数(単位:ラジアン/秒)
◇Y
Yaw(Z軸の角速度)を取得する変数(単位:ラジアン/秒)
◎例
XON MOTION
GYROV OUT P,R,Y
■GYROA OUT P,R,Y
◇ジャイロセンサーの角度情報取得
事前にXON MOTIONでモーションセンサーを有効化
◎引数
なし
◎戻り
◇P
Pitch(X軸角度)を取得する変数(単位:ラジアン)
◇R
Roll(Y軸角度)を取得する変数(単位:ラジアン)
◇Y
Yaw(Z軸角度)を取得する変数(単位:ラジアン)
◎例
XON MOTION
GYROA OUT P,R,Y
■GYROSYNC
◇ジャイロ情報の更新
・ジャイロ情報は取得を繰り返すと誤差が蓄積される
・適宜リセットするために呼び出す
・ただし1フレーム間隔以下での呼び出しは禁止
◎例
GYROSYNC
■TOUCH [端末ID] OUT TT,TX,TY
◇タッチ情報取得
・画面周辺の5ドットは読み取れません
◎引数
◇端末ID(0~3)
ワイヤレス通信で他の端末の情報を取得する際に指定
◎戻り
◇TT
タッチされた時間を受け取る変数(0=タッチなし)
◇TX,TY
・タッチされた座標を受け取る変数(TX:5~314, TY:5~234)
・下画面のサイズと同じ範囲では返らないことに注意
◎例
TOUCH OUT TT,TX,TY
■MICSTART サンプリングレート, ビット数, 秒数
◇マイクからのサンプリング開始
・事前にXON MICでマイクを有効化
・3DSでは XON MIC 直後、および蓋開け直後は1秒間無音となる
・システム内のサンプリング用メモリーに記録
◎引数
◇サンプリングレート
0: 8180Hz
1: 10910Hz
2: 16360Hz
3: 32730Hz
◇ビット数
0: 8ビット
1: 16ビット
2: 8ビット符号付
3: 16ビット符号付
◇秒数
0: ループモード
1~: サンプリング秒数
・8180Hz、8bit時最大32秒、16bit時最大16秒
・10910Hz、8bit時最大24秒、16bit時最大12秒
・16360Hz、8bit時最大16秒、16bit時最大 8秒
・32730Hz、8bit時最大 8秒、16bit時最大 4秒
・ループモード時、最大秒数を超えると先頭から上書き
◎例
XON MIC
MICSTART 0,1,10
■MICSTOP
マイクからのサンプリングを停止
◎例
MICSTOP
■変数=MICDATA( 取得位置 )
◇マイクからのデータ取得
指定位置のサンプリングデータを返す
◎引数
◇取得位置
・0~(ビット数と最大秒数で範囲が決まる)
・ループモード時は範囲チェックは行わない
◎戻り
◇波形データ
・8ビット時の戻り値は128基準
・16ビット時の戻りは32768基準
◎例
D=MICDATA(100)
■MICSAVE [[取得位置,] 取得サンプル数,] 配列名 
内部サンプリングメモリーから配列へのコピー
◎引数
◇取得位置
取り込み始める位置(0~)
◇サンプル数
・取り込む数(省略時:サンプリングバッファ全体)
・MICSTARTで指定したサンプリングレート×秒数以上はエラー
◇配列名
・取り込んだサンプリングデータの格納先
・1次元配列の場合サンプル数が要素数を超えると自動拡張
◎例
XON MIC
MICSTART 0,0,1 'rate:8180 bit:8 length:1sec
DIM WAVE%[8180] 'MICSIZE
MICSAVE 0,8180,WAVE%
■数値=CONTROLLER( [コントローラID] )
対象となるコントローラの情報取得
・クラシックコントローラとクラシックコントローラPROは同じ値が返ります
・Wiiリモコンプラスは、Wiiリモコン+Wiiモーションプラスと同じ値を返します
◎引数
◇コントローラID(0~4)
0: GamePad
1~4: Wii互換コントローラ
・事前にXON WIIUが必要
◎戻り
|b00|GamePad/ニンテンドー3DS(1)
|b01|Wiiリモコン(2)
|b02|Wii U PROコントローラー(4)
|b03|Wiiモーションプラス(8)
|b04|ヌンチャク(16)
|b05|クラシックコントローラ(32)
返値が0の場合、該当IDのコントローラーは未接続。
b00-02は、接続されたコントローラーに応じて3bitのいずれか1bitがONになる。
b02-04は、b02が2の時のみORで合成される。
実際に取り得る戻り値のパターンは次の通り
0:未接続
1:GamePad/ニンテンドー3DS
2:Wiiリモコン
4:Wii U PROコントローラー
10:Wiiリモコンプラス
18:Wiiリモコン(+ヌンチャク)
26:Wiiリモコンプラス(+ヌンチャク)
34:Wiiリモコン(+クラシックコントローラ)
42:Wiiリモコンプラス(+クラシックコントローラ)
◎例
V=CONTROLLER()
▼ファイルへの読み書き、一覧取得などの命令
■FILES ["ファイル種別"](→ 1/2)
ファイル一覧をコンソール上に表示
◎引数
◇ファイル種別
特定のファイル種別のみ表示させたい場合に以下を指定
"TXT:" テキストおよびプログラム
"DAT:" バイナリデータ(グラフィック含む)
// プロジェクトの一覧
PROJECT/ プロジェクト名を指定
◎例
FILES
■FILES ["ファイル種別",] 文字列配列(← 2/2)
ファイル一覧を配列に取得
◎引数
◇ファイル種別
特定のファイル種別のみ表示させたい場合に以下を指定
"TXT:" テキストおよびプログラム
"DAT:" バイナリデータ(グラフィック含む)
// プロジェクトの一覧
PROJECT/ プロジェクト名を指定
◇文字列配列
ファイル一覧のファイル名が格納される文字列配列
・1次元配列の場合取得したファイル数に応じて自動拡張
◎例
DIM NAMETBL$[100]
FILES NAMETBL$
■LOAD ["リソース名:"]"ファイル名" [,ダイアログ表示フラグ](1/5 →)
◇ファイルの読み込み
・確認用のダイアログが表示される
・実行中のプログラムSLOTにプログラムはロードできない
◎引数
◇リソース名:
省略時: カレントプログラムSLOT
"PRG0:"~"PRG3:" プログラムSLOT (PRG=PRG0)
"GRP0:"~"GRP5:" グラフィックページ
"GRPF:" フォント用の画像ページ
◇ファイル名
読み込むファイル名
◇ダイアログ表示フラグ
FALSE=確認用ダイアログを表示させない
◎例
LOAD "PROGNAME"
LOAD "GRP0:GRPDATA"
■LOAD ["GRPリソース名:"]"ファイル名" [,OX,OY][,ダイアログ表示フラグ](←→ 2/5)
◇画像ファイルの読み込み
・確認用のダイアログが表示される
・オフセット指定時はみ出した部分は無視されます
◎引数
◇GRPリソース名:
"GRP0:"~"GRP5:" グラフィックページ
"GRPF:" フォント用の画像ページ
◇ファイル名
読み込むファイル名
◇OX,OY
画像上のオフセット(各0~511)
◇ダイアログ表示フラグ
FALSE=確認用ダイアログを表示させない
◎例
LOAD "GRP0:GRPDATA",0,64
■LOAD "TXT:ファイル名" [,ダイアログ表示フラグ] OUT TX$(←→ 3/5)
テキストファイルを文字列変数に読み込む
◎引数
◇ファイル名
読み込むテキストファイル名(先頭に"TXT:"を付ける)
◇ダイアログ表示フラグ
FALSE=確認用ダイアログを表示させない
◎戻り
◇TX$
読み込んだテキストファイルが格納される文字列変数
◎例
LOAD "TXT:MEMOFILE" OUT TX$
■文字列変数 = LOAD("TXT:ファイル名" [,ダイアログ表示フラグ])(←→ 4/5)
テキストファイルを文字列変数に読み込む
◎引数
◇ファイル名
読み込むテキストファイル名(先頭に"TXT:"を付ける)
◇文字列変数
読み込んだテキストファイルが格納される文字列変数
◇ダイアログ表示フラグ
FALSE=確認用ダイアログを表示させない
◎例
TX$=LOAD("TXT:MEMOFILE")
■LOAD "DAT:ファイル名", 数値配列 [,ダイアログ表示フラグ](← 5/5)
バイナリファイルを数値配列に読み込む
◎引数
◇ファイル名
読み込むバイナリファイル名(先頭に"DAT:"を付ける)
◇数値配列
読み込んだバイナリファイルが格納される数値変数
◇ダイアログ表示フラグ
FALSE=確認用ダイアログを表示させない
◎例
DIM MARRAY[100]
LOAD "DAT:MDATA", MARRAY
■SAVE ["リソース名:"]"ファイル名"(→ 1/3)
◇ファイルの保存
・実行時、確認のダイアログが表示される
・SAVE用の確認ダイアログは非表示にできません
◎引数
◇リソース名:
省略時: カレントプログラムSLOT
"PRG0:"~"PRG3:" プログラムSLOT (PRG=PRG0)
"GRP0:"~"GRP5:" グラフィックページ
"GRPF:" フォント用の画像ページ
◇ファイル名
保存するファイルに付ける名前
◎例
SAVE "PRG0:TEST"
■SAVE "TXT:ファイル名", 文字列変数(←→ 2/3)
文字列変数をテキストファイルに保存
◎引数
◇ファイル名
保存するファイルに付ける名前(先頭に"TXT:"を付ける)
◇文字列変数
保存するテキストデータの格納された文字列変数(UTF-8)
◎例
SAVE "TXT:MEMOFILE",TX$
■SAVE "DAT:ファイル名", 数値配列(← 3/3)
数値配列をバイナリファイルに保存
◎引数
◇ファイル名
保存するファイルに付ける名前(先頭に"DAT:"を付ける)
◇数値配列
保存するデータの格納された数値配列
◎例
SAVE "DAT:TEST",MARRAY
■RENAME ["ファイル種別:"]"ファイル名", ["ファイル種別:"]"新しい名前"
◇ファイル名の変更
実行時、確認ダイアログを表示
◎引数
◇ファイル種別:
"TXT:" テキストおよびプログラム
"DAT:" バイナリデータ(グラフィック含む)
◇ファイル名
名前を変更するファイルのファイル名
◇新しい名前
新しいファイル名
◎例
RENAME "SAMPLE","NEWNAME"
■DELETE ["ファイル種別:"]"ファイル名"
◇ファイルの消去
実行時、確認ダイアログを表示
◎引数
◇ファイル種別:
"TXT:" テキストおよびプログラム
"DAT:" バイナリデータ(グラフィック含む)
◎例
DELETE "SAMPLE"
■EXEC ["リソース名:"]"ファイル名"(→ 1/2)
◇プログラムのLOADと実行
・EXECで実行したプログラムから元のプログラムに戻れない
・他のSLOTでEXECしたプログラムのENDで戻ることができる
・DIRECTモードでは実行できない
◎引数
◇リソース名:
"PRG0:"~"PRG3:" 読み込み先プログラムSLOT
◇ファイル名
読み込むプログラムのファイル名
◎例
EXEC "SAMPLE"
EXEC "PRG0:SBGED"
■EXEC プログラムSLOT(← 2/2)
◇他のSLOTのプログラムを実行
・EXECで実行したプログラムから元のプログラムに戻れない
・他のSLOTでEXECしたプログラムのENDで戻ることができる
・DIRECTモードでは実行できない
◎引数
◇プログラムSLOT
0~3: 実行するプログラムSLOT番号
◎例
EXEC 2
■USE プログラムSLOT
指定プログラムSLOTのプログラムを実行可能にする
◎引数
◇プログラムSLOT
0~3: プログラムSLOT
◎例
USE 2
■変数 = CHKFILE(["ファイル種別:"]"ファイル名")
指定したファイルが存在するかどうかチェック
◎引数
◇ファイル種別
"TXT:" テキストおよびプログラム
"DAT:" バイナリデータ(グラフィック含む)
◇ファイル名
調べるファイル名
◎戻り
TRUE=存在、FALSE=存在しない
◎例
A=CHKFILE("SBATTACK")
▼画面の表示モードなどに関する命令
■XSCREEN 画面モード [,SPRITE割当数 ,BG割当数]
◇画面モードの設定
・画面モード2,3はDIRECTモードでも使用できるが、
 実行後は下画面がキーボードに切り替わる
・3D指定はペアレンタルコントロールで無効にできる
◎引数
◇画面モード
0: 上-3D 下-未使用(デフォルト)
1: 上-2D 下-未使用 
2: 上-3D 下-使用(INPUT時はキーボード表示)
3: 上-2D 下-使用(INPUT時はキーボード表示)
4: 上下結合(上画面は2D、INPUTおよびDIRECTモード使用不可)
◇SPRITE割当数
・上画面に割り当てるSPRITE数: 0~512
・下画面は512-上画面SP数
◇BG割当数
・上画面に割り当てるBGレイヤー枚数: 0~4
・下画面は4-上画面BGレイヤー数
◎例
XSCREEN 2,128,4
■DISPLAY 画面ID (→ 1/2)
◇操作対象の上下画面を選択
・DISPLAY 1は、XSCREEN 2または3のとき指定可
・ダイレクトモードでは直接実行できない
◎引数
◇画面ID
0:上画面 1:下画面
◎例
DISPLAY 0
■変数=DISPLAY() (← 2/2)
◇現在利用中の画面IDを取得
・DISPLAY 1は、XSCREEN 2または3のとき指定可
・ダイレクトモードでは直接実行できない
◎戻り
画面ID (0:上画面 1:下画面)
◎例
A=DISPLAY()
■VISIBLE コンソール,グラフィック,BG,SPRITE
画面表示要素のON/OFF切り替え
◎引数
◇コンソール
0:非表示(#OFF)、1:表示(#ON)
◇グラフィック
0:非表示(#OFF)、1:表示(#ON)
◇BG
0:非表示(#OFF)、1:表示(#ON)
◇SPRITE
0:非表示(#OFF)、1:表示(#ON)
◎例
VISIBLE 1,1,1,1
■BACKCOLOR 背景色コード(→ 1/2)
背景色を指定
◎引数
◇背景色コード
・通常はRGB関数で指定 例)BACKCOLOR RGB(64,128,128)
・直接数値を指定するときは、RGB各8ビットの色コード
◎例
BACKCOLOR RGB(64,128,128)
■変数=BACKCOLOR()(← 2/2)
現在の背景色を取得
◎戻り
現在設定されている背景色の色コード
◎例
C=BACKCOLOR()
■ACLS [ GR, SP, FN ]
◇描画設定をBASIC起動時の状態に戻す
・例のEND以降の処理に相当する動作を実行
・BGMなどのサウンド設定には影響しません
◎引数
◇GR
GCLSとSPRITE画像とBG画像初期化(TRUE=しない)
◇SP
SPDEF初期化(TRUE=しない)
◇FN
フォント初期化(TRUE=しない)
◎例
ACLS
END
'---
XSCREEN 0
LOAD GRP4:SYS/DEFSP.GRP
LOAD GRP5:SYS/DEFBG.GRP 
FONTDEF
SPDEF
DISPLAY 1
WIDTH 8
BACKCOLOR 0
FADE 0
COLOR 15,0:LOCATE 0,0,0:ATTR 0:CLS
GPAGE 1,1:SPPAGE 4:BGPAGE 5
VISIBLE 1,1,1,1
DISPLAY 0
BACKCOLOR 0
FADE 0
WIDTH 8
COLOR 15,0:LOCATE 0,0,0:ATTR 0:CLS
FOR I=0 TO 3:GPAGE I,I:GCLS 0:NEXT
GPAGE 0,0:GPRIO 1024
SPPAGE 4:SPCLR
BGPAGE 5:BGCLR
VISIBLE 1,1,1,1
■FADE フェード色 [,時間](→ 1/2)
◇画面フェーダの色を設定
・フェーダは常に最前面に描画
・画面全体をフェード色(透明色込み)で塗りつぶす
◇フェード色
画面を覆う色(RGB(0,0,0,0)を設定すると無効となる)
◇フェード時間
指定時間(1/60秒単位)で指定フェード色まで変化
◎例
FADE RGB(32,64,64,64),60
■数値=FADE()(← 2/2)
現在の画面フェーダの色を取得
◇戻り
ARGB各8ビットの色コード
◎例
C=FADE()
■変数=FADECHK()
フェードアニメーションの状態取得
◎戻り
TRUE=アニメーション中、FALSE=停止
◎例
R=FADECHK()
▼グラフィック画面への描画命令
■GPAGE 表示ページ, 操作ページ(1/2 →)
グラフィック表示ページと操作ページの指定
◎引数
◇表示ページ
0~5: GRP0~GRP5
◇操作ページ
0~5: GRP0~GRP5
※初期状態はGRP4にSPRITE、GRP5にBG画像が存在
◎例
GPAGE 0,0
■GPAGE OUT VP,WP (← 2/2)
現在設定されているグラフィックページ情報取得
◎引数
なし
◎戻り
◇VP
表示用のページ番号(0~5)
◇WP
操作用のページ番号(0~5)
◎例
GPAGE OUT WP,GP
■GCOLOR 色コード (1/2 →)
グラフィック描画色の指定
◎引数
◇色コード
・通常はRGB関数で指定 例)GCOLOR RGB(64,255,48)
・直接数値を指定するときはARGB各8ビットの色コード
・A(255:不透明、それ以外:透明)+RGB各8ビット(0~255)
◎例
GCOLOR RGB(255,0,0)
■GCOLOR OUT C32(← 2/2)
グラフィック描画色の指定
◎引数
なし
◎戻り
◇C32
ARGB各8ビットの色コード
◎例
GCOLOR OUT C32
■変数 = RGB( [透明度,] 赤要素,緑要素,青要素 )
◇8ビットRGB値をもとに色コードを得る
・黒 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)
◎引数
◇透明度
・透明度情報(255:不透明、それ以外:透明)
・SPCOLORでは0~255で透明度を指定可能
◇赤・緑・青要素
各要素 8ビット諧調(各0~255)
◎戻り
変数=色コード(ARGB各8ビット) ※GCOLORを参照
◎例
GPSET 0,0, RGB(255,255,0) 'YELLOW
■RGBREAD 色コード OUT [A,] R,G,B
色コードからRGBの各成分を得る
◎引数
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎戻り
◇A
透明度情報を受け取る変数(不透明:255~0:透明)
◇R,G,B
8ビット色情報を受け取る変数(各0~255)
◎例
RGBREAD C OUT R,G,B
■GCLIP クリップモード [,始点X,始点Y,終点X, 終点Y]
◇グラフィック画面のクリッピング領域を指定
・表示モードで範囲省略時、画面全体をクリッピング
・書き込みモードで範囲省略時、グラフィックページ全体
◎引数
◇クリップモード
0:表示クリッピング、1:書き込みクリッピング
◇始点X,Y
クリップ領域の始点座標
◇終点X,Y
クリップ領域の終点座標
◎例
GCLIP 0,100,100,200,200
■GPRIO Z座標
◇グラフィック画面の表示順位変更
3Dモードの場合グラフィック画面全体が影響を受ける
◎引数
◇Z座標
奥行方向の座標(奥:1024<液晶面:0<手前:-256)
◎例
GPRIO -100
■GCLS [ 色コード ]
◇グラフィック画面の消去
・透明色で画面全体を塗りつぶす命令
・色コードを指定した塗りつぶしも可能
◎引数
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GCLS RGB(32,32,32)
■変数 = GSPOIT( 座標X,座標Y )
◇グラフィック画面の指定座標の色を取得
内部で色変換を経由するため描画時と同じ数値が
返らない可能性があります
◎引数
◇座標X,Y
色を取得する座標(X:0~511、Y:0~511)
◎戻り
ARGB各8ビットの色コード ※GCOLORを参照
◎例
C=GSPOIT(100,100)
■GPSET 座標X,座標Y [,色コード ]
グラフィック画面に点を打つ
◎引数
◇座標X,Y
点を打つ座標
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GPSET 100,50
■GLINE 始点X,始点Y, 終点X,終点Y [,色コード ]
グラフィック画面に直線を引く
◎引数
◇始点X,Y
始点座標(X:0~511、Y:0~511)
◇終点X,Y
終点座標(X:0~511、Y:0~511)
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GLINE 0,0,399,239,RGB(0,255,255)
■GCIRCLE 中心点X,中心点Y, 半径 [,色コード ](→ 1/2)
グラフィック画面に円を描く
◎引数
◇中心点X,Y
中心点座標(X:0~511、Y:0~511)
◇半径
円の半径(ドット) 1~
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GCIRCLE 200,120,30
■GCIRCLE 中心点X,中心点Y, 半径, 開始角, 終了角 [,フラグ [,色コード]](← 2/2)
グラフィック画面に円弧を描く
◎引数
◇中心点X,Y
中心点座標(X:0~511、Y:0~511)
◇半径
円の半径(ドット) 1~
◇開始角,終了角
円弧の角度0~360
◇フラグ
描画方法(0=円弧,1=扇形)
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GCIRCLE 200,120,30, 0,45, 1
■GBOX 始点X,始点Y, 終点X,終点Y [,色コード]
グラフィック画面に四角形を描く
◎引数
◇始点X,Y
始点座標(X:0~511、Y:0~511)
◇終点X,Y
終点座標(X:0~511、Y:0~511)
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GBOX 0,0,399,239
■GFILL 始点X,始点Y, 終点X,終点Y [,色コード]
グラフィック画面に四角形を描いて塗りつぶす
◎引数
◇始点X,Y
始点座標(X:0~511、Y:0~511)
◇終点X,Y
終点座標(X:0~511、Y:0~511)
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GFILL 0,0,399,239
■GPAINT 開始点X, 開始点Y [ ,塗りつぶし色 [, 境界色 ] ]
◇グラフィック画面を塗りつぶす
境界色省略時、開始点座標にある色の範囲を塗る
◎引数
◇開始点X,Y
塗りつぶしを開始する座標(X:0~511、Y:0~511)
◇塗りつぶし色
ARGB各8ビットの色コード ※GCOLORを参照
◇境界色
指定方法は塗りつぶし色と同じ
◎例
GPAINT 200,120,RGB(255,0,0),RGB(0,0,0)
■GCOPY [転送元ページ,] 始点X,始点Y, 終点X,終点Y, 転送先X,転送先Y, コピーモード
他のグラフィックページから画像をコピー
◎引数
◇転送元ページ
0~5(GRP0~GRP5)、-1(GRPF) 省略時:現在の描画ページ
◇始点X,Y 終点X,Y
コピー元範囲の始点座標と終点座標(X:0~511、Y:0~511)
◇転送先X,Y
コピー先範囲の始点座標(X:0~511、Y:0~511)
◇コピーモード
TRUE=透明色をコピー、FALSE=透明色をコピーしない
◎例
GCOPY 0, 0,0,100,100, 200,100 ,1
■GSAVE [転送元ページ,] [X,Y,幅,高さ,] 転送先配列, 色変換フラグ
画像を配列へコピー(画面全体)
◎引数
◇転送元ページ
0~5(GRP0~GRP5)、-1(GRPF) 省略時:現在の描画ページ
◇X,Y,幅,高さ
コピー元範囲の始点X,Y座標,幅,高さ(ドット)
省略時:現在の描画領域
◇転送先配列
画像を格納する配列変数
※配列の要素が不足する場合、1次元配列に限り自動追加される
◇色変換フラグ
0: 色変換する(32bitの論理色にする)
1: 物理コードのまま(16bit)
◎例
DIM WORK[0]
GSAVE 0,0,0,512,512,WORK,1
■GLOAD [X,Y,幅,高さ,] 画像配列,色変換フラグ,コピーモード(→ 1/2)
画像データを配列からグラフィック画面にコピー
◎引数
◇X,Y,幅,高さ
コピー先範囲の始点X,Y座標,幅,高さ(ドット)
◇画像配列
GSAVEによって画像データが格納された数値配列
◇色変換フラグ
0: 色変換する(32bitの論理色にする)
1: 物理コードのまま(16bit)
◇コピーモード
TRUE=透明色をコピー、FALSE=透明色をコピーしない
◎例
GLOAD 0,0,512,512, WORK, 1, 0
■GLOAD [X,Y,幅,高さ,] 画像配列,パレット配列,コピーモード(← 2/2)
◇画像データを配列からグラフィック画面にコピー
パレットを使ったインデックスカラー扱い
◎引数
◇X,Y,幅,高さ
コピー先範囲の始点X,Y座標,幅,高さ(ドット)
◇画像配列
GSAVEによって画像データが格納された数値配列
◇パレット配列
パレットデータが格納された数値配列
◇コピーモード
TRUE=透明色をコピー、FALSE=透明色をコピーしない
◎例
GLOAD 0,0,512,512, WORK, PALETTE, 0
■GTRI X1,Y1, X2,Y2, X3,Y3 [,色コード]
グラフィック画面に三角形を描いて塗りつぶす
◎引数
◇X1,Y1
頂点1(X:0~399、Y:0~239)
◇X2,Y2
頂点2(X:0~399、Y:0~239)
◇X3,Y3
頂点3(X:0~399、Y:0~239)
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GTRI 200,10,300,200,100,200
■GPUTCHR X,Y, "文字列" [,スケールX,スケールY][,色コード](→ 1/2)
グラフィック画面に文字を描く
◎引数
◇X,Y
表示位置(X:0~399、Y:0~239)
◇文字列
表示する文字列
◇スケールX,Y
表示倍率(等倍=1.0)
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GPUTCHR 10,10,"あいう"
■GPUTCHR X,Y, 文字コード [,スケールX,スケールY][,色コード](← 2/2)
グラフィック画面に文字を描く
◎引数
◇X,Y
表示位置(X:0~511、Y:0~511)
◇文字コード
表示する文字コード
◇スケールX,Y
表示倍率(等倍=1.0)
◇色コード
ARGB各8ビットの色コード ※GCOLORを参照
◎例
GPUTCHR 10,10,ASC("A")
■GOFS X,Y(→ 1/2)
グラフィック画面の座標変更(移動)
◎引数
◇X,Y
グラフィック画面の表示オフセット
◎例
GOFS 50,80
■GOFS OUT X,Y(← 2/2)
グラフィック画面のオフセット値取得
◎戻り
◇X,Y
現在設定されているグラフィック画面の表示オフセット
◎例
GOFS OUT GX,GY
▼スプライトの制御命令
■SPPAGE グラフィックページ(1/2 →)
SPRITEに割り当てるグラフィックページの設定
◎引数
◇グラフィックページ
0~5(GRP0~GRP5) 初期状態のSPRITE用ページは4(GRP4)
◎例
SPPAGE 4
■変数=SPPAGE()(← 2/2)
SPRITEに割り当てられたグラフィックページの取得
◎戻り
グラフィックページ番号(0~5)
◎例
P=SPPAGE()
■SPCLIP [始点X,始点Y,終点X, 終点Y]
◇SPRITEのクリッピング領域を指定
・範囲省略時画面全体
◎引数
◇始点X,Y
クリップ領域の始点座標(X:0~399、Y:0~239)
◇終点X,Y
クリップ領域の終点座標(X:0~399、Y:0~239)
◎例
SPCLIP 100,100,200,200
■SPDEF(→ 1/6)
SPRITEキャラクタ定義用テンプレートを初期状態に戻す
◎引数
なし
◎SPDEF共通の補足
・SPRITEの定義用テンプレートは上下画面共通要素
・SPSETの定義を簡略化するために用意されています
◎例
SPDEF
■SPDEF 定義番号, U,V [,W,H [,原点X,原点Y]] [,アトリビュート](→ 2/6)
SPRITEのキャラクタ定義用テンプレートを作成
◎引数
◇定義番号
テンプレートの定義番号: 0~4095
◇U,V
定義する元画像の座標(U:0~511、V:0~511)
◇W,H
定義する元画像サイズ 省略時16,16
※U+WおよびV+Hの値が512を超えるとエラー
◇原点X,Y
SPRITEの座標基準点 省略時0,0
◇アトリビュート
|b00|表示(0=OFF、1=ON) #SPSHOW
|b01|↑90度単位の回転(b01とb02の2ビットで指定)
|b02|↓#SPROT0、#SPROT90、#SPROT0180、#SPROT270
|b03|横反転(0=OFF、1=ON)、#SPREVH
|b04|縦反転(0=OFF、1=ON)、#SPREVV
|b05|加算合成(0=OFF、1=ON)、#SPADD
省略時 0x01(表示のみON)
◎例
SPDEF 0,192,352,32,32,16,16,1
■SPDEF 数値配列 [,定義番号オフセット [,Uオフセット ,Vオフセット]](←→ 3/6)
SPRITEのキャラクタ定義用テンプレートを配列から一括作成
◎引数
◇数値配列
SPRITEのテンプレートデータが格納された数値配列
・1個分の要素はU,V,W,H,原点X,原点Y,アトリビュートの7つ
・要素数は7の倍数である必要がある
・0から順に要素数/7までのSPRITEテンプレートが定義される
◇定義番号オフセット
定義開始番号を指定:0~4095
◇U,Vオフセット
画像の定義位置調整用として加算されます(各0~511)
◎例
SPDEF SRCDATA
SPDEF SRCDATA 256, 0,256
■SPDEF "@ラベル文字列" [,定義番号オフセット [,Uオフセット ,Vオフセット]](←→ 4/6)
SPRITEのキャラクタ定義用テンプレートをDATA列から一括作成
◎引数
◇@ラベル文字列
SPRITEのテンプレートデータが列挙されたDATA命令のラベル
・@ラベル名は""でくくるか、文字列変数で指定する
・先頭データは定義するSPRITE数とし、
 続いて各SPRITEのデータを列挙(1個につき7データ)
・1個分のデータはU,V,W,H,原点X,原点Y,アトリビュートの7つ
◇定義番号オフセット
定義開始番号を指定:0~4095
◇U,Vオフセット
画像の定義位置調整用として加算されます(各0~511)
◎例
SPDEF "@SRCDATA"
SPDEF "@SRCDATA", 256, 0,256
■SPDEF 定義番号 OUT U,V [,W,H [,HX,HY]] [,A](←→ 5/6)
SPRITEのキャラクタ定義テンプレートの情報を得る
◎引数
◇定義番号
テンプレートの定義番号: 0~4095
◎戻り
◇U,V
画像の座標を受け取る変数
◇W,H
画像サイズを受け取る変数
◇HX,HY
SPRITEの座標基準点を受け取る変数
◇A
アトリビュートを受け取る変数
◎例
SPDEF 2 OUT U,V,ATR
■SPDEF 定義番号,元になる定義番号,[U],[V],[W],[H],[原点X],[原点Y],[アトリビュート](← 6/6)
◇SPRITEキャラクタ定義用テンプレートをコピー
・コピー不要な要素は省略可能(区切りの','カンマは必要)
・引数部分はコピーした上で調整する場合に利用
◎引数
◇定義番号
テンプレートの定義番号:0~4095
◇ソース定義番号
コピー元になる定義番号:0~4095
◇U,V
定義する元画像の座標(U:0~511、V:0~511)
◇W,H
定義する元画像サイズ 省略時16,16
※U+WおよびV+Hの値が512を超えるとエラー
◇原点X,Y
SPRITEの座標基準点 省略時0,0
◇アトリビュート
|b00|表示(0=OFF、1=ON) #SPSHOW
|b01|↑90度単位の回転(b01とb02の2ビットで指定)
|b02|↓#SPROT0、#SPROT90、#SPROT0180、#SPROT270
|b03|横反転(0=OFF、1=ON)、#SPREVH
|b04|縦反転(0=OFF、1=ON)、#SPREVV
|b05|加算合成(0=OFF、1=ON)、#SPADD
省略時 0x01(表示のみON)
◎例
SPDEF 0,255,192,352,32,32,16,16,1
SPDEF 1,255,,,32,32,,,
■SPSET 管理番号,定義番号(→ 1/6)
SPRITE作成(定義テンプレートを利用)
◎SPSET共通要素
・SPSETによりSPRITEは利用可能となる
・SPSET実行により回転等の情報は全て初期化
・SPVARの値はすべて0になる
・SPHIT系衝突判定を使う時はSPSET後にSPCOLを呼びます
◎引数
◇管理番号
作成するSPRITEの番号: 0~511
◇定義番号
SPDEFで定義したテンプレートの定義番号: 0~4095
◎例
SPSET 1,500
■SPSET 管理番号 ,U,V [,W,H] ,アトリビュート(←→ 2/6)
◇SPRITE作成(直接画像情報等を指定)
SPDEFの値を使わずに独自に設定する場合に利用
◎引数
◇管理番号
作成するSPRITEの番号: 0~511
◇U,V
定義する元画像の座標(U:0~511、V:0~511)
◇W,H
定義する元画像サイズ(省略時16,16)
※U+WおよびV+Hの値が512を超えるとエラー
◇アトリビュート
|b00|表示(0=OFF、1=ON) #SPSHOW
|b01|↑90度単位の回転(b01とb02の2ビットで指定)
|b02|↓#SPROT0、#SPROT90、#SPROT0180、#SPROT270
|b03|横反転(0=OFF、1=ON)、#SPREVH
|b04|縦反転(0=OFF、1=ON)、#SPREVV
|b05|加算合成(0=OFF、1=ON)、#SPADD
省略時 0x01(表示のみON)
◎例
SPSET 54,0,0,32,32,1
■SPSET 定義番号 OUT IX(←→ 3/6)
◇SPRITEに空きを探して作成(定義テンプレート利用)
SPRITE全体から空きを探す
◎引数
◇定義番号
SPDEFで定義したテンプレートの定義番号: 0~4095
◎戻り
◇IX  
生成された番号を受け取る変数: 0~511(-1=空きなし)
◎例
SPSET 500 OUT IX
■SPSET U,V,W,H,アトリビュート OUT IX(←→ 4/6)
◇SPRITEに空きを探して作成(直接画像情報等を指定)
SPRITE全体から空きを探す
◎引数
◇U,V
定義する元画像の座標(U:0~511、V:0~511)
◇W,H
定義する元画像サイズ(省略時16,16)
※U+WおよびV+Hの値が512を超えるとエラー
◇アトリビュート
|b00|表示(0=OFF、1=ON) #SPSHOW
|b01|↑90度単位の回転(b01とb02の2ビットで指定)
|b02|↓#SPROT0、#SPROT90、#SPROT0180、#SPROT270
|b03|横反転(0=OFF、1=ON)、#SPREVH
|b04|縦反転(0=OFF、1=ON)、#SPREVV
|b05|加算合成(0=OFF、1=ON)、#SPADD
◎戻り
◇IX  
生成された番号を受け取る変数: 0~511(-1=空きなし)
◎例
SPSET 0,0,32,32,1 OUT IX
■SPSET 上限,下限, 定義番号 OUT IX(←→ 5/6)
◇範囲内でSPRITEに空きを探して作成(定義テンプレート利用)
指定範囲内で空きを探す
◎引数
◇上限,下限  
空きを探す範囲(0~511)
◇定義番号
SPDEFで定義したテンプレートの定義番号: 0~4095
◎戻り
◇IX  
生成された番号を受け取る変数: 0~511(-1=空きなし)
◎例
SPSET 100,120, 500 OUT IX
■SPSET 上限,下限, U,V,W,H,アトリビュート OUT IX(← 6/6)
◇範囲内でSPRITEに空きを探して作成(直接画像情報等を指定)
指定範囲内で空きを探す
◎引数
◇上限,下限  
空きを探す範囲(0~511)
◇U,V
定義する元画像の座標(U:0~511、V:0~511)
◇W,H
定義する元画像サイズ(省略時16,16)
※U+WおよびV+Hの値が512を超えるとエラー
◇アトリビュート
|b00|表示(0=OFF、1=ON) #SPSHOW
|b01|↑90度単位の回転(b01とb02の2ビットで指定)
|b02|↓#SPROT0、#SPROT90、#SPROT0180、#SPROT270
|b03|横反転(0=OFF、1=ON)、#SPREVH
|b04|縦反転(0=OFF、1=ON)、#SPREVV
|b05|加算合成(0=OFF、1=ON)、#SPADD
省略時 0x01(表示のみON)
◎戻り
◇IX  
生成された番号を受け取る変数: 0~511(-1=空きなし)
◎例
SPSET 100,120, 0,0,32,32,1 OUT IX
■SPCLR 管理番号
◇指定SPRITEの使用をやめてメモリーを解放
利用後に開放しないとSPSET用の空きがなくなる
◎引数
◇管理番号
使用をやめるSPRITEの管理番号: 0~511
◎例
SPCLR 56
■SPSHOW 管理番号
◇SPRITEの表示を開始
SPSET前に使うとエラー
◎引数
◇管理番号
表示するSPRITEの管理番号: 0~511
◎例
SPSHOW 43
■SPHIDE 管理番号
◇SPRITEの表示を隠す
・表示を隠すだけでありSPRITEは存在
・SPSET前に使うとエラー
◎引数
◇管理番号
表示を隠すSPRITEの管理番号: 0~511
◎例
SPHIDE 43
■SPHOME 管理番号,位置X,位置Y (1/2 →)
◇SPRITEの座標基準点(ホーム位置)指定
・SPOFS命令の位置基準点
・回転やスケーリングの中心点
・衝突判定の中心座標
・SPSET前に使うとエラー
◎引数
◇管理番号
基準点を設定するSPRITEの管理番号: 0~511
◇位置X,Y
SPRITEの左上を原点(0,0)とした相対座標
◎例
SPHOME 34,16,16
■SPHOME 管理番号 OUT HX,HY (← 2/2)
◇SPRITEの座標基準点(ホーム位置)取得
SPSET前に使うとエラー
◎引数
◇管理番号
SPRITEの管理番号: 0~511
◎戻り
◇HX,HY
基準点の座標を受け取る変数
◎例
SPHOME 10 OUT HX,HY
■SPOFS 管理番号,[X],[Y][,Z](→ 1/2)
◇SPRITE座標の変更(移動)
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◇X,Y
SPRITEを表示する画面座標
◇Z
奥行方向の座標(奥:1024<液晶面:0<手前:-256)
◎例
SPOFS 23,50,80
SPOFS 23,,,1000
SPOFS 23,150,180,0
■SPOFS 管理番号 OUT X,Y[,Z](← 2/2)
◇SPRITEの座標を得る
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◎戻り
◇X,Y
座標を受け取る変数
◇Z
奥行情報を受け取る変数
◎例
SPOFS 12 OUT X,Y,Z
■SPROT 管理番号,角度(→ 1/3)
◇SPRITEの回転角度指定
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◇角度
回転角度: 0~360(時計回り)
◎例
SPROT 23,45
■SPROT 管理番号 OUT DR(←→ 2/3)
◇SPRITEの回転角度を得る
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◎戻り
◇DR
角度を受け取る変数
◎例
SPROT 23 OUT DR
■変数=SPROT(管理番号)(← 3/3)
◇SPRITEの回転角度を得る(関数タイプ)
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◎戻り
現在の角度(0~360)
◎例
A=SPROT(23)
■SPSCALE 管理番号, 倍率X, 倍率Y(→ 1/2)
◇SPRITEのスケール(表示倍率)の変更
・スケールを考慮した当り判定は先にSPCOLを実行
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◇倍率X,Y
0.5(50%)~1.0(100%)~2.0(200%)~
◎例
SPSCALE 56, 0.75, 0.75
■SPSCALE 管理番号 OUT SX,SY(← 2/2)
◇SPRITEの表示倍率を得る
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◎戻り
◇SX,SY
倍率を受け取る変数
◎例
SPSCALE 45 OUT SX,SY
■SPCOLOR 管理番号, 色コード(→ 1/2)
◇SPRITEの表示色を設定
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◇色コード
ARGB=8888形式の32ビット色コード
・Aの値を小さくすると透明度が上がる
・実際の表示色は色コードに元のドット色を乗算した値
◎例
SPCOLOR 1,RGB(16, 255,0,0) 'A=16,R=255,G=0,B=0
■SPCOLOR 管理番号 OUT C32(← 2/2)
◇SPRITEの表示色を得る
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◎戻り
◇C32
現在の色コードが返る変数(32ビットARGB)
◎例
SPCOLOR 1 OUT C
■SPCHR 管理番号, 定義番号(→ 1/4)
◇SPRITEのキャラクタ定義を変更(テンプレート指定)
SPSET前に使うとエラー
◎引数
◇管理番号
定義を変更するSPRITEの管理番号: 0~511
◇定義番号
SPDEF命令で登録したテンプレートの番号: 0~4095
◎例
SPCHR 0,500
■SPCHR 管理番号,[U],[V],[W],[H],[アトリビュート](←→ 2/4)
◇SPRITEのキャラクタ定義を変更(直接定義)
・管理番号以外の引数は省略可能
・SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◇U,V
定義する元画像の座標(U:0~511、V:0~511)
◇W,H
定義する元画像サイズ(省略時16,16)
※U+WおよびV+Hの値が512を超えるとエラー
◇アトリビュート
|b00|無視(直前のSPHIDE/SPSHOWの状態を維持)
|b01|↑90度単位の回転(b01とb02の2ビットで指定)
|b02|↓#SPROT0、#SPROT90、#SPROT0180、#SPROT270
|b03|横反転(0=OFF、1=ON)、#SPREVH
|b04|縦反転(0=OFF、1=ON)、#SPREVV
|b05|加算合成(0=OFF、1=ON)、#SPADD
省略時 0x01(表示のみON)
◎例
SPCHR 5,64,64,16,16,1
SPCHR 6,,,32,32,1 'UV skip
■SPCHR 管理番号 OUT U,V [,W,H [,A] ](←→ 3/4)
◇SPRITEのキャラクタ定義情報を得る
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◎戻り
◇U,V
元画像の座標を格納する変数
◇W,H
元画像のサイズを格納する変数
◇A
アトリビュートを格納する変数
◎例
SPCHR 5 OUT U,V,W,H,ATR
■SPCHR 管理番号 OUT DEFNO(← 4/4)
◇SPRITEのキャラクタ定義番号を得る
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◎戻り
◇DEFNO
定義番号を受け取る変数
◎例
SPCHR 5 OUT DEFNO
■SPLINK 管理番号, リンク先管理番号(→ 1/2)
◇SPRITEを別のSPRITEにリンク
・リンクは座標のみ(回転角度や倍率情報は対象外)
・リンク先(親)指定は自分よりも小さい管理番号のみ
・子の表示座標は、親を基準とした相対座標となる
・この座標系は画面左上が原点とはならない
・リンクの階層に制限はない
・SPSET前に使うとエラー
◎引数
◇管理番号
リンク元(子)のSPRITEの管理番号: 0~511
◇リンク先管理番号
リンク先(親)のSPRITEの管理番号: 0~511
※リンク元より小さい管理番号以外エラー
◎例
SPLINK 15,4
■変数=SPLINK( 管理番号 )(← 2/2)
指定された管理番号SPRITEのリンク先番号を得る
・SPSET前に使うとエラー
◎引数
◇管理番号
リンク元(子)のSPRITEの管理番号: 0~511
◎戻り
リンク先の管理番号:0~511(-1の時リンク無し)
◎例
V=SPLINK()
■SPUNLINK 管理番号
◇SPRITEのリンクを解除
SPSET前に使うとエラー
◎引数
◇管理番号
リンクを解除するSPRITEの管理番号: 0~511
◎例
SPUNLINK 15
■SPANIM 管理番号,アニメ対象,データ配列 [,ループ](→ 1/3)
◇SPRITEによるアニメ表示(配列で指定)
SPSET前に使うとエラー
◎SPRITEアニメ共通仕様
・アニメは値を設定して指定時間分待つという動作
・アニメ開始はSPANIMを実行した次フレームから
・対象要素ごとに最大32個のデータを受け付ける
・時間にマイナス値を指定すると直前の値から線形補間を行う
◎引数
◇管理番号
アニメーションを設定するSPRITEの管理番号: 0~511
◇アニメ対象
変化させる要素を管理する数値または文字列
・0または"XY": XY座標
・1または "Z": Z座標
・2または"UV": UV座標(定義元画像座標)
・3または "I": 定義番号
・4または "R": 回転角度
・5または "S": 倍率XY
・6または "C": 表示色
・7または "V": 変数(SPRITE内部変数7の値)
・対象数値に8を加えると実行時からの相対指定
・文字列の末尾に"+"を付けた場合も相対指定(例 "XY+")
◇データ配列
アニメデータが格納された1次元数値配列
◇ループ
ループ回数: (1~) 0で無限ループ
◎データ配列
アニメデータは数値配列に次の順で用意(最大32個まで)
時間1, 項目1,[項目2,] 時間2,項目1,[項目2,]…
◎例
DIM PANIM[ 6 ]
PANIM[0] = -60 'frame(-60=smooth)
PANIM[1] = 200 'offset X,Y
PANIM[2] = 100
PANIM[3] = -30 'frame
PANIM[4] = 50 'offset
PANIM[5] = 20
SPSET 0,0
SPANIM 0,"XY",PANIM
■SPANIM 管理番号,アニメ対象,"@ラベル文字列" [,ループ](←→ 2/3)
◇SPRITEによるアニメ表示(DATA命令で指定)
SPSET前に使うとエラー
◎引数
◇管理番号
アニメーションを設定するSPRITEの管理番号: 0~511
◇アニメ対象
変化させる要素を管理する数値または文字列
・0または"XY": XY座標
・1または "Z": Z座標
・2または"UV": UV座標(定義元画像座標)
・3または "I": 定義番号
・4または "R": 回転角度
・5または "S": 倍率XY
・6または "C": 表示色
・7または "V": 変数(SPRITE内部変数7の値)
・対象数値に8を加えると実行時からの相対指定
・文字列の末尾に"+"を付けた場合も相対指定(例 "XY+")
◇@ラベル文字列
・アニメデータが格納されたDATA命令の先頭ラベル
・@ラベル名を""でくくって文字列として指定(または文字変数)
◇ループ
ループ回数: (1~) 0で無限ループ
◎データ
アニメデータはDATA命令に次の順で用意
DATA キーフレーム数(最大32)
DATA 時間1,項目1[,項目2]
DATA 時間2,項目1[,項目2]
 :
◎例
@MOVDATA
DATA 2 'counter
DATA -60,200,100 'frame,offset
DATA -30,50,20 'frame,offset
SPSET 0,0
SPANIM 0,XY,@MOVDATA
■SPANIM 管理番号,アニメ対象,時間1,項目1[,項目2] [,時間2,項目1[,項目2]]… [,ループ](← 3/3)
◇SPRITEによるアニメ表示(直接引数として指定)
SPSET前に使うとエラー
◎引数
◇管理番号
アニメーションを設定するSPRITEの管理番号: 0~511
◇アニメ対象
変化させる要素を管理する数値または文字列
・0または"XY": XY座標
・1または "Z": Z座標
・2または"UV": UV座標(定義元画像座標)
・3または "I": 定義番号
・4または "R": 回転角度
・5または "S": 倍率XY
・6または "C": 表示色
・7または "V": 変数(SPRITE内部変数7の値)
・対象数値に8を加えると実行時からの相対指定
・文字列の末尾に"+"を付けた場合も相対指定(例 "XY+")
◇時間,項目
・アニメデータそのもの(必要な数分並べる、最大32個)
◇ループ
ループ回数: (1~) 0で無限ループ
◎例
SPSET 0,0
SPANIM 0,XY, -60,200,100, -30,50,20
■SPSTOP [管理番号]
◇SPRITEのアニメーションを停止
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
※管理番号を省略すると全SPRITEのアニメーションを停止
◎例
SPSTOP
■SPSTART [管理番号]
SPRITEのアニメーションを開始する
※SPSETの前に使うとエラーとなります
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
※管理番号を省略すると全SPRITEのアニメーションを開始
◎例
SPSTART
■変数=SPCHK( 管理番号 )
◇SPRITEのアニメーション状態を取得
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITEの管理番号: 0~511
◎戻り
|b00|XY座標(1)、#CHKXY
|b01|Z座標(2)、#CHKZ
|b02|UV座標(4)、#CHKUV
|b03|定義番号(8)、#CHKI
|b04|回転(16)、#CHKR
|b05|倍率XY(32)、#CHKS
|b06|表示色(64)、#CHKC
|b07|変数(128)、#CHKV
ビットごとに対象割り当て(すべて0の時アニメ停止中)
◎例
ST=SPCHK(5)
'|b00|#CHKXY
'|b01|#CHKZ
'|b02|#CHKUV
'|b03|#CHKI
'|b04|#CHKR
'|b05|#CHKS
'|b06|#CHKC
'|b07|#CHKV
■SPVAR 管理番号,内部変数番号,数値(→ 1/3)
◇SPRITE用内部変数への書き込み
・SPRITE用内部変数(8個ずつあるユーザー用変数)
・SPSET前でも利用可能(SPSET実行で8個とも0)
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◇内部変数番号
内部変数の番号: 0~7
◇数値
内部変数に登録する数値(0~
◎例
SPVAR 0,7,1
■変数=SPVAR( 管理番号,内部変数番号 )(←→ 2/3)
◇SPRITE用内部変数の読み込み(関数型)
・SPRITE用内部変数(8個ずつあるユーザー用変数)
・SPSET前でも利用可能(SPSET実行で8個とも0)
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◇内部変数番号
内部変数の番号: 0~7
◎戻り
SPVARで書き込んだ値
◎例
V=SPVAR(54,0)
■SPVAR 管理番号,内部変数番号 OUT V(← 3/3)
◇SPRITE用内部変数の読み込み
・SPRITE用内部変数(8個ずつあるユーザー用変数)
・SPSET前でも利用可能(SPSET実行で8個とも0)
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◇内部変数番号
内部変数の番号: 0~7
◎戻り
◇V
内部変数の値が戻る数値変数
◎例
SPVAR 54,0 OUT V
■SPCOL 管理番号 [,スケール対応](→ 1/7)
◇SPRITE衝突判定情報の設定
・SPHIT系の命令を使う前に必ず呼ぶこと
・SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◇スケール対応
FALSE=無視(省略時=FALSE)
TRUE=SPSCALEに判定領域を同期
※SPCOL命令後に設定したSPSCALEから有効
◎例
SPCOL 3,TRUE
■SPCOL 管理番号,[スケール対応],マスク(←→ 2/7)
◇SPRITE衝突判定情報の設定(マスク指定付)
・SPHIT系の命令を使う前に必ず呼ぶこと
・SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◇スケール対応
FALSE=無視(省略時=FALSE)
TRUE=SPSCALEに判定領域を同期
※SPCOL命令後に設定したSPSCALEから有効
◇マスク
0~&HFFFFFFFF(32ビット)
※衝突判定時に互いのビットのANDをとり、
 0であれば衝突していないとみなす(省略時&HFFFFFFFF)
◎例
SPCOL 3,TRUE,31
SPCOL 3,,31
■SPCOL 管理番号,始点X,始点Y,幅,高さ,[スケール対応],マスク(←→ 3/7)
◇SPRITE衝突判定情報の設定(範囲指定付)
・SPHIT系の命令を使う前に必ず呼ぶこと
・SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◇始点X,Y
・判定領域の始点座標: X,Y(-32768~32767)
・SPHOMEを原点(0,0)とした相対座標
◇幅,高さ
判定領域の幅と高さ: W,H(0~65535)
◇スケール対応
FALSE=無視(省略時=FALSE)
TRUE=SPSCALEに判定領域を同期
※SPCOL命令後に設定したSPSCALEから有効
◇マスク
0~&HFFFFFFFF(32ビット)
※衝突判定時に互いのビットのANDをとり、
 0であれば衝突していないとみなす(省略時&HFFFFFFFF)
◎例
SPCOL 3,0,0,32,32,TRUE,255
SPCOL 3,0,0,32,32,,255
■SPCOL 管理番号 OUT スケール対応 [,マスク](←→ 4/7)
◇SPRITE衝突判定情報取得(スケール対応とマスク)
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◎戻り
◇スケール対応
スケール値を受け取る変数
◇マスク
マスク値を受け取る変数
◎例
SPCOL 3 OUT SC,MSK
■SPCOL 管理番号 OUT 始点X,始点Y,幅,高さ(←→ 5/7)
◇SPRITE衝突判定情報取得(範囲)
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◎戻り
◇始点X,Y
判定領域の始点座標を受け取る変数
◇幅,高さ
判定領域の幅と高さを受け取る変数
◎例
SPCOL 3 OUT X,Y,W,H
■SPCOL 管理番号 OUT 始点X,始点Y,幅,高さ,スケール対応(←→ 6/7)
◇SPRITE衝突判定情報の取得(範囲とスケール対応)
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◎戻り
◇始点X,Y
判定領域の始点座標を受け取る変数
◇幅,高さ
判定領域の幅と高さを受け取る変数
◇スケール対応
スケール値を受け取る変数
◎例
SPCOL 3 OUT X,Y,W,H,SC
■SPCOL 管理番号 OUT 始点X,始点Y,幅,高さ,スケール対応,マスク(← 7/7)
◇SPRITE衝突判定情報の取得(すべて)
SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◎戻り
◇始点X,Y
判定領域の始点座標を受け取る変数
◇幅,高さ
判定領域の幅と高さを受け取る変数
◇スケール対応
スケール値を受け取る変数
◇マスク
マスク値を受け取る変数
◎例
SPCOL 3 OUT X,Y,W,H,SC,MSK
■SPCOLVEC 管理番号 [,移動量X,移動量Y]
◇SPRITE衝突判定用移動速度の設定
・SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◇移動量X,移動量Y
・省略時は次の要領で自動計算される
・SPANIMのXYを線形補完で実行中:前フレームからの移動距離
・それ以外の場合:0,0
◎例
SPCOLVEC 93
■変数 = SPHITSP( 管理番号 [,先頭ID,末尾ID] )(→ 1/3)
◇SPRITEの衝突判定
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
◎引数
◇管理番号
判定するSPRITEの管理番号: 0~511
◇先頭ID,末尾ID
判定するSPRITEの範囲(0~511)
◎戻り
衝突したSPRITEの管理番号(衝突のないとき-1)
◎例
H=SPHITSP(0)
■変数 = SPHITSP( 管理番号 ,相手管理番号 )(←→ 2/3)
◇指定SPRITEとのSPRITE衝突判定
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
◎引数
◇管理番号
判定するSPRITEの管理番号: 0~511
◇相手管理番号
相手側のSPRITEの管理番号: 0~511
◎戻り
FALSE=衝突なし、TRUE=衝突
◎例
H=SPHITSP( 0,34 )
■変数 = SPHITSP()(← 3/3)
◇直前に設定した情報からSPRITEの衝突判定
・引数を省略しないSPSETSPを呼び出しておくこと
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
◎引数
なし
◎戻り
衝突したSPRITEの管理番号(衝突のないとき-1)
◎例
H=SPHITSP()
■SPHITRC( 始点X,始点Y,幅,高さ[,[マスク],移動量X,移動量Y] )(→ 1/4)
◇動く四角形とすべてのSPRITEの衝突判定
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
◎引数
◇始点X,Y
判定元の四角形の左上座標
◇幅,高さ
判定元の四角形の幅と高さ
◇マスク
0~&HFFFFFFFF(32ビット)
※衝突判定時に互いのビットのANDをとり、
 0であれば衝突していないとみなす(省略時&HFFFFFFFF)
◇移動量X,Y
判定元の四角形の移動量
◎戻り
衝突したSPRITEの管理番号(衝突のないとき-1)
◎例
H=SPHITRC( 0,0,16,16 )
■SPHITRC( 管理番号,始点X,始点Y,幅,高さ[,[マスク],移動量X,移動量Y] )(←→ 2/4)
◇指定したSPRITEと四角形の衝突判定
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
◎引数
◇管理番号
衝突相手のSPRITEの管理番号: 0~511
◇始点X,始点Y
判定元の四角形の左上座標
◇幅,高さ
判定元の四角形の幅と高さ
◇マスク
0~&HFFFFFFFF(32ビット)
※衝突判定時に互いのビットのANDをとり、
 0であれば衝突していないとみなす(省略時&HFFFFFFFF)
◇移動量X,Y
判定元の四角形の移動量
◎戻り
FALSE=衝突なし、TRUE=衝突
◎例
H=SPHITRC( 1,0,0,16,16 )
■SPHITRC( 先頭ID,末尾ID, 始点x,始点y,幅,高さ[,[マスク],移動量X, 移動量Y] )(←→ 3/4)
◇指定範囲のSPRITEと四角形の衝突判定
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
◎引数
◇先頭ID,末尾ID
判定するSPRITEの範囲(0~511)
◇始点X,Y
判定元の四角形の左上座標
◇幅,高さ
判定元の四角形の幅と高さ
◇マスク
0~&HFFFFFFFF(32ビット)
※衝突判定時に互いのビットのANDをとり、
 0であれば衝突していないとみなす(省略時&HFFFFFFFF)
◇移動量X,Y
判定元の四角形の移動量
◎戻り
衝突したSPRITEの管理番号(衝突のないとき-1)
◎例
H=SPHITRC( 0,0,16,16 )
■変数 = SPHITRC()(← 4/4)
◇直前に設定した情報からSPRITEの衝突判定
・SPCOLを呼び出しておくこと
・SPSET前に使うとエラー
◎引数
なし
◎戻り
衝突したSPRITEの管理番号(衝突のないとき-1)
◎例
H=SPHITRC()
■SPHITINFO OUT TM(→ 1/3)
◇衝突判定結果の情報取得(衝突時間)
SPSET前に使うとエラー
◎引数
なし
◎戻り
◇TM
・衝突時間が戻る変数: 0~1の実数値
・判定時の位置+速度×衝突時間が衝突座標と一致
◎例
SPHITINFO OUT TM
■SPHITINFO OUT TM,X1,Y1,X2,Y2(←→ 2/3)
◇衝突判定結果の情報取得(衝突時間と座標)
SPSET前に使うとエラー
◎引数
なし
◎戻り
◇TM
・衝突時間が戻る変数: 0~1の実数値
・判定時の位置+速度×衝突時間が衝突座標と一致
◇X1,Y1
衝突時の物体1の座標が戻る変数
◇X2,Y2
衝突時の物体2の座標が戻る変数
◎例
SPHITINFO OUT TM,X1,Y1,X2,Y2
■SPHITINFO OUT TM,X1,Y1,VX1,VY1,X2,Y2,VX2,VY2(← 3/3)
◇衝突判定結果の情報取得(衝突時間と座標と速度)
SPSET前に使うとエラー
◎引数
なし
◎戻り
◇衝突時間
・衝突時間が戻る変数: 0~1の実数値
・判定時の位置+速度×衝突時間が衝突座標と一致
◇X1,Y1
衝突時の物体1の座標が戻る変数
◇VX1,VY1
衝突時の物体1の速度が戻る変数
◇X2,Y2
衝突時の物体2の座標が戻る変数
◇VX2,VY2
衝突時の物体2の速度が戻る変数
◎例
SPHITINFO OUT TM,X1,Y1,VX1,VY1,X2,Y2,VX2,VY2
■SPFUNC 管理番号, "@ラベル"
◇SPRITEごとに処理を割り当て
・コールバック処理が必要な上級者向けの命令
・CALL SPRITE により全SPRITEの処理を実行
・@ラベルの代わりにDEFで定義したユーザー処理も指定可能
・処理先ではCALLIDXシステム変数で管理番号取得可能
・SPSET前に使うとエラー
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◇@ラベル
呼び出される処理先のラベル(またはユーザー定義処理、ユーザー定義処理の場合は””不要)
◎例
SPFUNC 0,"@PROG"
■変数=SPUSED(管理番号)
指定されたSPRITEが使われているか調査
◎引数
◇管理番号
対象のSPRITE管理番号: 0~511
◎戻り
TRUE=使用中、FALSE=空き
◎例
S=SPUSED(4)
▼音楽や効果音の演奏とエフェクター設定および音声合成等の命令
■BEEP [効果音番号][,周波数][,音量][,パンポット]
単純な警告音・効果音の発生
◎引数
◇効果音番号
・鳴らす音の種類: プリセット音0~133
・SMILEボタンからプリセット音一覧を確認可能
◇周波数
・周波数の変更値: -32768~32767(100で半音)
◇音量
・再生する音量: 0~127
◇パンポット
・ステレオのパンポット指定: 0(左)~64(中央)~127(右)
◎例
BEEP 20
■変数=BGMCHK( [トラック番号] )
音楽の演奏状態調査
◎引数
◇トラック番号
トラック番号: 0~7(省略時は0番)
◎戻り
FALSE=停止中、TRUE=演奏中
◎例
RET=BGMCHK(0)
■BGMCLEAR [ユーザー定義曲番号]
ユーザー定義音楽の消去
◎引数
◇ユーザー定義曲番号
曲番号: 128~255(省略時すべての定義を消去)
◎例
BGMCLEAR
■BGMPLAY [トラック番号,] 曲番号 [,音量](→ 1/2)
◇音楽演奏(登録済みBGMを再生)
・同時に8曲演奏可能(同時発音数は全体で16音まで)
・MMLを使った演奏方法については2ページ目をご覧ください
◎引数
◇トラック番号
再生するトラック番号: 0~7(省略時は0番)
◇曲番号
・プリセット曲(0~42)
・ユーザー定義(128~255)
・SMILEボタンからプリセット曲一覧を確認可能
◇音量
再生する音量: 0~127
◎例
BGMPLAY 0
■BGMPLAY "MML文字列"(← 2/2)
◇音楽演奏(入力したMMLデータを再生)
・MMLによる再生はトラック0で行われる
・ユーザー定義曲番号255がMMLによる曲に書き換わる
・BGMPLAY直後に実行すると約2フレームの遅延が発生
◎引数
◇MML文字列
・MMLでヘルプボタンを押すとコマンド説明を表示
・以下の記号を並べることで演奏用文字列を登録
:0~:15  チャンネル指定
T1~T512 テンポ指定
CDEFGAB  音階(C#で半音上がり、C-で半音下がる)
N0~N127 キーを数値指定(O4C=60)
1~192  音長の個別指定(C1=全音符、C4.=付点四分音符)
L1~L192 デフォルト音長(付点は.を付ける)
R     休符
O0~O8  オクターブ数値指定
< >    1オクターブ上げる、下げる
V0~V127 音量の数値指定
( )    音量上げる、下げる
@0~@255 音色変更(0~127:GM相当、224~ユーザー波形)
P0~P127 パンポット(左:P0~63 中:P64 右:P65~127)
[     リピート開始
]回数   リピート終了(回数省略時は無限ループ)
&    前後の音をつなぐ
_     ポルタメント
◎例
BGMPLAY "T120O4L4CC8D8EE8F8GA8G8E2"
■BGMSET ユーザー定義曲番号,"MML文字列"
◇ユーザー定義音楽の事前定義
BGMPLAY直後に実行すると約2フレームの遅延が発生
◎引数
◇ユーザー定義曲番号
ユーザー定義曲番号: 128~255
◎MML文字列
MMLでヘルプボタンを押すとコマンド説明を表示
◎例
BGMSET 128,"CDEFG"
■BGMSETD ユーザー定義曲番号,"@ラベル文字列"
◇ユーザー定義曲の事前定義
・DATA命令を利用してMMLを内部に登録( DATA "CDEFGAB" )
・DATAの終端は数値で判断( DATA 0 )
・内部的にはRESTOREと同じ扱い
・BGMSETD後にREADする場合はRESTOREを使うこと
・BGMPLAY直後に実行すると約2フレームの遅延が発生
◎引数
◇ユーザー定義曲番号
ユーザー定義曲番号: 128~255
◇@ラベル文字列
・DATAでMML文字列が登録されたラベルの文字列
・""でくくるか、文字列変数に代入して指定
・MMLでヘルプボタンを押すとコマンド説明を表示
◎例
BGMSETD 128,"@MMLTOP"
■BGMVAR トラック番号, 変数番号, 値(→ 1/2)
MMLの内部変数への書き込み
◎引数
◇トラック番号
対象のMMLのトラック番号: 0~7
◇変数番号
値を書き込む内部変数: 0~7(MMLの$0~$7)
◇値
変数に書き込む値  
◎例
BGMVAR 0,5,10
■変数=BGMVAR(トラック番号, 変数番号 )(← 2/2)
MMLの内部変数の読み込み
◎引数
◇トラック番号
対象のMMLのトラック番号: 0~7
◇変数番号
値を読み込む内部変数: 0~7(MMLの$0~$7)
◎戻り
演奏中の指定された変数の内容(演奏停止中は-1)
◎例
MC=BGMVAR(0,5)
■BGMSTOP [トラック番号 [,フェード時間]](→ 1/2)
音楽演奏停止
◎引数
◇トラック番号
対象のトラック番号: 0~7(省略時は全トラックを停止)
◇フェード時間
秒(小数指定可能、0=即時停止、省略時0扱い)
◎例
BGMSTOP
■BGMSTOP -1(← 2/2)
◇音楽演奏停止
・鳴り続けるリリース音などの強制的な停止
・実行するとユーザー定義BGMの255番を上書き
◎引数
-1 : 強制的に音を止めるための値
◎例
BGMSTOP -1
■BGMVOL [トラック番号,] 音量
指定トラックの音量を設定
◎引数
◇トラック番号
対象のトラック番号: 0~7(省略時は0)
◇音量
設定する音量: 0~127
◎例
BGMVOL 0,64
■BGMPAUSE [トラック番号 [,フェード時間]](→ 1/2)
音楽演奏一時停止(再開にはBGMCONTを利用)
◎引数
◇トラック番号
対象のトラック番号: 0~7(省略時は全トラックを一時停止)
◇フェード時間
秒(小数指定可能、0=即時一時停止、省略時0扱い)
◎例
BGMPAUSE
■BGMPAUSE( [トラック番号] )(← 2/2)
音楽演奏一時停止状態の確認
◎引数
対象のトラック番号: 0~7(省略時は0)
◎例
A=BGMPAUSE()
■BGMCONT [トラック番号 [,フェード時間]]
一時停止中の音楽演奏を再開(一時停止にはBGMPAUSEを利用)
◎引数
◇トラック番号
対象のトラック番号: 0~7(省略時は全トラックを再開)
◇フェード時間
秒(小数指定可能、0=即時一時停止、省略時0扱い)
◎例
BGMCONT
■WAVSET 定義番号,A,D,S,R,"波形文字列" [,基準音程]
MMLのユーザー定義楽器音を定義
◎引数
◇定義番号
・ユーザー定義楽器番号: 224~255
・MMLの@コマンドで指定する番号
◇A,D,S,R
エンベロープ定義パラメータ
A: アタック(0~127)
D: ディケイ(0~127)
S: サスティン(0~127)
R: リリース(0~127)
◇波形文字列
・16進数文字列
・2文字で1サンプルの値(8bit)を表す
・&H00 ~ &H80(128) ~ &HFF(255)
・16,32,64,128,256,512サンプルの指定が可能
・文字数はサンプル数の2倍
◇基準音程
省略時は69(O4A)
◎例
W$="7F7F7F7FFFFFFFFF7F7F7F7FFFFFFFFF"*4
WAVSET 224,3,10,30,5,W$,69
■WAVSETA 定義番号,A,D,S,R,数値配列 [,基準音程][,先頭添字][,最終添字]
◇MMLのユーザー定義楽器音を配列から定義
・MICSAVEで得た配列から定義するときに利用
・サンプリングレート8180Hz、8ビット固定
◎引数
◇定義番号
・ユーザー定義楽器番号: 224~255
・MMLの@コマンドで指定する番号
◇A,D,S,R
エンベロープ定義パラメータ
A: アタック(0~127)
D: ディケイ(0~127)
S: サスティン(0~127)
R: リリース(0~127)
◇数値配列
MICSAVE命令で得た配列(最大16384サンプルまで)
◇基準音程
省略時は69(O4A) 
◇先頭添字
数値配列の読み込み開始要素の添字(省略時は0)
◇最終添字
数値配列の読み込み終了要素の添字(省略時は最終要素)
◎例
WAVSETA 224,0,95,100,20,SMPDATA
■SNDSTOP
◇すべての音の発声を停止
◎例
'BGM/BEEP/TALK/EFFECT/WAVE
SNDSTOP
▼MMLコマンド
■MML(MusicMacroLanguage)のコマンド(→ 1/7)
曲全体を制御するコマンド
◇チャンネル指定
:0~:15 (コロン:に続けてチャンネル番号指定)
◇テンポ指定
T1~T512
◎例
'--- テンポ120でドミソの和音
BGMPLAY "T120:0CCC:1EEE:2GGG"
■MML(MusicMacroLanguage)のコマンド(←→ 2/7)
音の長さに関するコマンドや記述方法
◇デフォルト音長の指定
L1~L192 指定すると以降のデフォルト音長が変化
◇音長の個別指定◆
デフォルト音長以外の長さで演奏させたい場合に、
音程記号に並べて入力することで音長を変更する
(例)ドの長さを直接指定する
C1(ドの全音符)
C2(ドの2分音符)
C4(ドの4分音符)
C8(ドの8分音符)
C16(ドの16分音符)
C32(ドの32分音符) 
C1.~C32.(ドの付点音符表現)
※三連符はC12C12C12、C24C24C24のように指定
◇奏法
&  前後の音をつなぐ()
_  ポルタメント()
◇発音時間の割合(ゲート)設定
Q0~Q8 小さい程音が途切れて聞こえる
■MML(MusicMacroLanguage)のコマンド(←→ 3/7)
音程(音の高さ)に関するコマンド
◇音階指定
C(ド)
D(レ)
E(ミ)
F(ファ)
G(ソ)
A(ラ)
B(シ)
◇音階を半音上げる
C# D# E# F# G# A# B#
◇音階を半音下げる
C- D- E- F- G- A- B-
◇休符◆
R  ※音階と同じように利用可能
(例) R4(4分休符)
◇オクターブ指定
O0~O8    オクターブ数値指定
◇オクターブを1つ上げる
◇オクターブを1つ下げる
◇オクターブ指定の反転
! ※指定すると以降<>記号の扱いが逆転
◇キーを数値指定◆
N0~N127 ※O4C=60、半音ごとに1増減
◎例
'--- ドドレミファソソラシシシシ
BGMPLAY "CCDEFGGABBBB"
■MML(MusicMacroLanguage)のコマンド(←→ 4/7)
音量や定位に関するコマンド
◇音量指定◆
V0~V127 音量の数値指定
◇音量を1つ上げる
( 
◇音量を1つ下げる
) 
◇パンポット◆
P0~P127 スピーカーから聞こえる場所(定位)を決める
左:P0~P63 中央:P64 右:P65~P127
◇エンベロープ設定
@E数値A,D,S,R 発声から減衰までの音量変化設定
A(Attack time):0~127
D(Decay time) :0~127
S(Sustain level):0~127
R(Release time):0~127 ※各timeは小さいほど遅い
(例) @E127,100,30,100
◇エンベロープリセット
@ER エンベロープを解除
■MML(MusicMacroLanguage)のコマンド(←→ 5/7)
音色変更コマンド
◇楽器音変更
@0  ~@127  GM音源相当(SMILETOOLで確認可能)
@128     標準ドラムセット
@129     エレクトリックドラムセット
@144~@150 PSG音源
@151     ノイズ音源
@224~@255 ユーザー定義波形(WAVSETで登録した波形)
@256~    BEEP用に用意された効果音
◇@128ドラムセット(@129)
B1 Acoustic Bass Drum 2(909BD)
C2 Acoustic Bass Drum 1(808BDTom)
C2# Side Stick(808RimShot)
D2 Acoustic Snare(808SD)
D2# Hand Clap
E2 Electric Snare(909SD)
F2 Low Floor Tom(808TomLF)
F2# Closed Hi-hat(808CHH)
G2 High Floor Tom(808TomF)
G2# Pedal Hi-hat(808CHH)
A2 Low Tom(808TomL)
A2# Open Hi-hat(808OHH)
B2 Low-Mid Tom(808TomLM)
C3 High Mid Tom(808TomHM)
C3# Crash Cymbal 1(808Cymbal)
D3 High Tom(808TomH)
D3# Ride Cymbal 1
E3 Chinese Cymbal
F3 Ride Bell
F3# Tambourine
G3 Splash Cymbal
G3# Cowbell(808Cowbell)
A3 Crash Cymbal 2
A3# Vibra-slap
B3 Ride Cymbal 2
C4 High Bongo
C4# Low Bongo
D4 Mute Hi Conga(808CongaMute)
D4# Open Hi Conga(808CongaHi)
E4 Low Conga(808CongaLo)
F4 High Timbale
F4# Low Timbale
G4 High Agogo
G4# Low Agogo
A4 Cabasa
A4# Maracas(808Maracas)
B4 Short Whistle
C5 Long Whistle
C5# Short Guiro
D5 Long Guiro
D5# Claves(808Claves)
E5 Hi Wood Block
F5 Low Wood Block
F5# Mute Cuica
G5 Open Cuica
G5# Mute Triangle
A5 Open Triangle
■MML(MusicMacroLanguage)のコマンド(←→ 6/7)
音や音量に微妙な揺れを与える特殊効果コマンド
※@MA、@MP、@MLは同時に使用できません
◇モジュレーションの開始
@MON
◇モジュレーションの停止
@MOF
◇デチューン(周波数の微調整)設定◆
@D-128~@D127 (-128で1音低く、+127で1音高くなる)
◇トレモロ設定
@MA 数値Depth, Range, Speed, Delay  (各0~127)
(例) @MA64,1,16,32
◇ビブラート設定
@MP 数値Depth, Range, Speed, Delay  (各0~127)
(例) @MP64,1,16,32
◇オートパンポット設定
@ML 数値Depth, Range, Speed, Delay  (各0~127)
(例) @ML100,1,8,0
■MML(MusicMacroLanguage)のコマンド(← 7/7)
特殊な演奏コマンド。
◇リピート開始
[
◇リピート終了
]回数 ※回数省略時は無限ループ◆
(例) 複雑なくりかえし CCC CCC DEF CCC CCC DEF と演奏
BGMPLAY [[CCC]2DEF]2
◇MML内部変数の指定
$0~$7  MML内部変数
※◆印のコマンドで、数値の代わりに指定可能
(例) V64 の代わりに $0=64 V$0
◇MML内部変数への代入
$0=数値~$7=数値 変数への数値代入(0~255)
※演奏中の変数はBGMVAR命令で代入・参照可能
◇マクロの定義
{ラベル名=MML}
同じメロディーやフレーズを再利用したい場合に利用
・定義MML内でチャンネル指定は禁止
・ラベル名は8文字までの英数字
・同じラベル名で再定義はできない
◇マクロの利用
{ラベル名} 定義済みのラベルに対応するMMLが展開される
◎例
'--- マクロを使ったリズム演奏
BGMPLAY "T240@128O2{PT0=CDEDCDE<G}[{PT0}]4"
▼数学関係の命令
■変数 = FLOOR( 数値 )
◇整数部を取り出す(小数部切り捨て)
・その数を超えない最大の整数を得る
・FLOOR(12.5)は12、FLOOR(-12.5)は-13となる
◎引数
◇数値
元になる数値
◎戻り
小数部を切り捨てられた整数値
◎関連
ROUND:四捨五入、CEIL:切り上げ
◎例
A=FLOOR(12.345)
■変数 = ROUND( 数値 )
整数部を取り出す(小数部四捨五入)
◎引数
◇数値
元になる数値   
◎戻り
小数部を四捨五入された整数値
◎関連
FLOOR:切り捨て、CEIL:切り上げ
◎例
A=ROUND(12.345)
■変数 = CEIL( 数値 )
◇整数部を取り出す(小数部切り上げ)
・その数を下回らない最小の整数を得る
・CEIL(12.5)は13、CEIL(-12.5)は-12となる
◎引数
◇数値
元になる数値
◎戻り
小数部を切り上げられた整数値
◎関連
ROUND:四捨五入、FLOOR:切り捨て
◎例
A=CEIL(12.345)
■変数 = ABS( 数値 )
絶対値を得る
◎引数
◇数値
絶対値を得る数値
◎戻り
絶対値
◎例
A=ABS(-12.345)
■変数 = SGN( 数値 )
符号取得
◎引数
◇数値
符号を得る数値
◎戻り
0または、±1
◎例
A=SGN(12.345)
■変数 = MIN( 数値配列 ) (→ 1/2)
指定された数値配列内の一番小さい値を得る
◎引数
◇数値配列
複数の数値の格納された数値配列名
◎戻り
渡された引数の中で一番小さい数
◎例
DIM TMP[2]
TMP[0]=50:TMP[1]=3
A=MIN(TMP)
■変数 = MIN( 数値, 数値 [,数値…] ) (← 2/2)
指定された複数の数値から一番小さい値を得る
◎引数
◇数値を直接列挙
 カンマで区切って複数の数値を列挙
◎戻り
 渡された引数の中で一番小さい数
◎例
A=MIN(1,2,3,4)
■変数 = MAX( 数値配列 ) (→ 1/2)
指定された数値配列内の一番大きい値を得る
◎引数
◇数値配列
複数の数値の格納された数値配列名
◎戻り
渡された引数の中で一番大きい数
◎例
DIM TMP[2]
TMP[0]=50:TMP[1]=3
A=MAX(TMP)
■変数 = MAX( 数値, 数値 [,数値…] ) (← 2/2)
指定された複数の数値から一番大きい値を得る
◎引数
◇数値を直接列挙
カンマで区切って複数の数値を列挙
◎戻り
渡された引数の中で一番大きい数
◎例
A=MAX(1,2,3,4)
■変数 = RND( [ シードID, ] 最大値 )
整数の乱数を得る(0~最大値-1まで)
◎引数
◇シードID
乱数の系列: 0~7
◇最大値
取得する乱数の上限
◎戻り
0~最大値-1までのランダムな整数
◎例
A=RND(100)
■変数 = RNDF( [ シードID ] )
実数型の乱数を得る(0以上 1.0未満の実数乱数)
◎引数
◇シードID
乱数の系列: 0~7
◎戻り
0以上1未満のランダムな実数
◎例
A=RNDF()
■RANDOMIZE シードID [, シード値 ]
乱数系列の初期化
◎引数
◇シードID  
乱数系列の種類: 0~7
◇シード値
0または省略時、利用できるエントロピー情報を用いて初期化
◎例
RANDOMIZE 0
■変数 = SQR( 数値 )
正の平方根を求める
◎引数
◇数値
平方根を求める数値
◎戻り
求めた正の平方根
◎例
A=SQR(4)
■変数 = EXP( [ 数値 ] )
e(自然対数の底)のべき乗を求める
◎引数
◇数値
指数(※省略時eを返す)
◎戻り
求めた結果
◎例
A=EXP(2)
■変数 = LOG( 数値 [,底 ] )
対数を求める
◎引数
◇数値
真数
◇底
底(※省略時、自然対数を求める)
◎戻り
求めた結果
◎例
A=LOG(2,2)
■変数 = POW( 数値, 乗数 )
べき乗を求める
◎引数
◇数値
べき乗を求める数値
◇乗数
べき乗の乗数
◎戻り
求めた結果
◎例
A=POW(1,4)
■変数 = PI()
円周率を得る
◎戻り
円周率の値(3.14159265)
◎例
A=PI()
■変数 = RAD( 数値 )
度からラジアンを求める
◎引数
◇数値
度: 0~360
◎戻り
度から求めたラジアン
◎例
R=RAD(45)
■変数 = DEG( 数値 )
ラジアンから度を求める
◎引数
◇数値
ラジアン
◎戻り
ラジアンから求めた度
◎例
A=DEG(0.5*PI())
■変数 = SIN( 角度 )
サイン値を返す
◎引数
◇角度
ラジアン
◎戻り
求めた値
◎例
A=SIN( RAD(45) )
■変数 = COS( 角度 )
コサイン値を返す
◎引数
◇角度
ラジアン
◎戻り
求めた値
◎例
A=COS( RAD(45) )
■変数 = TAN( 角度 )
タンジェント値を返す
◎引数
◇角度
ラジアン
◎戻り
求めた値
◎例
A=TAN( RAD(45) )
■変数 = ASIN( 数値 )
アークサイン値を返す
◎引数
◇数値
-1.0~1.0
◎戻り
求めたアークサイン(ラジアン)
◎例
A=ASIN(0)
■変数 = ACOS( 数値 )
アークコサイン値を返す
◎引数
◇数値
-1.0~1.0
◎戻り
求めたアークコサイン(ラジアン)
◎例
A=ACOS(1)
■変数 = ATAN( 数値 )(→ 1/2)
アークタンジェント値を返す(数値から)
◎引数
◇数値
角度を求める数値
◎戻り
求めたアークタンジェント(ラジアン)
◎例
A=ATAN(1)
■変数 = ATAN( 座標Y,座標X )(← 2/2)
アークタンジェント値を返す(XY座標から)
◎引数
◇座標Y,X
・原点からのX,Y座標値
・入力値はY座標が先
◎戻り
求めたアークタンジェント(ラジアン)
◎例
A=ATAN(1,1)
■変数 = SINH( 数値 )
ハイパボリックサイン値を返す
◎引数
◇数値
ハイパボリックサインを求める実数
◎戻り
求めたハイパボリックサイン
◎例
A=SINH(1)
■変数 = COSH( 数値 )
ハイパボリックコサイン値を返す
◎引数
◇数値
ハイパボリックコサインを求める実数
◎戻り
求めたハイパボリックコサイン
◎例
A=COSH(1)
■変数 = TANH( 数値 )
ハイパボリックタンジェント値を返す
◎引数
◇数値
ハイパボリックタンジェントを求める実数
◎戻り
求めたハイパボリックタンジェント
◎例
A=TANH(0.5)
■変数 = CLASSIFY( 数値 )
通常数値、無限大、非数(NaN)の判定
◎引数
◇数値
チェックしたい実数
◎戻り
0=通常数値、1=無限大、2=NaN
◎例
A=CLASSIFY(0.5)
■変数=数値1 MOD 数値2
数値1を数値2で割った余りの取得
◎引数
◇数値1
割られる数(または式)
◇数値2
割る数(または式、0で割るとエラー)
◎例
A=200 MOD 5
■変数=数値1 DIV 数値2
数値1を数値2で割った整数値の取得
◎引数
◇数値1
割られる数(または式)
◇数値2
割る数(または式、0で割るとエラー)
◎例
A=200 DIV 5
■変数=数値1 AND 数値2
数値1と数値2の論理積(ビットの掛算)
◎引数
◇数値1
ビット列1
◇数値2
ビット列2
◎例
A=200 AND &HE7
■変数=数値1 OR 数値2
数値1と数値2の論理和(ビットの足し算)
◎引数
◇数値1
ビット列1
◇数値2
ビット列2
◎例
A=128 OR &HA3
■変数=数値1 XOR 数値2
数値1と数値2の排他的論理和(同じ時0、異なる時反転)
◎引数
◇数値1
ビット列1
◇数値2
ビット列2
◎例
A=100 XOR &H4C
■変数=NOT 数値
数値のビット反転(1の補数を求める)
◎引数
◇数値
ビット列
◎例
A=NOT 1
■変数=数値 << 回数
数値を回数分左へビットシフト
◎引数
◇数値
ビット列1
◇回数
ビットシフト数
◎例
A=100 << 2
■変数=数値 >> 回数
数値を回数分右へビットシフト
◎引数
◇数値
ビット列1
◇回数
ビットシフト数
◎例
A=100 >> 2
▼文字列操作関係の命令
■変数 = ASC( "文字" )
指定された文字(または文字列変数)の文字コード取得
◎引数
◇文字
調べたい文字が入った文字列(または文字列変数)
◎戻り
指定された文字の文字コード(UTF-16)
◎例
A=ASC("A")
■文字列変数 = CHR$( 文字コード )
指定された文字コードから文字を返す
◎引数
◇文字コード
文字ごとに対応する番号(UTF-16)
◎戻り
文字コードに対応する文字
◎例
S$=CHR$(65)
■変数 = VAL( "文字列" )
文字列から数値を得る
◎引数
◇文字列
数字を表す文字列("123"など)、または文字列変数
◎戻り
文字列から解釈された数値
◎例
A=VAL("123")
■文字列変数 = STR$( 数値 [,桁数] )
数値から文字列を得る
◎引数
◇数値
文字列に変換したい数値
◇桁数
・指定桁数で右揃えしたい場合に指定
・数値の桁数が指定桁数より大きい場合指定を無視
◎戻り
数値から生成された文字列(123→123)
◎例
S$=STR$( 123 )
■文字列変数 = HEX$( 数値 [,桁数] )
数値から16進文字列を得る
◎引数
◇数値
16進文字列を得たい数値(小数部は切り捨て)
◇桁数
・出力する16進文字の桁数
・指定すると先頭に0を埋めた文字列を返す
◎戻り
数値から生成された16進文字列(255→FF)
◎例
S$=HEX$(65535,4)
■文字列変数 = BIN$( 数値 [,桁数] )
数値から2進文字列を得る
◎引数
◇数値
2進文字列を得たい数値(小数部は切り捨て)
◇桁数
・出力する2進文字の桁数
・指定すると先頭に0を埋めた文字列を返す
◎戻り
数値から生成された2進文字列(255→11111111)
◎例
S$=BIN$(65535,16)
■変数$ = FORMAT$( "書式文字列", 値 ,… )
表示書式を使って値を整形し文字列化する
◎引数
◇書式文字列(複数列挙可能)
%S: 文字列変数の内容を出力
%D: 整数を10進出力
%X: 整数を16進出力
%F: 実数を出力
%B: 整数を2進出力
◇書式文字列の補助指定
%のあとに次の補助指定を行うことにより出力を整形
・桁数指定:桁数の数値を指定(%8D、%4X)
・小数の桁数指定:整数部.小数部の桁数(%8.2F)
・空白埋め:空白文字+桁数を指定(% 4D→    0)
・ゼロ埋め:0+桁数を指定(%08D→00000000)
・左寄せ:-記号+桁数を指定(%-8D)
・+符号表示:+記号+桁数を指定(%+8D)
◇値
・整形する元の値
・書式内で指定された要素分カンマ(,)で区切って列挙
◎戻り
生成された文字列
◎例
S$=FORMAT$("%06D",A)
■変数 = LEN( "文字列" または 配列変数 )
文字列内の文字数を得る/配列の要素数を得る
◎引数
◇文字列の場合
文字数を調べたい文字列または文字列変数名
◇配列変数の場合
要素数を調べたい配列変数名
◎戻り
・文字列のとき: 文字数(すべての文字を1文字として数える)
・配列変数のとき: 要素数
◎例
A=LEN("ABC123")
■文字列変数 = MID$( "文字列", 開始位置, 文字数 )
文字列の指定位置から指定数分の文字列を取り出す
◎引数
◇文字列
元になる文字列
◇開始位置
文字列を取り出す開始位置(文字単位)
◇文字数
取り出す文字数
◎戻り
取り出した文字列
◎例
S$=MID$("ABC",0,2)
■文字列変数 = LEFT$( "文字列", 文字数 )
文字列の左端から指定数分の文字列を取り出す
◎引数
◇文字列
元になる文字列
◇文字数
取り出す文字数
◎戻り
取り出した文字列
◎例
S$=LEFT$("ABC",2)
■変数$ = RIGHT$( "文字列", 文字数 )
文字列の右端から指定数分の文字列を取り出す
◎引数
◇文字列
元になる文字列
◇文字数
取り出す文字数
◎戻り
取り出した文字列
◎例
S$=RIGHT$("ABC",2)
■変数 = INSTR( [開始位置,] "元文字列", "検索する文字列" )
文字列内から対象文字列を検索
◎引数
◇開始位置
・元文字列内で検索を開始する位置(0~文字単位)
・省略すると先頭から検索
◇元文字列
元になる文字列
◇検索する文字列
元文字列の中から検索したい文字列
◎戻り
・見つかった場合: 文字列内の位置(文字単位)
・見つからなかった場合: -1
◎例
A=INSTR( 0, "ABC","B" )
■文字列変数 = SUBST$( "文字列", 開始位置, [文字数,] "置換文字列" )
文字列の置換
◎引数
◇文字列
元になる文字列
◇開始位置
元になる文字列の置換開始位置(0~文字数-1)
◇文字数
・置換する文字数
・省略時は置換位置以降の全文字を置換文字列に置き換え
◇置換文字列
開始位置から文字数分をこの文字列で置き換え
◎戻り
置換された文字列
◎例
A$=SUBST$( "ABC",0,2,"XY" )
▼ソースコード操作関係の命令
■PRGEDIT プログラムSLOT [,行番号]
操作するプログラムSLOTと、カレント行を指定
◎引数
◇プログラムSLOT
・操作するプログラムSLOT: 0~3
・現在実行中のSLOTを指定するとエラー
◇行番号
・操作対象とする行(カレント行)
・省略した場合、先頭行がカレント行となる
・行番号に-1を指定した場合、最終行がカレント行となる
◎例
PRGEDIT 0
■文字列変数=PRGGET$()
カレント行1行分の文字列を取得
◎戻り
カレント行のソース文字列(範囲外の場合、空文字列)
◎例
A$=PRGGET$()
■PRGSET 文字列
◇カレント行の内容を指定文字列に置き換える
PRGGET$が空文字列を返す場合は行追加
◎引数
◇文字列
カレント行を置き換える文字列
◎例
PRGSET "'Comment"
■PRGINS 文字列 [,フラグ]
◇カレント行への1行挿入
改行コードCHR$(10)を含む文字列は複数行の挿入
◎引数
◇文字列
挿入するソース文字列
◇フラグ
1=カレント行の後方に挿入
0=カレント行の前方へ挿入(省略時=0、前方へ)
◎例
PRGINS "PRINT "+CHR$(34)+"HELLO"+CHR$(34)
■PRGDEL [削除行数]
カレント行の削除
◎引数
◇削除行数
・削除したい行の数(省略時1行)
・マイナス値を入れた場合全体を削除
◎例
PRGDEL
■変数=PRGSIZE( [プログラムSLOT [,取得する値のタイプ]] )
ソースコードの行数取得
◎引数
◇プログラムSLOT
行数を取得するプログラムSLOT: 0~3
◇取得する値のタイプ
0=行数、1=文字数、2=空き文字数(デフォルトは0)
◎戻り
タイプに応じた値
◎例
A=PRGSIZE(0)
■文字列変数=PRGNAME$([プログラムSLOT])
◇プログラムのファイル名
LOAD/SAVE命令で扱ったファイル
◎引数
◇プログラムSLOT
ファイル名を取得するプログラムSLOT: 0~3
◎戻り
・プログラムのファイル名
・プログラム実行中は実行しているSLOT
・実行していない時は「直前に実行していたSLOT」
・「直前に実行していたSLOT」は通常0
・STOP命令やSTARTボタンでプログラム中断時、
 およびエラー発生時はその時のSLOTとなり、
 以後RUNするまでその状態が維持される
◎例
PRINT PRGNAME$(0)
▼拡張サウンドユニット関係の命令
■BIQUAD OTWK,INWK,FP
◇BiQuadフィルタ<//h2>
◎引数
◇OTWK
出力結果を受け取る配列(1次元,2次元)
・OTWKの配列の要素数がINWKの配列の要素数より少ない場合エラー
◇INWK
入力要素を渡す配列(1次元,2次元)
◇FP
フィルター配列(要素数は13以上、FP[5..12]の値は変更なし)
・FPの配列の要素数が13より少ない場合エラー
◎補足
IN,OUT共に2次元配列を指定した場合はステレオ扱い。INで指定される配列の全要素に対して以下の式の演算を行い、OTWKで指定した配列に出力します。
OTWK[t]=FP[0]*INWK[t]+FP[1]*INWK[t-1]+FP[2]*INWK[t-2]-FP[3]*OTWK[t-1]-FP[4]*OTWK[t-2]
※配列のインデックスが負の場合は、モノラル又は左チャンネルはFP[5..8]、右チャンネルはFP[9..12]の値を用います。FP[5..12]の値は実行ごとに更新されます
なお、フィルタ係数配列FPの値の詳細については、http://www.musicdsp.org/files/Audio-EQ-Cookbook.txtを参考にしております。
上記文献に示される係数の b0,b1,b2,a0,a1,a2 を用いて
FP[0]=b0/a0
FP[1]=b1/a0
FP[2]=b2/a0
FP[3]=a1/a0
FP[4]=a2/a0
とすると、その特性のフィルタになります。
◎例
DIM OD[1000],ID[1000],FP[13]
BQPARAM FP,#BQLPF,32730,8000,1.0
BIQUAD OD,ID,FP
■BQPARAM FP,k,s,f,q(o) [,g]
BiQuadフィルタのフィルタ係数を計算
◎引数
◇FP
フィルタ係数を受け取る配列(要素数は13以上、FP[5..12]の値は変更なし)
◇k
フィルタ種別:0~7
0 #BQAPF BQPARAM FP,k,s,f
1 #BQLPF BQPARAM FP,k,s,f
2 #BQHPF BQPARAM FP,k,s,f
3 #BQBPF BQPARAM FP,k,s,f,o
4 #BQBSF BQPARAM FP,k,s,f,o
5 #BQLSF BQPARAM FP,k,s,f,q,g
6 #BQHSF BQPARAM FP,k,s,f,q,g
7 #BQPEQ BQPARAM FP,k,s,f,o,g
◇s
サンプリングレート(Hz)
◇f
カットオフ周波数(Hz)
◇q
Q値
◇o
帯域幅(octave: nでカットオフ周波数を中心とした nオクターブの帯域)
◇g
増幅量(db: -40<=g<=40)
◎補足
フィルタごとの説明
◇オールパスフィルタ
カットオフ周波数付近の位相のみ変化
◇ローパスフィルタ
カットオフ周波数以下を通過
◇ハイパスフィルタ
カットオフ周波数以上を通過
◇バンドパスフィルタ
カットオフ周波数を中心とした指定の周波数帯域を通過
◇バンドストップフィルタ
カットオフ周波数を中心とした指定の周波数帯域以外を通過
◇ローシェルフフィルタ
カットオフ周波数以下を増幅
◇ハイシェルフフィルタ
カットオフ周波数以上を増幅
◇ピーキングイコライザ
カットオフ周波数を中心とした指定の周波数帯域を増幅
◎例
DIM OD[1000],ID[1000],FP[13]
BQPARAM FP,#BQLPF,32730,8000,1.0
BIQUAD OD,ID,FP
■FFT outR,outI,inR,inI[,W]
複素数配列に対してフーリエ変換
◎引数
◇outR,outI
結果を格納するoutR(実数部),outI(虚数部)の複素数配列
◇inR,inI
inR(実数部),inI(虚数部)で表される複素数配列
◇W
窓関数値配列。指定した場合、入力の複素数配列に対し同一インデックスの要素値を乗算(窓関数値配列はFFTWFN命令で得ること可能)
◎補足
inR,inIで表される複素数配列に対してフーリエ変換を行い、結果を outR,outIの複素数配列に返す。指定する配列は全て同じ要素数で2のn乗であることが必要(条件を満たしていない場合エラー)
◎例
DIM inR[1024],inI[1024]
DIM outR[1024],outI[1024]
FFT outR,outI,inR,inI
■IFFT outR,outI,inR,inI
複素数配列に対してフーリエ逆変換
◎引数
◇outR,outI
結果を格納するoutR(実数部),outI(虚数部)の複素数配列
◇inR,inI
inR(実数部),inI(虚数部)で表される複素数配列
◎補足
inR,inIで表される複素数配列に対してフーリエ逆変換を行い、結果を outR,outIの複素数配列に返す。指定する配列は全て同じ要素数で2のn乗であることが必要(条件を満たしていない場合エラー)
◎例
DIM inR[1024],inI[1024]
DIM outR[1024],outI[1024]
IFFT outR,outI,inR,inI
■FFTWFN W,n
配列 W に nで指定した種類の窓関数値を返す
◎引数
◇W
処理を適用する配列(要素数は2のn乗のみ)
◇n
窓関数種別
0 #WFRECT 矩形窓
1 #WFHAMM ハミング窓
2 #WFHANN ハニング窓
3 #WFBLKM ブラックマン窓
◎例
DIM inR[1024],inI[1024],WF[1024]
DIM outR[1024],outI[1024]
FFTWFN WF,#WFHANN
FFT outR,outI,inR,inI,WF
■PCMPOS
PCMSTREAMの内部のFIFOに転送する先頭位置(配列のインデックス)示すシステム変数(FIFOが空になった時にこの位置から転送されます)
◎補足
このシステム変数へ書き込むことで、PCMSTREAMの再生位置を設定します。再生中に設定すると即時で指定の位置から再生(設定値は、PCMSTREAMに設定されている配列の要素数で割った余りとなります)
◎例
P=PCMPOS
PCMPOS=P
■PCMCONT
PCMSTREAM停止時の状態から再開
◎例
PCMCONT
■PCMSTOP
PCMSTREAMを停止
◎例
PCMSTOP
■PCMSTREAM M [,サンプリングレート](1/3 →)
◇指定配列を左右のチャンネルに割り当てPCM再生を行う
・最初に指定した配列の長さでループ再生
◎引数
◇M
PCMが格納された配列:-32768~32767(符号付き16ビット)
MがM[2,N]の2次元配列の場合、[0,x]が左[1,x]を右チャンネルに割り当て
◇サンプリングレート
単位はHz、範囲は1~192000(省略時32730)
◎戻り
◎補足
プログラムの実行中のみ再生(プログラムが終了する/エラーで停止するなどして、ダイレクトモードに戻ると再生が停止します)
◎例
DIM MONO[1000]
PCMSTREAM MONO
■PCMSTREAM L,R [,サンプリングレート](←→ 2/3)
◇左右分の配列からPCM再生を行う
・最初に指定した配列の長さでループ再生
◎引数
◇L,R
Lに左側、Rに右側のPCMが格納された配列:-32768~32767(符号付き16ビット)
◇サンプリングレート
単位はHz、範囲は1~192000(省略時32730)
◎補足
プログラムの実行中のみ再生(プログラムが終了する/エラーで停止するなどして、ダイレクトモードに戻ると再生が停止します)
◎例
DIM LEFT[1000],RIGHT[1000]
PCMSTREAM LEFT,RIGHT
DIM STEREO[2,1000]
PCMSTREAM STEREO
■PCMSTREAM サンプリングレート(← 3/3)
現在再生中のPCMSTREAMのサンプリングレートを変更(再生していない時は変化なし)
◎引数
◇サンプリングレート
単位はHz、範囲は1~192000(省略時32730)
◎例
PCMSTREAM 880
■PCMVOL [CH,]VOL
PCMSTREAMの音量を設定
◎引数
◇CH
チャンネル:0=左,1=右(省略時は両チャンネル)
◇VOL
音量:-32767~32767(負の値で位相が逆になります)
◎例
PCMVOL 16384
■RINGCOPY コピー先配列, コピー先オフセット, コピー元配列 [[,コピー元オフセット],コピー要素数](1/2 →)
◇コピー先配列変数をリングバッファとしてデータをコピーする命令
COPY命令のように配列間の値をコピーするが、コピー先よりもコピー元のコピー要素数が多い場合でも要素数を拡張せず、配列の先頭に折り返してデータをコピーする。
◎引数
◇コピー先配列,コピー先オフセット
コピーされる側の配列名とコピー開始位置
◇コピー元配列,コピー元オフセット
元になる側の配列名とコピー開始位置
◇コピー要素数
実際にコピーする数
◎補足
コピー先、コピー元共に1,2次元配列を指定可能。2次元配列を指定した場合、第1次元の要素数分チャンネルのあるマルチチャネルデータとして扱われる。
コピー先、コピー元両方に2次元配列を指定した場合、双方のチャンネル数が異なるとエラーとなる。
コピー先が2次元、コピー元が1次元配列の場合、コピー元データがコピー先の全チャンネルに同じようにコピーされる。
◎例
DIM BUFF[1024],DT[256]
RINGCOPY BUFF,1000,DT
■変数 = RINGCOPY( コピー先配列, コピー先オフセット, コピー元配列 [[,コピー元オフセット],コピー要素数] )(← 1/2)
◇リングバッファとしてデータをコピーする命令
関数型で利用した場合、リングバッファとしてのコピーを行った後の末尾位置を返す。
◎引数
◇コピー先配列,コピー先オフセット
コピーされる側の配列名とコピー開始位置
◇コピー元配列,コピー元オフセット
元になる側の配列名とコピー開始位置
◇コピー要素数
実際にコピーする数
◎戻り
コピーしたデータの末尾位置(リングバッファとして扱う場合、帰ってきた値が次回のコピー先オフセットとなる)
◎補足
コピー先、コピー元共に1,2次元配列を指定可能。2次元配列を指定した場合、第1次元の要素数分チャンネルのあるマルチチャネルデータとして扱われる。
コピー先、コピー元両方に2次元配列を指定した場合、双方のチャンネル数が異なるとエラーとなる。
コピー先が2次元、コピー元が1次元配列の場合、コピー元データがコピー先の全チャンネルに同じようにコピーされる。
◎例
DIM BUFF[1024],DT[256]
N=1000
N=RINGCOPY(BUFF,N,DT)
■ARYOP 演算タイプ, 結果格納配列変数, パラメータ1, パラメータ2 [,パラメータ3]
配列間で要素の一括演算を行う
配列の先頭から、結果格納配列の末尾まで、それぞれの要素間で演算タイプで指定された演算を行い、結果格納配列に演算結果を格納する。パラメータ配列の要素数が結果格納配列の要素数と異なる場合、配列の末尾まで到達したら配列の先頭に戻ってくりかえし参照する。
◎引数
◇演算タイプ
以下の数値(または定数)を指定可能
0 #AOPADD 加算(p1+p2)
1 #AOPSUB 減算(p1-p2)
2 #AOPMUL 乗算(p1*p2)
3 #AOPDIV 除算(p1/p2)
4 #AOPMAD 積和(p1*p2+p3)
5 #AOPLIP 線形補間(p1*p3+p2*(1-p3))
6 #AOPCLP クランプ(p1の値をp2<=x<=p3の範囲に丸める)
◇結果格納配列
数値列を指定
◇パラメータ1,2,3
数値配列、または通常数値を指定(通常数値を指定した場合はその項は常にその数値を使用)
◎例
DIM O[10],I0[10],I1[10]
ARYOP #AOPADD,O,I0,I1
▼エミュレータ関係の命令
■変数=EMUDUMP( アドレス )
◇エミュレーションCPUのメモリから値を読み出す
◎引数
◇アドレス
エミュレータ上のCPU内のアドレス
・対象となるCPUのアドレス範囲外を指定するとエラー
◎戻り
指定したアドレスの内容
◎例
V=EMUDUMP( &HD000 )
■EMUSTORE アドレス, 値
◇エミュレーションCPUのメモリへ値を書き込む
◎引数
◇アドレス
エミュレータ上のCPU内のアドレス
・OTWKの配列の要素数がINWKの配列の要素数より少ない場合エラー
◇値
書き込む値
・書き込むアドレスによってはCPUが暴走する可能性あり
◎例
EMUSTORE &HD000, &HC9
■EMUBREAK
◇エミュレーションの停止
◎例
EMUBREAK
■EMUGO
◇エミュレーションの実行(停止中の場合再開)
◎例
EMUGO
■変数=EMUREGSIZE( レジスタID )
◇レジスタIDで指定したエミュレーションCPUのレジスタのビット幅を返す
◎引数
◇レジスタID
エミュレーション対象のCPUに搭載されているレジスタごとに割り当てられた番号
・割り当てられていないIDを指定した場合エラー
◎戻り
指定したレジスタのビット数
◎例
L=EMUREGSIZE( 0 )
■変数=EMUREG( レジスタID )
◇エミュレーションCPUの指定レジスタから値を読み出す
◎引数
◇レジスタID
エミュレーション対象のCPUに搭載されているレジスタごとに割り当てられた番号
・割り当てられていないIDを指定した場合エラー
◎戻り
指定したレジスタの値
◎例
V=EMUREG( 0 )
■文字列変数=EMUREGNAME( レジスタID )
◇エミュレーションCPUの指定レジスタ名を文字列として読み出す
◎引数
◇レジスタID
エミュレーション対象のCPUに搭載されているレジスタごとに割り当てられた番号
・割り当てられていないIDを指定した場合エラー
◎戻り
指定したレジスタの名前文字列
◎例
N$=EMUREGNAME( 0 )
■EMURESET
◇エミュレーションCPUをリセット
◎例
EMURESET
■EMUHARTZ クロック倍率
◇エミュレーションCPUのメモリから値を読み出します。
◎引数
◇クロック倍率
0.0~16.0: 文字列を送信する接続先番号
◎例
EMUHARTZ 1.0
■EMUVOLUME 音量
◇エミュレーションしているマシンの音量を設定
◎引数
◇ADR
0~65535
◎例
EMUVOLUME 32768
■EMUWINDOW X座標,Y座標,幅,高さ
◇エミュレーション画面の表示位置を指定
◎引数
◇X座標,Y座標
SmileBASIC上の画面座標
◇幅,高さ
ウィンドウの表示サイズ
◎例
EMUWINDOW 20,10,40,30
■EMUWINDOW 簡易位置番号
◇エミュレーション画面の表示位置を簡易指定
◎引数
◇簡易位置番号
0:非表示
1:画面左上
2:画面右上
3:画面左下
4:画面右下
5:全画面
◎例
EMUWINDOW 5
▼GPIO制御関係の命令(I2C/SPI含む)
■GPIOMODE ピン番号,モード値
◇指定したピン番号のピンのIOモードを設定
◎引数
◇ピン番号
I/O・ソフトウェアPWM・ソフトウェアTONE(上段):14,15,18,23,24,25,8,7,12,16,20,21
I/O・ソフトウェアPWM・ソフトウェアTONE(下段):2,3,4,17,27,22,10,9,11,5,6,13,19,26
8ビットI/O(D0-D7順):17,18,27,22,23,24,25,4
PWM・TONE (同一の出力):18,12,13,19
CLOCK:4
I2C:SDA:2 SCL:3
SPI:MOSI:10, MISO:9, SCLK:11, CE:8
◇モード値
0:デジタル入力
1:デジタル出力
2:PWM出力
3:CLOCK出力
4:ソフトウェアPWM出力
5:ソフトウェアTONE出力
6:TONE出力
16:ALT0
17:ALT1
18:ALT2
19:ALT3
20:ALT4
21:ALT5
◎例
GPIOMODE 18,6
■GPIOPUD ピン番号,モード値
◇指定したピン番号のピンのプルアップ/ダウンを設定
◎引数
◇ピン番号
I/O・ソフトウェアPWM・ソフトウェアTONE(上段):14,15,18,23,24,25,8,7,12,16,20,21
I/O・ソフトウェアPWM・ソフトウェアTONE(下段):2,3,4,17,27,22,10,9,11,5,6,13,19,26
8ビットI/O(D0-D7順):17,18,27,22,23,24,25,4
PWM・TONE (同一の出力):18,12,13,19
CLOCK:4
I2C:SDA:2 SCL:3
SPI:MOSI:10, MISO:9, SCLK:11, CE:8
◇モード値
0:無効
1:プルダウン
2:プルアップ
◎例
GPIOPUD 18,1
■変数=GPIOREAD( ピン番号 )
◇指定したピン番号のデジタル入力の状態(0/1)を取得
◎引数
◇ピン番号
I/O・ソフトウェアPWM・ソフトウェアTONE(上段):14,15,18,23,24,25,8,7,12,16,20,21
I/O・ソフトウェアPWM・ソフトウェアTONE(下段):2,3,4,17,27,22,10,9,11,5,6,13,19,26
8ビットI/O(D0-D7順):17,18,27,22,23,24,25,4
PWM・TONE (同一の出力):18,12,13,19
CLOCK:4
I2C:SDA:2 SCL:3
SPI:MOSI:10, MISO:9, SCLK:11, CE:8
◎戻り
指定したピン番号の入力状態
・指定したピンのIOモードがデジタル入力に設定されていない場合は無効値(-1)を返す
◎例
V=GPIOREAD( 18 )
■変数=GPIOREAD()
◇8ビットI/O入力の状態(0~255)を取得
・8ビットI/Oの8つ全てのピンのIOモードをデジタル入力に設定しておくこと
◎引数
◇ピン番号
I/O・ソフトウェアPWM・ソフトウェアTONE(上段):14,15,18,23,24,25,8,7,12,16,20,21
I/O・ソフトウェアPWM・ソフトウェアTONE(下段):2,3,4,17,27,22,10,9,11,5,6,13,19,26
8ビットI/O(D0-D7順):17,18,27,22,23,24,25,4
PWM・TONE (同一の出力):18,12,13,19
CLOCK:4
I2C:SDA:2 SCL:3
SPI:MOSI:10, MISO:9, SCLK:11, CE:8
◎戻り
指定したピン番号の入力状態
・8ビットI/Oに用いられるピンの8つのうち、どれもIOモードがデジタル入力に設定されていない場合は無効値(-1)を返す
◎例
V=GPIOREAD( 18 )
■GPIOWRITE ピン番号,出力値
◇指定したピン番号へデジタル値出力
◎引数
◇ピン番号
・指定したピン番号のピンに設定したIOモードによって機能が異なる
デジタル出力モード:指定したピン番号のデジタル出力の状態(0/1)を設定
PWM出力モード:PWMの出力値(0~GPIOHWPWMで設定した分解能)を設定
ソフトウェアPWM出力モード:PWMの出力値(0~100)を設定
TONE出力・ソフトウェアTONE出力モード:出力する音程(Hz)を設定
CLOCK出力モード:クロック出力の周波数(Hz)を設定
◇出力値
0または1
◎例
GPIOWRITE 18,1
■GPIOWRITE 出力値
◇8ビットI/Oへの出力
・8ビットI/Oの8つ全てのピンのIOモードをデジタル入力に設定しておくこと
◎引数
◇出力値
0~255
◎例
GPIOWRITE &HC3
■GPIOHWPWM [出力モード値],[クロック分周値],[分解能]
◇PWM出力に関連するパラメータを設定
・ソフトウェアPWM出力には影響しません
・パラメータを省略した場合は、現在の設定のまま変更されません
◎引数
◇出力モード値
0:mark:space(サーボモータの制御に向く)
1:balanced(LEDの明度制御に向く)
◇クロック分周値
2:9.6MHz
4:4.8MHz
8:2.4MHz
16:1.2MHz
32:600kHz
64:300kHz
128:150kHz
256:75kHz
512:37.5kHz
1024:18.75kHz
2048:9.375kHz
1(4096):4.6875kHz
◇分解能
0~
◎例
GPIOHWPWM 1,16
■I2COPEN
◇I2Cを有効化(使用するPINのGPIOMODEを切り替え)
・I2Cを有効にできない場合、Internal Errorとなる
◎例
I2COPEN
■I2CCLOSE
◇I2Cを無効化(使用したPINのGPIOMODEをデジタル入力へ切り替え)
・I2Cを無効にできない場合、Internal Errorとなる
◎例
I2CCLOSE
■変数=I2CRESULT()
◇I2CでREAD又はWRITE命令を使用した際の処理結果
・I2Cを有効にできない場合、Internal Errorとなる
◎戻り
TRUE:成功
◎例
R=I2CRESULT()
■変数=I2CREAD( デバイスアドレス )
◇指定したデバイスから8ビットのデータを読み出す
・I2Cを有効にできない場合、Internal Errorとなる
◎引数
◇デバイスアドレス
0~127
◎戻り
デバイスからの8ビット値
◎例
V=I2CREAD(&H32)
■変数=I2CREAD8( デバイスアドレス,レジスタ番号 )
◇指定したデバイスの指定したレジスタから8ビットのデータを読み出す
・I2Cを有効にできない場合、Internal Errorとなる
◎引数
◇デバイスアドレス
0~127
◇レジスタ番号
0~255
◎戻り
デバイスからの8ビット値
◎例
V=I2CREAD8(&H32,0)
■変数=I2CREAD16( デバイスアドレス,レジスタ番号 )
◇指定したデバイスの指定したレジスタから16ビットのデータを読み出す
・I2Cを有効にできない場合、Internal Errorとなる
◎引数
◇デバイスアドレス
0~127
◇レジスタ番号
0~255
◎戻り
デバイスからの16ビット値
◎例
V=I2CREAD16(&H32,0)
■I2CWRITE デバイスアドレス, データ
◇指定したデバイスへ8ビットのデータを書き込む
・I2Cを有効にできない場合、Internal Errorとなる
◎引数
◇デバイスアドレス
0~127
◇データ
0~255
◎例
I2CWRITE &H32,0
■I2CWRITE8 デバイスアドレス, レジスタ番号, データ
◇指定したデバイスの指定したレジスタへ8ビットのデータを書き込む
・I2Cを有効にできない場合、Internal Errorとなる
◎引数
◇デバイスアドレス
0~127
◇レジスタ番号
0~255
◇データ
0~255
◎例
I2CWRITE8 &H32,0,25
■I2CWRITE16 デバイスアドレス, レジスタ番号, データ
◇指定したデバイスの指定したレジスタへ16ビットのデータを書き込む
・I2Cを有効にできない場合、Internal Errorとなる
◎引数
◇デバイスアドレス
0~127
◇レジスタ番号
0~255
◇データ
0~65535
◎例
I2CWRITE8 &H32,0,&H2525
■SPIOPEN クロック周波数,タイミング方式
◇指定されたクロック周波数とタイミング方式でSPIを有効化(使用するPINのGPIOMODEを切り替え)
・SPIを有効にできない場合、Internal Errorとなる
◎引数
◇クロック周波数(Hz)
0~
◇タイミング方式
0:CPOL=0、CPHA=0
1:CPOL=0、CPHA=1
2:CPOL=1、CPHA=0
3:CPOL=1、CPHA=1
◎例
SPIOPEN 400000,3
■SPICLOSE
◇SPIを無効にする(使用したPINのGPIOMODEをデジタル入力へ切り替え)
・SPIを無効にできない場合、Internal Errorとなる
◎例
SPICLOSE
■SPIREAD 配列変数 [,サイズ]
◇SPIから8ビットの配列データを読み出す
・SPIを有効にできない場合、Internal Errorとなる
・負数や配列定義要素数を超えたサイズを指定すると Out of range エラー
◎引数
◇配列変数
SPIからの値を取り込む配列変数(1つの要素には8ビット分の値が格納される)
◇サイズ
配列の要素数
◎例
DIM WORK%[256]
SPIREAD WORK%,256
■SPIWRITE 配列変数 [,サイズ]
◇SPIへ8ビットの配列データを書き込む
・SPIを有効にできない場合、Internal Errorとなる
・負数や配列定義要素数を超えたサイズを指定すると Out of range エラー
◎引数
◇配列変数
SPIへ値を書き込むデータが格納された配列変数(1つの要素は8ビット分の値)
◇サイズ
配列の要素数
◎例
DIM WORK%[256]
FOR I=0 TO 255:WORK%[I]=RND(256):NEXT
SPIWRITE WORK%,256
■SPIRDWR 配列変数 [,サイズ]
◇SPIへ8ビットの配列データを書き込み、SPIから読み込む
・SPIを有効にできない場合、Internal Errorとなる
・負数や配列定義要素数を超えたサイズを指定すると Out of range エラー
◎引数
◇配列変数
SPIからの値を取り込む配列変数
◇サイズ
配列の要素数
◎例
DIM WORK%[256]
FOR I=0 TO 255:WORK%[I]=RND(256):NEXT
SPIRDWR WORK%,256
(C)2017 SmileBoom Co.Ltd.