2023-08-01 00:07:36 -04:00
|
|
|
|
// TODO: Use softwarelist.dtd and *try* to make this write more correctly
|
2020-12-09 22:11:35 -08:00
|
|
|
|
namespace SabreTools.DatFiles.Formats
|
2017-10-09 18:04:49 -07:00
|
|
|
|
{
|
2019-01-11 13:43:15 -08:00
|
|
|
|
/// <summary>
|
2020-09-03 10:03:04 -07:00
|
|
|
|
/// Represents parsing and writing of a SoftwareList
|
2019-01-11 13:43:15 -08:00
|
|
|
|
/// </summary>
|
2022-11-03 12:35:50 -07:00
|
|
|
|
/// <remarks>
|
|
|
|
|
|
/// TODO: Check and enforce required fields in output
|
|
|
|
|
|
/// </remarks>
|
2023-08-01 00:07:36 -04:00
|
|
|
|
internal partial class SoftwareList : DatFile
|
2019-01-11 13:43:15 -08:00
|
|
|
|
{
|
2020-12-09 14:33:47 -08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// DTD for original MAME Software List DATs
|
|
|
|
|
|
/// </summary>
|
2022-11-03 17:02:38 -07:00
|
|
|
|
/// <remarks>
|
|
|
|
|
|
/// TODO: See if there's an updated DTD and then check for required fields
|
|
|
|
|
|
/// </remarks>
|
2022-11-03 17:04:31 -07:00
|
|
|
|
private const string SoftwareListDTD = @"<!ELEMENT softwarelist (notes?, software+)>
|
|
|
|
|
|
<!ATTLIST softwarelist name CDATA #REQUIRED>
|
|
|
|
|
|
<!ATTLIST softwarelist description CDATA #IMPLIED>
|
|
|
|
|
|
<!ELEMENT notes (#PCDATA)>
|
|
|
|
|
|
<!ELEMENT software (description, year, publisher, notes?, info*, sharedfeat*, part*)>
|
|
|
|
|
|
<!ATTLIST software name CDATA #REQUIRED>
|
|
|
|
|
|
<!ATTLIST software cloneof CDATA #IMPLIED>
|
|
|
|
|
|
<!ATTLIST software supported (yes|partial|no) ""yes"">
|
|
|
|
|
|
<!ELEMENT description (#PCDATA)>
|
|
|
|
|
|
<!ELEMENT year (#PCDATA)>
|
|
|
|
|
|
<!ELEMENT publisher (#PCDATA)>
|
|
|
|
|
|
<!ELEMENT info EMPTY>
|
|
|
|
|
|
<!ATTLIST info name CDATA #REQUIRED>
|
|
|
|
|
|
<!ATTLIST info value CDATA #IMPLIED>
|
|
|
|
|
|
<!ELEMENT sharedfeat EMPTY>
|
|
|
|
|
|
<!ATTLIST sharedfeat name CDATA #REQUIRED>
|
|
|
|
|
|
<!ATTLIST sharedfeat value CDATA #IMPLIED>
|
|
|
|
|
|
<!ELEMENT part (feature*, dataarea*, diskarea*, dipswitch*)>
|
|
|
|
|
|
<!ATTLIST part name CDATA #REQUIRED>
|
|
|
|
|
|
<!ATTLIST part interface CDATA #REQUIRED>
|
|
|
|
|
|
<!-- feature is used to store things like pcb-type, mapper type, etc. Specific values depend on the system. -->
|
|
|
|
|
|
<!ELEMENT feature EMPTY>
|
|
|
|
|
|
<!ATTLIST feature name CDATA #REQUIRED>
|
|
|
|
|
|
<!ATTLIST feature value CDATA #IMPLIED>
|
|
|
|
|
|
<!ELEMENT dataarea (rom*)>
|
|
|
|
|
|
<!ATTLIST dataarea name CDATA #REQUIRED>
|
|
|
|
|
|
<!ATTLIST dataarea size CDATA #REQUIRED>
|
|
|
|
|
|
<!ATTLIST dataarea width (8|16|32|64) ""8"">
|
|
|
|
|
|
<!ATTLIST dataarea endianness (big|little) ""little"">
|
|
|
|
|
|
<!ELEMENT rom EMPTY>
|
|
|
|
|
|
<!ATTLIST rom name CDATA #IMPLIED>
|
|
|
|
|
|
<!ATTLIST rom size CDATA #IMPLIED>
|
|
|
|
|
|
<!ATTLIST rom crc CDATA #IMPLIED>
|
|
|
|
|
|
<!ATTLIST rom sha1 CDATA #IMPLIED>
|
|
|
|
|
|
<!ATTLIST rom offset CDATA #IMPLIED>
|
|
|
|
|
|
<!ATTLIST rom value CDATA #IMPLIED>
|
|
|
|
|
|
<!ATTLIST rom status (baddump|nodump|good) ""good"">
|
|
|
|
|
|
<!ATTLIST rom loadflag (load16_byte|load16_word|load16_word_swap|load32_byte|load32_word|load32_word_swap|load32_dword|load64_word|load64_word_swap|reload|fill|continue|reload_plain|ignore) #IMPLIED>
|
|
|
|
|
|
<!ELEMENT diskarea (disk*)>
|
|
|
|
|
|
<!ATTLIST diskarea name CDATA #REQUIRED>
|
|
|
|
|
|
<!ELEMENT disk EMPTY>
|
|
|
|
|
|
<!ATTLIST disk name CDATA #REQUIRED>
|
|
|
|
|
|
<!ATTLIST disk sha1 CDATA #IMPLIED>
|
|
|
|
|
|
<!ATTLIST disk status (baddump|nodump|good) ""good"">
|
|
|
|
|
|
<!ATTLIST disk writeable (yes|no) ""no"">
|
|
|
|
|
|
<!ELEMENT dipswitch (dipvalue*)>
|
|
|
|
|
|
<!ATTLIST dipswitch name CDATA #REQUIRED>
|
|
|
|
|
|
<!ATTLIST dipswitch tag CDATA #REQUIRED>
|
|
|
|
|
|
<!ATTLIST dipswitch mask CDATA #REQUIRED>
|
|
|
|
|
|
<!ELEMENT dipvalue EMPTY>
|
|
|
|
|
|
<!ATTLIST dipvalue name CDATA #REQUIRED>
|
|
|
|
|
|
<!ATTLIST dipvalue value CDATA #REQUIRED>
|
|
|
|
|
|
<!ATTLIST dipvalue default (yes|no) ""no"">
|
2020-12-09 14:33:47 -08:00
|
|
|
|
";
|
|
|
|
|
|
|
2019-01-11 13:43:15 -08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Constructor designed for casting a base DatFile
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="datFile">Parent DatFile to copy from</param>
|
2023-08-10 23:22:14 -04:00
|
|
|
|
public SoftwareList(DatFile? datFile)
|
2020-07-15 09:41:59 -07:00
|
|
|
|
: base(datFile)
|
2019-01-11 13:43:15 -08:00
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2017-10-09 18:04:49 -07:00
|
|
|
|
}
|