| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
it can be used. Convert a few drivers from timer devices to plain timers to avoid adding adjust_persistent() to the timer device as well.
|
| |\ |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
emu/ioport.cpp: Allow controller files to override input sequences for
inputs that don't use defaults, and to override the toggle setting for
digital inputs.
emu/config.cpp: Expose configuration level (mostly matters for
controller files), improved verbose diagnostic messages, and moved a few
things out of the global and preprocessor namespaces.
docs: Added documentation for some controller configuration file
features. The device mapping feature documentation will be merged in at
some point.
util/unicode.cpp, emu/input.cpp: API cleanups.
|
| | | |
|
| | | |
|
| | |
| |
| |
| | |
sound updates exactly on the second now that 50Hz doesn't perfectly round anymore.
|
| |\| |
|
| | |
| |
| |
| | |
44100 times per second)
|
| | | |
|
| | |
| |
| |
| | |
values across implementations.
|
| | |
| |
| |
| | |
implementation. Still a couple of functions missing.
|
| | |
| |
| |
| | |
usage. Cleaned up several core pieces to leverage this.
|
| | |
| |
| |
| | |
to use subseconds abstractly where possible. Builds, and many games work, but some are failing, so there be dragons here.
|
| | |
| |
| |
| | |
that were caught by this. Updated all interfaces and core systems to use new timer classes.
|
| | |
| |
| |
| | |
timers. Update sound manager to use native callback form. Update screen to use persistent timers.
|
| | |
| |
| |
| | |
callback types. timer_callback is a class containing a timer_expired_delegate plus a user-supplied pointer, and accounting information for registration. timer_instance is a single active timer in the scheduler. persistent_timer is what you get back from timer_alloc() now, and has methods for dynamic changes. transient_timer_factory is what you use to create transient timers. Devices now own a transient_timer_factory for transient device timers. persistent_timers can be emedded and initialized directly.
|
| | |
| |
| |
| | |
scheduler. Also change machine().scheduler().time() calls to just machine().time().
|
| |/
|
|
| |
abstractions.
|
| |
|
|
|
|
|
|
|
|
| |
* osdcomm.h: Move definition of EQUIVALENT_ARRAY to coretmpl.h
* sharc.cpp, gt64xxx.cpp, ym2413.cpp, gb_lcd.cpp, snes_ppu.cpp: Use STRUCT_MEMBER for save state registration
* gio/newport.cpp, megadrive/svp.cpp, nes_ctrl/bcbattle.cpp, arm7.cpp, tms9995.cpp, pckeybrd.cpp, sa1110.cpp, sa1111.cpp, jangou_blitter.cpp, vic4567.cpp: Use std::fill(_n) instead of memset
* emucore.h: Remove obsolete typedef
|
| |
|
|
|
|
|
|
|
|
|
| |
Made the sound manager mute controls readable, and got rid of system
enable since it just controls system mute anyway. This was causing
confusion: phantom2 was trying to use both independentlyt casuing the
mute bit to be ignored.
THe Lua interface changes are mostly changing methods to properties,
some renames to make things clearer, and some additional properties for
better control over snapshots.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The things that were previously called device iterators are not
iterators in the C++ sense of the word. This is confusing for
newcomers. These have been renamed to be device enumerators.
Several Lua methods and properties that previously returned tables now
return lightweight wrappers for the underlying objects. This means
creating them is a lot faster, but you can't modify them, and the
performance characteristics of different operations varies.
The render manager's target list uses 1-based indexing to be more like
idiomatic Lua.
It's now possible to create a device enumerator on any device, and then
get subdevices (or sibling devices) using a relative tag.
Much more render/layout functionality has been exposed to Lua. Layout
scripts now have access to the layout file and can directly set the
state of an item with no bindings, or register callbacks to obtain
state. Some things that were previously methods are now read-only
properties.
Layout files are no longer required to supply a "name". This was
problematic because the same layout file could be loaded for multiple
instances of the same device, and each instance of the layout file
should use the correct inputs (and in the future outputs) for the device
instance it's associated with.
This should also fix video output with MSVC builds by avoiding delegates
that return things that don't fit in a register.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* dac/volt_reg: improve performance
* modify dac to accept streams of any input rate to avoid resampling
* modify dac to assume input voltage streams are constant by only
grabbing the first input sample
* modify volt_reg to output at the minimum sample rate
* dac: Restructure the DAC sound devices a bit
* centralize implementation based on lookup tables
* add set_constant_vref() method for the common case where references
are constant, thus avoiding the need for voltage regulator devices
* convert williams.cpp to using this new method as a test
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
stream_sample_t removed. (#7297)
* a2mcms/coco_ssc/gus/cassette/floppy/8364_paula/laserdsc/s2636/spg2xx_audio/arcadia/channelf/cmi01a/cps3/dai_snd: Update to new stream callbacks
* dsbz80/elan_eu3a05/exidy/exidy440/flower/geebee/gomoku/gridlee: Update to new stream callbacks
* hyprolyb/lynx/micro3d/phoenix/pleiads/polepos: Update to new sound stream callback
* redbaron/segag80r/segausb/seibu/snk6502/socrates/special/svis_snd: Update to new stream callbacks.
* tiamc1/turrett/tvc/tx1/vboy/vc4000: Update to new stream callbacks
* warpwarp/wiping/wswan/xavix/esq1/istrebiteli/milton6805/pv1000/mega32x/gic: Update to new stream callback
* sound: Remove legacy stream support and stream_sample_t
* * gomoku/wiping: Remove silly mixer tables in favor of math
* micro3d: Remove tiny vectors in favor of fixed arrays
* phoenix: Went back to std::unique_ptr array for LFSR
* wiping: Fixed the scale factor.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
* Reuse resamplers if routing the same output to multiple targets at the same rate
* Avoid copying when there's only one stream going through a mixer
|
| |
|
|
| |
This reverts commit dc0ede3c90717ed25de0695c555b861f06344f18.
|
| |
|
|
|
|
|
|
|
|
| |
* read/write_stream_views now have an internal index
* get/put/add/fill/copy now implicitly use and advance this index
* new method reset() can (re)set the internal index
* new method done() checks if index is past the end
* new method remaining() indicates how many samples remain
* get_indexed/put_indexed/etc available for random access
* updated all consumers to new interfaces
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Significant internal changes to sound streams:
Abstracted buffers of sound data into an internal stream_buffer class, with helper classes read_stream_view and write_stream_view which offer readable/writable "views" into the buffers
Internal sound calculations are all done using stream_buffer::sample_t, which is a 32-bit float; existing callbacks are supported through an adapter that converts to/from signed 32-bit integers
Improved behavior of dynamic stream sample rate changes to resample a short runway of data to preserve continuity across transitions
Created a new stream update callback which passes a std::vector of read_stream_views for inputs, and a std::vector of write_stream_views for outputs
Updated core mixer and speaker devices to the new stream update callback
Updated the following sound cores to the new stream update callback: ay8910, dac, k054539, msm5205, namco, netlist, okim6295, pokey, samples, sn76496, sp0250, tms5220, tms57002, upd7759, vgm_visualizer, volt_reg
Changed existing stream update callback to make inputs explicitly const and the output pointers const as well, since they are re-used across calls; fixed several engines that violated this rule
Sound_manager::stream_alloc can no longer automatically connect to a device's sound_stream_update callback; instead, the stream_alloc() on the sound_device_interface should be called; updated many violators of this rule
Streams can be created with SAMPLE_RATE_OUTPUT_ADAPTIVE, which dynamically tracks the sample rate of its first downstream output, or with SAMPLE_RATE_INPUT_ADAPTIVE, which tracks the sample rate of its first input
Changed resampling to be a separate sound_stream that is invoked as needed, opening the path for selectable resampling implementations
Added a flags parameter to the new stream allocation method that allows you to specify a that input streams should not be resampled
Exposed stream_input and stream_output classes directly, simplifying access to user gains and stream names
Added a simple dynamic compressor to sound_manager to provide nicer results when overdriven sound happens; compression does not affect speaker_report results
Improved verbose speaker_report to print a graph of peaks over time
More aggressive debugging enabled for now even in release builds (should be disabled prior to next release) via SOUND_DEBUG define in sound.h; report any assertions for fixing
|
| | |
|
| |
|
|
| |
instead of memset (nw)
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
* luaengine: manager:machine():sound():samples()
* luaengine: fix natural_keyboard docs
* tiny cleanup as requested in #5348
* fix clang build
|
| |
|
|
|
|
|
|
|
|
| |
qix, quizpun2, stfight, tigeroad: Removed MACHINE_CONFIG. [Ryan Holtz]
-m68705, m68hc05: Removed MCFG. [Ryan Holtz]
-qix: First-pass cleanup. [Ryan Holtz]
-core: Fixed spelling of "nonexistent". [Ryan Holtz]
|
| |
|
|
| |
rate is zero. This fixes all reported bugs. (nw)
|
| |
|
|
|
|
|
| |
This is damn sensitive code, and generates differences all over the
place we don't really explain. The changes should be justified by
themselves and tested in collaboration with Tafoid to ensure the
differences are not a problem.
|
| |
|
|
| |
[smf]
|
| |
|
|
| |
this (nw)
|
| |
|
|
| |
a0137c10da45fe10e52f9debcf00b266f2234329 in a better place (nw, seems to fix assert error)
|
| |
|
|
|
|
|
| |
different devices at a different execution point), don't try to generate
a negative number of samples [O. Galibert]
Not sure why that never happened before. Oh well.
|
| |
|
|
|
|
|
|
|
|
| |
Revert "Removal of voltage_regulator_device (nw)"
This reverts commit 1af133752a05079060c462e372c369ad0b7296ee.
Revert "New way to provide DAC reference inputs (nw)"
This reverts commit 1c6a7ab40ccd23b753777204c7a289e830b2adcb.
|
| |
|
|
|
|
|
| |
- Introduce MCFG_SOUND_REFERENCE_INPUT to provide fixed inputs through the resampler, eliminating the need for the "voltage regulator" device
- Replace memset use in sound.cpp with std::fill
This was my third implementation of this concept. The previous two involved attaching sound streams to the dummy device (which required giving it device_sound_interface and other modifications).
|