SabreTools v1.0.4
Another month, another release of SabreTools. I'm not sure I like this pattern, but here we are. This past release cycle was frontloaded with getting the last of the ListXML items promoted and then ended up with a whole bunch of bugfixes in the latter half. With only as much ado as is required by law, let's get on it:
Notable Changes:
- DatItem Promotions - As of this release, all of the different items in a ListXML DatFile (such as
driver,control, andsound) are fully independent of the machine they're in. This means that each of them have filters that can apply across the board and can affect the output to relevant DatFile types. Please take a look at the wiki for the entirely overhauled set of filters that came along with this. - Rom-ificiation - Now this doesn't really affect much outside of the inner workings, but it's worth calling out here. Previously, a lot of fields such as
loadflagwere included as settable on every single DatItem. Turns out, that was wrong. So a lot of these fields that are actually unique to the Rom DatItem type are now only on Rom. It's minor, but has an impact on filtering so it's cool to call out. - Machine-Level Filters - This is an exciting change that hinged on the first item above to complete. The TL;DR of this one is that if a single item in a machine is filtered out, the entire machine can be marked as filtered out. This allows users to take advantage of, say, filtering out games that have more than 4 players (on DatFile types that support it (like ListXML)). Fun and exciting stuff that also ended up getting its own addition in
batchas well. Check it out. - Sabre... XML?? - This is another one that took me by surprise about how fun it was. Remember when I added the "serialize-it-all" JSON output? Yeah, I did that with XML as well. The completely underused (and admittedly neglected by me as well) format of SabreDAT is now SabreXML. SabreXML is the XML serialized equivalent and will contain everything you throw at it. It's super fun but really weird to look at. With this, JSON is now SabreJSON. Because I might like naming stuff after myself.
- Librarian - Thanks to some prompting (thanks claunia), I started a bit more work on getting the SabreTools.Library project to behave more like a library. A couple of things such as allowing throws on exceptions were added on top of the work already done to support
batch. This might help future library users more than the current application frontend, but still neat. - DFD/D2D improvements - Thanks to a combination of me breaking things massively while cleaning up large chunks of code and the input from a few trusted testers (looking at you: hardrider, edc, and Obi), DFD got a massive improvement to speed and accuracy. Yes, accuracy. I can't tell if I broke it during this last cycle or prior, but certain situations ended up with incorrect DatFiles on the other side. These have been fixed as of this release. If you ran any DFDs in the prior release or using one of the WIP builds, you should probably run them again.
As always, there's a bunch of cleanup work that went into this, including removing large chunks of redundant code, fixing the issues that arose from de-redundanting the code, etc. Take a look at the list of commits since the last release for more details. Thank you to everyone who contributed their time into helping make this an oddly enjoyable project to work on. Your feedback has been immensely valuable. Special thanks to Pucci, Claunia, hardrider, edc, and Obiwantje for their assistance in testing this time around.