* allows more games to light all their lamps
* fixed(?) large extender hookup so that all lamps light, eg. m4andybt
* gave m4andybt better inputs (is mostly playable now, but some 7segs in the display still aren't hooked up)
* move some sets to mpu4mod2 and mpu4mod4yam based on sound chip use
Added support for wildcards in .flt filter files. You'll need to quote
them to avoid /* being parsed as a comment initiator, like "seta/*.cpp"
on a line including the quotes.
Added an XSLT filter for listing system driver sources, like
mame -lx | xsltproc scripts/xslt/list-system-sources.xslt
Converted the ci subtarget (which isn't really used much) into a .flt
rather than .lua and .lst files.
Added SOURCEFILTER option to specify a driver filter file in your make
options, e.g. like make SUBTARGET=custom SOURCEFILTER=mydrivers.flt (or
put it in your useroptions.mak if you'll be using it a lot). It
functions more-or-less like SOURCES on steroids.
Changed the way system/device source file paths are displayed to suit
the new source layout better. INI file loading hasn't changed, that
still just uses the base file name.
Added overlooked trigger to src/bus.lua to include NES controller bus if
the NES zapper sensor is needed.
Driver projects now use globs to search for files. There's less effort
editing the Lua files when things are moved around. Remember it won't
automatically pick up a change, so if you add/remove/change files, you
should touch makefile to get it to find the change.
Driver projects no longer get the top-level MAME directory as an include
path. This means you need to think about how you structure things and
not introduce nasty circular dependencies.
Subtarget projects can now be generated entirely from .flt files without
the need for separate Lua scripts and .lst files. This has been done
for the arcade, mess and virtual targets. It effectively works like a
SOURCES= build on a large scale. This means you need to organise things
so the dependency genrators can find them.
There's an issue with the mess subtarget right now. For some reason,
decmate2.cpp isn't picking up the dependency on the PDP8 CPU core for
the HD6120 device. I'll debug it later
* Add implementation of thunderl protection, implemented using a PALCE16V8.
* Corrected address range for protection write handler.
* Added recreated PAL image based on analysis.
* Fixed audio by setting a precise value for the tone pot, also removed unnecessary amplifier section resistor.
* Added impulses to coin inputs to stop j_ewnd giving credits every frame.
* Turned the audio level down a bit.
New machines marked as not working
--------------------------
Cash Nudger? (SRU) (5p Stake, £2 Jackpot)
New clones marked as not working
--------------------------
Each Way Nudger (JPM) (SRU) (revision 23C, 5p Stake, £1 Jackpot)
Each Way Shuffle (bootleg?) (SRU) (10p Stake, £3 Jackpot)
* Implemented VRAM size selection.
* Added readback for most registers that are implemented.
* Made CRTC calculations more sensible.
* Added version strings from ROMs to device descriptions.
* Improved logging and made it more configurable.
- m72.cpp: corrected labels for Hammering Harry M81 set [Brian Troha]
- model2.cpp: verified ROM EPR numbers for Manx TT Deluxe [Brian Troha]
- supduck.cpp: documented alternate title [Brian Troha]
- zn.cpp: proper labels for v1.10I NBA JAM Extreme [Brian Troha]
* Changed name of cards for slot selection to "mdc48" and "mdc824" as
they're unrelated to the later 8*24 GC card.
* Also cleaned up code substantially and got rid of artificial
differences between Display Card 4*8 and 8*24.
* Moved lists of NuBus and SE/30 PDS cards to a common place.
* Got some class declarations out of headers to reduce recompiles.
* Remove DIP switch locations from edge connectors/split-pads in pacman.
* Added DIP switch locations to mspacman.
* Remove duplicated inputs from mspacpls and mspachmp.
* Marked Rack Test as PORT_TOGGLE.
* Changed fake DIP switches to machine configuration settings.
New working machine
------------------
Radica / Takara / SSD Company LTD Play TV Jr. Construction [Sean Riddle, David Haywood, Peter Wilhelmsen, Kamaal Brown]
* Use the plugin data folder for storing the cache. The history folder
may be read-only or shared with different configurations.
* Don't create the cache database or surrounding folder if there's
nothing to store in it.
* Actually use prepared queries multiple times rather than always
destroying them after a single use.
* Added proper error checking for most database operations.
* Improved query performance by avoiding outer joins and table scans.
-bus/nubus: Made the Macintosh Display Cards map the blue channel to
white with monochrome monitors. Also added logging for PLL
configuration to help debug how CRTC and RAMDAC clocks work in the
future.
Started implementing the Macintosh Display Card CRTC. It gives correct
resolutions, although refresh rates are incorrect. Added machine
configuration settings allowing several monitors to be selected.
Implemented the Macintosh Display Card's packed RGB mode. The
base/stride in RGB mode make more sense with this implemented.
Cleaned up the code for the SuperMac Spectrum cards, and fixed the
garbage at the bottom of the screen on the Spectrum/8.
Put a layout with views for common monitor aspect ratios in a place
where cards can use it. This is especially useful for the NuBus cards
that can support portrait monitors.
Factored CRTC and shift register out of Spectrum/8 and added to Spectrum
PDQ. Fixes video mode selection and resolution for Spectrum PDQ.
Implemented vertical interrupt position, stride, line offset and clock
source registers for Spectrum PDQ. Added a hack to work around line end
control not being understood. Also added save state support.
Slightly modernised the Macintosh Display Card (JMFB) device code.
Initialised some driver state class members that were causing System 7
to fail to see files. [Ivan Vangelista]
* netlist: fix bug, prepare for future changes and improve readability
- fix a bug where a net processing error may trigger a nullptr access
- applied some clang-tidy recommendations
- add no_return to plib::terminate
- properly encapsulate dynamic_cast usage
- more review of noexcept
- added a clang-format file. Over time, all source files will be
processed with clang-format
- Used clang format on a number of files
- Rewrote 74174
- all device constructors now use a struct to pass data on
to base classes. Neither netlist state nor the name are intended
to be used in a constructor. After the base class was
constructed, they can be accessed by state() and name().
- The device construction macros can now be removed. Changes to
the core will not need to be reflected in constructors.
- Change truth table macros so that going forward NETLIST_END and
TRUTH_TABLE_END can be replaced by a closing curly brace. netlists can
than use curly braces enclosed blocks.
- more clang-format
- removed some macros completely
- all derived classes from base_device_t now don't use macros
any longer.
- as a result, delegator_t was removed. This class was only used
to support macros :-(
-----------------------------------
a2600.xml: Asteroids (PAL, rev. 06) [Guru]
Clones promoted to working
----------------------------
Super Treasure Island (Italy, v1.6) [Ivan Vangelista]
- tankbust.cpp: used finders, logmacro and other small cleanups
* Made the Spectrum/8 firmware selectable as a card BIOS option.
* Added a palette device for the Spectrum/8 so it can be seen in the
graphics viewer.
* Initialise enough members of the Spectrum PDQ device class to not hang
a debug build.
* Got the code of the Spectrum/8 and Spectrum PDQ more in line with each
other.
* Implemented sync pulse width registers and moved sync to be logically
at the end of the line/frame.
* Fixed vertical offset in 480i mode and made vertical blanking
interrupt fire at field frequency.
* bus/nubus: Started emulating SuperMac Spectrum/8 CRTC.
* bus/nubus: Respect Apple 4•8 screen base register.
* cpu/m68000: Fixed disassembly of bit field extract instructions.
* Also cleaned up data plugin a little.
* moved manufacturer / system specifics into subclasses (eg. some bwb configs) [David Haywood]
* identified correct reel setups for many sets, allowing them to boot further [David Haywood]
* added some default input configurations for games needing stake keys and percent keys so that they boot by default [David Haywood]
* moved some sets around based on the machine type [David Haywood]
* adjusted AY hookup to keep 'Four More' happy [AJR]
emu/schedule.cpp: Fixed a few more pessimising assumptions. Gains a few
percent in Ketsui and SNES SuperFX.
util/endianness.h: Added some more operations on endian-swizzlers.
Changed a few more drivers to use them.
sun2.cpp: Fixed uninitialised variable that could cause corrupt video.
Fixed some issues with Visual Studio project generation after the
changes to Windows resource creation.
----------------------------
Borderline (Tranquillizer Gun conversion) [anonymous]
New working clones
------------------
Beta Force [anonymous]
- astinvad.cpp, rollerg.cpp, shootout.cpp: used finders, derived classes and other minor cleanups
------------------
Butterfly Video Game (version A00) [Ioannis Bampoulas]
New machines marked as NOT_WORKING
----------------------------------
Sea Devil [Ioannis Bampoulas]
Space Liner [Ioannis Bampoulas]
New clones marked as NOT_WORKING
--------------------------------
Speedway (set 2) [Ioannis Bampoulas]
- namcos23.cpp: confirmed set finfurl2j is FFS1 Ver.A [Guru]
Optimised the scheduler's handling of unscheduled timers - gives a 50%
performance improvement in some timer-heavy drivers.
Added better endianness swizzling helpers.
Got rid of some of the OSD input modules' dependence on concrete input
classes from emu.
* sound.cpp: Fix missed samples due to state save (#9917)
The PR address #9917. A save state may occur between time slices.
Sound devices through sound.cpp are updated during a timer call every
20ms. When the state is saved, these devices are not updated to the
current machine time. Consequently after a state load the devices have
have a "time lag" since in postload buffer end time is forced to
machine time.
This change will save the last buffer end time so that all outstanding
samples are processed.
This is a core change. I tested it on some drivers. This needs a very
thorough review and I post the PR primarily to document a possible
solution.
* sound.cpp: use "stream.sound_stream" as module name for save_item
* sound.cpp: use presave handler to store end_time()
* Moved protection simulation to devices, and got more games to boot.
* Corrected lamp output mapping for most games.
* Correctly identified more games, and removed bad dumps.
* Organised sets better, and cleaned up some of the implementation.
spectrum.cpp: Removed a member from the base state class that's only
used by certain Soviet clones. There seems to be some copy/pasted code
in the clone drivers - pehaps they can share some of the implementation.
spec128.cpp: Moved the Spectrum 128 state class declaration to the
corresponding header.
Reduced redundancy in a few fruit machine layouts.
- Add helper functions for double-word register accesses and multiplication
- Make 16-bit multiplications signed for EHCMULD and EHCMACD
- Correct typo in comments
* Split the lightgun games into a derived class.
* Got rid of run time I/O port tag lookups.
* Got rid of legacy start/reset callbacks.
* Registered some members for save states.
* Got rid of the special-casing for the "mess" subtarget name.
* Got rid of the MESS-specific Windows resources, emuator info source
and man page.
* Added subtarget name to the internal name and original name in Windows
resources.
-ui: Put the system-specific items on the input settings menu together,
and fixed the crosshair visibility settings.
supstarf.cpp: Dumped and added a new set of 'Super Star', make it the parent since it's a complete dump.
New NOT_WORKING machine
-----------------------
Super Star (Recreativos Franco, set 1) [jordigahan]
One of the R Z SRL Bologna sets was aleady working as well as any of the
other sets. This improves inputs for all of them anyway, so may as well
credit Janniz for it even though it's not clear when it started working.
Clones promoted to working
--------------------------
Invasion (bootleg set 1, R Z SRL Bologna) [Janniz]
Added support for big endian bus accesses by adjusting the width of the bus access appropriately. (In 32-bit mode, descriptors and the RBA must all be aligned to 32-bit boundaries, even when the values are only 16 bit, thus the previous method had issues on BE buses. See pages 7 and 15 in the datasheet.)
Stop device from starting a second transaction task if one is already in progress. The datasheet recommends that software which wants to append packets during a transmission send another transmission command to avoid a race condition, and it should do nothing if this command is received while the transfer is still ongoing. NEWS-OS 4.2.1aRD is an example of software that does this. It would hang on boot without this change because the SONIC would start doing weird things when the second transmit command came in.
Added menus for controlling toggle inputs, and showing recognised input
devices and control state. Moved input menu options off main menu to a
submenu, as there are a lot of them now.
Moved menu heading drawing into base class, added headings to more
menus, and made headings more consistent with the menu items used to
reach them. Also made terminology more consistent.
Changed the default names for buttons and hat switches/D-pads to use
1-based numbering. DirectInput still returns 0-based button numbers for
some devices.
Removed local copy of MinGW xaudio2.h as it’s now included in the MSYS2
package. Also fixed building the DirectSound sound output module with
the SDL OSD on Windows - the Windows headers are sensitive to include
order.
Started adding documentation for menus, to hopefully help people find
menus they remember seeing but can't recall how to access.
For translators, this makes terminology more consistent. In particular:
* "Settings" is preferred over "configuration" in a number of places, as
the latter can be construed as referring specifically to settings
stored in .cfg files in the cfg_directory folder. Also, references to
saving machine configuration could be interpreted as relating to the
settings on the "Machine Configuration" menu.
* The controls on host input devices (e.g. keys, buttons, joystick axes)
are referred to as "controls", while emulated inputs are referred to
as "inputs".
* The menus for assigning host controls to emulated inputs are called
"input assignments" menus to distinguish them from other input
settings menus.
* Combinations of controls that can be assigned to emulated inputs are
referred to as "combinations" rather than "sequences".
* The potentially confusing term "ROM set" has been removed altogether.
Use "short name" to refer to a device or system's identifier.
* "System" is used in almost places to refer to a complete, runnable
system rather than "Machine".
* "Driver" is now only used to refer to source files where systems or
devices are defined - it is no longer used to refer to individual
systems.
* A few more menus have message context for the messages. This makes it
a bit easier to guess where the messages are used. It also means you
can use different translations in different places if necessary (e.g.
if the same English text should be translated differently as an item
in one menu and as a heading in another).
* netlist: fix bugs and more cpp instead of macros
- C-style comments converted to c++
- Fix crash in state saving code when an abort queue processing event
is pending.
- Fix a bug where a net could be twice in the queue.
- Convert more macros to c++
- fixed SUBTARGET=nl build
- fixed potential bugs which would allow a terminal to belong to more
than one net. This is not possible even for a short time.
- moved some member function definitions out-of-class.
- moved code out-of-class
- added constexpr where appropriate
- fixed mamenl build
- Cleanup and indentation
- Every file in src/mame/{includes,drivers,audio,machine} with the
exception of konamiic.txt has to appear in one and only one of the
projects of arcade.lua or mess.lua (ignoring mameshared)
- Files in mameshared must exist in mame.lua