I've been thinking more about the use of XML for image info the last few days and I've even finished writing a custom XML parser. I'd like to present some ideas for how the data could be structured. While it's a very subjective field, my hope is that many people could give their input and contribute to this thread so that we can work towards making a nice, clean and flexible format. Databases, romsets and other stuff comes later. Once we have the format, we can take it from there. Right now I want more action and less blah blah blah.
The following layout is not neccesarily the result of deep thinking. It's just something I threw together to encourage a technical discussion.
random example:
<game name="Weird Science" system="nes.ntsc" crc="C8BAA563">
<hardware board="nes-weirdrom" mapper="1">
<prg type="rom" size="128k" crc="09234FB0"> (*) </prg>
<prg type="ram" size="8k" />
<prg type="nvram" size="8k"> (*) </chr>
<prg type="eeprom" size="512"> (*) </chr>
<chr type="rom" size="256k" crc="FE037AB1"> (*) </chr>
<chr type="ram" size="8k" />
<nmt mirroring="0101" />
<mmc>mmc1b2</mmc>
</hardware>
<peripherals>
..discuss
</peripherals>
<dipswitches>
..discuss
</dipswitches>
<something else>
..discuss
</something else>
</game>
(*) - optional reference to file
real world example using Shadowgate US version:
<game name="Shadowgate" system="nes.ntsc" crc="6A1F628A">
<hardware board="nes-tkrom" mapper="4">
<prg type="rom" size="128k" crc="591364C9" />
<prg type="nvram" size="8k" />
<chr type="rom" size="128k" crc="05414DD9" />
<nmt mirroring="ctrl" />
<mmc>mmc3b</mmc>
</hardware>
</game>
Some attribute descriptions:
<game>
crc: crc-32 of combined roms in prg+chr order
system: nes.ntsc, nes.pal, famicom, vs.unisystem, vs.dualsystem, playchoice-10, <insert clone?>
<hardware>
board: pcb/unif name (if available, make something up otherwise?)
mapper: %0..255 (controversial, discuss!)
<prg/chr/nmt>
size: % (in bytes), %k (in kibibytes)
type: rom, ram, nvram (battery-backed), eeprom
mirroring:
0000 - single-screen from PPU $2000
1111 - single-screen from PPU $2400
0101 - vertical
0011 - horizontal
0123 - four-screen (uses extra 2k RAM)
ctrl - controlled by mmc
<xxxx> - any other combination
<xxxx> instead of the commonly refered 'horizontal/vertical/four-screen' good or bad? Discuss!
Some tags and attributes could be optional and have documented default values if unspecified. Ideas for which and what settings? Discuss!