Turbosub had a ROM_COPY declaration with an expression ('ROM_COPY( "main_code", 0x18000 + 0x2000,...) and this simply did not work with the new model. This required changing ROM_* declarations to more resemble how they used to be and to perform the conversion on load.
This is a redo of the split first submitted in #137, with the following differences:
* The newly refactored rom_entry data structure is used
* I've kept the refactored softlist code in src/emu, in order to defer the mechanical process of moving it
* I've kept includes of softlist[_dev].h out of diimage.h, so that changes to either do not trigger an emu.h recompilation
* Obviously, this goes against the latest master
* Mark lots of things constexpr in attotime and turn macros into functions
* Add base classes for HLE matrix keyboard and buffered RS232 device
* Make generic keyboard/terminal more usable
* Keyboard has configurable typematic delay/rate
* Keyboard has selectable JIS/ANSI layout
* Keyboard handles simultaneous keypresses more intuitively
* Keyboard uses meta to set high bit
* Terminal has configurable auto LF on CR, auto CR on LF and local echo
* Terminal has audible bell
* Untangle Olivetti M20 keyboard from generic_keyboard
* Add notes to Olivetti M20 keyboard emulation
* Make Olivetti M20 keyboard match physical layout
* Untangle RM Nimbus keyboard from generic_keyboard
* Fix natural keyboard mode with RM Nimbus
* Untangle x68k keyboard from generic_keyboard
* Improve x68k key names and mapping
* Improve x68k typematic behaviour
* Untangle QX-10 keyboard from generic_keyboard
* Keep NGEN keyboard barely working
The keyboard should communicate at 1,200 Baud, but due to bugs in the SCC
it's set to 9,600 Baud. The sun4c machines program the Baud rate
generator dividers for the serial ports with 00:0e and the dividers for
the keyboard/mouse ports with 00:7e. Therefore the ratio of Baud rates
should be (0x7e + 2) / (0x0e + 2) = 128 / 16 = 8. However both the RS232
ports and the keyboard/mouse ports run at 9,600 Baud, when the
keyboard/mouse ports should run at 1,200 Baud (which is 1/8 of 9,600 which
matches the ratio of the divider values).
I've artificially limited the rate the keyboard can transmit at to be no
faster than it could at 1,200 Baud using a timer. I can remove this hack
once we get correct SCC divider behaviour.
I attempted to hook up the SCC interrupts to level 12 as specified in the
SPARCstation-1 Programmer's Model in the table on Page 19. No interrupts
seem to be generated, so either I've screwed this up somehow, the Sun
isn't enabling interrupts, or there's another bug in the SCC emulation.
Sorry if I've screwed it up - I won't be offended if someone replaces it
wholesale.
The keyboard receives the reset commands from the Sun and sends back the
self test pass response, but the SCC seems to get a buffer overrun error.
So it appears that the received data isn't being read out. I haven't been
able to work out why.
* .h -> .ipp for things that aren't really headers
* make more stuff in selmenu private
* move the remembered driver/software associated with the snap to the cache object
* start cleaning up constness in datfile manager - it's still a mess of non-const statics
* Split out main menu and dat box drawing from base class
* Make a bunch of class statics proper per-machine persistent objects
* Object lifecycle fixes
- Create a SG-1000 expansion slot.
- Hook up the SG-1000 expansion slot to sg1000.cpp and sms.cpp (sg1000m3).
- Split the sk1100 code from sg1000.cpp and attach it to the new expansion slot.
- Create a new FM Sound Unit device and attach it to the new expansion slot.
- For the sc3000 driver, re-add sk1100 as a fixed SG-1000 expansion device.
- Add sg1000 software list to sg1000m3 and Japanese/Korean SMS drivers.
sms.cpp: implemented some new findings [Enik Land]
- Remove some mirrors for ports $DC/$DD on SMSJ based on Charles' hw tests.
- Add basic C-Sync callback to 315_5124.cpp, based on Charles' hw tests.
- Add built-in Rapid Fire (uses C-Sync) for SMSJ and Korean SMS1 drivers.
- Add new SMS drivers due to XTAL differences:
sms1br - Tec Toy Master System I (Brazil)
sms2br - Tec Toy Master System II (Brazil)
smsbr - Tec Toy Master System III Compact (Brazil)
sms1paln - Tec Toy Master System I (PAL-N)
sms2paln - Tec Toy Master System II (PAL-N)
smspaln - Tec Toy Master System III Compact (PAL-N)
Brazil is PAL-M TV system, but I decided to call it by the
country name, seems to be better recognizable and for
emulation looks more like a NTSC system. PAL-N is used
in Argentina, Paraguay and Uruguay and looks closer to
the European PAL system when compared to PAL-M.
- Replaced shared_ptr by unique_ptr.
- Better seperation of setup_t and netlist_t.
- Fixed bugs in rdtsc code. Refactored timer code.
- Simplify conditional activation/deactivation.
- Introduced HINT(device, hint) to clarify that hints are inheritent
and not specific to devices.
- Added improved profiling support to netlist. Statistics output now
proposes devices for which whole device activation/deactivation be
disabled. No significant improvement for pong, but breakout
experiences a 10% improvement.
- Moved options code from include to cpp file.
- Minor modifications to 7493 and 9316
- Introduced perftime_t and perfcount_t for gathering statistics. These
templates do not create any code if statistics are not kept.
- Make help2man ./nltool produce usuable output.
- More truthtable refactoring. Removed half-finished code for internal
state support. As implemented, this would have had no support for
timing delays.
[Couriersud]
Three patches with code cleanups to the OSD layer [
Giuseppe Gorgoglione]
* Fix debugging code in font_dwrite.cpp
* Introduce dynamic_module
* Remove Direct3D abstraction layer
* git version is set by top-level make, not just when GENie runs
* can set IGNORE_GIT=1 for make to ignore git
* git ignored/unavailable uses "unknown" in version string
* mark modified trees as dirty
* note that version now comes from makefile
- Dead code removal and minor refactoring.
- Simplify. Align naming with stl. Fix somed pedantic warnings.
- More STL compatability.
- Remove ATTR_HOT and ATTR_COLD. Refactored netlist_time.
- Fix long standing workaround which would ignore policy of change-only"
propagation.
- Rewrote for loops to use auto : semantics.
- Truthtable cleanup. (nw)
- Get rid of nl_math. Remove nl_util.h and moved contents to
plib/putil.h.
- Fix standalone build. Refactor ptypes.h.
[Couriersud]
allow in-place creation (for increased locality) of netlist classes.
Main use is in truthtable class.
- Remove PLIB_NAMESPACE macros.
- Remove namespace macros. Use explicit namespace declarations.
- Moved device definitions into cpp files.
- Moved more device definitions into cpp files.
- New prefix "nlid" for include files flags purely internal include
files not to be leaked into userland.
- Fix factory code.
* pet_cass.xml
- Added Supermon (Toronto PET User Group) [Ken White]
- Replaced bad dump of Side B of Squiggle, Big Time / Monitor (the m command in the monitor now works correctly) [Ken White]
- Separate watchdog implementation from running_machine (once again) and driver_device
- Old-style methods, now hidden behind #ifdefs, will probably be safe to remove soon
exploit slot devices: [Fabio Priuli]
- moved cart-specific components to the carts itself removing
the fake protection devices from the main system, since they
never belonged there
- removed hacky rom region destruction/construction when a
new cart is inserted, replacing it with proper bank pointers to
the carts (except for ymsnd and ymsnd.deltat region which
will require modernization of the ym devices)
- started re-organization of bootleg boards emulation, so to
reduce the need of collapsing everything into a single cart
type with multiple protection devices, more work is needed
neopcb.cpp: moved to a separate source file the emulation for
JAMMA PCB versions of a few neogeo games, since they don't
have a cartslot. [Fabio Priuli]
neogeo.xml: added information about Japanese titles and
release dates to the software list and aligned the list to the
driver. [Fabio Priuli]
cleaning up the related code. [Fabio Priuli]
saturn.cpp: added emulation of the SegaTap adapter (4 controllers)
and Sega Multitap adapter (6 controllers). Saturn Bomberman
can now be played as intended. [Fabio Priuli]
through slot devices. If you want to launch janshin in the
multislot driver (neogeo) you shall now prescribe
-edge "" -ctrl1 mahjong
and set accordingly the dipswitch. The janshin driver already
comes pre-configured in the proper way, instead. [Fabio Priuli]
Some systems like Debian, Ubuntu and other derivatives, expect qtchooser
will be used to select the appropriate Qt version, as Qt5 and Qt4 can
co-exist.
As MAME's build system does calls to moc and qmake directly, and Qt5 is
now the required version for the debugger, pass -qt5 to all moc and qmake
calls to avoid the build fail.
you can now configure the controllers available in the multicart
driver (neogeo) with the -crtl1 and -ctrl2 options. when you run single
game drivers (e.g. mslug, or kof94, etc.), instead, a unique controller
is available and cannot be modified. [Fabio Priuli]
intvecs: Converted hand controllers, keyboard and synth to be slot devices,
by using a temporary hack to workaround the impossibility to plug the same
device into 2 different slots as these keyboard require. [Fabio Priuli]
out of whatsnew: in the long term we need to come up with a core solution
for these devices that occupy multiple slot devices at once (another one is
the VCS Compumate which plugs into both VCS control ports), because the
hack I used (a "fake" control port which acts as a passthru for the two real
control ports) is not really satisfactory. However, current solution is better
than the selectable controllers we had, which were (ab)using
PORT_CONDITIONs...
- removed inclusion of SDL headers in all headers.
- replaced those by forward declarations and in one case by a wrapper
class (for a typedef struct).
- added -Wno-strict-prototypes to 7z build (gmake target)
It's damn slow, ~50ms/frame on cdkong. Caching and/or hw accel will
solve that easily. It doesn't look very good, nanosvg need better
anti-aliasing. It also doesn't do texturing very well and images not
at all, so some of our current svgs won't look good. But all that's
fixable.
Extend USE_SYSTEM_LIB_* to support providing the library name and include directory.
To link against system specific lib names and header path: (ref #711)
USE_SYSTEM_LIB_LUA=lua5.3:/usr/include/lua5.3
- rename netlist_analog_t to analog_t
- straighten object model
- reduce access to member variables
- use pvector<analog_net_t::list_t> for groups.
- simple coverity fixes.