- New Working games: Gondomania (World), 'Pacman Club / Club Lambada (Argentina)', Pacman Club (set 1, Argentina), *All* Mega Play games (except for Shinobi III), Vs. Super Mario Bros. (bootleg with Z80, set 1) and Vs. Super Mario Bros. (bootleg with Z80, set 2)
- New Non-Working games: Cow Tipping - Shake Cattle & Roll (set 1), Mega Double Strip (Ver. 1.10b), Mushiking The King Of Beetles 2006 Second (Japan), Must Shoot TV (prototype), Photo Play Spirit Xtreme (Spanish) and Santa Fe Golden
- New clones: Astro Fighter (Famaresa bootleg, set 2), Bagman (Stern Electronics, revision A3), Cow Tipping - Shake Cattle & Roll (set 2), Diana Bifuca (v9.25), Diana Bifuca (v7.43), Photo Play Spirit Xtreme (update, Spanish), Ray Crisis (V2.03O 1998/11/15 15:43), Reality Tennis (set 2), 'unknown IGS game (V100A)' and VF (bootleg of Hang-On)
- New PinMAME games: Cosmic Flash (NSM) and The Games (NSM) and Lethal Weapon 3 (2.04, display A2.02)
- Removed games: Pacman Club (set 2, Argentina) and Vs. Super Mario Bros. (bootleg with Z80, set 3)
- New drivers: cowtipping.cpp, photoplysx.cpp and rfslotspcpent.cpp
- New devices: borderline_audio, filter_biquad, frogs_audio, hc55532, mc68328, n2a03_core, ppu2c04c, tmp95c061 and tt5665
. MCS-48: Check irq before opcode to fix Fire Fox, but re-added (MESS) WY-100 hack (mcs48\mcs48.cpp). Execute_jcc param is a bool, not u8.
. Microchip PIC16C5x: Initialised a couple of variables that can be problematic (pic16c5x\pic16c5x.cpp)
. Motorola MC68000: Separated FPU code from header
. Texas Instruments TMS9995: Initialized one variable which caused crashes in 'Formula 1'
. Biquad Filter: Added a biquad-based 2nd order filter emulation for an audio stream (to go along with flt_rc 1st order filter emulation).
. Improved sound\dac.cpp performance. Modified DAC to accept streams of any input rate to avoid resampling. Modified DAC to assume input voltage streams are constant by only grabbing the first input sample. Restructure the DAC sound devices a bit. Centralized implementation based on lookup tables. Added set_constant_vref() method for the common case where references are constant, thus avoiding the need for voltage regulator devices. Converted williams.cpp to using this new method as a test.
. Various improvements: Default to output range -1..1, by far the most common case. Detect if inputs are specified and use those for output range. Make default range for 1-bit DACs 0-1 instead of -1-1.
. Filtered 1-bit DAC: Fixed sample volume averaging
. HC-55516: Major update for HC55516 CVSD audio device and related filtering, as well as hooking it to drivers. Splitted HC55516 core into separate cores/subclasses for HC55516 and HC55532 (new 'digital' implementation based on decap/die tracing) as well as MC3417 and MC3418 (old existing 'analog' implementation left alone) and hooked the HC55516 and MC3417 implementations to the appropriate hardware drivers. This should vastly improve CVSD sound quality in drivers that use the HC55516.
. Midway Sounds Good Sound Board: Added DAC filtering to Midway "Sounds Good" hardware and added notes/mirroring regarding the undumped memory mapper PAL.
. Midway Turbo Cheap Squeak Sound Board: Added DAC filtering to Midway "Turbo Cheap Squeak" sound hardware
. MSM5232: Fixed behaviour when the 'ARM' flag set while envelope generator is on a decay state. MSM5232, a tone generator chip which is used by some early TAITO and Alpha Denshi arcade PCBs, has 'ARM' flag that alters behavoiur of envelope generation. Basically, the 'ARM' flag turns Attack-Decay-Release envelope generation to simpler ON/OFF states. If the 'ARM' flag set, the transition from Attack to Decay doesn't occur unless explicitly indicated. On current implement, when this 'ARM' flag is set on a channel which is on a Decay state, the Decay state continues. It seems that, the state should be turned into a Attack state in this situation.
. Namco: Eliminated auto_alloc
. Sound Interface
. Complete sound modernization of remaining devices. Removed legacy stream support and stream_sample_t.
. Removed silly mixer tables in favor of math in gomoku and wiping. Removed tiny vectors in favor of fixed arrays in micro3d. Went back to std::unique_ptr array for LFSR in phoenix. Fixed the scale factor inwiping.
. Reserved space before taking addresses of new vector items. This code is still unsafe, 16 just happens to be enough for the systems in MAME (The old vector_t implicitly reserved space for 16 items on construction) (sound\discrete.cpp). Fixed more crashes and modernise a little. Reserved some space in another vector that it takes addresses to members of (fixes lack of sound in dkong and dkongjr). Removed dependence on auto_alloc and friends. There's one more problematic make_unique_clear now, but there are several fewer auto_alloc family calls (sound\discrete.cpp). Get rid of vtables in factories. This speeds up compilation (sound\discrete.cpp).
. Use some vaguely C++-like code internally (sound\tiasound.cpp)
. Sample rate now saved as part of the stream (emu\sound.cpp). Fixes distorted sound in sfrush and sfrushrk when loading from save state (ID 07765).
. Fixed bug where gain was doubly-applied in some cases (emu\sound.cpp)
. Sound Interface: Created m_specified_inputs_mask to track which inputs have been specified (emu\disound.cpp)
. Sound streams: Updated the following sound cores to the new stream update callback: cps3, cassette, dsbz80, exidy, exidy440, floppy, flower, geebee, gomoku, gridlee, gus, istrebiteli, hyprolyb, laserdsc, micro3d, paula, phoenix, pleiads, polepos, redbaron, s2636, segag80r, segausb, seibu, snk6502, special, tiamc1, turrett, tx1, warpwarp and wiping.
. Voltage Regulator: Removed Voltage Regulator uses that are not needed anymore with the recent DAC changes (sound\volt_reg.cpp)
. Votrax SC-01: Adjust the final filter
. Cassette tape image: Make the interface look something like C++. Finished encapsulation of cassette_image class (formats\cassimg.cpp).
. Discrete Netlist
. Fixed Astro Blaster sonar sound and two singular matrices being created. Fixed slowdown, a connection error and order of PARAM overwrite (static_solvers.cpp and audio\nl_astrob.cpp).
. Removed "extended validation mode". No longer added value.
. Implemented stricter validation. Devices like BJTs and FETs which are defined but not used will now cause an error. An unused device will create an additional solver with a singular matrix. This is adding unnecessary performance overhead. It complicates debugging because the unused device will cause an arithmetic signal if used with --fperr (nltool). Fixed all validation errors.
. Use C++ std::vector and range-based for sound\discrete.cpp
. Applied some Clang tidy recommendations. Rewrote frontier documentation. Also includes a small optimization for FP signal code.
. Fixed a net splitting issue with four term devices. Under cirtum circumstances the splitter would create "ghost" solvers consisting of terminals already used in another and complete solver. This may impact all netlist which use opamps and thus is committed early in the cycle. This commit adds functionality to instruct the splitter code to include terminals which will not create matrix elements into the parsing of net groups for solvers. Fixed build on old compilers not compliant with retroactive C++11 revisions (sound\discrete.h).
. Added parse optimization to pfunction: * "(1 + 2)*a" now during parse step will be rewritten to "3*a". Moved core_terms to netlist_state. These are used during creation and reset only. No need to maintain them on net_t level. Simplified code.
. Reverted changes intended to make the code work on OSX 10.10 (plib\pmatrix2d.h and pmatrix_cr.h)
. Catch parenthesis count mismatch in formulas. Fixed error in formula in audio\nl_boxingb.cpp. Explicitly trim connection names.
. Hook up netlist for Borderline and Tranquillizer Gun. Added static solver, using dynamic timestep and update driver flags. Added frontiers and reduced timestep to improve performance (audio\nl_brdrline.cpp and generated\static_solvers.cpp).
. Added Frogs netlist. Added AFUNC frontiers to improve performance.
. Added LM348, CD4071 and CD4081 devices.
. Use constexpr where it won't change semantics. The other function-like macros will invoke type decay or promotion depending on what the argument expressions evaluate to, so chaning them to constepr functions could change semantics (machine\rescap.h).
. K001005 Polygon Renderer: Added a missing command only used in Jet Wave's "How to Control" screen. This screen would show some model of the jetski in turning the handlebars and leaning on the jetski for controls. This fixes an issue where not only the model(s) wouldn't be present but the game would slow down complaining about an unknown polygon command (video\k001005.cpp).
. Fixed natural mods for pc_keyboard & at_keyboard devices. Added more logging (emu\natkeyboard.cpp).
. Internalized input ports for PC Keyboard (machine\pckeybrd.cpp)
. MC6840 PTM: Initialized array to fix listxml and validate crash. Updated m_gate initialization. It seems to fix the remaining on and off crashes in (MESS) Fairlight CMI IIx.
. Motorola MC6845 CRTC: Fixed some uninitialised variables. Enabled strobe output (RA4) in transparent mode.
. Sega 315-5124 SMS1 VDP: Improved registers 03 and 04 behavior in mode 4. Registers 03 and 04 behavior in mode 4. Disable sprites in mode 3 for real. Use logmacro.h for configurable logging.
. Z80 SCC Channel: Fixed vector modification in high bits (machine\z80scc.cpp)
. Redumped and corrected color proms for clones Bagman (Stern Electronics, revision A3), (Stern Electronics, revision A4) and Bagman (Stern Electronics, revision A5). New color prom produces title screens that match screenshots from PCBs (ID 02508).
. Updated clone Super Bagman (Stern Electronics) and now the title also match screenshots from PCBs
- cham24.cpp, famibox.cpp, multigam.cpp, playch10.cpp and vsnes.cpp:
. Added 2C04 PPU clone device and use the real palette ROMs for the bootlegs. Implemented most PPU behavior differences for VS System bootlegs. Added the 2c04 clone's delayed sprite rendering (video\ppu2c0x.cpp).
. Working sound and improved graphics in clones 'Vs. Super Mario Bros. (bootleg with Z80, set 1)' and (bootleg with Z80, set 2) based on kevtris' schematics/video. Removed clone 'Vs. Super Mario Bros. (bootleg with Z80, set 3)'.
- chihiro.cpp: Type-1 media-board dumped
- cinemat.cpp: Removed redundant code and move speakers to game drivers
- deco_mlc.cpp: Zoom algorithm is incorrect/unverified, reference: https://www.youtube.com/watch?v=eCwAVt0GbhQ
- gaelco.cpp, gaelco2.cpp and wrally.cpp: Added PLDs to bang, bangj, bigkarnk, squash, thoop and wrally.
- galaga.cpp: Re-added max quantum for multi cpu synchronization. Fixes strange players behaviour in attract mode (ID 07764).
. Added inputs for Happy Skill, Super Tarzan and unknown IGS game
. Added some state saving to igs017.cpp and machine\igs025.cpp
- itech32.cpp: Added additional safety to prevent out-of-bounds GROM access, at the cost of some cycles.
- kpython.cpp: Internal ROM of H8 MCU isn't 32 bit
- leland.cpp and williams.cpp: Updated drivers to leverage new DAC capabilities
- mcr68.cpp: Added a biquad-based 2nd order filter emulation for an audio stream (to go along with flt_rc 1st order filter emulation) and hooked it to to archrivl, pigskin and trisport (HC55516) following the original schematics. This is necessary as the original HC55516 chip produces a very pronounced audible 16khz 'carrier' in its output audio even on the real chip, and these filters suppress this. This also happens to a lesser extent with the 8khz quieting waveform noise on both MC3417 and HC55516.
. Fixed a Genesis VDP status bit which was breaking Mega Play MC68000 -> Z80 communications. Note: Only set interlace frame status bit when interlace is enabled (video\315_5313.cpp). This fixed the interaction between BIOS and 68k side is not fully understood. The BIOS often doesn't register that a game has been started and leaves the 'PRESS P1 OR P2 START' message onscreen during gameplay as a result.If this happens, the games usually then crash when you run out of lives as they end up in an unknown state.
. Promoted all games to working (except for Shinobi III)
- metro.cpp: Initialized a couple of variables (video\imagetek_i4100.cpp)
- ms32.cpp: Extend ROZ notes (video\ms32.cpp)
- namcos10.cpp: Added EXIO, MEM(P3) PCB config skeleton and notes.
- namcos12.cpp: Added notes for RAM size
- ninjaw.cpp and warriorb.cpp: Fixed inverted stereo output channels
. Updated documentation as well as added some code from hornet.cpp's driver to correct the the whole "dual screen" situation.
. Added the second K001604. Since NWK-TR does use two CG boards, there should be a second K001604 as well. Also had to add additional read/write parameters to support using two K001604s for now.
. Updated network board documentation to better explain the chip at 2G, XICOR X76F041, and functions. Added NO_DUMP placeholders to the games that use this specific network board with the added EEPROM.
. Renamed 'Thrill Drive (EAA)' to 'Thrill Drive (EAB)' because the program rom used for this set uses the 'B' version. Also removed the "BAD_DUMP" flag from the timekeeper because the network board and timekeeper region data do not match. I would add a parameter for thrilldbe to change the network region data to "EA" but I don't know if it's even worth changing the simulation (imo better to hook the correct device like with ksys573).
. Demoted Thrill Drive (JAE) and clone Thrill Drive (JAB) to NOT_WORKING. The two never really worked to begin with and have gotten worse in later versions (freezes and crashes more often). I did test versions of mame with and without my edits and both act the same.
. Added Voodoo and screen parameter changes by cam900 from hornet.cpp. So far so good for this driver too.
. Added additional CG board roms for Racing Jam (JAC) and clones Racing Jam: Chapter 2 (EAE) and (JAE). According to Racing Jam: Chapter 2 (EAE)'s kit manual, it prompts the operator to change roms from the master and slave CG boards thus giving proof of the two using extra CG board roms. Thrill Drive's kit manual doesn't prompt the operator to replace the slave CG board roms.
. Made some attempts to fix the handbrake with no avail. Adding another pedal input port may have to be necessary.
- psikyo.cpp: Fixed side effect in debugging
- s11.cpp/s11a/s11b/s11c: Made Williams System 11 and s11_bg relative sound mixing more accurate to the original audio flow on the PCB itself. Fixed tiny build (missing s11c_bg_device).
- segaorun.cpp: Fixed port tag/mask for shifters in 'widescreen' views (layout\outrun.lay)
- segasp.cpp: Added MACHINE_IMPERFECT_GRAPHICS to GAME_FLAGS and changed MACHINE_NO_SOUND to MACHINE_IMPERFECT_SOUND
. Hook up netlist for Borderline and Tranquillizer Gun
. Tranquillizer Gun uses the same sound board as Borderline. Sound improvements: Cleaned some parts of audio\nl_brdrline.cpp (removed test points). Changed MB4391 function to pow2 to shorten sounds a bit. Changed trigger inputs in audio\vicdual.c to fit more to the sounds i remember. Moved trigger mapping from vicdual to audio\nl_brdrline.
. Added protection handling to Tranquillizer Gun so that the game plays correctly
- Astro Fighter: Dumped proms for clone Asterion
- Bare Knuckle II (bootleg of Megadrive version): Added PIC dump
- Bowling Try!: Implemented TT5665 emulation. Similar as OKIM6295, but with support more ROM capacity, phrase spaces and 2 sound outputs.
- Cosmo Gang: Make internal artwork more fun
- Dardomania: Added some basics, still seems to do nothing of note. There are clear signs this is just a bad dump anyway. Fixed loading issue from refactor. Improved patches.
- Darius: Fixed swapped MSM5205 left/right channels volume control
- Enigma II: Added PCB infos, DIP locations and corrected colors (ID 03181).
- Exciting Soccer II: Redumped Exciting Soccer II. Added correct color proms, fixes graphic glitches (ID 05026). Verified it only has 2x AY8910. Measured clocks.
- Fatal Fury 2: Fixed bitswap and added notes
- Fire Fox: Check I8049 irq before opcode (mcs48\mcs48.cpp)
- Frogs: Added Frogs netlist. Make sound board interface more general.
- Gladiator: Extracted AQ 007 microcontroller program from original PCB
- Gondomania: Redumped maincpu dt02.f6 for Gondomania (World). Note: Same label as the US version, but content identical to Japanese version. Added also hand-crafted I8751 MCU from the US version (Game now playable).
- Gradius III: Fixed K007232 sound glitch in clone Gradius III (Japan, program code S, split) (ID 07769)
- Jet Wave: Added a missing command to video\k001005.cpp only used in Jet Wave's "How to Control" screen. This screen would show some model of the jetski in turning the handlebars and leaning on the jetski for controls. This fixes an issue where not only the model(s) wouldn't be present but the game would slow down complaining about an unknown polygon command.
- Joust 2: Switched game to use the s11_bg common sound device rather than its own implementation
- Jungle: Started work on decryption
- Major Havoc: Verified AVG prom. All PCB pics point to this game using the 136002-125 PROM. Page 4-30 of the operation manual states 6c is 136002-125, too. However MAME had it using the 036408-01 PROM. They have identical contents, anyway.
- Midnight Resistance: Fixed 'Lives' dipswitch
- Mouse Trap
. Made 'Mouse Trap' use a timer to clock the MC3417 and update the state readable by the Z80 rather than relying on the MC3417 to accept a clock parameter and update the Z80 state via a callback. The timer implementation ensures proper synchronization and prevents missed clock transitions from the Z80 side causing noise in the CVSD audio.
. Added a biquad-based 2nd order filter emulation for an audio stream (to go along with flt_rc 1st order filter emulation) and hooked it to 'Mouse Trap' (MC3417) and williams drivers (HC55516) following the original schematics. For HC55516 this is necessary as the original chip produces a very pronounced audible 16khz 'carrier' in its output audio even on the real chip, and these filters suppress this. This also happens to a lesser extent with the 8khz quieting waveform noise on both MC3417 and HC55516.
- Net Select Horse Racing: Victory Furlong: Redumped game
- Pacman Club
. Promoted 'Pacman Club / Club Lambada (Argentina)' and clone Pacman Club (set 1, Argentina) to working. Corrected inputs and restructured I/O stuff a bit for 'Pacman Club / Club Lambada (Argentina)'. Added inputs and protection latch for clone Pacman Club (set 1, Argentina).
. Removed clone Pacman Club (set 2, Argentina), since it's a bad dump.
- Pop'n Music 9: Moved game into kpython driver. Added notes for DS2430 data.
- Power Drift: Fixed small oversight in widescreen layout
- Reality Tennis: Added bruteforced but verified PLD dump to parent set. Fixed the clock per the crystal on the PCB. As per the game speed, we've recorded a small video for reference: https://www.youtube.com/watch?v=C1rzWiFDItA
- Side Pocket: Hook up MCU and removed simulation. Added correct sound rom for clone Side Pocket (Japan, Cocktail). Correct rom labels and misc informational updates.
- Wedding Rhapsody: Added option to use joystick/button inputs. Control panel type can be selected in service mode. This allows playing with joystick/button inputs, and also allows the completely unused second and third button inputs to be tested in service mode. It's still possible to navigate service mode and correct the control panel setting if the wrong type is selected.
- Fixed rom names in champbas.cpp, enigma2.cpp, segasp.cpp, sidepckt.cpp and tmaster.cpp
- Dipswitch fixes in dec0.cpp, igs017.cpp and pacman.cpp
- Description changes of Astro Fighter (Famaresa bootleg, set 1), Bagman (Stern Electronics, revision A4), Bagman (Stern Electronics, revision A5), Bowling Try!, Diana Bifuca (v7.27), 'Net@Select: Horse Racing - Victory Furlong', 'Net@Select: Salaryman Kintaro', Pacman Club (Argentina), Reality Tennis (set 1), Side Pocket (Japan, Cocktail) and Thrill Drive (EAB)
- Renamed (bagmans2) to (bagmans4), (dibifuca) to (dibif727), (raycris) to (raycrisj) and (thrilldae) to (thrilldbe)
. VIDEO RENDERING SYSTEM
. Cleaned up bitmap API: Made const-qualified pixel accessors (pix, pixt, raw_pixptr) return const-qualified references/pointers to pixesl, and added non-const versions. This makes bitmap more like standard library containers where const protects the content as well as the dimensions. Made the templated pixt accessor protected - having it public makes it too easy to inadvertently get a pointer to the wrong location. Removed the pix(8|16|32|64) accessors from the specific bitmaps. You could only use the "correct" one anyway, and having the "incorrect" ones available prevented explicit instantiations of the class template because the static assertions would fail. You can still see the pixel type in the bitmap class names, and you can't assign the result of &pix(y, x) to the wrong kind of pointer without a cast. Added fill member functions to the specific bitmap template, and added a explicit instantiations. This allows the bitmap size check to be skipped on most bitmap fills, although the clipping check is still there. Also fixed a couple of places that were trying to fill an indexed 16-bit bitmap with rgb_t::black() exposed by this (replaced with zero to get the same net effect). The explicit template instantiations in the .cpp file mean the compiler can inline the function if necessary, but don't need to generate a local out-of-line body if it chooses not to. Extended the size of the fill value parameter in the base bitmap class to 64 bits so it works correctly for 64-bit bitmaps. Fixed places where IE15 and VGM visualiser weren't accounting for row bytes potentially being larger than width. Fixed an off-by-one in an HP-DIO card where it was treating the Topcat cursor right edge as exclusive. Updated everything to work with the API changes, reduced the scope of many variables, added more const, and replaced a few fill/copy loops with stuff from .
. Consider that screens can be hidden when choosing a default view (emu\render.cpp)
. OpenGL: Fixed stray space char in osd_opengl.h
. Pre-load image components when changing video options (emu\render.cpp and rendlay.cpp)
. Allow item animation to emu\rendlay.cpp
. Various improvements to image file handling: Moved MS DIB parser out of ICO file reader and made it available for artwork and layout images. Added more efficient I/O and better error checking for JPEG file loading (MAME will no longer exit immediately on a bad JPEG file). Made caller responsible for opening files for loading images, to avoid decompressing images used in ZIP/7z artwork multiple times. Added support for JPEG and Windows DIB to picture_image_device. Added support for SVG image files in external artwork. Added support for using I/O port value for animation state and masking animation state values. Made bounds elements more flexible in layouts. Reworked headers to reduce dependencies. Updated layout file format documentation.
. Allow layout files to embed image data. Also improved symmetry of disk components, fixed positioning of components when fitting to the pixel grid, and fixed inherited color when item has no color specified. Removed the dotmatrix components from complay.py - there are more flexible ways to achieve the same thing.
. C99 doesn't need float-to-double-float for floor (emu\rendutil.h)
. Use steady clock for timing double-clicks (osd\windows\window.cpp)
. Load from all external artwork paths (emu\render.cpp). Made real component drawing code a bit less gross (emu\rendlay.cpp). Less screaming now that things aren't macros (debug\debugcon.cpp).
. Draw disk components with area-based anti-aliasing. Also fixed alpha blending within an element for rect and disk components. Fixed accumulation error causing black pixels on certain transparent colours (emu\rendlay.cpp).
. Got rid of an unused capture that upsets Clang (emu\rendlay.cpp). Fixed an issue reporting the full path of files found in archives that was breaking artwork (emu\fileio.cpp).
. Fixed issue causing elements to be clipped on bottom/right (emu\render.cpp). Tidied up and optimised ellipse drawing code a little (emu\rendlay.cpp). Reduced space between LEDs on several systems with matrix displays. Work around error accumulation issue that could cause hang with x87 floating-point (emu\rendlay.cpp).
. Avoid another issue with floating point error accumulation when drawing disk components. Fixed one more place where disk drawing had error accumulation issues (emu\rendlay.cpp)
. Don't clear memory before constructing devices, with the exception of drivers for now. This substantially reduces the overhead of running -validate, -romident, etc. and brings us a little closer to not needing to disable lifetime dead store elimination optimisations. There are likely to be some issues that weren't fixed while this was still on a branch, so everyone be alert (emu\device.h).
. Show software selection menu before doing system audit, for casual browsing.
. Made the event type a scoped enum (emu\uiinput.cpp). Show device descriptions as well as tag paths (ui\inputmap.cpp).
. Only populate BIOS Selection menu with system and slot cards that actually have BIOS options (ui\miscmenu.cpp and ui\info.cpp) (ID 06675)
. Apply shift to analog fields in preview (ui\analogipt.cpp)
. Allow keyboard devices to be enabled/disabled. This fixes the "typing on all keyboards at once" issue. You can now enable and disable keyboard/keypad inputs per device in the Keyboard Mode menu. Default is to enable the first device with keyboard inputs and all device with keypad inputs but no keyboard inputs. The settings are saved in the CFG file for the machine. Typing in natural keyboard mode only ever types on one keyboard at a time, but now you can control which keyboard it types on, as it will be the first enabled keyboard. You can easily try this out with something like: mame64d zorba -rs232 terminal cpm.
. Improved initial keyboard enable settings when changing slot options (emu\ioport.cpp)
. Updated to SQLite 3.33.0 and 3rdparty/expat to 2.2.10
. Sync Nano SVG with upstream (3rdparty\nanosvg). This version is supposed to be less sensitive to the global locale.
. MULTI-LANGUAGE: Updated Turkish translation
. Got rid of most of the remaining problematic uses of make_unique_clear and on 'manager' objects (emu\machine.cpp)
. Got rid of global_alloc/global_free. The global_alloc/global_free functions have outlived their usefulness. They don't allow consistently overriding the default memory allocation behaviour because they aren't used consistently, and we don't have standard library allocator wrappers for them that we'd need to use them consistently with all the standard library containers we're using. If you need to change the default allocator behaviour, you can override the new/delete operators, and there are ways to get more fine-grained control that way. We're already doing that to pre-fill memory in debug builds. Code was already starting to depend on global_alloc/global_free wrapping new/delete. For example some parts of the code (including the UI and Windows debugger) was putting the result of global_alloc in a std::unique_ptr wrappers without custom deleters, and the SPU sound device was assuming it could use global_free to release memory allocated with operator new. There was also code misunderstanding the behaviour of global_alloc, for example the GROM port cartridge code was checking for nullptr when a failure will actually throw std::bad_alloc. As well as substituting new/delete, I've made several things use smart pointers to reduce the chance of leaks, and fixed a couple of leaks, too.
. Fixed failure to recognise device ROMs that use continue/ignore load commands (mame\audit.cpp). Better heuristics for matching shared ROMs (ID 07410). This should address at least some of the remaining issues from MT07410 and GitHub #7314. If this causes issues like MT07756 to reappear, it will need to be fixed/reverted before release.
. Optimised some SVG images (images\MAMElogo.svg and images\mahjongpanel.svg). Cleaned up some geometry on MAME logo.
- VGM player: Added 43 new entries and updated 24 entries based on recent releases. Adjusted a few short names to correct some badly applied machine tags (hash\vgmplay.xml).
. FreeBSD fixes. Use gl includes from pkg-config. GenieOS is named simple BSD.
. Fixed link errors with new versions of Emscripten (scripts\genie.lua)
. Created GitHub Actions for CI. This is intended as a replacement for AppVeyor and parts of TravisCI. It will create full builds of MAME (including tools) for the following platforms: Linux (GCC and Clang), macOS (Clang) and Windows (GCC and MSVC 2019). It will also upload the resulting executable as artifact so that it can be used for regression testing. This commit also removes the unused TeaCI drone files.
. Allow memory size to grow at runtime for Emscripten when targeting WebAssembly as there is no longer a performance hit (scripts\src\main.lua)
. Added build fix for older OS X versions (scripts\src\3rdparty.lua)
- Debugger: Removed more macros, added more const and make a couple more things use smart pointers (emu\debug\*).