notaz.gp2x.de
/
pcsx_rearmed.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gpu_neon: don't crash on large primitives in enhancement mode
[pcsx_rearmed.git]
/
plugins
/
dfsound
/
registers.c
diff --git
a/plugins/dfsound/registers.c
b/plugins/dfsound/registers.c
index
5805899
..
ae7ed24
100644
(file)
--- a/
plugins/dfsound/registers.c
+++ b/
plugins/dfsound/registers.c
@@
-37,17
+37,19
@@
static void ReverbOn(int start,int end,unsigned short val);
// WRITE REGISTERS: called by main emu
\r
////////////////////////////////////////////////////////////////////////
\r
\r
// WRITE REGISTERS: called by main emu
\r
////////////////////////////////////////////////////////////////////////
\r
\r
-static const uint32_t ignore_dupe[
8
] = {
\r
+static const uint32_t ignore_dupe[
16
] = {
\r
// ch 0-15 c40 c80 cc0
\r
0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f,
\r
// ch 16-24 d40 control reverb
\r
// ch 0-15 c40 c80 cc0
\r
0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f, 0x7f7f7f7f,
\r
// ch 16-24 d40 control reverb
\r
- 0x7f7f7f7f, 0x7f7f7f7f, 0xff05ff0f, 0xffffffff
\r
+ 0x7f7f7f7f, 0x7f7f7f7f, 0xff05ff0f, 0xffffffff,
\r
+ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
\r
+ 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
\r
};
\r
\r
void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val,
\r
unsigned int cycles)
\r
{
\r
};
\r
\r
void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val,
\r
unsigned int cycles)
\r
{
\r
- int r = reg & 0xff
f
;
\r
+ int r = reg & 0xff
e
;
\r
int rofs = (r - 0xc00) >> 1;
\r
int changed = spu.regArea[rofs] != val;
\r
spu.regArea[rofs] = val;
\r
int rofs = (r - 0xc00) >> 1;
\r
int changed = spu.regArea[rofs] != val;
\r
spu.regArea[rofs] = val;
\r
@@
-119,6
+121,12
@@
void CALLBACK SPUwriteRegister(unsigned long reg, unsigned short val,
}
\r
return;
\r
}
\r
}
\r
return;
\r
}
\r
+ else if (0x0e00 <= r && r < 0x0e60)
\r
+ {
\r
+ int ch = (r >> 2) & 0x1f;
\r
+ log_unhandled("c%02d w %cvol %04x\n", ch, (r & 2) ? 'r' : 'l', val);
\r
+ spu.s_chan[ch].iVolume[(r >> 1) & 1] = (signed short)val >> 1;
\r
+ }
\r
\r
switch(r)
\r
{
\r
\r
switch(r)
\r
{
\r
@@
-300,7
+308,7
@@
rvbd:
\r
unsigned short CALLBACK SPUreadRegister(unsigned long reg)
\r
{
\r
\r
unsigned short CALLBACK SPUreadRegister(unsigned long reg)
\r
{
\r
- const unsigned long r
=reg&0xfff
;
\r
+ const unsigned long r
= reg & 0xffe
;
\r
\r
if(r>=0x0c00 && r<0x0d80)
\r
{
\r
\r
if(r>=0x0c00 && r<0x0d80)
\r
{
\r
@@
-323,6
+331,13
@@
unsigned short CALLBACK SPUreadRegister(unsigned long reg)
}
\r
}
\r
}
\r
}
\r
}
\r
}
\r
+ else if (0x0e00 <= r && r < 0x0e60)
\r
+ {
\r
+ int ch = (r >> 2) & 0x1f;
\r
+ int v = spu.s_chan[ch].iVolume[(r >> 1) & 1] << 1;
\r
+ log_unhandled("c%02d r %cvol %04x\n", ch, (r & 2) ? 'r' : 'l', v);
\r
+ return v;
\r
+ }
\r
\r
switch(r)
\r
{
\r
\r
switch(r)
\r
{
\r
@@
-478,6
+493,7
@@
static void SetVolumeL(unsigned char ch,short vol) // LEFT VOLUME
\r
vol&=0x3fff;
\r
spu.s_chan[ch].iLeftVolume=vol; // store volume
\r
\r
vol&=0x3fff;
\r
spu.s_chan[ch].iLeftVolume=vol; // store volume
\r
+ //spu.regArea[(0xe00-0xc00)/2 + ch*2 + 0] = vol << 1;
\r
}
\r
\r
////////////////////////////////////////////////////////////////////////
\r
}
\r
\r
////////////////////////////////////////////////////////////////////////
\r
@@
-505,6
+521,7
@@
static void SetVolumeR(unsigned char ch,short vol) // RIGHT VOLUME
vol&=0x3fff;
\r
\r
spu.s_chan[ch].iRightVolume=vol;
\r
vol&=0x3fff;
\r
\r
spu.s_chan[ch].iRightVolume=vol;
\r
+ //spu.regArea[(0xe00-0xc00)/2 + ch*2 + 1] = vol << 1;
\r
}
\r
\r
////////////////////////////////////////////////////////////////////////
\r
}
\r
\r
////////////////////////////////////////////////////////////////////////
\r