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
* Make netlist/plib noexcept issue workaround trigger for clang 8 or
Apple clang 11.0.0.
* Disable lifetime DSE optimisation for GCC 10.2 (this may be an issue
in GNU libstdc++ rather than GCC itself - using compiler version as a
proxy for standard library version is bad, but it's the path of least
resistance for now).
Don't treat hypen and dot as the same thing - it will cause issues with
pacakge revisions. Cleaned up some Lua code as well.
Also show warnings about potentially uninitialised stuff with GCC 12,
just don't make them fatal errors.
This will hopefully work around the very unhelpful uninitialised
variable warning that seems to be triggered by using Sol's get function
with std::optional<T> or sol::optional<T> on Linux.
* Enabled GCC lifetime dead store elimination optimisation.
* emu/device.h: Don't pre-clear memory for drivers. Ivan Vangelista
fixed at least the majority of things that crashed outright, and
Robbbert initialised variables that coverity complained about. It's
unlikely anything will break due to this.
* sound/discrete.h: Explicitly initialise members of discrete "devices"
to zero. I don't see a way around doing this in headers due to the
macro soup used to build the constructors.
* sound/mos6581.cpp: Moved creation of the SID core to device_start and
explictly initialised members of the SID core structures. These
structures are in internal headers, so they won't cause downstream
recompiles.
-Lua engine: Made I/O port manager type_seq a bit more tolerant of
omitted arguments.
* frontend: Added support for message context to localisations.
* frontend: Added string_view versions of the message lookup functions.
* frontend: Added a few more folder options to the internal UI.
* emu/softlist.cpp: Use more appropriate containers.
* Switched to Python 3 by default - this will become a requirement.
* Updated msgfmt.py for message context support.
* frontend: Show all software item info in the internal UI.
* frontend: Search alternate titles in software selection menu.
* 3rdparty/utf8proc: Updated to v2.6.1 (has several fixes).
* frontend: Added software filters for common info fields.
* frontend: Allow UI manager to hold onto persistent session data.
* frontend: Cache software lists for eight machines.
* frontend: Added support for loading localised system names.
* frontend: Add UI for selecting localised system names.
ymfm: refactor the code into a separate 3rdparty library
* Moved ymfm core implementation to 3rdparty/ymfm
* Split out each family (OPM/OPN/OPL/etc) into its own source file
* Added preliminary OPQ and OPZ support, still WIP
* Put all 3rdparty code into its own namespace ymfm
* Fixed various bugs reported in #8042
* Created interface class for communication between the 3rdparty engine and the emulator
* Standardized MAME implementation of all Yamaha devices based on a template class
* Created standard base class ym_generic that can be used when multiple YM chips are swapped in
* Changed YM2203/2608/2610 to embed a YM2149 as a subdevice instead of deriving from ay8910_device
* Also provided compile-time option to use a simplified built-in SSG rather than using MAME's at all (currently off)
* Consolidated MAME header files from one-per-chip (ym2151.h, ym2203.h, etc) to one-per-family (ymopm.h, ymopn.h, etc)
* Added note explaining that view options saved in machine CFG take
precedence over INI/command line.
* Added prerequisites for building HTML documentation under MSYS2 and
Fedora Linux.
* Explicitly mentioned that Ubuntu modifies GCC to enable "fortify
source" by default in the relevant section.
* Removed obsolete reference to glibstdc++6.
* Re-formated compiling guide source (hard wrap at 80 columns,
typographical quotes, code blocks for sample command lines).
-genie.lua: Show GCC ignored attribute warnings, but don't fail for
them.