Made some changes that affect AX music. Please report any side effects.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@721 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
fb79bc9224
commit
6a54676914
|
@ -135,14 +135,63 @@ void CUCode_AX::MixAdd(short* _pBuffer, int _iSize)
|
||||||
{
|
{
|
||||||
AXParamBlock& pb = PBs[i];
|
AXParamBlock& pb = PBs[i];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// =======================================================================================
|
||||||
|
// Sequenced music fix - This seems to work allright. I'm not sure which detection method cause
|
||||||
|
// the least side effects, but pred_scale seems to be nice and simple. Please report any side
|
||||||
|
// effects.
|
||||||
|
// ---------------------------------------------------------------------------------------
|
||||||
|
if (!pb.running && pb.adpcm_loop_info.pred_scale)
|
||||||
|
/*
|
||||||
|
if (!pb.running &&
|
||||||
|
(pb.updates.num_updates[0] || pb.updates.num_updates[1] || pb.updates.num_updates[2]
|
||||||
|
|| pb.updates.num_updates[3] || pb.updates.num_updates[4])
|
||||||
|
)
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
pb.running = true;
|
||||||
|
}
|
||||||
|
// =======================================================================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// =======================================================================================
|
||||||
|
/*
|
||||||
|
Fix a problem introduced with the SSBM fix - Sometimes when a music stream ended sampleEnd
|
||||||
|
would become extremely high and the game would play random sound data from ARAM resulting in
|
||||||
|
a strange noise. This should take care of that. However, when you leave the Continue menu there's
|
||||||
|
some kind of buzing or interference noise in the music. But it goes away, so I guess it's not a
|
||||||
|
big issue. Please report any side effects.
|
||||||
|
*/
|
||||||
|
// ---------------------------------------------------------------------------------------
|
||||||
|
const u32 sampleEnd = (pb.audio_addr.end_addr_hi << 16) | pb.audio_addr.end_addr_lo;
|
||||||
|
if (sampleEnd > 0x80000000)
|
||||||
|
{
|
||||||
|
pb.running = 0;
|
||||||
|
|
||||||
|
// also reset all values if it makes any difference
|
||||||
|
pb.audio_addr.cur_addr_hi = 0;
|
||||||
|
pb.audio_addr.cur_addr_lo = 0;
|
||||||
|
pb.audio_addr.end_addr_hi = 0;
|
||||||
|
pb.audio_addr.end_addr_lo = 0;
|
||||||
|
pb.audio_addr.loop_addr_hi = 0;
|
||||||
|
pb.audio_addr.loop_addr_lo = 0;
|
||||||
|
|
||||||
|
pb.audio_addr.looping = 0;
|
||||||
|
pb.adpcm_loop_info.pred_scale = 0;
|
||||||
|
pb.adpcm_loop_info.yn1 = 0;
|
||||||
|
pb.adpcm_loop_info.yn2 = 0;
|
||||||
|
}
|
||||||
|
// =======================================================================================
|
||||||
|
|
||||||
if (pb.running)
|
if (pb.running)
|
||||||
{
|
{
|
||||||
// =======================================================================================
|
// =======================================================================================
|
||||||
// Set initial parameters
|
// Set initial parameters
|
||||||
// ---------------------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------------------
|
||||||
//constants
|
//constants
|
||||||
const u32 loopPos = (pb.audio_addr.loop_addr_hi << 16) | pb.audio_addr.loop_addr_lo;
|
const u32 loopPos = (pb.audio_addr.loop_addr_hi << 16) | pb.audio_addr.loop_addr_lo;
|
||||||
const u32 sampleEnd = (pb.audio_addr.end_addr_hi << 16) | pb.audio_addr.end_addr_lo;
|
|
||||||
const u32 ratio = (u32)(((pb.src.ratio_hi << 16) + pb.src.ratio_lo) * ratioFactor);
|
const u32 ratio = (u32)(((pb.src.ratio_hi << 16) + pb.src.ratio_lo) * ratioFactor);
|
||||||
|
|
||||||
//variables
|
//variables
|
||||||
|
@ -185,7 +234,7 @@ void CUCode_AX::MixAdd(short* _pBuffer, int _iSize)
|
||||||
|
|
||||||
|
|
||||||
// =======================================================================================
|
// =======================================================================================
|
||||||
// Streaming music and volume - A lot of music in Paper Mario use the exat same settings, namely
|
// Streaming music and volume - A lot of music in Paper Mario use the exact same settings, namely
|
||||||
// these:
|
// these:
|
||||||
// Base settings
|
// Base settings
|
||||||
// is_stream = 1
|
// is_stream = 1
|
||||||
|
|
Loading…
Reference in New Issue