summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/bbc
Commit message (Collapse)AuthorAgeFilesLines
* device_image_interface: Interface overhaul AJR2022-01-062-11/+3
| | | | | | | | | | | | | - Remove the iodevice_t classification, which was not used that much and was incomplete anyway. Image device implementations must now provide their own instance names and brief instance names. Several new parent classes have been created to make it easier to use the old standard names. - Change must_be_loaded from a pure virtual function to be overridden in implementations to a getter for a base class property that can be set on the host side (as was formerly made possible for NES, MD and "generic" cartridge slots) but defaults to false for all types. This restrictive property has been unset for a small number of cases. - Create parent classes for paper tape and magnetic tape devices. At present these are dummy classes that do little to nothing, but may help unify implementations in the future. - Change several member functions to take std::string_view parameters rather than const std::string & or const char *. - Make update_names take into account brief names, as discussed in PR #2555. - Remove the obsolete uses_file_extension function (which used thread-unsafe strtok). * portfolio_ccm_slot: Change image type from "cartridge" to "memcard" * i7220, datapack: Add custom instance names that weren't there before * pc11: Add note
* More #include future-proofing AJR2022-01-061-0/+1
|
* acorn_vidc: Implement DAC differences between VIDC1 and VIDC1a. Nigel Barnes2021-11-141-1/+1
|
* formats, osd, util: Started refactoring file I/O stuff. (#8456) Vas Crabb2021-08-222-2/+2
| | | | | | | | | 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.
* bus/bbc/tube: Added Sprow ARM7TDMI Co-Processor. Nigel Barnes2021-05-213-1/+392
|
* ymfm: Refactor new FM engine into a 3rdparty library (#8046) Aaron Giles2021-05-141-1/+1
| | | | | | | | | | | | | | | 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)
* bbc_tube_80286: Correct mapped RAM size. Nigel Barnes2021-05-091-1/+1
|
* bbc_cumana68k: Initialise members. Nigel Barnes2021-05-092-31/+11
|
* bus/bbc/fdc: Use arrays of floppy_connector. Nigel Barnes2021-05-0910-84/+68
|
* Software list items promoted to working Nigel Barnes2021-05-091-1/+1
| | | | | --------------------------------------- bbc_flop_32016: PanOS Version 1.10 System Disks, PanOS Version 1.40 System Disks, GCAL, BCPL, Reduce
* New BSD-licensed OPL/OPLL (YM3526, YM3812, YM2413, Y8950, YMF262, etc) cores ↵ Aaron Giles2021-04-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (#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.
* floppies: Turn the format arrays into function calls. Create a default ↵ Olivier Galibert2021-03-0222-71/+91
| | | | "mfm", "fm" and "pc" list of formats. Their contents, and which driver uses what, may need some tuning.
* econx25: Added the dual Z80 co-processor board (incomplete). Nigel Barnes2021-02-283-2/+254
|
* bbc_tube_casper: VIA interface is enabled on address A4. Nigel Barnes2021-02-202-19/+20
|
* tube_cms6809: Board is only mapped to upper half of tube addresses. Nigel Barnes2021-02-201-3/+6
|
* bus/bbc/tube: Added the CMS 6809, Acorn 16032, and Acorn A500 2nd processors. Nigel Barnes2021-02-207-6/+451
|
* 6522via.cpp: Distinguish some different VIA types AJR2021-01-213-4/+4
|
* bbc_tube_rc6502: Fixed shared ram sizes. Nigel Barnes2020-12-041-2/+2
|
* bbc_tube_arm: Use tap to page out the ROM. Nigel Barnes2020-11-142-35/+21
|
* Enable GCC implicit fallthrough warning. Vas Crabb2020-11-151-0/+3
| | | | | | 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.
* bbc_voicebox: Callback to CB1 line is inverted. Nigel Barnes2020-10-222-15/+1
|
* bus/bbc/rom: Added support for the Gemini DataGem ROM carrier board. Nigel Barnes2020-10-194-0/+151
|
* cfa3000: Added romsets for issues 10.2, 9, and 7. Nigel Barnes2020-10-081-0/+1
| | | | - Added a B+ variant that runs the issue 5 romset.
* bbc_tube_32016: Added FPU and fixed dipswitches. Nigel Barnes2020-10-072-50/+42
|
* bus/bbc: remove remaining stream_sample_t Vas Crabb2020-09-281-2/+2
|
* Cleaned up bitmap API. Vas Crabb2020-09-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Made const-qualified pixel accessors (pix, pixt, raw_pixptr) return const-qualified references/pointers to pixesl, and added non-const versions. This makes bitmap more like standard library containers where const protects the content as well as the dimensions. Made the templated pixt accessor protected - having it public makes it too easy to inadvertently get a pointer to the wrong location. Removed the pix(8|16|32|64) accessors from the specific bitmaps. You could only use the "correct" one anyway, and having the "incorrect" ones available prevented explicit instantiations of the class template because the static assertions would fail. You can still see the pixel type in the bitmap class names, and you can't assign the result of &pix(y, x) to the wrong kind of pointer without a cast. Added fill member functions to the specific bitmap template, and added a explicit instantiations. This allows the bitmap size check to be skipped on most bitmap fills, although the clipping check is still there. Also fixed a couple of places that were trying to fill an indexed 16-bit bitmap with rgb_t::black() exposed by this (replaced with zero to get the same net effect). The explicit template instantiations in the .cpp file mean the compiler can inline the function if necessary, but don't need to generate a local out-of-line body if it chooses not to. Extended the size of the fill value parameter in the base bitmap class to 64 bits so it works correctly for 64-bit bitmaps. Fixed places where IE15 and VGM visualiser weren't accounting for row bytes potentially being larger than width. Fixed an off-by-one in an HP-DIO card where it was treating the Topcat cursor right edge as exclusive. Updated everything to work with the API changes, reduced the scope of many variables, added more const, and replaced a few fill/copy loops with stuff from <algorithm>.
* Fix MT07756 (ROM sets incorrectly being reported as missing) by partially ↵ Vas Crabb2020-09-252-4/+4
| | | | | | reverting 44416bee2d3b14dabc32df064f93af5b6bb740c0. Also some random minor cleanup.
* bus/bbc/1mhzbus: Added the Acorn Music 500, Hybrid Music 5000 Synthesiser, ↵ Nigel Barnes2020-09-253-6/+602
| | | | Hybrid Music 3000 Expander, and Peartree Music 87 Synthesiser.
* bus/bbc/joyport: CB lines are bi-directional. Nigel Barnes2020-09-232-7/+34
|
* bus/bbc/userport: Added the Hybrid Music 4000 Keyboard. Nigel Barnes2020-09-223-2/+230
|
* bus/bbc/userport: CB lines are bi-directional. Nigel Barnes2020-09-214-7/+49
|
* bus/bbc/tube/32016: Fixed paging out of ROM in lower memory only, and added ↵ Nigel Barnes2020-09-103-15/+69
| | | | the Large 4M board.
* tube_32016: Fix build AJR2020-09-081-1/+1
|
* bbc_tube_z80: HIRQ line is not connected. Nigel Barnes2020-09-072-2/+1
|
* bbc_tube_arm: HIRQ line is not connected. Nigel Barnes2020-09-071-9/+7
|
* bbc_tube_zep100m: Added latest known MCP 2.02, and removed imperfect disk flags. Nigel Barnes2020-09-072-6/+4
|
* bus/bbc/userport: Added the Sprow LCD Display. Nigel Barnes2020-08-273-0/+170
|
* bbc_autocue: Corrected RAM page register. Nigel Barnes2020-08-241-5/+7
|
* bbc_ramdisc: Fix passthrough interrupt lines. Nigel Barnes2020-08-181-2/+2
|
* bus/bbc/fdc: Added the Kenda Professional DMFS and Microware/UDM DDFS boards. Nigel Barnes2020-08-168-77/+302
|
* bus/bbc/1mhzbus/torchhd: Remove imperfect disk tag. Nigel Barnes2020-07-241-2/+0
|
* bus/bbc/1mhzbus: Added the Torch Hard Disc Pack. Nigel Barnes2020-07-223-0/+251
|
* bbc_tube_z80/bbc_tube_zep100: Clear RAM at startup and fix save state size. Nigel Barnes2020-07-162-6/+8
|
* bus/bbc/tube: Added Torch Z80 Communicator variants for B, B+ and Master. Nigel Barnes2020-07-133-11/+107
|
* bus/bbc/tube: Added Acorn Z80 2nd Processor (Winchester) device. Nigel Barnes2020-07-133-26/+56
|
* bus/bbc/userport: Renamed palette.h->palext.h Nigel Barnes2020-07-133-14/+14
|
* bbc_acorn8271/bbc_ams3: Correct 8271 clock (nw) Nigel Barnes2020-06-242-2/+2
|
* bbc_opus3: Added notes on motor control (nw) Nigel Barnes2020-06-172-32/+16
|
* bbc_cc500: Use pal4bit (nw) Nigel Barnes2020-06-171-3/+3
|
* bbc_cv1797: Implemented side and motor control, and now works. Nigel Barnes2020-06-172-39/+32
|