System16Cでのファンタジーゾーン2・リメイク版への道 その2

  • 2010/07/22(木) 11:20:46

この前は公開されたソースを使って、ファンタジーゾーン2・リメイク版をエミュレータ上で動作させることが出来ました。

今回は前回抽出したファイルの残りである、System16B版ファンタジーゾーンとSystem16B版ファンタジーゾーンタイムアタック版を動作させてみたいと思います。
というのも、M2の堀井さんの話wikipediaでの記載、マニュアルでの記載などから、System16CはSystem16Bから68000とz80のメモリーを増設したものってことは分かりました。
んで、ソースを見てみると、68000側が256Kbyte、z80側が8Kbyteになっていますので、それぞれメモリーを手に入れればいいかってところまではきましたが、田舎にいる私はすぐには手に入りません。
そんなわけでとりあえずメモリー増設なしでもいけると思われるSystem16B版のファンタジーゾーンを実機で動かすことを試みました。
これが出来ればファンタジーゾーン2・リメイク版のEPROMへの焼き方やデータの分割方法もおおよそ推測できると思ったこともあります。
やってみました。
#結論から言うとちょっと残念な感じですが実機で動きます。

さてこの前抽出した、System16Bのファイルは

fz1_s16b.p00
fz1_s16b_ta.p00
fz1_s16b.scr
fz1_s16b_ta.obj
fz1_s16b.snd

でしたが、同様にまずはMAMEで動くか試してみます。
とここで既にそのままでは動かないデータがあります。
それはtileとしてのデータであるscrがどうも通常のROMデータから変更されているようでした。
#ファンタジーゾーン2・リメイク版ではscrを戻した?bgというファイルがありますので、それでMAMEで動いています。

これを通常のROMデータへ戻さなければなりません。
ここでzaralaさんの残してくれたメモがなければ挫折してました。
コンプリートコレクションに入っているSystem16A版のファンタジーゾーンのデータを抽出し、MAMEでのROMデータへ変更した際のメモですが、まったく同じやり方でこのscrをbgへ変更可能でした。
それぞれのファイルの分割方法などは私がここで記載するより、zaralaさんのメモをみた方がわかりやすいです。
なので説明はバッサリ。
#他力本願でスマン。
さらに、他のデータもROMへ焼く前の状態まで分割するようにzaralaさんが作ってくれたスクリプトを改変してみました。
HSPスクリプトなので、オニタマのHSPをインストールして使ってください。
スクリプトはこちらからどうぞ。

出来上がったファイルの名前は理由がありますが、それは後述。
また、スプライトのデータと思われるobjはbinaryエディタなどでみると、2Mbyteのうち先頭からの256Kbyteとちょうど真ん中からの256Kbyte以外はすべてFFで埋まっていますのでそこだけ抽出します。
#ほんとはその256Kbyteも32KByteごとにFFで埋まっています。データは32KByteごとで、System16Aのファンタジーゾーンと同じものと思われました。(未確認)

さらにサウンドプログラムは256Kbyteありますが、先頭からの32Kbyteの繰り返しになっており、(途中FFで埋まっていますが)先頭からの32Kbyte部分あれば問題ありません。

これらのデータでMAMEでの動作を確認してみます。
driverのソースで定義してあげればいいのですが、System16Bのdriverには様々なゲームの定義が並んでおり煩雑ですので、この前に追加したSystem16Cのファイルを変更してみます。

src/mame/drivers/segas16.cをこれに変えてください。
#私が適当に書きましたので、問題あっても責任なしとか、その辺理解ください。
また、src/mame/mamedriv.cに
    DRIVER( fzs16b )    /* (c) 1987 */
    DRIVER( fzs16bta )    /* (c) 1987 */
を追記。(前に追記したfz2dxの後あたりがいいでしょうかね)
んで、makeです。

segas16.cを見てもらえば分かると思いますが、System16Bのファンタジーゾーンは

fz1_s16b_bg.a14
fz1_s16b_bg.a15
fz1_s16b_bg.a16
fz1_s16b_obj.a1
fz1_s16b_obj.b1
fz1_s16b_obj.b10
fz1_s16b_obj.b5
fz1_s16b_p00.a5
fz1_s16b_p00.a7
fz1_s16b_snd.a10

をまとめて、fzs16b.zipとして圧縮。

System16Bのタイムアタック版は

fz1_s16b_bg.a14
fz1_s16b_bg.a15
fz1_s16b_bg.a16
fz1_s16b_obj.a1
fz1_s16b_obj.b1
fz1_s16b_obj.b10
fz1_s16b_obj.b5
fz1_s16b_snd.a10
fz1_s16b_ta_p00.a5
fz1_s16b_ta_p00.a7

をまとめてfzs16bta.zipとして圧縮。
これでMAMEで起動してみてください。


こんな感じで、System16Bのファンタジーゾーンが!!

さらには、タイムアタック版も!!

というわけで、どうやら問題なくデータ利用できるようです。
#ちょっと嘘ついてます。エミュレータではこの様にデータを分割した場合、タイムアタック版が長時間デモを見ているとフリーズします。
#segas16c.cを変更して、fz1_s16b_ta.objを分割せずに定義してやるとフリーズしないので、スプライトの定義の仕方(FFで埋まっているので抜いてしまったスプライトの定義部分の問題か?)に問題があるかと思います。
#MAMEでのプレイのみであればその辺のソースを変更してください。
#ちなみに実機では問題ありませんでした。(FFの部分にROMを焼かなくてもデモでフリーズしない)
#さらに残念なことにSystem16B版のファンタジーゾーンはかなり未完成な感じ(ってそもそも存在しないので、当たり前ですが)です。
#デモでショットなどの効果音がならない、基地などがビミョーにドットずれしている?、ラストのボスがスプライト化けなどあります。
#まあ、あくまでおまけってことで。

次は実機のSystem16B基盤で遊んでみます。
果てしなく続く。

この記事に対するトラックバック

この記事のトラックバックURL

この記事に対するコメント

この記事にコメントする

管理者にだけ表示を許可する