The EverDrive Packs Lists Project is an archival research initiave with the goal of allowing users to build real-hardware optimized ROM packs based on suggested file/folder layouts compiled by SmokeMonster.
Because most flash-carts require specific ROMs and fixes, it is a monumental task to compile 100% complete/working setups, and is often beyond the capabilities of any one person. Thousands of hours have been invested in the SmokeMonster DataBases (or SMDBs) of this project with the goal of 100% complete, 100% working real-hardware compatible arrangements of the highest quality ROM dumps. File hierarchies are shared via SMDB text files which contain all of the information needed to identify, sort and rename files.
What's in a SMDB file? A SMDB file generated by the parse_pack
script is an archival text record describing exact files (using hash
values SHA256,
SHA1, MD5 and CRC32) and the location of these files withing a folder
hierarchy (folder and file names).
SMDBs are provided for a range of flash-carts. These SMDBs allow
users to dump all of their legally acquired ROMs into a single folder
(zip files accepted). When the build_pack
script is run on that
directory, the ROMs will be analyzed (via hash comparisons), renamed
and sorted into complete, flash-cart friendly Packs, as described in
an SMDB. This allows creators to share file and folder setups without
having to share the ROMs themselves.
The build_pack
and parse_pack
scripts are written in python3. To launch
a script, install python if need be, and then open
a Windows console or a Linux/Unix terminal.
parse_pack.py For making SMDBs (example command):
"C:\XXX\parse_pack.py" -f "C:\XXX\Folder to be parsed" -o "C:\XXX\SMDB.txt"
-f
(or --folder
) indicates the target ROM pack
-o
(or --output
) is the text file that will contain the hash
values, filenames, and folder structure
build_pack.py For building a pack based on a pre-made SMDB (example command):
"C:\XXX\build_pack.py" -i "C:\XXX\Folder with unorganized ROMs" -d "C:\XXX\SMDB.txt" -o "C:\XXX\Output folder for rebuilt pack" -m "C:\XXX\Missing.txt"
-i
(or --input_folder
) is the folder containing the unorganized
ROMs
-d
(or --database
) is the SMDB file describing the way your ROMs
are organized
-o
(or --output_folder
) is the folder in which to build the ROM
pack
-m
(or --missing
) is the text file that will list the ROMs missing
in order to reach the 100% mark
Options for advanced users:
--file_strategy {copy,hardlink}
changes the way files are copied to
the destination folder. The default is to physically duplicate the
files (copy
). The option hardlink
avoids file duplication and
saves storage space for pack builders. Please note that when copying
to a FAT32 SD card, hardlinks are automatically converted into
normal files.
-s
(or --skip_existing
) avoids overwriting files that already
exist in the destination folder.
Depending on your python installation, you may need to begin your
command with the location of python.exe
(for example,
C:\Users\XXX\AppData\Local\Programs\Python\Python36-32\python.exe
). More
information for pack builders are available in the
wiki.
A graphical user interface is available in
@Aleyr's
repository for
both the build_pack.py
and parse_pack.py
scripts. If you are
having difficulty with the command line options, please consider
trying the GUI version.
python 3.5 or newer
Linux, MacOS, or Windows
(Linux and MacOS users might need to convert the script and SMDB files
first with the command dos2unix
)
Scripts and code by @frederic-mahe, with awesome patches by @eatnumber1, @coughlanio and @Slashbunny.
EverDrive Pack SMDB layouts by @SmokeMonsterPacks.
- GammaCopy (Windows only, direct support of SMDB files, fast execution)
- clrmamepro,
- romcenter,
- romvault