sdk-core v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Loading...
Searching...
No Matches
spu2_mmio_hwport.h
Go to the documentation of this file.
1/*
2# _____ ___ ____ ___ ____
3# ____| | ____| | | |____|
4# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5#-----------------------------------------------------------------------
6# Copyright ps2dev - http://www.ps2dev.org
7# Licenced under Academic Free License version 2.0
8# Review ps2sdk README & LICENSE files for further details.
9*/
10
16
17#ifndef __SPU2_MMIO_HWPORT__
18#define __SPU2_MMIO_HWPORT__
19
20typedef struct spu2_u16pair_
21{
22 vu16 m_pair[2];
23} spu2_u16pair_t;
24
25typedef struct spu2_voice_params_
26{
27 vu16 m_voll;
28 vu16 m_volr;
29 vu16 m_pitch;
30 vu16 m_adsr1;
31 vu16 m_adsr2;
32 vu16 m_envx;
33 vu16 m_volxl;
34 vu16 m_volxr;
35} spu2_voice_params_t;
36
37typedef struct spu2_voice_address_
38{
39 spu2_u16pair_t m_ssa;
40 spu2_u16pair_t m_lsax;
41 spu2_u16pair_t m_nax;
42} spu2_voice_address_t;
43
44typedef struct spu2_core_regs_
45{
46 spu2_voice_params_t m_voice_params[24]; /* 0x000 */
47 spu2_u16pair_t m_pmon; /* 0x180 */
48 spu2_u16pair_t m_non; /* 0x184 */
49 spu2_u16pair_t m_vmixl; /* 0x188 */
50 spu2_u16pair_t m_vmixel; /* 0x18c */
51 spu2_u16pair_t m_vmixr; /* 0x190 */
52 spu2_u16pair_t m_vmixer; /* 0x194 */
53 vu16 m_mmix; /* 0x198 */
54 vu16 m_attr; /* 0x19a */
55 spu2_u16pair_t m_irqa; /* 0x19c */
56 spu2_u16pair_t m_kon; /* 0x1a0 */
57 spu2_u16pair_t m_koff; /* 0x1a4 */
58 spu2_u16pair_t m_tsa; /* 0x1a8 */
59 vu16 m_xferdata; /* 0x1ac */
60 vu16 m_unk1ae; /* 0x1ae */
61 vu16 m_admas; /* 0x1b0 */
62 vu16 unk1b2[7]; /* 0x1b2 */
63 spu2_voice_address_t m_voice_address[24]; /* 0x1c0 */
64 spu2_u16pair_t m_esa; /* 0x2e0 */
65 spu2_u16pair_t m_apf1_size; /* 0x2e4 */
66 spu2_u16pair_t m_apf2_size; /* 0x2e8 */
67 spu2_u16pair_t m_same_l_dst; /* 0x2EC */
68 spu2_u16pair_t m_same_r_dst; /* 0x2F0 */
69 spu2_u16pair_t m_comb1_l_src; /* 0x2F4 */
70 spu2_u16pair_t m_comb1_r_src; /* 0x2F8 */
71 spu2_u16pair_t m_comb2_l_src; /* 0x2FC */
72 spu2_u16pair_t m_comb2_r_src; /* 0x300 */
73 spu2_u16pair_t m_same_l_src; /* 0x304 */
74 spu2_u16pair_t m_same_r_src; /* 0x308 */
75 spu2_u16pair_t m_diff_l_dst; /* 0x30C */
76 spu2_u16pair_t m_diff_r_dst; /* 0x310 */
77 spu2_u16pair_t m_comb3_l_src; /* 0x314 */
78 spu2_u16pair_t m_comb3_r_src; /* 0x318 */
79 spu2_u16pair_t m_comb4_l_src; /* 0x31C */
80 spu2_u16pair_t m_comb4_r_src; /* 0x320 */
81 spu2_u16pair_t m_diff_l_src; /* 0x324 */
82 spu2_u16pair_t m_diff_r_src; /* 0x328 */
83 spu2_u16pair_t m_apf1_l_dst; /* 0x32C */
84 spu2_u16pair_t m_apf1_r_dst; /* 0x330 */
85 spu2_u16pair_t m_apf2_l_dst; /* 0x334 */
86 spu2_u16pair_t m_apf2_r_dst; /* 0x338 */
87 vu16 m_eea; /* 0x33C */
88 vu16 unk33e; /* 0x33E */
89 spu2_u16pair_t m_endx; /* 0x340 */
90 vu16 m_statx; /* 0x344 */
91 vu16 unk346[13]; /* 0x346 */
92} spu2_core_regs_t;
93
95{
96 vu16 m_mvoll; /* 0x760 */
97 vu16 m_mvolr; /* 0x762 */
98 vu16 m_evoll; /* 0x764 */
99 vu16 m_evolr; /* 0x766 */
100 vu16 m_avoll; /* 0x768 */
101 vu16 m_avolr; /* 0x76A */
102 vu16 m_bvoll; /* 0x76C */
103 vu16 m_bvolr; /* 0x76E */
104 vu16 m_mvolxl; /* 0x770 */
105 vu16 m_mvolxr; /* 0x772 */
106 vu16 m_iir_vol; /* 0x774 */
107 vu16 m_comb1_vol; /* 0x776 */
108 vu16 m_comb2_vol; /* 0x778 */
109 vu16 m_comb3_vol; /* 0x77A */
110 vu16 m_comb4_vol; /* 0x77C */
111 vu16 m_wall_vol; /* 0x77E */
112 vu16 m_apf1_vol; /* 0x780 */
113 vu16 m_apf2_vol; /* 0x782 */
114 vu16 m_in_coef_l; /* 0x784 */
115 vu16 m_in_coef_r; /* 0x786 */
116} spu2_different_regs_t;
117
119{
120 spu2_core_regs_t m_cregs;
121 vu16 padding[80];
122} spu2_core_regs_padded_t;
123
124typedef struct spu2_regs_main_
125{
126 spu2_core_regs_padded_t m_core_regs[2];
127} spu2_regs_main_t;
128
129typedef struct spu2_regs_extra_
130{
131 spu2_core_regs_t core0_regs;
132 vu16 padding346[80];
133 spu2_core_regs_t core1_regs; /* 0x400 */
134 spu2_different_regs_t m_different_regs[2];
135 vu16 unk7b0[8];
136 vu16 m_spdif_out; /* 0x7c0 */
137 vu16 m_spdif_irqinfo; /* 0x7c2 */
138 vu16 unk7c4; /* 0x7c4 */
139 vu16 m_spdif_mode; /* 0x7c6 */
140 vu16 m_spdif_media; /* 0x7c8 */
141 vu16 m_unknown7ca; /* 0x7ca */
142 vu16 m_spdif_protect; /* 0x7cc */
143 vu16 unk7ce[25];
144} spu2_regs_extra_t;
145
146typedef struct spu2_mmio_hwport_ /* base => 0xBF900000 */
147{
149 {
150 spu2_regs_main_t m_m;
151 spu2_regs_extra_t m_e;
152 } m_u;
153} spu2_mmio_hwport_t;
154
155#if !defined(USE_SPU2_MMIO_HWPORT) && defined(_IOP)
156// cppcheck-suppress-macro constVariablePointer
157#define USE_SPU2_MMIO_HWPORT() spu2_mmio_hwport_t *const spu2_mmio_hwport = (spu2_mmio_hwport_t *)0xBF900000
158#endif
159#if !defined(USE_SPU2_MMIO_HWPORT)
160#define USE_SPU2_MMIO_HWPORT()
161#endif
162
163#endif /* __SPU2_MMIO_HWPORT__ */