Skip to content
This repository has been archived by the owner on Oct 5, 2024. It is now read-only.

Audio Memory

coltonisgod234 edited this page Sep 17, 2024 · 5 revisions

The audio processing unit ("APU") in the system has 4 channels, and 4 voices per channel. each channel plays a different, non-configurable, type of wave, each channel plays a different wave:

OLD:

Ch # Wave type Byte indexes from 0x3000
Ch 0 Square 0x00, 0x01, 0x02, 0x03
Ch 1 Triangle 0x04, 0x05, 0x06, 0x07
Ch 2 Sawtooth 0x08, 0x09, 0x0a, 0x0b
Ch 3 Sine 0x0c, 0x0d, 0x0e, 0x0f

The high nibble of each byte holds an index into a table of frequencies (APU_PITCH_TALBE) the low nibble holds an index into a table of volume levels (currently not implemented)

NEW DESIGN (old one fucking sucks):

Ch # Wave type Format
Ch 0 Square melody pitch table
Ch 1 Triangle pitch table
Ch 2 Sine wave pitch table
Ch 3 Noise pitch table
Ch 4 Reserved Reserved
Ch 5 Pulse wave speed table
Ch 6 Square misc pitch table
Ch 7 Triangle melody pitch table
Ch 8 Triangle misc pitch table
Ch 9 Pulse wave #2 pitch table
Ch 10 configuration byte config
Clone this wiki locally