Coder Social home page Coder Social logo

dat's Introduction

Pure DOS DAT

This repository contains a ROM management data file (datfile in XML format) of verified DOS games that can be easily loaded in a supported DOS emulator.

In addition, the repository contains the game specific DOSC and DOS.YML files as listed in the DAT file which simplify the launching of DOS games in various ways. See the respective sections for details.

The actual game files as stored in DOSZ files are not contained in this repository.

For adding a new game to the DAT file, see Contributing for how to decide on the file set.

PureDOSDAT.xml

This is the DAT file which can be loaded in a ROM management tool to verify and build DOSZ and DOSC files.

RomVault is recommended because it is easy to use and by default builds correct ZIP files. Depending on your Windows or .NET installation, you might want to use version 3.2.5 or the latest available.

While working with a ROM manager, the files will need to be named .DOSZ.ZIP and .DOSC.ZIP. To do this easily in Windows, create a file named _swap_zip_extension.bat with the content:

IF EXIST *.DOSZ ( ren *.dosz *.dosz.zip & ren *.dosc *.dosc.zip ) ELSE ( ren *.dosz.zip *. & ren *.dosc.zip *. )
Alternatively as a shell script:
#!/bin/sh

if ls -- *.dosz > /dev/null 2>&1
then
    for file in *.dosz *.dosc
    do mv "$file" "$file".zip
    done
else
    for file in *.zip
    do rename ".zip" "" "$file"
    done
fi

PureDOSDAT-Variants.xml

Similar to the primary file this contains secondary variants of game packages which includes regional variants as well as original installation media.

DOSZ Files

A DOSZ file is a ZIP file which contains one DOS game that can be loaded in a DOS emulator similar to how a console game ROM from that era is used with console emulators.

DOSC Files

A DOSC file is also a ZIP file but it contains config files created from a setup program separate from the games installation as well as binary patches (in IPS/BPS/VCDIFF/XOR format) that remove copy protection schemes.

An existing DOSC file is always loaded as a file system overlay for a DOSZ file with a matching name.

You can find all official DOSC files in the dosc directory.

DOS.YML

A DOS.YML file describes hardware and software configuration for the DOS emulator to make running a game correctly as seamless as possible.

The format description can be found in the yml README. The DOS.YML files referenced by the DAT file can be found in the yml directory.

Such a file can be bundled as part of the DOSZ or DOSC file of a game. If the game inherently does not run on a DOS emulator's default compatibility mode it should be part of the core DOSZ file. Otherwise, if the game's configurable settings stored in the DOSC file warrants special emulation settings, it would go in there. If the file exists in both archives, an emulator will load the one in DOSZ first followed by the one in DOSC, which can then add or overwrite keys.

File Naming

The format of each file used by the DAT is the following:

GAMENAME (YEAR) (COMPANY) (VARIANT)

GAMENAME follows chapter 2 of the naming convention by No-Intro. It includes rules regarding allowed characters, capitalization, subtitles, punctuation and more.

YEAR is simply the first year of the game's public release.

COMPANY is either the developer or the publisher, whichever is more relevant or prevalent. The company name does not follow any specific naming convention, it should be written as it was written in the game or on its box. Company name suffixes like "Incorporated"/"Inc.", "Limited"/"Ltd." or "Corporation"/"Corp." are removed.

VARIANT should only be used for optional secondary variants of a game and there should always exist one DAT entry without the variant specifier. One variant is "Installation", which is for the installation media which can be used to produce the primary variant but otherwise after installation isn't used anymore. It can also contain a region name for a regionally limited or translated release.

One example of a full name with 2 variant specifiers would be:

Monkey Island 2 - LeChuck's Revenge (1992) (Lucasfilm Games) (Installation, Germany).dosz

A package like this would then contain the floppy disk images of the German version of Monkey Island 2.

Contributing

If you want to contribute a new game to the DAT file, you first need to decide on the fileset. DOS games often exist in many variants with minor or major differences between them.

Language

The primary variant (without regional variant specifier) should be the English version of a game. If no official English version exists, the original language will be used. If there is a common multilingual version available which includes English, it will be preferred.

Installation

A game that is installed to a harddrive ideally is just the result of the finished untouched installation made from (near) original media.

The game files should exist in the top root directory of the resulting zipped file. In a DOS emulator, this will appear as the root of the C: drive. Only if a game does not allow being run from the root of the C: drive, it should be put into a sub-directory.

Version Patches

If there exists patches or patched versions, generally the most up-to-date version is desired. But if a patch has no meaningful additions a previous version can be used, especially if it is more common. If a game has been released into the public domain or is currently available for purchase on digital distribution, that fileset is preferred to be included in the DAT, though only if the set of files was available in an original DOS release. Modern patches or updates made long after the original DOS release should not be included.

Original Media Images

One or more image files can be included in the .DOSZ file. Image files should be given a short name. For a set of multiples, the disc/disk number should always be included and start at 1, i.e. "Game Name - Disc 1.chd".

If a CD-ROM or floppy disk does not need to be inserted in an emulated drive to play an installed game, it should not be included in the primary variant but instead be in a separate "Installation" variant.

CD-ROM Images

CD-ROM images should be included in the .DOSZ file in uncompressed, version 5 CHD format (created with chdman.exe createcd -c none). This is to avoid double compression by both CHD and ZIP, which would be a detriment for load time and performance, while keeping a full game in a single .DOSZ file.

Floppy Disk Images

Floppy disk images should be included in the .DOSZ file in uncompressed raw disk IMG format.

Generating DAT from ZIPs

To generate the data file XML elements you can use the bundled MakePureDOSDAT utility.

dat's People

Contributors

puredos avatar 10kmotorola avatar tomojira avatar televandalist avatar

Stargazers

 avatar  avatar Wes Copeland avatar  avatar  avatar

Watchers

 avatar  avatar

dat's Issues

SimAnt data encryption/copy protection

SimAnt was merged via #48 but it was noticed that the installation program adds 256 bytes with encrypted user registration info to every game file except SIMANT.CFG. The first 188 bytes seem to contain the entered the name and organization strings in encrypted form. This then is followed by 64 bytes copied from the BIOS memory (physical RAM bytes 0x000fffc0 ~ 0x00100000). These 64 bytes generally contain 8 bytes with a BIOS date string but also various BIOS program pointers and other data which can differ from system to system. The very last 4 bytes contain whatever is at physical RAM address 0x0000000.

These last 68 bytes makes including it in this ROM management DAT file complicated because they are environment specific bytes copied during the installation which can be hard to reconstruct. Replacing these 68 bytes with zeroes does not seem to affect the game (at least not in the first few minutes of game play).

SimAnt generally doesn't seem to have copy protection (besides storing the name entered at installation encrypted in the game files) so perhaps these 68 bytes were just included in case stricter copy protection is desired later during development but then was never used.

MakePureDOSDAT fails with certain CHD files

I've found that the MakePureDOSDAT utility fails when certain CHD files are included in the DOSZ, such as those for Warcraft II: Tides of Darkness + Beyond the Dark Portal. At first I thought it might be because the file size was too large - Tides of Darkness uncompressed CHD is 663 MB, Beyond the Dark Portal is 711 MB, and both need to be included. But Grand Theft Auto already has a large CHD in the DAT, so I'm not sure what the problem is. When the CHDs were deleted from the DOSZ, all the other files for Warcraft II processed correctly.

The 2 CHD files correspond with Redump:

They were created with the command
chdman.exe createcd -i input.cue -o output.chd -c none

Here is some info from the chdman.exe info command if it helps:

chdman - MAME Compressed Hunks of Data (CHD) manager 0.257 (mame0257)
Input file:   .\WarCraft II - Tides of Darkness (USA) (Rerelease) (1996-10-05).chd
File Version: 5
Logical size: 708,725,376 bytes
Hunk Size:    19,584 bytes
Total Hunks:  36,189
Unit Size:    2,448 bytes
Total Units:  289,512
Compression:  none
CHD size:     695,349,504 bytes
Metadata:     Tag='CHT2'  Index=0  Length=93 bytes
              TRACK:1 TYPE:MODE1_RAW SUBTYPE:NONE FRAMES:101997 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=1  Length=89 bytes
              TRACK:2 TYPE:AUDIO SUBTYPE:NONE FRAMES:602 PREGAP:150 PGTYPE:VAUDIO PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=2  Length=88 bytes
              TRACK:3 TYPE:AUDIO SUBTYPE:NONE FRAMES:16520 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=3  Length=88 bytes
              TRACK:4 TYPE:AUDIO SUBTYPE:NONE FRAMES:32387 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=4  Length=88 bytes
              TRACK:5 TYPE:AUDIO SUBTYPE:NONE FRAMES:16656 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=5  Length=88 bytes
              TRACK:6 TYPE:AUDIO SUBTYPE:NONE FRAMES:16228 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=6  Length=87 bytes
              TRACK:7 TYPE:AUDIO SUBTYPE:NONE FRAMES:4353 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=7  Length=87 bytes
              TRACK:8 TYPE:AUDIO SUBTYPE:NONE FRAMES:2836 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=8  Length=87 bytes
              TRACK:9 TYPE:AUDIO SUBTYPE:NONE FRAMES:4304 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=9  Length=89 bytes
              TRACK:10 TYPE:AUDIO SUBTYPE:NONE FRAMES:16188 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=10  Length=89 bytes
              TRACK:11 TYPE:AUDIO SUBTYPE:NONE FRAMES:16246 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=11  Length=89 bytes
              TRACK:12 TYPE:AUDIO SUBTYPE:NONE FRAMES:16201 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=12  Length=89 bytes
              TRACK:13 TYPE:AUDIO SUBTYPE:NONE FRAMES:15733 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=13  Length=89 bytes
              TRACK:14 TYPE:AUDIO SUBTYPE:NONE FRAMES:16088 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=14  Length=88 bytes
              TRACK:15 TYPE:AUDIO SUBTYPE:NONE FRAMES:6547 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=15  Length=88 bytes
              TRACK:16 TYPE:AUDIO SUBTYPE:NONE FRAMES:3188 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=16  Length=88 bytes
              TRACK:17 TYPE:AUDIO SUBTYPE:NONE FRAMES:3419 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.

     Hunks  Percent  Name
----------  -------  ------------------------------------
    35,498    98.1%  Uncompressed                            
       691     1.9%  Copy from parent                        
chdman - MAME Compressed Hunks of Data (CHD) manager 0.257 (mame0257)
Input file:   .\WarCraft II - Beyond the Dark Portal (Expansion Set) (USA) (Rerelease) (1996-10-09).chd
File Version: 5
Logical size: 760,485,888 bytes
Hunk Size:    19,584 bytes
Total Hunks:  38,832
Unit Size:    2,448 bytes
Total Units:  310,656
Compression:  none
CHD size:     745,699,968 bytes
Metadata:     Tag='CHT2'  Index=0  Length=92 bytes
              TRACK:1 TYPE:MODE1_RAW SUBTYPE:NONE FRAMES:89405 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=1  Length=89 bytes
              TRACK:2 TYPE:AUDIO SUBTYPE:NONE FRAMES:602 PREGAP:150 PGTYPE:VAUDIO PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=2  Length=88 bytes
              TRACK:3 TYPE:AUDIO SUBTYPE:NONE FRAMES:29309 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=3  Length=88 bytes
              TRACK:4 TYPE:AUDIO SUBTYPE:NONE FRAMES:32387 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=4  Length=88 bytes
              TRACK:5 TYPE:AUDIO SUBTYPE:NONE FRAMES:16656 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=5  Length=88 bytes
              TRACK:6 TYPE:AUDIO SUBTYPE:NONE FRAMES:16228 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=6  Length=87 bytes
              TRACK:7 TYPE:AUDIO SUBTYPE:NONE FRAMES:4353 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=7  Length=87 bytes
              TRACK:8 TYPE:AUDIO SUBTYPE:NONE FRAMES:2836 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=8  Length=87 bytes
              TRACK:9 TYPE:AUDIO SUBTYPE:NONE FRAMES:4304 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=9  Length=89 bytes
              TRACK:10 TYPE:AUDIO SUBTYPE:NONE FRAMES:26776 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=10  Length=89 bytes
              TRACK:11 TYPE:AUDIO SUBTYPE:NONE FRAMES:16246 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=11  Length=89 bytes
              TRACK:12 TYPE:AUDIO SUBTYPE:NONE FRAMES:16201 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=12  Length=89 bytes
              TRACK:13 TYPE:AUDIO SUBTYPE:NONE FRAMES:15733 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=13  Length=89 bytes
              TRACK:14 TYPE:AUDIO SUBTYPE:NONE FRAMES:16088 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=14  Length=88 bytes
              TRACK:15 TYPE:AUDIO SUBTYPE:NONE FRAMES:6547 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=15  Length=88 bytes
              TRACK:16 TYPE:AUDIO SUBTYPE:NONE FRAMES:3188 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=16  Length=88 bytes
              TRACK:17 TYPE:AUDIO SUBTYPE:NONE FRAMES:3419 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.
Metadata:     Tag='CHT2'  Index=17  Length=89 bytes
              TRACK:18 TYPE:AUDIO SUBTYPE:NONE FRAMES:10355 PREGAP:0 PGTYPE:MODE1 PGSUB:NONE POSTGAP:0.

     Hunks  Percent  Name
----------  -------  ------------------------------------
    38,068    98.0%  Uncompressed                            
       764     2.0%  Copy from parent                        

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.