- Fix a bug which effectively treated AM_MIRROR as AM_SELECT when applied to a single-address range mirrored into a contiguous block. The automatic expansion of zero address masks now only applies to those stemming from (default) configuration, not from optimization. (This allows the assertion in latch8_device to be reinstated.)
- Fix a bug where AM_SELECT applied to narrow-width handlers with a submaximal number of subunits would select the wrong address bits or none at all. (This allows rpunch_gga_w to be WRITE8 as intended.)
- Add more stringent appropriateness checking of unit masks for narrow-width handlers.
- Eliminate the AM_LATCH8_XXX address map macros. The normal DEVREAD/DEVWRITE ought to be good enough.
- Eliminate the "offset" specifications from latch8_device. This was used mostly to funnel outputs to discrete_device, which now has a templated write_line handler. (Inputs can use MCFG_DEVCB_RSHIFT instead.)
- Organize latch8_device's callbacks as arrays of devcb_readline/devcb_writeline, helping simplifying code greatly.
- Change latch8_device::bit[0-7]_(q_)?r to be proper line read handlers. This requires two extra READ8 handlers in audio/dkong.cpp, but memory-mapping for the MCS-48 T0 and T1 lines is totally artificial anyway.
- Comment out an assert that now tends to fail due to buggy AM_MIRROR behavior.
Fixes problem in the debugger and the cheat engine as currently the writes to opcode memory are not handled correctly, so separated EXPSPACE_RAMWRITE and EXPSPACE_OPCODE case statements to allow opcode writes to access the correct memory.
Example:
In flicky this will now disable cat collisions with the main sprite:
maincpu.ob@3ac6=c3
-----------------------------------
archimedes: over 20 games and applications
bbcb_flop: Disk User coverdisks, Bad Apple and X-Pansions Elevation demos
bbcm_flop: Enjoy The Silence and Retribution X demos
* VGA card now saves vga.dac to the state, as the MAME palette is clobbered periodically with data from here. Changed the type of vga.dac.colour to a flat uint8_t array seeing as save_item isn't struct-friendly. Fixes Liero.
* Saved more VGA flags, including vga.miscellaneous_output, which despite the vague name is needed for reading from the ports.
* Fixed an enum range check miss.
* Saved more i386 flags required for 32-bit save states. Fixes Jump 'n Bump.