Release Date

MAME 0.186 was released on 31 May 2017.


MAMETesters Bugs Fixed


Machine Support

New working machines


New working clones


Machines promoted to working


Clones promoted to working


New machines marked as MACHINE_NOT_WORKING


New clones marked as MACHINE_NOT_WORKING


Notable new WORKING software list additions


Notable new NOT WORKING software list additions


Contributions

The known contributions for this version are, in the order specified in the whatsnew:


  • Angelo Salese updated seibucop.cpp: Fixed Legionnaire / Heated Barrel scenery walking bug (a different 138e is used).
  • Angelo Salese updated epos.cpp: Several changes to The Dealer, Revenger '84 and Beastie Feastie hardware:
    • Fixed RAM based colors.
    • Added backup RAM support.
    • Added flip screen support.
  • Angelo Salese updated m14.cpp: Revised PT Reach Mahjong, making it actually work:
    • Added ball and paddle screen drawing, green background as per flyer pictures, and flip screen support.
    • Added reach button and updated input labels.
  • O. Galibert updated the z180 core: Fixed obvious typo detected by Coverity, thanks Coverity.
  • AJR added a mechanism for devices to generate clocks for other devices:
    • Made set_unscaled_clock and set_clock_scale not call notify_clock_changed unless the device has been started.
    • Made owner-derived clocks update whenever the owner's clock changes, including at configuration time.
    • Add clock_update_delegate type to represent device-generated clock outputs that may be dynamically modified.
      • Model implementation of this is the CLK output in I8085A.
  • AJR partially rewrote uPD4701 device and hooked it up to a few Sega games.
  • AJR added uPD4701A device to cabal (trackball sets), calibr50, eaglshot, horshoes, poundfor and wwallyj.
  • AJR updated segae.cpp: Added PPI and coin counters.
  • AJR made MC-8123 into a device.
  • AJR updated megatech.cpp: Fixed Free Play regression.
  • AJR updated arabfgt: Replaced protection MCU simulation with emulation of actual program.
  • AJR updated taito_l.cpp: More MB8421, less HOLD_LINE (fixes sound in evilston).
  • AJR updated the acommand driver: Use tilemap device.
  • AJR updated daytona: Added feedback driver board (including ROM).
  • AJR updated fresh.cpp: Added some sound.
  • AJR updated liberate.cpp: All PSGs are AY-3-8912A.
  • AJR updated mrflea: Use PPIs for interboard communication and PIC for sub interrupt.
  • AJR updated model1.cpp: Worked around race condition that caused vf to lose sound.
    • Causes swa to show an error message before booting normally due to poor I/O board emulation.
  • AJR fixed bug that permanently disabled some UI search strings when they were cleared.
  • AJR made the framework copy longname, manufacturer, year, filetype, etc. for image info in all softlisted cases.
  • AJR made -listroms display a user-friendly message when no ROMs are required.
  • AJR provided improvements to romcmp:
    • Identify plain ASCII text files as such.
    • If a ROM has the same data in each half, print the hashes for that.
    • Avoid buffer overruns.
    • For calculating address masks, don't assume file size to be a power of 2.
  • Carl replaced linenoise-ng with a simpler port that uses a different UTF-8 parser.
  • Carl updated plugins/console: Improved suggested completions.
  • David Haywood updated luckgrln.cpp: Added DIPs and layout for 7smash, promoted to working.
  • David Haywood did preliminary steps for basic VT03 (NES clone) support:
    • Allowed derived classes to extend the PPU functionality to support the basic modes.
    • Added VT03 PPU variant and machine driver.
    • Moved mc_dgear from nes.xml to this driver and added several dumps.
    • Added some support for cybar120 extended sprite addressing.
  • David Haywood provided scyclone.cpp updates - promoted to working:
    • Added sprite colours and preliminary starfield (no twinkle, uncertain star positions).
    • Documented probably hardware collision feature.
    • Added preliminary flipscreen support.
    • Added sound - discrete section missing.
    • Added save state support.
  • Dirk Best updated ojankohs: Rewrote input handling:
    • Added missing player 2 controls.
    • Verified and removed non-existent keys from games.
    • Added DIP switch locations to all games and identified some unknown DIP switches.
    • Cleaned up and corrected code, and removed runtime tagmap lookups.
  • Dirk Best hooked up PPI(s) for chinsan, igspoker, jackie, megaphx, thief and upscope.
  • Dirk Best updated chinsan: Merged with mayumi driver, general improvements and cleanup:
    • Cleaned up inputs and added flip flop and statistics buttons.
    • Identified coinage and demo sound DIP switches.
    • Set YM2203 clock to a more likely 10MHz/8.
    • Hooked up interrupt enable, flip screen and NVRAM.
  • Dirk Best updated thief: Verified XTALs and cleaned up machine configurations.
  • Dirk Best updated megaphx: Replaced PIC16C54 MCU simulation with emulation using existing dump.
    • Also cleaned up DIP switches, added DIP locations, and added documentation.
  • Dirk Best added new SN54/74166 8-Bit Parallel-In/Serial-Out Shift Register device.
  • Dirk Best updated the ym2203 device: Fixed crash on fatal errors.
  • Dirk Best updated emupal: Added error handling and allowed palette region name to be overridden.
  • Dirk Best replaced some custom palette initialisation functions with appropriate standard callbacks.
  • Dirk Best updated the ui: Added ability to select different tilemap categories in tilemap viewer with page up/down keys.
  • Joakim Larsson Edstrom provided via6522 updates, adds support for external clock:
    • Refactored shifter, adding support for more features and fixing a few bugs.
    • Tuned shifter IRQ timing to be more cycle accurate.
    • Fixed the flank timer value, which improves but doesn't completely fix the vectrex regression.
  • Joakim Larsson Edstrom updated the z80scc device: Implemented Reset Tx Interrupt Pending Command (fixes virtpool).
  • Luca Elia added support for Seiko S-29X90 16-bit EEPROMs.
  • Luca Elia provided Seta ST-0020 updates: added 4 tilemaps and switchable resolution - ST-0032 video on par with ST-0020.
  • Luca Elia updated jclub2.cpp: Jockey Club II updates:
    • Split sets by software revision.
    • Added default EEPROMs and documented the procedure.
    • Finished I/O and added layout for on-screen keyboards.
    • Added sound communication.
    • Fixed backgrounds and colors.
  • MetalliC added hopper-like mode to ticket dispenser device.
  • Michael Zapf updated the ti99 driver: Improvements to peripheral handling:
    • Rearranged bus/ti99 subtree, moved classes into namespaces, moved ti99 stuff from ti99x to ti99/internal.
    • Split big, all-in-one gromport.cpp into separate device files, introducing "gromport" as a bus of its own.
    • Added console connector "ioport" with PEB as slot option - PEB now needs to be plugged into TI-99/4/4A/8.
  • Nathan Woods added hack to fish hashpath option out of INI files prior to softlist evaluation.
  • Nathan Woods fixed issue in image identification code accessing an empty vector when the hashed data length is zero.
  • Nathan Woods updated the CoCo driver: Made 6883 SAM control the root device clock, and changed CoCo devices to use derived clocks.
  • Nathan Woods provided cleanups to ram_device:
    • Expose specific options, removing the burden of parsing RAM strings from clients.
    • Moved validation of command line arguments out of device_validity_check().
  • Nathan Woods provided imgtool updates:
    • Cleaned up validity code and transitioned to std::wcerr as Windows doesn't like mixing std::wc(out|err) with printf.
    • Fixed issue with 'listfilters' command.
    • Extremely basic fix to the imgtool <-> CHD HD bridge (really needs much more work).
    • Simplified CHD metadata load since C++11 allows writing to a std::string directly.
  • Nathan Woods provided Windows options fixes:
    • Removed redundant ";global_inputs".
    • Disambiguated "yiqp" abbreviation - YIQ phase count is now "yiqpc" (YIQ pixel clock scaling is still "yiqp").
  • Nathan Woods did an auxiliary verb handling cleanup:
    • Fixed a bug where resolved slot/image options would choke -romident.
    • Fixed crash when -romident is not supplied any arguments.
    • Converted verb handlers to take arguments as a vector of strings.
    • Fixed regression preventing -listslots/-listmedia working when slot options are specified.
  • Nathan Woods made the core to not strip spaces/quotes from command line arguments, only INI option values.
  • Nathan Woods fixed an issue that could cause problems when loading reset_on_load devices from software lists at runtime.
  • Nathan Woods provided miscellaneous cleanup and modernisation:
    • Polished up traces of slot options menu's pre-C++ heritage and moved completely private code to an anonymous namespace.
    • Created device_slot_interface::slot_name() to wrap pattern of taking the tag and removing the initial colon.
    • Changed running_machine::schedule_* save() to take 'std::string &&' instead of 'const char *'.
    • Converted running_machine::saveload_schedule to scoped enum.
    • Changed 'int ignore_warnings' parameter on core_options::parse_ini_file() to 'bool ignore_unknown_options'.
    • Retired min/max in attotime.h in favor of std::[min|max]().
  • Nigel Barnes updated the cgenie driver: Fixed loading ROMs from softlist in floppy interface.
  • Nigel Barnes updated the wicat driver: Added floppy drive and attached software list (not working).
  • BartmanAbyss updated the z180 core: Added support for DREQ and TEND signals, and fixed dma0 count and DREQ handling.
  • Robbbert fixed two software loading bugs:
    • Fatal error on reset if either a multipart softlist item was loaded, or a single-part item was loaded into a system with more than one slot of the same media type.
    • Fatal error on non-existent images specified in INI files (bad image is ejected, restoring previous behaviour).
  • Samuele Zannoli provided xbox/chihiro updates:
    • Migrated PCI devices to new PCI bus framework.
    • Made USB peripherals slot devices.
  • Ted Green updated the seattle, vegas drivers: Updated drivers to new PCI bus system.
  • Ted Green updated the iteagle driver: Added save state support.
  • Ted Green updated the vrc5074 device: Added new Nile 4 System Controller device.
  • Tomasz Slanina fixed graphics decode issues and improved palette generation in Dodge Man and Battle Cross.
  • Wilbert Pol updated the hcd62121 device: Improved rotate and shift instructions; identified COM and PORT registers; fixed unidasm configuration.
  • BartmanAbyss provided H8 improvements:
    • Fixed nstruction eepmov.b (used r4h instead of r4l).
    • Added support for non-autorequest DMA (DREQ edge, DREQ level).
    • Added support for H8/300H to h8_dma (previously only H8/300S supported).
    • Added DMA channels and RTMCSR register to H8/3002.
  • BartmanAbyss added (partial) correct register mappings to HD6345.
  • F.Ulivi and A.Kueckes updated hp9845: Added Support for HPI floppy format used for HP-formatted 8" floppy disks.
  • F.Ulivi updated hp9895: Fixed a segfault when emulating the HP9845 drive (caused by rounding errors).
  • F.Ulivi updated hp9845: Display improvements and softkey support:
    • Improved text video of 45C, improved graphic cursors of 45C and 45T, and implemented softkeys for 45C and 45T.
  • F.Ulivi updated hp9845: Fixed a system freeze when loading memory tester from tape.
  • Frank Palazzolo updated starshp1: Removed hack to restore correct behavior when ships explode.
  • Happy updated the N64 RSP DRC: Wrap PC to 12 bits in a few more places.
  • Jean-Francois DEL NERO added support for French Minitel 2 Terminal:
    • Added support for TS9347 display processor variant.
    • Fixed visible area.
    • Fixed random crash in EF9345/TS9347 when drawing characters at right or bottom border.
  • Jean-Francois DEL NERO fixed 6800 invalid instruction length/program counter behavior and renamed invalid opcodes.
    • This makes goupil g1 Basic work.
  • Katsuhiko Kagami fixed audio sample ROM mapping and corrected title of Pata Pata Panic.
    • Previously called "Acchi Muite Hoi" based on incorrect auction description.
  • Patrick Mackinlay provided InterPro improvements - ip2800 boots to FDM prompt with many memdiag test failures:
    • Fixed CPU/MMU ssw bug.
    • Added preliminary nscsi support.
    • Added preliminary MMU address translation.
    • Expanded memory maps for several devices.
    • Improved IRQ and DMA handling (still not working properly).
    • Stubbed out more SGA registers, added SRARB.
    • Added NCR53C94 support to ncr5390.cpp.
    • Added start/stop unit command to t10spc.cpp.
  • Steven Hugg fixed issue with the Emscripten port where the emulation would continue to run while paused.
  • Tim Lindner updated the CoCo driver: Added support for Games Master Cartridge developed by John Linville as slot device.
  • Couriersud provided Netlist library updates:
    • Changed Solver.PARALLEL parameter definition - 0: no parallelism; 1: one processor parallel; >1: solve n subnets in parallel.
    • Refactored OPENMP - all OPENMP operations are now templatized in pomp.h.
    • Added 16-bit Galois LFSR generator (used to simulate thermal junction noise in Cheeky Mouse).
  • Vas Crabb and Couriersud updated cheekyms: Added netlist-based discrete audio emulation, replacing the placeholder DACs.
    • Thanks to Sam Grech for supplying high-quality scans of the schematics.
  • Vas Crabb updated monymony, jackrabt: Added netlist for analog processing in melody section of 1B11132 sound board.
    • Added a crude TTL Schmitt trigger model that allows input to source current.
    • Thanks to Couriersud for fixing a rather stupid typo in the tromba (trumpet) section of the netlist.
    • Cassa (bass drum) is currently disconnected as it causes issues with current simulation.
    • Mixing melody with speech and SFX is done outside the netlist, and relative levels are probably wrong.
  • Vas Crabb did a wide-ranging modernisation/cleanup:
    • Moved static data (short name, full name, source file) out of devices and into device types.
    • Moved state class out of MACHINE_CONFIG_START, eliminating need for MACHINE_CONFIG_FRAGMENT and MACHINE_CONFIG_DERIVED_CLASS.
    • Made game drivers add machine configuration in the same way as any other device.
    • Added support for machine configuration in device members, allowing many internal handlers to be made protected or private.
    • Moved many constants used internally by devices out of headers and into source files.
    • Converted many constants to scoped enums, and reduced scope of many constants and types.
    • Made many callback setters forward the parameter
    • Cleaned up many names that are reserved because they begin with _[A-Z] or contain two consecutive underscores.
    • Gave many devices more descriptive names, and renamed some device types and classes with overly generic names.
    • Untangled fantasy sound and Microprose 3D noise from the driver state classes.
    • Converted DECO BSMT2000 ready callback from a function pointer to a device delegate.
    • Made many devices use object finders for subdevices rather than doing tagmap lookups later.
    • Started to disentangle TI-99 from TI-990 and organised stuff by bus type.
    • Made some TI-99 buses use slot/card interfaces properly.
    • Turned some of the FM, SID, SCSP DSP, EPIC12 and Voodoo cores into idiomatic C++.
    • Factored out some boilerplate for YM chips with PSG.
    • Made Z180 table allocation/setup a bit safer.
    • Improved encapsulation of Z80DART channels and SNES PPU.
    • Converted generic keyboard and terminal to use a device delegate rather than WRITE8 since space/offset/mask aren't relevant.
    • Made terminal device dynamically allocate buffer so derived devices (e.g. teleprinter) can specify size.
    • Started to break out common parts of Samsung ARM SoC devices.
    • Consolidated and de-duplicated forward declarations in src/emu, and removed some obsolete ones.
    • Added #include guards to many headers that were missing them, and made many existing ones consistent.
    • Removed rarely used output and PTY interfaces from emu.h prefix header.
  • Vas Crabb provided improvements to auxiliary verbs:
    • Added support for device sets to -listroms (e.g. mpu401 or m68705p3).
    • Added support for multiple names/patterns to -listroms, -verifyroms and -listxml.
    • Added check that device short names don't exceed 32 characters in -validate.
    • Made -listxml instantiate slot devices as children of slots rather than the root device.
    • Improved performance of device type walk by at least two thirds.
  • Sean Riddle and Lord Nightmare updated the Williams Special Chip 1/2 device: Added pinout diagram, clarified abbreviations, and fixed comments about SC1 vs SC2 behavior.
  • Lord Nightmare updated the Irem audio device: Replaced generic latch with more accurate emulation:
    • Fixed missing D7 on sound latch, made device_reset clear latch; fixed case where sound CPU interrupt could be cleared in error.
  • Lord Nightmare provided epos.cpp updates:
    • Corrected ROM names/comments and added rom types based on PCB pictures.
    • Noted that revngr84 is a newer set than revenger based on ROM numbering.
    • Implemented Tristar 9000 hardware AY-3-8910 port A 'multiplexer'.
    • Switched Tristar 8000 hardware to use AY-3-8912 as shown on schematics.
  • Lord Nightmare updated the BP1200 driver: Mostly traced out the SM48D socket module.
  • Lord Nightmare added a note and flag indicating that Williams' Mayday has unemulated protection that is currently hacked around.
  • dankan1890 cleaned up GENie Lua scripts and corrected some header file names.
  • dankan1890 made software list menu appear if appropriate when starting a machine from the Favorites menu.
  • ShouTime updated scyclone.cpp: Redumped bad ROM, dumped PROMs.
  • ShouTime updated williams.cpp: Redumped defenderj bad ROM, game now works.
  • rtw added Japan Dreamcast flash dump.
  • rtw updated segas18.cpp: Dumped later version of Shadow Dancer sound CPU ROM, documented main program EPR labels.
  • PinMAME updated by68701.cpp: Added missing ROM dump for flashgdnp1.
  • Heihachi_73 updated aristmk4, aristmk5, aristmk5: Added more sets and improved documentation.
    • Many dumps were corrupted by being transfered to a UNIX system using FTP mode A.
  • sjy96525 updated Taito Power JC and Taito Type Zero descriptions.
  • sjy96525 added working controls for War: Final Assault and Road Burners.
  • sjy96525 improved Critter Crusher / Tatacot Gun Control.
  • Dagarman updated hh_tms1k.cpp: Fix spelling error in cnbaskb description.
  • Mark Riley updated xbox: Replaced bad dump of MCPX 1.0 ROM with checksums with correct checksums.
  • Guru updated the Amiga driver: Use correctly sized boot ROMs for the A1000 (mask ROMs are much larger than the content).
  • Guru updated royalmah.cpp: Redumped mjyarou and verified it only has one Z80.
  • Bad A. Billy updated dsoccr94: removed redundant DIP switches.
  • Brandon Munger updated the r9751 driver: Added terminal keyboard callback.