API impact:
- install_ram/rom/writeonly now requires a non-null pointer. If you want
automatically managed ram, add it to a memory map, not in machine_start
- install_*_bank now requires a memory_bank *, not a string
- one can create memory banks outside of memory maps with memory_bank_creator
- one can create memory shares outside of memory maps with memory_share_creator
Memory maps impact:
- ram ranges with overlapping addresses are not shared anymore. Use .share()
- ram ranges touching each other are not merged anymore. Stay in your range
Extra note:
- there is no need to create a bank just to dynamically map some memory/rom.
Just use install_rom/ram/writeonly
- Eliminate RAM regions
- Eliminate device_timer and anonymous timer usage
- Add bad dump flags for hardware-inaccurate ROM dumps
- Add NO_DUMP entries for a few minor missing parts
- Remove a lot of dead code
I adjusted the alignment based on where the shots hit the buildings. It
doesn't seem possible to not have the tanks partly overlap the buildings
but still have the hitboxes inset into the buildings by the right amount
on all sides.
- 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.
------------------
Forgotten Worlds (Japan) [Irongiant, Dumping Union]
Ryu Jin (Japan, ET910000B PCB) [Battlesmurf]
* Extremely early / rare version of Forgotten Worlds for the Japanese market, before the name change to Lost Worlds. Serial number indicates it's #22!
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.
* hp98265a: initialize members
* hp98543: initialize members
* hp98544: initialize members
* hp98550: initialize members
* hp98620: initialize members
* hp98644: initialize members
* hp_dio: initialize members
* human_interface: initialize members
* hlebase: initialize members
* hlemouse: initialize members
* hp_hil: initialize members
* 8291a: initialize members
* ins8250: initialize members
* tms9914: initialize members
* catseye: initialize members
Added a missing command only used in jetwave's "How to Control" screen. This screen would show some model of the jetski in turning the handlebars and leaning on the jetski for controls. This fixes an issue where not only the model(s) wouldn't be present but the game would slow down complaining about an unknown polygon command.
msm5232, a tone generator chip which is used by some early TAITO and Alpha Denshi arcade PCBs, has 'arm' flag that alters behavoiur of envelope generation.
Basically, the 'arm' flag turns Attack-Decay-Release envelope generation to simpler ON/OFF states.
If the 'arm' flag set, the transition from Attack to Decay doesn't occur unless explicitly indicated.
On current implement, when this 'arm' flag is set on a channel which is on a Decay state, the Decay state continues.
It seems that, the state should be turned into a Attack state in this situation.
--------------------
Must Shoot TV (prototype) [Ryan Holtz, Brian Troha, Aaron Giles, Al Kossow, Gaming Alexandria, ClawGrip, anonymous]
* itech32.cpp: Added additional safety to prevent out-of-bounds GROM access, at the cost of some cycles.
* vsnes.cpp: Improvements to Vs SMB bootleg sets based on kevtris' schematics/video.
* video/ppu2c0x.cpp: Add 2C04 PPU clone device and use the real palette ROMs for the bootlegs.
* video/ppu2c0x.cpp: Implement most PPU behavior differences for VS System bootlegs.
* video/ppu2c0x.cpp: add the 2c04 clone's delayed sprite rendering.
----------------------------------
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
new WORKING machines
-----
25 Video Games - All in 1 Video System (Senario) [David Haywood, Sean Riddle, Kev (FBN), Kamaal Brown]
Plug 'N' Play 30-in-1 (DGUN-851) [David Haywood, Sean Riddle, Kev (FBN), Kamaal Brown]
new WORKING clones
-----
Mega Drive Collection Volume 1 (Radica, Arcade Legends) (Europe) [Sean Riddle, ClawGrip]
-Plug & Play metadata improvements [David Haywood]
* holeland.cpp: Fix typo ("Refreativos Franco" -> "Recreativos Franco")
* New machines marked as NOT_WORKING
----------------------------------
Santa Fe Golden [jordigahan, ClawGrip]
dac: Various improvements:
- Default to output range -1..1, by far the most common case
- Detect if inputs are specified and use those for output range
leland: Update to leverage new DAC capabilities.
* dac/volt_reg: improve performance
* modify dac to accept streams of any input rate to avoid resampling
* modify dac to assume input voltage streams are constant by only
grabbing the first input sample
* modify volt_reg to output at the minimum sample rate
* dac: Restructure the DAC sound devices a bit
* centralize implementation based on lookup tables
* add set_constant_vref() method for the common case where references
are constant, thus avoiding the need for voltage regulator devices
* convert williams.cpp to using this new method as a test
* 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 other function-like macros will invoke type decay or promotion
depending on what the argument expressions evaluate to, so chaning
them to constepr functions could change semantics.
* Create GitHub Action to validate hash XML files
This GitHub Action will run on any commit or pull request that changes a file in the "hash" directory. It will do a simple xmllint run for the HSI files and will check the softwarelist XML files against their DTD.
* Delete c64_flop_clcracked.xml
No content, can be recreated if needed.
* Remove references to removed softwarelist c64_flop_clcracked.xml
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.
* Updated documentation as well as added some code from hornet.cpp's driver to correct the the whole "dual screen" situation.
* Added the second K001604. Since nwk-tr does use two CG boards, there should be a second K001604 as well. Also had to add additional read/write parameters to support using two K001604s for now.
* Updated network board documentation to better explain the chip at 2G, XICOR X76F041, and functions. Added NO_DUMP placeholders to the games that use this specific network board with the added eeprom.
* Renamed 'Thrill Drive (EAA) (thrilldae)' to 'Thrill Drive (EAB) (thrilldbe)' because the program rom used for this set uses the 'B' version. Also removed the "BAD_DUMP" flag from the timekeeper because the network board and timekeeper region data do not match. I would add a parameter for thrilldbe to change the network region data to "EA" but I don't know if it's even worth changing the simulation (imo better to hook the correct device like with ksys573).
* Demoted thrilld and thrilldb to NOT_WORKING. The two never really worked to begin with and have gotten worse in later versions (freezes and crashes more often). I did test versions of mame with and without my edits and both act the same.
* Added voodoo and screen parameter changes by @cam900 from hornet.cpp. So far so good for this driver too.
* Added additional CG board roms for racingj and racingj2/j. According to racingj2's kit manual, it prompts the operator to change roms from the master and slave CG boards thus giving proof of the two using extra CG board roms. thrilld's kit manual doesn't prompt the operator to replace the slave CG board roms.
* Made some attempts to fix the handbrake with no avail. Adding another pedal input port may have to be necessary.
* 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
- Ignore keys that come in immediately on startup (fixes some programs not showing intro screens)
- Fix Apple IIc and IIc Plus having Video 7 RGB modes, which isn't possible on hardware
- Further tuned floating bus read timing; Crazy Cycles II now works, and Cycle Counting Megademo is much better
- Cleaned up some unused/unnecessary variables in the text drawing
- Added 50 Hz support for apple2euk, apple2ees, apple2eeuk, and apple2eefr, including floating-bus sync support
- Fixed //c and //c Plus mouse wrap issue found by Vas Crabb
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.
- Adjusted horizontal position for "vapor lock" reads to better match MAME video timing
- Fixed most 8-bit A2 rendering to respect the cliprect
- The French Touch "Crazy Cycles" mode-splitting demo now renders correctly
- This also solves glitching in some Total Replay games like Gumball
-----------------------------------
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]