I've modified the Game Blaster and OPL2(Adlib) emulation to use those correct dividers to produce their sampling rates(512 for Game Blaster audio, 288(=4 times 72) for OPL2 audio, which is further divided by 4 to get the 80us counter(which already is divided by 4 to get the 320us timing)).
The Sound Blaster output sampling rate is now determined by the 14MHz clock(rounded to the higher sample rate). The sample rate used by the rendering of Sound Blaster audio is still based on the 1MHz divided by (256 - data), which is set for the duration of the playback, until a new rate is set(variable samplerate).
The Sound Source (7KHz) and Covox Speech Thing(software sample driven(output to device sets new voltage), with the renderer sampling the outputted software sample voltages at a 44kHz(44100Hz) sample rate) are unchanged. Basically, the Covox Speech Thing does the same as the Sound Blaster, only the sound blaster has more features(interrupts and automatic sample output using DMA).
The video card emulation(VGA-based) is unchanged, able to function as a VGA, CGA, MDA and Tseng ET4000/ET3000 graphics cards. This uses the old nanoseconds timing to provide compatibility with the different cards(25MHz, 28MHz, MDA clock, 14MHz and the various ET4000/ET3000 SVGA speeds).
Currently the following hardware runs based on the 14MHz clock generated by the CPU timings in the main loop:
- PIT(Sound rendering is based on nanoseconds timing)
- DMA
- Adlib
- Game Blaster
- Sound Blaster(Sound rendering is based on 14MHz clock. IRR, Reset timing and DMA transaction control are based on nanoseconds timing)
All other support and hardware use the nanoseconds timing(either uses it's own clocks or no clocks specified):
- Mouse emulation
- DRO player
- Parallel port
- Sound Source/Covox Speech Thing
- ET4000/ET3000/VGA/CGA/MDA CRT emulation
- Joystick emulation
- Audio rendering
- Timeout for too slow host CPUs
Is this correct>