NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
SIHardware.h
1#ifndef RVL_SDK_SI_HARDWARE_H
2#define RVL_SDK_SI_HARDWARE_H
3#include <types.h>
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8/**
9 * SI hardware registers
10 */
11volatile u32 SI_HW_REGS[] : 0xCD006400;
12
13/**
14 * Hardware register indexes
15 */
16typedef enum {
17 SI_SIC0OUTBUF, //!< 0xCD006400
18 SI_SIC0INBUFH, //!< 0xCD006404
19 SI_SIC0INBUFL, //!< 0xCD006408
20 SI_SIC1OUTBUF, //!< 0xCD00640C
21 SI_SIC1INBUFH, //!< 0xCD006410
22 SI_SIC1INBUFL, //!< 0xCD006414
23 SI_SIC2OUTBUF, //!< 0xCD006418
24 SI_SIC2INBUFH, //!< 0xCD00641C
25 SI_SIC2INBUFL, //!< 0xCD006420
26 SI_SIC3OUTBUF, //!< 0xCD006424
27 SI_SIC3INBUFH, //!< 0xCD006428
28 SI_SIC3INBUFL, //!< 0xCD00642C
29 SI_SIPOLL, //!< 0xCD006430
30 SI_SICOMSCR, //!< 0xCD006434
31 SI_SISR, //!< 0xCD006438
32 SI_SIEXILK, //!< 0xCD00643C
33
34 // SI communication RAM
35 SI_RAM_BASE = (0xCD006480 - 0xCD006400) / sizeof(u32) //!< 0xCD006480
36};
37
38// SIPOLL - SI Poll Register
39#define SI_SIPOLL_X (0b1111111111 << 16)
40#define SI_SIPOLL_Y (0b11111111 << 8)
41
42// SICOMCSR - SI Communication Control Status Register
43#define SI_SICOMCSR_TCINT (1 << 31)
44#define SI_SICOMCSR_TCINTMSK (1 << 30)
45#define SI_SICOMCSR_COMERR (1 << 29)
46#define SI_SICOMCSR_RDSTINT (1 << 28)
47#define SI_SICOMCSR_RDSTINTMSK (1 << 27)
48#define SI_SICOMCSR_OUTLNGTH (0b1111111 << 16)
49#define SI_SICOMCSR_INLNGTH (0b1111111 << 8)
50#define SI_SICOMCSR_CHANNEL (0b11 << 1)
51#define SI_SICOMCSR_TSTART (1 << 0)
52
53// SISR - SI Status Register
54#define SI_SISR_WR (1 << 31)
55#define SI_SISR_RDST0 (1 << 29)
56#define SI_SISR_WRST0 (1 << 28)
57#define SI_SISR_NOREP0 (1 << 27)
58#define SI_SISR_COLL0 (1 << 26)
59#define SI_SISR_OVRUN0 (1 << 25)
60#define SI_SISR_UNRUN0 (1 << 24)
61#define SI_SISR_RDST1 (1 << 21)
62#define SI_SISR_WRST1 (1 << 20)
63#define SI_SISR_NOREP1 (1 << 19)
64#define SI_SISR_COLL1 (1 << 18)
65#define SI_SISR_OVRUN1 (1 << 17)
66#define SI_SISR_UNRUN1 (1 << 16)
67#define SI_SISR_RDST2 (1 << 13)
68#define SI_SISR_WRST2 (1 << 12)
69#define SI_SISR_NOREP2 (1 << 11)
70#define SI_SISR_COLL2 (1 << 10)
71#define SI_SISR_OVRUN2 (1 << 9)
72#define SI_SISR_UNRUN2 (1 << 8)
73#define SI_SISR_RDST3 (1 << 5)
74#define SI_SISR_WRST3 (1 << 4)
75#define SI_SISR_NOREP3 (1 << 3)
76#define SI_SISR_COLL3 (1 << 2)
77#define SI_SISR_OVRUN3 (1 << 1)
78#define SI_SISR_UNRUN3 (1 << 0)
79
80// SISR flags by channel
81// Ex: (SISR >> ((SI_MAX_CHAN-1) - chan) * 8)
82#define SI_RDST SI_SISR_RDST3
83#define SI_WRST SI_SISR_WRST3
84#define SI_NOREP SI_SISR_NOREP3
85#define SI_COLL SI_SISR_COLL3
86#define SI_OVRUN SI_SISR_OVRUN3
87#define SI_UNRUN SI_SISR_UNRUN3
88
89#ifdef __cplusplus
90}
91#endif
92#endif