From 2ee144472e54c451a26b71489f1abde0dcd5bd64 Mon Sep 17 00:00:00 2001 From: "SND\\ckain_cp" Date: Wed, 2 Oct 2013 16:19:04 +0000 Subject: Fix Toshinden Subaru with a hack for now. Seems that xa.c needs some further debugging. git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@87349 e17a0e51-4ae3-4d35-97c3-1a29b211df97 --- plugins/dfsound/dma.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'plugins') diff --git a/plugins/dfsound/dma.c b/plugins/dfsound/dma.c index 15f44b11..ee3c8e54 100755 --- a/plugins/dfsound/dma.c +++ b/plugins/dfsound/dma.c @@ -44,23 +44,38 @@ unsigned short CALLBACK SPUreadDMA(void) void CALLBACK SPUreadDMAMem(unsigned short * pusPSXMem,int iSize) { int i; + unsigned char crc=0; spuStat |= STAT_DATA_BUSY; for(i=0;i>1]; // spu addr got by writeregister - spuAddr+=2; // inc spu addr + crc|=*pusPSXMem++=spuMem[spuAddr>>1]; // spu addr got by writeregister + spuAddr+=2; // inc spu addr + spuMem[spuAddr>>1]; - // guess based on Vib Ribbon (below) + // guess based on Vib Ribbon (below) if(spuAddr>0x7ffff) break; } iSpuAsyncWait=0; + /* + /* Toshiden Subaru "story screen" hack. + /* + /* After character selection screen, the game checks values inside returned + /* SPU buffer and all values cannot be 0x0. + /* Due to XA timings(?) we return buffer that has only NULLs. + /* Setting little lag to MixXA() causes buffer to have some non-NULL values, + /* but causes garbage sound so this hack is preferable. + /* + /* Note: When messing with xa.c like fixing Suikoden II's demo video sound issue + /* this should be handled as well. + */ + if (crc == 0) *--pusPSXMem=0xFF; + spuStat &= ~STAT_DATA_BUSY; spuStat &= ~STAT_DMA_NON; spuStat &= ~STAT_DMA_W; -- cgit v1.2.3