Details and the schedule are as follows:
詳細と、設置住所に対する予定表は、以下の通りです :
#RANDOM
じゃなくて #IF
が構文ブロックを作るのが、たぶん BMS の本来の仕様#RANK
について 以前ご指摘いただいたけど、なんかそれもちょっと違うっぽい? #RANK -2
が無視されて #RANK-2
が通ったりするので、よくわかりません状態のまま#RANK
を反映してるのか無視してるのか、ちょっとよくわからず「分岐ビューワ に オートメーション工場 をつっこむと 4 分以上固まる問題」 をたぶん修正
Element.dataset.fooBarBaz = 'abcdef';
は Element.setAttribute('data-foo-bar-baz', 'abcdef');
と書くより 約 4 倍遅いdataset.xxx
という書き方に対応してくれないっぽい(has|set|get)Attribute()
を使うほうがよく、Chrome では dataset.xxx
を使うしかなく、IE では (has|set|get)Attribute()
を使うしかない#WAVCMD
がパスするのは、#WAVzz
の #WAVcm
と誤爆してるのかしらBPM 変更に負数の値を使ってる譜面は、HDX で選曲できない仕様っぽい (項目がグレーアウトする)
#BPMzz %f
にしても、IIDXv の内部処理レベルで負数 BPM が弾かれる#BMPzz xxx.bmp
が存在しなくても、同名の xxx.png
等があれば代わりに読み込む定番機能!「拡張子が無い画像ファイル」 で思い出したけど、TETRINET を再生すると部分的に変かも
構文検証ルールをカスタマイズ可能になりました! 嬉しい! ユーザ側で多少変更するのがおすすめです
#BPMEXzz %0.001~f
は #EXBPMzz %0.001~f
に変更しましょう〜#PLAYER %1~d
は #PLAYER %1~4d
(BM98 独自値を無視するなら #PLAYER %1~3d
)#RANK
の値は、VERY EASY を許すなら %0~4d
に、fgt 拡張判定を許すなら %d
に変更しましょう〜#TITLE
の値が省略可能かどうかはソフト次第なので、お好みで #TITLE %s
に変えても良さげ#TITLE
が未定義だったり空の譜面は、たとえば nanasi とかで強制終了します%s
を適当に %t
に変更しましょう〜#TOTAL %0~d
は、小数値を指定できるソフトが対象なら #TOTAL %0.001~f
に変更しましょう〜#VOLWAV %0~d
も同様だったはずなので、お好みで小数に変更しましょう〜#DEFEXRANK %1~100d
と #EXRANKzz %1~100d
は明らかに間違いで、nanasi 仕様で 「100 以上可、小数可」 と明記されてるし実際に有効なので、どちらも %0.001~f
に変更しましょう〜#SWBGAzz %s
は、予約チャンネル番号 20
も含まれちゃうけど、だいたいこんな感じ :
#SWBGAzz %1~d:%0~d:%11~29d:%0~1d:%0~255d,%0~255d,%0~255d,%0~255d %z
#OPTION %s
は、もうちょっと限定したい方は #OPTION %774d:%t
とかに変更しましょう〜#CHANGEOPTIONzz %s
も同様に、#CHANGEOPTIONzz %774d:%t
とかに変更できます〜#EXWAVzz
に関して、もうちょっと網羅したい方は以下のように変更しましょう〜
#EXWAVzz f %100~200000d %t
#EXWAVzz fp %100~200000d %-10000~10000d %t
#EXWAVzz fpv %100~200000d %-10000~10000d %-10000~0d %t
#EXWAVzz fv %100~200000d %-10000~0d %t
#EXWAVzz fvp %100~200000d %-10000~0d %-10000~10000d %t
#EXWAVzz p %-10000~10000d %t
#EXWAVzz pf %-10000~10000d %100~200000d %t
#EXWAVzz pfv %-10000~10000d %100~200000d %-10000~0d %t
#EXWAVzz pv %-10000~10000d %-10000~0d %t
#EXWAVzz pvf %-10000~10000d %-10000~0d %100~200000d %t
#EXWAVzz v %-10000~0d %t
#EXWAVzz vf %-10000~0d %100~200000d %t
#EXWAVzz vfp %-10000~0d %100~200000d %-10000~10000d %t
#EXWAVzz vp %-10000~0d %-10000~10000d %t
#EXWAVzz vpf %-10000~0d %-10000~10000d %100~200000d %t
ただ nanasi は値区切りが半角空白の連続でも大丈夫なので、#EXWAVzz %t
だけのほうがいいかも?
じつは #BGAzz
とかも同様なのでどうしようもありません、匙加減は各自お好みで設定しましょう〜
#OCT/FP
を追加しましょう〜必要な方は #EXTCHR %t
を追加しましょう〜、もうちょっと丁寧にやるなら :
#EXTCHR %d %d %d %d %d %d
#EXTCHR %d %d %d %d %d %d %d %d
#EXTCHR %d %d %d %d %d %d %d %d %d %d
仕様とは微妙に違う指定だけど、実質的にはこれでだいたいオッケーなはずです?
ただ BM98 は値区切りが半角空白の連続でも大丈夫なので、#EXTCHR %t
だけのほうがいいかも?
#DIVIDEPROP %1~d
を追加しましょう〜必要な方は #CHARSET %t
を追加しましょう〜 (値の詳細設定は諦めましょう〜)
値は正規表現でいう (EUC-KR|SHIFT-JIS|UTF-8)
ですが、表し方が分かりません
必要な方は #STP %t
を追加しましょう〜 (値の詳細設定は諦めましょう〜)
値は正規表現でいう [0-3]\d{2}\.\d{3} \d+
ですが、「3 桁整数」 の表し方が分からず、
あと bemaniaDX は値区切りとか省略とかの挙動がカオスなので、諦めたほうが無難だと思います
Not supported:
Not investigated:
Supported:
Apps | Tabulation (U+0009) | Space (U+0020) | Ideographic Space (U+3000) |
---|---|---|---|
fgt, fgt++, fgt# | Yes | Yes | Yes |
iBMSC | Yes | Yes | Yes |
PMSV v1.10.5~ | Yes | Yes | Yes |
uBMplay | No | Yes | Yes |
bemaniaDX | No | Yes | Yes |
IIDXv, HDX | Yes | Yes | No |
LR2 | Yes | Yes | No |
BMS List Sorter, BME2WAV, BMX2WAV | Yes | Yes | No |
インデントというのは、つまりこんな感じのなんかデコボコしてる書き方 :
#RANDOM 2
#IF 1
#00111:FOON
#ENDIF
#IF 2
#00112:ASSO
#ENDIF
#BPM n
(initial BPM) of a decimal fractionable | disable | doubtful |
---|---|---|
BM98k330r42, BM98de, bmDX, MW, MW2, DDR, RDM, nazo, BMEV, nBMplay, uBMplay, o2play, PMSV, in_BM (WAView), in_BM2, IIDXv, LR2, nanasi, ruvit, pomu2, fgt++, fgt#, HDX, BMSC, GDAC2, BMSE, iBMSC, BMS List Sorter, BMS Printer, BmsToAvi, BME2WAV (BETA 13), BMX2WAV | BMS Viewer, BMS2WAV, otama, Ninja Agent Galli, KbMediaPlayer (bmse.kpi 1.0r13), fgt | BGAEncoder 0.2a |
#BPM n
(開始時 BPM) に小数値を定義した場合、正確に反映されるかどうかを大雑把に調べたBPM が正確に表示されるかどうかは、また別の問題
#BPM 1000
が 000
になったり、#BPM -45
が 45
になったり、あるある#BPM 150.5
なら 151
と表示されたり)あと拡張 BPM 変更 #BPMxx n
も、また別の問題
#BPMxx n
自体に対応してないのは事実 (もう忘れていい頃ではあるけど)ぜったい忘れそうなのでついでにメモ、HDX では #BPM 150.5f
とか書ける
インデントもソフトによっては受け付けてくれるっぽい、うわー全然調べてなかった;
BMS command memo より、forgetalia は
#RANK+2
がデフォルトになっているそうですが、これってつまり 「正の数 二」 ってことを言いたいがためにこんな表記になっているのでは? と思ったのですが…だからそこから相対的に 「正の数 六」 や 「負の数 一」 も扱えるよ、と言いたいのでは…
実際に forgetalia 触ったことないんであれですが(
+2
は Positive integer 2 (as label: NORMAL)
って意味か!!#RANDOM
がさもブロックを作るかのような誤解を垂れ流してて死にたいので直しますBMS の現仕様と HDX のコメント構文は、相性がよろしくないので考え中
#TITLE (^^;)
や #ARTIST audio: foo // video: bar
みたいな例も多いわけで・・・#
以外の字を入れたり、複数行なら切り取って別名保存とか、一時退避はどうにでもなるけど方向性はいつもながら面白い、もし BMS がスクリプト的に進化するなら、コメント構文はきっと有用
#FOR
とか増えてそうな気配あるからなあ#016-032
の #xxx11
を 4 分打ちキックで簡潔に埋めたい → それ HDX でできるよ」 的な機種分岐に使えなくもないけど、こんなことするよりは専用差分つくったほうが確実に安全
#WAV01 for_IIDXv_and_HDX.wav
/*
#WAV01 for_other_bms_apps.wav
*/
#00101:01
コメント非対応ソフトでは、#WAV01
は後方の行の定義が使われる (ことが期待される)
#STAGEFILE
は 「640x480 にリサイズされる」 が正しかったです、誤報告すみません;