- New games: Big Buck Hunter (v1.00.14) and Warai no Hana Tenshi (Japan)
- New Working games: Eyes (Italy), Gunpey, Motor Raid - Twin, Virtua Fighter 2 and War: The Final Assault
- New Non-Working games: Badlands (Konami, set 1) and Photo Play 2004
- New clones: Badlands (Konami, set 2), Big Buck Hunter II - Sportsman's Paradise (v2.02.08), Big Buck Hunter II - Sportsman's Paradise (v2.02.09), Daytona USA (GTX 2004 Edition), Game King (EZ Pay, v4.0), Ghox (joystick, older), Irion, Master Boy (Spanish, PCB Rev A), Opa Opa (Rev A, unprotected), The Real Broadway (9131-20-00 R0C), Street Fighter II: The World Warrior (Thunder Edition, bootleg, set 2), Street Fighter III 3rd Strike: Fight for the Future (Japan 990512), Street Fighter III 3rd Strike: Fight for the Future (Japan 990608), Super Cobra (bootleg, set 2) and Super Seven
- New PinMAME games: Earthshaker (Prototype) (PA-4), Lucky Draw (Pinball) and Strange Science (Rev C)
- New drivers: konblands.cpp and lckydraw.cpp
- New devices: dec_rs232_loopback, mb89374, pit_counter and scn2672
- New mame.ini options: comm_framesync = 0 (CORE COMM OPTIONS)
- Analog Devices ADSP21062 CPU
. Added Rn = Rn FDEP Rx BY : opcode used by Last Bronx for a vital geometrizer function (sharc\sharcops.hxx).
. Added fmul abs multi opcode (used by Gunblade NY) (sharc\compute.hxx, sharc.h and sharcops.hxx)
. Added SET_UREG case $67 (Zero Gunner 2B) (sharc\sharcops.hxx)
. Fixed LSHIFT negative operations to not extend the sign on result, fixes Last Bronx frame flickering (sharc\sharcops.hxx).
- Dynamic Re-Compiling: Make UML shorthand a bit easier to use without using namespace everywhere. Modernised cpu\drcuml.cpp.
- Fujitsu MB86233 CPU: Some DASM changes
- IBM PowerPC 4xx/6xx CPUs: Clean up a bit of macro hell in PowerPC core
- Intel 8257 DMA Controller CPU: Cleanup
- Intel I8051 / MCS-51 CPU: Use callbacks for parallel ports
- Intel i960KB CPU: Support burst stall on writes
- NEC uPD7810 CPU: Dasm fix (cpu\upd7810\upd7810_dasm.cpp)
- TLCS-90 CPU: Separated TLCS-90 external IRQ line state from internal request register (fixes Mahjong Tenkaigen slowdowns)
- ES8712 sound: The ES8712 is actually a controller for MSM5205/MSM6585 and 74157-type TTL pair (gcpinbal.cpp, lastbank.cpp, metro.cpp and witch.cpp). Added notes.
- K051649 sound: Added scc_map to reduce duplication in driver memory maps
- N2A03 APU sound: Derive frame counter from clock input
- Namco C352 sound
. Changed mu-law algorithm to match Namco's WII VC emulator. This appears to be the original algorithm used in the hardware.
. Fixed static noise between fights in Tekken 3
. Fixed the order of the phase inversion flags
- QS1000 sound: Converted set_irq into WRITE_LINE_MEMBER
. Rewrote/Improved DSP16 disassembler. Less ambiguous, more like the manual. Less cluttered output, better handling of ambiguous operations, look-ahead for predicated jumps, live will/won't comments on conditional instructions (cpu\dsp16\dsp16dis.cpp).
. Cycle-accurate DSP16 core (disabled in QSound for performance reasons). Start adding DSP16 recompiler boilerplate.
. QSound LLE available with a 3-character change. Changed sample rate and playback behaviour to better match DSP for qsound_hle. Simplified sample fetch/scale and register writes for qsound_hle.
. Clean up host and DAC comms a bit, hopefully fix desync (sound\qsound.cpp).
. Marginal DSP16 performance improvement by precalculating SIO clock divider preload, also push ILD/OLD on mode change. Moved most core state into DRC cache - keeps a lot of details out of the main header (DRC is still stubbed out).
- Sega PCM sound: De-staticify initializations. Added device_clock_changed. Minor cleanup (sound\segapcm.cpp; drivers\segahang.cpp, segaorun.cpp, segaxbd.cpp and segaybd.cpp).
- Taito Ensoniq Sound System
. Moved imperfect_features() into es5510.h. Verified ESP input clock and output channels from GunBuster schematics (same in other PCBs?). Added m_bankmask instead runtime tag lookups. Added notes.
. ES5510 CPU: Fixed DRAM read/write. Converted gpr, instr and dram into std::unique_ptr. Added save states and notes. Minor cleanup.
. Ensoniq 5505/5506 to 5510 interface (sound\esqpump.cpp): Cleanup unused m_otis/m_otto and converted e[0x4000] into std::unique_ptr if used.
- ER2055 EAROM: Separated CLK writes to make emulation usable for (MESS) CIT-101
- Intel 8251 USART: Added XMIT FLAG polling to (MESS) DEC VT100 using new i8251 line read handler
- Intel 8253 PIT: Converted counters to subdevices
- Kaneko Custom: Added device_rom_interface instead memory pointer (video\sknsspr.cpp; drivers\galpani3.cpp, jchan.cpp and suprnova.cpp)
- National Semiconductor INS8250 UART: Added hack to reset transmitter when baud rate is changed. This is needed to make the (MESS) VT102 printer loopback test pass because ins8250_uart_device does not fully emulate the baud rate generator as the independent block it really is, but relies on the all-purpose, somewhat faulty device_serial_interface implementation.
- PCI bus: De-staticize callbacks and remove both device parameters (machine\lpci.cpp)
- Rockwell 10937 video: Cleanup
- RS232 Port: Moved devcb resolution to device_resolve_objects. Added V.24 cross reference. Added speed indicator to modem control and speed select output. Added DEC 12-15336-00 RS232 loopback connector type (required for (MESS) VT102 modem control self-test).
- SCN2674 Video
. Use same character width for text and graphics modes. This change has been made partly to bring the implementation in line with other character-based video devices. It is also consistent with the documented ability of the SCN2674 to combine text and graphics modes on the same screen, which rules out bitmap resolution changes.
. Massive register/command processing/logging cleanup
- Sega Custom
. Added xhout and xvout register callbacks (video\segaic24.cpp), and hooked them up to Model 2 driver, fixing 3D viewport positions.
. Internalized communication latches for sega_315_5195. 315-5195 mapper has same clock as CPU (segaorun.cpp, segas16b.cpp and segas18.cpp)
- Taito Custom
. Use dumped C-Chip for Bonze Adventure, Rainbow Islands, Superman and Volfied and removed simulation.
. Bonze Adventure: This most likely fixes the 1st level of Bonze Adventure, if you go into the secret hole and die in the cave, you restart in a totally black area and you can't do anything. And when you die in the 3rd level, an error message popped up and you was unable to do anything (had to restart the game) (ID 00205). This also fixed the 3rd level of Bonze Adventure, if you die, the game hangs because the restart level is wrong (ID 00377).
. Mega Blast: Correct C-Chip clock
. Operation Wolf: Measured C-Chip clock on working PCB (Taito custom C-Chip marked 'TC0030CMD, with sticker 'B20-18'. Clock input 12.00MHz on pin 20)
. Rainbow Islands: Simulation isn't yet removed because Rainbow Islands Extra still needs it (Haze is checking if he can make a temporary ROM until it is so that we can clean it up in the meantime).
. Rainbow Islands - Extra Version: Use a handcrafted C-Chip rom for Rainbow Islands Extra, pending a real dump, allows removal of simulation code and general cleanups. Also made Rainbow Islands Extra a parent, since it has it's own game code, own C-Chip and is generally considered a semi-sequel rather than a bugfix / revision of the original game. Best I can tell behavior matches the differences between original and extra that were present in the simulation at least, but obviously the real chip could be hiding more secrets.
. Superman and Volfied: Made the 68k and uPD7810 use different banked windows into the RAM, this seems to prevent the fighting I was seeing, and also Superman suggests that it might be correct, as it puts response values in a bank for the 68k but then changes the window so the 68k can't see them. Needs further testing tho (other C-Chip dumps might tell us more later). Removed debug structure.
. Volfied: Interrupt source still needs to be verified, but I've tested this to the end and it works fine with the real dump.
- TMS9927 video: Configure device using character clock rather than dot clock
- VGA video: Internalized palette
- Voodoo GFX: Added rasterizers for cartfury, roadburn, sfrushrk and warfa (video\voodoo_rast.hxx)
- artmagic.cpp: Replaced NVRAM with parallel EEPROM and improved ADPCM banking. This fixed new NVRAM will cause a blasted sound on Get Ready screen at the beginning of Cheese Chase (ID 06917).
- asuka.cpp: Fixed clock speeds & misc updates. Both Galmedes & U.N. Defense Force: Earth Joker are chip swaps for Asuka & Asuka so use the Asuka machine config. Note that both games don't use the OKI MSM5205, but it's still on the PCB.
- crospang.cpp: Fixed clock speeds based on OSC & PCB info. Note: 68000P10 is a 10MHz part, so it's not going to be overclocked to 14.318MHz. All PCBs on this platform have only a single 14.31818MHz OSC so the Oki clock is either ~1.7MHz (OSC/8) or ~.89MHz (OSC/16).
- ddragon.cpp: Replaced HD6309 CPU1 with HD6309E
- dec8.cpp: Use input_merger for Gondomania and Garyo Retsuden. Acknowledge NMI another way for The Real Ghostbusters.
- dkong.cpp: Changed orientation so that -norotate matches direct feed recordings
. Hana Jingi: Simplify bitswap for clone Hana Oriduru (Japan)
. Mahjong Tenkaigen: Separated TLCS-90 external IRQ line state from internal request register (fixes Mahjong Tenkaigen slowdowns)
- eolith.cpp, eolith16.cpp, ghosteo.cpp, limenko.cpp, vamphalf.cpp and vegaeo.cpp
. Converted QS1000 set_irq into WRITE_LINE_MEMBER
. Cleaned up VRAM handler/drawing pixel (eolith.cpp, eolith16.cpp, vegaeo.cpp)
. Modernize soundlatches (eolith.cpp, ghosteo.cpp, limenko.cpp, vamphalf.cpp, vegaeo.cpp)
. Minor cleanup. Added object finders instead runtime tag lookup. Replaced user* -> saner ROM areas (eolith.cpp, eolith16.cpp, ghosteo.cpp, limenko.cpp, vamphalf.cpp, vegaeo.cpp).
. Minor cleanup of sprite drawing (limenko.cpp)
. Added machine_config instead driver_init for Hidden Catch 3
- gcpinbal.cpp: Minor cleanup. Added object finder instead runtime tag lookup. Replaced gfx* -> saner ROM areas.
. Merged TCL (Taiwan Chess Legend) driver into Goldstar, since it's same hardware.
. Replaced macros with lambdas
- gstream.cpp: Added pre-calculated RGB Palette for X2222 drawing gfxs. Removed unneeded arguments of drawgfx_transpen_x2222. Cleanup duplicates.
- hnayayoi.cpp: Use HD6845 CRTC for video; improved screen parameters.
. Added imagetek_i4220_device. Only draw portion of tilemaps exposed by clipping rectangle (improves performance).
. Allocated sound output from real PCB (real PCB only has mono sound output)
. Boost tilemap drawing routines when VIDEO_UPDATE_SCANLINE case of screen video attributes and fixed tilemap drawing at tilemap offset X/Y !=0 case (video\imagetek_i4100.cpp)
- iteagle.cpp: Set CPU frequency to 166MHz. Seems to fixed 'Big Buck Hunter Call of the Wild' and 'Big Buck Hunter II' runs slow on certain levels despite being 100% in MAME (ID 06908).
- kaneko16.cpp: Cleanup OKI banking and soundlatch handler
- mcatadv.cpp: Cleanup duplicates. Allocate sound output (Magical Cat Adventure PCB has mono sound output only). Updated notes (PCB hasn't any delta-t ROM).
. Boost tilemap drawing routines when VIDEO_UPDATE_SCANLINE case of screen video attributes and fixed tilemap drawing at tilemap offset X/Y !=0 case (video\imagetek_i4100.cpp). Added notes. Reorder romsets in a sane order.
. Added object finder instead runtime tag lookup
. Manual for Daitoride says button 2 is used for change direction of mount of tiles
. Enabled Puzzli raster irq
. Fixed _3kokushi config name
. Allocated sound outputs from real PCB for Blazing Tornado (HUM-002 PCB has stereo speaker connector, HUM-003 doesn't). Fixed sound bankswitching.
- midvunit.cpp: Cleaned up Midway V-Unit inputs and outputs. Better motion inputs and sorted main buttons. Removed runtime tagmap lookup.
. Clear up some memory issues with very recent GCC (includes\model1.h and video\model1.cpp)
. Updated simulation based on real firmware. Read partial frames correctly now. Added VSYNC packets (framesync currently disabled as this can cause MAME to freeze and we have no way to tell if the socket is still open). Added config option to sync frames over network. Better sync. Detect lost connection. Use osd_file rather than emu_file for better control (machine\m1comm.cpp).
. Added preliminary MB89374 emulation to Virtua Racing and Wing War. Removed Z80 CPU in netmerc, swa and vf. Moved knowns roms to M1COMM device.
. Standardized protection accessors for Model2/3 315-5881 device
. Added custom debugger commands to dump geometrizer disassembly and triangle list
. Work around for 'ld rN, (rN)' read on FIFO, fixes crashes for desert, overrev, pltkids, sgt24h, skytargt and zerogun.
. Bump renderer max polygons to 0x10000 (includes\model2.h)
. Added Rn = Rn FDEP Rx BY : opcode used by Last Bronx for a vital geometrizer function (cpu\sharc\sharcops.hxx).
. Added geo/raster state saving. Added save state registration.
. Added xhout and xvout register callbacks (video\segaic24.cpp), and hooked them up to Model 2 driver, fixing 3D viewport positions.
. Stateized float_to_zval, fixed z code (video\model2.cpp). Cleanup culling.
. In geo mode 2 & 3 normals are skipped for every triangle/quad. Fixes graphical glitches in Virtual-On, Gunblade NY, Dead or Alive, Sonic the Fighters, Rail Chase 2, Virtua Fighter 2 and Desert Tank.
. Added fmul abs multi opcode (used by Gunblade NY) (sharc\compute.hxx, sharc.h and sharcops.hxx)
. Fixed untextured path colors (Motor Raid, Daytona USA) (video\model2rd.hxx)
. Make TGPx4 to be debuggable even in non-DRC mode (cpu\mb86235\mb86235.cpp). Wrote a preliminary TGPx4 interpreter core.
. generate_reg_read and generate_ea fixes. Added ALU OR / XOR (cpu\mb86235\mb86235drc.cpp). Misc fixing (floating point conversions, broken REP opcode and support for rascot2 MOV2 int->ext opcode).
. SCSP / Interrupt ports cleanups
. Added direct framebuffer drawing used by Last Bronx title screen.
. Fixed Model 2/2A garbage 3D when exiting test mode. clip_plane belongs to clip_polygon function.
. Apply focus in a specific function. Overhauled inputs. Added dipswitch bank (Zero Gunner Debug mode).
. Added inputs to bel, gunblade, indy500, overrev, segawski, sgt24h, skisuprg, skytargt, stcc, topskatr, von and waverunr. Handle brake input in srallyc. Cleanup vcop inputs. Fixed rchase2 inputs.
. Fixed obc == 0 case for Cyber Troopers Virtual-On and Gunblade NY
. Workaround hardlocks in Fighting Viper and Sonic Championship
. Avoid Daytona USA with master controller to crash
. Fixed black screen in Zero Gunner (Export, Model 2A)
. Fixed Motor Raid and Virtua Fighter 2 (Games now playable)
. Attempt to fixing Sky Target gameplay speed
. Fixed Zero Gunner background priorities
. M2COMM: Updated simulation. Read partial frames correctly now. Added VSYNC packets (framesync currently disabled as this can cause MAME to freeze and we have no way to tell if the socket is still open). Added config option to sync frames over network. Added relay mode (used by Sega Touring Car Championship) and "connection loss". Use osd_file rather than emu_file for better control. Handle connection loss in a a more elegant way (machine\m2comm.cpp).
. Indy500 - 4 Player Setup: https://www.youtube.com/watch?v=59O4wk8DyWk
. NAOMI/Dreamcast save_pointer needs units, not bytes. No longer crashes when saving state.
. Updated ROM board and BIOS documentation
- naomi.cpp and segasp.cpp: Enabled Dynamic Re-Compiling by default
- nbmj8688.cpp: Supported d2 in text mode (video\hd61830.cpp)
- nss.c, sfcbox.c and snesb.c: Allow use of separate address spaces for program, data, opcodes and/or vectors (cpu\g65816\g65816.cpp)
. Fixed interface between MCU and LCD controller for Fiddle Stix and Round and Round
. Added 7-segment digits to Fiddle Stix and Round and Round
. Cleanup driver. Handle serial outputs in a more hardware-consistent way.
- rohga.cpp: Fixed gfxdecode instead garbage (ID 06895)
- seattle.cpp: Cleaned up outputs
. ACCESSING_BITS cleanup
. S32COMM: updated simulation. Handle connection loss. Use osd_file rather than emu_file for better control (machine\s32comm.cpp).
- segaybd.cpp: Soundlatch modernization
- taito_f3.cpp: Fixed exception after logo is displayed in Riding Fight and Ring Rage (ID 06894)
. Updated driver. Fixed background color. Cleanup bankswitching. Reduced duplicates. Cliprect related mixing.
. Added object finders instead runtime tag lookup. Demoted games with MACHINE_IMPERFECT_GRAPHICS, because some graphic features (linescroll and mixing) is not perfectly emulated. Added MACHINE_NO_COCKTAIL tags, because tilemap scroll is wrong when flipscreen case. Fixed sprite drawing and transparent drawing. Minor cleanup and added notes.
. More const, keep scope tight and use lambdas in preference to macros.
- vigilant.cpp: Fixed no sound (ID 06921)
- wecleman.cpp: Added stereo output for both WEC Le Mans 24 and Hot Chase. Because real hardware has stereo sound output with seperated sound board. Added enum for m_gameid and m_sound_hw_type. Minor cleanup. Replaced gfx* -> saner ROM areas. Added notes.
- A-Plan: Make game capable of reaching at least a couple of test screens, like Cherry Master '99.
- Bombjack Twin: Moved clone 'Atom (bootleg of Bombjack Twin)' from NMK16 driver to Power Balls driver. Gives sprites, though it needs some more work.
- Chequered Flag: Minor cleanup
- Connect 4: Fixed digit segment
- D-Day (Jaleco): Fixed clouds priority, title screen colors and added flipscreen.
- Dream 9 Final: Added NVRAM
- Eyes: Redumped maincpu and gfx1 roms for clone Eyes (Italy) (Game now playable)
- Flash Point: nternalized communication latches for sega_315_5195; sound works now in clone (Japan, bootleg set 2)
- Gals Panic 3
. Bit of improves on bg-bg priorities. Fixed some galpani3 alpha blending and sprite-bg/bg-bg priorities. Cleanup duplicates. Added notes.
. Kaneko GRAP2: Added device_rom_interface instead runtime tag lookup. Converted address map related defines into device address map. Added internal palette configs. Implemented brightness. Added m_brightreg on save state. Fixed color (video\kaneko_grap2.cpp).
- Game King (Set Chips): Clear chips
- Gunpey: Extracted decompressed sprite data from Gunpey. Hooked these up for now while we study the compression scheme, fixing graphics. Added sprite zooming (Game now playable).
- Hole Land: Fixed priority bug on the boss level (ID 06900)
- King Derby: Use output finders instead of set_digit_value
- Kyuukoukabakugekitai: Minor cleanup. Added generic_latch_8_device for cpu comms. Added input_merger_any_high_device for fgcpu irq. Fixed tags.
- Last Bank: Added object finder instead runtime tag lookup. Added generic_latch_8_device instead internal value.
- Liberator: Separated CLK writes (machine\er2055.cpp)
- Master Boy: Minor cleanup. Moved banked ram handler into address_map_bank_device. Fixed "RAMM err.". Added notes. Replaced gfx*/user* -> saner ROM areas.
- Mouser: Soundlatch modernization
- Pig Out: Fixed rom labels and documented undumped PALs
- Shuttle Invader: Corrected maincpu clock divider and detailed README
- Space Guerrilla: Added missing PROMs (74s288.6a and 74s288.6b; the 2 PROMs are identical)
- Street Fighter III 3rd Strike: Dumped Japanese BIOS
- Tetris: Documentation updates for clones Tetris (bootleg set 2) and Tetris (bootleg set 3)
- Ultraman: Minor cleanup
- unknown Italian poker game: Added switch to disable card graphics in bookkeeping mode
- Valtric: Dumped PROM
- War: The Final Assault: Fixed scaling functions for negative values (video\rgbsse.h). Fixes graphical anomalies (Game now playable).
- Xexex: Minor cleanup. Added object finder instead runtime tag lookup. Add notes. Demoted Xexex/Orius with MACHINE_IMPERFECT_GRAPHICS, because it has alpha blending issue and MACHINE_NO_COCKTAIL flag, because tilemap scroll is wrong when cocktail mode.
- Fixed rom names in leland.cpp and pacman.cpp
- Description changes of Ataxx (rev 4), Ataxx (rev 5), Daytona USA (Turbo hack, set 1), Daytona USA (Turbo hack, set 2), Daytona USA (To The MAXX), Gongtit Jiucoi Iron Fortress (Hong Kong), Mahjong Ougon No Hai, Mahjong Ougon No Hai (bootleg), Master Boy (Spanish, PCB Rev A, hack?), Pig Out: Dine Like a Swine! (rev 1), Pig Out: Dine Like a Swine! (rev 2?), Rainbow Islands - Extra Version, Strange Science (Rev A), Science (German, Rev A), Street Fighter II: The World Warrior (Thunder Edition, bootleg, set 1) and Super Cobra (bootleg, set 1)
- Renamed (ataxx) to (ataxxa), (ataxxa) to (ataxx), (gkigtez) to (gkigtezms), (ironfortj) to (ironfortc), (mastboy) to (mastboya), (ougonpai) to (ougonhai), (ougonpaib) to (ougonhaib), (realbrod) to (realbroda), (strngsci) to (strngscia) and (strngscg) to (strngscig)
. VIDEO RENDERING SYSTEM
. Fixed scaling functions for negative values (video\rgbsse.h). Fixes graphical anomalies in War: The Final Assault.
. Address performance concerns with previous change to screen.cpp/h
. Better handling for arbitrary numbers of screens
. MEMORY SYSTEM
. Renamed some memory stuff (emu\addrmap.cpp)
. Address maps macros removal (AM_RANGE() -> map(); AM_DEVICE16() -> .m(m_XXX, FUNC(); AM_DEVICE32() -> .m(m_XXX, FUNC()); AM_DEVICE8() -> .m("XX", FUNC()); AM_DEVREAD -> .r(); AM_DEVREADWRITE() -> .rw(); AM_DEVWRITE() -> .w(); AM_NOP -> .noprw(); AM_RAM -> .ram(); AM_RAM_READ() -> .ram().r(); AM_RAM_WRITE() -> .ram().w(); AM_RAMBANK() -> .bankrw(); AM_READ() -> .r(); AM_READ_PORT() -> .portr(); AM_READ16() -> .r(this, FUNC()); AM_READ8() -> .r(this, FUNC()); AM_READNOP -> .nopr(); AM_READONLY -> .readonly(); AM_REGION() -> .region(); AM_ROM -> .rom(); AM_ROMBANK() -> .bankr(); AM_SHARE() -> .share(); AM_WRITE() -> .w(this, FUNC()); AM_WRITE_PORT() -> .portw(); AM_WRITE32() -> .w(this, FUNC()); AM_WRITE8() -> .w(this, FUNC()); AM_WRITENOP -> .nopw(); AM_WRITEONLY -> .writeonly() )
. Fixed issue causing drivers using netlists to fail on the Emscripten target
. Use print_error to make testing easier (plugins\cheat\init.lua) (ID 06869). Search any address space (plugins\cheatfind\init.lua).
. Changed Port name to address objections, also as suggested converted the controls.ini in repo https://github.com/cracyc/portname. Removed the import but will still load parent if available + Describe revised format (plugins\portname\init.lua).
. Updated hiscore.dat (plugins\hiscore\hiscore.dat). Added handhelds that have high scores.
. Give up if the database can't be created (plugins\data\database.lua)
. Restricted ROM labels to a filesystem- and shell-safe subset of printable ASCII. Account for same label different hash (sldh) comments that arose with rom label changes.
. Fixed count_leading_zeroes(0) C fallback (osd\eminline.h). Test all 32 results from count_leading_zeros() & count_leading_ones() (emu\validity.cpp).
. Include option and file names in fatal error message for failure to load image (emu\image.cpp)
. Get rid of dioutput - it's only used in one place, and it upset GCC on Linux debug builds for some reason (emu\dioutput.cpp -> video\dm9368.cpp).
. Implemented Sega PCM interface registers in VGM player. Use QSound DSP emulation in VGM player. Disable POKEY and QSound devices if not required.
. Multi-Language: Updated Brazilian Portuguese, Chinese (simplified/traditional), Dutch, French and Spanish translations
. De-staticify initializations for src\devices\video, devices\sound and others
. Removed poor-performing parts of the output_manager (emu\output.cpp): Turn deprecated declaration warnings on by default and make them non-fatal. Make output_finder iterable in algorithms and range-based for loops. Replaced a lot of set_something with output_finder. Fixed end()/cend() on output_finder (acefruit.cpp, bfm_sc4.cpp, by17.cpp, by35.cpp, dlair.cpp, ecoinf2.cpp, ecoinf3.cpp, gts1.cpp, jp.cpp, jpmsys5.cpp, maxaflex.cpp, maygay1b.cpp, mpu3.cpp, mpu4.cpp, mwsub.cpp, peyper.cpp, segaufo.cpp, sigmab52.cpp, stactics.cpp, twinkle.cpp, wacky_gator.cpp, machine\bfm_bd1.cpp and bfm_bda.cpp).
. Forward some objects; line continuations are not scope (machine\6532riot.h, pla.h and r10788.h).
. Deprecated and removed all uses of running_machine::first_screen - there's been plenty of warning (emu\machine.h)
. Use device_video_interface and configured screens instead of first_screen (drivers\gambl186.cpp, gamtor.cpp, photoply.cpp, pntnpuzl.cpp, machine\i82371sb.cpp, isa\svga_cirrus.cpp, svga_s3.cpp, svga_trident.cpp, svga_tseng.cpp, vga.cpp and vga_ati.cpp)
. Added device_video_interface and eliminated first_screen (video\psx.cpp)
. Use screen_device_iterator rather than first_screen (mame\luaengine.cpp)
. Removed first_screen usage from bartop52.cpp, cham24.cpp, famibox.cpp, ghosteo.cpp, laserbat.cpp, maxaflex.cpp, multigam.cpp, playch10.cpp, popper.cpp, punchout.cpp, rungun.cpp, stv.cpp, vsnes.cpp, machine\archimds.cpp, audio\dkong.cpp, machine\namco51.cpp, machine\s3c24xx.cpp/hxx, machine\smpc.cpp, video\avgdvg.cpp, video\huc6270.cpp, video\stvvdp2.cpp, sound\nes_apu.cpp, render\aviwrite.cpp and render\d3d.
. Removed all uses of first_screen from core files (emu\crsshair.cpp, emu\debug\debugcpu.cpp, emu\debug\dvstate.cpp, emu\inpttype.h, emu\ioport.h, emu\mconfig.cpp, emu\screen.cpp, emu\video.cpp, ui\cheatopt.cpp, ui\ui.cpp, ui\viewgfx.cpp and osd\modules\input\input_windows.cpp).
. Eliminated vestigial member that was behind machine().first_screen() (emu\machine.cpp)
. Get rid of the last set_indexed_value in drivers/devices, this ends up a bit ugly to maintain backwards compatibility with layouts/web UI (emu\output.h)
. Fixed issue causing drivers using netlists to fail on the Emscripten target (netlist\plib\pdynlib.cpp)
. Disable multithreading on the Emscripten target as it is not currently supported. Fixes e.g. drivers using discrete audio components (scripts\src\main.lua and osd\osdsync.cpp).
. Removed stray address maps on spaces that don't exist (drivers\twincobr.cpp and (MESS) drivers). Cleanup address map remnants (de_2.cpp, s11c.cpp, segaybd.cpp and techno.cpp).
. Added missing override (sound\coreaudio_sound.cpp and sound\pa_sound.cpp)
. Apply same flags when building with SOURCES= as when building normally (scripts\build\makedep.py). This fixes the issue which prompted "model1: clear up some memory issues with very recent gcc (nw)" (which only occurred in a SOURCES= build).
. Use more constexpr and literal classes in UML to give compiler more optimisation opportunities (cpu\drcfe.cpp and uml.cpp)
. Reduced scope of stuff with different definitions across CPUs (cpu\e132xs\e132xs.h and sh\sh.h)
. Prettier way of adding DRC framework on-demand (scripts\src\cpu.lua)
. Reduced use of naked pointers, using namespace and preprocessor macros in recompiling CPU cores.
. Don't sleepcode (dasm_override in emu\didisasm.h) - for some reason this only upset GCC, not Clang.
. Fixed extent of debug view of address-shifted memory spaces (debug\dvmemory.cpp)
. Fixed output of wplist debug command and find command for address-shifted spaces (debug\debugcmd.cpp)
. Fixed watchpoint view for address-shifted spaces (debug\dvwpoints.cpp)
. Fixed masking of offset expressions in debug view of address-shifted spaces (debug\dvmemory.cpp)
"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."