SmileBASIC

更新データ:アーカイブ

Ver.3.6.2において修正 (2018.10.11)

BASICインタプリタの問題

重大度:高

文字列型システム変数に配列添え字形式で代入しようとするとハングする ※対象は DATE$, TIME$のみ

重大度:高

BGFUNC/SPFUNC命令を含むプログラムを実行後、BGFUNC/SPFUNC命令を含まないプログラムでCALL SPRITE/CALL BG命令を実行するとハングする

重大度:高

SELECT BUTTONでスクリーンショットを撮影中に、MPSTART命令が実行された場合にフリーズする

Ver.3.6.1において修正 (2018.7.18)

BASICインタプリタの問題

重大度:高

文字列型システム変数の配列添え字形式をSWAPやINPUT命令の引数に指定するとハングする
※対象は DATE$, TIME$のみ

重大度:中

CHKMML関数で、繰り返し記号が左右で数が合っていない場合でもエラーとならない事がある

Ver.3.6.0において修正 (2018.3.9)

Ver.3.6.0において追加・変更 (2018.3.14)

スクリーンキャプチャ機能の追加

  • BASIC画面で3DSのSELECTボタンを押すと、上下画面イメージをJPEG画像として保存します。保存した画像はニンテンドー3DSカメラアプリや、ニンテンドー3DS画像投稿ツールで使用可能です。

新規命令

  • CHKMML(MMLの文法チェック結果を返す関数)

STARTボタン

  • 誤動作防止の為、プログラム停止の操作をSTARTボタン長押しに変更致しました。

Ver.3.6.0において修正 (2017.3.14)

BASICインタプリタの問題

重大度:高

OPTION命令で引数を1個も指定しないとハングする
命令呼び出しや定義でOUT以下の引数が256個以上あるとハングする
GLINE命令で巨大な座標を指定するとハングする事がある
非常に複雑な式がプログラム中にある場合実行時にハングする事がある
※例えば A$[0][0][0]…(1700回繰り返す)[0] など。一般的に考えられる程度の複雑な式では発生しません。
配列を8次元以上の添え字で参照しようとするとハングする
プログラムを実行しようとしてSyntax Errorが発生した後で、そのプログラム内のラベルにGOTOやGOSUBしようとするとハングする事がある

重大度:中

EXEC命令でPRG以外のリソースタイプを指定してもエラーにならない
LIST命令でERR引数を小文字で指定するとtype mismatchエラーになる
BGM再生関連命令呼び出し直後にBGMCHK関数を使用しても正しい状態を取得できない
MIN,MAX関数で比較内容にINFやNANが含まれていると正しい値が返らない
DEFBGの画像データで、(0,16)-(511,47)に含まれている文字の縁の色が Ver.3.5.2 で変わっていた
DIALOG命令で円マーク(¥)とバックスラッシュ(\)が正常に表示できない
COLOR命令で2個の引数を指定し、2個めの引数がおかしな場合、エラーが発生するにも関わらず1個目の引数分の設定がされてしまう

メニュー画面の問題

重大度:中

オプション画面で色選択バーが一番下になっていると設定色がおかしくなる
LOAD命令でエラーが発生した場合、エラーダイアログのキャプションが正しく設定されていない事がある
名前が1文字のプロジェクトをアップロードしようとするとエラーが発生してアップロードできない

Ver.3.5.2において修正 (2017.2.23)

Ver.3.5.2において修正 (2017.3.1)

BASICインタプリタの問題

重大度:高

FORMAT命令で実数表示を1024桁以上表示するとハングアップする

重大度:中

整数値を表示させると小数部も表示される

Ver.3.5.2 までに確認されている互換性に関する留意点(2017.3.1 時点)

  • 新規追加命令をDEFしていた場合、Duplicate functionエラーが発生します。
  • (新規追加命令は BGMPAUSE, BGMCONT, SNDSTOP, CLIPBOARD, GOFS, BIN$, DLCOPEN, BIQUAD, BQPARAM, FFT, IFFT, FFTWFN, PCMSTREAM, PCMPOS, PCMVOL, PCMSTOP, PCMCONT, ARYOP。新規システム変数は MILLISEC, EXTFEATURE。)
  • これまでTXT:ファイルをロードする際に、&H0D を &H0A に変換していたのを、3.3.0 からは変換しなくなりました。
  • SPLINK設定時にZ座標も追従するように修正いたしました。この影響で、SPLINK使用時にリンク元(子)の表示優先度が変化します。
  • 3.1.0までSQR関数の別名としてSQRT関数が誤って登録されていましたが、3.2.0で削除されました。
  • 命令・関数のチェックがより厳密になり、正しくない引数を指定していた場合3.1.0までは引数を無視していましたが、3.2.0からはエラーとなる場合があります。
  • サンプルゲーム「GAME3JUMP」で、BGの優先度を 0<1<2<3 から 3>2>1>0 に修正しています。このため、GAME3JUMPのマップデータを流用してプログラムを作っている場合、異なる挙動を起こすことがあります。
  • SPSET命令に管理番号の空き番号の取得機能が追加されます。この影響で、SPSET命令を経由せずにSPRITEを扱う(例:SPOFSやSPHIDEを行っている)処理はエラーとなります。SPRITEを使う場合は必ず先にSPSETしてから使うよう必要があります。
  • これまではSPHIDE中にSPCHRを使うとSPSHOW状態になる不具合がありました。新しいバージョンではSPCHRを使ってもSPSHOW状態にしない(表示しない)ように修正しています。 このため、SPHIDEとSPCHRだけの組み合わせで表示を制御していたプログラムは、SPSHOW状態(表示)にならなくなります。 SPCHRの後にSPSHOWを追加して表示させるようにしてください。
  • 標準でインストールされているスプライトの定義番号2048番以降は、原点X,原点Y座標がより一般的な位置に調整されます。このため、定義番号2048番以降で主に〈真上から見ているタイプの画像〉はホーム座標が変化します。(底辺軸の〈足場〉に限定せず、上から見た図形等は中心が原点となります。) たとえば戦闘機などの画像は、足元が原点ではなく画像中央が原点となったため、回転を使ったプログラムの動作が旧バージョンとずれる可能性があります。
原点の位置が変更になるスプライト
1473 ブロック部品
2161-2163 ピッケル
2165-2167 スコップ
2169-2171 ピコピコハンマー
2177-2179 パチンコ
2181-2183 フック
2185-2187 小さな剣
2189-2191
2193-2195 すごい剣
2197-2199 木の杖
2201-2203 鉄の枝
2205-2207 すごい杖
2209-2211
2212-2215 装備盾
2218-2221 木の弓
2222-2225 鉄の弓
2227-2229
2230 手裏剣
2237-2239 フライパン
2241-2243 泡立て器
2245-2247 包丁
2249-2251 木製スプーン
2253-2255 木製フォーク
2286 風船ひも
2308-2309 大きいトゲ
2322-2323 足跡
2324-2328 リバーシコマ
2329-2334 サイコロ
2335-2337 じゃんけん
2338-2345 カーソル
2346-2347 照準
2348-2351 三角印
2352
2353 注意
2364-2366 バット
2367-2370 ゴルフクラブ
2372-2374 卓球ラケット
2376-2378 野球グローブ
2380-2382 ラケット
2383-2388 スポーツ用品
2389 ダーツ
2392-2393 ボウリング
2395-2410
2412 チェッカーフラグ
2421-2436 ボート
2437-2452 カエル
2453-2460 クラゲ
2461-2464
2465-2472 蜘蛛
2473-2480 ネズミ
2481-2484 ゴキブリ
2485-2488
2489-2492
2494-2499 音符
2500-2511 星座
3225-3228 審判旗
3229-3230 エフェクト
3233-3242 吹き出し
3243-3270 オプション、シューティング敵、トゲトゲ玉、ワーム
3271-3274 ボム
3275-3278 パワーアップ
3279-3282 破片
3299-3341 シューティング自機、敵ロボ
3341-3415 シールド、エフェクト、レーザー、弾、泡、水滴、氷柱
3424-3431 爆発エフェクト
3432-3434
3435-3436 G親分
3465-3470 大型の敵、潜水艦
3476-3479 ノビールハンド
3480-3494 ハカセ、ワンパク、神崎、インテリ、ダミー
3495-3500, 3504 エビ大将
3507-3511, 3513-3514 カニ将軍
3515-3520 ブロック

Ver.3.5.1において修正 (2017.2.1)

BASICインタプリタの問題

重大度:高

BIGで作成したTXT,DAT,GRPファイルに3号で上書きするとファイルが読み込みできなくなる
※一度DELETEしてからファイルをSAVEする事で回避可能です
上記バグが発生したDATファイルをLOADしようとするとハングアップする
DISPLAY 0側でスプライトの割当数をを512にした状態で、DISPLAY 1側でSPHITRCを使うとハングアップする
FFT/IFFT命令で空きメモリが少ないとハングアップすることがある

重大度:中

ダイレクトモードで、ヘルプを表示させた状態でPRINT命令を実行後エディタに移ると画面がおかしくなり編集ができなくなる
XON WIIUがIncompatible statementではなくSyntax Errorになる

Ver.3.5.0において修正 (2016.12.28)

BASICインタプリタの問題

重大度:高

空文字列に数値を乗算した文字列をSHIFTまたはPOPしようとするとハングアップする
READ命令で引数に配列要素を指定する時、変数名をVAR()で参照しようとするとハングアップする
DIALOG命令でファイル名入力ダイアログを表示させる場合、キャプション文字列に%を使用するとハングアップする事がある
DEF内でエラーが発生した際、GOTOやGOSUBでDEF内のラベルにジャンプした後RUNするとハングアップする
一度もRUNしていない時にダイレクトモードで実行しているプログラムを中断し、CONTを実行するとハングアップする
※一度でもRUNすると発生しません
BGMPLAY命令に極めて長い文字列を指定するとハングアップする
※ここでいう「極めて長い文字列」とは、例えば長さが100万文字などという長さを指します
PCMSTREAM命令に長さ0の配列を指定するとハングアップする
スロットが異なるCOMMON DEFを呼び出すプログラムを実行後ツールプログラムを起動し、ダイレクトモードでそのCOMMON DEFをコール後RUNするとハングアップする
グローバル配列を使用するユーザー定義命令を作成し、CLEAR後該当命令をダイレクトモードからコールするとハングアップする

重大度:中

GCIRCLE, GPIEに巨大な半径を指定した場合、命令の実行に長い時間(数秒から1~2分)かかり、その間プログラムを停止できない
※実行中にSTARTボタン等を押した場合、命令終了後にプログラムが停止します
PROJECT命令で、本来使用できない ‘.’ から始まるプロジェクト名が指定できる
作業用のプロジェクトがデフォルトだった場合、PROJECT()が ‘###’ という文字列を返す
巨大サイズの配列や文字列変数の作成や解放を繰り返すと、配列や文字列変数の中身が書き換わる事がある
※変数の解放は、DEF内のローカル変数がDEFから抜けた時、変数に他の変数を代入した時等に発生します
COPY命令で、要素数ゼロの配列をコピーしようとすると Subscript out of rangeエラーが発生する
DEF命令の構文が間違っている場合メモリリークが発生する
SPANIM で設定したフレーム間でスプライトの設定パラメータが全く変わらない場合、SPCHKで該当アニメーションの終了を検出できない
※SPANIM以外でも良いので、該当スプライトの何らかのパラメータが変更されれば検出可能です
PCMSTREAM命令で一定周期ごとにノイズが再生されることがある
SPCOLVECで当たり判定速度を設定していない場合、SPANIMで設定したXY座標アニメーションの終了後にアニメーション処理で自動設定した当たり判定速度がクリアされない

Ver.3.5.0において追加・変更 (2016.12.28)

新規命令

  • XON COMPAT(3DS/WiiU互換モードへの切り替え)
  • 3DS:XON 3DS(3DS専用モードへの切り替え)
  • Wii U:XON WIIU(WIIU専用モードへの切り替え)
  • CONTROLLER(コントローラー種別を取得する関数)
  • Wii U:VIBRATE(コントローラーを振動させる)
  • Wii U:GPUTCHR16(グラフィック画面に16ドットフォントを描画)

Ver.3.3.2において修正 (2016.7.27)

BASICインタプリタの問題

重大度:高

BGSCREEN命令でパラメータチェック不備に起因する脆弱性がある
LOADでGRPファイルを読み込む際に第2、第3引数で文字列や配列を使用すると画面が壊れ、そのまま操作を続行するとハングアップする
WHILEやGOTOを用いた無限ループ内でLOAD “存在しないファイル名”,FALSEと記述すると、エラーダイアログでSTOPボタンやSTARTボタンでプログラムを停止できなくなる
RINGCOPY命令でコピー先オフセットに負の値を渡すと強制終了する場合がある

重大度:中

プロジェクト名とファイル名が共に14文字のプログラムをロードすると、PRGNAMEで取得するファイル名が破壊される
MIN,MAX関数で要素数が0の配列を指定すると、意図しない値が返る
CHKFILE関数で、存在しない、もしくは未購入のDLCプロジェクト内のファイルを指定した時の返り値が正常に返ってこない
BACKTRACE命令がダイレクトモードで正しく動作しない
PROJECT命令でSYSを作業用プロジェクトに指定すると、FILESやLOAD命令がエラーとなる

メニュー画面等の問題

重大度:中

記号キーボード「á」の修正
標準スプライト定義「166」の修正

Ver.3.3.1において修正 (2016.5.25)

BASICインタプリタの問題

重大度:高

無限ループ内でタイムアウト1フレームのDIALOG命令を使用すると、STARTボタンでプログラムが停止できず、HOMEボタンで強制終了するしかなくなる

重大度:中

キーワード補完候補に、存在しないキーワード’CONVOL’が出現する
WAITやVSYNC命令で長時間処理を停止している間に3DSの蓋を閉開すると実行していたWAIT/VSYNC命令がキャンセルされる
GSAVEでグラフィックデータを保存した配列をDAT形式でSAVEし、LOADでGRP形式としてロードしようとすると正常にロードできない
DIALOGやACLS等の実行時に、上画面に一瞬カーソルが表示される事がある

メニュー画面等の問題

重大度:高

オプション画面の編集色設定が変更できない

重大度:中

「作品を見る」からプログラムを実行し、プログラムがエラーで停止した場合、3.2.1まではAボタンでもTOPMENUに戻れたが3.3では戻れなくなっている
ファイルコピーでコピー先選択時にソート順切り替え機能が使用できない

サンプルプログラム・スマイルツールの問題

スマイルツールについて

スマイルツールプログラムのバージョンが古い

Ver.3.3.0において修正 (2016.4.6)

BASICインタプリタの問題

重大度:高

INC,DEC命令でシステム変数を指定するとシステム変数が破壊され、次にそのシステム変数を使用した時にハングアップする
プログラムをRUNコマンド等で実行開始した直後にTOPMENUボタンを押すと、画面が壊れたりハングアップしたりする事がある
※プログラムが大きいほど発生確率が高くなります
文字列*数値の計算で、計算結果文字列の長さが巨大になる場合ハングアップする
※起動直後の状態で、結果文字列の長さが4000000文字以上になるとハングアップする危険性が高くなります

重大度:中

整数 DIV 実数 という式の結果が、整数 DIV INT(実数) ではなく、整数 / INT(実数)となる
未定義命令・関数の呼び出しをプログラム中に書き、該当行の前でその命令:関数を指定してCHKCALL関数を使用すると、命令・関数が未定義にも関わらずTRUEが返る
RSORTで開始位置を指定したソートが正しく動作しない
&H1F0,&H387,&H2014,&H2018の文字コードに相当するフォントが間違っている
編集画面でTO,STEP,負数のマイナス符号に色がつかない
BASICプログラムを実行したままHOMEボタンを押してプチコン自体を終了させようとすると、終了しない事がある
下画面でSPHITSP,SPHITRCを使用した場合、SPHITINFOの情報が正確に入らない事がある
※1対1の衝突判定では、SPHITINFOは正常な値を返します
ファイルをダウンロードする際にSDカードの空き容量が不足している場合、「ファイルエラーが発生しました。エラーコード: (3桁の数字)」というわかりにくいエラー画面が表示される
VAL関数で数値の後ろに非数値文字が続く文字列を与えた場合、文字列長が10文字以下の場合と11文字以上の場合で返り値が異なる
XSCREEN 4の状態でGCLIP,SPCLIP,BGCLIP命令を使いクリッピング領域をクリアした場合、クリッピング領域設定がおかしな状態になる
※画面全体がクリッピング領域になるよう手動で値を設定する事で回避可能です
GPUTCHRで描画領域から左右方向にはみでて文字を描画すると、文字の上下方向も削れて描画される
BGANIMで変数アニメーションを指定し、2セット以上のデータを指定すると、該当アニメーションが正常に動作しなくなる
SPLINK で、座標のZ値がリンク先のZ値と連動しない

メニュー画面等の問題

重大度:中

公開したプログラムが公開停止となった場合、NETWORK MENU中でのファイルリスト表示で公開キーの場所にゴミが表示される

Ver.3.3.0において追加・変更 (2016.4.6)

新規命令

  • BGMPAUSE(BGMの一時停止)
  • BGMCONT(一時停止したBGMの再開)
  • SNDSTOP(全音声の停止)
  • MILLISEC(MAINCNTのミリセカンド版)
  • CLIPBOARD(クリップボード設定・取得)
  • GOFS(グラフィック画面表示オフセットの設定・取得)
  • BIN$(数値の2進数文字列化)
  • DLCOPEN(カタログIPオープン化プロジェクト対応コンテンツの宣言)
  • EXTFEATURE(拡張命令のサポート状況を返すシステム変数)

有料追加命令(高度サウンドユニット)

  • BIQUAD(BiQuadフィルタ)
  • BQPARAM(BiQuadパラメータ生成)
  • FFT(フーリエ変換)
  • IFFT(フーリエ逆変換)
  • FFTWFN(FFT窓関数作成)
  • PCMSTREAM(PCMストリーム再生)
  • PCMPOS(PCMストリーム再生位置取得)
  • PCMVOL(PCMストリーム音量設定)
  • PCMSTOP(PCMストリーム再生の停止)
  • PCMCONT(停止したPCMストリーム再生の再開)
  • ARYOP(配列間の一括演算)
  • RINGCOPY(リングバッファコピー)

  • <ご注意>
    これらの命令は入力候補として表示されますが、追加機能を購入していない状態で実行した場合は DLC not found(命令名) というエラーが出ます。


既存命令・関数への機能追加

  • BGSCREEN(キャラクターサイズ指定の追加)
  • BGLOAD(ロードするスクリーンデータのキャラ番号をオフセット可能)
  • FORMAT$(%B(2進数)の追加)
  • SPDEF(ロードする定義データの定義番号、U,V座標をオフセット可能)
  • SPLINK(リンク先IDを取得する機能を追加)
  • MICSTART(第2引数で 2(8bit符号付き),3(16bit符号付き)を追加)
  • ACLS(GRP,SPDEF,フォントを保存するオプションを追加)
  • LOAD(GRPロード時に読み込み座標を指定するオプションを追加)

有料追加コンテンツ:「カタログIP」コラボ

  • TOP MENUの「追加機能の購入」に、「追加コンテンツの購入」ボタンを追加。
    ここからカタログIPのコンテンツを購入することにより、IPの世界観を合体させたゲームの開発も可能となる。
  • 初回2種類のカタログIPのコンテンツ提供から開始し、「カタログIPオープン化プロジェクト」として現在公開されている17種類の対象タイトルを順次配信予定。
  • 価格:100円〜(税込)

  • <ご注意>
    カタログIPコラボの追加コンテンツを購入しても対象となるゲームが遊べるものではありません。
    参考として画像とサウンドは含まれていますが、この作品を題材とした新しいゲームを生み出すための権利を手に入れるための仕組みです。

    カタログIPオープン化プロジェクト
    許諾番号:86679
    ©BANDAI NAMCO Entertainment Inc.
    カタログIPコラボについてはこちらのページもご覧ください。

有料追加コンテンツ:「高度サウンドユニット」

  • TOP MENUの「追加機能の購入」に、「追加コンテンツの購入」ボタンを追加。
    ここから高度サウンドユニット機能を購入することにより、BASIC上でソフトウェアシンセサイザーやエフェクターのような音に特化したプログラムを作成することが可能となる。
  • 価格:500円(税込)

  • 高度サウンドユニットについてはこちらのページもご覧ください。

Ver.3.2.1において修正 (2015.8.5)

BASICインタプリタの問題

重大度:高

EXEC命令で現在実行中のスロットに他のプログラムを読み込んで実行した時、プログラムをSTOPキー等で停止させた後BACKTRACE命令を使用すると、正常なトレース情報が出ず、最悪ハングアップする事がある
DEF定義内でエラーまたはSTOPで停止した時、ダイレクトモードでDEF命令・関数を呼び出した後にDEF内のローカル変数を参照・代入するとハングする
EXEC命令で複数スロット間をジャンプするようなプログラムで、2つ以上前のEXEC呼び出しスロットにEXEC命令でジャンプし、ジャンプ先でGOTO/GOSUB/DEF命令コールを使用するとハングする
※例えば、 EXEC “PRG1:FOO”→EXEC “PRG2:BAR”→EXEC “PRG1:FOO”→FOOの中でDEF命令を使用しているというような場合にハングします
New3DSでBEEP命令を頻繁に呼び出すとハングする事がある
※「頻繁に」とは、例えばWHILE 1:BEEP:WENDといった記述をした場合を指します

重大度:中

GCIRCLEで円弧を描画した場合、おかしな描画になる事がある
※全円の描画は問題ありません
ステートメントのOUTパラメータのうち一番最後を省略すると、プログラムが正常に動作しなくなる
回避方法:OUTパラメータの最終引数を省略しないようにする(OUTパラメータがカンマで終わらないようにする)
ユーザー定義命令・関数内で、変数名・ラベル名に32文字以上の名前を使用できない
定数リテラルのうち、#BGROT90,#BGROT180,#BGROT280の値が間違っている
加算合成属性がオンになっているスプライトにSPCHRを使用して加算合成をオフにしようとしても、オフにならない
※SPSETしなおすのは問題ありません
プログラムをSTOP命令もしくはSTOPキーで中断後、ダイレクトモードで何か命令を実行し、その後CONTすると、ダイレクトモードで実行できない命令でエラーが発生する

メニュー画面等の問題

重大度:高

Webプチコン入門でブラウザを起動した後HOMEボタンを押し、プチコンを再開せずにそのまま終了させるとプチコンが終了せず3DSを再起動するしかなくなる
※ブラウザから一旦プチコンに戻るのは問題ありません

重大度:中

エディタ画面で検索・置換を行っている時にL,Rボタンを押すと、検索・置換用ボタンがファンクションキー表示に置き換わってしまう
FILE MENUでコピーする際、既存ファイルがあった時の処理選択ダイアログで、パスボタンと変更ボタンが反応しない事がある

サンプルプログラム・スマイルツールの問題

スマイルツールについて

WIDTH 16時にスマイルツールが使用できない

Ver.3.2.0において修正 (2015.6.17)

BASICインタプリタの問題

重大度:高

※回避方法は暫定的なものです

MML内で内部変数への代入を行うとハングする
関数の引数に定数文字列を使用し、関数内のINC命令の第1引数としてその引数を直接使用するとハングする
回避方法:一旦別の変数に引数をコピー後、その変数をINCの第1引数に指定する
XSCREENの第3引数に0か4を指定し、BGが割当たっていない方のDISPLAYでBGPAGEを実行するとハングする
GLINEで 32768以上、もしくは-32768以下の座標値を使用すると正常な描画が行われず、さらにハングする事がある
ダイレクトモードからユーザー定義ステートメント・関数を呼び出し、そのステートメント・関数内でエラーが発生した場合、ダイレクトモードでもう一度同じユーザー定義ステートメント・関数を呼び出すとハングする
組み込み命令や関数と同じ名前を使ってDEF命令を実行するとハングする事がある
ユーザー定義ステートメント・関数内で文法エラーが発生した場合、エラーのあったユーザー定義ステートメント・関数をダイレクトモードで使おうとするとハングする
BGLOAD命令で、引数で幅を与えた時にその幅がBGスクリーン幅より大きい場合、ハングする
プログラム中でCOPY命令を引数なしで実行するとハングする
巨大なプログラムや、大量のDEF文、大量のDATA文が存在するプログラムを実行するとメモリ破壊が発生し、ハングする
※破壊の発生する目安は、1スロット当たりプログラムサイズが1メガバイト、DEFは900個、DATA文は実数20万個、整数34万個、文字列は100万文字です

重大度:中

※回避方法は暫定的なものです

DISPLAY 1時に関数型のSPSETが正しく動作しない
回避方法:関数型を使用する場合はDISPLAY 0側、あるいはXSCREEN 0,1,4で行なう
IF文の後ろにREMでコメントを付けると、次行をTHENの続きとして続けて解釈してしまう
回避方法:コメントを ‘ で付ける
XSCREEN命令で第2引数に0または512を指定すると、スプライトが割り当たっていない側のDISPLAYでBGPAGEの設定が無視される
回避方法:第2引数に0もしくは512を指定する事を避ける
ユーザー定義ステートメントや関数の引数・OUT変数が文字列型で、定数文字列を指定または代入後、直接 PUSH,POP,SHIFT,UNSHIFTの第1引数に指定すると、Type mismatchエラーが発生する
GPUTCHRで、拡大率が等倍(スケール値を省略しているか、1,1を指定している場合)で、描画範囲の右辺が描画クリッピング領域からはみ出ている場合、描画がおかしくなる
BGOFSでZ座標を取得すると、実際の値と符合が反転した値が返ってくる
SPOFSでZ座標を指定したスプライトをSPCLRし、再度SPSETすると、Z=0となっているにも関わらず表示上のZ座標は以前設定したZ座標になっている
回避方法:SPSET後、SPOFSでZ座標を再設定する
GCIRCLEで、描画範囲からはみ出るような円を描画しようとした時に、円の一部が欠けたり、異常な円弧が描画される事がある
文字列をパラメータとして指定したステートメントや関数内でエラー停止するとメモリリークが発生する
REPEAT命令とUNTIL命令の間でCONTINUE命令を使用すると、UNTIL命令の所ではなくREPEAT命令の所にジャンプする
FORMAT$(”%D”,&H80000000)とした場合、正しい結果が返ってこない
※&H80000000を%Dで表示する時のみ発生します
DEF内でグローバル変数と同名のローカル配列を定義できない
GTRIで3点のY座標が同じ値だった場合、おかしな色で描画される
リソースタイプを指定してFILESを使用すると、メモリリークが発生する
リソースタイプを省略し、プロジェクトを指定してFILESを使用すると、TXTタイプのファイルのみ取得される
BGMPLAYで、最大8トラック同時再生できるはずが、4トラックまでしか再生できない
DISPLAY 1時にSPHITSP,SPHITRCで判定範囲を指定した場合、当たり判定が正常に動作しない
ワイヤレス通信中、BUTTON関数でリピート機能付きの値が正常に取得できなくなる

メニュー画面等の問題

重大度:高

※回避方法は暫定的なものです

「作品を見る」のファイルを選択する画面で、下画面の「TXT」をタッチすると同時にYボタンを押すと強制終了する
FILE MENUの「名前変更」で何度もファイルの名前を変更すると、強制終了する
※20回以上ファイル名変更をすると強制終了する可能性が高いです
きわめて高速なループ内でダイアログ表示を繰り返すとプログラムの終了処理が行なえない

重大度:中

※回避方法は暫定的なものです

EDITモードで検索ボタンをタッチした後、キーボードをグラフィック文字モードに切り替えると、検索終了ボタンが検索ボタンに入れ替わる
ダイアログ中で長いファイル名を表示した場合、ファイル名が画面からはみ出る事がある
存在しているファイルと同名のファイルをサーバからダウンロードしようとした時に、ファイル名を変更するボタンが反応しない事がある
ファイル選択画面への切り替え直後にDATを押してYで画面が崩れる
MPSTARTで親機になった場合の子機接続待ちダイアログで、2回以上連続して親機になった場合、子機名がおかしくなる事がある

Ver.3.2.0において追加・変更 (2015.6.17)

定数リテラルの追加

  • #ではじまる英数字を定数リテラルとして取り扱う。
  • 定数リテラルは、コンパイル時にそれぞれ対応する定数値に解釈される。

数値定数式の取り扱い

  • 従来は、項がすべて定数の式も実行時に計算をしていたが、3.2では実行前に計算を済ませて実行時には1個の定数として扱うようになった。
    この変更により、定数値しか使用できない命令(=DATA文)でも、定数だけで構成されているならば式が使用可能となった。
    (ただしこの変更は数値定数のみの扱いで、文字列は従来通り演算子をまぜると式として扱うので注意)

スプライト・BGのコールバック一斉実行

  • SPFUNC,BGFUNC命令で、スプライトやBG一枚毎にコールバックルーチンを設定できる。
  • 設定したコールバックルーチンはCALL SPRITE、もしくはCALL BGで一斉に呼び出される。
  • コールバックから対応するスプライト管理番号やBGレイヤ番号はCALLIDXシステム変数で取得可能。
  • コールバックは、サブルーチン(ラベル)、もしくはユーザー定義ステートメントを設定できる。

スプライトの加算合成

  • アトリビュートでbit5をONにすると、加算で描画される。

コンソールキャラクタの追加

  • JIS第1水準相当の漢字をコンソールキャラクタとして追加した。(フォントは美咲フォントを使用)

新規命令

  • FADE(画面のフェード制御)
  • FADECHK(フェードアニメーション終了チェック)
  • SPUSED(スプライトが使用中かどうか返す関数)
  • SPFUNC(スプライトコールバックの設定)
  • BGFUNC(BGコールバック設定)
  • CALL SPRITE/CALL BG(スプライト・BGコールバックの実行)
  • FILL(配列要素の一括設定)

既存命令・関数への機能追加

  • SPCHR(U,V,W,H,ATTRが省略可能)
  • SPPAGE(設定値の取得が可能)
  • BGPAGE(設定値の取得が可能)
  • GPAGE(設定値の取得が可能)
  • DIALOG(特殊モード、ファイル名入力モードが追加)
  • TALK(ピッチ、音量変更)

ゴールド会員権

  • TOP MENUに「追加機能の購入」ボタンを追加。
    ここからゴールド会員権を購入する事で、アップロード可能なファイル数が100個に、1ファイル当たり最大サイズが20MBに拡張される。
    (ゴールド会員有効な間に11個以上のファイルをアップして、そのまま期限切れとなっても、アップしたファイルは全てダウンロード可能。ただしその時点で10個以上のファイルをアップ済みとなるので、新規ファイルはファイルを削除するか再度ゴールド会員とならない限りアップできない)
  • 価格:100円/30日間、500円/180日間

その他

  • DIRECTモードとEDITモードで簡易ファイルメニューが追加された。
    LまたはRボタンを押すと、下画面上部にSAVE/LOAD/ファイル名と表示され、SAVEまたはLOADをタッチすると、現在編集中のスロットの保存・読み込みができる。
  • EDITモードで、組み込み命令に色が付くようになった。
    また、オプション画面でEDITモードの背景色を設定出来るようになった。
  • ファイル選択メニューのソート順をアルファベット順に変更。

Ver.3.1.0において修正 (2015.3.4)

BASICインタプリタの問題

重大度:高

※回避方法は暫定的なものです

GCOPY命令で、始点・終点共にグラフィックページ領域外の座標を指定するとハングする事がある
文字列配列に対してUNSHIFT命令を使用するとメモリが破壊され、ハングする事がある
文字列*数値 の式で、結果の長さが 1073741824 以上になるとハングする
SPLINK命令で第1引数に指定したSPRITEにSPSET命令を使用し、再度SPLINK命令で第1引数に指定するとリンクが破壊され、その後のSPRITE操作でハングする
ラベル名定義とDATA文との間に変数定義やDEF〜ENDを記述した場合、そのラベルをRESTOREしてREADしようとするとInternal Errorが発生したり、ハングする事がある
回避方法:RESTORE用のラベルの直後にDATA文以外のコードを書かないようにする
MML内で内部変数への代入を行なうとハングする

重大度:中

MMLを使った演奏で、正しい文法にも関わらずIllegal MMLエラーが発生する場合がある
BGMPLAYで音量に0を指定すると、デフォルト音量で再生される
配列への代入で、変数名ではない式を変数名の個所に記述してもエラーにならない
※将来の更新版で修正後はエラーとなります
文字列配列に対してPOP命令, SHIFT命令を使用するとメモリリークが発生する
TOP MENUで3DS本体のSTARTボタンを押した後に「SmileBASICでプログラムを作る」を選択すると、SmileBASICに移行した直後にRUNコマンドが実行される
SMILEツールに割り当てたプログラムからCHKFILE命令を使用するとOut of rangeエラーが発生する
回避方法:ファイル名に”PRG0:”等のSLOT指定をつける
SPSETしていないSPRITEに対し各種操作を行ってもエラーとならない
SPANIM命令のアニメ対象に変数(SPRITE変数7)を指定した時、正常に動作しない
FOR〜NEXT等のループ構文内で文字列配列を宣言した場合メモリリークが発生する
回避方法:配列宣言をループ外に移動させる
GCLIP命令実行後、GPAGE命令を使用すると設定した描画クリッピング領域がリセットされる
GPAINT命令で境界色を指定した場合、複雑な形状の塗りつぶしに失敗することがある
ACLS命令で下画面の設定の一部(コンソール色、グラフィック各種設定)がリセットされない

メニュー画面等の問題

重大度:高

ファイル選択画面で、ファイルが選択されていない状態でも「決定」ボタンが有効になっている事があり、その場合に決定ボタンを押すとハングする事がある

重大度:中

※回避方法は暫定的なものです

サイズ0のファイルが含まれたプロジェクトをアップロードすると、ダウンロードに失敗する
回避方法:サイズ0のファイルをプロジェクトから削除して、アップロードし直す
ファイル名を入力する際、ピリオドを入力できない
プロジェクト/ファイルを選択するメニューで、十字ボタンで選択したファイルがダブルタッチで決定できない
プロジェクトを選択するメニューで「ファイルを選択」が押せない場合がある
ファイル名が14文字のファイルをスマイルブームサーバーにアップロードすると、ファイルの末尾文字が削れる
※プロジェクトのアップロードは問題ありません

Ver.3.1.0において追加・変更 (2015.3.4)

ラベルを式中で使用すると文字列として扱われる

  • @foo は "@foo" と等価に扱われる。
    従来は命令引数としてラベルを与えたい場合、文字列として与える必要があったが、ラベルを直接記述できるようになる。
    COPY A,"@FOO"
    COPY A,@FOO
    ※「一般的な式中のラベルリテラルは文字列定数として解釈するようになった」のであり、「ラベル型という値が増えた」のではない事に注意
  • 式中ではラベルは文字列として扱われる事になるので、このような記述も可能。

    A$=@FOO*3 '@FOO@FOO@FOO

ELSEIFの追加

  • IF文中でELSEIFキーワードが使用できるようになった。
    IF COND1 THEN
    ELSEIF COND2 THEN
    ELSEIF COND3 THEN
    ENDIF
    ELSE IFと違い、ENDIF は1個で良い

追加命令

  • CLASSIFY(通常数値、無限大、非数(NaN)のいずれになるかを返す)
  • GTRI(グラフィック画面に三角形を描いて塗りつぶす)
  • GPUTCHR(グラフィック画面に文字を描く)
  • BGCOLOR(BGの表示色を設定 / BGの表示色を得る)
  • HARDWARE(環境判定用システム変数)

既存命令・関数への機能追加

  • GCIRCLE(円弧を描く機能を追加)
  • SPHITSP(衝突を判定するSPRITEの範囲指定が可能に)
  • SPHITRC(衝突を判定するSPRITEの範囲指定が可能に)
  • SPCOL(OUT形式でパラメータを取得できる)
  • SPSET(SPRITE管理番号の空きを探して割り当てる機能追加)
  • SPDEF(SPRITEのキャラクタ定義用テンプレートをコピーしパラメータに修正を加える機能を追加)
  • BGANIM(アニメ対象に表示色を追加)
  • CHKLABEL(DEF内にラベルが無ければグローバルラベルを検索するオプションを追加)
  • PRGEDIT(行番号に-1を指定すると最終行を指定した事になる)
  • PRGINS(第2引数に1を指定するとカレント行の後方に挿入する)
  • BGMSTOP(通常では停止しない特殊な音も止める機能の追加)

その他 BASIC関連の変更点

  • フォント修正(かな及びいくつかの文字が読みやすくなった)
  • SPSETしていないSPRITEへの操作がエラーになるようになった
  • SPRITEの衝突判定で、マスク値0の意味を 必ず衝突する→衝突判定無視 に変更
  • ACLS命令の結果に、フォントのリセットが追加された
  • MML関連のエラーが詳しく出るようになった
  • LOCATE命令のX座標を画面右端+1まで受け付けるようになった
  • ダイレクトモードのコマンド履歴で、現在入力中の行まで戻れるようになった

TOP MENUへの機能追加

  • Webブラウザを起動して見る「Webプチコン入門」ボタンを追加
  • 内蔵サンプルの起動に特化した「サンプルを見る」ボタンを追加
  • 「オプション」に「設定を初期化」ボタンを追加

Ver.3.0.2において修正 (2015.1.7)

BASICインタプリタの問題

重大度:高

DATA文で-32768以下、もしくは65536以上の整数を使用していて、実数変数にREADしようとするとハングアップする事がある
DIMやVARで配列を定義する際、要素数に文字列を指定するとハングアップ
POPまたはSHIFTを使用するとハングアップする場合がある
RSORTを使用するとメモリリークが発生し、繰り返し使用すると最終的にハングアップ
DEF〜END内でSTOPし、DIRECTモードで未定義変数を使用するとハングアップ
ファイル命令(SAVE,LOAD,RENAME,DELETE,CHKFILE)で、本来ファイル名として使用できない文字が使用出来る
READ命令のパラメータにラベルを指定したり、パラメータを省略するとハングアップ
未初期化の文字列型ローカル変数をユーザー定義関数の返値として返すと、値が破壊される。
(数値型ローカル変数では問題は発生しない)
RUN,NEWの後ろにスペースを空けずに解釈不能文字(カナ等)が入っているとハングアップ
ダイレクトモードでDEFを使って定義した命令を使用するとハングする
RENAME命令で、ファイルを元と同じ名前に変更すると、ファイルが消滅する
BEEP命令を高い頻度で使用するとフリーズする
ダイレクトモードで変数定義から続けてマルチステートメント実行中に構文エラーが発生した場合、次にその変数を使用した所でハングする事がある
読み込めないフォーマットのデータを読み込もうとするとハングアップする
(例:配列としてSAVEしたファイルをGRPとしてLOADする 等)

重大度:中

配列への代入で、変数名ではない式を変数名の個所に記述してもエラーにならない
(代入式全体が無視される)
WAVSETAのデフォルト基準音程がWAVSETの基準音程と異なる(66、正しくは69)
RNDの引数に0を渡す( RND(0) )と異常な値が返る
GLOADでビットマップデータやパレットデータに実数配列を指定すると、正常に描画されない
ユーザー定義関数内でSTOP命令やエラーで停止すると、ローカル変数が解放されずメモリリークが発生する
SPANIMによるキャラアニメーションによって、SPHIDEの効果が無効となる
SPCHR OUTでスプライト定義番号を取得できない
ACLSでページ0,4,5以外のグラフィックページが初期化されない
SPHIDEを使ったスプライトがSPHITSPやSPHITRCの当たり判定対象になってしまう場合がある
GCIRCLEで半径が0の円を描くとOut of rangeエラーになる
境界色の指定がないGPAINTで、塗り残しが発生する場合がある
VSYNC・WAIT命令による同期と、システムの描画同期がずれる事がある
(がたつき、ちらつきといった状態で確認されやすい)
ユーザー定義ステートメント内から、外部のラベルをRESTOREで指定する事ができない
命令入力支援機能に誤り(並び順、キーワード末尾のスペースの有無)
コンソール画面のスクロール時に、Z(奥行き)情報だけスクロールしない
ACLS命令実行後、スプライトとBGの使用可能数が最大使用可能数の半分となる。
ユーザー定義ステートメント中で、定義済みのグローバル変数と同名のローカル変数を定義できない
BGMPLAYのNコマンドに内部変数を使用した場合、指定した音より低くなる
BGOFS, BGHOME, BGSCALE で戻り値の格納順が逆転している
PRINTセミコロンの後にELSEを続ける(PRINT; ELSE)とType mismatchエラーとなる
DATE$, TIME$を式の途中で使用するとメモリリークが発生する
(命令や関数のパラメータとして直接TIME$やDATE$を使用する事に問題はない)
スマイルツールを起動後、ツールで使用したメモリを解放する手段がなく、結果としてメモリリークとなる

メニュー画面等の問題

重大度:高

「プロジェクトとファイルの管理」のコピー機能で既存ファイルに上書きコピーしようとすると、ファイルが破壊される場合がある
BASICプログラム実行中にHOMEボタンを押下しMiiverseを起動すると、BASICプログラムが終了するまでMiiverseがログイン画面より先に進まない
サーバー上のファイルを選択するダイアログでYボタンを押すとハングアップ
Lボタン+Rボタンを押したまま起動すると画面が遷移しない事がある
「プロジェクトとファイルの管理」→「削除」→任意のフォルダをタブルクリック→「決定」で停止する
作品リストアイテムが無い時に方向ボタン/アナログスティックを押すとハングアップする
XON EXPADをした状態のまま拡張スライドパッドのキャリブレーションを行うとフリーズする
FILEMENUの名前変更で「戻る」ボタンが押せなくなる場合がある

重大度:中

MPSTART実行後、子機となり親機選択画面上で無線スイッチをOFFにすると、表示が異常になる
XON EXPAD実行後TOPMENUに行き、3DSの蓋を閉めると、蓋を開けた時に希に「拡張スライドパッドが切断されました」というダイアログがTOPMENUに重なって表示される

サンプル・スマイルツールの問題

サンプルプログラム

サンプルプログラム「GAME3JUMP」で、BGの優先度上(前面のBGに隠れて)表示されないBG面がある

スマイルツール

スマイルツールのMAPエディタで回転すると異なる画像が表示される
最新の更新内容
ページトップへ