BRD解析ファイル

▼brdとは何?
いわゆるnazoBMplayでのスキン定義ファイルです。略称は多分ありません。
これはnazoBMplay0622版以降で適用され、スキンのほぼ全てがこのファイルを利用することにより自由にカスタマイズすることができます。

▼このファイルは何?
そんな自由にカスタマイズ可能なbrdの解析ファイルだったりします。
brd自体は分かり易くできていますので、理解できる人は簡単に作ることができますが、まぁとりあえず。
ちなみに、UnOfficialに入ってるbrdの説明文章は仕様が全然決まってなかった頃に書いたのでデタラメだったりします。
それぞれ一項目ずつ説明するにあたって、特定のコマンドのみ色分けされています。
その色分けと意味は以下の通り。

青:今後仕様が変更される可能性あり
赤:今のところ未実装。今後実装される予定
緑:未実装。今後削除される可能性あり
基本的に全てにおいて仕様が変更される可能性がありますが、これらの色は最も変更される可能性がある項目です。

▼基本事項
基本的には
#command param [,param2,param3...]
というルールで指定します。
スペースもしくはtabがcommandとparamの区切りです。param同士は","
必要に応じて桁揃えなどを行っても可です。

なお、commandの大文字小文字は区別されません。全角半角は区別されます。

"//"以降はコメントと見なされます。
尚、先頭が#でない行は読みこみ時に全て無視されます。
(特に先頭に"//"を付けなくてもコメント扱いです)

▼brd構成
brdの構成は以下の5つに分けられます。

▽システム・汎用オブジェクト定義
▽表示位置/オブジェ定義 (2002/12/31 更新)
▽スコア数字定義/スコア表示定義
▽ネットワーク部分定義
▽OPTIONランプ関係

の以上五項目です。(リンクの部分をクリックすると直接その項目へ飛ぶことができます)
この五項目にわけてbrdを解析していきます。

▼システム・汎用オブジェクト定義

▽#TITLE [titlename]
スキン定義ファイルのタイトルです。
起動メニューのスキンマッパーにタイトルとして使われています。
目印としてドウゾ。

定義例:タイトルを「nazobmplay [DEFAULT-skin for 1P/2P]」にする
#title nazobmplay [DEFAULT-skin for 1P/2P]

▽#skinstyle 1P,2P,DP
1P/2P/DP用にスキンを定義する項目です。
例えば「1P,2P」にすると、F9キーのスキン入れ替え時に1P及び2Pのみbrdを読み込みます。
「DP」にするとDPの時のみbrdを読み込みます。

▽#YPOSBASE height
譜面が流れてくる大きさを指定します。
heightに特定の数値をドット単位で入れてください。
(大体300〜400辺りが良いです)

定義例:譜面の流れてくる大きさを360ピクセルに設定
#YPOSBASE	360

▽#FILEch [filename]
スキンの元となる画像データを読み込みます。ファイル形式はbmpのみです。
chは個別の番号。00〜FFまで指定可能です。
(現バージョンでは09までしか読み込めません)
filenameは読み込むファイル名を指定します。

定義例:ファイルID01にskin_default_a.bmpを読み込みます。
#FILE01 skin_default_a.bmp

▽#SYSFONT left, top, width, height
システムフォントを読み込みます。
システムフォントの文字位置は下記のように固定されており、順番を間違えると正しく表示できません。

!"#$%&'()*+.-,/0123456789:;<=>?@
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
abcdefghijklmnopqrstuvwxyz{|}~
フォントを用意した後、一番左上にある「!」の部分の左上の座標と大きさ指定すれば、
そのままシステムフォントとして読み込みます。
定義例:X座標273px、Y座標455pxに縦横それぞれ8pxの大きさのシステムフォントを取り込みます。
#SYSFONT 	273,455,8,8

▽#SONGINFO x, y, width, height
▽#MSGPOS x, y, width, height

曲情報、及びシステム情報の表示位置を定義します。
大きさはシステムフォントの大きさに合わせてください。
x,yは座標、width,heightは行数、桁数ではなく行数(1行固定)と桁数をシステムフォントの大きさでかけた数値を指定して下さい

定義例:X座標252px、Y座標10pxに横203px、縦9pxの範囲に情報を表示します。
#SYSFONT 	252,10,203,9

▽#BGA_1P x, y, width, height
▽#BGA_2P x, y, width, height

BGAを表示する座標と大きさを定義します。
BGAの大きさは256x256が通常表示で、この数値以外を指定すると拡大表示(もしくは縮小表示)となります。
1Pは1P時、2P時は2P時もしくはDP時に表示されるBGA定義です。

定義例:1P時にX座標370px、Y座標98pxに横縦256pxの大きさでBGAを表示します。
#BGA_1P		370,98,256,256

▽#CLIPch bmpID, left, top, width, height[, dir, spacing, frames, interval], invisible
凡用オブジェクトID定義です。これを利用してスキン画像からそれぞれのデータを取っていきます
後にこのCLIPを利用していろいろなオブジェ定義をしていきます。
定義内容は以下の通り。

 ch	ID	個別の番号。00〜FFまで指定可能です。

 bmpID	ID	#FILEchのch部分です。このファイルから切り抜きます。
 left	数字	クリップ範囲の左辺 (ピクセル)
 top	数字	クリップ範囲の上辺 (ピクセル)
 width	数字	クリップ範囲の幅 (1コマの)
 height	数字	クリップ範囲の高さ (1コマの)
これは、#FILEで指定された画像内にあるx座標(left)とy座標(top)の位置からwidthとheightで指定された大きさで取っていきます。
以下、アニメーション定義です。アニメーションしない場合は不要です。
 dir	<1,2>	方向(1=右方向へ,2=下方向へ)
 spacing	<数字>	1コマ1コマの間の間隔を指定します(区切り線避け)
 frames	<数字>	総コマ数を指定します
 interval	<数字>	アニメーションする間隔を時間単位もしくはピクセル単位
		で指定します。(負の値を指定するとピクセル単位です)
dirは並べられたアニメーションデータの方向を指定します。
spacingはアニメーションパターンごとに間に区切りがある場合に指定します。
区切りが無い場合は0で構いません。
framesはアニメーションする数です。framesで指定されたアニメーションのスピードはintervalで決定されます。
時間単位はms単位となっています。ピクセル単位は曲プレイ中のBPMによって変動します。

ちなみにinvisibleは透過率の指定だったのですが、廃止するかもです。

定義例:CLIPID番号7番にFILEナンバー01の画像のX座標25、Y座標1、横の大きさ158、縦の大きさ360のパターンを格納します。
#CLIP07 01,25,1,158,360

低比例:CLIPID番号1番にFILEナンバー01の画像のX座標285、Y座標157、横の大きさ18、縦の大きさ8のパターンを指定した後
    そこから下方向に1ドット間隔で8パターンを格納。再生スピード48msに設定してアニメーションとして再生します。
#CLIP01 01,285,157,18,5,2,1,8,48

▼表示位置/オブジェ定義

▽#NOTEch clip, LASERclipID, AUTOclipID, LX, RX, REPLAYclipID
それぞれのキーとオブジェIDをを関連づけます。
これで指定した座標の縦0pxからYPOSBASEで指定されたpxまで譜面が落ちてきます。
定義内容は以下の通り

ch		ID	個別の番号。
			11〜19は1P(L)、21〜29は2P(L)
clip		ID	CLIPで指定された番号のオブジェを指定します
LASERclipID	ID	叩くと光るレーザーのClipID
AUTOclipID		ID	オートプレイパート時のclipID
LX		数字	左スクラッチでのX座標表示位置
RX		数字	右スクラッチでのX座標表示位置
REPLAYclipID	ID	リプレイオブジェクトのClipID

chはBMSのチャンネルフォーマットと一緒で、11〜15が1鍵盤目〜5鍵盤目、16がスクラッチ、18,19が6,7鍵盤目です。
2Pはそのまま十の位を2に変えて下さい。
リプレイオブジェクトのCLIPデータは必ずアニメーション指定でPRFECT、GREAT、GOOD、BAD、POORの5パターンの順に並べてください。

定義例:1鍵盤目(11ch)のレーザーの画像をオブジェID8番、オートプレイパート時の画像をオブジェID81番
    左スクラッチ時のX座標を49に、右スクラッチ時のX座標を16に、リプレイオブジェの画像をオブジェID0C番に設定します。
#NOTE11 01,09,81, 49, 16,0c

▽#LONGNOTEch ONup, ONmiddle, ONdown, OFFup, OFFmiddle, OFFdown

ch		ID	個別の番号。
			11〜19は1P(L)、21〜29は2P(L)
ONup		ID	ロングノートの最上部を指定します。
ONmiddle	ID	ロングノートの中間部を指定します。
ONdown		ID	ロングノートの最下部を指定します。
OFFup		ID	ロングノート(失敗)の最上部を指定します。
OFFmiddle	ID	ロングノート(失敗)の中間部を指定します。
OFFdown		ID	ロングノート(失敗)の最下部を指定します。

chはBMSのチャンネルフォーマットと一緒で、11〜15が1鍵盤目〜5鍵盤目、16がスクラッチ、18,19が6,7鍵盤目です。
2Pはそのまま十の位を2に変えて下さい。
なお、ロングノートの縦サイズは全て通常のオブジェと同じサイズの物を指定して下さい。
特に中間部分は数値が小さければ小さいほど処理が重くなります。

定義例:1鍵盤目(11ch)のそれぞれのロングノート画像に特定のCLIP番号を指定します。
#LONGNOTE11 01,09,81, 49, 16,0c

▽#LAYERch clip,X,Y,2P
それぞれの部分とオブジェIDをを関連づけます。
いわゆる「枠部分」や「ベースパネル」となる部分はこれで指定します。
定義内容は以下の通り

ch		ID	個別の番号。00〜FFまで指定可能です。
clip		ID	CLIPで指定された番号のオブジェを表示します
X		数値	横座標です。数値は0〜640まで指定可能です。-1で非表示です。
Y		数値	縦座標です。数値は0〜480まで指定可能です。-1で非表示です。
2P		数値	2P及びDP時のみで表示するオプションです。1で2P・DPのみ表示

これを利用すれば画面内に最大256個まで"飾り"を置くことができます。
また、アニメーション定義がされているオブジェIDはinterval間隔でアニメーションされます。

定義例:2P/DP時のみオブジェID30番をX座標0、Y座標0に表示する。
#LAYER01 30,  0,  0,1

▽表示位置/オブジェ定義(特殊)
ゲージ表示や判定文字等の特殊定義については特殊な命令の名前を使用します。
特に特殊な物が無い限り定義は全てCLIP,X,Yで固定されています。

☆#LINE_1P_Lch
☆#LINE_1P_Rch
☆#LINE_2P_Lch
☆#LINE_2P_Rch

縦線を表示します。
1P,2PそれぞれLは左スクラッチ用、Rは右スクラッチ用に分けられています。
chは00〜16まで指定可能です。

☆#LENBARch

曲の長さバーを表示します。
このバーは曲の時間が経っていくうちに、上から段々と消えていきます。
chは1〜4まで指定可能です。

☆#KEY1P_L
☆#KEY1P_R
☆#KEY2P_L
☆#KEY2P_R

キーパネルを表示します。
#LINE同様、1P,2PそれぞれLは左スクラッチ用、Rは右スクラッチ用に分けられています。

☆#JUDGEPOS_1P_L
☆#JUDGEPOS_1P_R
☆#JUDGEPOS_2P_L
☆#JUDGEPOS_2P_R

判定バーを表示します。
判定バーは必ずYPOSBASEから判定バーの縦の大きさを引いた分の所に置いて下さい。
#LINE同様、1P,2PそれぞれLは左スクラッチ用、Rは右スクラッチ用に分けられています。

☆#BLIGHT_ch ClipID,LX,LY,RX,RY

特殊設定の部類に入る、光るキーパネルです。
光る場所はchに応じて変わります。
ちなみにchはBMSのチャンネルフォーマットと一緒で、11〜15が1鍵盤目〜5鍵盤目、16がスクラッチ、18,19が6,7鍵盤目です。
LX,LYは左スクラッチの座標、RX,RYは右スクラッチの座標となります。

☆#GAUGEPOSBG_1P ClipID,X,Y,dir
☆#GAUGEPOS_1P ClipID,X,Y,dir
☆#GAUGEPOSBG_2P ClipID,X,Y,dir
☆#GAUGEPOS_2P ClipID,X,Y,dir

上から順に1Pグルーヴゲージ背景、1Pグルーヴゲージ、2Pグルーヴゲージ背景、2Pグルーヴゲージ。
こちらもちょっと特殊で、通常の設定にdir追加されています。
dirはグルーヴゲージの方向を設定します。1は左方向、2は右方向です。

☆#EXGAUGEPOSBG_1P ClipID,X,Y,dir
☆#EXGAUGEPOS_1P ClipID,X,Y,dir
☆#EXGAUGEPOSBG_2P ClipID,X,Y,dir
☆#EXGAUGEPOS_2P ClipID,X,Y,dir

#GAUGUPOS〜と一緒です。

☆#1PGAUGEHIDPOS 83, 16,456
☆#2PGAUGEHIDPOS FF,424,456

ゲージHiddenで使うバーです。使う予定無いというかベース側で対応させちゃったのでそのうち廃止予定。

☆#CLASS_1P c8,403,379
☆#CLASS_2p c8,403,379

判定クラスを表示します。この場合、CLIP側での設定が特殊です。
SS,S,A,B,C,D,Eを順にIDを連続して割り当てさせた後、SSのclipIDを指定してください。

☆#JUDGE_PERFECT_1P
☆#JUDGE_GREAT_1P
☆#JUDGE_GOOD_1P
☆#JUDGE_BAD_1P
☆#JUDGE_POOR_1P
☆#JUDGE_PERFECT_2P
☆#JUDGE_GREAT_2P
☆#JUDGE_GOOD_2P
☆#JUDGE_BAD_2P
☆#JUDGE_POOR_2P

判定の表示位置を定義します。
判定文字の隣にコンボ数が表示されます。
ちなみにDPは1Pしか表示されません(そのうち変更予定)

☆#FAN00_1P
☆#FAN20_1P
☆#FAN80_1P
☆#FAN99_1P
☆#FAN00_2P
☆#FAN20_2P
☆#FAN80_2P
☆#FAN99_2P

グルーヴゲージによって変化するアニメーション(通称:ファン)の表示位置を定義します。
グルーヴゲージが0%、20%、80%、99%によってファンも変わります。
ちなみに数値は固定です。

☆#BOMB_PERFECT
☆#BOMB_GREAT
☆#BOMB_GOOD
☆#BOMB_LONG

PERFECT、GREAT、GOOD判定時のボムを指定します。LONGはロングノート演奏中に表示されます。
アニメーションで1ループで消えます。ロングノートのみ演奏が終わるまで永久ループされます。
ちなみにclipIDのみで座標を指定する必要はありません。

☆#MODE_FREE
☆#MODE_RANKING
☆#MODE_PRACTICE
☆#MODE_ENDLESS
☆#MODE_EXPERT

現在プレイ中のモードを表示します。
まだ未実装です。

☆#NOMISS
☆#MAXCOMBO
☆#PRESSURE
☆#COMBOGRAPH
☆#COMBOGRAPHBG

上から順にNO!MISS、MAXCOMBO、PRESSURE、コンボグラフ、コンボグラフ背景となります。
座標を指定する必要はありません(そのうち指定できる様にする予定)

▽#GAUGESTEP spacing

ゲージの間隔を設定します。
spacingはxピクセルおきに描画します。

▼スコア数字定義/スコア表示定義

▽#NUMch bmpID, left, top, width, height, spacing, spacing2, invisible

スコア数字を指定します。
画像は左から順に[空][0][1][2][3][4][5][6][7][8][9][-][.][:]を用意して下さい。
詳しい定義は以下の通り

bmpID	ID	#FILEchのch部分です。このファイルから切り抜きます。
left	数字	クリップ範囲の左辺 (ピクセル)
top	数字	クリップ範囲の上辺 (ピクセル)
width	数字	クリップ範囲の幅 (1コマの)
height	数字	クリップ範囲の高さ (1コマの)
spacing	数字	1コマ1コマの間の間隔を指定します(区切り線避け)
spacing2	数字	スコア一桁一桁の間の間隔を指定します。

画像の[空]の部分のX座標,Y座標と大きさを指定すれば、左から順に数字を取り込みます。
ちなみに、invibisibleはCLIP同様搭載予定はありません。

▼表示位置/オブジェ定義(スコア)
スコア表示定義は全て#name clip, X, Y [, figure]で固定されます
詳しい定義は以下の通り

name	名前	特殊定義の名前です。
ch	ID	個別の番号。00〜FFまで指定可能です。
clip	ID	NUMで指定された番号のオブジェを表示します
X	数値	横座標です。数値は0〜640まで指定可能です。-1で非表示です。
Y	数値	縦座標です。数値は0〜480まで指定可能です。-1で非表示です。
figure	数値	桁数を設定します。
特殊設定の名前は以下の通り。
#COMBONUM コンボ数字(これに限り座標はいりません)
#SCORE_1P 1Pスコア
#J-PTS_1P 1PJ-PTS
#MAXCOMBO_1P 1PMAXCOMBO
#GAUGE_1P 1Pグルーヴゲージ
#SC_PERFECT_1P 1PPERFECT数
#SC_GREAT_1P 1PGREAT数
#SC_GOoD_1P 1PGOOD数
#SC_BAD_1P 1PBAD数
#SC_POOR_1P 1PPOOR数
#SC_PERFECT_2P 1PPERFECT数
#SC_GREAT_2P 1PGREAT数
#SC_GOoD_2P 1PGOOD数
#SC_BAD_2P 1PBAD数
#SC_POOR_2P 1PPOOR数
#MAXCOMBO_2P 2PMAXCOMBO
#SCORE_2P 2Pスコア
#J-PTS_2P 2PJ-PTS
#GAUGE_2P 2Pグルーヴゲージ
#FPSPOS FPS表示位置
#BPMPOS BPM
#PLAYPOS PLAYTIME
#PLAY_FULLPOS PLAYTIME(全)
#COUNTPOS COUNT数
#STAGEPOS STAGE数(FREEでは非表示)

▼ネットワーク部分定義

ネットワークプレイ時の設定を行います。
ネット機能自体仕様が纏められていないので仮の状態です。
仕様が変更されるかもしれませんがとりあえず書いておきます。
ネットワーク設定の定義は全て#name clip, X, Y [, figure]で固定されます
詳しい定義は以下の通り

name	名前	特殊定義の名前です。
clip	ID	CLIPで指定された番号のオブジェを表示します
X	数値	横座標です。左上からの位置を相対指定で指定します。
Y	数値	縦座標です。左上からの位置を相対指定で指定します。
特殊設定の名前は以下の通り。
#NETBASEPANEL ネットワーク情報ベースパネル
#NETEXGAUGEBGPOS ネットワークエキスパートゲージ(無)
#NETEXGAUGEPOS ネットワークエキスパートゲージ(有)
#NETGAUGEBGPOS ネットワークグルーヴゲージ(無)
#NETEXGAUGEPOS ネットワークグルーヴゲージ(有)
#NETPOWERBGPOS ネットワークパワーゲージ(無)
#NETPOWERPOS ネットワークパワーゲージ(有)
#NETPOWERHIDPOS ネットワークパワーゲージ(Hidden)
#NETEXGAUGEHIDPOS ネットワークグルーヴゲージ(Hidden)
#NETINFOPLAYPOS (P)lay プレイ中ランプ
#NETINFOLOADPOS (L)oad ロード中ランプ
#NETINFOFNISHPOS (F)inish プレイ完了ランプ
#NETINFOATKPOS (A)ttack 攻撃中
#NETPOWERLEVELPOS LEVEL(1〜4) 技レベル

▽表示・スコア

基本は上記と一緒で、IDはNUMからとります。
#NET_SCORE スコア
#NET_JPTS J-PTS
#NET_PERFECT PERFECT
#NET_GREAT GREAT
#NET_GOOD GOOD
#NET_BAD BAD
#NET_POOR POOR
#NET_MAXCOMBO MAXCOMBO
#NET_GAUGE グルーヴゲージ
自分用にPOWERゲージを設置(上固定)
※これは相対位置無効
#POWERPOS_1p POWERゲージ本体
#NETPOWERBGPOS_1p POWERゲージ背景
#NETPOWERPOS_1p POWERゲージ
※どうであれ、この部分はまだ完全に仕様が決まってなかったりします。

▼OPTIONランプ関係

このOPTIONランプは何かプレイオプション(Hidden、Random等)をかけた時に光るランプの事です。
この定義は全て#name clip,1PX,1PY,2PX,2PYで固定されます。
#OP_Hidden Hidden
#OP_Sudden Sudden
#OP_HidSud Hidden+Sudden
#OP_Stealth Stealth
#OP_Random Random
#OP_Shuffle Shuffle
#OP_ExRandom EX.Random
#OP_Mirror Mirror
#OP_Accel Accel
#OP_NAZO Deecl
#OP_AutoPlay DEMO
#OP_Replay Replay
#OP_PREESURE PREESURE
#OP_CROSS CROSS
#OP_Reverse Reverse

written by AOiRO_Manbow
Ver.20010812