Commit Graph

1984 Commits

Author SHA1 Message Date
Vas Crabb
38082ccbee
Overdue internal UI enhancements (#8674)
* frontend: Added support for message context to localisations.
* frontend: Added string_view versions of the message lookup functions.
* frontend: Added a few more folder options to the internal UI.
* emu/softlist.cpp: Use more appropriate containers.
* Switched to Python 3 by default - this will become a requirement.
* Updated msgfmt.py for message context support.
* frontend: Show all software item info in the internal UI.
* frontend: Search alternate titles in software selection menu.
* 3rdparty/utf8proc: Updated to v2.6.1 (has several fixes).
* frontend: Added software filters for common info fields.
* frontend: Allow UI manager to hold onto persistent session data.
* frontend: Cache software lists for eight machines.
* frontend: Added support for loading localised system names.
* frontend: Add UI for selecting localised system names.
2021-10-09 12:16:17 +11:00
Vas Crabb
aeb9eae874
util: Further API cleanups: (#8661)
* Turned `core_file` into an implementation of `random_read_write`.
* Turned PNG errors into a standard error category.
* Added a helper for generating what look like derived classes on-the-fly.
2021-10-05 03:34:45 +11:00
AJR
a271303a9f Add Z80-derived stub devices for eZ80 and R800 CPUs 2021-10-03 13:56:49 -04:00
Vas Crabb
299265cc52 bus/rs232: Added a configurable patch box device, and various cleanups.
Added comments with V.24 interchange circuit numbers and names to
rs232.h to make the meanings of the abbreviated signal names clearer.

Moved a few slot card classes out of headers and into anonymous
namespaces to reduce compile depedencies and exported symbols.

Transliterated a Korean NES game title.
2021-10-03 03:52:22 +11:00
Julian Sikorski
0eeb918991
Update bgfx, bx and bimg to latest upstream (fixes issue #8057) (#8645) 2021-10-02 12:21:12 -04:00
0kmg
cdf1780074
bus/nes: Added support for several Shenzhen Jncota RPGs. (#8500)
* Also corrected metadata for lots of items.

Software list items promoted to working (nes.xml)
---------------------------------------
Jīng Kē Xīnzhuàn (China, Shenzhen Jncota)
Shènghuǒ Lièzhuàn (China)
Xiákè Chuánqí (China)
Zhànguó Fēngyún (China)
2021-09-21 04:31:28 +10:00
0kmg
2976726f82 bus/nes: Added support for Super Russian Roulette.
New working software list additions (nes.xml)
-----------------------------------
Super Russian Roulette [re4mat]
2021-09-18 10:19:26 -08:00
ajrhacker
bebc2c4917
Merge pull request #8559 from 0kmg/nes-mappers-297,374
bus/nes: Added support for MMC1-based multicarts.
2021-09-11 19:18:01 -04:00
AJR
0da505b43e Formats-related refactoring
- Remove opresolv.h from emu.h and some other base headers
- Split legacy floppy image class into a separate file
- Clean up a lot of #includes in src/lib and src/tools/imgtool
2021-09-11 16:09:27 -04:00
0kmg
968fb7f491 bus/nes: Added support for MMC1-based multicarts.
- Modified MMC1 base class (SxROM) to have outer bank base/mask to make it extensible by multicarts.
- Implemented two boards, reset-based SxROM and a 2-in-1 by TXC, as proof of concept.
- Marked Operation Wolf games as partially supported due to zapper inputs not working.
- Marked Space Shadow as not supported since it requires the extra buttons on the Bandai Hyper Shot gun.

New working software list additions (nes.xml)
-----------------------------------
1997 Super HiK 4 in 1 (JY-021) [MLX]
1995 Super HiK 4 in 1 (JY-022) [NewRisingSun, taizou]
1996 Super HiK 4 in 1 (JY-051) [NewRisingSun, taizou]
2 in 1 Uzi Lightgun [CaH4e3]
2021-09-09 17:04:22 -08:00
smf-
2811cda9c6 fixed vs2019, broken by clang fix. 2021-09-09 12:55:56 +01:00
arbee
ea8102906e apple2: support for the AppleIISD card [R. Belmont, Florian Reitz] 2021-09-07 19:51:34 -04:00
npwoods
5e02ff231e
Decoupled RPK logic from TI-99 cartridge code. (#7880)
Decoupled support for RPK (RomPacK cartridge images) from TI-99 code, enabling the logic to be leveraged by other drivers.
2021-09-06 03:48:30 +10:00
smf-
32267e4852 fixes for building with clang 12.0.1 on windows 2021-09-04 20:09:51 +01:00
AJR
fb6b0f0cc4 unidasm: Add disassembler for DEC VAX architecture 2021-09-03 13:27:48 -04:00
AJR
ccaa00b3ed Move endianness type into lib/util header 2021-08-31 12:30:11 -04:00
ajrhacker
fc97bea7b7
Merge pull request #8495 from 0kmg/nes-mappers-114,115,182
bus/nes: Simplified a few related boards by Kasheng and Hosenkan.
2021-08-26 20:34:01 -04:00
0kmg
b1dcb15ba2 bus/nes: Simplified a few related boards by Kasheng and Hosenkan.
- Reduced redundant code by making "kasing" device parent class for sglionk/sgboog. The latter are identical save for the extended register/address scrambling.
- Eliminated hosenkan device altogether (mapper 182). It is identical to sglionk (mapper 114).
2021-08-26 15:21:48 -08:00
Angelo Salese
0e4ba6d49a
Major state refactoring of pc98 based HW (#8475)
First major step in splitting up machine classes in NEC PC98 family tree:
* Splits up derivative HWs into own state machine and files (pc98ha.cpp, pc9821.cpp and pc9801_epson.cpp);
* Adds a preliminary uPD4991a parallel RTC, used by pc98ha;
* Fix -26, -86, -118 C-bus sound board dips or jumper settings;
* Fix default sound card for pc9821 (-86) and pc9821ce2 / pc9821cx3 (-118);
* Adds preliminary MAD Factory Otomichan-kai C-bus sound board;
* Adds boilerplate code for C-bus installing board I/Os, avoiding the possible inconvenience of board(s) getting silently unmapped by other installed boards;
* Major refactoring of HW dip switches readouts, using required_ioports instead of scattering things around in PPI hooks;
* Extensive QA rundown, including research on missing features and undumped machines.
 
pc9801.cpp: Don't passthrough mouse irq frequency when cycle setting is setup too, fixes jastrike mouse input on options menu.
pc9801.cpp: Fix kanji RAM window LR readback, makes telenetm to properly display 8x16 chars on RS and derivative machines.
pc8801.cpp: fixed OPNA RAM readback, allowing SWs to playback ADPCMs properly.

New machines marked as NOT_WORKING
----------------------------------
PC-98LT [anonymous]
PC-98HA "Handy98" [anonymous]
PC-9821Nr15 (98NOTE Lavie) [flyingharuka]
PC-9821Nr166 (98NOTE Lavie) [flyingharuka]
PC-9821Nw150 (98NOTE Lavie) [flyingharuka]
PC-9821Ra266 (98MATE R) [flyingharuka]
PC-9821Cx3 (98MULTi CanBe) [flyingharuka]
PC-9801VX [qazmko1029]
PC-9801US [CoolMod]
2021-08-24 10:22:03 +02:00
Vas Crabb
e8bbea1fc6
formats, osd, util: Started refactoring file I/O stuff. (#8456)
Added more modern generic I/O interfaces with implementation backed by stdio, osd_file and core_file, replacing io_generic.  Also replaced core_file's build-in zlib compression with a filter.

unzip.cpp, un7z.cpp: Added option to supply abstract I/O interface rather than filename.

Converted osd_file, core_file, archive_file, chd_file and device_image_interface to use std::error_condition rather than their own error enums.

Allow mounting TI-99 RPK from inside archives.
2021-08-22 09:06:15 +10:00
Nigel Barnes
8db344fcc5 bus/electron: Added a homebrew 68000 second processor. 2021-08-21 14:54:12 +01:00
Miodrag Milanović
36218bcdde
Merge pull request #8419 from mamedev/new_bgfx
Update bx, bimg and bgfx
2021-08-12 13:07:51 +02:00
arbee
7e5ea52797 apple2: Support for the Stellation Q-68 and Q-68 Plus 68008 coprocessor cards. [Rob Justice, R. Belmont] 2021-08-10 22:26:52 -04:00
Miodrag Milanovic
ba1e6dff41 Compile bgfx 2021-08-10 20:54:12 +02:00
MooglyGuy
7fe8f9f74c
Assorted N64 fixes (#8415)
* -rdp: Fixed incorrect channel swapping on 32-bit resampled framebuffers. [Ryan Holtz]
* -rsp: Fixed LWV and VMOV behavior. Added reserved instructions V056, V057, V073, and VNULL. [Ryan Holtz, krom]
* -rdp: Temporarily adjusted framebuffer resampling to not exceed screen bounds in some games. [Ryan Holtz]
* -n64: Fixed SP DMA behavior based on hardware tests. [Ryan Holtz]
* -rsp: Removed unused DRC and SIMD support. General code cleanup. [Ryan Holtz]
* -n64: Pass K4 and K5 factors to threaded drawing code. Fixes black geometry in Conker's Bad Fur Day. [Ryan Holtz]
* -aleck64: Fixed compile issue with previous commits. [Ryan Holtz]
2021-08-09 21:06:08 -04:00
Dirk Best
1e7d83cc4b apxen: Checkpoint, get something on screen
- Implement video slot and mono graphics video card
- Hook up CIO, SIO, RTC, PIT, SN76489
- Add daisy chain for Z80 devices and hook it up to the PIC
- Add system control ports
2021-08-04 19:30:45 +02:00
Miodrag Milanovic
da7ff625de little hack to make it build fine with current build system 2021-08-02 13:59:21 +02:00
Miodrag Milanovic
4790deb5b7 Genearate seaparate dasm header for TMS57002 2021-08-02 10:51:14 +02:00
AJR
918da8411d maciifx: Add preliminary PIC (Peripheral Interface Controller) devices and OSS interrupt control
* machine/applefdintf.*: Correct permissions
2021-07-29 23:40:16 -04:00
Vas Crabb
23bd2ecf6a Slightly cleaned up OSD input modules.
Removed support for DirectInput 7 and earlier.  It hasn't been tested in
years, and it's not relevant on any supported OS.  DirectInput is
effectively finalised at version 8, and is unlikely to get an API update
in the future.

Use more string[_view] and fewer C strings, and tightened up scope of a
few things.
2021-07-29 15:22:51 +10:00
hap
b8974ddcba New NOT_WORKING software list additions
---------------------------------------
msx1+cart: Easi-Speech [hap]
2021-07-23 19:00:08 +02:00
AJR
af7bfe3324 f2mc16: Rewrite disassembler
- Fix bug in CPU core advancing PC by one too many bytes when executing ADDL A, RLn
2021-07-21 10:34:36 -04:00
Patrick Mackinlay
de881afb9e ncr5380n: reclaim ncr5380 device name 2021-07-20 12:22:15 +07:00
Calvin Buckley
4ab4f74106
Implement 68k FPU FATAN instruction (#8287) 2021-07-18 12:53:08 -04:00
arbee
064bc3aafb apple3: Preliminary support for Microsoft SoftCard /// [Rob Justice, R. Belmont] 2021-07-17 12:45:53 -04:00
cam900
1d7e9c0284
-pce.cpp: Converted PC Engine controller ports to slot devices. (#8028)
-ggconnie.cpp: Add notes for IRQ.
2021-07-13 22:55:25 +10:00
hap
e4c8d9f538 New working machines
--------------------
TI-1680 [hap, Sean Riddle]
2021-07-13 11:12:14 +02:00
ksherlock
a9fefd8363
-bus/a2bus: Added //SHH SYSTEME LANceGS Card. (#8264)
-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.
2021-07-09 11:38:52 +10:00
Aaron Giles
6ffc98289c
video/voodoo.cpp: Major rewrite: (#8267)
* 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.
2021-07-09 11:35:00 +10:00
0kmg
8796124eb4
add mapper 29 and preliminary mapper 30 support (#8225)
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
2021-06-25 17:39:09 -04:00
Vas Crabb
50da25ae5b -util: Retire legacy object pool, removing vestigial references.
Thanks to AJR, Ivan Vangelista and Aaron Giles for helping make this
possible.

Also fixed debug build of imgtool.
2021-06-24 23:12:27 +10:00
cracyc
3f5cec732b vis: fix card comms and crc 2021-06-23 16:41:27 -05:00
cracyc
188a28c9ff vis: add memory card device 2021-06-22 17:10:30 -05:00
AJR
b915e69902 Remove emualloc.* 2021-06-22 09:01:01 -04:00
hap
20a03efe41 New working software list additions
-----------------------------------
lk3000: Calculator, Electronic Notebook [hap, Sean Riddle]

New NOT_WORKING software list additions
---------------------------------------
lk3000: English-German [hap, Sean Riddle]
2021-06-21 14:00:58 +02:00
tim lindner
0f17b85baf
mc10.cpp: Converted expansion port to slot device and removed fake machines. (#8184) 2021-06-17 03:13:56 +10:00
arbee
da6196f70d apple3: Support for the Titan "/// Plus II" Apple II emulation card. [R. Belmont] 2021-06-15 23:12:56 -04:00
Nigel Barnes
efcdeeaed4 bus/coco: Added the Dragon MSX 2+, The Dragon's Claw, Peaksoft Prestel, and CoCo WordPak/WordPak II/WordPak RS/WordPak 2+ devices. 2021-06-14 13:20:35 +01:00
Vas Crabb
73d97b7dc4 Added helpers for 64-bit count leading zeroes/ones. 2021-06-13 09:38:01 +10:00
AJR
35f317e027 New skeleton ISA device: Lark Associates LRK-331 ESDI Controller [Bitsavers] 2021-06-11 20:50:45 -04:00
Patrick Mackinlay
80fb62cce5 ns32082: new device 2021-06-07 19:05:07 +07:00
xray-sky
24df3089f8
fix pcap builds (#8150) [xray-sky, R. Stricklin] 2021-06-06 21:40:17 -04:00
Aaron Giles
973373e712 ymfm: Sync with upstream:
* Fix panning calculations in OPL4 (YMF278B)
* Make OPQ reverb less ridiculous
2021-06-01 09:54:44 -07:00
Dirk Best
fa08c5f552 vtech: Rework expansion bus emulation
- 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
2021-06-01 13:16:52 +02:00
tim lindner
eb1df97c6b
bus/coco: add CoCo Max Hi Res Input Module (#8104) 2021-05-31 16:29:01 -04:00
Aaron Giles
05cacea947 ympsr60: Fleshed out the PSR60/PSR70 drivers
* 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
2021-05-31 11:20:28 -07:00
AJR
c7d7b25caa Better fix for vt_dsk.h header name clash 2021-05-26 14:39:05 -04:00
Olivier Galibert
9add8034d2 vtech: Add floppy formats and fs 2021-05-26 19:15:31 +02:00
Olivier Galibert
da1bd3b0ec reorganize the floptool code, add some write support 2021-05-24 14:06:06 +02:00
hap
681b9c9675 ymtx81z: leave lcd color up to the (internal)artwork 2021-05-24 13:42:20 +02:00
Aaron Giles
d9db7d77c4
ymfm: Sync with latest, add complete YMF278B support (#8090)
* 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.
2021-05-22 12:33:21 -04:00
arbee
15a5731492 adb: preliminary working A9M0330 IIgs keyboard emulation (not used yet). [R. Belmont] 2021-05-22 09:16:23 -04:00
Nigel Barnes
24189a9346 bus/bbc/tube: Added Sprow ARM7TDMI Co-Processor. 2021-05-21 22:32:11 +01:00
hap
262aa23c89 saitek_osa: added maestro/analyst B/C/D/D+/D++ module [hap, Berger, anonymous] 2021-05-21 19:06:07 +02:00
AJR
1382af68f4 unidasm: Add CPU16 disassembler 2021-05-21 08:28:01 -04:00
AJR
ab88bacf35 decmate2, decmate3: Emulate HD-6120 CPU; add enough I/O to initialize various peripheral ICs and run tests on disk controller 2021-05-19 18:27:34 -04:00
arbee
24b7ed9ec5 adb: add skeleton for model A9M0331 ADB mouse. [R. Belmont, Al Kossow] 2021-05-17 20:14:26 -04:00
Olivier Galibert
3b13ae6d71 pc_formats: Believe it or not, but it seems there has been released pc-format ipfs 2021-05-16 19:53:59 +02:00
MooglyGuy
c3ebd9ebb2
-bus/vsmile: Added Smart Keyboard in US, French, and German layouts. [Ryan Holtz, PulkoMandy] (#8059)
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]
2021-05-16 03:26:22 +10:00
hap
8ba12dd6da saitek_osa: add skeleton device for Sparc module [hap, Berger] 2021-05-15 13:37:52 +02:00
Aaron Giles
3cfc522458
ymfm: Refactor new FM engine into a 3rdparty library (#8046)
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)
2021-05-14 18:33:49 -07:00
hap
c8d53cabbd added saitek OSA module interface used in leonardo/renaissance 2021-05-14 22:00:42 +02:00
Olivier Galibert
7ff6ed667f cdr-254sh: Skeleton 2021-05-10 09:14:54 +02:00
arbee
e13ea1cd39 Retiring my original NCR5380 implementation. [R. Belmont, AJR] 2021-05-08 16:55:52 -04:00
arbee
fa5977301e apple2: Add support for the BOOTI card [R. Belmont] 2021-05-08 16:19:36 -04:00
AJR
741595c312 qbus: Add dump and skeleton device for Data Systems Design A4432 Floppy Disk Interface [AJR, Bitsavers] 2021-05-05 09:36:12 -04:00
Sandro Ronco
800a422e42 ertictac.cpp: convert to use IOC and MEMC devices. 2021-05-01 23:07:51 +02:00
Olivier Galibert
8709e06b67 floppy: start block-devicing fielsystem support 2021-04-28 16:17:56 +02:00
arbee
f08b0c9c6c bus/rs232: Preliminary emulation of the Mockingboard D "sound card" for the Apple IIc. [R. Belmont, Apple II Documentation Project] 2021-04-25 22:24:44 -04:00
hap
5f977adf3f fix arcade target link 2021-04-23 18:55:31 +02:00
hap
d79ba952ac smartboard: add internal artwork for the pc version 2021-04-19 14:53:28 +02:00
hap
9194b83f3b smartboard: add support to connect it to pc printer port 2021-04-19 13:01:19 +02:00
Olivier Galibert
c037dfd822 thomson: Turn the extensions into slot devices, modernize the floppies 2021-04-19 09:50:19 +02:00
AJR
56ea894a84 nscsi: Add dump and skeleton device for Sony CDU561-25 CD-ROM drive [Bitsavers] 2021-04-16 15:19:23 -04:00
Olivier Galibert
9c8b72a5fe sound: Pulseaudio support 2021-04-16 14:49:16 +02:00
Olivier Galibert
6cbee7f176 cdu415: Add skeleton 2021-04-14 09:34:44 +02:00
Olivier Galibert
b663c4bc50 cdu75s: start the driver 2021-04-08 09:15:25 +02:00
Olivier Galibert
e0d69fad4c h8: Add the h8/3032 2021-04-07 14:29:28 +02:00
arbee
e42e059b23 Add bus/adb for real ADB device emulation [O. Galibert, R. Belmont] 2021-04-06 22:40:10 -04:00
Vas Crabb
958189731b bus/a2bus: Added Orange Micro Grappler printer interface card. 2021-04-07 04:33:43 +10: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
AJR
4d3afe00fc Restore legacy pc_dsk floppy support for imgtool only 2021-03-29 22:48:14 -04:00
Vas Crabb
e298c31a69 srcclean in preparation for release 2021-03-28 14:34:50 +11:00
Olivier Galibert
c8b532068f xt446: Use its real name 2021-03-22 22:51:49 +01:00
Olivier Galibert
5270d43692 keyboardmania: Interface with the mu100 2021-03-21 23:01:23 +01:00
hap
001eadf294 pps41: add preliminary mm78la/mm77la 2021-03-19 17:53:12 +01:00
Olivier Galibert
cdb06b7a99 pmac6100: Move it to a new driver 2021-03-12 21:35:02 +01:00
hap
82461369ff pps41: added mm78 disasm and mm77/mm78 skeleton device 2021-03-08 15:52:04 +01:00
fulivi
3fe689f03f
HP9845: added synchronous I/O for RS232 port and HP98046 module (#7695)
* rs232: added device for synchronous I/O

* hp9845: implemented external clocking in hp98046 serial module

Co-authored-by: ajrhacker <ajrhacker@users.noreply.github.com>
2021-03-07 13:31:39 -05:00
Olivier Galibert
e8ab2b8a78 Fix messed-up merge 2021-03-05 14:10:44 +01:00
Olivier Galibert
92326e47af floppy: Beginning of the support for preformatted floppy images.
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)
2021-03-05 10:17:20 +01:00
hap
d65c5159f1 pps41: add skeleton MM76-derived devices 2021-03-04 13:10:10 +01:00
Dirk Best
e5d1cec868 formats: Fix missed RC759 format 2021-03-04 11:24:17 +01:00
Olivier Galibert
d436cbd3a6 formats: Create mame_formats_full_list which gives access to all the supported formats, make floptool use it. Castool should use it too probably, but I don't want to touch it. 2021-03-04 10:14:24 +01:00
Dirk Best
23769b0970 rc759: Add RTC and floppy, start cleanup 2021-03-03 13:38:54 +01:00
Olivier Galibert
a52b69d27c Fix dependencies 2021-03-02 20:51:01 +01:00
Olivier Galibert
faf0417271 defaults: pc format is in, ipf is out 2021-03-02 20:20:20 +01:00
hap
323250bbee mastmind: shuffle around bit/byte ordering, disasm looks better now 2021-03-02 19:49:53 +01:00
hap
dd75841b96 machine.lua: correct applefdintf file pointer 2021-03-02 12:24:01 +01:00
AJR
f74d0978a9 Revert "fileio.cpp: This doesn't technically require emu.h"
This reverts commit 6d6073054b.
2021-02-28 13:25:25 -05:00
Nigel Barnes
fda2a0e482 econx25: Added the dual Z80 co-processor board (incomplete). 2021-02-28 12:22:22 +00:00
AJR
7002aae556 New working machines
--------------------
Mark 1 FORTH Computer [AJR]
2021-02-27 11:58:40 -05:00
Aaron Giles
95869d5718
New BSD-licensed implementation of Yamaha OPN and OPM FM audio chips (#7808)
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.
2021-02-27 21:57:43 +11:00
hap
2f02c96baf added MM76 disassembler and preliminary PPS-4/1 MCU core [hap]
New machines marked as NOT_WORKING
----------------------------------
Electronic Master Mind (Invicta) [hap, Sean Riddle]
2021-02-26 18:24:59 +01:00
AJR
6d6073054b fileio.cpp: This doesn't technically require emu.h 2021-02-26 12:07:44 -05:00
cam900
0a2caa105d
Refactored Seta sound, adding preliminary ST0032 sound support. (#7800)
* Renamed sound/nile.cpp to sound/setapcm.cpp.
* Added preliminary support for 16-voice ST0032 variant.
* jclub2.cpp: Hooked up ST0032 sound.
* jclub2.cpp, srmp6.cpp: Derive sound clocks from crystal frequencies.
2021-02-23 23:12:22 +11:00
Nigel Barnes
2a4a487ec2 bus/bbc/tube: Added the CMS 6809, Acorn 16032, and Acorn A500 2nd processors. 2021-02-20 00:22:05 +00:00
hap
147b5e72a4 added MM5799 MCU emulation [hap]
New working machines
--------------------
Basketball (Mattel) [hap, Sean Riddle]
QuizKid Speller [hap, Sean Riddle]

New working clones
------------------
QuizKid Racer (MM5799 version) [hap, Sean Riddle]
2021-02-14 23:23:28 +01:00
Roberto Benfatto
02d6b1e457
scripts: Remove references to non-existent headers and duplicate source file references. (#7770) 2021-02-14 22:15:17 +11:00
hap
ad11e2d46e added ds8874 device 2021-02-07 17:12:19 +01:00
AJR
c47ed0112e coretmpl.h: Move lru_cache_map to separate header 2021-02-03 17:42:14 -05:00
AJR
75a7445a98 unidasm: Add disassemblers for NEC/Renesas V850 family 2021-01-30 12:30:56 -05:00
Vas Crabb
adc23f3f74 Goodbye 64 suffix on the main executable, it was nice knowing you.
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).
2021-01-26 15:37:11 +11:00
Curt Coder
39c150bd1e New working machines
--------------------
Facit DTC (DeskTop Computer) [Luxor ABC arkivet, Curt Coder]

abc800: Added new revisions of ROMs, and skeletons for DataBoard 4106/4107. [Luxor ABC arkivet, Curt Coder]
2021-01-14 08:27:37 +02:00
Sandro Ronco
5a57d03cfe
-Acorn Archimedes code reorganization: (#7627)
* 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]
2021-01-12 23:39:14 +11:00
Ryan Holtz
1fad52d8ee - m950x0: Added implementation for STmicro M950x0 SPI EEPROM series. [Ryan Holtz]
- 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]
2021-01-10 13:24:20 +01:00
hap
d329aa03f7 odyssey2: add service test cart 7seg output 2021-01-04 21:11:54 +01:00
AJR
c231ee373a render.h, rendlay.h: Dependency refactoring
- 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
2021-01-04 12:15:09 -05:00
AJR
60e518cc50 Low-level #include overhaul
- 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.
2021-01-02 15:18:15 -05:00
Ryan Holtz
29bc7e25b7 -arm7: Moved WinCE call logging into a separate .hxx file. [Ryan Holtz] 2021-01-01 23:23:42 +01:00
Ryan Holtz
139f044859 -arm7: Added optional logging for Windows CE calls. [Ryan Holtz]
-uda1344: Added skeleton audio device for Philips UDA13444 Codec. [Ryan Holtz]

-sa1111: Hooked up basic L3 audio transceiver support. [Ryan Holtz]
2020-12-31 19:18:54 +01:00
Patrick Mackinlay
763a780f37 romp: initial storage channel implementation 2020-12-31 16:39:20 +07:00
tim lindner
c49f1ee406
bus/coco Added CoCo and Dragon MIDI cartridges. (#7589) 2020-12-25 14:28:09 +11:00
Nigel Barnes
8aacde2c3f saa5240.cpp: Preliminary SAA5240/43 Computer Controlled Teletext emulation. 2020-12-25 00:09:52 +00:00
Ryan Holtz
7ebdb0bd97 New machines marked as NOT_WORKING
------------------
Hewlett-Packard Jornada 720 [Ryan Holtz]

* arm7: Fixed interaction between instruction prefetching with the MMU enabled. [Ryan Holtz]

* sa111: Added skeleton device for Intel SA-1111 Microprocessor Companion Chip. [Ryan Holtz]

* sed1356: Added skeleton device for Epson/Seiko SED1356 video controller. [Ryan Holtz]

* sa1110: Various cleanups. Added rudimentary SSP module support. [Ryan Holtz]
2020-12-24 18:59:14 +01:00
AJR
f7585b3cdb a2bus: Add (corrected) ROM dumps and emulation of CCS Model 7710 Asynchronous Serial Interface [AJR, Apple II Documentation Project] 2020-12-24 10:02:48 -05:00
AJR
5bf175cb05 New device: Fairchild 4702B Bit Rate Generator 2020-12-24 09:56:49 -05:00
AJR
0d77739c27 Add dump and skeleton devices for Emerald Technology 3XTwin ISA board 2020-12-23 10:56:26 -05:00
arbee
add5e8a421 apple2: Support for the Videx Uniprint parallel card [R. Belmont, Golden Child] 2020-12-22 21:54:58 -05:00
AJR
4f70f2d58b Add CompactRISC CR16C disassembler to unidasm (largely untested) 2020-12-16 12:17:56 -05:00
arbee
30247885aa 3rdparty: use -Wno-strict-prototypes when building SDL2 on macOS [R. Belmont] 2020-12-13 17:03:16 -05:00
arbee
ca1bf9a040 Add AudioToolbox framework when building SDL2 on macOS, fixes TOOLS=1 link errors [R. Belmont] 2020-12-13 16:48:55 -05:00
AJR
04b59f8323 unidasm: Add disassembler for M32C architecture 2020-12-07 15:41:45 -05:00
Ryan Holtz
be92cc6c65 -scoop: Added skeleton device for Sharp "Scoop" peripheral IC from the Zaurus PDA line. [Ryan Holtz]
-ucb1200: Added skeleton device for Philips UCB1200 audio/telecom codec. [Ryan Holtz]

-sa1110: Added rudimentary framework for the MCP codec interface module. [Ryan Holtz]
2020-12-06 14:52:40 +01:00
Ryan Holtz
8287057888 -locomo: Added a skeleton device for the LoCoMo peripheral controller used in some Sharp Zaurus models. [Ryan Holtz]
-sa1110: Added OS Timer, RTC, Reset, GPIO, and partial UART3 controller module support. [Ryan Holtz]
2020-12-06 14:52:40 +01:00
Nigel Barnes
f25283c81f accomm: Added PCF8573 RTC.
- Added RTC interrupt, fixes TIME function.
- Realigned video handling with the Electron.
2020-12-04 12:23:11 +00:00
Vas Crabb
1bdf8d272a frontend: Lua engine improvements.
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.
2020-11-30 12:01:14 +11:00
Olivier Galibert
574daf4e49 Implement views, which are essentially bankdevs integrated into the
memory map system. [O. Galibert]
2020-11-22 19:43:52 +01:00
AJR
390bb74da9 Add dump of AppleCD 150 [DBWBP] 2020-11-20 12:35:18 -05:00
AJR
0bdbb0aa2e Separate TX-0 from PDP-1; separate some SoC types in build 2020-11-19 20:54:24 -05:00