PS2SDK
PS2 Homebrew Libraries
Loading...
Searching...
No Matches
s_f.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
13unsigned int SpuFlush(unsigned int ev)
14{
15 // Unofficial: Fixed _spu_RQ and _spu_RQmask access offsets
16 unsigned int retval;
17 unsigned int ev_tmp;
18
19 retval = 0;
20 ev_tmp = ev;
21 if ( ev_tmp == 0 )
22 {
23 ev_tmp = 0xFFFFFFFF;
24 }
25 if ( ((ev_tmp & SPU_EVENT_PITCHLFO) != 0) && (_spu_RQmask & 2) != 0 )
26 {
27 vu16 *regstmp1;
28
29 _spu_RQmask &= ~2u;
30 regstmp1 = &_spu_RXX[512 * _spu_core];
31 regstmp1[192] = _spu_RQ[4];
32 retval |= SPU_EVENT_PITCHLFO;
33 regstmp1[193] = _spu_RQ[5];
34 }
35 if ( ((ev_tmp & SPU_EVENT_NOISE) != 0) && (_spu_RQmask & 4) != 0 )
36 {
37 vu16 *regstmp2;
38
39 _spu_RQmask &= ~4u;
40 regstmp2 = &_spu_RXX[512 * _spu_core];
41 regstmp2[194] = _spu_RQ[6];
42 retval |= SPU_EVENT_NOISE;
43 regstmp2[195] = _spu_RQ[7];
44 }
45 if ( ((ev_tmp & SPU_EVENT_REVERB) != 0) && (_spu_RQmask & 8) != 0 )
46 {
47 vu16 *regstmp3;
48 _spu_RQmask &= ~8u;
49 regstmp3 = &_spu_RXX[512 * _spu_core];
50 regstmp3[198] = _spu_RQ[10];
51 regstmp3[202] = _spu_RQ[14];
52 regstmp3[199] = _spu_RQ[11];
53 retval |= SPU_EVENT_REVERB;
54 regstmp3[203] = _spu_RQ[15];
55 }
56 if ( ((ev_tmp & SPU_EVENT_KEY) != 0) && (_spu_RQmask & 1) != 0 )
57 {
58 vu16 *regstmp4;
59 int i1;
60
61 _spu_RQmask &= ~1u;
62 regstmp4 = &_spu_RXX[512 * _spu_core];
63 regstmp4[208] = _spu_RQ[0];
64 regstmp4[209] = _spu_RQ[1];
65 regstmp4[210] = _spu_RQ[2];
66 regstmp4[211] = _spu_RQ[3];
67 for ( i1 = 0; i1 < 4; i1 += 1 )
68 {
69 _spu_RQ[i1] = 0;
70 }
71 retval |= SPU_EVENT_KEY;
72 if ( (_spu_env & 1) != 0 )
73 _spu_keystat[_spu_core] = _spu_RQvoice;
74 }
75 return retval;
76}