Up-to-date with revision 24c8d575e588d557d28f4011becb753421346860. Resolves issues building with Visual Studio.
Enabled PortAudio when building with Visual Studio and clang-cl.
docs: Removed note about duplicate GUID symbols in PortAudio when built with MSVC.
Now based on upstream 9da543e8329fdd81b64eb48742d8ccb09377aed1.
This fixes some issues with abbreviate path commands, gradients, and
locale sensitivity when parsing percentace-style colours.
This removes the need to force it to build as C++, and adds proper UTF-8
support for Windows.
Since this is a fork of linenoise, there's no hope for getting
lua-linenoise to sync with it upstream. I made the bare minimum changes
to keep it working, but didn't add bindings for new functionality (e.g.
multi-line editing).
Compile Lua as C++. When Lua is compiled as C, it uses setjmp/longjmp
for error handling, resulting in failure to unwind intermediate stack
frames. Trying to ensure no objects with non-trivial destructors are in
scope when raising a Lua error is error-prone. In particular,
converting an exception to a Lua error becomes convoluted, and raising a
Lua error from a constructor is effectively impossible.
Updated Lua to 5.4.4 - this includes a brand-new garbage collector
implementation with better performance. The main thing removed is the
deprecated bitlib.
Updated sol2 to version 3.3.0 - this adds support for Lua 5.4 and fixes
a number of issues, including not correctly handling errors when Lua is
built as C++.
Updated LuaFileSystem to version 1.8.0 - this adds support for symbolic
links on Windows, as well as Lua 5.4 compatibility.
Updated LuaSQLite3 to version 0.9.5 - this fixes issues in
multi-threaded environments, as well as Lua 5.4 compatibility.
Fixed double-free after attempting to construct a debugger expression
from Lua with an invalid string, and exposed expression error to Lua in
a better way.
Added warning level print function to Lua.
Fixed saving cheats with shift operators in expressions, although this
code isn't actually used as there's no cheat editor.
* Removed SDL2 source.
* Updated gradle.
* Updated SDL2 Java support glue code.
* Increased minimum supported Android API version to 24.
* Updated required asset files for Android app.
* Added proper tag for Android logging.
* Added SDL2 hint to make BGFX work on Android.
* Fixes uninitialized member causing slight jitter in timing (GitHub #10414).
* Fixes OPNA behavior when LFO is disabled.
* Fixes a PCM playback wraparound bug due to incorrect auto-incrementing.
- Fix incorrect operator volumes in some cases for OPL (MT8108)
- Fix PCM playback to cut off previous notes when new waveforms are selected (see dragnblz)
- Fix reversed OPM noise frequency
- Fix bug preventing CSM key ons from being noticed
- Fix bug where SSG EG envelope could be left in inverted state
- Fix SSG envelope handling when tone and noise are off
- Increase strength of DAC discontinuity in YM2612
- Improve latching logic for fnums in OPN
- Increase envelope suppression threshold so some effects don't get prematurely muted
- Improve ADPCM-B behavior at stop/limit addresses (more thorough rewrite here coming later)
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).
The doc folder isn't included as it's pretty big.
This required include/asio/detail/win_iocp_socket_accept_op.hpp due to
mismatched order in the member declarations and initialiser list for the
win_iocp_socket_accept_op class. I reversed the declaration order so it
matches win_iocp_socket_move_accept_op.
* 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.
* Sync with upstream. I/O callbacks are now consolidated into a single read callback and a single write callback, with an access type specifier.
* Initial working implementation of YM278B. Most features implemented, except vibrato.
* Implement vibrato and status register flags. Fix envelope rate computation.
* Rename ymfm_interface::external_type to access_class and clean up the fallout.
* Formally replace the old YMF278B engine with the one from ymfm
* Rotated YMF278B outputs into a more logical order.
* Re-evaluted envelope calculations and 2x works better than the weird 15/8 I came up with before. Also changed the way FM resampling is computed to be more precise (and simpler). Turned off extraneous debugging.
* Start of/reset to a null state with no loaded waveforms.
* Fix YM2608 I/O ports.
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)
Now based on upstream cc6c08d3a80f1a305021af3d6394cdf1535d02a2.
Among other things, this version is supposed to be less sensitive to the
global locale.
(nw) The pcap.h header itself has the problematic original BSD license,
including the obnoxious advertising clause. Using tap/tun networking on
Windows provides a much better experience, so the extra setup is worth
it. This patch also allows you to enable pcap on platforms where it's
disabled by default with USE_PCAP=1 if you really want to use it.
* Removed empty nl_examples from dist.mak
* Added copyright acknowledgements and full text of licenses to binary distribution
* Fixed up the list of third-party libraries
* Moved WDL fft.c to 3rdparty
* Change makerules to take variable $(PROJECT_TYPE) instead of hardcoded 'gmake'
This allows to run `make projgen PROJECT_TYPE=ninja` to generate ninja build files instead.
and to build GENie using ninja by running `make release PROJECT_TYPE=ninja`.
Using ninja improves build times,
e.g. for macOS: 12.47s with gmake goes down to 2.05s with ninja.
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Set prefer project set as solution.startproject as default target
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Adding `GenerateMapFiles` flag.
Causes Visual Studio's linker to generate .map files for that
configuration.
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Add ninja support for 'wholearchive' libraries
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Fixup ninja.esc to gracefully ignore nil passed as value
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Use -Wl,-force_load for wholearchive libs when building for macosx
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Updated README.
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Add space after filename in 'Generating' message
This makes the filename 'clickable' to open in iTerm and VSCode
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Print generated filenames as quoted string
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Remove '...' after filename
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Pop cwd after pushing to run file
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Make paths in embed.lua rely on script dir
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Updated README.
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Fix issues caused by make-4.3 no longer adding spaces to variables in some cases The fix was found by @asavah.
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Fixed release script.
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Updated README.
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Update scripts.c
Co-authored-by: Christian Helmich <kagekirin@gmail.com>
Co-authored-by: Johan Sköld <johan@skold.cc>
Co-authored-by: Бранимир Караџић <branimirkaradzic@gmail.com>
* Change makerules to take variable $(PROJECT_TYPE) instead of hardcoded 'gmake'
This allows to run `make projgen PROJECT_TYPE=ninja` to generate ninja build files instead.
and to build GENie using ninja by running `make release PROJECT_TYPE=ninja`.
Using ninja improves build times,
e.g. for macOS: 12.47s with gmake goes down to 2.05s with ninja.
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Set prefer project set as solution.startproject as default target
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Adding `GenerateMapFiles` flag.
Causes Visual Studio's linker to generate .map files for that
configuration.
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Add ninja support for 'wholearchive' libraries
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Fixup ninja.esc to gracefully ignore nil passed as value
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Use -Wl,-force_load for wholearchive libs when building for macosx
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Updated README.
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Add space after filename in 'Generating' message
This makes the filename 'clickable' to open in iTerm and VSCode
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Print generated filenames as quoted string
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Remove '...' after filename
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Pop cwd after pushing to run file
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Make paths in embed.lua rely on script dir
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Updated README.
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Fix issues caused by make-4.3 no longer adding spaces to variables in some cases The fix was found by @asavah.
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Fixed release script.
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Updated README.
Signed-off-by: Julian Sikorski <belegdol+github@gmail.com>
* Update scripts.c
Co-authored-by: Christian Helmich <kagekirin@gmail.com>
Co-authored-by: Johan Sköld <johan@skold.cc>
Co-authored-by: Бранимир Караџић <branimirkaradzic@gmail.com>
Currently waitvsync is broken in the bgfx vulkan backend.
The option is just ignored and a mode waiting for vsync is selected.
This also breaks throttle. -nothrottle doesn't work.
These changes fix this. If available a non-syncing mode is used if
-nowaitvsync is used.
Previous semantics were encouraged by sol2, and ThePhD admitted it was a bad idea for usertypes with lots of members. sol3 allows to assign members outside a constructor for regular usertypes, but mame can't move to sol3 because it requires C++17. Turns out sol2 also has a way to add members separately, and that is what I used. This helps immensely.
This approach required a fix to warning C5046 copied from here 5799084572
Tested current mame plugins, everything seems to work.
PS: Due to come black magic, if I use simple_usertype::set() with "manager" as well, "machine" member dies (others are fine!), so I had to leave it intact.
* Add workaround for imgtool and jedutil failing vs2019 debug builds with /ZI
* No longer allow msvc build to fail
* Enable tools build for travis to make it more useful
* Switch travis to Xcode 11 in order to fix nltool linking failure
* Prefer 64-bit compiler with VS 2019 too
* Setting PreferredToolArchitecture to x64 is not needed, genie puts it into the project files for vs2015 or later
* OPTIMIZE=1 build is faster that OPTIMIZE=0 for some reason. So fast in fact, that TOOLS=1 can be enabled without hitting the 60 minute timeout
* Switch MINGW build to VS 2017 image until appveyor figure out why builds on VS 2019 are almost twice as slow
* Run pacman twice to account for core system upgrades
- solver now uses dynamic allocation on systems larger than 512x512
- fixed osx build
- moved nl_lists.h classes to plists.h
- fixed netlist makefile clint section
- readability and typos