- New games: Hammer Boy
- New Non-Working games: Blockout (TAX), The Dealer (ACL), Pittanko Zaurus, Sekai Kaseki Hakken (Japan, SKH1 Ver.A), Soreyuke Anpanman Crayon Kids (J 001026 V1.000), Super Medal Fighters (Japan 970228), VJ Visual & Music Slap and Zhaoji Fengdou
- New clones: Ares no Tsubasa (Japan, rev. A), Dam Dam Boy (on Tsukande Toru Chicchi PCB), Donkey Junior High Score Kit (hack,V1.2), Donkey Kong High Score Kit (hack,V1.0a), Donkey Kong High Score Kit (hack,V1.2), Donkey Kong/DK (Japan) (hack,V1.1 IKE), Donkey Kong/JR (combo) (hack,V1.2), Double Donkey Kong (hack,V1.2), Gee Bee (UK), Gigas Mark II (MC-8123, 317-5002), Hard Yardage (v1.10), Ironman Ivan Stewart's Super Off-Road (rev 3), Moon Shuttle (US, version A), Pac-Land (Bally-Midway), Pac-Man (bootleg, Video Game SA), Quarterback (rev 1, cocktail), Rabbit (Japan, location test), Sangokushi II (bootleg), Street Fighter II': Champion Edition (Taiwan 920313), Street Fighter II: The World Warrior (bootleg with rules screen), Street Fighter II: The World Warrior (bootleg, set 2), Tapper (Budweiser, 12/9/83), Target Ball '96 and Tecmo Bowl (World, set 2)
- New PEPlus games: Player's Edge Plus (PS0280) 4th of July Slots
- New drivers: badlandsbl.cpp, blocktax.cpp and konmedal68k.cpp
- New devices: clgd5446, es5510, esq_5505_5510_pump, ladybug_video, rst_pos_buffer, rst_neg_buffer, stvcd and zerohour_stars
- ADSP21062 CPU: Disabled fatalerror on debugger data area access
- I286/I386 CPUs: Fixed default CS flags
- I8086 CPU
. Make read_byte/word and write_byte/word overridable virtual functions (80186 MMU probably will need to override this in the future).
. Make fetch_op an alias for fetch (implementations were identical already).
. Removed sreg argument from read_byte/word and write_byte/word (it was almost always m_easeg as set by calc_addr, sometimes with dubious evaluation order).
. Restrict logic for separating address spaces for CS/ES/SS accesses to 8086/8088 (later x86 models do not broadcast the descriptors).
. Encapsulate m_e16 within the only function that used it.
- I80186 CPU: Added some internal peripheral block registers to 80186 debug state
- i960kb CPU
. Fixed disassembly of REG instructions
. Support for burst mode stalling save and restore. Experimental FIFO burst mechanism. Cleanups and commentary.
- M6502 CPU: Created derived 6502 type for (MESS) XaviX because it has at least one custom. Fixed M6502 paged variants tracing and breakpoints.
- MC6809 CPU
. Replaced MC6809 (legacy) with MC6809E in brkthru.cpp, bwing.cpp, chanbara.cpp, cntsteer.cpp, compgolf.cpp, homedata.cpp and sidepckt.cpp
. Replaced MC6809 (legacy) with MC6809 in brkthru.cpp and renegade.cpp
- Z80 CPU: Changed refresh callback to write8
- OKI MSM9810 sound: Sampling frequency is actually divider (changed name/accurate this). Added device_clock_changed. Implemented DADR, serial interface and added notes.
- POKEY sound: Removed check_debugger
- Seta X1-010 sound: Changed m_adr value name to m_xor because it's actually address bit XOR value.
- Sound Interface: Soundlatch modernization in 40love.cpp, bigevglf.cpp, crgolf.cpp, ddenlovr.cpp (mmpanic and funkyfig), kurukuru.cpp, ssozumo.cpp, vaportra.cpp and yunsung8.cpp:
- Taito Ensoniq ES5505-based sound: Hook up ES5510 effects DSP (audio\taito_en.cpp)
- YM2203 sound: Handle interrupt output as instant timer to prevent synchronization glitches (sound\2203intf.cpp)
- YMF271 sound: Allow 4 channel output. Converted external memory handler to address space. Moved global imperfect_sound tags to device imperfect_features. Added notes.
- YMZ280B sound: Added device_rom_interface instead external memory handlers
- 6840 PTM
. Stop defaulting external clocks to 1 Hz. Fully configure MC6840 timer to pass self-test for (MESS) Panafacom Duet-16.
. Counter/timers are numbered from 1 to 3, not 0 to 2 as with 8253. Renamed OUT0, OUT1 and OUT2 callback configuration macros to match pin names (O1, O2 and O3). Updated all verbose logging messages to be one-based. Removed unnecessary mentions of device type in logging messages.
- 8250 UART: Unbreak the (MESS) IBM pcjr
- 8257 DMA: Don't clear DRQ on tc (machine\i8257.cpp; drivers\dkong.cpp and fastinvaders.cpp)
- Data East Custom
. Fixed tilemap flip (video\decbac06.cpp)
. Fixed flip screen rendering of DECO MXC06 sprites. This seems to fix all remaining attract mode glitches in Act-Fancer (video\decmxc06.cpp).
. Synchronized soundlatch writes (fixes dropouts in Double Wings) (machine\deco146.cpp)
- Discrete Netlist
. Fixed assertion when debugging in Visual Studio (netlist\plib\pstring.cpp)
. Fixed is_set() when generic_function is an int array (netlist\plib/ppmf.h)
. Disabled netlist statistic logging on shutdown, because it triggers a use after free in void device_debug::errorlog_write_line(const char *line) & fixed the copy & pasted comment (netlist\solver\nld_solver.h).
- HD63484 video: Added external skew kludge to prevent display cutoff in Kyuukyoku no Othello
- I8275 video
. Handle invisible field attributes and "end of row - stop dma" special code better; honor Video Enable bit. Fixes display is not stable and flickers in (MESS) Radio-86RK (4K ROM) (ID 05764). No visual change on (MESS) mikromik, zorba and radio86 clones.
. Make Preset Counters command useful. Fixes visuals in (MESS) tim100 and hp64k.
- MSM6242 RTC: Deassert interrupt output when the IRQ flag is cleared
- RST buffer: Created RST interrupt buffer device
- Sega Custom
. Kill tile32/char32 tranpolines (video\segaic24.h)
. Added object finder m_rom instead memregion(":maincpu") (machine\st0016.cpp)
. Make sega_315_5195 and sega_315_5250 sound read/write delegates standard device callbacks (segaorun.cpp, segas16b.cpp, segas18.cpp, segaxbd.cpp and machine\segaic16.cpp)
- TMS9927 video
. Fixed excessive sync width after recomputing parameters during sync
. Adjust vertical positioning of cursor by upscroll value
- V9938 video: Improved logging options with logmacro
- asteroid.cpp: Use 74LS153 device for DSW1
- bnstars.cpp, macs.cpp, ms32.cpp, seibuspi.cpp, simple_st0016.cpp and speglsht.cpp: Cleanup bankswitching
- cave.cpp: Cleanup duplicates, fixed spacing and added notes. Fixed the FIFO.
- cdi.cpp: Safer DMA handling (machine\cdicdic.cpp). Note: This fixes the regression in quizard/2/3/4. It's surprising that this very unsafe code hadn't been crashing until just recently.
- chihiro.cpp: Clean up some unnecessary machine-relative accesses (machine\xbox.cpp)
- ddenlovr.cpp: Clean up DSW mux and fixed akamaru
. Cleanup bankswitch initializes, driver_init_members and duplicates
. Some accurate CPU type from PCBs and added notes. Converted m_buffered_spriteram16 to unique_ptr.
. Removed defined memory map for "If a new dec8.cpp game with a different mapped main CPU ROM is found"
. Replaced HD6309 CPU1 with HD6309E in garyoret, ghostb and gondo.
. Cleanup duplicates. Removed unneed shared_ptr. Added notes.
. Converted m_spriteram16*/m_spriteram16_buffered*/m_pf_rowscroll* to std::unique_ptr
. Rowscroll ram size allocated to memory mapped size. Moved m_oki2_bank to dragngun_state. Fixed DECO32 ioport tags when "DSW" aren't actually dipswitch.
. Improved OKI bankswitching in Locked 'n Loaded
. Demoted Dragon Gun with MACHINE_IMPERFECT_SOUND, because OKI3 bankswitching aren't verified.
. Fixed ioport tags for Captain America
- decocass.cpp: Invert sprite/sprite priority (seems to help Oozumou - The Grand Sumo)
. Cleanup unused/duplicates
. Added sprite drawing when 8bpp and alpha using simultaneously. Implemented alpha/shadow selectable bits.
. Corrected game name/region related each rom versions. Implemented more blending mode. Changed m_mainCpuIsArm to m_irqLevel for when discovered non-DECO156 CPU games with different IRQ pin is connected. Accurate shadowMode. Added notes.
. Added MACHINE_NOT_WORKING and MACHINE_IMPERFECT_GRAPHICS flags to Skull Fang, because it has sometimes random hangs and these blending and raster effect features aren't fully emulated currently.
- djmain.cpp: Fixed MAME exception in all DJMain sets (ID 06884)
. Simplified banking. Don't clear DRQ on tc (machine\i8257.cpp).
. Hooked up undocumented service switch and undumped diagnostic rom to Donkey Kong and Donkey Kong Junior
- firebeat.cpp: Minor cleanups. Splitted main CPU memory maps related for number of allocated GCU chips in PCB.
- fromanc2.cpp: Cleanups
. Cleanup duplicates. Minor fixes.
. Splitted wildfang/raiga machine config/address map
. Fixed hang at soft reset in Raiga - Strato Fighter
- gkigt.cpp: Hookup RAMDAC. Some improvements to make most games to boot up to display CMOS error. Hook up SC28C94 QUARTs. Commented out for now to not interfere with development.
- itech32.cpp: Fixed sound outputs with allocated PCB sound output connectors
- jchan.cpp: Improved sprite-tile priority. Cleanup duplicates. Verified background pen. Fixed tilemap offset. Added notes.
- jclub2.cpp and srmp5.cpp: Accurate tag for CPUs and configurated ST0016 rom bankswitching
- ladybug.cpp/redclash.cpp: Untangle ladybug and redclash state classes. Moved Space Raider back to Lady Bug driver.
- luckgrln.cpp: Use MSM6242 RTC device
- m90.cpp: Replaced VBLANK INTERRUPT_GEN with line callbacks
- m92.cpp: Soundlatch modernization
. Bank the ROM in a somewhat less hacky way. This improves sound in Hammer Boy (whose sound program indeed reads different interrupt vectors, though from a table at the same addresses). Clean up code and added register state for saving (machine\inder_sb.cpp).
. Mark Hammer Boy working. Patch PIC ROM to shorten timer or the game times out waiting for an answer from the PIC. Start fixing dip switches for Hammer Boy. Various cleanups. Prevent random hanging in Hammer Boy.
. Cleanups. Fixed viewport. Kill tile32/char32 tranpolines (video\segaic24.h).
. Converted colorxlat & lumaram to 16-bit accessors
. State-ized frame_start / geo_parse (video\model2.cpp)
. Fixed 2D priority over polygons (Virtua Cop level select, Dead or Alive chara select etc.)
. Fixed bufferram size and improved geo_parse()
. Modified poly_manager parameters, crashes less often now.
. Testing sRGB color space
. Mask polygon_rom/texture_rom checks towards bounds. Fixed ROM loading regressions. Initialized bufferram to a sane default.
. The render_mode can be read back, cfr. Gunblade NY.
. Some inputs fixes and updates
. Fixed Dead or Alive protection reads
. Added "Bat Swing" inputs to Dynamite Baseball and Dynamite Baseball 97
. Fixed texture rom loading for Virtua Fighter 2 and rom loading for Rail Chase 2.
. Added 30 Hz renderer mode, fixes Virtua Striker timings.
. Hookup polygon count for Sky Target. Note: Only Sky Target seems to use this for unknown purpose.
. Make Rail Chase 2 pass the initial network check (has tons of 3D issues)
. 'Dead or Alive' protection was actually good this way, mangled 3D is caused by comms or core bugs (machine\315-5838_317-0229_comp.cpp)
. i960KB: Fixed disassembly of REG instructions. Support for burst mode stalling save and restore. Experimental FIFO burst mechanism. Cleanups and commentary. Known status (difference from before): daytona: Runs at better speed, crashes/hangs at expert course. dynamcop, indy500, motoraid, vcop2 and vf2: Playable. fvipers: Playable if you coin it up fast enough, crashes in attract otherwise. lastbrnx: Runs a bit further, needs a few extra geometry opcodes. overrev/sgt24h/zerogun: 3D regressions (?).
- ms32.cpp: Real arcade board can output stereo sound (http://www.nicovideo.jp/watch/sm23743949), it has a second stereo sound connector.
. Fixed soft reset hangs. Improved encapsulation. Demoted all games to MACHINE_NO_COCKTAIL.
. Fixed status bar colors for VS Express event in Numan Athletics
. Fixed video disable graphic transitions (i.e. temporary gfx seizures)
. Added dynamic screen visible area change effect, used mostly by Numan Athletics on transitions
. Fixed bogus palette transfers for X-Day 2. Fixed horizontal scroll adjust and background color pen, improves X-Day 2 video emulation. Added MSM6242 RTC and fixed EEPROM type.
- namcos1.cpp: Use 74LS157 device for dipswitches and correct order of switches
. Cleanup duplicates. Update documents.
. Verified OKI bankswitching and for clones Atom (bootleg of Bombjack Twin) and Vandyke (bootleg with PIC16c57). Fixed OKI clock.
- nss.cpp: Removed m_clock_line (video\m50458.cpp)
. Reverted clone Popeye (bootleg set 1) to 0.33b6 names and contents. The tile ROM was replaced with the contents from the TPP2 set and all the graphics roms were renamed to match the names in use at the time. The tile rom in the recently dumped "Popeye (bootleg set 2)" also matches the old tile rom, so it's a reasonable bet that the dump was correct.
. Fixed background alignment in TPP2 sets. Converted machine config, address maps, palette init, background write handler & background drawing to virtual methods. Only include protection device on hardware that has it.
. Fixed TPP2 test mode background
. Added Popeye sprite ram, background scroll and palette buffering. Unmap $8000 to $87ff for TPP2 as 7f is not populated at the factory.
. Moved popeye palette resistor network into driver class
. NMI disable is latched from A9 (which corresponds to bit 0 of the I register) when RFSH goes from high to low
. Moved Popeye Copyright from dipswitches to machine configuration, the schematics show that they are just resistors. The Unknown bit isn't hooked up on the schematics and the game doesn't access it, so I've changed it to unused.
. Added 'Difficulty' dipswitches to Sky Skipper
- rohga.cpp: Cleanup IO, protection handling and duplicates. Added notes and removed outdated comments.
- segas24.cpp: Kill tile32/char32 tranpolines (video\segaic24.h)
- seibuspi.cpp: Single PCBs only output mono sound (sxx2e PCB: unverified)
. Configurated M6502 bankswitching. Converted memcpy to std::copy.
. Cleanup duplicates. Converted to unique_ptr when array size is >= 0x100.
. Moved existing CD-ROM emulation down into device for Sport Fishing 2 (machine\stvcd.cpp)
. Fixed regression due to an unexpected CDDA dependency
- taito_f2.cpp: Fixed palette format for games when using 15-bit palette area
- taito_l.cpp: Converted VRAM banks to address_map_bank_device. Cleanup duplicates.
. Workable Stepping Stage Special driver: Added fundamental communication between main 68000 and (undumped) Windows PC. Figured out correct logic of data uploading from main CPU to (maybe an FPGA on some unknown board). Discovered proper V-blank frequency of 4 logigal screens (routed to 3 physical screens in real hardware), which effects the communication and synchronization between 2 68000 CPUs, thus affect booting. Borrowed foreground graphics from vjdash, added proper foreground layer handling and removed hack code. Seperated palette and decoding of 3 screens, and added independent 3rd screen decoding/drawing routine, as each screen has their own palette, and may display totally non-related graphics. Corrected sprite rom loading of step3. Mapped dancing floor light, spot light, neon light and key led output, based on some video footage of real arcade machines. Corrected NVRAM handling. Adjusted key-mapping of foot step input port, avoided key conflict. The in-game palettes are in 8-BIT YUV(UYUY) format. Each entry may contains 2 pixels. In the real game hardware, the sprites are to be mixed with a MPEG-1 under-layer, then converted together to RGB.
. Driver for the recently dumped Vjdash (a 4-monitor game): Figured out that vjdash uses similar hardware to Stepping Stage. Identified graphics roms of fg/bg/rotation layers. Been able to boot to self-test, thus mapped inputs. In addition to the currently obtained board, this game also needs a 2nd 68000 board which drives 3 upper screens, and one Windows PC, like in Stepping Stage series. This board may have 2 more (missing?) ROM ICs for sprites.
- vamphalf.cpp: Configured OKI banking. Implement OKI bankswitching to Diet Family.
- vaportra.cpp: Code cleanup
. Cleanup unused/duplicates. Moved bankswitch initializations to MACHINE_START.
. Moved bank scheme to address_map_bank_devic in NBA Jam Extreme
. CPU type/soundchip identification for clone Beastorizer (USA bootleg)
- Alien Command: Cleanups
- Ameri-Hockey: Make Z8 CPU address spaces big-endian
- American Poker II: Added vsync
- Bad Lands: Splitted Bad Lands bootlegs into own file. Added preliminary sprite drawing to the bootlegs. Cleanups and improved sound. TODO: badlands_molayout doesn't want to link for some reason, for now I split defs into both files.
- Bagman: Fixed broken clone 'Le Bagnard (bootleg on Crazy Kong hardware)' after recent memory changes
- BanBam: Added notes regarding protection issues for BanBam/Pettan Pyuu. Note: Banbam has a Fujitsu MB8841 4-Bit MCU for protection labeled SUN 8212. Its internal ROM has been imaged, manually typed and decoded as sun-8212.ic3. Pettan Pyuu is a clone of Banbam although with different levels/play fields. Protection currently fails on both Pettan Pyuu and Banbam if you play either game to Round 11. When you get there, the music still plays but all you see is "ERR-43" in red text at the bottom left of the screen and the game is no longer playable. Also, in some earlier rounds you notice the background graphics are also not producing logical playfields as bits of graphics are in different locations.
- Buster: Some work to make it actually show something
- Centipede / Millipede / Missile Command / Let's Go Bowling: Some minor investigation. Game is super weird.
- Chinese Casino [BET]: No more state hacking for palette writes
- City Connection: Don't lose the sprites; added some RAM mirroring.
- Come On Baby: Make it to execute some opcodes
- Crude Buster: Cleanup duplicates. Moved spriteram buffer functions to buffered_spriteram16_device. Removed unneeded rambank/shared ptr. Minor fix.
- Cruis'n USA: Label for PAL2. Verified PAL dumps as bad.
- Dark Seal
. Dark Seal and clone Gate of Doom has 64x64 pf1 and full 0x2000 area of pf1 ram is used. Minor duplicate cleanup.
. Clean up "control" handlers
- Draw Poker III / Dwarfs Den (Dwarf Gfx): Set DIP defaults to display usable graphics
- Driving Force: Verified PROMs for clone Driving Force (Galaxian conversion, Seatongrove UK)
- Haunted Castle, Ponpoko and Son Son: Use 4-way joystick as documented in manuals
- Kirameki Star Road: Added PAL dump
- Kyuukyoku no Othello: Added external skew kludge to prevent display cutoff (ID 06446)
- Little Robin: Added PCB layout
- Mad Motor: General cleanup
- Magic's 10: Fixed longstanding regression with gameplay not behaving properly
- Mario Bros.: Workaround for missing music/sound effects (audio\mario.cpp) (ID 06870)
- Ninja Warriors and Warrior Blade
. Cleanup duplicates. Demoted games with MACHINE_IMPERFECT_SOUND, because SSG Output isn't accurate.
. Identified Sound chip type for Warrior Blade
- Photo Play 2000
. Added Cirrus Logic GD5446 VGA PCI device (video\clgd542x.cpp), now shows some legacy BIOS error (presumably needs PCI support to properly boot).
. Many fixes and improvements, see driver notes for more info.
. Preliminary EEPROM hookup. Hack EEPROM timings to make it work.
- Quiz Do Re Mi Fa Grand Prix 2: Removed IDE hack now that Ted Green's work allows it. This fixed game hang on boot (ID 06885).
- Raiden: Corrected xtal / clocks for clone Raiden (set 3)
- Revolution X: Added crosshairs (ID 06866)
- Sand Scorpion: Fixed Sprite-tile priority. Make loop counters to individual values and removed hack. Minor cleanups (ID 06688).
- Scramble: Fixed dipswitches for clone Scramble (Reben S.A. Spanish bootleg)
- Shizhan Ding Huang Maque: Decapped and dumped PIC16F84
- Soul Edge: Fixed background colours in Li Long stage (ID 03563)
- Space Gun: Use cswidth for TC0510NIO access
- Techno Drive: Added default NVRAM with printer "off" and marked game as MACHINE_NODEVICE_PRINTER (ID 06867)
- Time Crisis II: Redumped maincpu program roms for clone Time Crisis II (World, TSS2 Ver. B)
- Time Traveler
. Removed bogus interrupt generators
. Added EEPROM and INS8250 UART
- Tora Tora: Fixed dipswitches and DIP locations
- Wall Crash: Updated clone (set 2) XTAL value according to PCB pic
- Warrior Blade: Use 8-bit handler for TC0510NIO
- Fixed year info for piccolop, rchase2, sf2049 (ID 06872), sf2049se, sf2049te and von
- Dipswitch fixes in buster.cpp, dwarfd.cpp, galaxold.cpp, gkigt.cpp, namcos1.cpp, popeye.cpp, tetrisp2.cpp and toratora.cpp
- Fixed rom names in freekick.cpp, galaxold.cpp, itech32.cpp, leland.cpp, littlerb.cpp, mcr.cpp, model2.cpp, ms32.cpp and tbowl.cpp
- Description changes of Avengers In Galactic Storm (US/Europe 1.0), Avengers In Galactic Storm (Japan 1.2), Back to the Future - The Pinball (2.0), Back to the Future - The Pinball (2.1), Back to the Future - The Pinball (2.7), Back to the Future - The Pinball (2.7, Germany), Back to the Future - The Pinball (2.8), Best Bout Boxing (ver 1.3), Dam Dam Boy (on dedicated PCB), Danny Sullivan's Indy Heat (rev 1), Desert War / Wangan Sensou (ver 1.0), Driver's Edge (v1.6), Gratia - Second Earth (ver 1.0, 91022-10 version), Gratia - Second Earth (ver 1.0, 92047-01 version), Hayaoshi Quiz Nettou Namahousou (ver 1.5), Idol Janshi Suchie-Pai II (ver 1.0), Idol Janshi Suchie-Pai II (ver 1.1), Ironman Ivan Stewart's Super Off-Road (rev 4), Ironman Ivan Stewart's Super Off-Road Track-Pak (rev 4, 2 Players), John Elway's Team Quarterback (rev 2), John Elway's Team Quarterback (rev 3), Mahjong Angel Kiss (ver 1.0), Print Club 2 Puffy (J V1.100), Quarterback (rev 2), Quarterback (rev 5), Skull Fang (Japan 1.09), Skull Fang (Asia 1.13), Skull Fang (Europe 1.13), Stadium Hero '96 (Europe, EAJ), Street Fighter II': Champion Edition (Hung Hsi, bootleg, set 1), Tapper (Budweiser, 1/27/84), Tapper (Budweiser, Date Unknown), Target Ball (With Nudity), Tecmo Bowl (World, set 1), Tetris Plus (ver 1.0), Tetris Plus 2 (ver 1.0, MegaSystem 32 Version), The Game Paradise - Master of Shooting! / Game Tengoku - The Game Paradise (ver 1.0), Viper (rev 3), Vs. Janshi Brandnew Stars (Ver 1.1, MegaSystem32 Version) and World Soccer Finals (rev 3)
- Renamed (tapper) to (tapperb), (tappera) to (tapper), (tgtball) to (tgtballn) and (tgtballa) to (tgtball)
. API change
. Memory maps are now "last entry wins". This allows for the much more natural "import another map and patch it" structure, or "cover a whole region then punch holes in it". Our previous first-entry-wins rule was always a surprise to newcomers, and oldcomers too.
. Memory maps are now methods of the owner class. Fixed extra-large device map (emu\addrmap.cpp). Removed multiple handlers with different unitmasks on the same line (aerofgt.cpp, astrcorp.cpp, fromanc2.cpp, gaelco3d.cpp, mcatadv.cpp, neogeo.cpp, pgm.cpp, taito_b.cpp and tatsumi.cpp). Fixed (machine\iteagle_fpga.cpp, namco_c139.cpp, drivers\mcatadv.cpp).
. Generalized support for byte-smeared accesses: The new cswidth address map constructor method overrides the masking normally performed on narrow-width accesses. This entailed a lot of reconfiguration to make the shifting and masking of subunits independent operations. There is unlikely to have any significant performance impact on drivers that don't frequently reconfigure their memory handlers (emu\addrmap.cpp and emumem.cpp). Set up heavily mirrored memory ranges with subunit masks (e.g. orunners) much more efficiently (emu\emumem.cpp).
. Internal maps must now be constructed last to have priority (emu\addrmap.cpp). Fixed memorymap ordering/regression in aeroboto, alibaba, armedf, buster.cpp, calchase.cpp, cave.cpp, cdi.cpp, csplayh5.cpp, cubo.cpp, diamond, exterm, fastfred.cpp, formatz, gammagic.cpp, jangou.cpp, jpmimpct.cpp, liberate.cpp, ltcasino.cpp, megaplay.cpp, metalmx.cpp, metlfrzr, mlanding.cpp, mpatrol, namcos11.cpp, namcos21.cpp, nbmj8688.cpp, nmk16.cpp, psikyo4.cpp, raiden2.cpp, renju, skyraid, scobra.cpp, scramble.cpp, seabattl.cpp, srmp5.cpp, ssv.cpp, system16.cpp, taito.cpp, tankbatt, tazmania, toratora, tnzs.cpp, voyager.cpp and williams.cpp. Fixed renju regression (emu\emumem.cpp).
. Screwed macros: Replaced MACHINE_CONFIG_DERIVED with MACHINE_CONFIG_START. Removed MCFG_FRAGMENT_ADD. There's no voodoo involved in derived machine configurations and fragments any more. The macros were just obfuscating things at this point.
. Made some methods private in devices\bus\*.h now that it's possible. Some private-ization and removed some duplication.
. Lots of cleanup and encapsulation (drivers\ace.cpp, albazc.cpp, albazg.cpp, aleisttl.cpp, altair.cpp, appoooh.cpp, arcadecl.cpp, aristmk5.cpp, aristmk6.cpp, atarig1.cpp, atarig42.cpp, atarigt.cpp, atarigx2.cpp, atarisy1.cpp, atarisy2.cpp, badlands.cpp, bagman.cpp, batman.cpp, beathead.cpp, bfcobra.cpp, bfm_ad5.cpp, bfm_sc1.cpp, bfm_sc2.cpp, big10.cpp, blstroid.cpp, bowltry.cpp, boxer.cpp, bsktball.cpp, bzone.cpp, canyon.cpp, carpolo.cpp, caswin.cpp, ccastles.cpp, clayshoo.cpp, cloak.cpp, cloud9.cpp, copsnrob.cpp, cyberbal.cpp, cybstorm.cpp, destroyr.cpp, dooyong.cpp, dragrace.cpp, eprom.cpp, eprom.cpp, equites.cpp, equites.cpp, exidy440.cpp, firefox.cpp, firetrk.cpp, flyball.cpp, foodf.cpp, forte2.cpp, gauntlet.cpp, gridlee.cpp, irobot.cpp, jedi.cpp, klax.cpp, ladybug.cpp, liberatr.cpp, looping.cpp, manohman.cpp, mediagx.cpp, meijinsn.cpp, metalmx.cpp, mgolf.cpp, mpu2.cpp, mpu3.cpp, mpu5.cpp, nitedrvr.cpp, offtwall.cpp, ohmygod.cpp, opwolf.cpp, orbit.cpp, patapata.cpp, pengadvb.cpp, poolshrk.cpp, quantum.cpp, quizshow.cpp, quizshow.cpp, rampart.cpp, redclash.cpp, relief.cpp, rmhaihai.cpp, sbrkout.cpp, sfkick.cpp, shougi.cpp, shuuz.cpp, skullxbo.cpp, skydiver.cpp, skyraid.cpp, sprint4.cpp, sprint8.cpp, starshp1.cpp, stellafr.cpp, superslave.cpp, supertnk.cpp, tamag1.cpp, tank8.cpp, tempest.cpp, thunderj.cpp, tomcat.cpp, toobin.cpp, tourtabl.cpp, triplhnt.cpp, tunhunt.cpp, ultratnk.cpp, unico.cpp, vectrex.cpp, vertigo.cpp, victory.cpp, videopin.cpp, vindictr.cpp, wolfpack.cpp, wrally.cpp, xybots.cpp and machine\atarigen.cpp)
. Register device callbacks and added some basic validation for them (emu/devcb.cpp, device.h, emufwd.h and validity.cpp)
. Read whole block (plugins\cheatfind\init.lua)
. Make the console behave like the docs, unlike the official LUA console if you are in a block, entering a newline on a blank line gets you out (plugins\console\init.lua).
. Flip screen
. Set flip screen state without peeking into driver_data (video\decbac06.cpp, deckarn.cpp, decmxc06.cpp and decospr.cpp).
. Flip screen API cleanup: Make the global flipping functions of driver_device protected so as not to be accessible from within subdevices. Eliminate the flip_screen_set_no_update kludge.
. Added K051649 support to VGM player
. Support multiple patterns and devices in -listfull (mame\clifront.cpp and commandline\commandline-all.rst)
. MAME documentation
. Terminology cleanup of docs commandline section (docs\source\commandline\commandline-all.rst)
. More docs work: Escapes, debugger update. Missed a couple escape sequences. A little more escaping, acronym fixes, fixed oddity in symlist. Updated debugger internal help to match docs. Lowercasing for CPU in command parameters, fix casing on ASCII (docs\source\debugger\breakpoint.rst, cheats.rst, expressions.rst, general.rst, watchpoint.rst, tools\imgtool.rst and debug\debughlp.cpp)
. Multi-Language: Updated Brazilian Portuguese and Turkish translations
. Fixed issue linking Emscripten build with certain single-driver compiles (e.g. spectrum.cpp). Emscripten 1.37.29 or higher is now required (scripts\genie.lua).
. MAME_INCLUDES__H is now the standardized way for a MAME include header, starting with a double underscore is reserved by the C++ standard go figure.
. Fixed building using system utf8proc and portaudio. Allow using system-wide ASIO (1.11.0 or higher required), GLM and RapidJson headers. Put all ext_includedir calls together. Fixed build failure when SOURCES is defined (scripts\build\makedep.py and target\mame\arcade.lua).
. De-staticify initializations for src\mame\video, machine, includes and audio
. Fixed ASCII dump output for big-endian spaces (debug\debugcmd.cpp)
. Fixed F10 step over of instructions with a branch delay slot
"Theory is when you know everthing but nothing works. Practice is when everything works but no one knows why.
In our lab, theory and practice are combined: nothing works and no one knows why."