ミュージカル素材について
作成者：有泉　信彦
作成日：10/09/16

ミュージカルには多くの種類の素材、設定excelがあります。
この文章はその説明になります。

●ミュージカルポケモングラフィック
○概要
ミュージカルで使用しているポケモングラフィックはバトルなどで使っているボケモングラフィックとは別のファイルになります。
本家のポケモングラフィック(以下本家グラ)はpokemon_wb_doc\pokegraに保存されていますが、
ミュージカル用ポケモングラフィック(以下musグラ)はpokemon_wb_doc\pokegra_musに保存されています。
別々に保存してある理由としては以下の通りです。
・ミュージカル以外では使用しないデータが含まれている(グッズ座標データ)
・部分共有(ncl・ncgのみ共有)にした場合、元絵に変更があった場合グッズの位置が大幅にずれると言った事を回避する。

○データ作成
詳しいデータの作成についてはプランナー側(岩尾君)の作成したドキュメントを参照してください。
ここではデータの簡単な説明のみ行います。
musグラではポケモンにグッズを付ける座標を設定する必要があります。
座標の設定はNITRO-CHARACTERを使ってダミーのセルを置くことで行います。
グッズ座標はそれぞれのグラフィックのあるセルの上にダミーのセルを置きます。
回転・影座標はダミーのセル単体でセルを作成し、マルチセル上で位置を調整します。
ダミーセルはパレット番号で種類を設定します。
具体的には４・影、５・回転中心、７〜Ｆ・各グッズ座標となります。
各グッズ座標はグループ番号で角度を指定することができます。
グループ0〜グループ1Fで一周する(1つ辺り1.125度)設定になります。

○データコンバート
データのコンバート環境はpokemon_wb\resource\musical\pokegra_musにあります。
makeを行うとpokegra_conv.rb各種コンバーターを実行し変換処理を行います。
細かい処理についてはpokegra_conv.rbの中を参照してください。
NITRO形式のファイルをバイナリに変換するコンバータはNintendo純正のものではなく、
本家グラの使っているコンバータを共通で使っています。
このコンバータはpokemon_wb\tools\pokegraにあります。
nce.plのみ、ミュージカル専用の情報(グッズ座標)が入るためnce_mus.plを使用しています。
最終的に作成されるnaixファイルは本家グラと同じ順番で出力されています。
これはmcssの処理を共通化するために行っています。

○その他
pokegra_conv.rbにはMCSデバッグ用のファイルパスの出力と、デバッグ用単発コンパイルがあります。
それぞれmusグラのビュワーをMCSで使用する際の補助的な機能になります。
単発コンパイルは-sオプションの後にポケモン番号を入力するとそのポケモンのグラフィックのみをコンバートします。
narcにパックされないのでMCSで読み込む時のみ有効です。
例：ruby pokegra_conv.rb -s 1
MCSデバッグ用のファイルパスの出力はMCSでバイナリデータを直に参照するためのテーブルを作成します。
具体的にはpokegura_mus_path.cdatになります。
文字列を配列で持っていて領域を非常に取るため、デバッグのみのオーバーレイに配置してください。
-dオプションで実行すると作成されます。
例：ruby pokegra_conv.rb -d


●グッズ
○概要
グッズデータはミュージカルでポケモンが身につける小物のデータです。
グラフィックと設定データが存在します。

○データ作成
データはpokemon_wb\resource\musical\itemに存在します。
nitro_dataフォルダの中に画像データが存在します。
item_data.xlsが座標などの設定Excelになります。
画像データはNITRO-CHARACTER形式の画像をimdに変換し、nsbtx(テクスチャ)にして出力します。
パレットは16色1本でサイズが32x32、32x64、64x32の3種類になります(拡張可)
設定データには以下のデータが設定されています。
・グラフィックサイズ
　グラフィックのサイズです。32x32、32x64、64x32の3種類で、表示の際必要です。
・装備時のオフセット
　ポケモンに付けた時中心からどれくらいずらすかの座標になります
・装備可能箇所
　グッズを装備できる場所です。
　１が普通に装備可能な場所
　２がソート時に考慮される場所です。一箇所だけ設定してください。
　耳、頭が１で胴が２の場合耳と頭と胴に付ける事ができるが、胴でソートしたときだけ前に並ぶようになります。
　また、ドレスアップの上画面で「○○に合うグッズです」の分岐にも使用します。
・背面・前面フラグ
　強制的に背面や前面に設定するフラグです。
　基本的に手に持つ物は前面、マントや羽が背面になります。
・タイプ
　キュート・クール・エレガント・ユニークの4種類があります。
　得点計算時に影響します。
・使用時効果
　手に持つグッズで、使ったときの効果を設定します。
　手に持てないグッズは無効な値です。
・反転設定
　ポケモンの向きが変わった時に絵を反転させるかどうかの設定です。
　ワンポイントの飾りがあったり文字が入るものが無効設定になっています。

●演目データ
○概要
演目データはミュージカルの演目に必要なデータがまとめられたものです。
中には、制御スクリプト(esf)・メッセージ(gmm)・BGMデータ(sbnk・sseq・swav)の3種類が入っています。
また、演目設定データがコンバート時に作成されます。
データはデフォルトで入っている演目はpokemon_wb\resource\musical\programにあります。
配信用のデータはpokemon_pgl\musical\programに追加されていきます。
説明はデフォルトの演目のフォルダで行います。
フォルダに入っているnarcが演目一つ一つのデータです。
pXXが演目のデータが入っているフォルダになります。
１〜４がデフォルトの演目で５はテスト配信データになります。

○データ作成(制御スクリプト)
制御スクリプトはミュージカルの進行を管理するスクリプトです。
幕の制御、ポケモンの制御、ライトの制御等を行います。
スクリプトの作成には曽我部さんが作成したEffectEditorを使用します。
詳しい使い方はEffectEditorのドキュメントを参照して下さい。
EffectEditorの初回起動時に指定するヘッダファイルで
pokemon_wb\prog\src\musical\stage\script\musical_script_command.hを
指定するとミュージカル用のコマンドが読み込まれます。
スクリプトは上から順にコマンドを実行していきます。
スクリプトは5本が並列して動き、それぞれAAtoBB・AtoB・AtoC・AtoD・BtoAの5つのページを使います。
スクリプトの作成の詳細はプランナー側(岩尾君)の作成したドキュメントを参照してください。

○データ作成(メッセージ)
メッセージは通常のgmmファイルです。
上演中の表示は制御スクリプトで行います。
gmmの一番最初は演目のタイトルを設定してください。
配信データの場合タイトルはダウンロード後にセーブ領域に確保されます。
漢字平仮名の表示分けができないので、演目名は漢字も平仮名も同じ分を入れてください。
最初以降は演目中に表示するメッセージを設定してください。

○データ作成(BGMデータ)
演目中に配信BGMを再生する場合に使用するデータです。
使用しなくても必ずダミーで入れておいてください。
sbnk・sseq・swavはすでにNNSのサウンドのコンバータでコンバートされたものになります。
swavは最大4つまで指定することができ、既存のバンクに音色を足す場合に必要になります。
ミュージカル配信用のバンクは4つ有り、再生前にスクリプトで読み込みの処理が必要になります。
ROM内にあるBGMを使う場合は[SEQ_BGM：再生]のコマンドを使用しますが、配信BGMの場合は特殊な処理が必要です。
具体的には以下のような手順を踏みます
----------------------------------
BGM：準備	1174
BGM：データ関連付け	1174	39	0
BGM：データ関連付け	1174	40	1
BGM：データ関連付け	1174	41	2
BGM：データ関連付け	1174	42	3
BGM：再生	1174
----------------------------------
まず[BGM：準備]で配信用のバンクが関連付けされているBGMをまず読む必要があります。
1174〜1177までが配信用のBGM番号です。
次にswavを関連付けます。この作業はswavを使用するときだけ必要です。
[BGM：データ関連付け]のコマンドで上のBGM番号と関連付け先の番号と配信データ内の順番を指定します。
関連付け先の番号はそれぞれのBGMに固定で存在しており、以下の通りになっています。
1174 39〜42
1175 11〜14
1176 12〜15
1177 21〜24
そして最後に[BGM：再生]で再生ができます。

○データ作成(演目設定データ)
演目の設定データは各フォルダではなく、programの直下にあるprogram_data.xlsで管理されています。
設定をするシートは[参加者データ]と[main]のシートだけです。残りのシートは出力用とデータになります。
[参加者データ]にはミュージカルに参加するNPCのデータを設定します。
装備するグッズのデータはミュージカルビュワーからデバッグ出力で貼り付けることが可能です。
[main]シートには演目ごとのデータを設定します。p01が管理番号1に対応しています。
各演目には参加者のデータが6人まで設定でき、プレイヤーの合計得点で選択されるメンバーが増えます。

○データコンバート(デフォルト演目)
ミュージカル演目データはmakeをしただけでは作成されず、narcがコピーされるだけとなっています。
データをコンバートするにはまずmus_prog_conv.batを実行してください。
実行するとp01から順番にコンバートが行われます。
コンバートはprogram_make.rbで行われます。
目的の番号までコンバートができたら、mus_prog_copy_arc.batでprogram直下にコピーされます。
これはp01〜p05の中のnarcをリネームしてコピーしているだけです。
実験でp06などをデフォルトで入れたい場合は、ここを修正してください。

○データコンバート(配信演目)
基本的には変わりません。
pokemon_pgl\musicalのreadme.txtを参照してください。

●その他
○アピールスクリプト・サブスクリプト
pokemon_wb\resource\musical\stage\scriptの下にはアピールスクリプトとサブスクリプトが保存されています。
これは制御スクリプトから呼び出されるスクリプトでよく使う処理を呼びやすくまとめたものになります。
サブスクリプトは通常の処理ですが、アピールスクリプトは得点でアピールの挙動を変えるため3種類のスクリプトが設定してあります。
下位バージョンと互換を持たせる場合、ここを修正するのは危険ですので注意してください。

○アピールボタン
pokemon_wb\resource\musical\stage\button.nceは空のセルが置いてあるだけですが、
プログラムでグッズの画像を転送して使用します。
button.ncgで枠で囲っている中を転送先として隠しているので注意してください。

○観客
pokemon_wb\resource\musical\stage\sub_audi_neck.ncgとsub_audi_face.ncgが観客です。
演目の配点に応じて観客比率を変えているのでプログラムで配置しています。