Previous semantics were encouraged by sol2, and ThePhD admitted it was a bad idea for usertypes with lots of members. sol3 allows to assign members outside a constructor for regular usertypes, but mame can't move to sol3 because it requires C++17. Turns out sol2 also has a way to add members separately, and that is what I used. This helps immensely.
This approach required a fix to warning C5046 copied from here 5799084572
Tested current mame plugins, everything seems to work.
PS: Due to come black magic, if I use simple_usertype::set() with "manager" as well, "machine" member dies (others are fine!), so I had to leave it intact.
I haven't tested the hh_sm510.cpp changes very well yet - I'll give it
another review soon, and test it some more before the end of the month.
I'm not sure about whether any of the B or BA handlers should be in the
base config methods for G&W. I've left them there for some
configurations that always have them, but I might rip them out of the
common methods altogether. It's not like Tiger where all the games use
them.
sid.cpp : Reduce duplicates, Add postload function
sidvoice.cpp : Fix type value when DIRECT_FIXPOINT defined
sidenvel.cpp, sidvoice.cpp, sid.cpp : Fix spacings
* tms34020: Fix out of bounds read, when extra logging is enabled
* tms34020: Annotate unimplemented clip opcode
* tms34020: Implement CLIP instruction
* fmtowns: bring machine configurations a bit closer to real hardware
- Separated the SCSI controller from the base machine configuration and
turned it into an optional device, since the first-generation models and
the Marty don't have one.
- Changed the CPU of the FM Towns II SJ to a 66 MHz 486DX2 instead of a
Pentium.
- Added comments describing the RAM expansion possibilities in each
model, and modified the user-selectable options accordingly.
- Added a separate machine configuration for the FM Towns II MX, since
it has a different CPU and more RAM options than the HR.
- Corrected memory maps for the 386SX-based models so the VRAM is
accessible at 0xb00000 in packed format. Fixes several instances of
graphics being garbled on the UX and Marty.
- Configured the Marty with just one floppy drive and 2 MB of RAM.
- Added a couple of sanity checks to prevent MAME from crashing when
selecting 1 MB of RAM or a single floppy drive. This makes it possible
to emulate something reasonably close to the functionality of an
original FM Towns Model 1, though the real Model 1/2 ROMs still need to
be dumped.
* accidentally broke floppy change detection (nw)
* move SCSI-related member functions to protected (nw)
* tabs (nw)
* gamate: fix power up RAM contents
According to reports in the cc65 project, it appears that the RAM contains
0xFFs at power up. See https://github.com/cc65/cc65/issues/941.
Adapt the driver to account for this.
* gamate.c: don't use magical number for memory size
* upd765, next, sun3x: fix FDC mode being treated as clock frequency (MCFG removal gone wrong)
* h01x: translate some comments from Chinese to English
* snes/sfx: trampoline constructors should be private