* 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
* Sync with bgfx upstream revision b91d0b6
* Sync with bx upstream revision d60912b
* Sync with bimg upstream revision bd81f60
* Add astc-codec decoder
* Rename VertexDecl to VertexLayout
* Rename UniformType enum Int1 to Sampler.
* Add NVN stub
* Fix unused-const-variable error on macOS
* Drop redundant explicit language parameters
buildoptions_cpp are only applied to c++ files and buildoptions_objcpp are only
applied to objective c++ files. As such, hardcoding -x offers no benefit while
preventing overrides (such as one needed by 3rdparty/bgfx/src/renderer_vk.cpp on
macOS) from working.
* Re-introduce -x c++ in places where C code is compiled as C++ to prevent clang from throwing a warning
* Build bgfx as Objective-C++ on macOS
It is needed due to included headers
* Enable Direct3D12 and Vulkan bgfx rendering backends
* Enable building of spirv shaders
* Properly escape /c in cmd call
* Comment out dx12 bgfx renderer
* Honor VERBOSE setting during shaders build
* Only invert hlsl shader XYZ_TO_sRGB matrix for opengl
* Add spirv shaders
* OpenGL ES needs transposed matrix too
* Metal needs transposed matrix as well
* Synced with GENie upstream revision e78d6c1
* Add Visual Studio 2019 support
* Fix hardcoded -m64
* Switch appveyor to Visual Studio 2019
* Fix genie being built as 32-bit
* MSVC build is known to be broken currently. Let it fail until all the known issues are fixed.
* Update the packages before building
* Build with 3 threads
Appveyor VMs have only 2 cores and 8 GB RAM.
* Enable caching of pacman cache
* Add support for pcnfrk2m - Percussion Freaks 2nd Mix (GE912 VER. KAA)
* WIP audio for k573dio
* WIP
* Move 3rd party library to 3rdparty folder
* Use MAME's BIT and bitswap
* Fix regression which caused songs to stutter/lag when they should have been read completely in one shot
* Replace gain_to_db switch with equivalent math
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.
* Fix compile for Android, set API to 24
* Update Android Studio project to API 24
* Fixed project file to latest Android Studio
* fix build with gradle alone
* taptun: add support for Windows
Looking for feedback only at this point, because it's the first time I've attempted any OSD stuff - be gentle.
This extends the existing taptun OSD module to support Windows through the TAP-Windows6 driver (https://github.com/OpenVPN/tap-windows6).
* TAP-Windows6 is GPLv2, however only the header file is required in MAME, and the driver itself is entirely optional.
* I've tried to minimise the size of the diff, rather than completely separate the Windows/non-Windows implementations - not sure which is preferable in this case.
* The license file has Mac(?) line-endings - unsure if they should be normalized or used verbatim.
* Uncertain about the non-Windows case (or the Windows SDL case) - existing code uses __linux__, but I'm not clear on how that works with OSX, for example?
* I can't claim this actually "works" yet, because I don't know enough to configure the tap end of it properly to get networking doing something useful, but I will get there and correct anything necessary in a subsequent real PR.
* minor fixes/improvements (nw)
* Use Unicode Windows APIs, and UTF-8 for MAME
* Deal with unterminated registry string values
* Cancel any pending I/O in destructor
* softfloat3: fix msvc build (nw)
Is this how we do these things? I assume we don't touch the library code itself, and have to "fix" any problems via this header instead?
* softfloat3: do we like this better? (nw)
* softfloat3: it gets the hose again (nw)
* softfloat3: sonofa (nw)