nsa回り

http://www.eiji8pou.net/download/launcher.htmの要らないオリスクを夢想する。

 *define
nsa
transmode alpha
game
 *start
; 解の入っているディレクトリを取得
getreg $0,"Software\07th_Expansion\higurasi5","gamedir"
; 末尾の邪魔な"\"を削除する。
len %0,$0
dec %0
mid $0,$0,0,%0
; 十夜の入っているディレクトリを取得
getreg $1,"Software\TYPE-MOON\歌月十夜","directory"
; 末尾に邪魔な"\"はない

addnsadir $0
ld l,"bmp\tati\sonota\tie1.bmp",0 ; 知恵先生
addnsadir $1
ld r,"image\tachi\tiel_t04.jpg",0 ; 知恵留先生
print 1
\
end

このスクリプトを適当なフォルダに置き、「ひぐらしのなく頃に解」と「歌月十夜」が入っているマシンで、最新版(現在2.49)のNScripterを使って動かすと、勝手に解と十夜の入っているディレクトリを調べてそこから画像を引っ張ってきて表示する。
ポイントになるのは、addnsadir命令。マニュアルに載ってない命令だが、名前からして、nsadirの拡張だと思われた。
試行錯誤した後に恐らくは、一時的にnsaファイルを検索する対象のディレクトリを追加する命令だと結論する。
addnsadir命令の記憶領域は一つしかなく、何度も記述すると上書きされて最後のaddnsadirだけが有効になる。
従って、arc.nsaの移動を伴わないオリスクを作ろうとするならば、addnsadirの使用は検討を避けられない。問題は、addnsadir命令を実行することによる(CPU負荷やら実行時間やらの)コストだけである。
ソフト的な解決としては、専用のルーチンを組んで「切り替え」を最小限にすることが考えられる。
最も根源的なネックを言うならば、addnsadir自体がそもそも「命令表にない」非公式なコマンドだと言うことだ。これはリスクと言えばリスクだ。
なお、音楽については絶対パス指定すれば問題は解決だ。「解の画像に商業版の音楽」を実現するのに、スクリプトへの負担は増えるが、wavフォルダの移動などしなくていい。