New working software list additions
-----------------------------------
3D Dracman [Steven Brown, Planeta Sinclair]
4 Logiciels pour ZX Spectrum [Steven Brown, Planeta Sinclair]
A Harvesting Moon (two sides) [Steven Brown, Planeta Sinclair]
Battle on Hoth (alt) [Steven Brown, Planeta Sinclair]
Bell Ropes [Steven Brown, Planeta Sinclair]
Brave Knight [spectrumcomputing.co.uk]
Cobra (Erbe, medium case) [spectrumcomputing.co.uk]
Cobra (Erbe, small case) [spectrumcomputing.co.uk]
Cobra (IBSA) [spectrumcomputing.co.uk]
Dragon's Lair II: Escape from Singe's Castle (Erbe) [spectrumcomputing.co.uk]
La Quête du Chevalier [Miguel Sobreira, Planeta Sinclair]
Popeye (Zafi Chip) [spectrumcomputing.co.uk]
Raid Over Moscow (set 6, Dro Soft) [spectrumcomputing.co.uk]
Rygar (Erbe, promotional) [spectrumcomputing.co.uk]
Super Cycle (Compulogical) [spectrumcomputing.co.uk]
The 11th Hour (The Guild) [spectrumcomputing.co.uk]
Redumped
--------
Cobra (bugfix) [spectrumcomputing.co.uk]
Hammerfist [spectrumcomputing.co.uk]
Popeye (Macmillan) [spectrumcomputing.co.uk]
Red Heat (Erbe) [spectrumcomputing.co.uk]
Robin of Sherlock (Zenobi) [spectrumcomputing.co.uk]
Satan [spectrumcomputing.co.uk]
----------------------------------
Flying Fortress [TTL] [Seth Soffer, Andrew Welburn]
New working clones
------------------
Galaxian (Artic System bootleg) [chaneman]
New working software list additions (nes.xml)
-----------------------------------
1500 in 1 [MLX]
Golden Game: 210 in 1 [kmg]
Software list items promoted to working (nes.xml)
---------------------------------------
Golden Game: 150 in 1 [kmg]
Golden Game: 260 in 1 [kmg]
- bottom9.cpp: finders and other minor cleanups
- pc8001.cpp: initialized a variable which was causing problems in regression testing and actually save some states
- seta.cpp: used correct ROM for daiohp2, fixes various GFX glitches
----------------------------------
Horses 4 Courses (NSW, Australia) [Brock.M]
Long Hu Tebie Ban (V101CN) [IGSPGM.COM]
The Quest (NSW, Australia) [Brock.M]
New working clones
------------------
Hard Drivin' (compact, rev 2 bootleg) [Andrew Welburn]
--------------------
Le Super Pendu (V1, words set #1) [Roberto Fresca, Grull Osgo, Jeff Hamelin]
Le Super Pendu (V1, words set #2) [Roberto Fresca, Grull Osgo, Jeff Hamelin]
This is not an actual user facing bug right now, because in the MAME UI the call to init_fs() is followed up by a call to setup_write(), which forces the image to commit without regard to the dirty bit. There is an argument that this is itself code smell; setup_write() perhaps should be set_output_format() and not arbitrarily perform a commit.
This will hopefully work around the very unhelpful uninitialised
variable warning that seems to be triggered by using Sol's get function
with std::optional<T> or sol::optional<T> on Linux.
* nes: Various minor fixes, more cleanups with bit functions.
bus/nes/benshieng.cpp: Streamline banking; no need to store variables in this device.
bus/nes/hes.cpp: Only support multicarts. Related singleton carts reassigned to relevant board types.
bus/nes_ctrl/hori.cpp: Amend some minutiae involving strobing and excessive controller reading.
hash/nes.xml: Removed a few more baddump flags.
* nes.xml: Replaced underdumped graphics ROM for Hanafuda Yuukyouden.
- Removed underdumped Soap Panic set.
- Replaced bad graphics ROM for Pokemon Silver hack.
- Trimmed overdumped PRG ROM to 4K.
- Removed nonexistent CHR ROM, replaced with emulation of on-board logic.
- Removed hack from NES slot code that directly set the CPU program counter.
- Corrected reset behavior.
This is problematic in several ways:
* Initialising things at construction that aren't needed until after
start slows down -romident, -validate, -listxml, etc. Slot cards can
be a particular drain on -listxml and -validate as they're
instantiated for every compatible slot. It's more pronounced for
array members, too.
* Splitting member initialisation between declaration in headers and
constructors in source files means you have to look at two places to
check for the initial value, and you always need to check the
constructor even if an initialiser is present in the header because
the constructor initaliser list takes precedence. (This isn't as much
of an issue for driver classes because the constructor is most often
inlined at declaration, so it isn't far from the member declarations.)
* Initialisers in headers for frequently-used devices increases the
frequency of recompiling dependent devices/drivers as they're exposed
to any changes in initialisers.
* Initialisers in frequently-used headers increase build times because
there's more for the compiler to parse/cache. (This affects
makedep.py as well for single-driver builds, but that's a single
pass.) It's not a lot individually, but it adds up given the size of
MAME, which keeps increasing. We've already had one contributor
banned from GitHub actions for resource usage, we don't want to waste
compiler time unnecessarily.