2019年8月4日日曜日

DCの効果音っぽい音や音声を dtpkext.pyとdsfdtpk.pyで変換してみる

DCの中身を見る機会なんてあまりない。次の機会には、やり方を忘れていると思うので記しておく。

必要なもの(スクリプトはググって入手)

  • 変換したいサウンドデータ(バイナリエディタで見ると識別子がDTPKとなっているもの)とドライバ(AICADRV.BIN)
  • Python 2.7を導入しておく(3.Xだと実行時にエラーが出て、スクリプトを修正しなければならない)
  • dtpkext.py(dtpkext.zipの中にある)
  • dsfdtpk.py(dsfdtpk.zipの中にある)

手順

  1. 変換したいサウンドデータはyplpackというフォルダに、YPLPACK_??.binというかたちで32個入っているとする。
    dtpkext.pyとdsfdtpk.pyはAICADRV.BINと同じフォルダに入れておく。

  2. 声やSEなどのサウンドデータは、変換後に大量のファイルができると思うので、あらかじめフォルダを作っておいて、そこに変換後のファイルが入るようにするといい。例えば、\dsf。

  3. AICADRV.BINと同じフォルダにバッチファイルを作成する。例えば、moejus.bat。
    moejus.batの内容は―

    • dtpkext.py yplpack\*.bin dsf
      (これを実行すると、yplpackフォルダのYPLPACK_??.binを元にdsfフォルダにYPLPACK_??_???_??.DTPKというファイルが複数個作成される)
    • dsfdtpk.py AICADRV.BIN -a dsf\*.DTPK
      (これを実行すると、dsfフォルダの*.DTPKを元に*.dsflibと大量の*.minidsfが作成される
    • del dsf\*.DTPK
      (これを実行すると、dsfフォルダの*.DTPKを削除する。DTPKファイルは残しておかなくても問題ないから)
  4. 以上の3コマンドは、コマンドプロンプトから実行してもよい。他に変換したいサウンドデータがいくつかあったので敢えてバッチファイルにした。

  5. moejus.batを実行する。

    dsfフォルダに64個のdsflibファイルと5,312個のminidsfファイルができていた。
    これらが全てボイスかと思っていたらガッカリ。無音がとても多いのだ。

音楽プレイヤーで聴く

DSFプラグインの入った音楽プレイヤーに、*.minidsfをドロップする。

minidsfとdsflibは同じフォルダに入れておかなくてはならない。

midiっぽいdsfならfoobar2000で聴くのが一番良かったが、waveのようなdsfは聞くに堪えない雑音になってしまった。WinampかKb Mediaplayerで聴くしかない。

2019年8月2日金曜日

DCのmidiっぽい音楽をdsfmake.pyで変換してみる

聞き専wikiにMLT形式の変換方法が載っていたので、やってみたら上手くいった。やり方を忘れそうなので記しておく。

必要なもの(ツールとスクリプトはググって入手)

  • 変換したいサウンドデータ(*.MLT)とドライバ(MANATEE.DRV)
  • Python 2.7を導入しておく(3.Xだと実行時にエラーが出て、スクリプトを修正しなければならない)
  • dsfmake.py(dsfmake.zipの中にある)
  • bin2psf.exe(simple_psf_utils.zipの中にある)
  • psfpoint.exe(PSFPoint103.zipの中にある)

手順

  1. *.MLT、MANATEE.DRV、dsfmake.py、bin2psf.exe、psfpoint.exeは同じフォルダに入れておく。

  2. dsfmake.pyをテキストエディタで開いて、黄色いマーカーの箇所を修正する。
    これは修正したあとの状態。

    • nmlt = 変換したいサウンドデータ
    • bank = 初期値の0x00でスクリプトを実行してみて、何もできていなかった場合は0x01にする
  3. dsfmake.pyを実行する。

    変換が上手くいけば、サウンドデータと同じフォルダに拡張子がdsflibと大量のminidsfファイルが出来上がっている。
    minidsfファイルは1KBしかないので、ついゴミと勘違いしてしまう。うっかり削除しないように気をつけないと。
    そして、minidsfとdsflibは同じフォルダに入れておかなくてはならない。

音楽プレイヤーで聴く

DSFプラグインの入った音楽プレイヤーに、*.minidsfをドロップする。

私は普段Winamp5.7を愛用しているが、この時ばかりはfoobar2000で聴くのが良いと感じた。WinampやKbMedia Playerだと、BGMの集まりの中に短い効果音的なメロディが混じっていた場合、default play lengthの間、無駄にシーーンとなってしまうことがあるのだ。その点、foobar2000は短い曲が終わったと思ったら次の曲へ進んでくれる。wavやmp3への変換も容易だ。

2019年7月30日火曜日

DC版 燃えろ!ジャスティス学園の中身を見てみる

まずは、AFSファイルをAFSExplorerやADX Encode Helperなどで分割する。
次に、分割したファイルのうち、圧縮されているもの(主に画像関係)は展開する。方法はPS版私立ジャスティス学園と同じ。

音楽・声・SE

  • ZADX*.AFSはadxファイルの集まり。分割後、ADX Playerで聴ける。
    AFSExplorerなら、展開する前に試聴もできるからありがたい。

  • SND_CMN.BINは中身がDTPK。WISOUND.AFSとYPLPACK.AFSはDTPKファイルの集まり。
    これらを聴けるようにするにはPythonの環境と音楽プレイヤーのDSFプラグインが必要だ。

  • DPETCフォルダにあるDP3SOUND.MLTは燃えジャスと関係ないが、聴く場合にはPythonの環境が必要。スクリプトを少々弄らなければならない。

スプライト画像・テクスチャ

0GDTEX.PVRとDPTEXフォルダにある燃えジャスに関係ない*.PVRは、VIX、Susie等のビューアでも見られるが(PVRプラグインが必要)、PVR Viewerで見るのが一番良い。アルファチャンネルの操作ができるし、フォーマット情報も見られて便利。

他の画像は大抵、圧縮されている。展開しても、PVRヘッダがついていないので、自力で付加しないとビューアで見られない。(いくつかはヘッダ情報がベタデータから離れたところにあったり、別ファイルにあったりする)
ヘッダの構造はBMPやTIMに比べてすごく単純で、ベタデータのサイズからデータのタイプと幅高さを推測し、ピクセルタイプを適当に選んでベタデータの前に付けてやれば、一応見られるPVRになる。
どれもこれも上下が反転しているのが気になるが、ビューアの方で調整する。

台詞

  • 熱血青春日記に関する台詞は、 MGDATA.AFSの最後の方にある。
    圧縮されていないので、バイナリエディタなどで読める。

  • アーケード・シナリオモードの台詞は、SDEMO.AFSとUDCSDM.AFSの中に画像というかたちで入っている。
    日本語版と英語版がある。

3Dモデル

もう何年間も調査中。わかりそうでわからない…。

2019年7月24日水曜日

DC版 燃えろ!ジャスティス学園(2000)のdiscの内容

※このページはスマホで見ると崩れます。色分けにも意味があるので、PCかwebバージョンで見るのをお勧めします

*.PVR,*.AFS,*.GIF…スプライト画像・テクスチャ *.AFS,*.MLT…音楽・SE *.AFS,*.BIN…声・SE *.AFS…混合

track03.iso(をextract.exeで展開したら以下のファイル群になった)
│ 0GDTEX.PVR   171KB   ←ディスク盤イメージ
│ 1ST_READ.BIN   3,854KB
│ 2_DP.BIN   3,399KB
│ 3SYS.BIN   230,796KB
│ AICADRV.BIN   58KB   ←サウンドドライバ
│ ASKLIB.BIN   623KB
│ DP3.INI   6KB
│ IP.BIN   32KB
│ MAIGO.BIN   15KB
│ MGDATA.AFS   11,896KB   ←熱血青春日記関係
│ MGEDMDL.AFS   1,792KB   ←EDITちびキャラモデル・テクスチャ
│ ODEMO.AFS   6,422KB   ←オープニングデモ関係
│ SDEMO.AFS   9,736KB   ←アーケード・シナリオモード関係
│ SG_DPLDR.BIN   15KB
│ SND_CMN.BIN   631KB   ←SE
│ UDCSDM.AFS   460,800KB   ←シナリオモード・対話
│ UGMEDMDL.AFS   2,494KB   ←EDITキャラ頭モデル・テクスチャ
│ UPLMDL.AFS   3,662KB   ←キャラモデル
│ VSDEMO.AFS   2,312KB   ←VS選択関係
│ WGAME.AFS   11,782KB   ←アーケードメニュー・背景・エフェクトなど
│ WISOUND.AFS   11,868KB   ←SE・声(VS中)
│ WMENU.AFS   6,140KB   ←モードメニュー
│ WPLMOT.AFS   12,076KB   ←モーション
│ XPLTEX.AFS   26,616KB   ←キャラテクスチャ
│ YPLPACK.AFS   21,222KB   ←声・SE(VS中)
│ ZADX0.AFS   108,424KB   ←BGM・オープニングなど
│ ZADX1.AFS   7,544KB   ←声(VS前後、実況など)
│ ZADX2.AFS   8,698KB   ←〃(熱血青春日記・ネット接続など)
├ DPETC(ドリームパスポートに関する色々)
│ CHAT.DPS   22KB
│ DP3.DPS   136KB
│ DP3SOUND.MLT   1,681KB   ←BGM・SE
│ MANATEE.DRV   36KB   ←サウンドドライバ
│ MESSAGE.INI   70KB
│ NTP.DPS   4KB
│ PM.DPS   13KB
│ SOFTKEY.DPS   243KB
│ VMS.DPS   8KB
├ DPFONT(フォント関係)
│ S18RM04P.DAT   687KB
│ S20RM04P.DAT   763KB
│ S24RM04P.DAT   1,098KB
│ S26RM04P.DAT   1,388KB
├ DPSS(スクリーンセーバー関係)
│ 000.GIF   7KB   ←燃えジャスロゴ
│ 001.GIF   11KB   ←バツ
│ 002.GIF   12KB   ←ひなた
│ 003.GIF   10KB   ←恭介
│ 004.GIF   13KB   ←将馬
│ 005.GIF   11KB   ←夏
│ 006.GIF   12KB   ←ロベルト
│ 009.GIF   10KB   ←ボーマン
│ 010.GIF   11KB   ←エッジ
│ 011.GIF   12KB   ←アキラ
│ 012.GIF   12KB   ←岩
│ 013.GIF   11KB   ←英雄
│ 014.GIF   13KB   ←響子
│ 018.GIF   10KB   ←委員長
│ 019.GIF   10KB   ←醍醐
│ 020.GIF   12KB   ←隼人
│ 021.GIF   12KB   ←ラン
│ 022.GIF   12KB   ←流
│ 023.GIF   12KB   ←ザキ
│ 024.GIF   11KB   ←もも
│ 025.GIF   12KB   ←ゆりか
├ DPTEX(ネットワーク通信関係)
│ BANK00.PVP   2KB   ←256色パレット
│ BANK01.PVP   2KB   ←〃
│ BANK02.PVP   2KB   ←〃
│ BANK03.PVP   2KB   ←〃
│ CRI_ADX1.PVR   513KB   ←CRI・ADXロゴ左部分
│ C_M_S.PVR   257KB   ←文字
│ JYOUCYU0.PVR   257KB   ←文字・ボタン・アイコン
│ JYOUCYU1.PVR   257KB   ←文字
│ JYOUCYU2.PVR   257KB   ←ボタン・アイコン
│ OPFILE.PVR   67KB   ←ボタン
│ OPTION01.PVR   257KB   ←文字
│ OPTION02.PVR   257KB   ←〃
│ OPTION03.PVR   257KB   ←〃
│ OP_BACK1.PVR   67KB   ←DREAMPASSPORT3ロゴ左部分
│ OP_NOKORI.PVR   67KB   ←ロゴ右部分
│ SEGA_LO1.PVR   67KB   ←SEGAロゴ左部分
│ SKB_BASE.PVR   67KB   ←ボタン
│ SKB_EISU.PVR   67KB   ←文字
│ SKB_KANA.PVR   67KB   ←〃
│ SKB_V102.PVR   67KB   ←無地
│ SU_ICO2.PVR   257KB   ←大きいボタン
│ SU_ICON.PVR   257KB   ←〃
│ TAG_SU.PVR   257KB   ←文字
│ VMSPART2.PVR   257KB   ←大きいアイコン
│ VMSPARTS.PVR   257KB   ←〃
│ WALLPAPER.PVR   257KB   ←背景
│ WALLPAPER00.PVR   65KB   ←〃
│ WALLPAPER01.PVR   65KB   ←〃
│ WALLPAPER02.PVR   65KB   ←〃
│ WALLPAPER03.PVR   65KB   ←〃
└┬ DPWWW(ホームページ関係)
 │ INDEX.HTML  2KB
 │
 ├ HELP
 │ INDEX.HTML  1KB
 │
 └ IMG
   BG.GIF  19KB   ←背景
   DREAM_H.GIF  3KB   ←ボタン
   JUS_HP.GIF  4KB   ←〃
   JUS_LOGO.GIF  14KB   ←燃えジャスロゴ

音とモーション以外のAFSファイルの中身はほとんど圧縮されている。

2019年7月1日月曜日

CLUT無しのTIMはどうすればいいか

これはWindows7(32bit)をターゲットとした記事です。Windows10では試していません。

CLUT(パレット)無しのTIMはビューアで見ると真っ黒で、何が描かれているのかわからない。
そういった場合は、何か適当なTIMからパレットを拝借すれば、取り敢えず見られるようになる。

↓のCHGKAO_1.TIMはパレットがない。CLUTフラグ(赤丸の部分)が0になっているからだ。
普通は4bitイメージなら8、8bitイメージなら9となっている。

ピンク色で塗り潰した部分がベタデータ。数値の並びからすると4bitイメージっぽい。
ベタデータの前には、イメージの幅高さがある。すなわち―

  • 対象ファイル:CHGKAO_1.TIM
  • ベタデータ開始位置:0x14
  • イメージモード:4bit
  • 幅:0x8*4=0x20 → 32ドット
  • 高さ:0x20 → 32ドット

次に、パレットを借りるTIMを決めなくてはならないが、経験的には4bitイメージのTIMで、関連性があるものとか、ファイルの並びが一つ前のものとか、やたら複数のパレットを持っているものにすると正解なことが多い。

というわけで、関連性がありそうで、128個のパレットを持っている4bitイメージのCEFT1_2.TIMにしてみる。
32*32のサイズのイメージなんて、きっと何かの部品で↓のような仲間に違いないと思ったからだ。

  • CLUTのあるファイル:CEFT1_2.TIM
  • パレット数:128
  • パレット開始位置:0x14(固定)

以上の情報を元に、PS版アンジェリーク用TIM作成プログラムで、対象ファイルにパレットを付加したTIMを作る。アンジェリーク用とかいいながら場合によっては、他のゲームにも使えるのであった。

↑のように文字・数値欄を埋めて、作成!ボタンを押すと、画面左上にパレット付加後のイメージが表示される。ただし、これは1番目のパレットを使ったイメージで、明らかにこれじゃない感じがする。
せっかく128個のパレットを持っていても、残念ながらこのプログラムでは2番目以降のパレットを使ったイメージは見られない。

パレットが付加されたTIMは、対象ファイルと同じフォルダに、ファイル名+イメージ開始アドレスという名前で作成されている(C:\zzz\jus1\DAT2\nocluttim\CHGKAO_1_14.TIM)ので、TimCollectionや先ほどのTimViewerで確認するとよい。

17番目のパレットがぴったりだった。

メニューバーの ImageConvert to BMP で、この状態をBMP形式で保存もできる。
TimCollectionでも同じようにBMPに保存できる。

TIM形式で保存したい場合

BMPで保存できるのに、わざわざTIMで保存したいと思う変わり者は私ぐらいかもしれない。
TimCollectionやTimViewerでもTIM保存ができるようになっているが、↑の状態で保存されない。128個あるパレットのうち17番目のパレットだけにするということはできないようだ。保存してみても128個のパレットのまま、中身が同じものができただけだった。

でも、PS版アンジェリーク用TIM作成プログラムなら可能だ。

対象ファイルを選んだら、パレット表示ボタンを押す。
すると、赤丸で囲ったボックスにパレット数が表示され、その下には取り出しボタンが現れる。
1/128というのは、128個のパレットを持っていて、今は1番目を表示しているという意味だ。

他の数値欄のことは気にせず、1/128をDELキーなどで消して、17を入力し、取り出しボタンを押す。
画面左上のイメージには何の変化も起こらないが、確かに17番目のパレットだけを持ったTIMが、対象ファイルと同じフォルダに、ファイル名+パレット番号という名前で作成されている。(C:\zzz\jus1\DAT2\nocluttim\CHGKAO_1_14_17.TIM)