Commit Graph

78360 Commits

Author SHA1 Message Date
arbee
195d45d335 a2mockingboard.cpp: fix two off-by-ones on the Phasor address decoding [TomCh] 2021-04-03 07:38:33 -04:00
Aaron Giles
46d17663b3 ymfm: Fix OPL3 output channels and waveform mask in compatibility mode. 2021-04-02 21:06:59 -07:00
Aaron Giles
ee1e4f9683 More friendly behavior when OPLL writes are performed out of range. 2021-04-02 15:04:39 -07:00
Aaron Giles
52f0acb25c
New BSD-licensed OPL/OPLL (YM3526, YM3812, YM2413, Y8950, YMF262, etc) cores (#7869)
* 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.
2021-04-02 19:58:04 +02:00
hap
1cc65ff1c9 rf5c68: update stream before writing to wave ram 2021-04-02 17:03:54 +02:00
Ivan Vangelista
7065e73b8d New clones marked as NOT_WORKING
--------------------------------
Sonic Blast Man 2 Special Turbo (SNES bootleg, set 2) [ShouTime]
2021-04-02 14:36:35 +02:00
Patrick Mackinlay
33ac8ffd54 r4000: simplify branch state 2021-04-02 13:53:28 +07:00
Robbbert
41a0233715 meritum: upgraded quickload to latest; added speaker. 2021-04-02 17:17:31 +11:00
Robbbert
3a0e9abc43 trs80: validate the cas file 2021-04-02 16:25:34 +11:00
arbee
68b16c6f51 a2mockingboard.cpp: Updates [R. Belmont, TomCh]
- Mirror the VIAs correctly across the whole CnXX range
- Actually write the inflection bits for the SC-01
2021-04-01 22:16:08 -04:00
hap
289efafb39 multipcm: retrigger after writing to sample register if key is on (YMF278 also does this) [dink, hap] 2021-04-01 22:23:29 +02:00
hap
0d897d07e6 namcos2/c355 sprites: color 0xfe is for a palette offset instead of shadow [dink, hap] 2021-04-01 21:01:36 +02:00
hap
91fdb8adca battlane: fix a problem with double height sprites at last boss [dink] 2021-04-01 17:11:37 +02:00
Robbbert
900f39f55a gameboy: Fixed crash with momocol2 and varpack 2021-04-02 01:08:04 +11:00
etabeta
8e72b65075 plugins/cheat: removed spurious print 2021-04-01 15:56:38 +02:00
Priuli
bcfd7c64b0 plugins/cheat: fix XML cheat loading when emulation is launched with an image option specified (e.g. mame nes -cart smb) or by loading directly one part of the software (e.g. mame a600 amigaocs_flop:lslarry2:flop1) 2021-04-01 15:33:39 +02:00
Robbbert
1bc0dcbf46 Added some swlist warnings for Tafoid's tests. 2021-04-02 00:19:11 +11:00
987123879113
3e33bd1bcb
Changed audio_latency valid range from 1-5 to 0-5 (#7916) 2021-04-01 23:12:10 +11:00
Dirk Best
499ddb2af8
Use llvm-ar for GitHub Actions Windows CI build (#7917) 2021-04-01 23:10:50 +11:00
Patrick Mackinlay
1dbaaae999 r4000: physical address space is 36 bits 2021-04-01 18:06:31 +07:00
Robbbert
b44de86569 Moved lnw80 to its own driver. 2021-04-01 20:34:23 +11:00
Patrick Mackinlay
efa3521d7a r4000: timing improvements
* external clock is doubled internally
* consume additional cycles for integer multiply/divide
* streamline memory access
2021-04-01 11:06:14 +07:00
cracyc
ee62f40e1b vis: partially try to fix MT7912 2021-03-31 21:32:53 -05:00
arbee
065809bae7 apple2e: turn off INTCXROM on Control-Reset (GitHub issue #7909) [R. Belmont] 2021-03-31 21:07:12 -04:00
Aaron Giles
e16d3e98d9 Disable sleep when using -bench. 2021-03-31 17:08:28 -07:00
AJR
9f1e99117a asma2k: Correct size of undumped spellcheck ROM; add PCB notes [AJR, Lord Nightmare] 2021-03-31 20:01:00 -04:00
AJR
ac78893d76 mac128.cpp: Remove bogus SCSI XTAL
* mac.cpp: Remove now-unnecessary #include
2021-03-31 17:31:03 -04:00
cam900
764fee75bc
seibuspi.cpp: Fix document based from hardware manual (#7901)
* seibuspi.cpp: Fix document

in SXX2D, JP121 is for mono/stereo sound output select, there's no jumper for cartridge change/flashing.
reference: japanese SPI motherboard manual from http://ikotsu.blogspot.com/2010/01/raiden-fighter-jet-seibu-spi-jet.html

* seibuspi.cpp: Fix notes related to hardware
2021-03-31 15:19:55 -04:00
James Wallace
362375ad05 Games promoted to working
------------------------------
Give Us A Break Club (JPM) (IMPACT) (GB 8 GB12) (set 1)
Impulse (JPM) (IMPACT) (IP 5 C13) (set 1)

Clones promoted to working
----------------------------
Give Us A Break Club (JPM) (IMPACT) (GB 8 GB12P) (set 2, Protocol)
Impulse (JPM) (IMPACT) (IP 6 C14) (set 2)
Impulse (JPM) (IMPACT) (IP 6 AC14) (set 3)
Impulse (JPM) (IMPACT) (IP 7 C15) (set 4)
Impulse (JPM) (IMPACT) (IP 7 AC13) (set 5)
Impulse (JPM) (IMPACT) (IP 7P C15) (set 6)
Impulse (JPM) (IMPACT) (IP 7P C15) (set 7, Whitbread)
2021-03-31 19:58:51 +01:00
Robbbert
2aec0da4fc trs80m3: removed non-TRS80 formats. 2021-04-01 04:51:45 +11:00
Robbbert
1343e5e7d3 trs80: used the correct FDC. Removed non-TRS80 formats. 2021-04-01 04:43:38 +11:00
Ivan Vangelista
ad07c7d0c1 magreel.cpp: redumped ic24 [Team Europe] 2021-03-31 18:33:05 +02:00
Olivier Galibert
593ce66eb2 floppy: What wd177x_dsk has become should be taken out and shot 2021-03-31 17:23:45 +02:00
Olivier Galibert
69bde90a2f wd,upd: filter unsupported image formats 2021-03-31 16:49:29 +02:00
Olivier Galibert
75cfa07377 jv1-dsk: SSDD can not do 80 tracks 2021-03-31 16:28:17 +02:00
Olivier Galibert
905e758b93 imd: Don't crash when trying to put a 80-track image in a 40-track drive 2021-03-31 16:08:57 +02:00
Robbbert
198d896c12 trs80: updated notes. 2021-03-31 22:53:36 +11:00
Robbbert
b0f2302307 trs80m3: fallout from IMD change. 2021-03-31 22:41:24 +11:00
Vas Crabb
71b8df0417 MAME 0.230
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEE0DYtsBhE4EM627+6wXSxAYxAcQ4FAmBjCXUACgkQwXSxAYxA
 cQ6PAhAAuSgrMmBQiTdMrBvCDcB080E9yFNOkFpMgcH/RD9Md9hC5lN3sHVlGvex
 1hfA2hz1P2E3Icl2hI6oqhvXh192oo+AOj3EJ6bQdtn8c4UHhpFxNZ2tqbO0gcz5
 uuoThQx4Y29tAcYsurFcL7n782tcDym+QvTRl+UDiRWEMLXOTcd0IgKwYTm8scRL
 8c02Ks07cXJgawjDkyZYYQIvUjodppwTwdIW0hL3vvVNjFptG9ailtfTibLdfZRC
 QBTKLLewQxLDGROzfkY3lQwN+9TPdkSiITm63tBr9d+mCBT4Ib64MafplNGuxOVC
 vXBdjEsJyz2WDn490FXw3ZevOJI/BZCKuYZaW54owNbqgvLDXvc7AJMeEpqBGH8h
 soyJOx8NWY6FSB3yIgU6EROa+4IT3ZLdth3Q742ZNIBPlG1zIOvatredHnAQNis/
 VQM6y0jdbyIiMTRRfn3WLDp/CI0U2XO65d8+S9f86+5I8kbxTrJGSxx8YfM9c3up
 xuUbCBIU/egYBpYOaQzxxg9vFf+kWs50qdH2hMIxQjFM1IpUzWokiukUjCjRiVPp
 a4tRW3bdDmL76vkcQ/S4gQrSeDCLMBcPIZ5ffkBuaEar+C01/GOOKzn3UJWEkkmB
 dnw8HRLvJviPyTN2IiFWSZT+wYdgM0d3G3YofLsH6JTsaSF3xq8=
 =WmoT
 -----END PGP SIGNATURE-----

Merge tag 'mame0230' into mainline-master

MAME 0.230
2021-03-31 12:05:54 +11:00
MetalliC
67f55bbc0c new NOT_WORKING clone
---------------------
Sega Golf Club Network Pro Tour 2005 (Rev B) (GDX-0010B) [MajorPBX]
2021-03-31 00:04:32 +03:00
AJR
c73aa3aa0d raiden2.cpp: Improve tilemap performance by not marking tiles dirty unless data changes 2021-03-30 16:30:02 -04:00
Vas Crabb
9cfe9342a7 Miscellaneous formatting adjustments 2021-03-31 01:56:32 +11:00
987123879113
2caa566f22
util/cdrom.cpp: Return index 1/start of track data instead of index 0/start of pregap data in generated TOC. (#7878)
* Add a pre-calculated field for data from current logofs to end of track.
* Removed pregap adjustment from FM Towns code.
* Added pregap adjustment so track ends when audio data ends in PSX CD player.
* Fixed pce_cd load error.
2021-03-31 01:49:28 +11:00
David Haywood
03167581fc
new NOT WORKING machines (#7898)
-------
Dancing Expert [Sean Riddle]
2021-03-31 01:43:25 +11:00
David Haywood
196a342ae4
Refactoring and bug fixes for bbusters and mechatt: (#7902)
* 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.
2021-03-31 00:13:02 +11:00
tim lindner
2526d94c1b
bus/coco: Renamed Games Master cartdige slot option to gmc to match the Dragon drivers. (#7905) 2021-03-31 00:02:49 +11:00
Olivier Galibert
2180679a35 d64: update following sector extraction evolution 2021-03-30 14:24:14 +02:00
cam900
ce764cb094
toaplan2.cpp: Fix bbakraid music timing, Add hardware notes (#7896) 2021-03-30 14:19:28 +02:00
hap
2247ffefa2 makefile: added param to override ar 2021-03-30 13:58:16 +02:00
Vas Crabb
943c06cba0 version bump 2021-03-30 22:19:45 +11:00