IREM ARCADE HITSのROM抽出 その2 (日本語版)

ROM抽出,エミュレーターdotemu2mame.js,エミュレーター

前提

作業においては自己責任でお願いいたします
また改造部分の保証はしません、無保証での提供になります

こちらの記事でWindows版のIREM ARCADE HITSを変換できる事が前提条件です
ちなみにMac版では日本語版のデータがそもそも含まれていないとか

注意点

dotemu2mame.jsのライセンスが不明瞭(ライセンスなし?)なので
原作者さんから怒られた場合は、記事ごと消す対応になります
そのため、同一保持権の観点から改変済のファイル配布はしない方針です
私的利用はOKのはずなので、各自で改造して貰うと言うかたちです。

アンダーカバーコップス(日本語版)の抽出

日本語版用のスクリプト追記分

Original Author cxx dotemu2mame.js
https://gist.github.com/cxx/81b9f45eb5b3cb87b4f3783ccdf8894f

function uccopsj(srcdir)
{
    convert_roms('uccopsj', srcdir, {
        maincpu: {
            input: 'UCCOPSJ_CPU1.BIN',
            output: ['uc_l0_a.ic39', 'uc_l1_a.ic38',
                     'uc_h0_a.ic28', 'uc_h1_a.ic27'],
            transform: bin =>
                interleave(bin.slice(0, 0xc0000)).flatMap(b => {
                    return split_at(b, 0x40000);
                })
        },
        soundcpu: {
            input: 'UCCOPSJ_CPU2.BIN',
            output: ['uc_sl0.ic31', 'uc_sh0.ic30'],
            transform: interleave
        },
        gfx1: {
            input: 'UCCOPSJ_GFX1.BIN',
            output: ['uc_c0.ic26', 'uc_c1.ic25',
                     'uc_c2.ic24', 'uc_c3.ic23']
        },
        gfx2: {
            input: 'UCCOPSJ_GFX2.BIN',
            output: ['uc_030.ic37', 'uc_020.ic36',
                     'uc_010.ic35', 'uc_000.ic34']
        },
        irem: { input: 'UCCOPSJ_SOUND.BIN', output: 'uc_da.bin' }
    });
}

上記を2000行付近からコピーアンドペーストで挿入します
2022年12月12日 uc_020.ic35→uc_020.ic36のミスを修正しました
MAME 0.250/FBN/FBAで監査OK確認

左が改変、右がオリジナル。書式構造を壊さないように注意、ビジランテ部分がまるっと下にスライドします。
    uccopsj(srcdir);

2601行付近に挿入します。(前後でもOK)

バイナリデータ処理

このまま抽出をかけるとuc_sh0.ic30とuc_sl0.ic31が
本来は64kbなのに512kbもあるぞ!と怒られます(怒られた)

convertedフォルダ内のUCCOPSJ_CPU2.BINをサイズ調整します
単純に先頭分の128kbを取り出せばOKです(下部分はゴミ)

一番泥臭いやり方として
変換元のUCCOPSJ_CPU2.BINをバイナリエディタで開きます
0000(先頭)から1FFFFからまでコピーします
新規ファイル→ペーストしUCCOPSJ_CPU2.BINとして保存します

あとはWSLのDD使うとかバイナリカットソフト使うとか、ご自由に

Mrヘリの大冒険の抽出

Mr.ヘリ用スクリプト追記分

function mrheli(srcdir)
{
    convert_roms('mrheli', srcdir, {
        maincpu: {
            input: 'MRHELI_CPU.BIN',
            output: ['mh-c-l0.bin', 'mh-c-l1-bin', 'mh-c-l3.bin',
                     'mh-c-h0.bin', 'mh-c-h1.bin', 'mh-c-h3.rom'],
            transform: bin =>
                interleave(bin).flatMap(b => {
                    var a = split(b, 0x10000);
                    return [a[0], a[1], a[3]];
                })
        },
        sprites: {
            input: 'MRHELI_GFX1.BIN',
            output: ['mh-c-00.bin', 'mh-c-10.bin',
                     'mh-c-20.bin', 'mh-c-30.bin']
        },
        gfx2: {
            input: 'MRHELI_GFX2.BIN',
            output: ['mh-b-a0.bin', 'mh-b-a1.bin', 'mh-b-a2.bin', 'mh-b-a3.bin']
        },
        gfx3: {
            input: 'MRHELI_GFX3.BIN',
            output: ['b-b0-.rom', 'b-b1-.rom', 'b-b2-.rom', 'b-b3-.rom']
        },
        samples: { input: 'MRHELI_SAMPLES.BIN', output: 'c-v0-b.rom' }
    });
}

1600行付近に挿入するとbchopperと並びが良いです。

mrheli(srcdir); 

2616行付近だと良いかなと

抽出時の注意

あとはスクリプトを実行するだけなのですが

node dotemu2mame.js converted

変換済のZipファイルが残っているとエラーで止まる事があります
そのため、以前に抽出したROMファイル(zip)が残っている場合には
全て移動または削除してから行ってください

うまく行けば2つ日本語版のuccopsjとmrheliが追加で抽出できるようになります。

動作確認

タイトルが日本語版になってます(難易度も違うような?)
全面クリアしてないので問題が起きるかもしれません

デモや面がちゃんと日本語になってます、キャラ名も日本版ですね

Mrヘリはともかくアンダーカバーコップスの方は
日本語版が嬉しい人も多いのではないかなと

再現性重視の人はMAME0.250でもROMが使えますから
そちらがオススメ、特に音楽関係は聞こえてなかったボイスとかが聞ける気が?

動作に関しての補足事項

Mr.ヘリの大冒険はMCUが含まれていないので
Decapされたmh_c-pr-.ic1がMAME0.160から足りないと言われます
MAME0.159(2015年)までは要求されません

FBNの1.0.0.02はoptional扱いで不足してもプレイ可能
nightly builds 1.0.0.03ではprogramとなりプレイ不可
他ゲームもRomset更新により認識されなくなります

エアデュエルから派生したアイレムM72系Decap関係で
MAME 0.250では他アイレム系でも、けっこうな数がNGになります
(旧バージョンのAndroid版 RTYPE I・IIから変換したROMとかも)

FBNEOで修正が入る前のドライバーファイルに差し替えてビルドすれば
既存のRomでプレイ可能なのを確認しました。詳細は上記記事からどうぞ。

オチ

2年前にすでに変換されてたよ!
(´・ω・)まぁこっちのが楽できると言う事で一つ