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]
* palloc.h/pmatrix2d.h: Fix static_assert warnings at the origin.
* Rework hints to broaden their use and fix NC hint.
* 74377: use NC hint
* plists.h: Fix debugging in MSVC
* Include cleanup: Move everything not needed by netlists from
nl_setup.h into core/setup.h
* Fix some clang tidy warnings
* srcclean
Available keyboards are us (M0110, U.S.), gb (M0110B, British), fr
(M0110F, French), pad (M0120F, numeric keypad with passthrough port)
and plus (M0110A, U.S. with integrated numeric keypad). The mac128k,
mac512k and mac512ke drivers default to the numeric keypad with the
U.S. keyboard connected to the passthrough port; the macplus driver
defaults to the U.S. keyboard with integrated numeric keypad.
Note that the numeric keypad may seem strange. Four of the operators
work as cursor arrows if you don't hold shift. There is a comma on one
of the keys, but by the time System 6 was released, Apple had decided
an equals sign was more useful, so that's what it will produces on
newer system versions. The U.S. keyboard with integrated numeric
keypad emulates these aspects of the stand-alone keypad - pressing the
operator keys on the keypad sends fake shit key down/up events, and
using the arrow keys while holding shift will produces operator
characters rather than selecting text.
The ISO layout keyboards (M0110B and M0110F) produce different scan
codes to the ANSI keyboards (M0110 and M0110A) but they don't report a
different identification byte. To use an ISO keyboard, you must open
the Keyboard control panel and change the layout to International (and
change it back to Domestic if you switch back to an ANSI keyboard).
This doesn't actually work at the moment due to issues with 6522 VIA
emulation, but it will work with macplus sys603 if applied on top of
revision 963a2c166d.
-----------------------------------------------------------------------
* moved schick.cpp out of pengo driver, too many small modifications to the hardware make it messy to keep there (nw)
also promoted some sunplus games I've decided work well enough to promote (nw)
* (nw)
* (nw)
Kidniki now achieves up to 910% when run with static solvers and with
nltool. That is significant better than the 860% we have seen
previously.
This increase is driven by using a global memory pool in the solver
code.
In addition the following refactoring and code maintenance work is
included. Please excuse the large commit, some of this took interfered
with other work and the detail development steps were ugly.
- gsl support: This commit adds pgsl.h which implements a very limited
number of the functionality of the gsl header described in the c++ core
guidelines.
- clang-tidy fixes
- A significant refactoring of palloc.h. Aligned hints were removed,
they added complexity without a significant performance gain. Vector
operations should better be done on special spans/views.
The code has been tested on linux with g++-7, g++-9, clang-11.
On Windows mingw-10 and VS2019, OSX clang-11.
- Added emulation of the SPG290 CDServo
- Added joypad inputs
- Added RFID card support
- Split SPG290 PPU, Timers and I2C into separate devices
- Added a softlist for the RFID cards
* Support Colecovision Megacart.
Assume that a rom file that is more than 32K in size is a megacart
and that it should be bankswitched using Megacart protocol.
* Put megacart functionality in its own cartridge type.
----------------------------------
Novation BassStation Rack Analogue Synthesizer Module [DBWBP]
Novation Drum Station [DBWBP]
Novation Super Bass Station [DBWBP]
Add disassembler and skeleton CPU device for Panasonic MN1880 architecture [AJR]
Factory elements can now pass additional parameters to device
constructors. This makes the design of interface objects like analog
callbacks easier.
The change also allowed to remove some "deep" calls into the core from
the MAME interface in netlist.h
* mw8080bw: update 280zzzap audio API in preparation for netlist audio
This is only API changes, following the pattern used by cuavas within the
past year to update other games in mw8080bw.
* mw8080bw: new netlist audio implementation for 280zzzap
New netlist-based audio implementation for 280zzzap (280-ZZZAP, 1976),
derived from Midway game logic board schematic. The sound generally
matches that heard in videos of the machine, though the real machine
seems to have more bass and less treble. This may be a cabinet effect
or something else, such as a difference in component values.
Due to the number of complex components being emulated and the nature
of the circuits, this netlist adds a lot of overhead, but it's still
fast enough to run at greater than real speed on modern hardware.
With minor changes, this implementation should also support lagunar
(Laguna Racer, 1977); with somewhat more substantial changes, it
would also support sspeedr (Super Speed Race, 1979). Both of these
games use sound circuits based on those for 280-ZZZAP.
plists.h was splitted into plists.h, pmulti_threading.h and
ptimed_queue.h. In addition removed plists.h from a number of files it
wasn't used in.
Certain minor adjustment needed to be made for cuda toolkit 10.1 and
10.2.
- Memory references in expressions no longer default to the console's visible CPU if no device name was specified, except when entered through the console itself. Expressions in view windows now use the context of the currently selected device instead.
- The pcatmem debug command and similar qt mouseover function now produce an error message if the initial address translation fails.
Related internal changes (nw)
- The debugger_cpu class no longer interprets memory accesses. The existing routines have been moved into symbol_table (which used to invoke them as callbacks), and reimplemented in most other places. Thecode duplication is a bit messy, but could be potentially improved in the future with new utility classes.
- The cheat engine no longer needs to hook into the debugger_cpu class or instantiate a dummy instance of it.
- The inclusion of debug/express.h within emu.h has been undone. Some debugging structures now need unique_ptr to wrap the resulting incomplete classes; hopefully the performance impact of this is negligible. Another direct consequence is that the breakpoint, watchpoint and registerpoint classes are no longer inside device_debug and have their own source file.
- The breakpoint list is now a std::multimap, using the addresses as keys to hopefully expedite lookup.
- The visible CPU pointer has been removed from the debugger_cpu class, being now considered a property of the console instead.
- Many minor bits of code have been simplified.
The last(?) two changes are:
- Add a template parameter to everything (theoretically the address
space width, in practice a level derived from it to keep as much
compatibility between widths as possible) so that the shift size
becomes a constant.
- Change the syntax of declaring and initializing the caches and
specifics so that they're embedded in the owner device. Solves
lifetime issues and also removes one indirection (looking up the base
dispatch pointer through the cache/specific pointer).
* Demoted Quizard and Quizard 2 sets to non-working.
* Started hooking up the Quizard MCU.
* Renamed CDI_SLAVE to CDI_SLAVE_HLE in prep for an LLE device.
* Added more comprehensive notes to the driver.
* Removed NO_DUMP cdic.bin as the CDIC is apparently not an MCU.
* Copied SERVO and SLAVE MCUs into cdimono1 set from cdi910 set and marked with BAD_DUMP.
For reasons unknown to me compile optimizations do not behave for
template code. If the implementation is in separate compile units, the
code compiles and performs.
This needs more attention since for certain compilers there is a
considerable performance degregation. It looks like this is only
triggered if too many variants are declared in one cpp file and the
compiler stops inlining.
Thanks to Aaron Giles who made me think about a different approach.
This is a rewrite from scratch for rom devices. It uses a generic
template to implement rom devices which is used together with a
description struct to define a rom device. This leads to highly
efficient code since all information is available at compile time.
This is also a step forward to support tristate outputs. All rom devices
covered by this approach have tristate or open collector outputs and
thus all code changes to support tristate outputs can now be made
consistently in one file.
* move i/o handlers to specific maps, untangle register array usage, to be completed
* Nuke duplicate I/O accesses, rename to iobus_r/w, make go_w to be an actual line
* Fix addqmod & subqmod modulo mask for DSP
* Refactor TOM to host CPU function, and fix GPU irq lv 3 when a GPU object is encountered. Fixes mutntpng and atarikrt booting
* Fix Jaguar irq line to 2, trusted
* Start reworking the blitter
* Relicensed to BSD
Code cleanup to better separate the following stages:
- parsing
- setup
- run
In addition preliminary native tristate support was added. Not yet
production ready, please don't use it.