DMU Proposal

v6


[3/20/03] Once upon a time, I sat down and implemented around 90% of this document.
Then I kinda lost interest. I guess I'll link to it from here though, so you can download a beta.

[5/13/02] Some final updates.
[4/27/02] Updated bin and info sections.
[4/13/02] Updated info, and launcher sections.
[4/9/02] Updated themes, screenshots and revampled the roms section, as I'm finalizing the format and getting ready to release a beta ;).
[4/1/02] Updated format once again, to take advantage of some planned Dream Inducer features ;) Stay tuned.
[3/3/02] Minor updates.

This is an open proposal to those of the Dreamcast Emulation community, both to developers, and to end-users (we've gotta be doing this for someone, right?). I've been thinking for a long time how cool it would be if you could easily combine multiple emulators, demos, and whatnot on 1 CD. Demomenu is really a step in the right direction, but it takes a lot of time to set up the CD properly, selfboot it, etc. So, I've come up with a solution. A standard way to "package" DC software for use with DemoMenu.

A DMU file is really a .ZIP, but with a dmu.ini file inside it. Basically, this file describes the contents of the ZIP. It's organized like a windows .ini file, broken up into multiple sections:

[info]
name=Multi-Nester
description=A bunch of nesters!|This is on another line.
dmutype=emulator
readme=nester-readme.txt
version=1.0
dmuversion=6
bin=3
support=1
theme=6
screenshots=1
roms=2
The info section contains general information, such as the name and version of what's contained in the DMU file (and the dmu version). In the description field, a | indicates a line feed. It also contains the number of entries in the various sections (or the special number, -1, which indicates a section of this section's type is required, but not included). dmutype may be: emulator, app, demo, game, loader, theme, roms. readme points to a text file with any important information. Only 1 section -has- to be present, and more sections then are listed here may be present.
[bin]
1=NESTER53.BIN;S;NesterDC v5.0pre-3;1
2=NESTER3.BIN;S;NesterDC v3;1
3=1ST_READ.BIN;S;NesterDC v4;1
The bin section contains binary files necessary to run the program, a semicolon, and either an S (for scrambled) or a U (for unscrambled), another semicolon, the description and optionally the number of a screenshots entry (see below) or -1 for default. Please note, that more then one binary may be specified (as is here). If description is left blank, the binary will not get added to the menu. Binaries should be in the root directory (unless for some reason it expects otherwise).
[screenshots]
1=nester.png;PNG;240;180
The screenshots section lists filenames of screenshots to be used inside the menuing software. The screenshot type should be specified after it's filename (it'll be useful for something), and the width and height are specified too.
[support]
1=GFX\8x8.FNT
The support section contains support files for the emulator or software.
[theme]
type=nester
title=Default Nester 5
1=PICS\menu.bmp
2=PICS\options.bmp
3=PICS\nogamecd.bmp
4=PICS\credits.bmp
5=PICS\startup.bmp
6=PICS\menu_selection.bmp
The theme section contains graphics, and other themeable elements. The type field, if present, indicates what kind of theme it is, so that 2 theme sections, with the same type, should be freely interchangable. Title is pretty self-explanitory.
[roms]
folders=1
type=Nintendo:GAMES\:NES;FDS:GAMES\:FDS:BIN
1=Nintendo;ROMS\MARIO.NES;Super Mario Brothers
2=FDS;ROMS\MARIO.FDS;FDS Mario
The type field indicates what type of roms this application requires. Folders should be set to 1 or 0, depending on if the emu in question supports them. More then one type may be listed, seperate types with a semicolon. In the above example, 2 types are listed "Nintendo" (with extensions *.NES) and "FDS" (with extensiosn *.FDS, *.BIN). Both of these filetype's roms will go into the GAMES\ folder on the finished CD layout. Extensions are seperated by colons, and come after the directory.. there can be multiple for any filetype (as in the example above). The numbers in the roms section contain ... roms. The format is the rom type (from above), a semicolon, the filename, a semicolon, and the name/description of the ROM.
[loader]
in=dreaminducer.tmpl
out=list.dxl
screenshots=PCX;PNG
bintype=U
lfchar=#
The template section is only needed for special DMU files that describe a front-end (dmutype = loader). The 'in' file specifies a template filename, and the 'out' file specifies the output filename. Screenshots specifies what types of screenshots are supported (if this line is not included, no screenshots are supported). lfchar is what to use as a linefeed (if empty, uses default CR+LF). bintype specifies if binaries need to be Unscrambled, or Scrambled to work. The template itself should look something like this (sample from upcoming Dream Inducer):
<?xml version='1.0' encoding='UTF-8'?>
<LIST ENTRIES='%%COUNT%%'>
%%REPEATSTART%%
  <ITEM
	TITLE="%%TITLE%%"
	SCREENSHOT="/cd/%%SCREENSHOT%%"
	DESCRIPTION="%%DESCRIPTION%%"
	EXECUTABLE="/cd/%%BIN%%"/>
%%REPEATEND%%
</LIST>
All variables are enclosed in double-precent signs, and a list follows:
COUNTNumber of Items in the menu
REPEATSTART
REPEATEND
Everything between these two variables (they should be on their own lines) will be looped for each item on the menu.
TITLEItem Title
SCREENSHOTFilename to screenshot
BINFilename to binary
DESCRIPTIONItem Description

Basically, this file format provides information so a .DMU may be easily removed, or added to in whole, or in part of to a CD image. I'm going to begin implementing support for this in DCFactory shortly, so that it will be able to both output DMU, and link multiple DMUs together (probably with the ability to pick-and-choose what sections to install) and create DemoMenu (and soon Dream Inducer) disks. If anyone has any ideas, comments, or suggestions, then I'd be glad to hear them.

krypt@mountaincable.net