This is mainly taken from YAGCD. (Note: YAGCD reports the base address of AI as 0xCC006C00, because that is location of it on the GameCube. On the Wii it is 0xCD806C00.)
The abbreviation for Audio Interface is AI.
Registers
AI_CONTROL (0xCD006C00)
|
|
31
|
30
|
29
|
28
|
27
|
26
|
25
|
24
|
23
|
22
|
21
|
20
|
19
|
18
|
17
|
16
|
Access
|
U
|
Field
|
|
|
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Access
|
U
|
R/W
|
R/W
|
R/W
|
R/W
|
R/W
|
R/W
|
R/W
|
Field
|
|
RATE
|
SCRESET
|
AIINTVLD
|
AIINT
|
AIINTMSK
|
AFR
|
PSTAT
|
Field
|
Description
|
RATE
|
Sample Rate. Cleared is 48KHz, set is 32KHz.
|
SCRESET
|
Sample Counter Reset. Resets AI_AISCNT to 0.
|
AIINTVLD
|
This bit controls whether AIINT is affected by the AI_AIIT register matching AI_AISCNT. Once set, AIINT will hold its last value. If 0, match affects AIINT. If 1, AIINT holds last value.
|
AIINT
|
AI Interrupt Status and Clear. When read, holds the status of the AI Interrupt. If you set this bit, the Interrupt is cleared. The interrupt is generated when AIIT matches AI_AISCNT. Fires regardless of AIINTMSK.
|
AIINTMSK
|
AI Interrupt Mask. If 1, Interrupt is enabled. If 0, it is masked.
|
AFR
|
Auxiliary Frequency Register. Same values as RATE. Should only be changed when PSTAT is cleared.
|
PSTAT
|
Play status. 0 is stopped/paused, 1 is playing. This actually controls the AIS clock. This means that AI_AISCNT is increased only when PSTAT is 1.
|
AI_VOLUME (0xCD006C04)
|
|
31
|
30
|
29
|
28
|
27
|
26
|
25
|
24
|
23
|
22
|
21
|
20
|
19
|
18
|
17
|
16
|
Access
|
U
|
Field
|
|
|
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Access
|
R/W
|
R/W
|
Field
|
AVRR
|
AVRL
|
Field
|
Description
|
AVRR
|
The Right channel's volume. 0x00 is Muted, 0xFF is full volume.
|
AVRL
|
The Left channel's volume. 0x00 is Muted, 0xFF is full volume.
|
AI_AISCNT (0xCD006C08)
|
|
31
|
30
|
29
|
28
|
27
|
26
|
25
|
24
|
23
|
22
|
21
|
20
|
19
|
18
|
17
|
16
|
Access
|
R
|
Field
|
AISCNT(H)
|
|
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Access
|
R
|
Field
|
AISCNT(L)
|
Field
|
Description
|
AISCNT
|
Amount of samples played so far. Controlled with AI_CONTROL.
|
AI_AIIT (0xCD006C0C)
|
|
31
|
30
|
29
|
28
|
27
|
26
|
25
|
24
|
23
|
22
|
21
|
20
|
19
|
18
|
17
|
16
|
Access
|
R/W
|
Field
|
AIIT(H)
|
|
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0
|
Access
|
R/W
|
Field
|
AIIT(L)
|
Field
|
Description
|
AIIT
|
AI Interrupt Timing. This register indicates the stereo sample count to issue an audio interface interrupt to the main processor. The interrupt is issued when the value of the AI_AISCNT register matches the content of this register.
|