The free-for-all on labels in software lists is not working. There's no
consistency, labels are getting excessively long, people are starting to
use non-ASCII characters in labels making it harder for others to type
them when manipulating files on the command line, and there's too much
markup being put in labels.
The length limit is 127 characters, same as for labels in MAME itself.
This should be long enough to be descriptive. Remember that the Win32
path limit is 260 characters, and many applications and frameworks have
issues with longer paths, including Windows Explorer and the .NET
framework. Labels are used as filenames, so concessions need to be
made for this.
I have not abbreviated excessively long labels myself - they're
currently causing 135 validity errors. Someone else can fix them.
Printable ASCII characters are allowed, with a few exceptions. The
exceptions are limited to characters most likely to cause issues for
interactive shells and scripts:
* ! - csh event substitution (very difficult to escape properly)
* $ - sh varibale expansion
* % - csh job control, cmd variable expansion
* / - UNIX directory separator
* : - sh path separator, Windows drive qualifier
* \ - sh escape, Windows directory separator
Most of the labels that had to be edited were using ! for markup, or
using ! and % for titles in labels. Strangely, titles in labels are
often forced to lower case, despite this never being enforced for
software lists. There are also various other edits to titles used for
labels, such as moving articles to the end (with or without a comma),
or replacing spaces with underscores. As I already said, there's no
consistency at all.
There is far too much markup in labels. They're even being used for
notes in some cases (e.g. at least one case where a dumper's name is in
the label). The XML schema supports metadata - use it. For example,
you can use part_id for an unrestricted display name for a software
part. You can also use XML comments for notes.
And while on the topic of metadata, vgmplay.xml is putting the same
thing in the part_id as well as the label. The part_id should have
the actual title, not the title mangled to make it more suitable for
use as a filename. Addressing this would be a lot of work, given how
large the file is.
For now, empty data areas in software lists cause a verbose message
rather than a validation warning. There are thousands of software
lists using empty data areas to indicate the size/width of cartridge
RAM/EEPROM/etc.
----
Alligator Hunt (protected, prototype?) [jordigahan, Heckler]
sadly requires different data from the ds5002fp (which even if we faked isn't guaranteed to match the level layouts this had)
Improved new wofpic set, playable now, still some minor gfx issues (not using values from main ram this time!)
Redump bad wofpic,wofabl gfx rom
Load wofpic,wofabl gfx roms properly instead of rearranging in init
Make some of the bootlegs not use the brightness values as some don't have the h/w for it on the real pcbs (the 74ls07's and resistor arrays/dacs are unpopulated)
------------------
Space Invaders Part II (Taito, smaller ROMs) [PokeMAME]
(nw) credited to PokeMAME who sent the most recent dump, but this could be credited to all the people who already dumped this in the past, i.e. Andrew Welburn
romload.cpp: reduce copy-pasta (nw)
(nw) I fixed the errors found by adding validation to software list data areas.
Most of them seem to be simple copy-paste errors hidden by the fact that the
default device_image_interface loader ignores the data area size (as opposed to
the "ROM" loader). There was one C64 cartridge with a missing zero on the data
area size that was pretty clearly wrong.
* More flexible constructors for path_iterator and emu_file
* More straightforward system/device ROM loading and software loading when using ROM loader
* Proper parent walk when searching for identical CHDs with different names from software list
* Fixed hangs if software item parents form a loop
* Fixed layouts being loaded from bogus empty paths
Note that there are changes in behaviour:
* For software list ROMs/disks, MAME will now search the software path before searching the machine path
* The search path for the owner of the software list device is used, which may not be the driver itself
* MAME will no longer load loose CHDs from the media path - it's just too unwieldy with the number of supported systems
* MAME will no longer search archives above the top level of the media path
- New dumps (all working, dumped by me):
Ai Shimai - Futari no Kajitsu
Doukyuusei 2 Special Disk
Super Ultra Mucchin Puripuri Cyborg Maririn DX
Music Pro-Towns (1990-05-23)
Shangrlia 2 Special Disk
S. A. 2
- Promoted Music Pro-Towns to working and added usage instructions.
- Replaced MS-DOS 6.20 L10 with the images from the Master CD, which should match the original disks. The previous images were the "installed" floppies that can be created from the original ones.
* powerins.cpp: Reduce duplicates related to nmk16.cpp, Move subclass into nmk16.h (Similar hardware design)
Add notes, Simplify handlers, Use screen raw params for bootlegs
nmk16.cpp: Use timer for sprite DMA behavior, Reduce duplicates, Fix sabotenb sprite delay, Add notes
* powerins.cpp: Fix state
* replace jak_hmhsm with good dump [Sean Riddle]
* don't use the sprite page select on older elan type (fixes rad_sinv without breaking carlecfg) (nw)
* Ultimoton Fitness was misidentified, actually Ultimotion - Disney Fairies Sleeping Beauty & TinkerBell, also redump it (nw)
uPD765 may not care much about the timing of this signal, but other devices (notably NCR5380) expect it to occur simultaneously with the read/write strobe.
This *might* break drivers/devices that expect EOP to be continuously active as it was previously emulated, rather than pulsed. Those likely need to latch the edge of EOP or one of the ACK signals.
debug/express.cpp, debugcpu.cpp: General cleanup (nw)
- Change default base from hardcoded macro to dynamic parameter for parsed_expression
- Change symbol table parameters and variables to references or std::reference_wrapper
- Remove the (unused) ability to construct a parsed_expression without a symbol table
- Eliminate symbol_table &table and void *memory_param arguments from callbacks (superfluous now that std::function can bind everything necessary)
- Eliminate globalref pointer from symbol_table
- Add explicitly defaulted move constructor and move assignment operator