ファンタジーゾーンコンプリートコレクション uPdate!
前半戦
お約束
抽出は全て自己責任でお願いします
手順などの不備がありましたら
お手数ですがコメントをいただけると幸いです
あらかたぶん投げてるので、補完のコメントも大歓迎です。
後半戦があります
MAMEでは残念ながらバージョンが限られますが
ファンタジーゾーン2のSYSTEM16C版の変換などを記載しています。
事前準備
当初から10年ほど時間が経過もしてるので、忘備録的な感じで一つ
なお変換と解析は丸投げなので、デキる人は現行用に書き換える方がよいかと。
当該のPS2用ゲームディスクからBIN.BAKをコピーしておきます
こちらから
ファンタジーゾーン・コンプリートコレクション データファイル展開
をクリック、抽出ソフトをダウンロードし解凍します
fzcc_unpackを実行して
事前にディスクからコピーしておいたBIN.PAKを選択、アンパックします
数分はかかると思うので、完了表示が出るまで待ちましょう。
正常に実行がおわれば、BINフォルダが生成され
BINフォルダー配下に全てアンパックされています
ROM変換
ファンタジーゾーン(unprotect)
Python版にリニューアルしました
問題があった場合はコメントをお願いします
fantasyz_convert.pyとしてテキストにコピペで保存
同一フォルダーにfz1_07382.p00/fantasyz.obj/fantasyz.scr/fanta_jp.sndを配置
コマンドプロンプトでpython fantasyz_convert.pyを実行すると解凍するので
epr-7***.**をfanntzone1.zipとして圧縮してROMフォルダーに配置します。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from pathlib import Path
# --------------------------------------------------
# HSP: #deffunc writedata str filename,int ofs,int size
# --------------------------------------------------
def writedata(filedat: bytes, filename: str, ofs: int, size: int):
buf2 = bytearray(size)
for i in range(size):
buf2[i] = filedat[i * 2 + ofs]
Path(filename).write_bytes(buf2)
def main():
# ==================================================
# CPU
# ==================================================
filedat = Path("fz1_07382.p00").read_bytes()
filesize = len(filedat)
writedata(filedat, "epr-7385.43", 0x000001, 0x8000)
writedata(filedat, "epr-7382.26", 0x000000, 0x8000)
writedata(filedat, "epr-7386.42", 0x010001, 0x8000)
writedata(filedat, "epr-7383.25", 0x010000, 0x8000)
writedata(filedat, "epr-7387.41", 0x020001, 0x8000)
writedata(filedat, "epr-7384.24", 0x020000, 0x8000)
# ==================================================
# SPRITE
# ==================================================
filedat = Path("fantasyz.obj").read_bytes()
filesize = len(filedat)
writedata(filedat, "epr-7392.10", 0x00001, 0x8000)
writedata(filedat, "epr-7396.11", 0x00000, 0x8000)
writedata(filedat, "epr-7393.17", 0x10001, 0x8000)
writedata(filedat, "epr-7397.18", 0x10000, 0x8000)
writedata(filedat, "epr-7394.23", 0x20001, 0x8000)
writedata(filedat, "epr-7398.24", 0x20000, 0x8000)
# ==================================================
# BG
# ==================================================
filedat = Path("fantasyz.scr").read_bytes()
filesize = len(filedat)
if filesize % 4 != 0:
raise ValueError("fantasyz.scr のサイズが4の倍数ではありません")
word_count = filesize // 4
outbuf = [
bytearray(word_count),
bytearray(word_count),
bytearray(word_count),
]
for i in range(word_count):
ofs1 = i * 4
ofs2 = i
# 4バイト → 32bit(ビッグエンディアン)
tmp = 0
for j in range(4):
tmp = (tmp << 8) | filedat[ofs1 + j]
bytebuf = [0, 0, 0]
for bit in range(8):
tmp2 = (tmp & (0x70000000 >> (bit * 4))) >> (28 - bit * 4)
mask = 0x80 >> bit
if (tmp2 & 0x01) != 0:
bytebuf[0] |= mask
if (tmp2 & 0x02) != 0:
bytebuf[1] |= mask
if (tmp2 & 0x04) != 0:
bytebuf[2] |= mask
for p in range(3):
outbuf[p][ofs2] = bytebuf[p]
Path("epr-7388.95").write_bytes(outbuf[0])
Path("epr-7389.94").write_bytes(outbuf[1])
Path("epr-7390.93").write_bytes(outbuf[2])
# ==================================================
# SOUND
# ==================================================
filedat = Path("fanta_jp.snd").read_bytes()
filesize = len(filedat)
Path("epr-7535.12").write_bytes(filedat)
print("Conversion completed successfully.")
if __name__ == "__main__":
main()
以下旧版
ツールダウンロードサイトにある
謎のテキスト(「特定の使い方」をする人向け)にある
後半のスクリプトを使う事で変換出来ます。
ただしHSP3.1でないと動作しません。3.6や3.7beta、2.6では正常動作しないので注意!
(直接リンクでお行儀悪いですが)
上記より3.1をダウンロードして解凍した後に
エディター(hsed3le.exe)を起動させコピー&ペーストします。
その後、メニューから実行ファイル自動作成よりEXEファイルを作成します
デフォルトでは(マイ)ドキュメントフォルダーに作られる
hsptmp.exeとなります。コレをBINフォルダーにコピーしてから実行します。
上記画像のようにepr-7***.**が沢山できあがるので
これを全てfanntzone1.zipとして圧縮すれば完了です
おそらくMAMEでもそのまま動作すると思われます。
Fantasy Zone II – The Tears of Opa-Opa (System 16C, PS2 data file)
こちらはFinalBurnNeoでのみ動作すると思われます。
事前解凍したBINフォルダーに含まれている
下記ファイルを圧縮しfantzn2xps2.zipとして圧縮します。
fz2_s16c.p00
fz2_s16c.p01
fz2_s16c.scr
fz2_s16c.spr
fz2_s16c.sndまさかの変換せずに、そのまま読み込ませるドライバーみたいです・・・
動くんだ・・・理論上は読み込み側を対応させる事は可能ですけど
Fantasy Zone Time Attack (System 16B, PS2 data file)
fz1_s16b_ta.p00
fz1_s16b.scr
fz1_s16b_ta.obj
fz1_s16b.sndこちらもFinalBurnNeoの場合、必要ファイルを圧縮するだけの直読みドライバー型です
BINフォルダー内にある、4つのファイルをZIP圧縮しfantznta.zipにするだけ。
通常版と異なるのは基地破壊時、ミス時、リスタート時に時間表示が出ます
得点ではなく、クリア時間がスコアになったタイムアタックバージョンですね。
しめ
現在だと5000円~位で価格2倍のプレミアが付いていますから
既に所有している人が、思い出して変換するケースかなぁ・・・と
そういえば、PS2アーカイブスという入手方法もありましたね。
ちなみに今回取り上げたPAKアンパックツールですが
SegaAges2500の後期に発売された、他タイトルでも使えるようです
SEGAマーク3やメガドライブ用イメージなどがそのまま取り出せます
海外フォーラムでもコマンドライン用ですが
同様のアンパッカーを見つけました。
体験版がまだ公開されていました。
2008年という所に時代を感じますね。
最後になりますが、変換ツールを今も公開し続けて下さっている
zaralaさんに感謝を、ありがとうございました。





























ディスカッション
コメント一覧
まだ、コメントがありません