Previous Thread
Next Thread
Print Thread
Page 2 of 5 1 2 3 4 5
Joined: Jun 2017
Posts: 50
Member
OP Offline
Member
Joined: Jun 2017
Posts: 50
What, you didn't see the sign?:
[Linked Image from c1.neweggimages.com]
laugh crazy laugh

Last edited by MusicLovr; 12/28/19 09:58 PM.
Joined: Feb 2004
Posts: 2,242
Likes: 6
Very Senior Member
Online Content
Very Senior Member
Joined: Feb 2004
Posts: 2,242
Likes: 6
I added exactly one attribute to the -listxml output that's necessary for a front-end to properly deal with slot cards that enable software lists (e.g. Acorn "tube" devices, Spectrum DOS expansions, WafaDrive, etc.), and provided a reference implementation for showing available software lists for a given slot configuration, and discovering a suitable configuration to run a given piece of software. It's very rare that I change the -listxml at all, and I try to avoid changing existing parts because it can break front-ends. Unfortunately qmc2 seems to be upset by the unrecognised attribute I added.

If you want to keep using qmc2, you need to update or keep using an old version of MAME with it. If you don't update it, you'll still be missing out on support for software lists enabled by slot cards. Prior to 0.217, MAME was not providing the necessary information, and using it effectively will require UI work.

Joined: Jun 2017
Posts: 50
Member
OP Offline
Member
Joined: Jun 2017
Posts: 50
I'm sure you strive not to break the front ends. And I understand this is sometimes impossible.

We should be grateful that that QMC2 worked so well, for 21 months, without support.

Thank you for the infos. And as always, respect for the mamedev team!

Last edited by MusicLovr; 12/29/19 04:59 PM.
Joined: Feb 2007
Posts: 507
C
Senior Member
Offline
Senior Member
C
Joined: Feb 2007
Posts: 507
The problem was introduced by a commit by AJR. In infoxml.cpp on line 1954 tag is output before name for the software list entry:

Code
out << util::string_format("\t\t<softwarelist tag=\"%s\" name=\"%s\" status=\"%s\"", normalize_string(newtag.c_str()), normalize_string(swlist.list_name().c_str()), swlist.is_original() ? "original" : "compatible");

This order is also not consistent with the DTD:

Code
                <!ELEMENT softwarelist EMPTY>
                        <!ATTLIST softwarelist name CDATA #REQUIRED>
                        <!ATTLIST softwarelist tag CDATA #REQUIRED>
                        <!ATTLIST softwarelist status (original|compatible) #REQUIRED>
                        <!ATTLIST softwarelist filter CDATA #IMPLIED>

qmc2 relies on name being the first attribute after softwarelist.

Exchanging the order fixes the issue. I will commit the fix shortly.

Joined: Mar 2001
Posts: 16,739
Likes: 28
R
Very Senior Member
Online Content
Very Senior Member
R
Joined: Mar 2001
Posts: 16,739
Likes: 28
That's great, couriersud!

Joined: Jun 2017
Posts: 50
Member
OP Offline
Member
Joined: Jun 2017
Posts: 50
Yes, fantastic! A HUGE thanks!

(and apologies to Vas Crabb confused)

Last edited by MusicLovr; 12/30/19 05:36 PM.
Joined: Feb 2004
Posts: 2,242
Likes: 6
Very Senior Member
Online Content
Very Senior Member
Joined: Feb 2004
Posts: 2,242
Likes: 6
That's absurd - attributes are order-insensitive. Any compliant DTD validator (e.g. xmllint) accepts the XML as-is. If you're going to change it though, flip the order in the DTD around. The tag is the identifier.

Joined: Feb 2007
Posts: 507
C
Senior Member
Offline
Senior Member
C
Joined: Feb 2007
Posts: 507
Vas, academically your are right. Your recent commit is academically right. Everything is right now. Understood.
Unfortunately your latest commit again kills QMC2 software lists again.

Rene can't fix it. I don't have access to the sourceforge repository. I don't have time for such academic topics as well.

Please, you have access to the QMC2 repository. Please fix it if for academic purposes you break it again.

Joined: Mar 2001
Posts: 16,739
Likes: 28
R
Very Senior Member
Online Content
Very Senior Member
R
Joined: Mar 2001
Posts: 16,739
Likes: 28
Originally Posted by Vas Crabb
That's absurd - attributes are order-insensitive. Any compliant DTD validator (e.g. xmllint) accepts the XML as-is. If you're going to change it though, flip the order in the DTD around. The tag is the identifier.


There is also no harm done or technical debt incurred to MAME or the XML standard to output things in the order QMC2 expects.

Joined: Feb 2004
Posts: 2,242
Likes: 6
Very Senior Member
Online Content
Very Senior Member
Joined: Feb 2004
Posts: 2,242
Likes: 6
Fuck me, this code is terrible. It isn't even an XML parser, it’s doing string matching for specific tags. It's so fragile it’s ridiculous.

Page 2 of 5 1 2 3 4 5

Moderated by  qmc2 

Link Copied to Clipboard
Who's Online Now
2 members (gspat, robcfg), 38 guests, and 3 robots.
Key: Admin, Global Mod, Mod
ShoutChat
Comment Guidelines: Do post respectful and insightful comments. Don't flame, hate, spam.
Forum Statistics
Forums9
Topics8,933
Posts117,404
Members4,994
Most Online890
Jan 17th, 2020
Forum Host
These forums are hosted by www.retrogamesformac.com
Forum hosted by www.retrogamesformac.com