- New games: Gunstar Heroes (Mega Play), Hashire Patrol Car (J 990326 V1.000), Jang Taku (V 1.3) and Space Cyclone
- New Working games: 7 Smash, Heated Barrel, Jockey Club II, Legionnaire, Mahjong Yarou, MegaTouch XL, MegaTouch XL 6000, Microman Battle Charge, Poker Genius, Revenger '84, T.T. Defender, Technical Bowling and Tetris Fighters
- New Non-Working games: A-Plan, Dream Hunting (US), Dragon Treasure (Rev B) (GDS-0030B), Football Power, Mushiking The King Of Beetles 2004 Second (Japan), Quest of D Oukoku no Syugosya Ver. 3.02 (CDV-10026D), Quest of D The Battle Kingdom (CDV-10035B), Royal King Jang Oh 2 (v4.00 1984 Jun 10th), Shoot Away II and Hog Wild (US)
- New clones: Bagman (Taito), Bucky O'Hare (ver JAA), Cadillacs and Dinosaurs (Asia TW 930223, bootleg?), Capcom Vs. SNK 2 Mark Of The Millennium 2001 (GDL-0008), Captain Silver (Japan, revision 1), Dottori-Man Jr., Dragon Treasure (Rev A) (GDS-0030A), Galaxy Wars (Taito), Jackal (bootleg, Rotary Joystick), King of Boxer (Japan), Mahjong Yarou [BET] (Japan, set 2), Mandinga (bootleg of Amidar), Mega Force (World), MegaTouch XL 6000 (Version r04), Mouse Trap (version 4, bootleg), Nebulous Bee, Nibbler (rev 7), Ojanko Club (Japan, Program Ver. 1.2), Pang (bootleg, set 5), Penky (Italian), Phoenix (Hellomat Automaten bootleg), Rastan Saga (Japan Rev 1), Real Mahjong Haihai (Japan, older), Revenger '84 (newer), Shiritsu Justice Gakuen: Legion of Heroes (Japan 971216), Space War (Leisure and Allied), Space Wipeout, Special Forces Elite Training (v01.02.00), Star Sweep (World, STP2/VER.A), Star Trek: Voyager (stand-up version 1.002), Super Street Fighter II: The Tournament Battle (Asia 931005), Tatacot (JA 951128 V1.000), Thrill Drive 2 (ver JAA), Top Landing (Japan), Touchmaster 2000 (v4.XX3 Spanish Evaluation), Touchmaster 3000 (v5.02 Spanish), Touchmaster 3000 (v5.XX Standard AMOA Evaluation) and Wonder Boy (set 6, 315-5179)
- New AGEMAME games: Bachelorette Party (BHG1579, US), Betting Zoo - Mr. Cashman (0251064, US), Big Ben (20126911, NSW/ACT), Big Red (1J009211, NSW/ACT), Buccaneer (0252523, US), Canyon Rose (AHG1463, US), Cash Crop (0300447V, NSW/ACT), Diamond Destiny (AHG1533, US), Dynamite Jack (CHG1562, US), Enchanted Forest - Cash Express (CHG1536, US), Fortune Fever (BHG1566, US), Geisha - Jackpot Carnival (0351033, US), Helen of Troy (1J008311, NSW/ACT), Inca Sun (DHG1577, US), Jumping Beans (0100161V, NSW/ACT), King Penguin (20109021, NSW/ACT), Koala Mint (CHG1573, US, set 2), Loco Loot (AHG1513, US), Margarita Magic (EHG1559, US, set 2), Mountain Money (BHG1465, US), Mountain Money - Cash Express (AHG1629, US), One For All (0101503V, New Zealand), Party Gras (AHG1568, US), Peacock Magic (0151352, US), Penguin Pays (0300113V, NSW/ACT), Pompeii (0151158, US), Queen of the Nile (0301059V, Holland), Queen of the Nile Special Edition (20102811, NSW/ACT), Return of the Samurai (10117211, NSW/ACT), Scatter Magic III (0452569, US), Sun & Moon (0251303, US), Super Bucks II (0300006V, NSW/ACT), Sweet Liberty Deluxe (AHG1575, US), Toucan Tango (0301388V, Holland), Unicorn Dreaming (BHG1584, US), Wild Coyote (AHG1515, US) and Wild Thing (0201176V, NSW/ACT)
- New PinMAME games: Teenage Mutant Ninja Turtles (1.04) Germany
- New PEPlus games: Player's Edge Plus (PS0629) Double Hot Peppers Slots
- New drivers: scyclone.cpp, shootaway2.cpp and unianapc.cpp
- New devices: cheekyms_audio, gt64xxx, k054321, mb89352, mc8123, s29190_16, s29290_16, s29390_16, ttl166, usb_connector and vrc5074
- New ClrMamePro version: https://mamedev.emulab.it/clrmamepro/#downloads
- ADSP21062 / SHARC CPU: Fixed SHARC disassembly in debug build (cpu\sharc\sharc.h)
- H8 CPUs
. Fixed H8 instruction eepmov.b (used r4h instead of r4l). Added support for non-autorequest DMA (DREQ edge, DREQ level) in H8.
. Added support for H8/300H to h8_dma (previously only H8/300S supported)
. Added DMA channels and RTMCSR register to H8/3002
- I80186/286 CPU: Added opcodes config stuff
- M6800 CPU
. Fixed invalid instruction length / Program counter behavior. Fixed random crash while drawing characters at the screen borders. draw_char_40 & draw_char_80 : use of std::min. Fixed invalid instructions length. Each 6800 invalid opcodes have a different behavior. This commit fix the PC increment of each invalid opcode execution. There is three groups of invalid opcodes: One byte invalid opcodes/instructions: 00,02,03,04,05,12,13,15,18,1A,1C,1D,1E,1F,21, 38,3A,3C,3D,41,42,45,4B,4E,51,52,55,5B and 5E. Two bytes invalid opcodes/instructions: 61,62,65,6B,83,93,A3,C3,D3,DC,E3,EC and ED. Three bytes invalid opcodes/instructions: 71,72,75,7B,B3,CC,CD,F3,FC and FD. Behavior checked from the Visual 6800 and the real hardware (goupil computer) http://www.visual6502.org/JSSim/expert-6800.html.
Invalid opcodes renamed.
. Quick and dirty split of most MC6801/MC6803/HD63701 features from base M6800 class. The code remains generally archaic and awful and in need of a sweeping rewrite. At least one static variable is no more.
- MC-8123 CPU: Make MC-8123 into a device (chinsan.cpp, freekick.cpp, ninjakd2.cpp, segae.cpp, segas16b.cpp and system1.cpp). Fixed IRQ-related regression in Gigas (freekick.cpp).
- MCS-48 CPU: Converted MCS-48 ports to devcb: T0, T1 and PROG handlers are now 1-bit rather than 8-bit. Eliminate several T0/T1 handlers that DEVCB macros can take care of now. T0 CLK output emulation.
- SPC700 CPU: Get rid of unneeded shifts. Fixed N flag in OP_LSRM.
- TMS32031/2 CPUs: RTPS should be RPTS
- TMS34010 CPU: Fixed DASM of MOVB/MOVE absolute to absolute
- Z180 CPU
. Added support for DREQ and TEND signals. Fixed DMA0 count and DREQ handling.
. Fixed obvious type detected by Coverity (software)
. Tried to make Z180 table allocation/setup a bit safer
- BSMT2000 sound: Changed DECO BSMT2000 ready callback into a device delegate
- MSM5205 sound: Use clocks_to_attotime
- Q-Sound: Updated QSound/DL-1425 ROM and comments with corrections from recent decap
- SCSP sound: Fixed SCSP UNPACK sign extension (sound\scspdsp.cpp)
- SN76477 sound: Unconnected resistor treated as invalid even though it's the initial value
- uPD7759 sound: Fixed/Reduced logging
- Y8950, YM2608 and YM2610/B sound: Tidy up some code (sound\ymdeltat.cpp)
- YM2203 sound: Fixed crash on fatal errors (sound\2203intf.cpp)
- 6522 VIA
. Refactored shifter supporting more fetures and fixed a few bugs. Removed old code and cleaned up a bit.
. Tuned shifter IRQ timing to be more cycle accurate
. Fixed the flank timer value which improved but not completelly reverted the Vectrex regression
- 8255 PPI
. Hook up 8255 PPIs to chinsan.cpp, igspoker.cpp, jackie.cpp, megaphx.cpp, segae.cpp, taito_l.cpp, tatsumi.cpp (apache3 and roundup5), thief.cpp (thief) and upscope.cpp
. Use 8255 PPIs for interboard communication and PIC for sub interrupt in mrflea.cpp
- CHDMAN: Minor improvement to CHD metadata loading. Writing into an std::string is now legal with C++11 (util\chd.cpp).
- Discrete Netlist
. Changed Solver.PARALLEL parameter logic: 0 = Parallel processing of solvers disabled. 1 = One processor parallel processing. Can be used to measure OPENMP overhead. >1 = Solve n analog subnets in parallel. Previously, all available processors were used which caused performance to degrade on hyperthreading.
. Netlist refactoring: OPENMP refactored. All OPENMP operations are now templatized in pomp.h. We don't need thread-safe priority queue. Event code updating analog outputs now runs outside the parallel code.
. Reordered members to be more cache friendly (devices\nld_7493.cpp and nld_9316.cpp)
. Cleanup of solver code. Various code alignments across solvers. Added Cheeky Mouse to mamenl build. Fixed state saving for pfunction lfsr.
- EEPROM: Added support for Seiko S-29X90 16-bit EEPROMs (machine\eepromser.cpp)
- IDE PCI interface: Added save states to machine\pci-ide.cpp. Allow for setting the top 12 decode address bits in legacy mode, moved default legacy address assignment from device_start to device_reset, allow for address size resolving even in legacy mode and added function to set default PIF byte (machine\pci-ide.cpp).
. Cleanups to validity code and transitioned to std::wcerr. Windows doesn't like mixing std::wc[out|err] and printf().
. Fixed issue with 'listfilters' command. Extremely basic fix to the Imgtool <==> CHD HD bridge. This really needs much more work (MT #06576).
- Konami Custom
. Implemented K054321 as a device (gijoe.cpp, lethal.cpp, moo.cpp, mystwarr.cpp, rungun.cpp, xexex.cpp and xmen.cpp). Fixed validation for drivers\xmen.cpp. Fixed K054321 for Lethal Enforcers and Monster Maulers.
. Added save state support to K054321. Also removed unneeded includes from the driver where the generic soundlatches were removed.
- MC6845 CRT: Added (partial) correct register mappings to HD6345
- Nintendo Custom
. Added wrappers for SNES PPU operations so members can be made protected (video\ppu2c0x.cpp and video\snes_ppu.cpp)
. Basic VT03 video support. Some support for extended sprite addressing used by (MESS) Cyber Arcade 120-in-1
- Seta Custom: Added 4 tilemaps and switchable resolution to ST-0020. ST-0032 video on par with ST-0020.
- TTL: Added SN54/74166 8-Bit Parallel-In/Serial-Out Shift Register (machine\74166.cpp)
- uPD4701 counter: Partially rewrite uPD4701 device and hook it up to cabal (trackball sets), calibr50, eaglshot, fbaitbc, forgottn, horshoes, poundfor, ridleofp, sonic and wwallyj
- Voodoo GFX: Some more Voodoo cleanup
- Z80 DART: Improved encapsulation of Z80DART channels
- Z80 CTC: Minor clock cleanup
- Z80 SCC: Implemented Reset Tx Interrupt Pending Command (machine\z80scc.cpp)
- aleck64.cpp: Wrap PC to 12 bits in a few more places (cpu\rsp\rspdrc.cpp and rspfe.cpp)
- atlantis.cpp and midzeus.cpp
. Added save state support to machine\pci-ide.cpp, pci.cpp, pci9050.cpp, vrc4373.cpp, video\zeus2.cpp and drivers\atlantis.cpp
. Atlantis driver cleanup
- battlex.cpp: Fixed graphics decode issues and improved palette generation in Dodge Man and Battle Cross
- bingor.cpp: Random cleanups
- chihiro.cpp: Migrated PCI devices to new PCI bus framework (machine\xbox.cpp). Some USB/OHCI renaming. USB hotfix. USB devices are now slot devices.
. Inputs cleanup, added flip flop and statistics buttons. Use tilemap system for rendering and general driver cleanup.
. Identify coinage and demo sound dipswitches
. Set YM2203 clock to a more likely 10MHz/8, restore PCB number.
. Merged mayumi.cpp with chinsan.cpp driver. Interrupt enable, flip screen hooked up and NVRAM support for chinsan.
- clshroad.cpp: Init background VRAM to 0xf0 and assume common divider for all Z80s
- cobra.cpp: Fixed some input issues
. Added flip screen support
. Fixed Revenger EPOS TRISTAR 9000 board clocks and rom labels. Combined, refined and expanded README's for both Revenger sets.
. Fixed RAM based colors and added backup RAM to dealer, revngr84/revenger and beastf
. Fixed Z80 CPU1 and AY-3-8910A clock speeds in dealer and revngr84/revenger
. Fixed input. I/O map 0x38 is actually AY8910 read in dealer.
. Implemented Tristar 9000 hardware AY-3-8910 port A 'multiplexer', PSG REGISTERS test can (in theory) pass with dipswitches set now.
. Switched Tristar 8000 hardware to use AY-3-8912 as shown on schematics (catapult, igmo, megadon and suprglob).
- flkatck.cpp: Fixed old regression when memorymaps were merged
. Set correct UART crystal frequency and added CPU delay to prevent TX UART timeouts (machine\iteagle_fpga.cpp)
. Added save states to sound\es1373.c, video\voodoo_pci.cpp, machine\iteagle_fpga.cpp and drivers\iteagle.cpp
- lastfght.cpp, subsino.cpp and subsino2.cpp: Used ramdac_device instead of custom implementations
- legionna.cpp: Fixed Legionnaire and Heated Barrel scenery walking bug (a different 138e trigger is used; machine\seibucop\seibucop.cpp/h and seibucop_cmd.hxx) (Games now playable)
- liberate.cpp: All PSGs are AY-3-8912A
- m52.cpp, m57.cpp, m58.cpp, m62.cpp and travrusa.cpp: Replaced generic latch with more accurate emulation. Fixed missing d7 on sound latch, device_reset to correctly clear sound latch and a potential situation where sound CPU/IRQ could be incorrectly cleared.
- megatech.cpp: Fixed Free Play regression
- micro3d.cpp: Untangled Microprose 3D noise from driver state
- mitchell.cpp: Fixed NVRAM saving
. Implemented workaround for race condition to fixed broken sound in Virtua Fighter (ID 06587). This fix causes 'Star Wars Arcade' to show an error message before booting normally, due to the I/O board not being emulated properly in the first place.
. Preliminary configuration of I386SX Polhemus CPU in Sega NetMerc
- mtouchxl.cpp: Fixed buttons, coins and key stuff
- multfish.cpp: Converted driver to use hopper device
- namconb1.cpp: Everyone gets all 4 player inputs. All games (even 2 player games) can test for all 4 player inputs and TEST switch. So for everything except Gun Bullet use the standard Namco System NB-1 inputs.
. Correct Asia "2" region to World
. Notes about S12 Network area stuff
- ojankohs.cpp: Rewrote input handling: Added missing player 2 controls. Verified and removed non-existing keys from games. Added dipswitch locations to all games. Identified some of the unknown dipswitches. Clean up and correct code. Removed tagmap lookups.
- royalmah.cpp: Removed aysnd tagmap lookups, partial move to configured banking and save state preparation.
. Updated driver to new PCI bus system
. Galileo GT-64xxx Controller: Removed address map trampolines and added save state support to machine\gt64xxx.cpp. Changed physical memory configuration to fixed crashes with Wayne Gretzky's 3D Hockey and NFL Blitz (machine\gt64xxx.cpp). Cap memory space mapping to physical memory bounds. Reduced Seattle board to 8 MB ram. Changed SDRAM configuration options (machine\gt64xxx.cpp).
- segae.cpp: Added coin counters. Minor clarification.
. Replaced protection MCU simulation with emulation of actual program in Arabian Fight. Make more sense of unused MCU routines (ga2- and arabfgt opcode table).
. Converted classes in segas32.cpp to device_add_mconfig
. Base MB89352 SCSI hookup in 'Soreike Kokology Vol. 2', disabled by default.
- segam1.cpp: Hook up video devices, sound and much else. bingpty and unkm1 both boot to error screens now.
- seta.cpp: Added IRQ acks for Caliber 50 and U.S. Classic
- ssfindo.cpp: Added preliminary EEPROM hook up. Tetris Fighters is now playable (coins work). Left as not working since EEPROM isn't correctly saved, thus the inputs are screwed on reset.
. Updated SSV driver to new Seta ST-0020 Sprite video
. Promoted Microman Battle Charge and Technical Bowling to working. Thanks Osso for pointing similar to Hashire Patrol Car medal cabinets.
. Added custom I/O chips TC0220IOC and TC0510NIO
. Reduced coin impulse in Evil Stone
. Use MB8421 for Taito_L, less HOLD_LINE (fixes sound in Evil Stone).
. Added working controls for Road Burners and 'War: The Final Assault'
. Added new NEC VRC 5074 System Controller System Controller device. Added save states to VRC5074 and fixed serial register handling. Converted Vegas driver to use new PCI bus.
. Added additional PCI configuration registers for Vegas support (video\voodoo_pci.cpp)
. Added some logic to get 'warfa' to start booting
. Set link to be unconnected by default to keep warfa (drivers\vegas.cpp) from hanging (machine\smc91c9x.cpp)
. Added proper IOASIC shuffling for NBA Showtime Gold and added SIO FPGA register reset.
- viper.cpp: Gun triggers for Jurassic Park 3 and Police 911
- williams.cpp and wmg.cpp
. Williams Special Chip 1/2: Added pinout diagram and clarify the abbreviations to reduce confusion with similarly named chips. Fixed a comment error about SC1 vs SC2 behavior.
. Added a note and flag that Williams' Mayday has unemulated protection which is currently hacked around
. Reduced tagmap lookups and identified some dips for Jin (drivers\williams.cpp)
- zaccaria.cpp: Preliminary netlist sound for the Zaccaria 1B11142 board: * Tromba (trumpet) sound is not working - requires Schmitt trigger device. * Connecting cassa (bass drum) swamps other instruments so it's disconnected for now. * Mixing melody sound with speech/SFX is not done in netlist (should be). * Relative levels of melody/speech/SFX are probably still wrong. A good test case for this is Money Money. There's a bit of buzzing on this one as well. The problem with the cassa could be caused by running into non-ideal characteristics of opams again (the LM3900 seems to ignore the V+ value supplied to it). When the netlist library gets Schmitt trigger support, the tromba can be completed. Unfortunately, the tromba is a key part of the characteristic sound of these boards, so you really notice when it's lacking. Bump up accuracy on audio\nl_zac1b11142.cpp netlist - runs slower but sounds a lot better. Added a crude TTL schmitt trigger model and hook up in audio\nl_zac1b11142.cpp sound board, completing the tromba circuit. Fixed typo in zac1b11142 schematics. 7414/7474 combo now actually works.
- 7 Smash: added DIPs and layout for '7 Smash' (Game now playable)
. Added extra sets. Improved documentation for aristmk4, aristmk5 and aristmk6.
. Added correct maincpu rom to fvrpitch
. Correct some fruit machine driver classes (drivers\bfm_sc4.cpp and jpmimpctsw.cpp)
- Alien Command: Untangle devices switch-case. Fixed sprite flip x & background pen. Put score 7segs in internal layout. Use tilemap device.
- Bad Lands: Make bootlegs to actually boot. Base audio hookup. Fixed tilemap gfxs and sprites are different from original hardware. Added coin counters and freeze switch, moved sound related irq generation into audio CPU block. Converted bootleg to mimic irq 0 sound generation.
- Bonus Chance: Fixed CPU clock and added undumped MCU
- Captain Flag: Fixed input labels & hookup
- Cheeky Mouse
. Added netlist sound based on schematics provided by Sam Grech. It doesn't work quite right yet. The "Hammer" and "Pest" sounds are generated by free-running 555/556 timers and gated with LM324 applifiers. For whatever reason, the netlist system produces a kind of buzzing from the "Hammer" circuit when it's supposed to be suppressed, and it doesn't think the pest sound should be suppressed completely so you can always hear it at a low level in the background. The "Cheese" circuit is a bit weird - either they're using the base-emitter junction of a 2SC945 as a signal diode, or there's an error in the schematic (collector is shown unconnected). Connecting this part of the circuit causes the netlist system to hang, so R2/R3/C8/Q2 are not connected for now.
. Explain the pest and hammer circuits. Increase solver accuracy to reduce number of false solutions. The usual 1e-8 is not enough here, we need 1e-10.
. Added rand() function to pfunction expression parser. Use this to simulate E-B noise in Cheeky Mouse and fix the "cheese" choose. Fixed issues identified by Vas and LordKale4: Made local netlists in Cheeky Mouse static. Replaced stdlib rand by 16 bit galois lfsr.
- Critter Crusher: Improved gun control
- Daytona USA: Added feedback driver board (including ROM)
- Defender: Redumped bad maincpu rom in clone T.T. Defender (Game now playable)
- Dream Soccer '94: Removed redundant DSWs
- Flower: Scroll, inputs and sprites. Added sprite sizes.
- Football Champ: Changed clone 'Euro Champ '92 (World)' to a parent set
- Frogger: Fixed long standing background_draw_colorsplit regression. According to schematics it is at 128+8, but it has been verified different on real machine. Video proof: http://www.youtube.com/watch?v=ssr69mQf224
- Fruit Fresh: Added some sound
- Jockey Club II
. Splitted sets by software revision. Added default EEPROMs and document the procedure.
. Finish I/O and added layout for on-screen keyboards
. Added sound communication. Fixed backgrounds and colors.
. Splitted 'Jockey Club II (older hardware)' into 'Jockey Club II (v1.12X, older hardware)', 'Jockey Club II (v1.10X, older hardware)', 'Jockey Club II (v1.01, older hardware)' and 'Jockey Club II (v1.00, older hardware)'. Changed 'Jockey Club II (older hardware, set 2)' into 'Jockey Club II (v2.03X RC, older hardware, prototype)'. Splitted 'Jockey Club II (newer hardware)' into 'Jockey Club II (v2.00, newer hardware)', 'Jockey Club II (v2.01X, newer hardware)', 'Jockey Club II (v2.04, newer hardware)', 'Jockey Club II (v2.05, newer hardware)' and 'Jockey Club II (v2.20X, newer hardware)'.
- Kusayakyuu: Videoram bit 6 isn't flip Y
- Laser Battle and Tora Tora: Unconnected SN76477 resistor treated as invalid even though it's the initial value. This fixed debug assert when starting emulation in Laser Battle/Lazarian and Tora Tora (ID 06541) (ID 06542).
- Mahjong Dunhuang: Added missing OKI6295 hook up, now the game has speech. Used ramdac_device instead of custom implementation. Reduced tagmap lookups.
- Mahjong Yarou: Redumped Mahjong Yarou [BET] (Japan, set 1) and verified it only has 1 Z80 (Game now playable)
- Mega Phoenix: Removed Mega Phoenix PIC MCU simulation. It's now emulated using the existing PIC16C54 dump. Clean up dipswitches and added DIP locations. Added documentation.
- Monaco GP: Fixed PCB table
- Mouse Trap: Added PROMs from clone (version 4, bootleg) to all other Mouse Trap sets and marked them as bad dumps. The Mouse Trap manual confirms it has 3 PROMs. They also match the Teeter Torture ones.
- Nintendo Custom: Privatized video\ppu2c0x.h & includes\vsnes.h variables
- Pang: Demoted all MSM5205 Pang clones to MACHINE_IMPERFECT_SOUND, since music speed, which is actually set by the MSM5205 VCK output, is likely too fast for all of these. The sound CPU probably does run at 4MHz, since it's a Z80A.
- Pata Pata Panic: Fixed OKI6295 audio
- PinMAME: Added missing ROM dump for clone Flash Gordon (prototype rev. 1)
- Poker Genius: Hook up devices and improved documentation. Graphics decoded. Added coin counter and hopper. Identified dipswitches and double-up game controls. Promoted to working (Game now playable).
- Pound for Pound: Rewrote uPD4701 device and hook it up to Pound for Pound. This fixed the arrow didn't move on the menu screens to choose the other boxer or game (ID 00599).
- PT Reach Mahjong: Revised PT Reach Mahjong, making it actually working. Added ball and paddle screen drawing, green background as per flyer pics, reach button, flip screen support and updated input labels.
- Puzzle Club (Japan prototype): Added ROM FILL (region gfx2) to fixed title screen corruption since MAME 0.178 (ID 06589)
- Puzzlet: Identified Player 2 inputs and a couple of DIPs
- The Real Ghostbusters: Confirmed that the fake MCU ROM is the cause of clone 'The Real Ghostbusters (US 3 Players, revision ?)' not working
- SD Gundam Psycho Salamander no Kyoui: Added base clocks on actual OSCs
- Shadow Dancer: Dumped/added later version of sound CPU ROM to Shadow Dancer (World), document main program EPR labels.
- Space Invaders: Updated some documentation for clone Space Ranger and added 'CV Version' color proms. Note: A PCB set (CVN 3-layer) was found with a 'Shinnihon Kikaku' sticker on the top board.
- Starship 1: Removed hack to restore correct behavior. Note: Some mysterious game code at address $2CCE is causes erratic images in the target explosion sequence. But this is the way the actual game worked!
- Super Poker (v306US): Identified some dips
- Taiwan Chess Legend: Better decode of gfx2 region, borrowed from Goldstar driver.
- Thief: Verified XTALs and clean up machine configs
- Unknown 'VIP 2000' game: Hook up a few devices (MSM6242 RTC, Intel Flash etc.). More driver progress.
- Video Poker: Identified DAC (MC1408)
- Input port: Added hopper-like mode to ticket dispenser device (drivers\stv.cpp, machine\ticket.cpp)
- Dipswitch fixes in aristmk4.cpp, chinsan.cpp, cischeat.cpp, clpoker.cpp, flower.cpp, galaxian.cpp, luckgrln.cpp, m107.cpp, metro.cpp, namconb1.cpp, ojankohs.cpp, royalmah.cpp, spoker.cpp, ssfindo.cpp and williams.cpp
- Fixed rom names in aristmk4.cpp, epos.cpp, kingobox.cpp and royalmah.cpp
- Description changes of Battle Gear (Ver 2.40 A), Beastie Feastie, Buffalo (0252636, US), Captain Silver (Japan, revision 3), Dark Horse (USA v4.00, bootleg of Jockey Club II), Ehrgeiz (World, EG2/VER.A), Fever Pitch (2VXEC534, NSW), Football Champ / Euro Football Champ (World), Football Champ / Euro Football Champ (World) (bootleg), Ghoul Panic (World, OB2/VER.A), Gun Survivor 2 Biohazard Code: Veronica (World, BHF2 Ver.E), Jansou (V 1.1), Johnny Nero Action Hero (v01.01.08), Kiki-Ippatsu Mayumi-chan, King of Boxer (World), Koala Mint (CHG1573, US, set 1), Landing High Japan (Ver 2.01 OK), Mahjong Yarou [BET] (Japan, set 1), Margarita Magic (EHG1559, US, set 1), Mazan: Flash of the Blade (World, MAZ2 Ver.A), Mega Force (US), MegaTouch XL (Version R1, prototype?), Mushiking The King Of Beetle (2K3 2ND, World), Mushiking The King Of Beetles 2005 First (Japan), Ojanko Club (Japan, Program Ver. 1.3), Libero Grande (World, LG2/VER.A), Ninja Assault (World, NJA2 Ver.A), Ninja Assault (Asia, NJA4 Ver.A), Operation Tiger (Ver 2.14 O) (ID 06103), Pata Pata Panic, Penguin Pays (0200113V, NSW/ACT), Poker Genius, Rastan Saga (Japan, Earlier code base), Rastan Saga (Japan Rev 1, Earlier code base), Real Mahjong Haihai (Japan, newer), Revenger '84 (older), Space Ranger, Special Forces Elite Training (v01.01.01), Stunt Typhoon Plus (Ver 2.04 J), Thunder Heart (10173811, NSW/ACT), Touchmaster 7000 (v8.1X ASI Standard Evaluation), Tonton [BET] (Japan, set 1), Dunk Mania (World, DM2/VER.C), Sega NetMerc, Soul Edge (World, SO2/VER.A), Soul Edge Ver. II (Asia, SO4/VER.C), Tekken (Asia, TE4/VER.C), Tekken (World, TE2/VER.B), Tekken (World, TE2/VER.C), Tekken 2 (World, TES2/VER.A), Tekken 2 Ver.B (World, TES2/VER.B), Tekken 3 (World, TET2/VER.E1), Tekken 3 (World, TET2/VER.A), Tekken 3 (World, TET2/VER.B), Tekken Tag Tournament (World, TEG2/VER.C1, set 1), Tekken Tag Tournament (World, TEG2/VER.C1, set 2), Tenkomori Shooting (World, TKM2/VER.A1), U.S.A. Football, World Cup (L-1), World Kicks (World, WK2 Ver.A) and World Kicks (US, WK3 Ver.A)
- Renamed (acchi) to (patapata), (adustcm) to (aduskcm), (cvs2gd) to (cvs2mf), (ehrgeiz) to (ehrgeizua), (ehrgeizaa) to (ehrgeiz), (hlntroy) to (hlntroyu), (jgakuen) to (jgakuen1), (kingpeng) to (kingpengsp), (lovestrk) to (lovestuk), (marmagicua) to (marmagicu), (marmagicu) to (marmagicua), (mazan) to (mazanu), (mazana) to (mazan), (megaforc) to (megaforcu), (ninjaslt) to (ninjaslta), (ninjaslta) to (ninjaslt), (pompeia6u) to (pompeia6ua), (qnilese) to (qnilesea), (qsheeba) to (qsheba), (rastsagaa) to (rastsagab), (rastsaga) to (rastsagaa), (souledgeaa) to (souledgea), (specfrce) to (specfrceo), (starswep) to (starswepj), (sunmoon) to (sunmoona), (tekken) to (tekkenac), (tekkenac) to (tekken), (tekken2aa) to (tekken2a), (tekken2ab) to (tekken2b), (tekken3) to (tekken3je1), (tekken3ae) to (tekken3), (tekken3aa) to (tekken3a), (tekken3ab) to (tekken3b), (tektagt) to (tektagtuc1), (tektagtac) to (tektagt), (tektagtac1) to (tektagtc1), (wldkicks) to (wldkicksu) and (wldkicksa) to (wldkicks)
. Disambiguated the WINOPTION_YIQ_PHASE_COUNT option. "yiqp" was used for WINOPTION_YIQ_PVALUE and WINOPTION_YIQ_PHASE_COUNT. Removed redundant ";global_inputs" (windows\winmain.cpp).
. rand() corrections in src\devices\* and src\mame\*
. NPOT subunit compromise: Handlers with a non-power-of-2 number of subunits are allowed once again. However, the offset multiplier will be rounded up to the nearest power of 2 (emu\addrmap.cpp).
. Fixed an issue that could cause problems when loading reset_on_load devices (like cartridges) from softlists at runtime. This was not guaranteed to cause a problem; the specific issue here was reported by mr_gw in the context of the CoCo, and the proximate issue (hanging) was in CoCo-specific code. That said, this could cause problems elsewhere (emu\diimage.cpp).
. Defend clocks_to_attotime and attotime_to_clocks against the possibility of the device clock being 0 (emu\device.cpp)
. Mechanism for devices to generate clocks for other devices. Have set_unscaled_clock and set_clock_scale not call notify_clock_changed unless the device has been started. Owner-derived clocks are now updated whenever the owner's clock is changed, including at configuration time. This simplifies the configuration of various (MESS) NES clones. Added clock_update_delegate type to represent device-generated clock outputs that may be dynamically modified. The model implementation of this is the CLK output in I8085A. DERIVED_CLOCK now updates in response to clock changes and changed (MESS) CoCo to use this mechanism.
. Use a proper error message in emu\emumem.cpp
. Copy longname, manufacturer, year, filetype, etc. for image info in all softlisted cases (emu\diimage.cpp)
. Moved static data (short name, full name, source file) out of devices into the device types
. Core changes: * Short name, full name and source file are no longer members of device_t, they are part of the device type. * MACHINE_COFIG_START no longer needs a driver class. * MACHINE_CONFIG_DERIVED_CLASS is no longer necessary. * Specify the state class you want in the GAME/COMP/CONS line. * The compiler will work out the base class where the driver init member is declared. * There is one static device type object per driver rather than one per machine configuration.
. Use DECLARE_DEVICE_TYPE or DECLARE_DEVICE_TYPE_NS to declare device type. * DECLARE_DEVICE_TYPE forward-declares teh device type and class, and declares extern object finders. * DECLARE_DEVICE_TYPE_NS is for devices classes in namespaces - it doesn't forward-declare the device type.
. Use DEFINE_DEVICE_TYPE or DEFINE_DEVICE_TYPE_NS to define device types. * These macros declare storage for the static data, and instantiate the device type and device finder templates. The rest of the changes are mostly just moving stuff out of headers that shouldn't be there, renaming stuff for consistency, and scoping stuff down where appropriate.
. Other things: * More descriptive names for a lot of devices. * Untangled the fantasy sound from the driver state, which necessitates breaking up sound/flip writes. * Used object finders for Irem sound subdevices. * Started to break out common parts of Samsung ARM SoC devices. * Turned some of FM, SID, SCSP DSP, EPIC12 and Voodoo cores into something resmbling C++. * Converted generic keyboard/terminal to not use WRITE8 - space/offset aren't relevant. * Dynamically allocate generic terminal buffer so derived devices (e.g. teleprinter) can specify size. * Factored out some boilerplate for YM chips with PSG. * Toaplan2 gfx. * Video System video. * Out Run/Y-board sprite alignment. * GIC video hookup. * SMS passthrough control devices starting subslots.
. Device name changes: 53C7xx SCSI to NCR 53C7xx SCSI, AMD Am29000 to AMC Am29000, ARM to ARM (little), ARM7 to ARM7 (little) or ARM7 (big endian) to ARM7 (big), AY8930 to AY-3-8930A, C140 to Namco C140, C352 to Namco C352, C69 (M37702) to Namco C69 (M37702), C70 (M37702) to Namco C70 (M37702), C74 (M37702) to Namco C74 (M37702), C75 (M37702) to Namco C75 (M37702), C76 (M37702) to Namco C76 (M37702), CDP1802 to RCA CDP1802, CDP1863 to RCA CDP1863, DAC-76 COMDAC to PMI DAC-76 COMDAC, Digitalker to MM54104 Digitalker, DISCRETE to Discrete Sound, ES5505 to Ensoniq ES5505, ES5506 to Ensoniq ES5506, ES8712 to Excellent Systems ES8712 ADPCM, ESRIP to Entertainment Sciences RIP, FD1089A to Hitachi FD1089A Encrypted CPU, FD1089B to Hitachi FD1089B Encrypted CPU, FD1094 to Hitachi FD1094 Encrypted CPU, H6280 to HuC6280, HuC6280 to Hudson HuC6280, I5000 to Imagetek I5000 Sound, i960kb to i960KB, Intel 8257 to Intel 8257 DMA Controller, Intel I4004 to Intel 4004, Irem M72 Audio Custom to Irem M72 Audio, MAS3507D to MAS 3507D MPEG decoder, MEDIAGX to Cyrix MediaGX, MOS656X to MOS 656X VIC (Attack UFO), MOS6581 to MOS 6581 SID, MOS8520 to MOS 8520 CIA, Namco 15XX to Namco 15xx, NiLe to Seta ST-0026 NiLe, OKI6295 to OKI MSM6295 ADPCM, OKI6376 to OKI MSM6376 ADPCM, OKI9810 to OKI MSM9810 ADPCM, PENTIUM to Pentium, POKEY to Atari C012294 POKEY, PowerPC 603e to PowerPC 603E, PXA255 to Intel XScale PXA255, RCA CDP1869 to RCA CDP1869 VIS, RF5C400 to Ricoh RF5C400, RF5C68 to Ricoh RF5C68, S14001A to SSi TSI S14001A, SAA1099 to Philips SAA1099, SCSP to YMF292-F SCSP, SCUDSP to Sega SCUDSP, SEGA VDP PSG to Sega VDP PSG, Sega/Yamaha 315-5560 to Sega/Yamaha 315-5560 MultiPCM, Signetics 2636 to Signetics 2636 PVI, SN76477 to TI SN76477 CSG, SP0250 to GI SP0250 LPC, SP0256 to GI SP0256 Narrator Speech Processor, SPU to PlayStation SPU, ST0016 (Audio) to Seta ST0016 (Audio), TC8830F to Toshiba TC8830F, TIA to Atari TIA (Sound), uPD7756 to NEC uPD7756, uPD7759 to NEC uPD7759, VLM5030 to Sanyo VLM5030, X1-010 to Seta X1-010, Y8950 to Y8950 MSX-Audio, Yamaha YMZ770 to Yamaha YMZ770 AMMS-A, YM2151 to Yamaha YM2151 OPM, YM2203 to YM2203 OPN, YM2413 to Yamaha YM2413 OPLL, YM2608 to YM2608 OPNA, YM2610 to YM2610 OPNB, YM2610B to YM2610B OPNB, YM2612 to YM2612 OPN2, YM3438 to YM3438 OPN2C, YM3526 to YM3526 OPL, YM3812 to YM3812 OPL2, YMF262 to YMF262 OPL3, YMF271 to Yamaha YMF271, YMF278B to Yamaha YMF278B OPL4, YMZ280B to Yamaha YMZ280B PCMD8, Z8002 to Zilog Z8002 and ZSG-2 to ZOOM ZSG-2.
. Worked around for Street Drivin' (prototype) sound regression and fixed Steel Talons regression
. Support -listroms for devices (e.g. mpu401 or m68705p3)
. Fixed a regression in -listmedia/-listslots. The issue is that -listmedia/-listslots were not honoring command line options specified on the slot. This works around the problem.
. Extend slot option processing to the -listdevices command as well. Don't try adding any system-specific options when a wildcard is specified.
. Have -listroms display a user-friendly message when no ROMs are required (mame\clifront.cpp)
. Updated mame\audio, devices\sound, devices\video, mame\video, mame\drivers and mame\machine devices to use device_add_mconfig insted of device_mconfig_additions
. Fixed emu\image.cpp: 1. If either a multipart softlist item was loaded, or a single-part item loaded into a system with more than one of the same media slot, then a reset would cause a fatal error. 2. If a non-existing image was listed in the ini, it would fatal error at start and there was no way to fix it except by hand-editing the ini file. This restores the previous behaviour of ejecting the bad image with the first error.
. Fixed issue when the hash length is zero (emu\diimage.cpp)
. Fixed issue with the Emscripten port where the emulation would continue to run while paused (emu\machine.cpp)
. Added the ability to select different tilemap categories. This allows you to select different tilemap categories in the built-in tilemap viewer. The default is to render all categories (same as before), but you can select to render only a specific tilemap category with the PAGE_UP and PAGE_DOWN keys.
. Cleanups to slot options (ui\slotopt.cpp): 1. Polished up residual traces of this code's pre-C++ heritage. 2. Moved completely private code to an anonymous namespace. 3. Created device_slot_interface::slot_name() to wrap the pattern of taking the tag and removing the initial colon.
. Added trailing newline to several frontend error messages
. Changed 'int ignore_warnings' parameter on core_options::parse_ini_file() to be 'bool ignore_unknown_options'
. Fixed bug that permanently disabled some UI search strings when they were cleared. This adopts std::string::clear() and empty() consistently, rather than storing and checking for NUL as with C-style buffers. This fixes issue #2295 ("Search bar broken after changing ROM list view mode") and probably other unreported bugs afflicting UI search text input.
. Starting from the Favorites menu now starts the software list submenu (if necessary). Starting a machine containing a list of the software from the Favorites menu, now determines the launch of the appropriate sub-menu with the list of software.
. Better completions (plugins\console\init.lua)
. Adding hack to fish hashpath option out of INI files prior to softlist evaluation. EIENTEI95 reported an error where the hashpath specified in INI files was not being honored in softlist evaluation. This is a change to preprocess INI files for the sole purpose of finding the hashpath prior to evaluating softlists.
. Check for callback name being a null pointer before sending it to %s (emu\schedule.cpp)
. Refactoring/cleanup to state load/save handling: Changed running_machine::schedule_[load|save]() to take 'std::string &&' instead of 'const char *'. Changed running_machine::saveload_schedule to be 'enum class'.
. Improvements to ROM comparison (tools\romcmp.cpp): 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.
. Bug fix to -romident and aux verb cleanup. Fixed a bug where resolved slot/image options would choke -romident (reproducible in MAME 0.185 with 'mame64 -romident coco.zip'). 'mame64 -romident' no longer crashes. Resurrected auxverb_cleanup_and_romident_bugfix. Changed usage for -romident and minor cleanups. Supporting auxverbs in any order.
. PLUGINS: Updated hiscore.dat
. 3rdparty: Replaced Linenoise-NG with a different port that is simpler and uses a different UTF8 parser. Work around older libc (3rdparty\linenoise\linenoise.c).
. VIDEO RENDERING SYSTEM
. Fixed HQx shaders with BGFX OpenGL backend
. Removed the minimum sleep time constraint in video_manager::throttle_until_ticks (emu\video.cpp)
. Audit/Validity check
. Perform unitmask checking during validation in non-debug builds (emu\addrmap.cpp)
. Make single-driver command-line validation work again. Removed some now-redundant checks related to device name validity (including the slot test, which also made assumptions that some (MESS) TI99 bus devices now break).
. ~67% improvement of device walk in -verifyroms (mame\clifront.cpp)
. -validate complains if device shortnames exceed 32 characters. -listroms and -verifyroms accept multiple names/patterns.
. Allow multiple patterns/names for -listxml. Make -listxml instantiate slot devices in slots rather than under the machine root. Fixed -listxml output stops with many sets (agat.cpp, c64.cpp, c128.cpp, ec184x.cpp, iskr103x.cpp, ksys573.cpp, pet.cpp, poisk1.cpp and ti99_4ev.cpp) (ID 06591)
. Removed duplicates from list of approximate software matches (emu\softlist_dev.cpp)
. Don't hardcode color PROM region name and added error handling (emu\emupal.cpp; drivers\aeroboto.cpp, arkanoid.cpp, chinsan.cpp, commando.cpp, exprraid.cpp, exzisus.cpp, flower.cpp, freekick.cpp, goindol.cpp, hexion.cpp, hnayayoi.cpp, holeland.cpp, ichiban.cpp, kyugo.cpp, lasso.cpp, lsasquad.cpp, m63.cpp, mexico86.cpp, mjkjidai.cpp, mjsister.cpp, ppmast93.cpp, pturn.cpp, rmhaihai.cpp, sauro.cpp, shangkid.cpp, slapfght.cpp, snk.cpp, tsamurai.cpp and vastar.cpp)
. Replaced some custom palette inits with the appropriate standard callback (drivers\40love.cpp, gluck2.cpp, istellar.cpp, lvcards.cpp and mustache.cpp)
. Removed MACHINE_CONFIG_FRAGMENT. This is a pretty minimal change. The point where the root device is added has been moved from the MACHINE_CONFIG_START macro to the constructor of the machine configuration class (made possible by giving drivers their own device types). This isn't the final change in this area. The root device is still being handled specially in that its configuration comes from the game driver structure. This needs to be harmonised with regular devices.
. Added device-specific machine configuration (emu\device.cpp, driver.cpp, gamedrv.h and mconfig.cpp). Use Zaccaria driver as a demo for machine config in members. Get rid of mconfig trampoline in a few devices, make handlers protected. Changed some device_mconfig_additions to device_add_mconfig.
. General cleanup: Moved rarely-used output and pty interfaces out of emu.h. Consolidate and de-duplicate forward declarations, also remove some obsolete ones. Clean up more #include guard macros. Scope down a few more things.
. Cleanups to ram_device (machine\ram.cpp): 1. Changed ram_device to expose specific options, removing the burden for clients to parse RAM strings. 2. Moved validation of command line arguments out of device_validity_check(); that method is only intended for checking the device itself. 3. Miscellaneous polishing.
. Multi-Language: Updated Hungarian language localization
. Retired min/max in attotime.h, in favor of std::[min|max] (emu\attotime.h, schedule.cpp).
. Removed timer_set in dday.cpp, exidy440.cpp, lethalj.cpp, m10.cpp, m92.cpp, metro.cpp and segag80r.cpp
. Removed timer_pulse in mw8080bw.cpp, rbisland.cpp, qdrmfgp.cpp, tetrisp2.cpp, machine\rtc9701.cpp, machine\s3520cf.cpp, machine\v3021.cpp, sound\sp0250.cpp, audio\namco52.cpp and emu\schedule.cpp
. Fixed a few things found by Coverity (software) in gts1.cpp, rowamet.cpp and mame\info.cpp
. LUA scripts cleanup (scripts\src\lib.lua)
. Support LUA style args for some emu.file members (mame\luaengine.cpp)
. GCC 7.1
. Fixed obvious bugs found by GCC 7.1 (cpu\dsp56k\dsp56pcu.cpp, spc700\spc700.cpp, machine\stvcd.cpp, video\snes_ppu.cpp, decodmd1.cpp, emu\render.h and machine\n64.cpp)
. Fixed buffer overrun warnings from GCC 7.1 (cpu\i8089\i8089_dasm.cpp, drivers\megasys1.cpp and pengadvb.cpp)
. Fixed remaining GCC 7.1 issue (mame\luaengine.h, netlist\plib/ppmf.h and tools\chdman.cpp)
. Fixed compile with PSXGPU_DEBUG_VIEWER on (video\psx.cpp)
. Make the code acceptable to Clang 4.0.0 (drivers\cedar_magnet.cpp)
. Don't use -static on msys2 Clang 4.0.0 as it's currently broken, also removed -static-libgcc & -static-libstdc++ on GCC builds as they have no effect if you use -static (scripts\genie.lua).
. Fixed a crash in the 'symlist' debugger command (debug\debugcmd.cpp) (ID 06575)
. Assert output calback is set for keyboard/terminal
. Scoped enum for Windows (debugger\debugwin.cpp; MACHINE_PHASE_RUNNING -> machine_phase::RUNNING)
. m_owner->tag() -> owner()->tag() cleanup in machine\68561mpcc.cpp, scnxx562.cpp, z80dart.cpp, z80scc.cpp, z80sio.cpp and video\i82730.cpp