この記事は、BMS制作についてAdvent Calendar 2日目の記事です。
BMSの定義について書いていきたいと思います。
TITLEの定義
#TITLE bmsTitle
string bmsTitle
曲のタイトルを定義します。bmsTitleがいくつかの半角スペースから始まるとき、これをインデントとみなして半角スペースを無視します。例えば、半角スペースを□で可視化した時に、定義が#TITLE□□□□example
であるとき、これは#TITLE□example
と全く同じであるということです。
規格に書かれてはいませんが、副題として以下のフォーマットが認められています。しかし、これらが複数用いられる場合や、#SUBTITLE
の定義がある場合は無視されます。 よって、この方法での副題の定義は推奨されません。
Expression | Remark |
---|---|
#TITLE main-sub- |
半角ハイフン |
#TITLE main~sub~ |
全角チルダ |
#TITLE main(sub) |
半角丸括弧 |
#TITLE main[sub] |
半角ブラケット/角括弧 |
#TITLE main<sub> |
半角不等号/山括弧 |
#TITLE main"sub" |
ダブルクォーテーション |
LR2における動作とバグ
bmsTitleにShiftJISの2Byte文字において、ASCII文字コード上で、-
,(
,)
,[
,]
,<
,>
,"
と同じコードが含まれる場合、パースエラーによって譜面が認識されなくなるバグが確認されています。
例えば、にゃ [あにゃざー]をbmsTitleとして指定した場合、ー
のShiftJISコードが0x815bであるために、これをLR2が[
を正しく解釈できずに譜面がLR2上に表示されないバグがあるようです。
ほかにも、ゾ
、ゼ
にも同じようにASCIIコードを含んでいるために、パースエラーとなります。
【参考】
ちなみにこれは別のバグなのですが、一度パースエラーを起こしたファイルは、bmsTitleを正しく編集しても、ファイル名を変えないと認識されないようです。注意して下さい。