mirror of
https://github.com/TomHarte/CLK.git
synced 2024-11-21 21:33:54 +00:00
Start write-up on audio generation.
parent
e3146840e8
commit
8416337191
@ -63,4 +63,24 @@ The unexpanded 64kb machine divides this up as:
|
||||
|
||||
The 128kb machine adds a further four banks of RAM at F8–FB; further expansion RAM usually populates the 4mb address space downward from there.
|
||||
|
||||
At reset all four paging registers are cleared to 0, making the first 16kb of the EXOS ROM visible in all four segments of the Z80's addressing space.
|
||||
At reset all four paging registers are cleared to 0, making the first 16kb of the EXOS ROM visible in all four segments of the Z80's addressing space.
|
||||
|
||||
### Audio Generation
|
||||
|
||||
IstvánV provides detailed Hungarian notes [http://ep128.hu/Ep_Konyv/Exos.htm#242a](here). The following is a result of machine translating those via a couple of different online translators and synthesising the results.
|
||||
|
||||
#### Sound Generators
|
||||
|
||||
Each channel has a flip flop specifying its current state — high or low.
|
||||
|
||||
Standard operation: a 12-bit counter counts downwards from the specified reload value at a rate of 250 kHz (on a 4 Mhz machine, if bit 1 of port BFh is clear). It is reloaded when it overflows, and:
|
||||
* if no distortion is specified, the output switches state;
|
||||
* otherwise the specified polynomial output is sampled and becomes the generator's new state.
|
||||
|
||||
The polynomial counters run continuously at 250 kHz.
|
||||
|
||||
If high-pass filtering is enabled, any falling edge on the linked channel's output resets this channel's state.
|
||||
|
||||
If ring modulation is enabled, the channel's actual output is the XNOR of its output and that of the other channel.
|
||||
|
||||
In both cases, the other channel's output is that after the application of distortion, high-pass filtering and ring modulation.
|
Loading…
Reference in New Issue
Block a user