MAMEWorld >> News
View all threads Index   Flat Mode Flat  

MASH
MASH
Reged: 09/26/03
Posts: 1775
Loc: Germany
Send PM
MAMEinfo 0.216 :)
11/27/19 09:56 AM


MAMEINFO.DAT

* Updated to MAME 0.216 - http://git.redump.net/mame/log/

* Added Source/Listinfo changes

* Newest Bugs (27th Nov)

* Added/Fixed 'Recommended Games'

* Fixed 'Recommended Games' descriptions

* Fixed Mameinfo.dat infos




Download at: http://mameinfo.mameworld.info/

MAME Testers at: https://mametesters.org/view_all_set.php?sort=last_updated&dir=DESC&type=2

Ashura-X's Nightly MAME builds: http://ashura.mameworld.info/nightlybuilds/builds.html



0.216

- New games: Cane and Orbite
- New Working games: Super Triv (English questions)
- New Non-Working games: Fantasy Zone (medal game, REV.A) (J 990202 V1.000), Fishing Master (971107 JPN), Metabee Shot, Powerful Chance, Rodent Exterminator, Spade and Yu-Gi-Oh Monster Capsule
- New clones: Berzerk (revision RC31A), Cadillacs and Dinosaurs (bootleg with PIC16C57, set 3), Captain Commando (bootleg with 2xMSM5205), Channel Three, Cosmic Alien (version II, set 2), Eeekk!, Heavy Unit (Japan, alternate ROM format), JoJo's Venture (Euro 981202), JoJo's Venture (Euro 990108), JoJo's Venture (Euro 990128), Knights of the Round (bootleg with 2xMSM5205, set 2), Operation Wolf 3 (Japan), 'Real Bout Fatal Fury / Real Bout Garou Densetsu (Korean release, bug fix revision)', Saturday Night Slam Masters (bootleg with PIC16C57, set 2), Street Fighter II': Champion Edition (Dstreet-6, bootleg), Street Fighter II': Champion Edition (L735 Test Rom, bootleg, set 2), Super Dead Heat (Japan), Super Puzzle (Sang Ho Soft) and Verbena (bootleg of Carnival)
- New PinMAME games: Chicago Cubs' Triple Play (German), Mephisto (Stargame) (newer?), Oba-Oba (old hardware) and Space Train (Pinball, old hardware)
- New drivers: cps1bl_5205.cpp, cps1bl_pic.cpp and gsspade.cpp
- New devices: cane_audio, cy7c131, eistwib, idt7130, m37730s2, mc68hc11f1, mk68564, mk68564_channel, sdlc_logger, smoc501, starfield_05xx_stars, swtpc8212_device and swtpc8212_terminal
- New mame.ini options: lowlatency (CORE PERFORMANCE OPTIONS)
- CPU
. DEC T11: Increased the maximum number of cycles to take interrupt acknowledgment into account. Changed do { ... } while to while { ... } because interrupt acknowledgment can devour lots of cycles before this. Removed the probably mistaken recursive call in t11_check_irqs.
. Hitachi SH-2: Implemented watchdog timer
. Intel 8086
. Disabled warning when executing lock (0xf0) instruction (why warn at all?)
. Fixed pathological case where jumping into pages of FF-prefixed invalid opcodes could lock up MAME
. Mitsubishi M37702M2: More accurate mapping of port and interrupt registers. De-duplicate address maps.
. MOS Technology M6502: Eliminated the disable_cache hack. Now that 'direct_read_data' has been replaced with 'memory_access_cache', which is better equipped to deal with dynamic banking, there should be all the more reason to put an end to this pernicious antipattern.
. MOS Technology M65C02: 65C02 opcode timing and bus usage corrections: BBR and BBS use one or two extra cycles when the branch is taken, like other conditional branches. TRB and TSB perform an extra read of the operand instead of an extra write.
. Motorola MC68000: Added more accurate cycle counts to SCC68070 (m68000\m68kcpu.cpp), distinguished from MC68000 and MC68010.
. Motorola MC68705xx: Calculated min_cycles and max_cycles once at device_start time (m6805\m6805.cpp)
. Motorola MC68HC11
. Clock is internally divided by 4. Added preliminary MC68HC11F1 type.
. Fixed size of fetched operand for ADDD indexed modes (mc68hc11\hc11ops.hxx). This appears to have accidentally regressed in 0.212.
. Increased some MC68HC11 clocks to compensate for newly emulated internal divider (30test.cpp, hitpoker.cpp and skeetsht.cpp)
. Emulated FDIV instruction
. NEC V5x
. Moved remappable IO handler into seperated space. Fixed remapping IO behavior (nec\v5x.cpp). Added timer 2 control input (nec\v5x.h).
. Emulated internal/external timer clock input selection. Internalized CPU clock divider for V40/V50.
. Nintendo & SGI Reality Signal Processor RSP: Added 32-bit opcode alignment for disassembly
- SOUND
. Ensoniq ES5505/ES5506
. Implemented ES5505/5506 difference. Fixed spacing. Various updates. Reduced duplicates, unnecessary lines and #define macros. Implemented reset behavior (RESB in ES5506). Added notes. Fixed filter behaviors. Sync to official documents. More constant-expandable volume lookup tables. References: http://zine.r-massive.com/ensoniq-technical-documents-and-schematics/.
. Correct algorithms. Allow signed shifting. Fixed envelope and volume.
. K007232 PCM Controller: Added optional WAV logging of PCM samples
. Namco C352: Added optional compile-time PCM logging and cleaned up some code
. TI SN76477 CSG: Replaced the char array with a std::string in sn76477_device::open_wav_file to override possible buffer overrun. Minor cosmetic change in a boolean expression in sn76477_device::sound_stream_update. Fixed LOG_WAV_ENABLED_ONLY (m_enable has to be checked only if LOG_WAV_ENABLED_ONLY is set). Added log data to the right channel of the wave, accordingly to the definition declared in LOG_WAV_VALUE_R. Fixed an error with tag() returning a ':' and generating a filename not valid in Windows environment.
. Yamaha YMW-258-F: Added optional compile-time sample logging
- DEVICE
. 8042 Keyboard/Mouse Controller: Recognize mouse reset command
. Cypress CY7C131 8-bit Dual-Port SRAM with Interrupts: Device-fied CY7C131 Dual port SRAM (firebeat.cpp and twinkle.cpp)
. Discrete Netlist
. Preprocessor enhancements. The builtin preprocessor now behaves closer to CPP: Supports macro parameters (i.e. define x(a) a), stringification (i.e. define x(a) #a) and concatenation (i.e. define x(a) a ## _ext). In addition, error reporting now provides a source context including the include history.
. Code maintenance. Removed code no longer used. Added noexcept where appropriate. Splitted pparser.[c|h] into ppreprocessor and ptokenizer. Smaller optimizations, e.g. use of std::size_t. Fixed lint warnings.
. Improved localized storage. Removed some trampolines.
. Fixed some bad design in netlist solvers. Moved solver stuff into separate namespace. New namespace "solver". Minor ptime modifications. Align matrix population along the various solvers and deleted dead code.
. Added ability to compile using float instead of double. Specifically the the solver as well as the infrastructure now can have their own floating point type. Currently this is only an academic exercise since numerically demanding circuits like kidniki only work with double/double support. Using float here is pushing numerical stability over the limits. The long term design goal is too have the matrix type (double/float) being a parameter.
. Converted constexpr constants into constexpr inline functions
. Fixed a bug in the parray constructor. Replaced NL_NOEXCEPT with noexcept where appropriate.
. Support for float, double and long double solvers. Added new solver parameter FPTYPE. This determines in which floating point domain the linear system is solved. May be one of "FLOAT", "DOUBLE" or "LONGDOUBLE". Added option "--fperr" to nltool. This enables floating point exceptions. This helps debugging the code under gdb. The purpose of this going forward is to have more choice in optimization. Non-dynamic systems should be just fine in the float domain. Dynamic systems (i.e. diodes, bjts, mosfets) should in general work with double. Certain edge cases may require long double resolution.
. Added RELTOL/VNTOL solver parameters. Type safety. The newly added RELTOL and VNTOL parameters implement Newton convergence checks comparable following other SPICE implementations. The ACCURACY solver parameter now is only used for convergence checks in iterative solvers. In addition, type safety was significantly improved and a lot of "magic" numbers are identifiable now.
. Improved readability. Renamed cast member of the constants struct to magic to clearly identify magic numbers. Introduced nlconst struct inheriting from plib::constants to make code better understandable.
. Added __float128 support. float128 is a GNU extension delivering true 128 bit floating point support.
. Separates code out into pmath.h and pstonum.h. Optimized pfmtlog.h a bit.
. Switched nl_pongf and nl_rebound to dynamic timestepping. Pong (Rev E) and Rebound (Rev B) now runs about 20% faster than previously.
. Explicitly raise exceptions instead of leaving this to log.fatal(). Correct a number of cppcheck findings.
. "nltool -c docheader" now scans sources and creates usage focussed doxy documentation for devices. Very early stage, but works. For an example, please see ne555 source. Started migrating to pure C++, i.e. "//" comments. Added cppcheck configuration to netlist/build.
. Switch to VS 2019 community and fix standalone build
. First steps on the way to calculated parameters. This commit is a first step towards using formulas in parameters, i.e. MAINCLOCK(clock, 20 * 30). The intention is to improve readability and scalability. Since device registration already provides all necessary information about parameters, the code to create an include file for all devices has been improved. Long term, this will remove the need for device specific header files. In addition going forward devices will accept either no connections or all specified connections, i.e. TTL_7400_NAND(name, chip1.2, chip2.3) or TTL_7400_NAND(name)NET_C(...)NET_C(...). This will allow to remove all duplicate definitions which are currently necessary, i.e. TTL_7400_NAND/TTL_7400_GATE.
. Moved memory pool to netlist_state_t. Added memory allocation stats to verbose output. nl_assert no longer throws, first step to remove NL_EXCEPT macro.
. Fixed a code in the netlist creation which caused multiple proxies to be created for output->terminal connections. A nice side effect of this fix is a performance increase ~9% for kidniki and ~4% for pong. Speaking about pong ... maximum is 490%. Dice is running at 280 FPS/60 FPS = 466%, however without any analog emulation. Replaced NL_NOEXCEPT with noexcept. assert is now exception-free.
. Proxy and power terminal hack removal: Devices ttlhigh and ttlhow are no longer automatically created. All logic input devices (e.g. TTL_INPUT, LOGIC_INPUT) now need to have their power terminals (VCC, GND) connected. This opens the route for more appropriate proxy devices but comes at a cost. If the connections are omitted your circuit will not work as expected. Example: LOGIC_INPUT(I_SD0, 1, "AY8910PORT") NET_C(VCC, I_SD0.VCC) NET_C(GND, I_SD0.GND). Removed proxy information from terminal objects. This was replaced by a lookup hash whose life-span does not exceed netlest setup. These changes enable the removal of a number of hacks from the source going forward.
. Removed DUMMY_INPUT. NC (not connected) pins should now use NC_PIN. If a NC_PIN is actually connected, an error will be logged and validation will fail. Enabled "extended" validation. This will catch now if power terminals are not connected. Added const and noexcept where appropriate. Fixed the 7414 Schmitt-Trigger device to use nld_power_pins.
. Added VECTOR support: Fixfreq now supports VECTOR screens automatically. For now the default remains to be RASTER since BGFX does not support VECTOR screens. Nevertheless please expect changes in the video output. Video output is now collected timing-exact, i.e. with subpixel accuracy. Only during screen_update this is converted and scaled to the bitmap. There may be changes due to rounding in comparison to current rendering.
. Added 7492 Divide-by-12 Counter and 7442 4-Line BCD to 10-Line Decimal Decoder
. DS1302 Timekeeper: Subtle fix for CE writes. Improved logging.
. Floppy: Get rid of the hardcoded FLOPPY_n tags as much as practical, mostly adding device finder arrays in their place. Moved remaining functions using FLOPPY_n down into appldriv and sonydriv (both of which may be eliminated once FDC emulation is modernized). Replaced CLEAR_LINE and ASSERT_LINE with 0 and 1 (these were being inaccurately used to represent active-low control line states) (imagedev\flopdrv.cpp).
. Hitachi HD44780 A00 LCD Controller: Make initialization procedure slightly less strict than datasheet implies. Turn logging back off.
. Intel 8251 USART: Required initial state to enable receiver of a 8251a and also to avoid sending start bit to diserial on reset and get framing error.
. Konami Custom: Less crude hack to clean tilemap (video\k054156_k054157_k056832.cpp)
. MB8421 8-bit Dual-Port SRAM with Interrupts: Support variable size and data width. Use template for base device. Add notes.
. RS232 Port: Put the swtpc8212 terminal in the default RS-232 devices
. Sega Custom
. Sega 315-5124 SMS1 VDP: Allow dividing hcounter related to using LCM. Fixed color related to hardware measured value.
. Sega 315-5313 Megadrive VDP: Allow LCM scaling of horizontal resolution
. Sega 315-5649 I/O Controller: Populate features for future use
. Z80 SIO: Fixed some log messages. Verified sync byte behavior for SDLC/HDLC, LOG message details added.
- cave.cpp and mcatadv.cpp: Added tile size check related to VRAM is found. Moved mirroring map into driver (video\tmap038.cpp). This fixes graphical bug in attract mode of DoDonPachi (ID 07479).
- cedar_magnet.cpp: Added PCB ASCII layout
- chihiro.cpp: Fixed memory leaks in Xbox USB
- coolridr.cpp: Get rid of redundant hacks
- cps1.cpp: Added C-Board PAL dumps to mercs, mercsu, mercsur1, mercsj, sf2ee, sf2ue, captcomm, captcommr1, captcommu, captcommj and captcommjr1.
- ddz.cpp: Make this driver no more broken than it was before
- deco32.cpp: Fixed region endianness. Still not sure the reversed loading order is correct (the data here is unused currently).
- epos.cpp: Moved epos-on-pacman members from pacman_state to derived epospm_state
- flstory.cpp
. Dumped and hook up M68705 MCU for Victorious Nine
. Added DIP locations to The FairyLand Story
- galaga.cpp
. Implemented accurate starfield for Galaga and Bosconian based on reverse engineering the Namco 05xx chip
. Changes: 1. Regenerates starfield colors based on LFSR state for every frame. 2. Pixel accurate to Namco original 05xx. 3. Restores one line horizontal starfield shift for every 256 vertical pixel shifts. 4. Properly handles LFSR reset (_STARCLR). 5. Restores missing 4 stars from previous implementations. 6. Fixes potential issue with the number of stars on screen at any one time. 7. Restores 4 pixel/line scrolling capability (not currently used for any driver). Documentation and notes have been added inline to the code for the galaga video driver.
. Note: The starfields for Galaga and Bosconian are driven by a custom Namco 05XX chip that is contains an internal 16-bit Linear Feedback Shift Register (LFSR) and all the necessary support logic for generating a 6-bit RGB signal. The chip is fed all the required signals from the video system to allow it to output a colored "star" at pseudo-random intervals and to scroll these stars in both horizontal and vertical directions. The chip can generate a total of 256 stars in 4 banks of 64 for each vertical frame. Two of these banks of stars will be active at any one time, controlled by two starfield selector pins. Some stars will be hidden by the vertical and horizontal blanking, so there will always be less than 128 stars on screen at one time.
- lethalj.cpp: Correct XTAL value
- megaplay.cpp: Use LCM of support horizontal resolution in both VDPs. Fixed SMS VDP overlay.
- midqslvr.cpp: Added I/O board readme/documentation
- mpu4vid.cpp: Clean up driver a little
- nss.cpp, sfcbox.cpp and snesb.cpp
. Fixed rapid vertical scrolling in rexronan and other games (video\snes_ppu.cpp)
. Fixed MAME crashes when starting a game with (MESS) SNES (PAL) (ID 07472)
. Apply raw parameters as (MESS) SNES, fixes black screen in snesb.cpp (ID 07473)
. Fixed doubled-up frames on interlaced games, off-by-one-line graphical glitches in some games and out-of-bounds vector accesses on interlaced SNES games.
. Ported over more of BSNES's PPU-fast implementation. Fixes many bugs, possibly causes more.
. Fixed (MESS) Super Mario World sprite blending regression (video\snes_ppu.cpp)
. Converted OAM code from BSNES ppu-fast
- peplus.cpp: Redumped CG roms for pepp0596 and pepp0598
- photoply.cpp: BIOS region is 8-bit, so map it as such.
- popeye.cpp
. Fixed final game resolution output is different at original game (ID 05600)
. There are now three rendering modes selectable via machine config: False progressive: Same as before. Interlaced (scanline skip): only the current field is drawn with the other field's scanlines blacked. This gives the same flickering impression as interlaced display. Interlaced (bitmap): Bitmap is constructed from odd and even fields. Result is comparable to PAL/NTSC videos played back on progressive displays without additional processing. Some modernisation, all members initialized in constructor.
- psikyo.cpp: Updated notes. All games uses PORT_VBLANK and legacy screen parameters (which is already bad per-se), with also naive and unlikely measurements (i.e. exactly 59.30 or 59.90 Hz). The most blunt examples of something being wrong with timings are with Gunbird and Tengai: They both have FOUR frames of input lag, the real thing doesn't sport anything like that. All games are marked with MACHINE_IMPERFECT_TIMING until somebody provides accurate H/Vsync signals for at least one game of this driver.
- qix.cpp
. Added machine side effects and unmapped reads
. Fixed inputs for Kram and Zoo Keeper. Fixes unable to start game or use first coin slot (ID 07386).
- stv.cpp: Moved per-game I/O into memory maps. Simplified code.
- taitogn.cpp: Make region endianness consistent with everything else
- taitojc.cpp: Correct "gfx" region widths and rename for clarity
- taitopjc.cpp: Fixed some region definitions
- tatsumi.cpp: Correct region widths
- whitestar.cpp: Added stub configuration for sets using ARM7 instead of BSMT2000
- 30 Test (Remake): Fixed inputs and sound (ID 07487)
- Air Rescue: Better way of copying DSP code and data
- Hayaoshi Quiz Nettou Namahousou : Fixed final round and flame text priorities
- Legend of Hero Tonma: The MCU of clone Legend of Hero Tonma (Japan, bootleg with i8751) is running in external mode on daughtercard. Same data as lohtj just padded with 0xff.
- Oli-Boo-Chu: Clean up some bitscanning and indentation
- Pacman Club / Club Lambada: Descrambled clone Pacman Club (set 1, Argentina). Boots but resets during attract.
- Pong (Rev E) external [TTL]: Fixed pong.netlist rom length
- Raiden: Fixed graphical regression in clones Raiden (set 3) and Raiden (US set 3). Improved set descriptions.
- Roc'n Rope: Added cpu/video board pal10l8.6g
- Saturday Night Slam Masters: Fixed clone (bootleg with PIC16c57, set 1) scroll priorities and Player 4
- Space Invaders: Fixed selection of game B in clone Jatre Specter; seems it hadn't worked since 0.139.
- Street Fighter II': Champion Edition: Added PAL dumps to clone sf2cems6a, sf2cems6b and sf2cems6c
- Super Dead Heat: Enabled save state support
- Super Speed Race Junior: Fixed input and 'Difficult' dipswitch (ID 07492)
- Super Triv (English questions): Fixed maincpu rom loading (Game now playable)
- Tekken 4: Fixed year info (ID 07489)
- Wild Cat 3: Very preliminary and incomplete data decryption
- Fixed rom names in berzerk.cpp, bfm_sc4.cpp, cinemat.cpp, cps1.cpp, flstory.cpp, jack.cpp, m72.cpp, spdheat.cpp and zn.cpp
- Dipswitch fixes in cps1.cpp, flstory.cpp, ggconnie.cpp and ssrj.cpp
- Description changes of Armed Formation (Japan), Beastie Feastie (Pac-Man conversion), Berzerk (revision RC31), Berzerk (revision RC28), Berzerk (French Speech, revision RC31), Berzerk (German Speech, revision RC32), Berzerk (Spanish Speech, revision RC32), Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM5205, set 1), Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM5205, set 2), Cosmic Alien (version II, set 1), Dragon Breed (World, M72 PCB version), Eeekk! (Pac-Man conversion), Frenzy (revision RA1), Image Fight (World), Knights of the Round (bootleg with 2xMSM5205, set 1), Knights of the Round (bootleg with 2xMSM5205, set 1), Ninja Spirit (World), Raiden (set 3, newer hardware), Raiden (US set 2, SEI8904 hardware), Raiden (US set 3, newer hardware), Saturday Night Slam Masters (bootleg with PIC16C57, set 1), Solar Quest (rev 10 8 81), Street Fighter II': Champion Edition (L735 Test Rom, bootleg, set 1), Street Fighter II: The World Warrior (bootleg, set 1) and Super Dead Heat (World)
- Renamed (berzerk) to (berzerka), (berzerk1) to (berzerkb), (eeekk) to (eeekkp), (jojo) to (jojou), (jojor1) to (jojour1) and (jojor2) to (jojour2)
- MAME
. VIDEO RENDERING SYSTEM
. Make internal layout compression type a scoped enum (only zlib is supported still, but at least the values aren't magic numbers now)
. Set global locale when parsing with nanosvg (emu\screen.cpp), fixes SVG display issues when locale is not English. Be strictly POSIX compliant, reduced fragmentation and get rid of an unused member (emu\screen.cpp). Only clear or allocate scan bitmaps in excess of the previous height. Fixes blank portions of smw2u, possibly others (emu\screen.cpp).
. OpenGL render: Fixed bug preventing adjustment of gamma, brightness and contrast. Starting MAME with defaults, i.e. gamma == 1.0, no RGB palette will be allocated. If gamma than is changed, a new palette will be allocated. But the texture will not be updated because the palette is not checked. This fix will check for palette changes. Note: If the palette is changed inplace, i.e. without reallocation, this will fail. The correct fix would be that the texture palette is not only a pointer to rgb_t * but to texture_palette_type. texture_palette_type would hold the pointer, the length and a sequential id which is checked in addition to pointer equality (render\drawogl.cpp).
. BGFX
. Fixed waitvsync for BGFX vulkan backend (bgfx\src\renderer_vk.cpp). Note: Currently waitvsync is broken in the BGFX vulkan backend. The option is just ignored and a mode waiting for vsync is selected. This also breaks throttle. -nothrottle doesn't work. These changes fix this. If available a non-syncing mode is used if -nowaitvsync is used.
. Fixed resource leak (bgfx\chain.cpp)
. Fixed 'Tetris The Grand Master' crash on resolution change (bgfx\chainmanager.cpp)
. Fixed broken rendering when using bgfx_screen_chains none (render\drawbgfx.cpp). Fixes 'Spider-Man: The Videogame' crash in few seconds (ID 07495).
. Fixed assertion when running LaserDisc games (e.g. Fire Fox) with any bgfx backend. Fixed MAME crashes in any driver which configures a rgb32/argb32 screen, trying to change any of the Brightness, Contrast or Gamma sliders.
. Fixed edge case around B/C/G settings. If e.g. Kid Niki is started with default gamma (1.0), changing gamma with slider doesn't work. Setting to a gamma <> 1 and restarting MAME will apply the gamma (render\drawbgfx.cpp).
. Apply line width provided by renderer (render\drawogl.cpp)
. Fixed Laserdisc games showing four squares instead of LD video with -bgfx_backend OpenGL
. DEVICE
. There can only be one "perfect quantum" device - enforce that only the root machine can set it, as allowing subdevices to will cause weird issues with slot cards overiding it
. Allow multiple devices to set maximum quantum and use the most restrictive one (it's maximum quantum, it would be minimum interleave)
. Got rid of device_slot_card_interface as it wasn't providing value. Added a helper template to reduce certain kinds of boilerplate in slots/buses.
. Cleaned up some particularly bad slot code (plenty more of that to do), and made some slots more idiomatic.
. Start putting noexcept on things that have no business throwing exceptions, starting with diimage. also fix a slight bug in the interface matching function for software list parts.
. Make many device_execute_interface functions noexcept, including the "information" overrides. This also covers several time-related functions in attotime, running_machine and emu_timer. Added as_khz and as_mhz to emu\attotime.h.
. Make devdelegate more like DEVCB for configuration. This is fundamental change to show device delegates are configured.
. Device delegates are now aware of the current device during configuration and will resolve string tags relative to it. This means that device delegates need a device to be supplied on construction so they can find the machine configuration object. There's a one-dimensional array helper to make it easier to construct arrays of device delegates with the same owner (I didn't make an n-dimensional one because I didn't hit a use case, but it would be a simple addition).
. There's no more bind_relative_to member - just call resolve() like you would for a DEVCB. There's also no need to cast nullptr when creating a late bind device delegate. The flip side is that for an overloaded or non-capturing lambda you'll need to cast to the desired type.
. There is one less conditional branch in the hot path for calls for delegates bound to a function pointer of member function pointer. This comes at the cost of one additional unconditional branch in the hot path for calls to delegates bound to functoids (lambdas, functions that don't take an object reference, other callable objects). This applies to all delegates, not just device delegates.
. Address spaces will now print an error message if a late bind error is encountered while installing a handler. This will give the range and address range, hopefully making it easier to guess which memory map is faulty.
. For the simple case of allowing a device_delegate member to be configured, use a member like this: template void set_foo(T &&...args) { m_foo_cb.set(std::forward(args)...); }. For a case where different delegates need to be used depending on the function signature, see src/emu/screen.h (the screen update function setters).
. Device delegates now take a target specification and function pointer. The target may be: * Target omitted, implying the current device being configured. This can only be used during configuration. It will work as long as the current device is not removed/replaced. * A tag string relative to the current device being configured. This can only be used during configuration. It will not be callable until .resolve() is called. It will work as long as the current device is not removed/replaced. * A device finder (required_device/optional_device). The delegate will late bind to the current target of the device finder. It will not be callable until .resolve() is called. It will work properly if the target device is replaced, as long as the device finder's base object isn't removed/replaced. * A reference to an object. It will be callable immediately. It will work as long as the target object is not removed/replaced.
. The target types and restrictions are pretty similar to what you already have on object finders and DEVCB, so it shouldn't cause any surprises. Note that dereferencing a device finder will changes the effect.
. The order of the target and name has been reversed for functoids (lambdas and other callable objects). This allows the NAME macro to be used on lambdas and functoids. For example: foo.set_something(NAME([this] (u8 data) { m_something = data; }));. I realise the diagnostic messages get ugly if you use NAME on a large lambda. You can still give a literal name, you just have to place it after the lambda rather than before. This is uglier, but it's intentional. I'm trying to drive developers away from a certain style. While it's nice that you can put half the driver code in the memory map, it detracts from readability. It's hard to visualise the memory range mappings if the memory map functions are punctuated by large lambdas. There's also slightly higher overhead for calling a delegate bound to a functoid. If the code is prettier for trivial lambdas but uglier for non-trivial lambdas in address maps, it will hopefully steer people away from putting non-trivial lambdas in memory maps.
. There were some devices that were converted from using plain delegates without adding bind_relative_to calls. I fixed some of them (e.g. LaserDisc) but I probably missed some. These will likely crash on unresolved delegate calls.
. There are some devices that reset delegates at configuration complete or start time, preventing them from being set up during configuration (e.g. src/devices/video/ppu2c0x.cpp and src/devices/machine/68307.cpp). This bgoes against the design principles of how device delegates should be used, but I didn't change them because I don't trust myself to find all the places they're used.
. UI updates
. Made DIP switch display scale with UI font and improved layout
. Improved analog control display giving an indication of neutral position
. Fixed menu heading sizes not being recalculated after font is changed
. Cleaned up memory management in some more menus
. Don't walk the directory every time the crosshair menu is refreshed
. Sort crosshair pictures. Show a selector menu when crosshair picture item is selected.
. Make input mapping menus more efficient - most of the properties of a field won't change.
. Get rid of the pool allocator in base menu class - it was encouraging bad design. Get rid of some pointless members of input mapping menu.
. Allocate bitmap in place rather than using global_alloc; explicitly initialize each member of ui_gfx_state (ui\viewgfx.cpp).
. Hook up focus next/focus prev on system/software selection menus (Tab and LShift-Tab, respectively by default). Allow joystick buttons to be used to change focus on system/software selection menus. Fixed bug that allowed focus to move to hidden panels. If panel is collapsed while focused, return focus to systems/software.
. UI show feedback when configuring an input to give the user more of an idea of what's going on
. When modifying an input mapping, only cycle default/none if UI_CANCEL is the first thing pressed. Note: If you hit UI_SELECT to modify an input then hit UI_CANCEL immediately, it will cycle default/none; however if you press any other input first and then hit UI_CANCEL, it will just back out the change.
. Support PORT_CONDITION for PORT_ADJUSTER. PORT_CONDITION can now enabled/disabled the display of PORT_ADJUSTER sliders in the UI.
. UI input mapping menu updates: When a switch-type input is selected, show feedback when it's pressed. If an invalid code is entered (e.g. only negatives) abandon the change rather than cycling default/none. If an invalid code is entered display a message until the user takes some other action.
. UI input menu: treat codes containing a postive and negative of the same thing as invalid (e.g. A S not A)
. UI updates: Re-wrote localisation loader: Sanitise input, check for buffer overruns, fixed endianness handling, keep data in a single allocated block, do a single hash lookup when fetching a string and print diagnostic output when things go wrong. Sort UI language menu so it's not in whatever random order the filesystem yields. Fixed most menu code to adjust L/R border for UI aspect ratio and pass container to render manager when getting UI aspect ratio. Converted a couple more things to use smart pointers.
. 3rdparty
. Sync BGFX, BX and BIMG with upstream. Fixed the hlsl fs_chroma.sc matrix transposition properly.
. INPUT
. Replaced output().set_value with output finders
. Display emulated analog input values on the anaolg controls menu screen
. Removed up to one frame of input latency. Makes MAME virtually lagless on VRR monitors. Use empty parentheses and clean interface member calls. Added new option -lowlatency (-lolat) to make this feature optional.
. Removed internal autofire functionality as there's a plugin for that now
. Recognized GUIDs for joysticks, allows stable input ID mapping (input\input_sdl.cpp).
. Updated emu\input.cpp: constexpr crusade on input_code and input_seq and some very slight optimisation to input_seq. seq_poll* is a frontend function and had no business being in the core, so it's a utility class now. seq_poll* now exposes a bit more detail, enabling improved interaction on the UI inputs menu. Global state is reduced a little, but the poll_* functions are still members of the input manager with global state.
. Better than 50% reduction in compile time, and better locality for static data. Better encapsulation, const correctness and noexcept usage (emu\ioport.cpp).
. LUA engine: The Lua engine has been updated in a way that maintains source compatibility with existing Lua scripts. This is less than ideal, but it minimises impact. Ideally someone (possibly me) will be able to expose the input sequence poller helper properly. I tested the changes with the cheat and autofire plugins and I was able to assign sequences. However I found two issues: It's seems impossible to assign a more complex sequence than a single key/button in the autofire plugin (i.e. no AND or NOT conditions, I confirmed this is pre-existing, not a regression), and in both the cheat and autofire plugins I found it a bit unwieldy trying to enter a complex sequence without live feedback of the sequence as it's built (this was also applicable to MAME's own input mapping menu until I added the live display yesterday).
. Moved some stuff to an anonymous namespace (emu\emumem.cpp), and fully specialise templates that are no longer member classes.
. Changed emu_fatalerror to use util::string_format semantics
. Eliminated nmi_line_pulse usage in espial.cpp, galaga.cpp, mainevt.cpp, superwng.cpp and zodiack.cpp
. Modernized VBLANK interrupts for mainevt.cpp, superwng.cpp and zodiack.cpp
. Fixed invalid std::vector<> lookup in util\aviio.cpp. This fixes a case where: m_soundbuf_samples == processedsamples, processedsamples > 0 and processedsamples * stream->channels() == m_soundbuf.size(). In this scenario, the std::memmove() would do nothing (moving zero bytes), but the operator[] on the second parameter to std::memmove() overflows the array. This can be benign in optimized builds (because the third parameter to std::memmove() is 0), but on debugging builds this can cause an assert.
. Assert aborts on failure - abort is not an exception. Conditional noexcept is an antipattern, get rid of it (emu\device.cpp, diexec.cpp, emucore.h, machine.h and schedule.cpp)
. Updated emu\schedule.cpp
. Don't create pipe unless requested (osd\modules\file\winptty.cpp)
. PLUGINS
. Disconnect if timed out (plugins\discord\init.lua). Only time out input sequence entry if nothing is entered (plugins\autofire and plugins\cheat).
. Some simplifications and bugfixes (plugins\cheatfind\init.lua). Show pressed buttons when setting hotkeys (plugins\cheat\init.lua). Permit input sequences (plugins\autofire).
. Fixed renamed set in hiscore.dat
. Fixed ROM region width in many drivers. Note: Many of these ROMs are really accessed as bytes or 16-bit words rather than at the native 32-bit or 64-bit widths, thanks to unemulated dynamic bus sizing and/or bridge controllers.
. Fixed a buffer overrun in wavwrite (buffer half requried size). Slightly reduced dependencies and overhead in wavwrite.
. Print the name of non-fundamental save_items when fatalerroring, for easier debugging (emu\save.h)
. Get rid of global_alloc/global_free (sound\coreaudio_sound.cpp)
. Don't attempt to load a translation file if the language setting is empty (mame\language.cpp)
- MAC OS X
. Work around Retina issue on MacOS Catalina until SDL catches up (render\drawogl.cpp)
. SDL -video auto on MacOS now selects BGFX rather than OpenGL for future-proofing (sdl\video.cpp)
. Get rid of allocWithZone as it's ignored on 64-bit ABI. Missed a couple of Mac debugger things (debugger\osx\disassemblyview.mm and memoryview.mm).
- Compiling
. Fixed MSVC compile (netlist\plib\palloc.h)
. Fixed some incorrectly marked up stuff in build scripts
. Eliminated auto_alloc in bartop52.cpp + maxaflex.cpp (video\antic.cpp), cischeat.cpp, irobot.cpp, konamim2.cpp (video\3dom2_te.cpp), wheelfir.cpp and audio\dcs.cpp
. Workaround to fix cross compilation to x86 from a x64 host (makefile)
- Debugger
. Get rid of some more simple_list in core debugger code
. Made new disassembly windows in Qt debugger default to current CPU
. Make debugger view startup more efficient - it's still not going to be practical with 200k save items, but it's better than before.




"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."









Entire thread
Subject Posted by Posted on
* MAMEinfo 0.216 :) MASH 11/27/19 09:56 AM
. * MAMEinfo 0.217GIT (18th Dec) MASH  12/18/19 01:04 PM
. * Re: MAMEinfo 0.216 :) alcoatjez  12/01/19 04:51 PM
. * Re: MAMEinfo 0.216 :) VasiliyFamiliya  12/01/19 11:26 AM
. * Re: MAMEinfo 0.216 :) MASH  12/01/19 02:03 PM
. * Re: MAMEinfo 0.216 :) agard  11/27/19 02:12 PM

Extra information Permissions
Moderator:  John IV, Robbbert, Tafoid 
2 registered and 89 anonymous users are browsing this forum.
You cannot start new topics
You cannot reply to topics
HTML is enabled
UBBCode is enabled
Thread views: 1026