11#include "libspu2_internal.h"
13void SpuSetKey(
int on_off,
unsigned int voice_bit)
15 unsigned int voice_bit_tmp;
17 voice_bit_tmp = voice_bit & 0xFFFFFF;
21 if ( (_spu_env & 1) != 0 )
23 _spu_RQ[2] = voice_bit_tmp & 0xFFFF;
24 _spu_RQ[3] = (voice_bit_tmp >> 16) & 0xFFFF;
26 _spu_RQvoice &= ~voice_bit_tmp;
27 if ( (_spu_RQ[0] & (u16)voice_bit_tmp) != 0 )
28 _spu_RQ[0] &= ~(u16)voice_bit_tmp;
29 if ( (_spu_RQ[1] & ((voice_bit_tmp >> 16) & 0xFFFF)) != 0 )
30 _spu_RQ[1] &= ~((voice_bit_tmp >> 16) & 0xFFFF);
34 _spu_RXX[512 * _spu_core + 210] = voice_bit_tmp & 0xFFFF;
35 _spu_RXX[512 * _spu_core + 211] = (voice_bit_tmp >> 16) & 0xFFFF;
36 _spu_keystat[_spu_core] &= ~voice_bit_tmp;
40 if ( (_spu_env & 1) != 0 )
42 _spu_RQ[0] = voice_bit_tmp & 0xFFFF;
43 _spu_RQ[1] = (voice_bit_tmp >> 16) & 0xFFFF;
45 _spu_RQvoice |= voice_bit_tmp;
46 if ( (_spu_RQ[2] & (u16)voice_bit_tmp) != 0 )
47 _spu_RQ[2] &= ~(u16)voice_bit_tmp;
48 if ( (_spu_RQ[3] & ((voice_bit_tmp >> 16) & 0xFFFF)) != 0 )
49 _spu_RQ[3] &= ~((voice_bit_tmp >> 16) & 0xFFFF);
53 _spu_RXX[512 * _spu_core + 208] = voice_bit_tmp & 0xFFFF;
54 _spu_RXX[512 * _spu_core + 209] = (voice_bit_tmp >> 16) & 0xFFFF;
55 _spu_keystat[_spu_core] |= voice_bit_tmp;