From 843f236012496b60280f0f969171c956f8c59eed Mon Sep 17 00:00:00 2001 From: "SND\\shalma_cp" Date: Wed, 9 Feb 2011 01:25:31 +0000 Subject: dfsound -spu.c, registers.c- fix Xenogears anima relic dungeons (exp gain) Disabled git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@63123 e17a0e51-4ae3-4d35-97c3-1a29b211df97 --- plugins/dfsound/registers.c | 4 ++++ plugins/dfsound/spu.c | 36 ++++++++++++++++++++++-------------- 2 files changed, 26 insertions(+), 14 deletions(-) (limited to 'plugins') diff --git a/plugins/dfsound/registers.c b/plugins/dfsound/registers.c index 8ca150f2..66cff9a2 100644 --- a/plugins/dfsound/registers.c +++ b/plugins/dfsound/registers.c @@ -424,7 +424,11 @@ void SoundOn(int start,int end,unsigned short val) // SOUND ON PSX COMAND { if((val&1) && s_chan[ch].pStart) // mmm... start has to be set before key on !?! { +#if 0 + s_chan[ch].bLoopJump = 0; +#else s_chan[ch].bIgnoreLoop=0; +#endif s_chan[ch].bNew=1; // do this here, not in StartSound diff --git a/plugins/dfsound/spu.c b/plugins/dfsound/spu.c index bfe78c95..9650f45c 100644 --- a/plugins/dfsound/spu.c +++ b/plugins/dfsound/spu.c @@ -620,8 +620,17 @@ static void *MAINThread(void *arg) while(s_chan[ch].spos>=0x10000L) { if(s_chan[ch].iSBPos==28) // 28 reached? - { - start=s_chan[ch].pCurr; // set up the current pos + { +#if 0 + // Xenogears - Anima Relic dungeon (exp gain) + if( s_chan[ch].bLoopJump == 1 ) + s_chan[ch].pCurr = s_chan[ch].pLoop; + + s_chan[ch].bLoopJump = 0; +#endif + + + start=s_chan[ch].pCurr; // set up the current pos if (s_chan[ch].iSilent==1 || start == (unsigned char*)-1) // special "stop" sign { @@ -644,15 +653,6 @@ static void *MAINThread(void *arg) shift_factor=predict_nr&0xf; predict_nr >>= 4; flags=(int)*start;start++; - - -#if 0 - // Jungle Book - Rhythm 'n Groove - use external loop address - // - fixes music player (+IRQ generate) - if( flags&4 ) - s_chan[ch].pLoop=start-2; -#endif - // -------------------------------------- // @@ -709,7 +709,10 @@ static void *MAINThread(void *arg) silence means no volume (ADSR keeps playing!!) */ -#if 1 +#if 0 + if(flags&4) + s_chan[ch].pLoop=start-16; +#else // Jungle Book - Rhythm 'n Groove - use external loop address // - fixes music player (+IRQ generate) if((flags&4) && (s_chan[ch].bIgnoreLoop == 0)) @@ -726,8 +729,13 @@ static void *MAINThread(void *arg) // ...? //s_chan[ch].bIgnoreLoop = 0; - // Xenogears - 7 = play missing sounds - start = s_chan[ch].pLoop; + // Xenogears - 7 = play missing sounds +#if 0 + // set jump flag + pChannel->bLoopJump = 1; +#else + start = s_chan[ch].pLoop; +#endif // silence = keep playing..? if( (flags&2) == 0 ) { -- cgit v1.2.3