giovedì 11 maggio 2023

OT: GoodMerged 7z ROMs prioritization tool to use with emulators gameex and others

Problem:

If we load directly a 7z goodmerged rom package in a console emulator, it will play the 1st rom inside the archive in alphabetical order. We don't want to unzip them all to save space.

Example:

we have banjo-kazooie.7z that contais the following nintendo64 roms:

Banjo to Kazooie no Daibouken (J) [!].z64
Banjo to Kazooie no Daibouken (J) [f1].z64
Banjo to Kazooie no Daibouken (J) [f2].z64
Banjo to Kazooie no Daibouken (J) [f3].z64
Banjo-Kazooie (E) (M3) [!].z64
Banjo-Kazooie (E) (M3) [f1].z64
Banjo-Kazooie (E) (M3) [f2].z64
Banjo-Kazooie (U) (V1.0) [!].z64
Banjo-Kazooie (U) (V1.0) [b1].z64
Banjo-Kazooie (U) (V1.0) [b2].z64
Banjo-Kazooie (U) (V1.0) [b3].z64
Banjo-Kazooie (U) (V1.0) [b4].z64
Banjo-Kazooie (U) (V1.0) [b5].z64
Banjo-Kazooie (U) (V1.0) [b6].z64
Banjo-Kazooie (U) (V1.0) [b7].z64
Banjo-Kazooie (U) (V1.0) [f1].z64
Banjo-Kazooie (U) (V1.0) [t1].z64
Banjo-Kazooie (U) (V1.1) [!].z64
   

if we try to load the 7z package directly in "Project64" (the nintendo 64 emulator) it will play the Jap version: Banjo to Kazooie no Daibouken (J) [!].z64

Solution:

We have to unzip, mark the rom which we want to be the 1st in alphabetical order, 7zip the roms again.

I wrote the following software that it will do this for us recursively for all roms found in a source folder:



Here you have to specify the source directory, the temp directory where the 7z package will be temporary unzipped, the 7za executable downloadable from 7zip website, the destination directory where "fixed" packages will go (should be different from source), flag if you want to remove the original package from source directory.

Then specify the priority order, in this example the software will pick up: (I) [!] as 1st, if not found will try (E) [!] then (U)[!] then (I), (E),(U), then any [!] and will rename the rom chosen prepending "001." in the filename.

In this example we don't have any italian version but EU, so, after clickin FIX! button, Banjo-Kazooie (E) (M3) [!].z64 will became 001.Banjo-Kazooie (E) (M3) [!].z64 and then, with other roms, 7zipped again in banjo-kazooie.7z

This way if we load the package in project64 it will play the EU version.

while running you will see the progress window:








Tested with gb gbc gba sms smg gg nes snes n64 romsets.

Do not use folders with spaces in the name.

Download here

 

 

OT: GoodMerged 7z ROMs prioritization tool: unzip to chd function

Problem:

We have a set of roms in bin + cue file format and zipped (or 7zipped).

Emulator won't play them directly in a zip format but want that you unzip them all; but you want to save hard disk space.

Example:

we have Chicken Run (UK).zip that contains the following files:

Chicken Run (UK) (Track 1).bin
Chicken Run (UK) (Track 2).bin
Chicken Run (UK) (Track 3).bin
Chicken Run (UK) (Track 4).bin
Chicken Run (UK) (Track 5).bin
Chicken Run (UK).cue 

if we try to load the zip package directly in a dreamcast emulator it will not play.

Solution:

Unzip the package and compress it using chdman from Mame32 suite

Chd file format is a compressed format containing all files needed in a single one.

But chdman tool accept only one cue file at a time.

So, we can use my software, RomPrioTool, similarly as described in the previous post.

We have to set source directory, temp directory, point to the chdman.exe executable file previously downloaded, destination directory and if we want to remove the zip from the source directory.

Then we click on "unzip to chd" button, zip package will be unzipped on temp directory, then passed into chdman, for every zip present in the source directory.

Based on our example, as a result we will have "Chicken Run (UK).chd" file in the destination directory that we can directly load on the emulator. And we start from a 1GB zip to a 870MB chd.

Tested with dreamcast, ps1, sega saturn, pilips cdi, panasonic 3do, amiga cd32, nec pcfx.

Do not use folders with spaces in the name.