- New games: Jikkyou Powerful Pro Yakyuu EX '98 (GC811 VER. JAA), Keirin Ou, Tom Tom Magic and World Adventure
- New Working games: Capcom Vs. SNK Millennium Fight 2000 Pro (Japan) (GDL-0004), Cleopatra Fortune Plus, Coco Loco (set 3), Genius 6 (V110F), IQ Block (V113FR, gambling), Shuzi Leyuan (V127M, gambling) and 'unknown Sidam poker'
- New Non-Working games: Air Hockey (6.03, encrypted), Donkey Kong Banana Kingdom (host), Fonz [TTL], The King of Fighters - Road to Revenge / The King of Fighters 2002 Unlimited Match, LD Quiz dai 4-dan - Kotaetamon Gachi! (Japan), Motogonki, Multi Game V (AMGHU_V83.65), Pop'n Run - The Videogame (set 1), Sharpshooter (coin pusher), 'unknown Ace System 1 game' and War Mission (WM 4/6/87)
- New clones: Batman (1.03 France), Battle Balls (Germany, earlier), Bow & Arrow (Prototype, rev. 22), Centipede (Japan, revision 3), Donkey Kong Junior (US, bootleg?), Final Fight (Japan 900405), Grand Champion (set 2), Grand Champion (set 3), Karate Blazers (World, Tecmo license), The King of Dragons (World 910731), Last Mission (World revision
, Marvel Super Heroes (Brazil 951024), Naughty Boy (bootleg, set 2), Pit Boss Superstar III 30 (9233-00-06, California version), Pop'n Run - The Videogame (set 2), Real Puncher (Japan, v2.12J), Sengoku 3 / Sengoku Densho 2001 (set 2), Spy Hunter (Spain, Recreativos Franco S.A., Bally Midway license), Strider 2 (Euro 991213), Street Fighter II': Champion Edition (bootleg with level selection), Tapper (Budweiser, 1/27/84), Trophy Hunting - Bear & Moose V1.0 (location test), V-Liner (v0.53), V-Liner (v0.7e), V-Liner (v0.7a), World Heroes 2 (ALH-006) and World Soccer Finals (rev 4)
- New drivers: dynamoah.cpp, gamemasters.cpp, segattl.cpp and y2.cpp
- Removed drivers: strnskil.cpp
- New devices: 315_5649, dckb, igs_bitswap, igs_incdec, lba_enhancer, locomotn_audio, model1io2, tms32030, voodoo_2_pci, voodoo_banshee_pci, voodoo_3_pci and zn428e
- Hitachi SH-4 CPU: UML implementations of FABS, FCMP_EQ, FCMP_GT, FLDI0, FLDI1, FLOAT, FNEG, FRCHG, FSCHG, FSTS and FTRC. Optimized some implemented UML. Fixed SR state in new CMP implementations.
- Intel I8086 CPU: Fixed HALT state
- MCS-51 MCU
. Added more interrupt and timer registers to debug state
. Eliminated atrocious hack for breaking out of INT0 polling loops
. Minor DASM fix for case 0x95
- NEC V60 CPU: Fixed disassembly of branch opcodes (displacement is signed)
- Texas Instruments TMS32031 CPU: Added TMS320c30 and basic hold/holda support. For some reason there was no TMS320C30 device, so it's been added. Stubbed in basic HOLD/HOLDA line/callback support which is used to suspend DSP external bus access, and used by the InterPro EDGE graphics boards under development. This change doesn't actually change the 'C30 behaviour yet, but allows the external device to get an acknowledgement and proceed.
- Texas Instruments TMS9995 CPU: Fixed latching of pulsed interrupts
- Toshiba TMPZ84C015 CPU: Added missing callback for CTC ZC3
- AICA sound: Changed register names to match development manual, documented unimplemented registers and flagged imperfect features.
- Exidy sound: Better split of state classes. Added device finders and input merger. General cleanup (audio\exidy.cpp)
- Hudson HuC6280 sound: Implemented LFO. Fixed channel check when LFO is enable. Added notes.
- NEC uPD7759 sound: Fixed uPD7759 class hierarchy, and reset callback before resolving it.
- QSound (HLE): Better rnd on negative (dsp16\dsp16core.ipp). Fixed condition mask in disassembler (dsp16\dsp16dis.cpp).
- Ricoh RF5C68 sound: Added save states. Added device_rom_interface, because Datasheet says it's can connect with ROM. Added rom_bank_updated and device_memory_interface instead device_rom_interface.
- Sound stream: Don't try to generate a negative number of samples if stream->update() goes back in time (emu\sound.cpp).
- 3dfx Voodoo Graphics
. Use device finders instead of machine().device. Deal with needing to be able to configure screen/CPU or set them at start in a safer way (video\voodoo.cpp).
. Created devices for each of the voodoo PCI cards
- ADC0808 A/D Converter: Reduced CPU overhead by smarter timer usage. Made timing more accurate to the datasheet.
- ATA Interface: Get abstract_ata_device working again - needs a better solution long-term (machine\ataintf.cpp)
- Data East Custom
. Internalize palette for boogwing.cpp and deco32.cpp (video\deco_ace.cpp)
. Splitted supbtime.cpp driver into video and includes
. Allowed internal register read-back on DECO HuC6280/YM2151 sound system. Cleanup driver and duplicates (boogwing.cpp, cbuster.cpp, cninja.cpp, darkseal.cpp, dassault.cpp, deco32.cpp, dietgo.cpp, funkyjet.cpp, madmotor.cpp, rohga.cpp, supbtime.cpp and vaportra.cpp)
. Moved dragngun*/lockload* specific m_sprgenzoom into dragngun_state (deco32.cpp)
- EEPROM: Set default EEPROM clock to zero (machine\eepromser.h and drivers\popeye.cpp)
- HuC626x video: Use required_device instead of explicit lookups for HuC6261 and HuC6272. Internalized palette HuC6260.
- Intel 8255 PPI: Improved readback of port C high output latches when port A is in Mode 1 (see https://github.com/mamedev/mame/pull/3544)
- Intel 8259 PIC: Use device_resolve_objects
- Intel 8275 video: Blank top and bottom row lines when underline is greater than 7. Start offloading parts of the device_timer routine to helper functions. Allow side effects of reads to be disabled [AJR].
- ISA: ISA devices now have the possibility to remap themselves. * ISA bus managers have a list of their slots. * ISA bus managers and device base classes have a new virtual method remap(). * Modify the ET4000 ISA device to support the new method. Currently ISA devices map themselves in their address space ranges only in device_start() and if something unmaps them, they are not visible anymore remap(int space_id, offs_t start, offs_t end) of the isa bus manager can be called to tell devices that if they have mapped something in address space space_id from start to end they should remap themselves [Samuele Zannoli].
- Konami PowerPC Common Functions: Use device finders and eliminated machine().device(tag) (machine\konppc.cpp)
- Nintendo Custom: Make palette internal to device (video\ppu2c0x.cpp; drivers\cham24.cpp, famibox.cpp, multigam.cpp, playch10.cpp and vsnes.cpp). Changed NMI to line callback.
. PCI devices now have the possibility to remap themselves. Like in the ISA bus remap (int space_id, offs_t start, offs_t end) of the PCI bus manager can be called to tell devices that if they have mapped something in address space space_id from start to end they should remap themselves. It will be used with system management mode.
. PCI devices can ask to be mapped before the others. Will be used by the ISA bridge in the southbridge.
- Sega Custom
. Converted Sega 315-5649 I/O Controller to device. Allow side effects of analog read to be disabled (machine\315_5649.cpp). Moved index parameter into template.
. Improved 315-5338A I/O Controller and clean up
. Interrupt callback modernization of Sega 315-5250 Compare/Timer
- TI TLC34076 video: Converted implementation to use device_palette_interface. m_pens is unnecessary now.
- VGA: Cleanup machine().device
- Z80 CTC: Disabling a channel interrupt also turns it off
- Z80 DAISY: Implemented independent RETI decoding. Moved z80daisy* to devices\machine.
- 1945kiii.cpp: Added sprite color flashes (ID 06971). Reduced palette size. Fixed OKIM6295 reads so fewer samples play on stopped channels.
- aces1.cpp: Minor documentation update
- alpha68k.cpp: Cleanups and clock corrections (gangwars, sbasebal and skyadvnt). Sound interrupt frequency correction.
- argus.cpp: Fixed sound writes (second YM2203 has not implemented). Cleanup duplicates. Reduced runtime tag lookups.
. Swapped start LEDs and suppress logging for many spurious writes
. Configure all lamp/LED outputs as line callbacks in asteroid, astdelux and llander.
. Added cocktail configuration that flips screen for 2nd Player
- astrocde.cpp: Driver and device modernization. Renamed sound device, documented pinout and added input and output callbacks. Added addressable and non-addressable output latch devices. Added watchdog timers for most games. Use memory maps instead of hacking in handlers in DRIVER_INIT. Split up base class a little.
- atarigt.cpp: Removed some calls to state()
- atarisy4.cpp: Get rid of static state
- atlantis.cpp: Added missing MCFG_VIDEO_SET_SCREEN. This fixed Fatal error: No screen specified for device ':zeus2' (ID 06962)
- blitz68k.cpp: Replaced machine().device with finder
- cdi.cpp: Use device finders instead of machine().device, plus some driver_device cleanup.
- cinemat.cpp: Splitted out stuff unique to Demon and QB-3 (prototype), use virtual methods a bit more. Cleanup/separation - no longer needs a selector member or start overrides.
- citycon.cpp and ikki.cpp: Added MCFG_SCREEN_RAW_PARAMS
- coolridr.cpp: Use 315-5649 I/O Controller device
- cps1/2.cpp: Separated state class
- dooyong.cpp: Cleanup. Changed sprite layouts. Added input_merger_any_high_device for YM2203 irq handler.
- exidy440.cpp and vertigo.cpp: Use finder for audiocpu instead of absolute tag lookup. Improved encapsulation for audio device (audio\exidy440.cpp).
- f1gp.cpp: Added some undocumented dipswitches and the possibility to use 4-way joysticks
- fuukifg2.cpp: Minor cleanups. Fixed gfxdecodes and spacing.
- fuukifg3.cpp: Minor cleanups. Fixed YMF278B handler and spacing.
. Verified Dallas DS5002FP clock for World Rally 2. No serial EEPROM for this game.
. Updated some PCB layouts to be more accurate
. Verified MCU clock for Touch & Go
- galaxia.cpp: Added notes
- goldngam.cpp: Added devices
- highvdeo.cpp: Cleanup drawing (related by cliprect). Splitted machine config and address map per each games. Cleanup duplicates. Added output finder. Cleanup ROM loading. Added precalculated color for game with drawing directly RGB565 [cam900].
- jaguar.cpp: Cleanups. Added address maps related from rom board (for cojags). Reduced runtime tag lookups. Moved bankswitch configurations into machine_start.
- jpmsys5sw.cpp: Fixed uPD7759 class hierarchy, and reset callback before resolving it. This fixed debug assert in all JPM System 5 sets (ID 05484).
- kinst.cpp: Fixed driver screw-up that effectively prevented loading non default BIOSes
. Cleanup duplicates. Added generic_latch_16_device for maincpu to soundcpu comms. Improved tags. Reduced runtime tag lookups. Make drawing function relate to cliprect. Background is tilemap.
. Moved audiocpu to device and removed frequent tag lookup
. Split out ataxx-specific stuff from base state class. Optimised use of tilemap.
- ltcasino.cpp: Preliminary palette hookup. Added "Demo Sounds". Added PCB layout for clone 'Mini Vegas 4in1'.
- luckgrln.cpp: Use output finder and arrays. Added save state. Removed outdated notes.
- m72.cpp: Simplified gfx layout
- m90.cpp: Cleanup duplicates. Added user_data for tilemap ram base. Reduced runtime tag lookups. Fixed rowscroll bias between layers.
- magictg.cpp: Cleanup driver
- markham.cpp: Merged strnskil with markham driver. Modernization driver and cleanups. Added MCFG_SCREEN_RAW_PARAMS. Added coin counters to markham, strnskil, banbam and clones.
- model1.cpp and model2.cpp
. Improved Model 1 I/O board interface and drive board read/write callbacks (machine\model1io.cpp). Redumped epr14869b.25 used by Virtua Fighter and Star Wars Arcade (machine\model1io.cpp).
. Acknowledge IRQs explicitly for Model 1; use MB8421 DPRAM device for Model 1/2.
. Emulated the I/O board used by Virtua Cop, Wing War and Netmerc. Improved dipswitches. Hook up watchdog MB3773. Map second RS232 port and connect control signals. Clock for 315-5338A and MSM6253 (machine\model1io2.cpp).
. Use 315-5649 I/O Controller device for Model 2. Improved and clean up all inputs. Fixed input issue with srallyc (possibly others).
. Model 2 use required_device_array for timers
- namcond1.cpp: Eliminated some explicit device tag lookups (namcond1.cpp and video\ygv608.cpp)
- namcos21.cpp: Demoted Cyber Sled and Solvalou to not working, added notes describing the issue
. Preliminary keyboard emulation, hooked up to 'The Typing of the Dead', 'La Keyboard' and 'Lupin The Third - The Typing' (machine\dc-ctrl.cpp).
. New Working games: Capcom Vs. SNK Millennium Fight 2000 Pro (Japan) (GDL-0004) and Cleopatra Fortune Plus
. Fixed dreamcast controller ID values in fixed_status, makes it possible to surpass VMU not found errors in DC games by pressing start (machine\dc-ctrl.cpp).
. Added US MVS (U3), Japan MVS (J3, alt) and UniBios 3.3.
. Moved start buttons to controllers, clean up NEO-FTC1B board a little.
. SIT and FTC1B are only compatible with MV-1B/MV-1C cost-reduced boards
. Allow AES joystick to be connected to arcade systems with D-sub connectors (common for "consolised" use)
. Pass through Select input from D-sub connectors on JAMMA variants
. Default to Japan BIOS for fixed software using mahjong panel (Euro BIOS doesn't support mahjong panel)
. Use JAMMA joystick panel for 'Mahjong Kyo Retsuden' since (doesn't support mahjong panel in MVS mode)
. Allow controls to be changed for MVS mahjong games (only BIOS and bakatono support joysticks, but still useful)
. Simplified gfx layout. Fixed spacing.
. Fixed Thunder Dragon 2 bankswitching
. Adjust Popeye and Sky Skipper layer positions to match tests on real hardware
. Added preliminary emulation of the corruption on the Popeye bootleg logo caused by x flipped and non x flipped sprites being displayed right next to each other.
. Use USE_NEW_COLOR only to switch between 680 & 1300 resistor in Sky Skipper
- rbmk.cpp: Use device finder. Removed NMI interrupt from AT89C4051 MCU which has no NMI line.
- redalert.cpp: All games have the same sound start anyway (audio\redalert.cpp)
- royalmah.cpp: Eliminated machine().device
- sangho.cpp: Get rid of some MACHINE_(START|RESET)_MEMBER
- sanremo.cpp: Use output finder and added save state support
- segac2.cpp: Fixed uPD7759 class hierarchy, and reset callback before resolving it (fixed assert in Sega C2).
- segas18.cpp: Reduced runtime tag lookups. Added output finders.
- segas32.cpp: Reduced runtime tag lookups. Fixed bit manipulations.
- seibuspi.cpp: Fixed middle layer row scroll (video\seibuspi.cpp)
. Disable ROZ optimization if mode is either 2 or 3, fixes at least (MESS) 'Bulk Slash' and 'Death Crimson' ROZ layer bugs.
. ROZ fixes for Radiant SilverGun Xiga stage
. Support for line windows. Undocumented behaviour: Rotation parameter read control seems to mirror/have a correlation in the subsequent register.
. Don't repeat ROZ when screen over process is equal to 1, fixes (MESS) D-Xhird practice stage.
. Implemented vertical cell scroll ((MESS) Sonic Jam)
. Fixed potential bug with window Y sizes when double density interlace is enabled
. Fixed transparent sprite shadows (Game Tengoku and (MESS) Pretty Fighter X)
. Disable transmask code for mode 2 sprites, fix Sasissu racing stage background clouds color.
. Fixed illegal sprite mode in diehard and dnmtdeka (ID 04539)
- system16.cpp: Reduced runtime tag lookups. Fixed bit manipulations. Reduced duplicates.
- taito_b.cpp: Added clock for TC0180VCU and use device finder instead of machine().device
. Dumped motor CPU ROM for Chase H.Q. and added detailed hardware description
. Put subwoofer closer to observer than front centre in chasehq and nightstr
- taitogn.cpp: Cleanup duplicates
. Reduced runtime tag lookups. Fixed region tags. Move CLUT'ed tile expand functions into video_start. Reduced duplicates.
. Demoted Cycle Warriors and Apache 3 to not_working (missing important game elements)
. Added preliminary row/column scroll enable for tilemaps, fixes background scrolling and foreground text in Cycle Warriors. Improved road colors.
. Reduced duplicates. Removed unnecessary things. Reduced runtime tag lookups. Fixed DMA'd palette/text things. Added input_merger_any_high_device for batrider sound IRQ.
. GP9001 Video: Minor cleanups. Reduced duplicates. Make sprite draw function related by MAX_SPRITE (it's possibly lower than 256 at real hardware).
. First pass dedeprecation/splitting class up. Misc corrections.
. Added PCB layout for Boong-Ga Boong-Ga (Spank'em!)
. Secured a second PCB and redumped the graphics roms for clone Lup Lup Puzzle v1.05
- vectrex.cpp: Fixed probable bug with lightpen-triggered interrupt (video\vectrex.cpp)
- vsnes.cpp: Device finder cleanup
- williams.cpp and wmg.cpp: Clean up scanline timers
- 39 in 1 MAME bootleg: Use finder array for DMADAC
- Blomby Car: Added optical and potentiometer wheel inputs
- Centipede: Correct PSG type in clone Magic Worm (bootleg of Centipede, set 1)
- Coco Loco: Redumped the bitrotten rom c1.bin in clone Coco Loco (set 3) (Game now playable)
- Crazy Rally: Documentend PALs for clone Crazy Rally (Gecas license)
- Cube Quest: Fixed cache endianness
- Cyber Commando: Put rear speakers behind
- Dragon Master: Fixed output because both PCB and chip doesn't support stereo
- Genius 6: Emulated the protection (Game now playable)
- Godzilla: Kludge a few weird Godzilla collision checks
. Implemented emulation of AG-1 real sprite decompression agorithm. Avoid intermediate buffer.
. Minor cleanups. Fixed object finder. Converted VRAM into std::unique_ptr. Cleanup duplicates.
- High Seas Havoc: Decapped PIC16C55
- IQ-Block: Emulated the protection in clones IQ Block (V113FR, gambling) and Shuzi Leyuan (V127M, gambling) (Games now playable)
- The Irritating Maze: Added color lamps to layout. On the real cabinet, these are behind the marquee. Fixed timer lamp order. They now follow the order of the test menu and match recorded footage. Changed size of screen, and most lamps to better match the real cabinet. Changed CPO button/trackball color to better match the real controls. Fixed clickable start button.
- Lucky Girl: Updated decryption. Plaintext seems correct, but needs quite a lot more work.
- Major Havoc: Use array finder for POKEYs and device finder for TMS5220
- Mighty Guy: Hooked up NB1412M2 protection. Improved sound capabilities, makes Mighty Guy to have a sense sound wise. Added DAC sound.
- Missile Command: Fixed displayed DIP to match actual/manual display for R8 (ID 06966)
- Multi Champ Deluxe: Verified different sound sample rom for Multi Champ DX as bit-rot
- Pesadelo (bootleg of Knightmare on MSX): Fixed address line swap
- Pingu's Ice Block: Redumped Compact Flash card. Note: Sectors 2-255 is empty (2 sectors of header / file list and 252 sectors of main.abs ELF executable), which makes this dump almost useless.
- PinMAME: Quick protection before freeze for atari_s1.cpp, jeutel.cpp, rowamet.cpp and spectra.cpp
- Renegade: Fixed bit manipulations
- Rohga Armor Force: Fixed background color of title screen in clone Wolf Fang
- Run and Gun: Added coin counters. Improved sound mixing. Minor cleanups.
- Seibu Cup Soccer bootlegs: Fixed device chip endianness (machine\seicopbl.cpp). Jumping is done with case 0x0905. Hookup layer disable. Fixed some sprite priorities.
- Simpsons Bowling: Separated state class and use required_device_array
- Space Invaders: Correct clone Space War (Sanritsu) romset
- Spiders: Use required_device_array for PIAs and input merger for IRQ
- Submarine (Sigma): Added flip screen support. Splitted driver into video and includes files
- Subs: Eliminated set_led_value by binding outputs directly to callbacks
- Tapper: Latest version of Tapper known to come with "standard" graphics roms. Created the version with alternate graphics. Unknown if those graphics are hacked or a later revision.
- Top Speed: Dumped motor CPU ROM. Minor cleanups. Added arrays for reduce duplicates. Added macro for when 64 bit ROM data bus case (emu\romload.h).
- unknown Sidam poker: Added decryption and make the cards appear (background tilemap) (Game now playable).
- Venture: Added proms
. Fixed colors
. Merged memory maps and moved state machine data into header file
- X the Ball: Correct latch type
- Fixed year info for groovef, popn2 and popn3
- Dipswitch fixes in aerofgt.cpp, coolridr.cpp, f1gp.cpp, iqblock.cpp, markham.cpp, missile.cpp, model1.cpp, model2.cpp and wallc.cpp
- Fixed rom names in aerofgt.cpp, bionicc.cpp, gaelco2.cpp, galaxian.cpp, namcos2.cpp, pgm.cpp, pgm2.cpp, starwars.cpp and vamphalf.cpp
- Description changes of Battle Balls (Germany, newer), Bow & Arrow (Prototype, rev. 23), F1 Grand Prix (Nuova Bell Games), Final Lap 3 (World, Rev C), Final Lap 3 (Japan, Rev C), Fire Hawk (World) / Huohu Chuanshuo (China) (horizontal), Fire Hawk (World) / Huohu Chuanshuo (China) (switchable orientation), Grand Champion (set 1), Grand Tour (V100U), Got-Ya (12/24/1981), Hong Tian Lei (A-Blast) (Japan), Hong Tian Lei (A-Blast) (bootleg), IQ-Block (V100U), IQ Block (V113FR, gambling), Kuai Da Shizi Huangdi (China?, Revised Hardware), Naughty Boy (bootleg, set 1), pgm.cpp games (over 100), Pit Boss Superstar III 30 (9233-00-01, Standard version), Real Puncher (World, v2.12O), Sengoku 3 / Sengoku Densho 2001 (set 1), Senkyu (Japan, newer), Senkyu (Japan, earlier), Shuzi Leyuan (V127M, gambling), Super Contra - Alien no Gyakushuu (Japan), Toushin Blazers (Japan, Tecmo license), unknown Sidam poker, V-Liner (v0.6e) and V-Liner (v0.54)
- Renamed (ffightj3) to (ffightj4), (lastmisn) to (lastmisnu6), (lastmisno) to (lastmisnu5), (strider2) to (strider2u), (tapper) to (tapperg), (vliner) to (vliner6e), (vlinero) to (vliner54) and (wsf) to (wsf3)
. Concrete device types now have a call operator that instantiates a device. This change means you *must* use DECLARE_DEVICE_TYPE to declare the public interface of your device, even if it's device_t. If you want to use private implementation classes, use DEFINE_DEVICE_TYPE_PRIVATE and instantiate the object finders.
. Make devopt menu localisable (ui\devopt.cpp). Make machine_config aware of device being configured so owner doesn't need to be passed everywhere.
. Device callback (emu\devcb.cpp)
. Write callbacks can now be configured as 'OUTPUT("item_name")'. This behaves equivalently to a zero-dimensional 'output_finder', while eliminating the need to instantiate and resolve this in driver classes separately from the callback itself.
. The width of a callback's default mask now properly depends on its type (as was half-implemented before), instead of always being reset to 0xffffffffffffffff when actually configured. This allows MCFG_DEVCB_INVERT to work with line write callbacks as one might logically expect.
. Use new OUTPUT callback object in various (mostly Atari) drivers (atarisy1.cpp, avalnche.cpp, bsktball.cpp, canyon.cpp, centiped.cpp, cloak.cpp, cloud9.cpp, destroyr.cpp, dragrace.cpp, firefox.cpp, gridlee.cpp, liberatr.cpp, mcr3.cpp, orbit.cpp, pacman.cpp, rallyx.cpp, sbrkout.cpp, sprint2.cpp, sprint4.cpp, starwars.cpp, suprloco.cpp, tankbatt.cpp, tomcat.cpp, ultratnk.cpp and warpwarp.cpp)
. Set finder tag relative to current device being configured rather than the finder's owner. This meand you no longer need to care about the your relationship to the object being configured and a lot of ^ and : can disappear. There's a bit reduction in string pasting in macros from this.
. Bind devcb relative to current device. This is probably going to break plenty of things with late bind errors.
. Route sound relative to current device. Slot card additions run in the context of the slot itself, which isn't entirely intuitive. Slot configuration needs a bunch of other cleanup anyway (emu\disound.cpp).
. Use device_resolve_objects to resolve callbacks in output_latch_device. Renamed machine\latch.cpp/h to machine\output_latch.cpp/h.
. Allow devcb to be bound to a device/mixin or the target of a device finder. This works outside machine configuration context so the workarounds in ATA HLE and MSX slots are no longer necessary. It also allows reduction in tag repetition in machine configuration (see converted (MESS) osborne1.cpp, zorba.cpp or the more extreme tranz330.cpp). Allow reimagined device instantiation to take a device finder based on current device being configured to reduce repetition (see tranz330.cpp).
. Make MCFG_DEVICE_ADD and callable device types more flexible:
. Allows defaulted clocks (see subtle example with vboy)
. Allows additional constructors (see RS232 port in tranz330)
. Allows use of device finder in place of tag in MCFG_DEVICE_ADD
. Requires out-of-line destructor for devices using incomplete types
. Requires XTAL or explicit u32 for clocks for devices with private types
. Devices must still define the standard constructor. When writing additional constructors, be aware that the constructor runs before device_add_mconfig in the context of the existing device, not the new device. See osborne1, zorba, tranz330, and vboy for examples of this in use. Compilation is a bit slower, but this is temporary while refactoring is in progress.
. Eliminated the need for MCFG_SOUND_ROUTE_EX
. Removed macros from slot option configuration - they just obfuscated code and slowed it down with needless dynamic casts, but didn't actually simplify it.
. Streamline machine configuration macros - everyone's a device edition.
. Start replacing special device macros with additional constructors, starting with ISA, INTELLEC 4 and RS-232 buses.
. Allow an object finder to take on the target of another object finder. For a combination of the previous two things in action, see either theINTELLEC 4 driver, or the Apple 2 PC Exporter card. Also check out looping over a device finder array to instantiate devices in some places. Lots of things no longer need to pass tags around.
. Start supplying default clocks for things that have a standard clock or have all clocks internal.
. Eliminated the separate DEV versions of the DEVCB_ macros. Previously, the plain versions were a shortcut for DEVICE_SELF as the target. You can now supply a string tag (relative to current device beingconfigured), an object finder (takes on the base and relative tag), or a reference to a device/interface (only do this if you know the device won't be replaced out from under it, but that's a safe assumption for your subdevices). In almost all cases, you can get the effect you want by supplying *this as the target.
. Eliminated sound and CPU versions of macros. They serve no useful purpose, provide no extra checks, make error messages longer, added indirection, and mislead newbies into thinking there's a difference.
. Removed a lot of now-unnecessary ":" prefixes binding things relative to machine root. Clean up some miscellaneous rot.
. Make cards inherit clock from slot by default. Make speaker config more explicit. Added a couple more constructor options.
. Get rid of implicit prefix for GFX decode names and prefix them all. Get rid of special macro for adding GFXDECODE in favour of constructor. Make empty GFX decode a static member of interface. Allow palette to be specified to GFXDECODE as a device finder. Removed diserial.h from emu.h as it's used relatively infrequently.
. Added support for custom device constructors when replacing devices. Current syntax: MCFG_DEVICE_REPLACE(tag_or_finder, TYPE, ...). Next-generation syntax: TYPE(config.replace(), tag_or_finder, ...). Get rid of the token-pasting voodoo and casts in the discrete sound macros.
. Eliminated some explicit device tag lookups (drivers\namcond1.cpp, machine\nb1413m3.cpp, video\antic.cpp, video\tia.cpp and video\ygv608.cpp)
. Eliminated non-diexec PULSE_LINE hacks and disable some side effects
. Interrupt API changes (emu\diexec.cpp): PULSE_LINE is no longer a value. Existing uses have been changed to pulse_input_line with attotime::zero as the second argument. Formerly only INPUT_LINE_NMI and INPUT_LINE_RESET were allowed with PULSE_LINE. INPUT_LINE_NMI no longer receives special handling; instead, CPU devices must specify which of their input lines are edge-triggered and thus may be used with zero-width pulses by overriding the execute_input_edge_triggered predicate. INPUT_LINE_RESET is still special-cased, however. execute_default_irq_vector now allows a different default vector to be specified for each input line. This added flexibility may or may not prove useful.
. machine().device(tag) is now deprecated
. Removed machine().device usage from the core (emu\addrmap.cpp and diexec.cpp), suprnova.cpp and playch10.cpp
. Kludge some absolute tag lookups in the core that can't really be helped (debug\debugcmd.cpp, debugcpu.cpp, emu\romload.cpp and schedule.cpp)
. Removed many mainly PCI-related MCFG macros in favour of constructor overloads, removed some absolute device lookups, removed some absolute device tags and generally clean up stuff. Fixed incorrect device class for PCI APIC.
. Use device finder for exterm.cpp, igs011.cpp, looping.cpp, mhavoc.cpp, r2dtank.cpp, rbmk.cpp, taito_b.cpp, tp84.cpp, vcombat.cpp, machine\konppc.cpp, video\k001005.cpp and audio\exidy.cpp
. Use device finders instead of machine().device for video\voodoo.cpp and looping.cpp
. Replaced MCFG_CPU_VBLANK_INT with line callbacks in jantotsu.cpp and mrjong.cpp
. Output system changes: Cleaned up syntax for network provider. Added pause and savestate commands to both network and win32 providers (output\network.cpp, output_module.h and win32_output.cpp).
. Use output finder for 30test.cpp, berzerk.cpp, caswin.cpp, dblcrown.cpp, dynadice.cpp, fortecar.cpp, funtech.cpp, galaxi.cpp, gatron.cpp, highvdeo.cpp, mappy.cpp, meyc8088.cpp, mil4000.cpp, pacland.cpp, sanremo.cpp, segas18.cpp, subsino.cpp, tenpindx, usgames.cpp, machine\ticket.cpp and audio\exidy440.cpp
. Replaced set_led_value and set_lamp_value with output_finders. Keep the 2 bit lamp outputs in segaufo.cpp.
. Get rid of the assert replacement (emu\emucore.h). It prevents you from using assert in a destructor for a literal type due to the implicit nothrow. It's just not worth the trouble it's causing.
. Clean up some line write handlers (sound\namco.cpp and audio\polepos.cpp; gaplus.cpp, jrpacman.cpp, mappy.cpp, pacman.cpp, pengo.cpp and polepos.cpp)
. Fixed faulty assertion that was breaking (MESS) nes_vt.cpp in debug builds (emu\dipalette.cpp)
. Renamed direct_read_handler to memory_access_cache. Parametrize the template on more information (data width, endianness) to make it possible to turn it into an handler cache eventually, and not just a memory block cache. Make it capable of large and unaligned accesses (emu\emumem.cpp).
. Removed DRIVER_INIT-related macros in favor of explicitly-named member functions. Made init_ prefix on driver initializers explicit. Fixed up GAME/COMP/CONS macro spacing.
. Use siblingdevice instead of absolute tag lookup. Added screen tag validation for scanline timers (machine\timer.cpp).
. Eliminated extraneous machine argument (emu\romload.cpp)
. Removed unused tag look-up in atarisy2.cpp, malzak.cpp and pgm2.cpp
. 3rdparty: Initial import of SoftFloat release 3E. This is a pre-usage import so everyone can get things in line for various compilers. GCC/Clang should be OK on most targets as-is. MSVC may need to edit 3rdparty/softfloat3/build/MAME/build.h to conform. Please report failure/success with various compilers.
. Fixed opcode space (plugins\cheat\cheat_xml.lua)
. Translate debugger expressions by space index as the debugger does (plugins\cheat\cheat_xml.lua)
. Handle the case where the ui prepends the list name to the list entry name
. Updated hiscore.dat (plugins\hiscore\hiscore.dat). Make hiscore\sort_hiscore.lua much faster.
. Multi-Language: Updated Brazilian Portuguese, Chinese, Dutch, German, Greek, Japanese, Korean and Spanis translationsh
- SDLMAME: Disabled multithreading on the Emscripten target (osd\osdsync.cpp)
. Begin preliminary GCC 8 support
. Don't use C++ flags on plain C files (scripts\genie.lua)
. set_tag can now take things other than C strings
. Replaced references to 'decrypted opcodes' with 'opcodes' (debug\debughlp.cpp)
. Simplified now obsolete and buggy memory access code (debug\debugcpu.cpp)
. Make debugger dump command work with unaligned addresses (debug\debugcmd.cpp)
. Sort save state items in alphabetical order in the debugger memory viewer source list
. Fixed error in debug build with SMS card options (emu\emuopts.cpp)