XVY 開発講座


目次

・はじめに
・SFXVIのステージデータをXVYで使う
・Zmusic→MCDRV
・キャラ制作の前に確認 その1

はじめに

 開発講座と銘打ってはいますが、データ開発のノウハウは私もまだほとんど持っていません。 ですから、このページでは私がこれからキャラクター等の開発をしていく中で得たノウハウを 逐次書き綴っていこうと思います。

 XVY自体が、まだ仕様がフィックスしていない部分がありますし、 常に最適解に私が辿り着けるとも限りません。ご容赦ください。
 また、皆さんのフォローもお待ちしてます。

(2001/06/14)

SFXVIのステージデータをXVYで使う

 XVYにおいて何が問題かといえば、データがほとんど出まわっていないということでしょう。 仕方がないことですが。SFXVIとの互換性もないですからね。
 しかし、ステージデータについては比較的簡単に流用することが出来ます。 今回はその方法について書いていきます。

★必要なものを集める
XVYシステムキット
GRPデータ表示プログラム(GRPprint.x)
ZMUSIC用小物ツール(DtoS.x dis_zpd.x)
ZMS→MDCコンバータ(ZMS2MDC.x)
PDX 作成ツール(PDMK.x PDXM.x)

 XVYシステムキットは ここから ダウンロードしてください。現時点での最新は01/06/10版です。 ダウンロードしたファイルを展開したら XVY/DEVELOP/BIN にパスを通してしまいましょう。

 続いて、GRPデータ表示プログラムですが、 ぴくせるさんが作られた GRPprint.x くらいしかありません。 現在手に入れられるかどうかは不明です。入手方法および代替プログラムをご存知の方は一報を。

 以下はBGMのコンバートに必要なツールについてなので、その必要のない場合は読み飛ばしても結構です。

 まず、DtoS.x、dis_zpd.x はZMDをZMSに変換、ZPDをバラバラに分解するツールです。 両者ともmu-Z Studioより ダウンロードできます。
なお、dis_zpd.xはPDX_ZPD に含まれています。

 ZMS→MDC変換ツールはCUL.CANで ダウンロードできます。 ZMS2MDC.xだけでなくドライバなども一通りダウンロードしておいたほうがいいかもしれません。

 PDX 作成ツールはいくつか種類がありますが、Web上での入手は難しいようです。 PDMK.x、PDXM.x 等がそうです。これらはMXDRV のデータ作成ツールに含まれているはずです。


★コンバート
 まずはXVY/DEVELOP/STAGE/の下にディレクトリを作ります。ここでは仮にディレクトリ名を SAKURAとでもしておきましょう。 ここにXVY/DEVELOP/STAGE/Z2RYUディレクトリの中身をまるごとコピーします。
 次に、変換元となるSFXVIのステージデータの中身をSAKURA/OBJECTディレクトリにコピーします。 全部コピーしてもいいのですが最低限必要なファイルを以下に示します。
BACK1.GRP背景画像(手前)
BACK1A.PAL背景パレット(手前)
BACK2.GRP背景画像(奥)
BACK2A.PAL背景パレット(奥)
BGM1.ZMDBGMデータ
BGM.ZPDBGM用PCMデータ

 必要なファイルをコピーし終えたらまずは、グラフィックデータのコンバートです。 これはXVY/DEVELOP/STAGE/convert.batというバッチファイルを SAKURA/OBJECTディレクトリで実行するだけです。  C:\XVY\DEVELOP\STAGE\SAKURA\OBJECT>..\..\convert  これでBACK1.GFXBACK2.GFXが作成されたはずです。 ただし、このディレクトリにはXVY/DEVELOP/STAGE/Z2RYU/からコピーしてきたBACK?.GFX があるはずですからタイムスタンプを見て確認しましょう。


 次にCHAR.VSPの作成です。これはコマンドラインから
 C:\XVY\DEVELOP\STAGE\SAKURA\OBJECT>mkvsp .. とでもうってやればOKです。


 BGMのコンバートは、現在、有効な手法が確立されていません。 まあ、それでも出来るところまで説明します。 BGM1.ZMDファイルは以下の手順でBGM1.MDCに変換します。  C:\XVY\DEVELOP\STAGE\SAKURA\OBJECT>DtoS BGM1.ZMD
 C:\XVY\DEVELOP\STAGE\SAKURA\OBJECT>ZMS2MDC -o BGM1.ZMS
これでBGM1.MDCが出来ました。 ただし、ZMS2MDC.xは完全なコンバートが出来ません。 具体的にどこがどうダメなのかはよくわかっていませんが・・・。 傾向と対策をご存知の方は情報提供をお願いします。

 最後にBGM.ZPDのコンバートです。これはコンバータが存在しないらしく 手作業でPDXファイルにコンバートしなければなりません。 NEYさんからその方法を教えていただきましたので転記します。
1.dis_zpd.xでBGM.ZPDを分解。BGM0**.PCMが作られる。
2.テキストエディタでPDLファイルを作る。表記は
X = bgmY.pcm (X=Y-15)
    ・
    ・
3.PDMKなどでPDLファイルからPDXファイルを生成。

★resource.xarの作成
 以上で必要なリソースファイルは全てそろいました。 これらをまとめてひとつのファイルとするXARというツールがXVYには用意されています。 こうすることで、読みこみ時間の短縮が計れ、 たくさんの小さなファイルが存在することから発生するクラスタギャップを抑えることも出来ます。

 XARを使ってresource.xarを作りましょう。 Makeが使える人はSAKURAディレクトリに存在するresmakeというファイルを 以下のように書き換えます。黄色の文字で書かれた部分が追加箇所です。
#マクロ定義
DIR = object
XAR = $(DIR)/resource.xar
OBJS = $(DIR)/back1.gfx \
       $(DIR)/back2.gfx \
       $(DIR)/bgm1.mdc \
       $(DIR)/bgm.pdx \
       $(DIR)/cell.vsp \
       $(DIR)/cell.pal

#依存物
$(XAR): $(OBJS)
	xar a $(XAR) $(OBJS)
 そしてMakeを実行します。  C:\XVY\DEVELOP\STAGE\SAKURA>make -f resmake これでresource.xarが作成されました。

 Makeを持っていないという場合はカレントをSAKURA/OBJECTディレクトリに移動して、 コマンドラインから以下のように打ちこんでください。  C:\XVY\DEVELOP\STAGE\SAKURA\OBJECT>xar a resource.xar back1.gfx back2.gfx bgm1.mdc bgm.pdx cell.vsp cell.pal
★action.cのコンパイル
 SAKURAディレクトリに存在するaction.cは基本的な機能は一通りそろっていますが BGMを演奏する機能が入っていません。そこでこれを書き換えてBGMを演奏できるようにしてしまいましょう。
 以下で指定している行に、それぞれの行を追加してください。 ただし、追加するときは下から追加しないと行番号がずれてしまいますから注意。
30行目
char *g_ptrMdc;
char *g_ptrPdx;

77行目
	g_ptrMdc   = res_getXarPointer(xar, "BGM1.MDC");
	g_ptrPdx   = res_getXarPointer(xar, "BGM.PDX");

102行目
	bgm_registMDC( g_ptrMdc );
	bgm_registPDX( g_ptrPdx );

113行目
	bgm_play();

 修正済みのaction.cをダウンロード出来るようにしておきました。

 あとはコンパイルです。makefileSAKURAディレクトリに存在してますから、 その場でMakeを実行してしまいましょう。

 これで必要なファイルが全てそろいました。

★最後の仕上げ
 XVY\DEVELOP\SAKURAディレクトリにファイルを置いたままではXVYで使うことは出来ませんから XVY/STAGE/SAKURAディレクトリに必要なファイルをコピーしましょう。 コピーするのは以下の二つのファイルです。
C:\XVY\DEVELOP\STAGE\SAKURA\action.x
C:\XVY\DEVELOP\STAGE\SAKURA\OBJECT\resource.xar

 xvy.lstに今作ったステージを登録し、きちんとコンバートされたか確認してみましょう。 うまく出来たでしょうか・・・?


 現時点ではSFXVIのステージデータを完全に再現することは出来ません。 例えば背景のラスタースクロールであるとか、MIDIと内蔵音源の切り替えだとか、 ピンチ時のBGM変化などがそうです。
 だからといって手をこまねいて待っているだけというのは寂しすぎます。 出来るところから少しずつ手をつけていってXVYの世界を少しでも広げるよう頑張りましょう。

(01/06/14)

Zmusic→MCDRV

 上でも説明していますが、XVYで使用しているサウンドドライバはMCDRVです。 開発環境が整っているわけでもなく、過去の資産があるわけでもないMCDRVが採用された経緯は いまいちよくわかってないんですが・・・。処理が軽く、テンポずれが起きにくいなどの利点はありますけどね。

 と、いうわけでXVY用のBGMデータ作成は他フォーマットのコンバートが主流になると思われます。 各種フォーマットからのコンバータは用意されてはいますが、もっとも使用頻度が高いと思われる Zmusic(ZMD)データからのコンバートがもっともハードルが高いようです。
 そこで傾向と対策を練ってみることにしましょう。

★コンバート手順
 ZMDデータからのコンバートは上でも書いていますが、もう一度まとめてみましょう。
1. DtoS.x で ZMD ファイルを ZMS ファイルに変換
2. ZMS2MDC.x で ZMS ファイルを MDC ファイルに変換
3. ZPD2PDX.x で ZPD ファイルを PDX ファイルに変換

 まず、1.から。ZMD ファイルは、テキスト形式の ZMS ファイルをコンパイルして作るものです。 ですから、すでにZMS ファイルが存在するのであればこのプロセスは省略できます。
 DtoS.x はmu-Z Studio で入手可能です。

 2.のコンバートですが、これが実は厄介。完全なコンバートが出来ないからです。やること自体は至極簡単で、 C:\XVY\STAGE\HOGE> zms2mdc -o bgm.zms としてやれば終わりです。この時、「MCDRVが常駐していません」というメッセージが表示される場合もありますが 無視して結構です。

 コンバート時に問題となるのは以下です。(他にもあれば情報提供をお願いします)
変換されないコマンド
 モジュレーション系:@M @H

PCM関連
 ノート指定範囲が違うため、範囲外のノートを指定しているとPCMが鳴らない
 (ZMUSIC:〜 MCDRV:〜)
 ADPCMトラックの音量指定が無視され V15 が適用される

 3.ZPDのコンバート。上に書いたように、割と致命的な仕様の違いがあります。 また、今のところWeb上でPDXの作成ツールを入手することは出来ません。さあ困った。

 というわけで簡単なコンバータを作ってみました。 これで普通のZPDファイルはPDXファイルにコンバートが出来ます。 しかし、単純なコンバートをするだけですから、ノートや音量の問題は解決できません。 またバンク切り替えをしていた場合にも未対応です。 ついでに64KBを越えるサイズのPCMを使っていた場合は64KBに切り詰められます。 何分、古いPDXフォーマットの資料しか見つからなかったものですから・・・。


★まとめ
 これで、ようやく ZMUSIC の資産を XVY で使うことが出来るようになったわけですが、 原曲をそのまま再現するのはほとんどの場合で不可能です。ないよりまし、といったレベルでしょうか。

 現状では MCDRV 用に MML を書き直すのが最良の方法と言えます。

(2001/09/18)

キャラ制作の前に確認 その1

 SFXVIではキャラを制作するのに必要な開発ツールはCB.x(キャラクタビルダ)だけでした。 これさえあれば、ドットを打つこともキャラのあたり判定をつけることも、 プログラムのスケルトンを作成することも出来ました。必要な機能は一通り揃っていたわけです。
 しかし、誰もが気になったと思われるのが起動にかかる時間と必要なメモリです。

 CB.xはその機能として「DSPの作成」を含有していたために、「事前にCHAR.ASPを作成しておく」 という手段がとれず、起動時に全DSPファイルを読み込む必要がありました。 大きいファイルをひとつだけ読み込むのと小さいファイルをたくさん読み込むのとでは 後者が圧倒的に遅くなります。これが起動が遅い要因でした。
 また、DSPファイルひとつにつきメモリを32KB消費していました。 CB.xで作成できるDSPの最大サイズが256*256ドットで、これが32KBに相当するからです。 つまりDSPが100枚あったとすると32*100=3200KB=3.2MBものメモリが必要だったのです。
 メモリ4MBではまともなキャラ制作は無理だったといえるでしょう。

 さて、XVYではCB.xのような統合開発ツールは存在せず、 各機能ごとに細分化された開発ツール群を使うことになります。 どんなツールが存在するのかを見ていくことにしましょう。

 XVY/DEVELOP/BINの下を見てみましょう。 この中でキャラ開発に必要なものを抜き出すと以下のようになります。
aced.xACT関数の作成と属性の編集
gfx.xGFXファイルの作成
hited.xヒット情報の作成と編集
mkhit.xヒット情報ファイルの作成
mkvoice.xボイスデータファイルの作成
mkvsp.xVSPファイルの作成
reed.xセルおよび矩形データの作成と編集
xar.xXVY用ファイルアーカイバ

 これらを使って作業を行うとどのような手順になるか、その一例を示します。
SM.x や EEL.x で SP ファイルを作成

ETC/DSP.LST をテキストエディタで編集し、VSPを追加

mkvsp.x で CHAR.VSP を作成

ETC/CELL.LST をテキストエディタで編集し、セルを追加

reed.x で矩形データの作成および編集

aced.x でACT関数の作成と属性の編集

ETC/VOICE.LST をテキストエディタで編集し、PCMを追加

mkvoice.x で VOICE.XPD を作成

hited.x でヒット情報を作成

mkhit.x で HIT.INF を作成

プログラムを作成

プログラムのコンパイル

(゚д゚)ウマー

 次回以降で、個々の作業について詳しく説明していこうと思います。

(2001/09/20)


トップページに戻る