From 67e847366a951e5a761e3e9e93139cb1422b19e4 Mon Sep 17 00:00:00 2001 From: sum2012 Date: Thu, 19 Mar 2015 22:34:35 +0800 Subject: [PATCH 1/3] Add more log in sceAtrac --- Core/HLE/sceAtrac.cpp | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/Core/HLE/sceAtrac.cpp b/Core/HLE/sceAtrac.cpp index f0ac305e92..1818d21688 100644 --- a/Core/HLE/sceAtrac.cpp +++ b/Core/HLE/sceAtrac.cpp @@ -1032,15 +1032,18 @@ static u32 sceAtracGetBitrate(int atracID, u32 outBitrateAddr) { } else if (!atrac->data_buf) { ERROR_LOG(ME, "sceAtracGetBitrate(%i, %08x): no data", atracID, outBitrateAddr); return ATRAC_ERROR_NO_DATA; - } else { - DEBUG_LOG(ME, "sceAtracGetBitrate(%i, %08x)", atracID, outBitrateAddr); + } else { atrac->atracBitrate = ( atrac->atracBytesPerFrame * 352800 ) / 1000; if (atrac->codecType == PSP_MODE_AT_3_PLUS) atrac->atracBitrate = ((atrac->atracBitrate >> 11) + 8) & 0xFFFFFFF0; else atrac->atracBitrate = (atrac->atracBitrate + 511) >> 10; - if (Memory::IsValidAddress(outBitrateAddr)) + if (Memory::IsValidAddress(outBitrateAddr)) { Memory::Write_U32(atrac->atracBitrate, outBitrateAddr); + DEBUG_LOG(ME, "sceAtracGetBitrate(%i, %08x[%d])", atracID, outBitrateAddr, atrac->atracBitrate); + } + else + DEBUG_LOG_REPORT(ME, "sceAtracGetBitrate(%i, %08x[%d]) invalid address", atracID, outBitrateAddr, atrac->atracBitrate); } return 0; } @@ -1053,10 +1056,13 @@ static u32 sceAtracGetChannel(int atracID, u32 channelAddr) { } else if (!atrac->data_buf) { ERROR_LOG(ME, "sceAtracGetChannel(%i, %08x): no data", atracID, channelAddr); return ATRAC_ERROR_NO_DATA; - } else { - DEBUG_LOG(ME, "sceAtracGetChannel(%i, %08x)", atracID, channelAddr); - if (Memory::IsValidAddress(channelAddr)) + } else { + if (Memory::IsValidAddress(channelAddr)){ Memory::Write_U32(atrac->atracChannels, channelAddr); + DEBUG_LOG(ME, "sceAtracGetChannel(%i, %08x[%d])", atracID, channelAddr, atrac->atracChannels); + } + else + DEBUG_LOG_REPORT(ME, "sceAtracGetChannel(%i, %08x[%d]) invalid address", atracID, channelAddr, atrac->atracChannels); } return 0; } @@ -1227,14 +1233,18 @@ static u32 sceAtracGetSoundSample(int atracID, u32 outEndSampleAddr, u32 outLoop } else if (!atrac->data_buf) { ERROR_LOG(ME, "sceAtracGetSoundSample(%i, %08x, %08x, %08x): no data", atracID, outEndSampleAddr, outLoopStartSampleAddr, outLoopEndSampleAddr); return ATRAC_ERROR_NO_DATA; - } else { - DEBUG_LOG(ME, "sceAtracGetSoundSample(%i, %08x, %08x, %08x)", atracID, outEndSampleAddr, outLoopStartSampleAddr, outLoopEndSampleAddr); + } else { if (Memory::IsValidAddress(outEndSampleAddr)) Memory::Write_U32(atrac->endSample - 1, outEndSampleAddr); if (Memory::IsValidAddress(outLoopStartSampleAddr)) Memory::Write_U32(atrac->loopStartSample, outLoopStartSampleAddr); if (Memory::IsValidAddress(outLoopEndSampleAddr)) Memory::Write_U32(atrac->loopEndSample, outLoopEndSampleAddr); + if (Memory::IsValidAddress(outEndSampleAddr) && (Memory::IsValidAddress(outLoopStartSampleAddr)) && (Memory::IsValidAddress(outLoopEndSampleAddr))) + DEBUG_LOG(ME, "sceAtracGetSoundSample(%i, %08x[%08x], %08x[%d], %08x[%d])", atracID, outEndSampleAddr, atrac->endSample - 1, outLoopStartSampleAddr, atrac->loopStartSample, outLoopEndSampleAddr, atrac->loopEndSample); + else + DEBUG_LOG_REPORT(ME, "sceAtracGetSoundSample(%i, %08x[%08x], %08x[%d], %08x[%d]) invalid address", atracID, outEndSampleAddr, atrac->endSample - 1, outLoopStartSampleAddr, atrac->loopStartSample, outLoopEndSampleAddr, atrac->loopEndSample); + } return 0; } @@ -1262,11 +1272,17 @@ static u32 sceAtracGetStreamDataInfo(int atracID, u32 writeAddr, u32 writableByt Memory::Write_U32(atrac->first.writableBytes, writableBytesAddr); if (Memory::IsValidAddress(readOffsetAddr)) Memory::Write_U32(atrac->first.fileoffset, readOffsetAddr); - - DEBUG_LOG(ME, "sceAtracGetStreamDataInfo(%i, %08x[%08x], %08x[%08x], %08x[%08x])", atracID, + if ((Memory::IsValidAddress(writeAddr)) && (Memory::IsValidAddress(writableBytesAddr)) && (Memory::IsValidAddress(readOffsetAddr))) + DEBUG_LOG(ME, "sceAtracGetStreamDataInfo(%i, %08x[%08x], %08x[%08x], %08x[%08x])", atracID, writeAddr, atrac->first.addr, writableBytesAddr, atrac->first.writableBytes, readOffsetAddr, atrac->first.fileoffset); + else + //TODO:Use JPCSPtrace to correct + DEBUG_LOG_REPORT(ME, "sceAtracGetStreamDataInfo(%i, %08x[%08x], %08x[%08x], %08x[%08x]) invalid address", atracID, + writeAddr, atrac->first.addr, + writableBytesAddr, atrac->first.writableBytes, + readOffsetAddr, atrac->first.fileoffset); } return 0; } From b92c0538b67863d41b96918dafa416fb76ef562a Mon Sep 17 00:00:00 2001 From: sum2012 Date: Fri, 20 Mar 2015 21:36:31 +0800 Subject: [PATCH 2/3] Remove blank --- Core/HLE/sceAtrac.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/HLE/sceAtrac.cpp b/Core/HLE/sceAtrac.cpp index 1818d21688..f57269b952 100644 --- a/Core/HLE/sceAtrac.cpp +++ b/Core/HLE/sceAtrac.cpp @@ -1056,7 +1056,7 @@ static u32 sceAtracGetChannel(int atracID, u32 channelAddr) { } else if (!atrac->data_buf) { ERROR_LOG(ME, "sceAtracGetChannel(%i, %08x): no data", atracID, channelAddr); return ATRAC_ERROR_NO_DATA; - } else { + } else { if (Memory::IsValidAddress(channelAddr)){ Memory::Write_U32(atrac->atracChannels, channelAddr); DEBUG_LOG(ME, "sceAtracGetChannel(%i, %08x[%d])", atracID, channelAddr, atrac->atracChannels); @@ -1233,7 +1233,7 @@ static u32 sceAtracGetSoundSample(int atracID, u32 outEndSampleAddr, u32 outLoop } else if (!atrac->data_buf) { ERROR_LOG(ME, "sceAtracGetSoundSample(%i, %08x, %08x, %08x): no data", atracID, outEndSampleAddr, outLoopStartSampleAddr, outLoopEndSampleAddr); return ATRAC_ERROR_NO_DATA; - } else { + } else { if (Memory::IsValidAddress(outEndSampleAddr)) Memory::Write_U32(atrac->endSample - 1, outEndSampleAddr); if (Memory::IsValidAddress(outLoopStartSampleAddr)) From 1ce1da9e73515b05f000cdbff8b089da6f0507c7 Mon Sep 17 00:00:00 2001 From: sum2012 Date: Fri, 20 Mar 2015 21:38:13 +0800 Subject: [PATCH 3/3] Remove another blank --- Core/HLE/sceAtrac.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/HLE/sceAtrac.cpp b/Core/HLE/sceAtrac.cpp index f57269b952..72e71cbd95 100644 --- a/Core/HLE/sceAtrac.cpp +++ b/Core/HLE/sceAtrac.cpp @@ -1032,7 +1032,7 @@ static u32 sceAtracGetBitrate(int atracID, u32 outBitrateAddr) { } else if (!atrac->data_buf) { ERROR_LOG(ME, "sceAtracGetBitrate(%i, %08x): no data", atracID, outBitrateAddr); return ATRAC_ERROR_NO_DATA; - } else { + } else { atrac->atracBitrate = ( atrac->atracBytesPerFrame * 352800 ) / 1000; if (atrac->codecType == PSP_MODE_AT_3_PLUS) atrac->atracBitrate = ((atrac->atracBitrate >> 11) + 8) & 0xFFFFFFF0;