Steam版NEOGEOソフト解析

この記事はAndroid用NEOGEOソフト解析がベースになっています。
技術情報を確認したい方はそちらをご確認ください。

単純に『合法的なROMイメージ入りNEOGEOソフトが欲しい!』という方は
素直にHumbleBundle NeoGeo Classic Complete Collection
購入しましょう。
元々のコンセプトが『NEOGEOを世界中で遊べるように』という目的で
インストールフォルダに素のROMイメージが格納されているうえ、
売り上げがチャリティー団体に寄付されるのでオススメです。


~はじめに~
DotEmuによるゲームソフトのエミュ移植は様々なプラットフォームに広がっており、
今ではPC用ソフトウェア販売管理システム『STEAM』にも進出しています。

参考=STEAM : Developer=DotEmu

NEOGEO作品の数はまだまだ少ないとはいえ、メタルスラッグや月下の剣士、
ティンクルスタースプライツなどの名作が揃っているのはグッドです。
ファイル構成がAndroid版ベースになっており、ティンクルスタースプライツの
場合は下記のようなファイル構造になっています。
※Steamのインストールフォルダ以下の下記フォルダにあります。
\Steam\steamapps\common\TWINKLE STAR SPRITES\resources\game

ファイル名 ファイルサイズ 内容
twinspri_adpcm 6144KB ADPCM(V-ROM)
twinspri_bios_m68k 128KB BIOS(neo-geo.rom)
twinspri_bios_sfix 128KB SFIX(sfix.sfx)
twinspri_game_m68k 4096KB Program(P-ROM)
twinspri_game_sfix 128KB SFIX(S-ROM)
twinspri_game_z80 128KB Z80(M-ROM)
twinspri_gfix_usage 4KB SFIXから生成した中間データ(不要)
twinspri_spr_usage 20KB TILESから生成した中間データ(不要)
twinspri_tiles 10240KB Tiles(C-ROM)
twinspri_zoom_table 128KB LO(000-lo.lo)

先にネタバレしますがAndroid用NEOGEOソフト解析と同じパターンでした。
というわけで
Download : STEAM版ティンクルスタースプライツ変換パック
上記ファイルを適当なフォルダにコピーして変換パックの
Steam_TWINSPRI.bat を実行すれば、
C-ROM(224-c1.c1 224-c2.c2 224-c3.c3 224-c4.c4)
M-ROM(224-m1.m1)
P-ROM(224-p1.p1)
S-ROM(224-s1.s1)
V-ROM(224-v1.v1 224-v2.v2)
BIOS(neo-geo.rom sfix.sfx 000-lo.lo)
が生成されます。
C,M,P,S,V-ROMをまとめてtwinspri.zipに圧縮。
BIOSはUNIVERSE BIOS(uni-bios.rom)を加えてneogeo.zipに圧縮。

あとはDotEmuのエミュレータのベースとなっているNebulaでロードし、
メニューのGame→Neogeo Options→Use Universe-BiosをチェックすればOK。
BIOS起動画面でA+B+Cを同時押ししてRegionをA(JAPAN)を選べば、
STEAM版でプレイ出来なかった日本語モードで遊ぶことができるようになります。


~技術情報~
変換パックのバッチファイルは下記のような処理をおこなっています。

・V-ROMの変換
romcutter.exe twinspri_adpcm 224-v1.v1 0 400000
romcutter.exe twinspri_adpcm 224-v2.v2 400000 200000
どちらかというと「切り出し」です。
DotEmuのADPCMファイルは単にメモリ配置用に連結してあるだけなので、
実ROMと同じサイズに分割してやれば元のファイルを得られます。

・P-ROMの変換
romcutter.exe twinspri_game_m68k 224-p1.btm 0 100000
romcutter.exe twinspri_game_m68k 224-p1.top 100000 100000
copy /b 224-p1.top+224-p1.btm 224-p1.p1
元ファイルは4メガバイトありますが、後半はすべて00000..でした。
また、ティンクルスタースプライツ含むメタルスラッグなど一部ソフトは
ROMとメモリレイアウトが中央で上下逆になるので、
2メガの領域を1メガずつ切り出してCOPYコマンドで上下逆に連結しています。

・S-ROMの変換
answap twinspri_game_sfix 224-s1.s1
実ROMとメモリ配置時のレイアウトが異なるので変換しています。
法則性についてはコチラを参考。

・M-ROMのリネーム
copy twinspri_game_z80 224-m1.m1
もはや変換ですらない。

・C-ROMの変換
tileswap twinspri_tiles twinspri_tiles.swp
echo 2ndStage reference..
echo 224-c1.c1 : StartAddr=0 Line=0 Size=400000
echo 224-c2.c2 : StartAddr=0 Line=1 Size=400000
echo 224-c3.c3 : StartAddr=400000 Line=0 Size=100000
echo 224-c4.c4 : StartAddr=400000 Line=1 Size=100000
tiles2crom.exe twinspri_tiles.swp

・BIOSのリネーム&変換
copy twinspri_bios_m68k neo-geo.rom
answap twinspri_bios_sfix sfix.sfx
copy twinspri_zoom_table 000-lo.lo
唯一変換しているのはSFIXだけで他の2つはコピー。
ちなみに実機とCRCが一致したのは”000-lo.lo”だけで、
sfix.sfxの内容はかなり異なっている様子。
neo-geo.romに至っては全くブート出来ないので単なる飾りです。
(※なのでUniverse-Biosが必要不可欠)