- New games: Acchi Muite Hoi, Galaxy Games StarPak 4 (prototype), Pirate Ship (ver UAA) and Tekken Card World
- New Working games: Popper and Kokoroji 2
- New Non-Working games: Gaelco Championship Tuning Race, GI-Classic EX (satellite terminal), GI-Classic EX (server), MegaTouch XL (Italy Version R1), MegaTouch XL 6000 (Version r07), MegaTouch XL Gold (Version r01), MegaTouch XL Super 5000 (Version R5I), Otomedius (ver GGG:J:A:A:2008041801), Police Trainer 2, Ring Riders (Software version v2.2), Shark [TTL], Super Derby II (Satellite board), Super Star (Recreativos Franco), "Unknown Poker Game", "Unknown Sega gambling game (M1 Satellite board)" and "Unknown 'VIP 2000' game"
- New clones: Bionic Commandos (bootleg, set 2), Gals Panic DX (Asia), Knights of Valour / Sangoku Senki (ver. 100, Hong Kong), Mach Breakers (World, MB2), Martial Masters (ver. 103, 102, 101CN), Megatack (set 2), MegaTouch XL Gold (Version r00), MegaTouch XL 6000 (Version r02), MegaTouch XL Super 5000 (Version R5B), MegaTouch XL Super 5000 (Version R5E), Prehistoric Isle in 1930 (World, bootleg), Rastan (World, Earlier code base), The Real Ghostbusters (US 3 Players, revision ?), Sonic Blast Man (US), Street Fighter II': Champion Edition (UPL bootleg), Tokyo Cop (US, dedicated version), Tokyo Cop (US, kit version) and Up Maguila (bootleg of Donkey Kong Jr.)
- New TourVision games (Softwarelist: hash\pce_tourvision.xml): Dragon Egg! (Masaya 1991)
- New PinMAME games: Galaxy Play, Rocky (French speech) and U.S.A. Football (R01u)
- New drivers: acchi.cpp, clpoker.cpp, giclassic.cpp, mtouchxl.cpp, otomedius.cpp, piratesh.cpp, supstarf.cpp and usbilliards.cpp
- New devices: 3c505, ad7523, aga, aga_pc200, aha1542, ap2000, at_keybc, at_mb, atmel_49f4096, centronics, centronics_printer, clgd542x, comx_pl80, covox, covox_stereo, crtc_ega, cxd1095, dectalk_isa, dm_clgd5430, dms3d2kp, dp8390d, dp8473, ds1205, e05a03, e05a30, ec1481, ec1840_0002, ega, el2_3c503, et4000, ex800, fdc344, fdcmag, finalchs, gf1, gfxultra, gfxultrp, hdc, hdc_ec1841, i486dx4, i8272a, ibm_mfc, ibm_vga, input_buffer, isa_adlib, isa_com, isa_com_at, isa_gblaster, isa_gus, isa_hercules, isa_ibm_mda, isa_ibm_pgc, isa_ide, isa_lpt, isa_mpu401, isa_pds, isa8_fdc_at, isa8_fdc_ps2, isa8_fdc_smc, isa8_fdc_superio, isa8_fdc_xt, k053250ps, lx800, lx810l, mach32, mach32_8514a, mach64, mach64_8514a, mach64isa, mcd_isa, mcpx_ac97_modem, mcpx_apu, mcpx_av97_audio, mcpx_eth, mcpx_ide, mcpx_lpc, mcpx_ohci, mcpx_smbus, mcs3201, mos6581, mos8580, mpu401, msm6253, n82077aa, ne1000, ne2000, nv2a_agp, nv2a_gpu, nv2a_host, nv2a_ram, number_9_rev, output_latch, p72, pc_fdc_at, pc_fdc_superio, pc_fdc_xt, pc_lpt, pc8477a, rtl8019a, s3_764, s3virge, s3virgedx, s97269pb, s97271p, sb16, sega32_pcb_4player, sega32_pcb_analog, sega32_pcb_cd, sega32_pcb_multi_6player, sega32_pcb_multi_analog, sega32_pcb_trackball, segakbd_pcb_aburner2, side116, smc37c78, ssi2001, st11m, stereo_fx, tc8566af, tgui9680, tmp90ph44, upd72065, upd7220, upd765a, upd765b, usb_ohci, virge_vga, virgedx_r1, virgedx_vga, vs9209, wd1002a_wx1, wd11c00_17, wd2010, wd37c65c, wdxt_gen, xt_hdc and xtide
- Dynamic Re-Compiling: Added case for parameter PTYPE_CODE_LABEL in UML instruction disassembly (cpu\uml.cpp)
- Hyperstone CPUs: Moved memory macros out of header file to help prevent naming conflicts (cpu\e132xs\e132xs.cpp)
- I386 CPU
. Ignore float exceptions in debugger
. Added a CPUID supporting I486DX4
- I386 CPU and M68000 CPU: Workaround for multiple inclusion until SoftFloat is updated to version 3
- I8051 / MCS-51 CPU: Fixed the indirect memory access opcodes dec,inc and xch_a. Indirect access can't touch the SFR and must point to the extra memory above 0x80. This probably fix many machines using this MCU (cpu\mcs51\mcs51ops.hxx).
- I8086 CPU
. Added decrypted opcodes space support
. Fixed jnl flags test
- TMS32025 CPU: Fixed status register and banking
- Sound Blaster 16: Added save DSP state. Fixed incessant popping before first use.
- YMF262 sound: Added save state support to YMF262 and slot pointer checks.
- 8251 USART: Improved logging; restrict external command_w and mode_w access to V53 variant.
- Crystal: Correction and addition (emu\drivers\xtal.h)
- CD-ROM: Translate from 2336 to 2048 (Return 2048 bytes of Mode 1 data from a Mode 2 form or XA sector)
- Discrete Netlist
. Turn psring iterator into a real forward iterator that works with standard algorithms. There are a few changes to achieve this: * Renamed to const_iterator since it's immutable. * Typedef iterator to const_iterator for now as there's no mutable iterator. * Added default constrcutor and operator-> required by concept, const-qualify operators. * Removed operator+ and operator+= since it's not a random-access iterator (use std::next and std::advance instead). * Return reference/pointer to a proxy rather than a code_t value from opertator*/operator->. The final change is required to meet the requirement that operator* for two equivalent forward iterators return an equivalent reference. The pstring doesn't actually contain a sequence of code_t, so there's no way to return a reference to code_t directly. Instead, a reference to a proxy object aliased on the string storage is returned. The proxy is implicitly convertible to code_t. The most noticeable side effect is that auto c = *s.begin() or for (auto c : s) won't work. You need to do for (auto &c : s) or for (code_t c : s) instead.
. Changed pstring to use std::string as storage container. This removes all allocation code from pstring. const_iterator is consequently now based on pstring::const_iterator. Removed pstring_buffer. This was class wasn't a good idea. Vas was right: This change did not impact runtime performance. Startup performance (string intensive) increased. Use char32_t were appropriate. Fixed pedantic Clang warnings.
. pstring, pdynlib, pfmtlog refactoring: pstring: Added support for UTF16LE to pstring. Renamed size() to mem_t_size(). Renmaed len() to length(). Added size() == length(). Added empty(). Added simple compare(). pfmtlog: Simplified pfmtlog, added more C++. pdynlib: Added a dynproc type to dynlib to wrap dynamic library calls. Various: Fixed two coverty scan issue. Various Clang warnings fixed.
. Netlist code refactoring: More use of C++ features. Some CRTP in pfmtlog. Demangled code for truthtables. Use more constexpr. Rewrote main loop. Use default constructors and assignment operators were applicable. Optimized 7448 and 9316. All of this has decreased startup time by approx. 25% to 30%. Complex netlists like pong or kidniki are parsed, analyzed and constructed in around 15 ms. Run performance has increased by about 5%. All in all not to bad. A game like pong uses a clock of 7 MHz (after division by 2). Thats 14 MHz clock invocations. Running at over 200%, 28MHz. On a 3.9 GHz Machine about 140 cycles/clock change.
. Refactored 74715 to one device layout. Removed subdevice.
. Parametrized device activation in truthtables and minor optimization (devices\nlid_truthtable.h)
- ISA: Provide proper unitmask for address spaces of any data width (bus\isa\isa.h)
- Konami Custom: Fixed palette-related regressions in Konami GX games (video\k053246_k053247_k055673.cpp)
- Midway Custom: Block register updates until unlocked (machine\midwayic.cpp)
- Sega Custom
. segajw.cpp: Use 315-5296 for I/O
. segam1.cpp: Added 315-5296 and some placeholder RAM areas
. segas24.cpp and segaybd.cpp: Read inputs through 315-5296
. Sega Rally Championship: Hook up 315-5296 I/O on drive board (does nothing yet)
- Sony Custom: Added CXD1095 CMOS I/O Port Expander
- V9938 video: New device interface for palettes. Created device_palette_interface, which takes over most functionality from palette_device except for the initialization/decoding routines and RAM interface. Updated screen_device and device_gfx_interface to use a device_palette_interface object rather than a palette_device. This necessitates slight alterations to a few drivers and devices. Modified v9938 and v9958 to use the new device_palette_interface rather than a subdevice. This entails breaking a cyclic dependency between device_video_interface and screen_device for this case. A little cleanup V9938.
- Voodoo GFX: Changed multi base address selection to fix Funky Ball textures (video\voodoo.cpp). Reverted texture base address calculation to fix seattle driver.
- VS9209 I/O: Added VS9209 I/O device for aerofgt.cpp, gstriker.cpp, suprslam.cpp and taotaido.cpp
- alpha68k.cpp: Added missing save_item's because otherwise the sound was missing with autosave enabled (ID 06532)
- artmagic.cpp, blstroid.cpp, cave.cpp, galastrm.cpp, galaxian.cpp, gpworld.cpp, groundfx.cpp, gunpey.cpp, hyprduel.cpp, midtunit.cpp, overdriv.cpp, segas32.cpp, taito_f3.cpp, toaplan2.cpp, triplhnt.cpp, tubep.cpp and victory.cpp: Removed timer_set.
- astinvad.cpp, boxer.cpp and destroyr.cpp: More timer_alloc changes
- astrocde.cpp, asuka.cpp, dcheese.cpp, flyball.cpp, gameplan.cpp, gaplus.cpp, gcpinbal.cpp, gunbustr.cpp, hyhoo.cpp, kinst.cpp, midvunit.cpp, midzeus.cpp, nightgal.cpp, opwolf.cpp, othunder.cpp, pastelg.cpp, policetr.cpp, rabbit.cpp, rollerg.cpp, segaorun.cpp, sprint8.cpp, stfight.cpp, tehkanwc.cpp, thunderx.cpp and trucocl.cpp: Removed anonymous timers.
- atlantis.cpp and midzeus.cpp
. Fixed waveram0 write. Changed conversion to screen coordinates. Added initial blending (video\zeus2.cpp).
. Added texture lookup for RGB555 direct color type (video\zeus2.cpp)
. Added UV scaling (video\zeus2.cpp)
. Increase input FIFO empty interrupt time and start to use address for quad selection (video\zeus2.cpp)
. Working on depth buffering. Don't include texture information on normal builds to reduce exe size (video\zeus2.h).
. Handle buffer wrapping during frame clear. Select quad size based on microcode source and add code for trimesh rendering (video\zeus2.cpp).
. Fixed fast fill routine (video\zeus2.cpp)
. Added trackball and keyboard to 'The Grid'. Driver reorg and cleanup.
. Updated thegrid and mwskins dips. Block register updates until unlocked (machine\midwayic.cpp).
. Let's pretend there is a drive board connected, so OutRun 2 can run with USB enabled and no patches.
. Make 'Chihiro Firmware Update For Compact Flash Box (4.01)' start too (video\xbox_nv2a.cpp)
. Minor driver update. USB is always enabled now and removed unused parts.
. Fixed jamdis debug command
. First step in removing the legacy PCI system in favor of the new one (machine\xbox.cpp)
- chihiro.cpp, naomi.cpp and triforce.cpp
. Converted avalon20, cleoftp, ghostsqu, gundamos, hotd3, initdv3jb, lupinsho, mj2, mj3d, monkeyba, outr2st, radirgyo, scg06nt, tfupdate, wangmid2 and wangmid2j bad CHD v4 to good v5, track1 and track2 length was restored based on known now data patterns.
. Added TMP90PH44 device type for Sega 837-13551 I/O Board
. Removed identical second halves of overdumped MCU PROMs (machine\jvs13551.cpp)
- coolpool.cpp: Fixed TMS32026 status register and banking (cpu\tms32025\tms32025.cpp). This fixed 9-Ball Shootout and Cool Pool can't coin up (ID 06516).
- ddealer.cpp: Fixed 'Gun Card' logic. Minor port fix.
- decocass.cpp: Fixed missile colors for Astro Fantasia and Highway Chase
- galgames.cpp and tmaster.cpp
. Improved blit coordinates (video\cesblit.cpp), fixes some missing graphics in e.g. Galaxy Games StarPak 4.
. Fixed OKI6295 CPU1 clock speed in galgames.cpp
- hng64.cpp: Moved TLCS-870 macros into source file for now to avoid potential naming conflicts
- ksys573.cpp: Fixed Guitar Freaks 6th Mix from booting up due to an incorrect flash card memory size. 32MB works for Guitar Freaks 5th Mix as well.
- lindbergh.cpp: Added placeholder for OHCI device (machine\pci-usb.cpp)
- megaplay.cpp: Use CXD1095 device for BIOS I/O
- megatech.cpp: Rewrote CXD1095 as a device
- model1/2/3.cpp: Converted Sega Model 1 Sound Board and Z80-based Digital Sound Board to use proper UART-based serial interfaces. Fixed Sega sound data serial rate.
. Rail Chase 2: Added I/O CPU and expander. There seems to have been an unrelated regression since 0.181 in Rail Chase 2, which now only displays a black screen. Load user1 ROMs closer together to avert read from undefined data at 0x2600000 that drives CPU off rails in debug build. This might not be the correct loading method, but it's at least similar to vf2 and bel (which, like rchase2, have 2MB rather than 4MB ROMs). It's a non-working driver in any case.
. Sega Rally Championship: Hook up 315-5296 I/O on drive board (does nothing yet). Added OKI MSM6253 device.
- namcofl.cpp: Killed anonymous timers, moved to configured banking and added save state support. Also moved some remaining functions inside the class.
. Corrected coin inputs and added in Coin3 & Coin4 as needed in outfxies and 'nbsports' games
. Corrected coin inputs, when set to individual coins slots they were reversed.
- naomi.cpp: Redumped clone 'Initial D Arcade Stage Ver. 2 (Export) (GDS-0027)'
- neodriv.hxx: Fixed out of bounds issues in NeoGeo memory access. The NeoGeo driver exposes a number of different memory regions as vectors. Accessing the pointers was done through a '&vector' pattern. This caused problems when the region was size zero; I changed the code to return null pointers in these scenarios. This was reported by Robbbert in response to recent regressions (the command line was 'mame aes bjourney'), but it seems to be present in MAME 0.184.
- nss.cpp, sfcbox.cpp and snesb.cpp: Removed a few legacy type macros and eliminated uint type properly (cpu\g65816\g65816cm.h)
. Documentation updates based on printed IGT materials
. Patriot Poker has multiple Bonus levels
- sangho.cpp: Fixed clocks based on actual XTAL. Picture of PCB clearly shows a 21.4772MHz, PCB has a Z80B so clock is 3.58 based on XTAL like the YM2413.
. Input modernization: Use I8255 or MSM6253 devices for most non-JAMMA inputs. Separate service and test inputs in Multi-32 and twin-unit sets.
. Four coins are recognized in Air Rescue, not just two. Use MB8421 device for V25 communications in Golden Axe 2. Assign keys in OutRunners to some 2P inputs.
. Corrected Kokoroji 2 inputs. Added SONY CXD1095 CMOS I/O Port Expander. Promoted Kokoroji 2 to working. Find switch to disable CD & printer; game presumably works now, though rather imperfectly. Game name changed to agree with title screen. Added a whole bunch of lamps.
. Use Sega 315-5296 device for primary I/O. Restored Coin 2 inputs to f1lap, radm, radr and slipstrm.
. Identified onboard service inputs and restore them to practically all games
. Disabled some (probably strictly unnecessary) address mirroring due to memory init thrashing when combined with DEVREADWRITE8(0x00ff)
. Removed device clocks for 315-5296 (not used by the emulation) where not verified
- segaxbd.cpp: Rewrote CXD1095 as a device. Watchdog type is MB3773.
- segaybd.cpp: Added OKI MSM6253 device. Watchdog type is MB3773. Too many watchdog resets; schematics may be wrong. Correct I/O clock; misc. notes.
- seibuspi.c and zn.c: When built with MSVC, clear() resets m_buffer size to 0 and m_buffer throws an exception (machine\7200fifo.cpp).
- stv.cpp: Workaround for finlarch/sasissu/magzun ODD bit regression (video\stvvdp2.cpp)
- tatsumi.cpp: Read inputs through CXD1095 device (cyclwarr and bigfight)
- vicdual.cpp: Added 97269-P-B and 97271-P daughterboards for N-Sub. Fixed missing explosion sound.
. Input cleanups. Identified dipswitch position. Inverted flip dip. Red pen these placeholder dumps.
. Fixed 'ParaParaParadise 2nd Mix' dipswitch error
. Tsurugi "Foot Pedal" input
. Bypass serial check for Police 911
- vp101.cpp: Improved support for reduced-cost VP050 version
- BeatHead: Removed speedup hack
- Bingo Circus: Added 8x UARTs
- Blood Bros., Toki and others: Added dump of bipolar PROM. Documented undumped PROMs for cupsoc, dbldynj, dynduke, raiden, skysmash and totmejan.
- Boxer (prototype): Added save state support
- Chameleon 24: Don't crash on soft reset
- China Gate: Explicitly specify 8-way joysticks for consistency
- Disco Boy: Kill trampoline, removed unneeded prefixes and use bankdev for the first ram bank.
- E Jong High School: Correct game name; document adapter layout.
- Funky Ball: hanged multi base address selection to fix Funky Ball textures (video\voodoo.cpp). Changed MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH from 64 -> 32
- Hot Rod: Read pedals through MSM6253
- Janken Man Kattara Ageru: Added DAC type
- Jumping Pop: Fixed 'BG Modesty' dipswitch in Jumping Pop. The nude/bikini pics are displayed after a level when set; more modesty means more clothes and vice versa.
- Knights of Valour 3 HD: Redumped game
- Mahjong CLUB 90's: Removed DSW B from the driver as it does not exist on the real PCB (ID 06526)
- Mahjong Sisters: Substitute timer_set with timer_alloc(timer) and timer->adjust()
- Midnight Landing: TMS32025 memory map fix
- New York! New York!: Documented that Taito's T.T. New York New York ROMs match the Sigma set
- PinMAME: Adjust Meg-Aaton clocks to conform with schematics
- Popper: Fixed memory map and finish gfx rendering. Game is fully working again.
- Sprint 4 and Ultra Tank: Killed anonymous timers, removed unneeded prefixes and added save state support.
- Sprint 8: Added save state support
- Volfied: Removed prefixes and used timer_alloc instead of timer_set
- Wolf Pack: Added save state support, removed unneeded prefixes and moved from timer_set to timer_alloc.
- VLC Nevada: Make it to show something
- Input port
. albazc.cpp: Use standard inputs consistent with other hanafuda games. Hanafuda games usually have a mahjong panel for input. Removed hard coded IPT_SERVICE assignments. Assign "Data Clear" to IPT_MEMORY_RESET. Changed "Medal In" & "Pay Out" to standard gamble service buttons (Previously standard service buttons). Changed Lockout "Key" to PORT_TOGGLE type. Payout operation has been clarified and noted at start of driver. Correct "Payout" button to use "IPT_GAMBLE_PAYOUT". Added Hookup hopper to to do list. Added hopper activity addresses to notes. Set IPT_SERVICE & Double up buttons as standard assignments. Set "Ext In 1" & "Ext In 2" as IPT_OTHER.
. aleck64.cpp: Correct Service/Test Button assignments. "Service Mode" which is assigned to IPT_SERVICE is not located in aleck64.cpp - No changes. "Service Button" is assigned to IPT_SERVICE1 (Hard coded keycode removed & default used). "Test Button" is assigned to IPT_SERVICE2 (Test Button is not displayed in Machine input).
. amaticmg.cpp: Removed hard coded key assignment and use default mapping
. ampoker2.cpp: Make various key assignments consistant. Cleanup different assignments for the same buttons across supported games while still keeping true to the Game Notes / Operation instructions. 1. Make "Operator Key" consistant (Use IPT_GAMBLE_SERVICE), 2. Make "Supervisor Key" consistant (Use IPT_SERVICE2), 3. Make "Hopper 1" consistant (Use IPT_OTHER, KEYCODE_Y), 4. Make "Hopper Out" consistant (Use IPT_OTHER, KEYCODE_G), 5. Make "Hopper Low" consistant (Use IPT_OTHER, KEYCODE_H), 6. Make "Return Line" consistant (Use IPT_OTHER, KEYCODE_J), 7. Make "Coin Refill" consistant (Use IPT_OTHER, KEYCODE_R), 8. Make "Payout" consistant (Use IPT_GAMBLE_PAYOUT), 9. Make "TILT" consistant (Use IPT_TILT) and 10. Make "Double" consistant (Use IPT_GAMBLE_D_UP).
. realbrk.cpp: Removed service button hard coded keycode assignment. Removed hard coded key assignment and use default mapping.
- Dipswitch fixes in ddealer.cpp, nbmj8891.cpp, viper.cpp
- Fixed rom names in namconb1.cpp, shangha3.cpp and segas32.cpp
- Description changes of Bionic Commandos (bootleg, set 1), Boxing Mania: Ashita no Joe (ver JAA), Knights of Valour 3 HD (M-105CN 13-07-04 18:54:01), GTI Club: Corso Italiano (ver JAB), GTI Club: Corso Italiano (ver EAA), Mach Breakers - Numan Athletics 2 (Japan, MB1), Megatack (set 1), Merit Joker Poker (9131-09), Mushiking The King Of Beetles - Mushiking II / III / III+ (Ver. 2.001) (World), Mushiking The King Of Beetles - Mushiking II / III / III+ (Ver. 1.001) (World), Soreike Kokology Vol. 2 - Kokoro no Tanteikyoku and U.S.A. Football (R06u)
- Renamed (machbrkr) to (machbrkrj), (sbm) to (sbmj) and (tokyocop) to (tokyocopi)
. 3rdparty: BGFX, BGFX shaders, GENie and BX. Assume LLVM libc++ if __llvm__ is defined but __GLIBC__ is undefined (bx\platform.h). Fixed GENie linking order.
. VIDEO RENDERING SYSTEM
. Guard against assert failure on partial updates starting from incomplete first line (emu\screen.cpp)
. Moved "optional" basemem and extmem arrays out of tilemap_t. This is intended as a first step towards divorcing tilemap_t and tilemap_device.
. Reverted entries(), indirect_entries(), shadows_enabled() and hilights_enabled() to return the configuration parameters instead of accessing the live state. The thought behind the implementation change was that palette devices could potentially determine the number of entries from the sizes of devfind objects. The regressions caused by this have been worked around, but it was probably a bad idea in the first place. Zero-entry palettes are no longer valid. The code that tried to support them was basically left over from when every running machine had a single global palette. Reverted entries(), indirect_entries(), shadows_enabled() and hilights_enabled() to return the configuration parameters instead of accessing the live state. The thought behind the implementation change was that palette devices could potentially determine the number of entries from the sizes of devfind objects. The regressions caused by this have been worked around, but it was probably a bad idea in the first place. Zero-entry palettes are no longer valid. The code that tried to support them was basically left over from when every running machine had a single global palette. Disallow a negative number of palette entries by changing some types (emu\dipalette.cpp)
. BGFX: Do variable substitution in bgfx_path (render\bgfx\chainmanager.cpp, effectmanager.cpp and shadermanager.cpp)
. Renamed the write-only -printer image instance type to -printout. The former option name conflicts with RS232 printer ports in several drivers (emu\diimage.cpp).
. New device interface for palettes. Created device_palette_interface, which takes over most functionality from palette_device except for the initialization/decoding routines and RAM interface. Updated screen_device and device_gfx_interface to use a device_palette_interface object rather than a palette_device. This necessitates slight alterations to a few drivers and devices. Modified v9938 and v9958 to use the new device_palette_interface rather than a subdevice. This entails breaking a cyclic dependency between device_video_interface and screen_device for this case. Enforce dependencies in various Konami, Sega & Seta GFX devices. Disable palette uniqueness check in divideo.
. Made a number of device_image_interface members private. This also fixes a number of get_default_card_software() implementations that were accessing m_file incorrectly. Removed duplicate prototype.
. Fixed an issue where reset_on_load images would not properly persist across emulation sessions (emu\image.cpp)
. Workaround for issue where the cannonical instance_name for a device was lost (emu\image.cpp). This is a hack; details are in the source code. I felt that it was too late in the 0.185 release cycle to do anything intrusive. I intend to fix this "for real" when image/slot option morphing is encapsulated within emu_options.
. Input map fixes: Fixed a longstanding bug that prevented binding several ORed buttons to any input belonging to a non-root device. Fixed a visual glitch when assigning inputs to analog sequences. Fixed buttons cannot be mapped to more than one key using 'or' logic using internal UI in all drivers with slot-based controllers (ID 06519).
. Fixed selecting a new ROM file through the internal UI for consoles via external path ((MESS) a2600, a7800, coleco, genesis, nes and snes) (ID 06531). Fixed UI 'Switch Item Ordering' corrupts software list (ID 06402).
. Fixed issues specifying image/slot options fron INI files. I added hooks so that options specified at the command line can also be responded to when parsed from INI files, but in the long run much of the logic that is currently in mame_options should go into emu_options so that when an option is specified, all of the wacko logic around slot/image specification "just works" because it is encapsulated within emu_options.
. More options refactoring: Stabilization options function for 0.185 release
. Fixed a regression in the mandatory image check. As a consequence of recent changes, we were not properly blocking the emulation from starting when a must_be_loaded() image had an unspecified image (ui\info.cpp and ui.cpp).
. Workaround for scenarios where both the command line and an INI specify an image option. This is a hack; see commentary within the code. I intend to fix this "for real" when emu_options become more self contained (emu\emuopts.cpp).
. MEMORY SYSTEM: Removed direct_update from the core (emu\emumem.cpp)
. Fixed issue that could cause bogus arguments to be reported incorrectly (util\options.cpp). Examples: 'mame -whatever nes' would previously be reported as "Unrecognized argument: nes".
. SOFTWARE LIST
. Fixed a bug that caused "Switch Item Ordering" in the software list menu to dupe entries (ID 6402)
. Changed a lookup within the softlist code to use std::find_if()
. Changes to make get_default_card_software() less stupid. The goals with this change is to make get_default_card_software() a bit more standalone by making it a const method that does not mutate the state of the device_image_interface. This is done by passing in a small structure that encapsulates the minimum of information that get_default_card_software() needs. This also eliminates the need for device_image_interface::open_image_file()
. Introduced an 'util::arbitrary_clock' template class, to represent a clock that "knows" when the epoch starts. Converted the NTFS filetime code and Mac datetime code to use util::arbitrary_clock. This is in preparation for a bigger change to Imgtool where I eliminate usage of time_t.
. Changed the validity checks to have its own emu_options. This comes from a regression reported by Tafoid whereby the following command line "mame coco wildcat" would report the following error, which was not really fatal because it happened within validation: Driver t4426 (file coco12.cpp): 1 errors, 0 warnings Errors: Fatal error Unknown slot option 'pak' in slot 'ext'. My changes to option processing changed emu_options to put image and slot options in their own arrays, and I expect those image/slot options to be pertinent to the active driver. However, driver validation was passing the emu_options associated with the main emulation to validation specific maching_config for other drivers. This changes validate_one() to always use a fresh emu_options with each individual validation.
. Changed validity_checker to keep a fresh emu_options for validation purposes. This seems to solve the performance problems introduced by PR#2221 while keeping with that PR's goals of not using the "runtime" emu_options for purposes of validation.
. Workaround for sibling disk image loading issue (emu\romload.cpp)
- MAC OS X: Fixed OS X tools build when MAME_DIR includes spaces (src\tools.lua)
. Fixed a pedantic MSVC warning in emu\dipalette.h
. Made a number of methods be const correct and static where appropriate. Also changed a few methods to return 'bool' when appropriate.
. More robust memory access operator parsing (debug\express.cpp)
. Fixed writes to decrypted opcode memory (debug\debugcpu.cpp). Fixes problem in the debugger and the cheat engine as currently the writes to opcode memory are not handled correctly, so separated EXPSPACE_RAMWRITE and EXPSPACE_OPCODE case statements to allow opcode writes to access the correct memory. Example: In flicky this will now disable cat collisions with the main sprite: maincpu.ob@3ac6=c3. This is the simplest way of updating this, EXPSPACE_OPCODE is now a copy of EXPSPACE_RAMWRITE except it uses AS_DECRYPTED_OPCODES instead of AS_PROGRAM. This method means I've got a lot of work updating a lot of cheat file warnings ...but this is the correct way of doing this.
. Make debugger 'dasm' command able to traverse virtual spaces with unmapped holes. Previously, 'dasm' would enter an infinite loop if it hit an unmapped pc, continuing to grow the output file until the program was killed (debug\debugcmd.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."