Protected inheritance is a very dangerous game considering how MAME loves dynamic casts, and debug builds even more so.
This reverts 0a5fed2ece in part.
- Centralize emulation of several common features
- Add logging for interrupts and base timer
- Fix error in debug state registration of IREQ and IENA
- Correct base timer interrupt vector for ST2205U
* New prototypes:
gamegear:
Sonic the Hedgehog Chaos (Euro, Prototype 19930517) [Hidden Palace]
sms:
Sonic the Hedgehog Chaos (Euro, "Ver 0.20", Prototype 19930630) [Hidden Palace]
Sonic the Hedgehog Chaos (Euro, Prototype 19930713) [Hidden Palace]
These prototypes are believed to have been solely burned for Sega Europe/UK, and thus are all labeled "Euro".
* Mark sms/sonicc630 as not working, as it somehow crashes after the title screen.
renamed sonicc in gamegear.xml from "Sonic Chaos" to "Sonic the Hedgehog Chaos" to maintain consistency (box art for Game Gear release packaging says "Sonic the Hedgehog Chaos" too) as well, while correcting a capitalization error for actionfg0.
* documentation
* (Hopefully) requested changes.
* More updated info
I forgot MAME has the Voodoo device recalculate the screen size and timing so I removed all the "EGA" stuff.
I can confirm Midway Graphite uses a different motherboard verified on the first boot screen. The BIOS ID on that game redirects to a BMC GT694VP motherboard using a VIA Pro133A chipset. I edited the machine configs to use the "correct" CPU type and clock speeds but Midway Graphite may be its own separate driver due to the different chipset hardware.
* mm5740 X pins are numbered starting from 1, also fix typo in pinout comment (Y10, not Y0)
* make more members protected/private as appropriate
* got rid of one more video start override in a clean way
- Get rid of the hardcoded FLOPPY_n tags as much as practical, mostly adding device finder arrays in their place
- Move remaining functions using FLOPPY_n down into appldriv and sonydriv (both of which may be eliminated once FDC emulation is modernized)
- Replace CLEAR_LINE and ASSERT_LINE with 0 and 1 (these were being inaccurately used to represent active-low control line states)
- more const
- explicitly raise exceptions instead of leaving this to log.fatal()
- correct a number of cppcheck findings.
- dead code removal
- clang lint corrections, e.g. include order
* elan eu3a05 / eu3a14 - identify some common bits (nw)
* some elan refactoring baed on current knowledge / standards (nw)
* elan refactoring (nw)
* elan splitting / refactoring (nw)
* validate (nw)
* note used areas (nw)
* register observations (nw)
* another observation (nw)
* add the sprite double feature (nw)
* rendering tweaks (nw)
* rendering improvements for air blaster 3d stages (nw)
* refactoring (nw)
This fixes a case where:
* m_soundbuf_samples == processedsamples
* processedsamples > 0
* processedsamples * stream->channels() == m_soundbuf.size()
In this scenario, the std::memmove() would do nothing (moving zero
bytes), but the operator[] on the second parameter to std::memmove()
overflows the array. This can be benign in optimized builds (because
the third parameter to std::memmove() is 0), but on debugging builds
this can cause an assert.