Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
hw_regs.h
Go to the documentation of this file.
1#ifndef _REVOLUTION_HW_REGS_H_
2#define _REVOLUTION_HW_REGS_H_
3
4#include <revolution/types.h>
5
6#ifdef __MWERKS__
7volatile u16 __VIRegs[59] AT_ADDRESS(0xCC002000);
8volatile u32 __PIRegs[12] AT_ADDRESS(0xCC003000);
9volatile u16 __MEMRegs[64] AT_ADDRESS(0xCC004000);
10volatile u16 __DSPRegs[] AT_ADDRESS(0xCC005000);
11volatile u32 __DIRegs[] AT_ADDRESS(0xCD006000);
12volatile u32 __SIRegs[0x100] AT_ADDRESS(0xCD006400);
13volatile u32 __EXIRegs[0x40] AT_ADDRESS(0xCD006800);
14volatile u32 __AIRegs[8] AT_ADDRESS(0xCD006C00);
15volatile u32 __ACRRegs[89] AT_ADDRESS(0xCD000000);
16volatile u32 __IPCRegs[4] AT_ADDRESS(0xCD000000);
17#else
18#define __VIRegs ((volatile u16 *)0xCC002000)
19#define __PIRegs ((volatile u32 *)0xCC003000)
20#define __MEMRegs ((volatile u16 *)0xCC004000)
21#define __DSPRegs ((volatile u16 *)0xCC005000)
22#define __DIRegs ((volatile u32 *)0xCD006000)
23#define __SIRegs ((volatile u32 *)0xCD006400)
24#define __EXIRegs ((volatile u32 *)0xCD006800)
25#define __AIRegs ((volatile u32 *)0xCD006C00)
26#define __ACRRegs ((volatile u32 *)0xCD000000)
27#define __IPCRegs ((volatile u32 *)0xCD000000)
28#endif
29
30// Offsets for __VIRegs
31
32// offsets for __VIRegs[i]
33#define VI_VERT_TIMING (0)
34#define VI_DISP_CONFIG (1)
35#define VI_HORIZ_TIMING_0L (2)
36#define VI_HORIZ_TIMING_0U (3)
37#define VI_HORIZ_TIMING_1L (4)
38#define VI_HORIZ_TIMING_1U (5)
39#define VI_VERT_TIMING_ODD (6)
40#define VI_VERT_TIMING_ODD_U (7)
41#define VI_VERT_TIMING_EVEN (8)
42#define VI_VERT_TIMING_EVEN_U (9)
43
44#define VI_BBI_ODD (10) // burst blanking interval
45#define VI_BBI_ODD_U (11) // burst blanking interval
46#define VI_BBI_EVEN (12) // burst blanking interval
47#define VI_BBI_EVEN_U (13) // burst blanking interval
48
49#define VI_TOP_FIELD_BASE_LEFT (14) // top in 2d, top of left pic in 3d
50#define VI_TOP_FIELD_BASE_LEFT_U (15) // top in 2d, top of left pic in 3d
51
52#define VI_TOP_FIELD_BASE_RIGHT (16) // top of right pic in 3d
53#define VI_TOP_FIELD_BASE_RIGHT_U (17) // top of right pic in 3d
54
55#define VI_BTTM_FIELD_BASE_LEFT (18) // bottom in 2d, bottom of left pic in 3d
56#define VI_BTTM_FIELD_BASE_LEFT_U (19) // bottom in 2d, bottom of left pic in 3d
57
58#define VI_BTTM_FIELD_BASE_RIGHT (20) // bottom of right pic in 3d
59#define VI_BTTM_FIELD_BASE_RIGHT_U (21) // bottom of right pic in 3d
60
61#define VI_VERT_COUNT (22) // vertical display position
62#define VI_HORIZ_COUNT (23) // horizontal display position
63
64#define VI_DISP_INT_0 (24) // display interrupt 0L
65#define VI_DISP_INT_0U (25) // display interrupt 0U
66#define VI_DISP_INT_1 (26) // display interrupt 1L
67#define VI_DISP_INT_1U (27) // display interrupt 1U
68#define VI_DISP_INT_2 (28) // display interrupt 2L
69#define VI_DISP_INT_2U (29) // display interrupt 2U
70#define VI_DISP_INT_3 (30) // display interrupt 3L
71#define VI_DISP_INT_3U (31) // display interrupt 3U
72
73#define VI_HSW (36) // horizontal scaling width
74#define VI_HSR (37) // horizontal scaling register
75
76#define VI_FCT_0 (38) // filter coefficient table 0L
77#define VI_FCT_0U (39) // filter coefficient table 0U
78#define VI_FCT_1 (40) // filter coefficient table 1L
79#define VI_FCT_1U (41) // filter coefficient table 1U
80#define VI_FCT_2 (42) // filter coefficient table 2L
81#define VI_FCT_2U (43) // filter coefficient table 2U
82#define VI_FCT_3 (44) // filter coefficient table 3L
83#define VI_FCT_3U (45) // filter coefficient table 3U
84#define VI_FCT_4 (46) // filter coefficient table 4L
85#define VI_FCT_4U (47) // filter coefficient table 4U
86#define VI_FCT_5 (48) // filter coefficient table 5L
87#define VI_FCT_5U (49) // filter coefficient table 5U
88#define VI_FCT_6 (50) // filter coefficient table 6L
89#define VI_FCT_6U (51) // filter coefficient table 6U
90
91#define VI_CLOCK_SEL (54) // clock select
92#define VI_DTV_STAT (55) // DTV status
93
94#define VI_WIDTH (56)
95
96// offsets for __DSPRegs[i]
97#define DSP_MAILBOX_IN_HI (0)
98#define DSP_MAILBOX_IN_LO (1)
99#define DSP_MAILBOX_OUT_HI (2)
100#define DSP_MAILBOX_OUT_LO (3)
101#define DSP_CONTROL_STATUS (5)
102
103#define DSP_ARAM_SIZE (9)
104#define DSP_ARAM_MODE (11)
105#define DSP_ARAM_REFRESH (13)
106#define DSP_ARAM_DMA_MM_HI (16) // Main mem address
107#define DSP_ARAM_DMA_MM_LO (17)
108#define DSP_ARAM_DMA_ARAM_HI (18) // ARAM address
109#define DSP_ARAM_DMA_ARAM_LO (19)
110#define DSP_ARAM_DMA_SIZE_HI (20) // DMA buffer size
111#define DSP_ARAM_DMA_SIZE_LO (21)
112
113#define DSP_DMA_START_HI (24) // DMA start address
114#define DSP_DMA_START_LO (25)
115#define DSP_DMA_CONTROL_LEN (27)
116#define DSP_DMA_BYTES_LEFT (29)
117
118#define DSP_DMA_START_FLAG (0x8000) // set to start DSP
119
120inline void ACRWriteReg(u32 offset, u32 val) {
121 __ACRRegs[offset >> 2] = val;
122}
123
125 return __ACRRegs[offset >> 2];
126}
127
128#endif
static s32 offset
Definition WUD.c:1669
volatile u16 __VIRegs[59] AT_ADDRESS(0xCC002000)
unsigned long u32
Definition types.h:12
unsigned short int u16
Definition types.h:10
void ACRWriteReg(u32 offset, u32 val)
Definition hw_regs.h:120
u32 ACRReadReg(u32 offset)
Definition hw_regs.h:124