neogeo.cpp: Added newer Universe BIOS versions to irrmaze - this allows
the Japanese version to be seen by switching the region, and joystick
play using a cheat (although 2.3 and later also support trackball play,
a joystick is still required for setup and to use the in-game menu).
Also changed roboarma to roboarmya, as this matches the software list,
and we prefer to make clone set names using suffixes.
neogeo.xml: Added irrmaze with usage note explaining that newer
Universe BIOS versions support joystick play as a cheat (must be enabled
each session - Universe BIOS does not save cheat state to NVRAM).
lwriter.cpp: Got rid of a couple of literal tags, make use of Allman
style a bit more consistent, and got rid of a redundant part of a
bitwise or expression.
runaway.cpp: Merged video code into main driver file, split state
classes, reduced a bit of redundancy, eliminated runtime input tag
lookups, and generally tidied up code.
dai3wksi.cpp: Noted manufacture in description for runaways.
-machine/smc91c9x.cpp adjustments:
* Reset should disable promiscuous mode.
* RCR - handle promiscuous changes, adjust soft reset handling.
* EPH_STATUS should be LINK_OK by default (previous code wouldn't set LINK_OK unless RX_EN is set but LANceGS won't set RX_EN unless LINK_OK is set).
* B0_BANK bits 4-8 are unspecified in the documentation but LANceGS expects a 3 (used in Card detection logic).
* MIR values depend on device type and resets when the mmu resets.
* Reading/writing the data register needs to be aware of 8-bit I/O.
* Calculate FCS.
* Removed WMS OUI filtering hack.
* Changed to use modern poly.h instead of polylgcy.h.
* Moved helper classes into separate voodoo namespace.
* Derived device classes from video_device_interface.
* Split classes so that later versions derive from earlier versions.
* Created device maps to be directly included.
* Redesigned register mapping to use helper classes and delegates.
* Rewrote rasterizers to use C++ templates instead of macros.
* Added logic to compute equations for color/texture combine units.
* Added special generic identity-texel rasterizer cases.
* Removed pipeline stalls on texture and palette changes.
* Removed pipeline stalls on most all parameter changes.
* Generally re-thought and cleaned up logic throughout.
* Parameterized cycle stealing on status reads; updated all existing voodoo consumers to configure it as it was before.
-vidoe/poly.h: Various improvements:
* Exposed poly_array class for broader use.
* Changed poly_array to intelligently determine maximum size.
* Added logic to track multiple "last" instances in poly_array.
* Extended logic to support up to 16m work items.
* Removed MaxPolys parameter from poly_manager template.
* Added Flags parameter to poly_manager template.
* Added POLY_FLAG_NO_CLIPPING flag to remove clipping code when not needed.
* poly_manager now supports a MaxParams value of 0.
* Made paramcount a template parameter for render_* functions.
* Added reset_after_wait() method to be overridden by derived classes.
* Switched to using std:: helpers instead of internal methods.
* Removed useless dependency on screen_device.
* TRACK_POLY_WAITS now produces more complete statistics.
-video/polylgcy.cpp: Removed legacy implementation of polygon renderer.
-machine/gt64xxx.cpp: Prevent lockups by disallowing 0-duration timers.
-machine/pci.cpp: Added support for adding subdevice maps directly.
-emu/video/rgbsse.h: Improved min/max for SSE4.1+ and scale+clamp operations for all.
-emu/vidoe/rgbutil.h: Made palette expansion constexpr and added argbexpand function.
-osd/osdcore.cpp: Changed osd_ticks to use QueryPerformanceCounter on Windows since the mingw std::chrono::high_resolution_clock is anything but.
New working software list additions
-----------------------------------
2A03Puritans [rainwarrior]
E.T. [KHAN]
Glider [anonymous]
* mapper 29: support should be complete but there are few if any other homebrew roms to test against
* mapper 30: only supports the most basic board that doesn't use flashable memory - tested on a dozen or so roms, all working
* add a game each for mappers 29 (Glider), 30 (E.T.), and 31 (2A03Puritans) so there is something in the software lists to actually test against. Glider is discontinued by manufacture, the other two are freely available from their authors.
* various naming clean ups, like BTL- prefixes for things that are not bootlegs
-----------------------------------
lk3000: Calculator, Electronic Notebook [hap, Sean Riddle]
New NOT_WORKING software list additions
---------------------------------------
lk3000: English-German [hap, Sean Riddle]
* Removed unnecessary VRAM read trampolines.
* Use buffered_spriteram16_device for buffered sprite RAM.
* Derive clocks from crystals.
* Reduced runtime tag lookups, unnecessary region size.
* Fix naming, spacing.
* Use generic graphics layouts, fix color usage of gfxdecode related to palette size.
* Restrict rowscroll to screen clipping rectangle.
* add some dumped data to the innotab2 driver, split from storio [Sean Riddle]
* new NOT WORKING software list entry
------
leapfrog_zippity_cart.xml:
The Princess and the Frog - Magical Bayou Adventure (500-13779-A) (UK) [Sean Riddle]
* new NOT WORKING machines
-----
Compact Cyber Arcade TV - 120 in 1 (JL2370) [Sean Riddle, taizou]
Leapster Explorer [David Haywood]
* new NOT WORKING software list entries
------------
leapfrog_leapster_explorer_cart.xml:
TinkerBell and the Lost Treasure (500-14226-A) [Dave "Foxhack" Silva]
Mr. Pencil Saves Doodleburg (500-14221-A) [Dave "Foxhack" Silva]
Adventure Sketchers (500-15340-A) (Creativity Learning Game) [Dave "Foxhack" Silva]
* new NOT WORKING software list entries
-------
vtech_innotab_cart.xml:
The Penguins of Madagascar (80-230500, US) [Dave "Foxhack" Silva]
Teenage Mutant Ninja Turtles - Turtle Power! (80-231300, US) [Dave "Foxhack" Silva]
* mobigo_cart.xml: remove jakenevalt, it's a bad dump "80-252800 - Jake and the Neverland Pirates (US).bin FIXED BITS (xxxxxx1xxxxxxxxx)"
* mobigo_cart.xml: remove dprinces, it's a bad dump "mobigo_251100.bin BADADDRxxxxxxxxx-xxxxxxxxxxxxxx"
* new NOT WORKING software list entries
------
mobigo_cart.xml:
Disney/Pixar Cars 2 (USA, rev 2?) [Sean Riddle, Dave "Foxhack" Silva]
Thomas & Friends - Really Useful Engines (USA, rev 2?) [Sean Riddle, Dave "Foxhack" Silva]
* - added German ltleappad BIOS [Team Europe, Sean Riddle]
* new NOT WORKING software list entries
------
vtech_storio_cart.xml:
Cars 2 (USA) [Sean Riddle, Dave "Foxhack" Silva]
Dora and the 3 Little Pigs (USA) [Sean Riddle, Dave "Foxhack" Silva]
Hello Kitty's Surprise (USA) [Sean Riddle, Dave "Foxhack" Silva]
Disney Princess - A Gift From The Heart & Belle's Special Treat (USA) [Sean Riddle, Dave "Foxhack" Silva]
TinkerBell and the Great Fairy Rescue (USA) [Sean Riddle, Dave "Foxhack" Silva]
Mickey Mouse Clubhouse (USA) [Sean Riddle, Dave "Foxhack" Silva]
* update notes in storio xml
* add some more known cartridge info to juicebox.xml
- Use memory taps instead of directly installing into the memory map
- Use address_maps to specify address ranges
- Add missing save states
- Support the BennVenn SD Loader (preliminary)
- Move lightpen skeleton to a device
* Split YM2154 into a separate device
* Created fake YM2154 ROMs as placeholders
* Created new BBD sound device in src/devices/sound/bbd.cpp
* Created new mixer device in src/devices/sound/mixer.cpp
* Connected YM2154 and BBD devices
* Approximated BBD driver behavior
* Exposed analog sliders as adjusters (accessible via ` menu)
* Added sliders to layout and animated them
* Sync with upstream. I/O callbacks are now consolidated into a single read callback and a single write callback, with an access type specifier.
* Initial working implementation of YM278B. Most features implemented, except vibrato.
* Implement vibrato and status register flags. Fix envelope rate computation.
* Rename ymfm_interface::external_type to access_class and clean up the fallout.
* Formally replace the old YMF278B engine with the one from ymfm
* Rotated YMF278B outputs into a more logical order.
* Re-evaluted envelope calculations and 2x works better than the weird 15/8 I came up with before. Also changed the way FM resampling is computed to be more precise (and simpler). Turned off extraneous debugging.
* Start of/reset to a null state with no loaded waveforms.
* Fix YM2608 I/O ports.
Software list items promoted to working
---------------------------------------
vsmile_cart: V.Smile Smart Keyboard (USA), V.Smile Clavier Tip Tap (France), V.Smile Schreibspaß (Germany) [Ryan Holtz, PulkoMandy]
ymfm: refactor the code into a separate 3rdparty library
* Moved ymfm core implementation to 3rdparty/ymfm
* Split out each family (OPM/OPN/OPL/etc) into its own source file
* Added preliminary OPQ and OPZ support, still WIP
* Put all 3rdparty code into its own namespace ymfm
* Fixed various bugs reported in #8042
* Created interface class for communication between the 3rdparty engine and the emulator
* Standardized MAME implementation of all Yamaha devices based on a template class
* Created standard base class ym_generic that can be used when multiple YM chips are swapped in
* Changed YM2203/2608/2610 to embed a YM2149 as a subdevice instead of deriving from ay8910_device
* Also provided compile-time option to use a simplified built-in SSG rather than using MAME's at all (currently off)
* Consolidated MAME header files from one-per-chip (ym2151.h, ym2203.h, etc) to one-per-family (ymopm.h, ymopn.h, etc)
- Hooked up PIC and connected keyboard and vblank interrupts
- Implemented HLE keyboard (all keys mapped, using the translation ROM for keycodes)
- Increased shared memory to 40k
- Fixed interrupt flags register
- Implemented cursor and roll offset
* OPL prep. Define FAMILY constant in register classes, and use that instead of template specialization for family-specific behaviors. Expand channel masks to 32 bits. Add is_keyon() helper.
* Made FM channel and operator mapping more flexible. Operators are now owned by the engine and can be dynamically assigned to channels. Register classes now provide a mapping between a linear set of operators and channels. The register data array is now a regular array instead of a vector.
* Minor change for consistency.
* Introduce OPL registers and create a ymopl_engine. Add support for sustain-less notes and the OPL envelope clocks (which does not divide by 3).
* Moved keycode calculations into register class. Removed unnecessary recalc in phase generator. Lined up OPL frequency, feedback, algorithm, and total level.
* Implement key scale level and OPL-specific LFO and phase handling.
* Create new YM3526 device based on new OPL. Fix keyon and sustain behaviors.
* Fix weird OPL multiple values. Clean up and further document OPL LFO.
* No busy flag on OPL, so no need to do the work. Add a right shift of 1 to the output stage to line up volume with old implementation.
* More compact way of representing key scale level values.
* Move the KSL bitswap into the registers since it's apparently fixed in OPLL and perhaps others.
* Add support for ryhthm generation in OPL. Change compute_volume to take a phase value directly, and expose operator phase.
* Fix OPL timers.
* Start LFSR with a non-zero value to ensure it actually starts generating for OPL.
* Fix silly bug in sustain logic for OPL. Fixes a lot of previously missing sounds.
* Create OPL2 engine. Add waveform support for OPL2/3 waveforms.
* Wire up YM3812 to the new OPL2 engine.
* Reset OPL timers when the mask is written as well.
* Manage rhythm key ons separately. Fixes Wardner awfulness.
* Explicitly make channel logic handle 0, 2, or 4 operators rather than checking each one for null. Also simplify the combining logic for the 2 operator case.
* Reverse bit order of LFSRs to make things a little simpler. Fix OPL LFSR so that it has its full 23-bit period.
* Change outputs along the path to arrays rather than stereo items. This allows for four channel output. Also add a constant for the number of outputs to the register class.
* Move status register bit definitions to the registers class. Generically support the IRQ bit.
* Create shared helpers for FP encode/decode/roundtrip and use them throughout. Also update TMNT to use the FP decoder.
* No need to clamp when using the roundtrip.
* Clear the EOS flag when execute is turned off on ADPCM-B. Fix combine_status in YM2608 to ignore previously set flags.
* Add missing note_select in base class. Don't add 1 to the OPL release rate.
* Move Y8950 over to new OPL engine.
* Remove old y8950, along with fmopl and ymdeltat
* Add updates prior to status reads for ADPCM systems.
* Add status_mask and irq_reset logic into the core. Clean up documentation on family-specific registers. Includes some temporary gross debugging stuff.
* Made debugging less gross by giving operators and channels a reference back to their owner.
* Fix status port address in OPL chips. Reduce ADPCM volume to match previous implementation.
* Fix Y8950 ADPCM start. Return masked status properly.
* Initial cut at OPLL mapping.
* Add YM2413 support based on ymfm; renamed vrc7snd to ds1001; added YM2423 amd YMF281 variants as well. Instrument data is now loaded via external ROMs. Added 'depress' envelope support to the core engine. Fixed a number of issues in the ymopll_engine. Documented hard-coded values. Moved register clear into register-specific reset.
* Add missing identifier.
* Y8950 is OPL not OPL2.
* Some documentation cleanup. Consistency fixes in the register classes.
* Consolidate large comments. Add support for delayed modulators for OPL. Broke out 2-op and 4-op cases to help simplify logic. Fixed overflow handling in fp encoding.
* Fix silly bug.
* Changed operator assignment mechanism to be more readable. Added prepare method to be called at the start of sound update. Added ALL_CHANNELS constant to register files. Updated all consumers to call prepare and use constants where applicable.
* Move YMF262 and YMF278B to use new FM engine for OPL3/4. Fix several issues in OPL3 logic, which now seems to work ok.
* Minor fixes. More documentation.
* Fix MSVC build.
* Add caching of data to prepare methods to improve performance. Moved non-register decoding logic out of the .h file and into .cpp file. Move phase_step calculation into register class.
* More notes. Removed keycode from cache. Split 2/4-operator outputs into separate functions. Changed OPN/OPL to use templates for variants. Added channel/operator_offset helpers.
* Fairly substantial overhaul of register interface. Register interface is now stateless and contains family-specific state. Channel and operator accessors are prefixed by ch_/op_ now and require an offset to the specific channel or operator. Moved LFO/noise generation into register class, along with keyon logging.
* Add noise back to OPL/OPLL
* Added early-out for low envelope. Moved waveform logic out into family-specific code. General clean up of ordering. Reduced family base class to minimal needed.
* More aggressively track active channels to help performance.
* Use only summing outputs for consideration of active channels. Centralize the logic of determined 4-op vs 2-op.
* More conservative channel deactivation.
* Add helper to compute the sample rate and use it in all implementations. Remove unneeded chnum/opnum members.
* Fix error in YM2612 that caused crashes.
* Switching parameters and locals to 32-bit values gives a noticeable performance boost. Checkpoint 1.
* More moving to 32-bit values. Checkpoint 2.
* Last of the 32-bit promotions.
* Ensure SSG inverted flag is only tested on systems with SSG support in the innermost loops.
* Make most constants 32-bit as well. Expose some constants via the engine class.
* Expand waveforms ahead of time. Optimize the attenuation lookup a bit.
* If volume is low, don't erase output, just leave it alone. Fixes missing sound in raimais.
* Replace a couple of magic numbers with constants.
* Normalization of FM engine usage across consumers.
* Removed explicit external prepare() call; this logic is now automatically done after writes and periodically. Changed OPL/OPLL to use native formats for block/fnum. Fixed waveform generation. Fixed PM and AM depth on OPL/OPLL.
* Cache multiple value. Clean up output handling a bit.
* Move multiple caching ahead of phase step caching.
* Fully split OPLL from OPL. Remove many hacks now that OPLL registers can have state. Created shared helpers between OPL/OPLL. Removed more aggressive channel disables since it was not rhythm friendly and didn't really buy much.
* Remove old comment
* Remove bad write in OPL mode case. Fixes fsoccer intro. Only call set_reset_status() once per mode call.
* Remove FM output boost in YM2608/2610. Not sure why I did that. Better matches previous volume now.
* Make AM/PM logging less confusing.
* Let's actually set DYNAMIC_OPS properly, eh?
* Improved logging.
* Comment cleanups. Add constant for dynamic phase. Pre-shift sustain level. Srcclean.
* Fix memory regions on YM2608 games.
* Clean up ymadpcm to line up with recent ymfm changes.
* y8950: Reshuffle read/write handlers. Rename them to less confusing names.
* ym2413: Reshuffle read/write handlers. Rename them to less confusing names.
* ym3526/ym3812: Reshuffle read/write handlers. Rename them to less confusing names.
* ymf262: Match read/write details to datasheet and previous tests.
* Use a constexpr function instead of macro for packing operator numbers. Pre-compute OPM LFO waveforms.
* Generate OPL4 engine to support the proper clock divider and new flags. Update YMF278B to use FM timers and status rather than replicating the logic.
* Fix 4-operator enable on new OPL4 instance.
* Fix FM downsampling and adjust balance in YM278B.
* Moved sprite handling to a device.
* Adjusted audio balance on mechatt (channel 0 was overpowering everything).
* Adjusted priority handing on mechatt (planes now correctly rise from underground hanger on stage 3, train carts in later level).
* Split driver in two, general refactoring etc.
* Removed player 2 inputs from mechattu1 - it doesn't respond to them at all.
----------------------------------
Bee-Zerk [Bad A Billy, Smitdogg, The Dumping Union]
unknown VLC multigame [Bad A Billy, Smitdogg, The Dumping Union]
What's missing:
- parameters (like the disk name when it exists)
- possibly a cleanup of ram_open and friends (but not sure of the appropriate direction in which to go)
new WORKING machines
-------
TV Board Games 6-in-1: Silly 6 Pins, Candy Land, Hungry Hungry Hippos, Match 'em, Mixin' Pics, Checkers [Sean Riddle, David Haywood]
TV Board Games 6-in-1: Simon, Battleship, Mouse Trap, Checkers, Link-a-Line, Roll Over [Sean Riddle, David Haywood]
New BSD-licensed implementation of Yamaha OPN and OPM FM audio chips, along with new device drivers for YM2203, YM2608, YM2610, YM2610B, YM2612, YM3438, and YM2151 based upon these.
New working machines
--------------------
Basketball (Mattel) [hap, Sean Riddle]
QuizKid Speller [hap, Sean Riddle]
New working clones
------------------
QuizKid Racer (MM5799 version) [hap, Sean Riddle]
If you want to build 64-bit and 32-bit in the same tree without them
stomping on each other, use SEPARATE_BIN=1 (you already need to do this
for TOOLS=1 anyway).
* Added note explaining that view options saved in machine CFG take
precedence over INI/command line.
* Added prerequisites for building HTML documentation under MSYS2 and
Fedora Linux.
* Explicitly mentioned that Ubuntu modifies GCC to enable "fortify
source" by default in the relevant section.
* Removed obsolete reference to glibstdc++6.
* Re-formated compiling guide source (hard wrap at 80 columns,
typographical quotes, code blocks for sample command lines).
-genie.lua: Show GCC ignored attribute warnings, but don't fail for
them.
- Separate driver from cosmic.cpp
- Add MC6845 CRTC and use it for all video updates
- Configure screen with raw parameters
- Add support for display flipping in cocktail mode
* Separated Acorn IOC and MEMC into devices.
* Emulated 8051-based serial keyboard.
* acorn_machine/memc.cpp: Ensure only one logical page is mapped to a single physical page.
* Fixed RISC OS POST IOC register test.
* aa310.cpp: Added debug code to display RISC OS POST failures.
-machine/archimedes_keyb.cpp: Dumped Acorn Archimedes keyboard microcontroller. [Phil Pemberton]
* formats/hti_tape.cpp: Added support for Manchester encoded DC100 cassettes.
* machine/hp2640_tape.cpp: added emulation of DC100 tape drives.
* machine/hp_dc100_tape.cpp: Added unit name display.
- sa1110: Added rudimentary support for the ICP and DMA blocks. [Ryan Holtz]
- sa1111: Various changes. [Ryan Holtz]
* Hooked up I2S audio DMA support.
* Hooked up IRQ support.
* Hooked up basic GPIO support.
- uda1344: Added initial pass at audio support, based on DMADAC. [Ryan Holtz]
- sed1356: Added support for BitBLT solid-fill command. [Ryan Holtz]
- jornada: Added more keys, touch pen support, and fixed EEPROM access. [Ryan Holtz]
* New machines marked as NOT_WORKING
----------------------------------
AlphaSmart 3000 [TeamEurope, ClawGrip]
* New NOT_WORKING software list additions
---------------------------------------
alphasmart_kapps.xml: Accelerated Reader (1.3, English (UK)), Accelerated Reader (1.2, English (UK)), AlphaQuiz (3.1, English (UK)), AlphaWord Plus (3.4, English (UK)), Beamer (1.01, English (UK)), Calculator (3.02, English (UK)), Control Panel (1.07, English (UK)), Control Panel (1.04, English (UK)), KeyWords (3.6, English (UK)), KeyWords Wireless (4.2, English (UK)), MathFacts in a Flash RP (1.3, English (UK)), MathFacts in a Flash RP (1.1, English (UK)), MathFacts in a Flash (offline) (1.2, English (UK)), MathFacts in a Flash (offline) (1.0, English (UK)), Neo Font - Large (4 lines) (1.0, English (UK)), Neo Font - Medium (5 lines) (1.0, English (UK)), Neo Font - Small (6 lines) (1.0, English (UK)), Neo Font - Very Large (3 lines) (1.0, English (UK)), Neo Font - Extra Large (2 lines) (1.0, English (UK)), Responder (1.2, English (UK)), SpellCheck Large USA (1.03, English (UK)), SpellCheck Large USA (1.02, English (UK)), SpellCheck Small USA (1.03, English (UK)), SpellCheck Small USA (1.02, English (UK)), SpellCheck Spanish (1.0, Dutch), Text2Speech Updater (1.4, English (UK)), Text2Speech Updater (1.3, English (UK)), Thesaurus Large USA (1.1, English (UK)), Thesaurus Large USA (1.0, English (UK)), Thesaurus Small USA (1.1, English (UK)), Thesaurus Small USA (1.0, English (UK)), Wireless File Transfer (1.1, English (UK)), Wireless Updater (2.0, English (UK)), Wireless Updater (1.3, English (UK)) [ClawGrip]
* Fixed a couple of fixed-size buffers in Windows OSD code.
* Marked MAME as aware of long paths in Windows manifest.
* Made a cleaner, thread-safe API for getting volume names.
* Added compile-time option to disable recompiler W^X mode.
* NuBus image device current directory doesn't need to be pinned.
- render.h: Split out layout class declarations into rendlay.h, with some adjustments for the resulting incomplete types (std::reference_wrapper unfortunately does not allow these by C++17 rules)
- rendlay.h: Move old header contents to layout/generic.h
- vecstream.h: Revert changes made in aa29519528. The std::string_view conversion has been made a non-member function (util::buf_to_string_view) and moved to coretmpl.h.
- strformat.h: Remove the using declaration importing util::string_format into the global namespace. It has been moved to emucore.h and a few tool sources; other references have been qualified.
- osdcore.h: Split out file, directory and path classes and methods to a new header (osdfile.h), Doxygenizing the documentation comments.
- Disaggregate many #includes that were including other standard or custom headers. emu.h now includes basically the same things that it did, but other headers have been streamlined; for instance, emucore.h no longer stealth-includes osdcore.h several ways.
* shuffle a few things around re: the BBL ST2302U based handhelds, give bbl338 its own map due to internal ROM etc.
* fake some interrupts on bbl338
* better document test draw command, so that we can verify we're in test mode
----------------------------------
Twin Basket [Museo Del Recreativo]
-st62xx: Various changes. [Ryan Holtz]
* Fixed RETI and LD rr,A opcodes.
* Optimized internal register handling.
* Converted to use logmacro.
* Added initial timer support.
* Started moving Lua class reference to docs. Expecting people to find
the class reference material in the source isn’t going to help make it
approachable. The docs allow longer explanations, better formatting,
and cross reference links.
* Added another layout scripting example to the docs.
-goldnpkr.cpp: Minor clean-up.
* Improved the short names for Witch Card and Witch Game clone sets.
* Made Witch Up & Down artwork clickable.
* Added working Video Klein sets where the parent is a working Video
Klein set to the tiny subtarget.
* Removed history from the header comment - we have version control for
a readon.
* set additions, see main decription
* not working additions, see main description
* more not working bits, see main description
* more not working additions, see main description
* consistency fix
Added methods for enabling and disabling breakpoints and watchpoints,
and made debugger views update when breakpoints/watchpoints are
manipulated from Lua. Made breakpoints and watchpoints objects rather
than tables. (It’s not possible to enable/disable a breakpoint or
watchpoint from the object itself, you have to go through its owners'
debug interface.)
Exposed more device_t members for dealing with child/sibling tags and
devices. Also provided a way to get regions/shares/banks from a device
using relative tags rather than going through the memory manager with
absolute tags.
* ms32.cpp: fix/document memory map
* ms32.cpp: preliminary CRTC hookup
* ms32.cpp: implement sprite direction bit, nuke per-game kludges
* Move note where it belongs (nw)
* ms32.cpp, bnstars.cpp: correct sprite RAM ranges
* tetrisp2.cpp: kill some legacy screen params, need those anyway
* Improve notes (nw)
* ms32.cpp: move CRTC to a new sysctrl device
Also added a bare-bones Python script for generating new device file
defs to src/mame/etc
* gen_python_def.py: address issues, misc improvements
* Kill device_memory_interface in favour of direct address_map, QA always broken flip_screen in flags
* ms32.cpp: reinstated flip screen thru callback
* ms32.cpp: Make mixing to honor cliprects instead of erratic screen.width / height call
* Need a safeguard somehow, and a symbols build doesn't help here lalala
* Fix notes, cannot repro the bug, next
* Move irq assert/clear lines to device, add preliminary prg timer, make 30 Hz irq to behave like one.
(Note: very untested, feedback is appreciated)
* Send a prg timer ack if irq is disabled
* Misc cleanups
* Nuke emu_timers in favour of configure_scanline, preliminary bnstars1 hookup
* No magic number please
* Add sysctrl to tetrisp2.cpp, move rockms stuff into its own state machine, misc
* Kill off 30 Hz refresh rate hack in stepstag/vjdash sub screens
* Flag all those xtals as unknown
* Move has_zoom/has_yuv in ms32_sprite init constructor, fix dummy config bug with stepstag right screen update
* jalcrpt.h doesn't belong to tetrisp2.cpp, errata on sysctrl reset line
* Fix build
* Left-over
* Fix bool comparison to itself (blame JS habits), nuke bnstars1 mahjong
switch case altogether.
* Notes
* Fix bnstars1 crash
* update_color fn doesn't work without a memory_share_creator, documentation
* Translate clamp_to_12bits_neg to a constexpr method
* Fix crashing in main ms32 driver, except it now has very broken priority for seemingly no reason
* Fix nasty spriteram buffer RAM allocation bug
* Make objectram_size to be calculated at init time
* First (naive) pass in moving common interface to a ms32_base_state
Move m_irqreg save state from video_start to machine_start fn;
Fix embarassing palette overflow bug in ms32.cpp;
Add bitswap for bnstars1 mahjong panel;
.bytes() -> .length() for objectram_size;
* bnstars: template video handlers
* bnstars: fix config, split sprite chips/gfxdecode/palette into two, fix palette ranges
* ms32.cpp: implement proper irq acknowledge lines
* Add config setter in sysctrl for inverted vblank/field lines, make tp2ms32 and wpksocv2 happy
* Move f1superb to own state
* MS32 merge sound maps
* Remove TIMER_DEVICE_CALLBACK_MEMBER in favour of emu_timer
The things that were previously called device iterators are not
iterators in the C++ sense of the word. This is confusing for
newcomers. These have been renamed to be device enumerators.
Several Lua methods and properties that previously returned tables now
return lightweight wrappers for the underlying objects. This means
creating them is a lot faster, but you can't modify them, and the
performance characteristics of different operations varies.
The render manager's target list uses 1-based indexing to be more like
idiomatic Lua.
It's now possible to create a device enumerator on any device, and then
get subdevices (or sibling devices) using a relative tag.
Much more render/layout functionality has been exposed to Lua. Layout
scripts now have access to the layout file and can directly set the
state of an item with no bindings, or register callbacks to obtain
state. Some things that were previously methods are now read-only
properties.
Layout files are no longer required to supply a "name". This was
problematic because the same layout file could be loaded for multiple
instances of the same device, and each instance of the layout file
should use the correct inputs (and in the future outputs) for the device
instance it's associated with.
This should also fix video output with MSVC builds by avoiding delegates
that return things that don't fit in a register.
* replaced dgun2869 dump with good one [Sean Riddle]
* also did some work on the dreamGear unit, works now
* an innotab2 driver entry was also added to hold the software list, but the ROM isn't dumped yet
machines promoted to WORKING
------
My Arcade Retro Micro Controller - 220 Built-In Video Games (DGUN-2869) [Zup, Team Europe, Sean Riddle]
new WORKING machines
------
Code Lyoko (25-in-1 handheld) [KaruzoHikari, Team Europe, David Haywood]
My Arcade Pac-Man Pocket Player (DGUNL-3227) [Sean Riddle]
new NOT WORKING machines
------
Palace Arcade [Sean Riddle, Kamaal Brown]
new NOT WORKING Software List entries
------
vtech_innotab_cart.xml : Mickey Mouse Clubhouse (UK) [Team Europe]
-netlist: Give devices the C++17 namespace treatment.
-Tidied up compiler warning options for 3rdparty.
-emu/render.cpp: Exposed a few information view item properties.
I've guessed whether break or [[fallthrough]] is appropriate. In cases
where it looked particularly suspicious, I added a FIXME comment. All
of these changes should be reviewed by someone familiar with the code.
* Removed .mask(), as it’s not reliable in the general case.
* Added asserts to things that assume power-of-two sizes.
* Got rid of virtual qualifier on pointer-to-member operator.
* Made helpers a bit more assertive about logging warnings.
-emu/rendlay.cpp: Use delegates to avoid hot conditional branches.
-docs: Finished off description of object finders and output finders.
new NOT WORKING machines
----------------------
InnoTV [Team Europe]
new NOT WORKING software list entries
----------------------
vtech_innotv_innotabmax_cart.xml:
pawpatrl: Paw Patrol - Pups Save a UFO! (80-274103 UK) [Team Europe]
dcgcr: DC Comics - Gotham City Robots (80-274803 UK) [Team Europe]
finddory: Finding Dory (80-274903 UK) [Team Europe]
liongrd: The Lion Guard (80-275203 UK) [Team Europe]
new WORKING software list entries
----------------------
gameking.xml:
mc_4v07a: 4 in 1 - TrojanLegend (Trojan) + HappyBall + Supermotor (Motor) + Lanneret (Hawk) (512KB cartridge) [Team Europe]
mc_4v16a: 4 in 1 - Manhunt + Bobby + Tantivy + Racing Car (512KB cartridge) [Team Europe]
- Implemented memory mapper for CP/M.
- Serial printer port.
- External RAM is now scrambled.
- SuperCart bankswitching board implemented for Aquaricart.
- Cartridge images of size 4K, 8K, 16K now supported, was previously 16K only.
new WORKING machines
-----
The New York Times Sudoku [David Haywood, Sean Riddle, Kamaal Brown]
Vs Maxx 25-in-1 (VT03 hardware) [David Haywood, Sean Riddle, Kamaal Brown]
6-in-1 Sudoku Plug & Play [David Haywood, Sean Riddle]
Plug 'N' Play 50-in-1 (DGUN-853) [David Haywood, Sean Riddle, Kamaal Brown]
new WORKING clones
-----
Mega Drive Collection Volume 2 (Radica, Arcade Legends) (UK) [David Haywood, Sean Riddle]
Super Sonic Gold (Radica Plug & Play) (UK) [David Haywood, Sean Riddle]
new NOT WORKING machines
-----
Plug 'N' Play 25-in-1 (DGUN-806) [David Haywood, Sean Riddle, Kamaal Brown]
IQuest (US) [David Haywood, Sean Riddle, Kamaal Brown]
- Added MegaDrive side ROM to sarc110 sets, moved to skeleton 'hybrid' driver based on megadriv_rad.cpp and demoted to not working for now as they're meant to boot from the MD side with the VT03 games as bonus items [Sean Riddle, Team Europe]
- Moved reactmd to a skeleton 'hybrid' driver, demoted to not working, it's also meant to boot from the MD side with the SunPlus games as bonus items.
----------------------------------
Emax Digital Sampling Keyboard [DBWBP]
New clones marked as NOT_WORKING
----------------------------------
Emax Plus Digital Sampling Keyboard [DBWBP]
* emax2: Add dump of serial EEPROM [DBWBP]
* New non-working driver: SONY DFS-500 DME Video Mixer (1994)
-And a few new skeleton drivers for some other SONY video equipment:
* U-Matic vo5850PM
* BETACAM-SP UVW-1200
* BETACAM-SP UVW-1600
* BETACAM-SP UVW-1800
* holeland.cpp: Fix typo ("Refreativos Franco" -> "Recreativos Franco")
* New machines marked as NOT_WORKING
----------------------------------
Santa Fe Golden [jordigahan, ClawGrip]
* Move popn9 into kpython.cpp
* viper.cpp: Fix source name
* kpython.cpp: Add notes for popn9 ds2430 data
* kpython.cpp: internal ROM of H8 mcu isn't 32 bit
The project won't move forward if we're not proactive about ensuring
legacy code isn't added. In particular, this PR contained the kind of
code that we need to remove in order to be able to move to proper
per-device outputs and to allow clients to enumerate a system's outputs
on start; and runtime tagmap lookups for I/O ports, which can't be
checked on validation and hence require exercising all code paths to
detect errors (as well as the performance issues).
The pull request had outstanding reviews requesting changes. It's not
acceptable to ignore that and merge it.
This reverts changes from e3dbb0fa43
and fc8330e65c.
* Implement TT5665 emulation
Similar as OKIM6295, but with Support more ROM capacity and phrase spaces, 2 sound outputs
used in bowltry, igs_m036 (for some hardwares with TT5665, ex: cjddzsp)
bowltry.cpp: Fix game name (BOWLING TRY! in both poster and PCB)
* bowltry.cpp: Typo
* Fix endline
* tt5665.cpp: Reduce unnecessary argument
----------------------------------
Photo Play Spirit Xtreme (Spanish)
New clones marked as NOT_WORKING
--------------------------------
Photo Play Spirit Xtreme (update, Spanish)
And a few new skeleton drivers for some other SONY video equipment:
* U-Matic vo5850PM
* BETACAM-SP UVW-1200
* BETACAM-SP UVW-1600
* BETACAM-SP UVW-1800
This fixes the "typing on all keyboards at once" issue. You can now
enable and disable keyboard/keypad inputs per device in the Keyboard
Mode menu. Default is to enable the first device with keyboard inputs,
and all device with keypad inputs but no keyboard inputs. The settings
are saved in the CFG file for the machine.
Typing in natural keyboard mode only ever types on one keyboard at a
time, but now you can control which keyboard it types on, as it will be
the first enabled keyboard.
You can easily try this out with something like:
mame64d zorba -rs232 terminal cpm
-ui/inputmap.cpp: Show device descriptions as well as tag paths.
-mac128.cpp: Fixed mouse axis wrap compensation, cleaned up mouse code,
eliminated static variables for mouse input state.
You could see the issue with wrap detection easily enough just by
running mac128k/mac512k/macplus and tapping the arrow keys to move the
mouse one pixel at a time. As you moved past the point where the axis
count wrapped, it would move one pixel in the opposite direction.
There were two function static variables related to mouse input state,
probably still lurking from when the code was initially made to use a
driver state class. This obviously messes with save states and prevents
multiple instances.
- bus/a2bus/mouse.cpp: Fixed mouse axis wrap compensation.
This device had the same bug with wrap compensation as mac128k.cpp.
-----------------------------------
vsmile_cart: V.Smile Tanz Mit Center (Germany), V.Smile Défi Gym (France), Gimnasio Interactivo V.Smile (Spain)
-vsmile: Added support for the Jammin' Gym Class dance mat. [bmx, Ryan Holtz]
* Split hc55516 core into separate cores/subclasses for hc55516 and hc55532 (new 'digital' implementation based on decap/die tracing) as well as mc3417 and mc3418 (old existing 'analog' implementation left alone) and hooked the hc55516 and mc3417 implementations to the appropriate hardware drivers. This should vastly improve CVSD sound quality in drivers that use the hc55516. [Lord Nightmare, Sean Riddle]
* Made Exidy's mouse trap use a timer to clock the mc3417 and update the state readable by the z80 rather than relying on the mc3417 to accept a clock parameter and update the z80 state via a callback. The timer implementation ensures proper synchronization and prevents missed clock transitions from the z80 side causing noise in the CVSD audio. [Lord Nightmare]
* Added a biquad-based 2nd order filter emulation for an audio stream (to go along with flt_rc 1st order filter emulation) and hooked it to Exidy's mouse trap (mc3417) and williams drivers (hc55516) following the original schematics. For hc55516 this is necessary as the original chip produces a very pronounced audible 16khz 'carrier' in its output audio even on the real chip, and these filters suppress this. This also happens to a lesser extent with the 8khz quieting waveform noise on both mc3417 and hc55516. [Lord Nightmare]
* Made Williams System 11 and s11_bg relative sound mixing more accurate to the original audio flow on the PCB itself. [Lord Nightmare]
* Switched Williams Joust 2 to use the s11_bg common sound device rather than its own implementation. [Lord Nightmare]
Also improved symmetry of disk components, fixed positioning of
components when fitting to the pixel grid, and fixed inherited color
when item has no color specified.
Removed the dotmatrix components from complay.py - there are more
flexible ways to achieve the same thing.
* fmtowns: add a SCSI card slot for the original models
- Add a slot device for the Model 1/2 dedicated SCSI slot
- Add a device for the FMT-121 SCSI Card
- Modify the I/O maps and machine configurations so the slot and the
integrated controller don't overlap
Moved MS DIB parser out of ICO file reader and made it available for
artwork and layout images.
Added more efficient I/O and better error checking for JPEG file loading
(MAME will no longer exit immediately on a bad JPEG file).
Made caller responsible for opening files for loading images, to avoid
decompressing images used in ZIP/7z artwork multiple times.
Added support for JPEG and Windows DIB to picture_image_device.
Added support for SVG image files in external artwork.
Added support for using I/O port value for animation state and masking
animation state values.
Made bounds elements more flexible in layouts.
Reworked headers to reduce dependencies.
Updated layout file format documentation.
* - split off the handhelds that seem to be based around gpl162xx technology into their own file from generalplus_gpl_unknown.cpp to generalplus_gpl162xx_lcdtype.cpp
- identify unkunsp based on new information
* typo
machines promoted to WORKING
----
TV MegaMax active power game system 30-in-1 (MegaMax GPD001SDG) [David Haywood]
* added files for the VT APU type, currently no extra functionality, but will be built upon
* psixptty: Fix for FreeBSD
We need to check for __FreeBSD__ not __FreeBSD_kernel__
* FreeBSD: Use gl includes from pkg-config
FreeBSD doesn't install the includes from 3rdparty software in a default
location so use pkg-config to get the correct path.
* FreeBSD: genieos is named simple bsd
- Hook up periodic and keyboard interrupts
- Implement keyboard and hook it up
- Render according to vram address and add basic cursor support
- Hook up bell sound
* Most OpenGL link issues fixed. Two remain from drawogl.cpp.
This isn't working anyhow.
* "-video accel" now uses WebGL. This allows GL based scaling and
provides a performance improvement.
* Fixed pong and other games by adding another function to the
exception whitelist
* Target now is mame.html. This allows emrun to be used for testing.
mame.js is created as well and thus the current behaviour
unchanged.
This adds support for the mini digital cassette recorder that can be
found inside a P2000t. This implementation is based on documentation
that can be found in https://github.com/p2000t/documentation.
In memory of NPM Jansen, who taught me all the magic of bits and bytes.
Components may have multiple bounds and/or color child elements with
state attributes, allowing for piecewise linear position/size/colour
animation.
Components may have a statemask attribute, allowing for things like
using external images to draw a multi-segment LED/VFD display without
requiring dozens of outputs for the individual lines or thousands of
images for all possible states. (Texture caching still never releases
anything, so MAME can still exceed the maximum number of textures, but
that’s a separate issue.)
Image components with alpha now blend over previously drawn components.
Layouts have been changed to use yes/no for inputraw to match what's
used for flipx/flipy. External layouts with 1/0 will still work, but
complay.py will complain.
* animalc: Pile kludge upon kludge for poorly understood video timing register
* gocowboy, itazuram: Increase frequency of one timer interrupt (and hopper timing in gocowboy)
* kc82, kp69: Modernize state_add syntax
* Removed device and macro header files.
* All of those can be generated automatically so going forward there is
no need for these any longer.
* Introduced the modules concept. Modules are netlists for which
automatic lib entries are generated.
* Going forward you just store them in macro/modules and they will be
automatically registered as device elements.
* You need to do a "make generated" is src/lib/netlist/build
* Some_device.cpp still needs to be added to netlist.lua
* Added documentation on how to add devices to netlist.
* Please refer to adding_devices.md for more information.
These layouts have changes to element stacking order that can't be
avoided without changing the group structure in the layout files. I
think it's harmless, but it's possible it could have had a detrimental
effect on risc2500 (I tested it and didn't see any changes, but I might
not have known what to look for).
-complay.py: Added basic checks for dupicate collection names.
As with other checks of this kind, it doesn't actually instantiate the
layout so it doesn't check things when variable substitution is
involved.
Changed name of element to "collection" and initial visibility attribute
to "visible", and added them to documentation. Also added them to
complay.py.
Fixed issue with collection inside group, and improved initial view
selection behaviour.
Updated some internal layouts to demonstrate new features, including
et3400, irrmaze, ltcasino, mekd3/mekd4, seawolf and vgmplay.
Removed all uses of cpanel, marquee and overlay from internal layouts
and removed them from complay.py to actively discourage use. Also
cleaned up view names in layouts that were using them in place of
spaces, and removed some superfluous name attributes on elements that
won't do anything useful with an output value anyway.
Made vgmplay cycle visualiser modes when visualiser screen is clicked.
Fixed a copy/paste error in bus/rs232/hlemouse.cpp while I'm at it.
* Ported Cirrus Logic CS8900A Crystal LAN MAC emulation from VICE and hooked it up to Apple II card device.
* Adds Ethernet networking support for Apple IIgs.
* new WORKING machines
-----
Double Dance Mania: Supreme / Dance Supreme [Sean Riddle, David Haywood, Kamaal Brown]
Double Dance Mania: Mega 12 [Sean Riddle, David Haywood]
* new NOT WORKING
-----
My Arcade Wireless Video Game Station 200-in-1 (DGUN-2572) [Sean Riddle, David Haywood]
* removed include directory src/lib/netlist from various genie files to
avoid potential issues.
* Code using netlist should use #include "netlist/*".
* Updated includes.
* Fixed standalone makefile depend target to properly deal with relative
paths.
* Added akkaarrh to the ci target.
* Switched Travis CI to Ubuntu Focal.
* Allow ppc64le CI build to fail.
* Report CI status as soon as a job has failed or remaining jobs are allowed to fail.
Sound and other improvements to Sega G-80 games: [Aaron Giles, couriersud]
* Added netlist-based sound to Eliminator, Zektor, Space Fury, and Astro Blaster.
* Split the Sega Universal Sound Board and Speech Boards into their own separate files.
* Improved Universal Sound Board implementation for better accuracy in Star Trek and Tac/Scan.
* Wrote netlist-based backend for Universal Sound Board; currently disabled due to limitations in the system.
* Wrote netlist-based backend for Speech Board; currently disabled pending future sound system changes.
* Implemented wait states and the vector DRAW flag to help improve timing.
SP0250 Improvements: [Aaron Giles]
* Matched clock divider to real chip measurements.
* Fixed behavior when not fed enough data; addresses "gapping" in speech in Sega games.
* Implemented accurate LFR noise generator according to real chip measurements.
* Added pulse-width modulation DAC output mode for future consumption by netlist.
Netlist additions: [Aaron Giles]
* Added compile-time option to record nltool-compatible CSV files.
* Improved CD4020 implementation.
* Fixed CD4053 behavior.
* Added 74139 device.
* Added TL082 device.
8253 PIT changes: [Aaron Giles]
* Added explicit synchronization to all writes.
* Cleaned up some timing calculations to avoid double<->attotime conversions.
* sspeedr: new netlist audio implementation
Netlist-based audio implementation for sspeedr (Super Speed Race, 1979)
derived from Midway audio schematics, and based on that used for
280zzzap (280-ZZZAP) and lagunar (Laguna Racer) in the mw8080bw driver.
The Super Speed Race audio circuits are clearly derived from those games;
the biggest difference is the use of a linear feedback shift register
for noise generation.
* Updated netlist static solvers with recent netlist changes.
IMGUI_DISABLE_OBSOLETE_FUNCTIONS was defined in osd/modules.lua but not
in 3rdparty.lua. As a result, two different variants of struct ImGuiIO
were being defined, causing a C++ One Definition Rule violation
* new NOT WORKING machines
-----
PCP 8728 - 788 in 1 [David Shah]
unknown unSP based handheld [unknown]
* new NOT WORKING machines
------
Virtual Ping Pong (Protocol) [Sean Riddle, David Haywood]
My Arcade Gamer Mini 160-in-1 (DGUN-2953) [Sean Riddle, David Haywood]
* The saver/loadr commands should consider region endianness for portability.
-cpu/gigatron: Capitalisation of hex values was inconsistent, change it to lowercase as that tends to be the MAME standard.
-machine/exorterm.cpp: Fixed inputs magically changing on reset when they shouldn't (there are still others that should be fixed).
-mpu4vid.cpp: Corrected some errors in game descriptions.
-Fixed a couple of editing errors.
new NOT WORKING machines
------------------------
Super PC TV (Epoch) [Preservat!on Quest / Noah Bacon, Hubz]
U-Dance [Sean Riddle, David Haywood]
Moving Music (MM-TV110) [Sean Riddle, David Haywood]
* splitting up xavix a bit, preparation for better device encapsulation
* Move DIPs for 82S16, 82S115, and 2102A devices into nlm_proms
* Moved 7448 DIP to a macro. Replaced 7442 with truthtable and macro.
* Moved 74LS629 DIP into macro.
* Expand truthtable to handle 10 outputs.
* Added netlist simulations for the following games: Space War, Barrier, Star Hawk, Speed Freak, Star Castle, War of the Worlds, Sundance, Tail Gunner, Rip Off, Armor Attack, Warrior, Solar Quest, Boxing Bugs. Removed previous samples-based sound. [Aaron Giles, Couriersud]
* Added built-in minimal artwork for Warrior. [Aaron Giles]
* Changed speaker maximum sample tracking to be based on new compile-time define SPEAKER_TRACK_MAX_SAMPLE instead of MAME_DEBUG. [Aaron Giles]
* Modernized 74164 and 74393 netlist TTL devices. [Aaron Giles]
----------------------------------
El auto de papa [Victor Fernandez (City Game), ClawGrip]
Susanita tiene un raton [Victor Fernandez (City Game), ClawGrip]
- Rewrite memory system, now allows supporting expansion devices and better prepared for contention emulation
- Add expansion interfaces for rear expansion, drive ports and mouse
- Now supports the following rear expansion devices:
* Blue Alpha Sound Sampler
* Dallas Clock
* 1 Mb Interface
* SAMBUS 4-slot Expansion Interface (with clock)
* SID Interface (6581 and 8580 variants)
* S.P.I. SAM Parallel Interface
* Voicebox
- Added support for the Atom HDD interface, used in place of a floppy drive
- Simplified and cleaned up driver
- Temporarily deactivated joystick code, interferes with the keyboard
-tsb12lv01a: Added a skeleton device for the TI TSB12LV01A IEEE 1394 link-layer controller. [Ryan Holtz]
-ibm21s850: Added a skeleton device for the iBM 21S850 IEEE 1394 PHY controller. [Ryan Holtz]
New machines marked as NOT_WORKING
----------------------------------
RS-70 648-in-1 [David Shah]
-mk3b: Added a skeleton driver for the Monkey King 3B SoC. [David Shah]