From WiiBrew
| DSP |
| Access |
|---|
| Broadway | Full |
|---|
| Starlet | None |
|---|
| Registers |
|---|
| Base | 0x0c005000 |
|---|
| Length | 0x200 |
|---|
| Access size | 16/32 bits |
|---|
| Byte order | Big Endian |
|---|
| IRQs |
|---|
| Broadway | 6 |
|---|
|
These are mostly copied from YAGCD with some nice formatting glue.
As the Infobox states, the base of this is at physical address 0x0C005000 (software address 0xCC005000)
Registers
| DSP_MAILBOX_IN_H (0xCC005000)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| R/W
| R/W
|
| Field
| Set
| Data
|
| Field
| Description
|
| Set
| This must be set for the DSP to accept the data.
|
| Data
| This, combined with the Data in DSP_MAILBOX_IN_L is the data being sent to the DSP.
|
| DSP_MAILBOX_IN_L (0xCC005002)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| R/W
|
| Field
| Data
|
| Field
| Description
|
| Data
| This, combined with the Data in DSP_MAILBOX_IN_H is the data being sent to the DSP.
|
| DSP_MAILBOX_OUT_H (0xCC005004)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| R
| R
|
| Field
| Set
| Data
|
| Field
| Description
|
| Set
| This must be set for the data to be valid.
|
| Data
| This, combined with the Data in DSP_MAILBOX_OUT_L is the data being sent from the DSP.
|
| DSP_MAILBOX_OUT_L (0xCC005006)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| R
|
| Field
| Data
|
| Field
| Description
|
| Data
| This, combined with the Data in DSP_MAILBOX_OUT_H is the data being sent from the DSP.
|
| DSP_CONTROL_STATUS (0xCC00500A)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| U
| W
| W
| W
| W
| R/W
| W
| R/W
| W
| R/W
| R/W
| R/W
| R/W
|
| Field
|
| Reset
| ?
| DMAINT
| DMAINTMSK
| DSPINT
| ARINTMSK
| ARINT
| AIDINTMSK
| AIDINT
| HALT
| PIINT
| RES
|
| Field
| Description
|
| Reset
| Resets the DSP?
|
| DMAINT
| DSP DMA Interrupt Status
|
| DMAINTMSK
| DSP Interrupt Mask
|
| DSPINT
| DSP Interrupt Status. When read, set means Interrupt is active. Clear is no interrupts. Writing 0 does nothing, while writing 1 clears interrupt.
|
| ARINTMSK
| ARAM Interrupt Mask
|
| ARINT
| ARAM Interrupt Status. When read, set means Interrupt is active. Clear is no interrupts. Writing 0 does nothing, while writing 1 clears interrupt.
|
| AIDINTMSK
| AI Interrupt Mask
|
| AIDINT
| AI Interrupt Status. When read, set means Interrupt is active. Clear is no interrupts. Writing 0 does nothing, while writing 1 clears interrupt.
|
| HALT
| Halt DSP? When set, the DSP will halt. When cleared, the DSP will resume.
|
| PIINT
| DSP Interrupt Assertion? Setting asserts the DSP Interrupt.
|
| RES
| Writing 1 resets the DSP.
|
| DSP_AR_SIZE (0xCC005012)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| R/?
|
| Field
| Size
|
| Field
| Description
|
| Size
| I can only guess that it's the size of the ARAM.
|
| DSP_AR_MODE (0xCC005016)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| ?/W
|
| Field
| Mode
|
| Field
| Description
|
| Mode
| Some ARAM mode setting. Needs investigation.
|
| DSP_AR_REFRESH (0xCC00501A)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| ?
|
| Field
| Refresh
|
| Field
| Description
|
| Refresh
| Refreshes the ARAM?
|
| DSP_AR_DMA_SRC_H (0xCC005020)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| ?/W
|
| Field
| SRCADDR
|
| Field
| Description
|
| SRCADDR
| The High half-word of the DMA Source.
|
| DSP_AR_DMA_SRC_L (0xCC005022)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| ?/W
|
| Field
| SRCADDR
|
| Field
| Description
|
| SRCADDR
| The Low half-word of the DMA Source.
|
| DSP_AR_DMA_DST_H (0xCC005024)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| ?/W
|
| Field
| DSTADDR
|
| Field
| Description
|
| DSTADDR
| The High half-word of the DMA Destination in ARAM.
|
| DSP_AR_DMA_DST_L (0xCC005026)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| ?/W
|
| Field
| DSTADDR
|
| Field
| Description
|
| DSTADDR
| The Low half-word of the DMA Destination in ARAM.
|
| DSP_AR_DMA_SIZE_H (0xCC005028)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| ?/W
| ?/W
|
| Field
| Type
| Size
|
| Field
| Description
|
| Type
| The type of DMA transfer. If 0, Write to ARAM. If 1, Read from ARAM.
|
| Size
| The High half-word of the size of the DMA.
|
| DSP_AR_DMA_SIZE_L (0xCC00502A)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| ?/W
|
| Field
| Size
|
| Field
| Description
|
| Size
| The Low half-word of the size of the DMA.
|
| DSP_DMA_START_ADDR_H (0xCC005030)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| ?/W
|
| Field
| ADDR
|
| Field
| Description
|
| ADDR
| Not exactly sure what this is for. Top halfword of the address.
|
| DSP_DMA_START_ADDR_L (0xCC005032)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| ?/W
|
| Field
| ADDR
|
| Field
| Description
|
| ADDR
| Not exactly sure what this is for. Bottom halfword of the address.
|
| DSP_DMA_CONTROL_LENGTH (0xCC005036)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| ?/W
| ?/W
|
| Field
| CTRL
| LENGTH
|
| Field
| Description
|
| CTRL
| If set, start playing the sample. If cleared, stop playing.
|
| LENGTH
| Length of the sample divided by 32. The maximum value for this is 0x000FFFE0.
|
| DSP_DMA_BYTES_LEFT (0xCC00503A)
|
|
| 15
| 14
| 13
| 12
| 11
| 10
| 9
| 8
| 7
| 6
| 5
| 4
| 3
| 2
| 1
| 0
|
| Access
| R/?
|
| Field
| BYTES
|
| Field
| Description
|
| BYTES
| Count down to 0, counting how many bytes are left.
|