USB UHCI and the E1000 NIC are known to work fine on some guest systems, so
it's safe to remove this attribute.
TODO: Some other Bochs features need to be reviewed for this.
- the "remaplist" has 256 entries, but the limit was too high (4096).
- the "patchtable" had 4096 entries, but the index was never > 15.
- removed disabled / outdated code.
- Undocumented "legacy" register at offset 0x1b is used to probe for the ES1370
interrupt by the Win9x driver. Using bit #0 to control the IRQ line fixes
driver installation.
- Added more detailed BX_ERROR messages for the UART registers.
- Small code cleanup in the write handler.
- TODO: fix possible bluescreen in Win98 guest after wave playback.
- OPL3: apply FM volume control to the output data.
- SB16: fixed missing volume update after mixer reset.
- soundlow: fixed application of the volume control to the PCM output.
- Removed useless set_pcm_params() call in base class contructor.
- SDL waveout destructor needs to call the unregister_wave_callback() method
of the SDL stuff, since the base class destructor doesn't do that.
- Moved BX_INIT_MUTEX() call to start_mixer_thread() to reduce code duplication.
- Call BX_FINI_MUTEX() only when the mixer thread and mutex was really used.
NULL for all services and the dummy driver provides the stubs. Now falling
back to the dummy driver if the wavein or midiout services are not provided
by the selected driver.
- sound 'file' driver: added failure handling in the file open methods.
- soundmod: initialize default driver with NULL to avoid crash on failure.
- SB16: Fixed crash if no driver is present / removed unused members.
- Implemented wave output using the 'soundfile' driver including dual wave
output in wavemode 3. Removed now obsolete output file handling and other
cleanups. The wave input (recording) feature is not affected by the
wavemode setting.
- Moved VOC file handling to the soundfile code.
- Updated iodev makefile dependencies.
- Implemented wave and midi output using the 'soundfile' driver.
- Implemented dual midi/wave output in midimode/wavemode 3.
- Removed now obsolete output file handling and other cleanups.
- The wave input (recording) and OPL3 output features are not affected by
the wavemode setting.
- TODO: Similar rewrite of ES1370 wave output and related cleanups.
- soundlow: use direct output if no PCM callback is registered.
- soundlow/soundfile: re-implemented openwaveoutput() method to support
runtime changes of wave mode or file (only implemented in the 'file'
driver, stub for others).
- soundfile: don't initialize mixer thread and PCM callback if thread is
already running / no output() delay in that case.
- Added the capability to load up to 4 sound drivers and added methods to
get pointers to the waveout, wavein and midiout services of a driver.
- Rewrite of the SB16 midi file output code. In midimode 2 and 3 the midiout
service of the 'file' driver is used. Removed obsolete midi file handling.
- Re-implemented the closemidioutput() method to make runtime changes of the
midi setup work with the new code.
- waveout: added support for RIFF WAVE format and raw output. The formats
'voc' and 'wav' are detected by file extension, raw output is used otherwise.
- midiout: added support for raw midi output (no header, no deltatime).
The 'mid' format is detected by file extension, raw output is used otherwise.
- Added 'midiout' parameter to the global sound option to specify the device
if necessary. The related SB16 parameter now only specifies the output file.
- TODO: Rewrite of the sound configuration and output code to support dual
output (device and file).
- New code is based on the dummy sound driver and file output code from SB16.
- The midiout feature supports the MIDI file format.
- The waveout feature currently only supports the VOC format.
TODO:
- Add support for a more detailed sound configuration (waveout to device,
midiout to a file.
- The waveout feature should support WAV and RAW file formats.
- Move VOC file handling from soundmod.cc to soundfile.cc.
- Finally remove file handling code from sound devices.
creates the object and returns a pointer to it. TODO: Rewrite of the sound
configuration to support a more detailed setup (e.g. waveout with alsa,
dummy wavein, midiout to a file).
creates the object and returns a pointer to it. TODO: The wavein and midiout
components should also move to separate classes. When finished, it should be
possible to configure the sound support more detailed (e.g. waveout with sdl,
midiout with alsa and the dummy driver for wavein). Creating a separate
module for the output to file(s) is also possible.
'alsa'. Cleaned up the code a little bit.
TODO #1: Implement mixer thread support in the OSX sound driver.
TODO #2: Code cleanups in the Bochs sound code.
TODO #3: Resampling support and improvements in the wave recording code.
- removed disabled code for the sndPlaySound() function.
- removed now obsolete buffer ring for wave output.
- The new mothod waveout() is driven by the mixer thread. For the best results
you need to disable the 'realtime' sychronization and to find out a usable
IPS vaöue. The mixer also polls data from the speaker beep generator and
the OPL3 FM generator.
- TODO: Code cleanup in soundwin.cc, implementation in other sound modules.
- soundlow: prepared code for 2 pcm parameter sets:
emulated: requested by sendwavepacket()
real: used for the sound output
- soundsdl: startwaveplayback() rewritten to set_pcm_data().
- soundmod: some beep init code fixes.
- OPL3: Added support to change the samplerate of the generator.
- SDL sound: convert wave packet to 16 Bit signed stereo format.
- Increased the maximum size of a single wave packet for playbck/recording.
- Beep thread now only started one per simulation.
- Added some more multithreading macros and use them in rfb, vncsrv and soundmod.
- TODO: implement mixer thread and remove beep thread.
The code currently only works with the SDL sound output module and at 44100 Hz,
with 16 bit stereo signed little endian format. FM volume control and
save/restore support are not implemented yet. The legacy code for generating
MIDI notes still works and will be removed when mixing support is implemented
in all sound modules.
- Define new structure bx_pcm_param_t and use it as a parameter for the method
sendwavepacket(). The method startwavepacket() is now called from
sendwavepacket() in case of a parameter change (temporary solution).
- soundsdl: Replaced waveready() call by some more accurate code for buffer
space check in sendwavepacket().
- soundsdl: Moved code for reading from audio buffer to a new function.
- soundsdl: Temporarily increase the audio buffer size.
- Preparing the SB16 code for the OPL emulation port from DOSBox.
- Reworked wave callback code to support 2 input sources (no mixing yet).
- Fixed SDL sound output.
- Beep generator fixes.
- Prepared the SB16 code for FM OPL output support (to be ported from DOSBox).
- Renamed wavedata callback type.
- Handle sample rate in the beep generator (TODO: handle data format).
- Don't call waveready() in the SB16 code.
- Attempt to fix SDL2 wave output using SDL_LockAudio() / SDL_UnlockAudio().
- SDL specific code in the beep thread no longer needed.
- Added framework for polling wave data and use it for beep output in sdl.
- Some work in the beep thread code (to be continued).
- Moved macros required for multithreading to bochs.h.
- Increment timer counter before checking for overflow.
- Implemented ISA bus delay in the pc_system code and use it for the SB16.
This makes OPL chip detection work at ips values > 4 Mips.
TODO: OPL chip should use wave output instead of MIDI (maybe port from DOSBox).
TODO: Use isa_bus_delay() for other legacy devices if required.
- feature implemented in the wxWidgets gui
- feature not required for legacy SDL (releases keys on focus change)
- removed duplicate code in keyboard.cc
- TODO: implement feature in the win32 gui if required
The timers now have a new member 'realtime' and they are driven by the
selected engine. The VGA update timer and the status LED timer now always use
the realtime mode, but the PIT and CMOS RTC depend on the clock options.
TODO: improve virtual timer to make operate in both modes at the same time.
The vga update code should always use the realtime mode and the pit timing
should depend on the clock option.