--- <配列が必要なときの代替手段> %数字、が数字変数を表すのはご存知でしょう。 %0が0個目の数字変数 %1が1個目の数字変数を表しています。 ここで、%数字の「数字」の部分にも数字変数を使うことが出来ます。すなわち、 %2が12のとき、%%2は、12番目の数字変数、すなわち「%12」で表される変数と同じ物を表しています。 サンプル: mov %3,4 mov %%3,12 変数4番は%4です。 実行結果: 変数4番は12です。 これを上手く使えば、SLGなどで必要なテーブル参照が出来ます。 --- 以下はNScrに、過去のさまざまな事情から追加されていた/今現在の事情から追加した隠し命令の一覧票です。 なぜマニュアルに発表しないかというと、やっつけ仕事的な仕様になっているとか、使い方が難しいとか、用途が特殊過ぎるとかいう理由です。 いずれ正式命令に格上げになる予定のものもあります。 代替命令ができる予定のものもあります。 どちらにしろ、命令から削除されることはありませんので使っても大丈夫ですが、あまり強くお勧めはしません。 "mov3" 書式:mov3 数字変数,数字,数字,数字 機能:最初に指定した数字変数から順に3つ、数字を代入する。 使用例: mov3 %3,2,4,6 これは、 mov %3,2 mov %4.4 mov %5,6 と等価です。 単純に、3つの値をテーブルに代入する作業が楽になる命令です。 同様の命令に、"mov4" "mov5" "mov6" "mov7" "mov8" "mov9" "mov10" があります。 それぞれ、4、5、6、7、8、9、10個の代入を楽にしてくれます。 "mode_ext" 商用ソフト「銀色」のために作った命令です。 この命令を実行すると、メニューに「オートモード」がつきます。 オートモードは「次の選択肢まで進む」に似ていますが、ウェーブが なりおわるまで先には進まず、ウェーブがないところでも、下のautomode_time命令で どのくらいクリックまでに待つか指定することが出来ます。 いわゆる読み上げモードですね。 "mode_saya" 同ソ「莢〜背徳の迷宮〜」のために作った命令です。 この命令を実行すると、動作が莢モードになります。 莢モードでは、 ・文字ウィンドウが消えているとき、表示状態に関わらず、  スプライト0〜9が非表示になります。 ・文字ウィンドウが消えているとき、以下で説明するバーや数字表示が非表示になります。 この二つは、例えば「パラメータウィンドウ」みたいのを、テキストウィンドウを 消すのと同時に消したいときに使えます。 "automode_time"  上のmode_extで増える「オートモード」のとき、ウェーブがなっていないときに  どのくらい待つのかをミリ秒単位で指定します。 "systemcall rmenu"  右クリックメニューと同じ効果です。  これは、例えばボタンモードで右クリックしたときに、右クリックメニューを  出したいな、というときに使えます。  右クリックメニューから出ると、動作はこの命令の次の文へうつります。 (画面状態をうまく把握していないと、おかしなことになります。  この命令の直後にテキストウィンドウの内容を消して書きなおすのが  ベストかと思われます。) "barclear"  バーの設定をクリアします。  バーとは、格闘ゲームの体力バーみたいなもののことです。 "prnumclear"  数値ラベル設定をクリアします。 "bar" 書式:bar バー番号,現在値,x,y,幅,高さ,バーの最大値,色 機能:  バー表示指定をします。幅と高さは、バーが最大値であったときの値です。  最大値に満たない場合は、割合に合わせてバーが短くなります。  バーは左詰表示です。単純に長さにあわせて指定した色で塗りつぶすだけなので、  値が足りないときの地の色は、元絵のほうで描いてしておいてください。  なお、指定した後でprint命令などの表示処理を実行しないと、画面に反映されません。 使用例:bar 1,23,5,5,200,8,100,#FF7777 "prnum" 書式:prnum 数値ラベル番号,現在値,x,y,文字幅,文字高さ,色  数値ラベル表示設定をします。指定した位置・表示設定でその数字が表示されます。  値は3ケタ、つまり0〜999を想定しています。  指定した後でprint命令などの表示処理を実行しないと、画面に反映されません。 barとprnumは「莢」のために追加された命令ですが、mode_sayaがなくても使えます。 今後、もうちょっと融通の利く命令が別に追加される可能性があります。 "amsp" 書式:amsp スプライト番号,x,y,透過度 機能:mspと似ているが、こちらは増分ではなく絶対指定。 使用例: amsp 2,5,2,100  これで、スプライト2番が、(5,2)に移動し、透過度は100になる。 "btndef clear" ボタン設定で、メモリ内のボタン画像ファイルはそのままだが、登録したボタン設定だけを消去する。 btndef ""はメモリ内のボタン画像ファイルを消去してしまうことに注意 ボタン画像をひとまとめにつくっておいて、あとで読みなおしたりしなくても いいようにする最適化のための命令です。 btnwait2とうまく組み合わせて使ってください。 なお、btnwait2とbtndef clearを使って処理している場合、自分でbtndef ""をやるか、 プログラム自体を終了するまでは、ずっとメモリ上にそのボタン画像があることになります。 ムダ遣いにならないようにうまく解放してください。 このへんは、プログラマ的な素養がちょっと必要かもしれません。 "blt" 書式:blt 画面上のx,画面上のy,画面上の幅,画面上の高さ,ボタン画像上のx,ボタン画像上のy,ボタン画像上の幅,ボタン画像上の高さ 機能:  高速に画面上で画像表示をしたいとき(AIRのオープニングのようなアニメーション処理)に使う命令です。  ボタン画像バッファを利用しますので、事前にbtndefで画像を読みこんでください。  ボタン画像から読んでくる元画像の幅が画面上の幅と違うときは、画面にあわせて画像が拡大縮小されます。 (例えば、全画面のXY半分のサイズの画像を4つ描いたものをロードしておいて、高速に拡大しながら画面全体に表示していくと、残像効果でドットの荒さは見えず高速なアニメに見える、というテクニックがAIRでは使われています。)  この命令はバッファを介さず直接スクリーンに画像を書きます。よって、終わった後は画面データが不定になるので、下のofscpy命令を使った後、必ず別の画像をふつうのbg命令などで呼び出して、画像を確定してください。  セーブによっても、この命令の結果としての画像がセーブされたりはしません。  よって、使われる部分は限られてきます。(デモとか、SLGでの小窓アニメなど、間にセーブやコマンド入力が挟まれないような処理) "ofscpy" 書式:ofscpy 機能:上のblt命令で描かれた画像をオフスクリーンバッファに転送する。 解説:  上の処理を終わってから何かエフェクトをかけたいとき、この命令でオフスクリーンバッファに  今の状態をコピーしてから行います。  この命令で作られたオフスクリーンバッファは、エフェクトのときには正しく動作しますが、  セーブ・ロードでは記憶されません。あくまでつなぎのための命令です。  blt命令にしろ、ofscpy命令にしろ、高速なデモ処理(AIRのような)をやるために 作られた特殊な命令なので、使い方が結構難しいですが、ご了承下さい。 使用例: btndef "〜" ;アニメ用の画像を読んでおく。 bg 〜 ld c,〜 ;ここまでは普通の画面命令なので、普通に動く。 resettimer blt 〜 waittimer 100 blt 〜 waittimer 100 ;このへんで、高速な画像処理をしている。 ;blt処理をしてから普通の画像命令を使いたいときは、その前にofscpy命令を使うこと。 ofscpy bg 〜 ;あとは普通にやっていい。 bg 〜 ld c,〜