PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
s_ini.c
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
11#include "libspu2_internal.h"
12
13u32 _spu_keystat[2] = {0u, 0u};
14u32 _spu_trans_mode = SPU_TRANSFER_BY_DMA;
15u32 _spu_rev_flag = 0u;
16u32 _spu_rev_reserve_wa = 0u;
17u32 _spu_rev_offsetaddr = 0u;
18SpuReverbAttr _spu_rev_attr = {0u, 0, {0, 0}, 0, 0};
19u32 _spu_RQvoice = 0u;
20u32 _spu_RQmask = 0u;
21s16 _spu_voice_centerNote[2][24] = {
22 {
23 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000,
24 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000,
25 },
26 {
27 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000,
28 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000, 0xc000,
29 }};
30u32 _spu_env = 0u;
31u32 _spu_isCalled = 0u;
32SpuIRQCallbackProc _spu_irq_callback = NULL;
33
34u16 gDMADeliverEvent;
35
36void _SpuInit(int mode)
37{
38 _spu_init(mode);
39 if ( !mode )
40 {
41 int v2;
42
43 for ( v2 = 0; v2 < 2; v2 += 1 )
44 {
45 int v4;
46
47 for ( v4 = 0; v4 < 24; v4 += 1 )
48 {
49 _spu_voice_centerNote[v2][v4] = -16384;
50 }
51 }
52 }
53 SpuStart();
54 if ( !mode )
55 {
56 _spu_rev_flag = 0;
57 _spu_rev_reserve_wa = 0;
58 _spu_rev_attr.mode = 0;
59 _spu_rev_attr.depth.left = 0;
60 _spu_rev_attr.depth.right = 0;
61 _spu_rev_attr.delay = 0;
62 _spu_rev_attr.feedback = 0;
63 _spu_rev_offsetaddr = SpuGetReverbEndAddr() - (8 * _spu_rev_workareasize[0] - 2);
64 _spu_FsetRXX(368, _spu_rev_offsetaddr, 1);
65 }
66 _spu_keystat[0] = 0;
67 _spu_keystat[1] = 0;
68 _spu_AllocBlockNum = 0;
69 _spu_AllocLastNum = 0;
70 _spu_memList = 0;
71 _spu_trans_mode = SPU_TRANSFER_BY_DMA;
72 _spu_transMode = 0;
73 _spu_RQmask = 0;
74 _spu_RQvoice = 0;
75 _spu_env = 0;
76}
77
78int _SpuDefaultCallback(void *userdata)
79{
80 (void)userdata;
81
82 _spu_irq_callback();
83 return 0;
84}
85
86void SpuStart(void)
87{
88 int v0;
89
90 v0 = 0;
91 _spu_isCalled = 1;
93 _SpuDataCallback(_spu_FiDMA);
94 _SpuAutoDMACallback(_spu_FiAutoDMA);
95 gDMADeliverEvent = 0;
97 EnableIntr(IOP_IRQ_DMA_SPU);
98 EnableIntr(IOP_IRQ_DMA_SPU2);
99 ReleaseIntrHandler(IOP_IRQ_SPU);
100 RegisterIntrHandler(IOP_IRQ_SPU, 1, _SpuDefaultCallback, &v0);
101}
int CpuEnableIntr()
Definition intrman.c:250
int RegisterIntrHandler(int irq, int mode, int(*handler)(void *), void *arg)
Definition intrman.c:125
int ReleaseIntrHandler(int irq)
Definition intrman.c:167
int CpuDisableIntr()
Definition intrman.c:238
int EnableIntr(int irq)
Definition intrman.c:346