Take note that I eliminated make_readonly(); here is why I think the calls were unnecessary:
1. All image loads through softlists are done through common_process_file(), and thus going to be readonly anyways
2. The cassette.cpp call to make_readonly() seems to be a residual hack, if a failure occurs the image will be unloaded anyways
- Create class ui::machine_info for holding calculated machine info and generating descriptive strings for the UI. This absorbs a number of unimportant core functions that existed only for the UI's convenience.
- Ticket dispenser now works for real, dispensing on command rather than like crazy
- Correct "Payout Mode" DIP settings
- Correct DSW1 settings in Pyon Pyon Jump
- Rename coin inputs and coin-related DIP switches and reorder them by increasing denomination
- Remove bogus "Unknown" inputs that aren't actually used
- Full character names only for Kuru Kuru Pyon Pyon (except in bookkeeping mode)
- Reset button now mapped as "Memory Reset" (though it also resets the program)
- Random notes based on program code
Seems on real hardware the high address line for FE-FF rom is swapped so we need to do this manually as we load the rom. Confirmation that the current rom image is correct via several sources dating back to at least 2012.
- Alter a bunch of address maps so all validity checks pass. These includes global address masks in Hexaa and the Newbrain FDC (regression testing should be done here).
- Remove the Lisa wraparound read/write handlers.
There was little to no advantage in calling the various subdevice
bs, f1 and f2 early/late functions through function pointers.
The original idea was to make this configurable, which it isn't.
The hardware, or schematics, define the functions and they are
(almost entirely) static anyway.
By removing the function pointers and inlining the appropriate calls
into switch/case statements there's a speed improvement of ~ 2.5x here,
seen while the diablo bitclk is not running.
On pull request #1200, MASH identfied a regression caused by recent changes to rom_entry handling. That said, I disagreed with his proposed fix because the code did a backwards scan for ROMENTRY_ISEND. I don't think this is correct; ROMENTRY_ISEND should only work for forward scans, and it probably worked by accident simply because rom_entry structures were likely allocated back to back.
As far as I can tell, my proposed change seems to work but I'm somewhat fuzzy on the interactions between BIOS ROMs and devices, and it is possible that I'm neglecting a use case.
- In machines that store their settings and/or bookkeeping logs in some form of non-volatile memory, "Memory Reset" will reset them to some system-provided default.
- This replaces all existing inputs named "Memory Reset" and a few simply named "Reset" which are known to do this rather than reboot the system (a confusion to be avoided, though many systems will only acknowledge this input at boot time); others should be checked.
- The default key binding (F1) for this new input type is chosen partly to avoid conflicts with those used by gambling/mahjong games which are currently the only systems to use this, though broader use is envisioned.