CSND Registers: Difference between revisions

No edit summary
Wwylele (talk | contribs)
No edit summary
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
=0x1EC03000=
?
=0x1EC03400=
=0x1EC03400=
The channel registers are based at 0x1EC03400(process virtual address). There's 0x20-bytes total for each channel slot, thus the base-address for a channel's slot is determined with: 0x1EC03400 + (channel_index*0x20). The below offsets are relative to these channel register slots.
The channel registers are based at 0x1EC03400(process virtual address). There's 0x20-bytes total for each channel slot, thus the base-address for a channel's slot is determined with: 0x1EC03400 + (channel_index*0x20). The below offsets are relative to these channel register slots.
Line 9: Line 12:
| 0x0
| 0x0
| 2
| 2
| REG_CSNDCHANX_CNT
| REG_CSNDCHANX_CNT. For Type0 [[CSND_Shared_Memory|Cmd]] 0xE, CSND module basically writes this value here: u16 (cmdword[2] & 0xFFFF).
|-
|-
| 0x2
| 0x2
Line 45: Line 48:
| 0x18
| 0x18
| 4
| 4
| When CSND module handles type0 Cmd 0xE with encoding=IMA-ADPCM, CSND module sets this to zero. After using Cmd 0xE, this register can be initialized via CSND module type0 Cmd 0xB.
| When CSND module handles type0 Cmd 0xE with encoding!=IMA-ADPCM, CSND module sets this to zero. This register can be initialized via CSND module type0 Cmd 0xB.
|-
|-
| 0x1C
| 0x1C
Line 51: Line 54:
| CSND module writes value zero here immediately after it writes to chanslotreg+0x18.
| CSND module writes value zero here immediately after it writes to chanslotreg+0x18.
|}
|}
=0x1EC03800=
There are two capture unit slot located at 0x1EC03800. Each slot has 0x10 bytes.