| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* cpu/upd177x/upd177x.cpp: Add NEC uPD177x cpu core.
* scv.xml: Promoted 1 item.
Software list items promoted to working
------------------------------------------
Star Speeder
* cpu/upd177x/upd177x.cpp: Remove a comment.
* cpu/upd177x/upd177x.cpp: Remove callback on PA.
* cpu/upd177x/upd177x.cpp: Update comment about setting m_pc to 1 during reset.
* Add a different workaround for the sync issue between the 2 cpus in scv.
* cpu/upd1771x/updf177x.cpp: Use little endian.
* cpu/upd177x/upd177x.cpp: Include device tag in fatalerror messages.
* epoch/scv.cpp: Update upd1771c rom region sizes.
* nec/apc.cpp: Switch to upd177x_cpu_device.
* epoch/scv.cpp: Add location to upd1771c rom name.
* cpu/upd177x/upd177x.h: Remove 'overrides' comments.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
* sound/upd65043gfu01.cpp: Added basic support for NEC uPD65043GF-U01 sound chip.
* casio/zoomer_rtc.cpp: Emulated Zoomer real-time clock chip.
* src/devices/cpu/nec: Don't log message on bus lock by default.
New working systems
----------
Casio / Tandy Zoomer (Z-PDA / Z-7000) [Devin Acker]
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* Fixed screen
* Added ROMs and GP/LP support
* Fixed rom and prints
* Leftover
* Fix
|
|
|
| |
- Also add new IMA ADPCM implementation class for this purpose
|
|
|
|
|
|
|
| |
* misc/xtom3d_piu10.cpp: Added PIU10 card device (CAT702, DAC3350A, MAS3507D, Flash).
* sound/dac3350a: Added Micronas DAC 3350A device.
* sound/mas3507d.cpp: Mix sample internally before playing.
* machine/cat702.cpp: Added CAT702 variant with different interface logicfor PIU10.
* machine/intelfsh.cpp: Add Macronix 29F1610MC device.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
guitar toy. (#12146)
sound/cf61909.cpp: Added Texas Instruments CF61909 sound chip device.
New working systems
----------
Noise Toys Inc. Jaminator [Devin Acker]
New working software list items
----------
jaminator.xml: Classic Rock I (USA), Classic Rock II (USA), Hard Rock I (USA), Hard Rock II (USA), Lead Rock Guitarists (USA), Modern Rock (USA) [Devin Acker]
|
| |
|
|
|
|
|
|
|
|
|
| |
* machine/intelfsh.cpp: Implemented fast mode for Fujitsu flash.
* bus/ata/atapihle.cpp: Made DMA ready configurable.
* sound/stt_sa1.cpp: Emulated STT-SA1 PCM sample playback.
Systems promoted to working
-----------------------------
Shamisen Brothers Vol 1 (V1.01K) [Windy Fairy, Taro, angeryer]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Thayer's Quest. (#11915) [Ryan Holtz]
-cinematronics/thayers.cpp: Added CHD and promoted to working. [Ryan Holtz]
* Fixed periodic IRQ hookup.
* Fixed COP421 clock divisor.
* Switched to LD-V1000 by default and removed LD-PR7820 support for now.
* Switched to using logmacro and shorthand data types.
* Adjusted IRQ triggering and acknowledgement according to schematics.
-sound/ssi263hle.cpp: Added a temporary SSI-263 device which remaps SC-02 phonemes onto the SC-01's phoneme set. [Ryan Holtz]
* SSI-263 skeleton extracted from cinematronics/thayers.cpp.
-machine/ldv1000hle.cpp: Added an HLE version of the Pioneer LD-V1000 laserdisc player. [Ryan Holtz]
-machine/laserdsc.h: Added a general-purpose parallel LaserDisc player interface, to have a common class parent for LD-PR7820. [Ryan Holtz]
-sega/timetrv.cpp: Replaced timetrv2 LaserDisc image with a good capture. [Ryan Holtz, Matt Ownby, ld-decode Team]
Systems promoted to working
---------------------------
Thayer's Quest (set 1) [Ryan Holtz, Matt Ownby, ld-decode Team]
Clones promoted to working
--------------------------
Thayer's Quest (set 2) [Ryan Holtz, Matt Ownby, ld-decode Team]
|
| |
|
|
|
|
|
|
| |
keyoff a little better"
This reverts commit ae2ee86fe806a0d87fdcd180a6a10cd1bef6f1bc.
|
|
|
|
| |
a little better
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Basic functionality is supported, making most games playable.
StoryWare display is not yet implemented.
Game-specific peripherals are not emulated.
There are still some issues with graphics.
emu/ioport.h: Fixed rarely-used PORT_CROSSHAIR_MAPPER and PORT_CROSSHAIR_MAPPER_MEMBER macros.
cpu/arm7: Added AP2010 CPU device.
sound/ap2010pcm.cpp: Added basic AP2010 PCM audio output device.
Systems promoted to working
------------------------
Sega Advanced Pico BEENA
New working systems
------------------------
Sega TV Ocha-Ken
|
|
|
|
|
|
|
|
|
|
| |
to working. (#11613)
* casio/ra3.cpp: Added simple Casio RA-3 RAM cartridge device.
* sound/upd933.cpp: Emulated Casio/NEC uPD933 phase distortion synthesis chip.
Systems promoted to working
----------------
Casio CZ-101 [Devin Acker]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* machine/t10mmc.cpp: Added support for T10SBC_CMD_SEEK_10 command.
* cpu/sh: Added SH7014 SoC.
* machine/icd2061a.cpp: Emulated IC Designs 2061A programmable clock generator.
* sound/lc78836m.cpp: Emulated Sanyo LC78836M audio DAC.
* namco/namcos12_cdxa.cpp: Emulated Namco System 12 CDXA board.
Systems promoted to working
-----------------------------
Truck Kyosokyoku (Japan, TKK2/VER.A) [Windy Fairy]
New working systems
-----------------------------
Um Jammer Lammy NOW! (Japan, UL1/VER.A) [Phil Bennett, Eric Yockey, Windy Fairy]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Nightmare]"
Names in the global namespace need to be specific. Making them overly
generic is a very bad idea, and leads to confusion and conflicts.
Device type names must always be in the global namespace, and most
device classes are in the global namespace.
Changing members like m_votrax to m_sc01 doesn't help understand the
code. If there's only one Votrax speech module in the system, it's
obvious what it is.
This reverts commit c6f0e83ecfb97c298ffcf16e136496054a88b1ca.
|
| |
|
| |
|
|
|
|
| |
Astrocade-derived arcade hardware. All other devices remain using the Votrax SC-01-A. [Lord Nightmare]
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 3rdparty/minimp3: Update to latest source (afb604c06bc8beb145fecd42c0ceb5bda8795144).
* sound/mp3_audio.cpp: Add helper class to decode MP3 frame data, abstracting away minimp3 from devices.
* sound/lc82310.cpp: Added basic Sanyo LC82310 MP3 decoder emulation.
* namco/namcos10.cpp: Fixed light gun inputs for Golgo 13: Juusei no Requiem.
Systems promoted to working
------------------
Golgo 13: Juusei no Requiem (Japan, GLT1 VER.A)
Tsukkomi Yousei Gips Nice Tsukkomi (NTK1 Ver.A)
Seishun-Quiz Colorful High School (CHS1 Ver.A)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* yamaha: implement GEW7, partially implement GEW12, some GEW8/MultiPCM fixes (envelope behavior, sample lengths, stream updates, save state members)
New working machines
----------
Yamaha PSR-150 [Edward d-tech, Devin Acker]
Yamaha PSR-180 [Edward d-tech, Devin Acker]
Yamaha PSR-78 [Edward d-tech, Devin Acker]
New working clones
----------
Yamaha PSR-110 [Edward d-tech, Devin Acker]
Yamaha PSR-75 [Edward d-tech, Devin Acker]
Yamaha PSR-76 [Edward d-tech, Devin Acker]
Yamaha PSS-11 [Edward d-tech, Devin Acker]
Yamaha PSS-21 [Edward d-tech, Devin Acker]
Yamaha PSS-31 [Edward d-tech, Devin Acker]
Yamaha PSS-6 [Devin Acker]
Machines promoted to working
----------
Yamaha PSS-12 [Devin Acker]
New NOT_WORKING machines
----------
Yamaha PSR-260 [Edward d-tech, Devin Acker]
Yamaha PSR-79 [Edward d-tech, Devin Acker]
New NOT_WORKING clones
----------
Yamaha PSR-160 [Edward d-tech, Devin Acker]
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Atari Lynx emulation updates
- Use memory_view for address mapping
- Support variable framerate, Fix screen overscan (102 visible + 3 blank lines)
- Fix collision handling (possibly copy-paste error?)
- Reduce unnecessary shared pointers, Some duplications
- Use inlines values for bit flags
- Add support for variable page size for cartridge, AUDIN pin for bankswitch
- Add hardware notes, Initialize values
- Fix namings, Fix spacings, Use shorter/correct type values
- Move lynx sound functions into device/sound/lynx.*, Fix sound pitch (input clock related)
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(#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.
|
| |
|
| |
|
|
|
| |
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.
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
| |
-uda1344: Added skeleton audio device for Philips UDA13444 Codec. [Ryan Holtz]
-sa1111: Hooked up basic L3 audio transceiver support. [Ryan Holtz]
|
|
|
| |
DAC changes. Which is all of them. Remove the device as well.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
|
|
|
|
|
|
|
|
| |
hooking it to drivers. (#7290)
* Split hc55516 core into separate cores/subclasses for hc55516 and hc55532 (new 'digital' implementation based on decap/die tracing) as well as mc3417 and mc3418 (old existing 'analog' implementation left alone) and hooked the hc55516 and mc3417 implementations to the appropriate hardware drivers. This should vastly improve CVSD sound quality in drivers that use the hc55516. [Lord Nightmare, Sean Riddle]
* Made Exidy's mouse trap use a timer to clock the mc3417 and update the state readable by the z80 rather than relying on the mc3417 to accept a clock parameter and update the z80 state via a callback. The timer implementation ensures proper synchronization and prevents missed clock transitions from the z80 side causing noise in the CVSD audio. [Lord Nightmare]
* Added a biquad-based 2nd order filter emulation for an audio stream (to go along with flt_rc 1st order filter emulation) and hooked it to Exidy's mouse trap (mc3417) and williams drivers (hc55516) following the original schematics. For hc55516 this is necessary as the original chip produces a very pronounced audible 16khz 'carrier' in its output audio even on the real chip, and these filters suppress this. This also happens to a lesser extent with the 8khz quieting waveform noise on both mc3417 and hc55516. [Lord Nightmare]
* Made Williams System 11 and s11_bg relative sound mixing more accurate to the original audio flow on the PCB itself. [Lord Nightmare]
* Switched Williams Joust 2 to use the s11_bg common sound device rather than its own implementation. [Lord Nightmare]
|
|
|
|
|
|
|
| |
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
|
|
|
| |
* Implement FDS sound emulation
|
|
|
|
|
|
|
|
| |
* Split S-SMP and S-DSP implement in snes_snd.cpp
both convert memory handler into device_memory_interface, Internalize ROM region of S-SMP
s_smp.cpp : Use callback for S-DSP interface, Split internal and external memory space
snes.cpp : Convert WRAM into shared_ptr
* s_dsp.cpp : Reduce #define macros
|
| |
|
| |
|
|
|
|
|
|
|
| |
* Removed empty nl_examples from dist.mak
* Added copyright acknowledgements and full text of licenses to binary distribution
* Fixed up the list of third-party libraries
* Moved WDL fft.c to 3rdparty
|
| |
|
|
|
|
| |
beezer.cpp to complete (nw)
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Changed emu_fatalerror to use util::string_format semantics
* Fixed some incorrectly marked up stuff in build scripts
* Make internal layout compression type a scoped enum (only zlib is supported still, but at least the values aren't magic numbers now)
* Fixed memory leaks in Xbox USB
* There can only be one "perfect quantum" device - enforce that only the root machine can set it, as allowing subdevices to will cause weird issues with slot cards overiding it
* Allow multiple devices to set maximum quantum and use the most restrictive one (it's maximum quantum, it would be minimum interleave)
* Got rid of device_slot_card_interface as it wasn't providing value
* Added a helper template to reduce certain kinds of boilerplate in slots/buses
* Cleaned up some particularly bad slot code (plenty more of that to do), and made some slots more idiomatic
|