* Moved several machine lifecycle callbacks to the notifier/subscriber
model. The old callback registration model is still available for
them for now, but prints a deprecation warning.
* Added pre-save/post-load notifications.
* Use a single allocated timer rather than one anonymous timer per
waiter. Waiters no longer prevent saved states from being loaded.
* Clean up outstanding waiters on stop or state load rather than just
leaking them.
* Started documenting parts of the emulator interface object that should
be relatively stable.
-imagedev/avivideo.cpp: Fixed an object leak on unload. Also changed
some other media image devices to use smart pointers.
* util/options.cpp: Added option types for single and multiple paths.
* util/options.cpp: Substitute environment variables in values from defaults and INI files.
* ui/dirmenu.cpp: Removed hard-coded list of multi-path options.
* plugins: Don't substitute environment variables in path options.
Added emulated time recording as well as wall clock time.
Fixed recording time for multiple software items per system. An
incorrect constraint on the database table meant that time was only
being recorded for a single software item per system.
Detect the "empty" driver so the time spent at the selection menu isn't
recorded (you'd get multiple entries for this due to the way options
leak when returning to the system selection menu).
Included schema migration code to update existing timer plugin
databases. Also replaced some unnecessary floating point code with
integer maths, added log messages, and made the plugin unload unload its
database access code during emulation.
Changed other plugins' use of paths with trailing slashes as this causes
stat to fail on Windows.
Changed the hiscore plugin to save inside the "hiscore" folder in the
plugin data directory. The old hiscore path setting has already been
removed from MAME for some time. This means the plugin was always
saving in the "hi" folder in the working directory with no way to change
it, which is problematic on Linux and macOS, particularly for distro
packagers. There are lots of plugin and UI changes in this release, so
we may as well get this out of the way now. Also made it possible to
change the "timed save" option from the Plugin Options menu, and save
that in the data folder, too.
Documented the input macro plugin. The only undocumented plugins now
are the cheat plugin, the cheat finder plugin, and the port name plugin.
* Fix console history path, homepath is a core option
* Create missing directories recursively in lua plugins.
* Add lfs to global environment in a less magical way.
require normally doesn't bind the name globally just returns the
module, mame sets a preloader that does bind lfs globally, but
maybe it's less surprising to do it explicitly
Made the sound manager mute controls readable, and got rid of system
enable since it just controls system mute anyway. This was causing
confusion: phantom2 was trying to use both independentlyt casuing the
mute bit to be ignored.
THe Lua interface changes are mostly changing methods to properties,
some renames to make things clearer, and some additional properties for
better control over snapshots.
* added support for reading/writing hiscore files from cart images
example hiscore.dat entry:
````
nes,smb:
Super Mario Bros. (World).nes:
Super Mario Bros. (W) [!].nes:
@:maincpu,program,7df,4,0,0,ff
````
* store console hiscores in subdirs, added cart hashes support
* added back my prev changes
* added missing end
* using simpler regexpr for hiscore.ini parsing, fixed typo
* minor cleanups
This effectively reverts b380514764 and
c24473ddff, restoring the state at
598cd52272.
Before pushing, please check that what you're about to push is sane.
Check your local commit log and ensure there isn't anything out-of-place
before pushing to mainline. When things like this happen, it wastes
everyone's time. I really don't need this in a week when real work™ is
busting my balls and I'm behind where I want to be with preparing for
MAME release.
hiscore.dat and hi folder path were not resolved as expected (their path was relative to mame executable, not to the plugin folder). Explicitly writing them as absolute paths gives the desired behavior.