sdk-core
v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Toggle main menu visibility
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
20
typedef
struct
spu2_u16pair_
21
{
22
vu16 m_pair[2];
23
} spu2_u16pair_t;
24
25
typedef
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
37
typedef
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
44
typedef
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
94
typedef
struct
spu2_different_regs_
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
118
typedef
struct
spu2_core_regs_padded_
119
{
120
spu2_core_regs_t m_cregs;
121
vu16 padding[80];
122
} spu2_core_regs_padded_t;
123
124
typedef
struct
spu2_regs_main_
125
{
126
spu2_core_regs_padded_t m_core_regs[2];
127
} spu2_regs_main_t;
128
129
typedef
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
146
typedef
struct
spu2_mmio_hwport_
/* base => 0xBF900000 */
147
{
148
union
spu2_regs_union_
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__ */
spu2_core_regs_
Definition
spu2_mmio_hwport.h:45
spu2_core_regs_padded_
Definition
spu2_mmio_hwport.h:119
spu2_different_regs_
Definition
spu2_mmio_hwport.h:95
spu2_mmio_hwport_
Definition
spu2_mmio_hwport.h:147
spu2_regs_extra_
Definition
spu2_mmio_hwport.h:130
spu2_regs_main_
Definition
spu2_mmio_hwport.h:125
spu2_u16pair_
Definition
spu2_mmio_hwport.h:21
spu2_voice_address_
Definition
spu2_mmio_hwport.h:38
spu2_voice_params_
Definition
spu2_mmio_hwport.h:26
spu2_mmio_hwport_::spu2_regs_union_
Definition
spu2_mmio_hwport.h:149
core
common
include
spu2_mmio_hwport.h
Generated by
1.18.0