Skip to content

Commit

Permalink
Merge pull request #19095 from hrydgard/mono-atrac-fix
Browse files Browse the repository at this point in the history
Add back a hack for the SasAudio/sceAtrac integration (mono audio).
  • Loading branch information
hrydgard committed Apr 29, 2024
2 parents 31749ac + 917f589 commit 020b539
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 0 deletions.
4 changes: 4 additions & 0 deletions Core/HLE/AtracCtx.h
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,10 @@ class AtracBase {
int GetOutputChannels() const {
return outputChannels_;
}
void SetOutputChannels(int channels) {
// Only used for sceSas audio. To be refactored away in the future.
outputChannels_ = channels;
}

int atracID_ = -1;

Expand Down
5 changes: 5 additions & 0 deletions Core/HLE/sceAtrac.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1007,6 +1007,11 @@ u32 AtracSasDecodeData(int atracID, u8* outbuf, u32 outbufPtr, u32 *SamplesNum,

int AtracSasGetIDByContext(u32 contextAddr) {
int atracID = (int)Memory::Read_U32(contextAddr + 0xfc);
// Restored old hack here that forces outputChannels_ to 1, since sceSas expects mono output, unlike normal usage.
// This is for savestate compatibility.
// I think it would be better to simply pass in a 1 as a parameter to atrac->DecodeData in AtracSasDecodeData above.
AtracBase *atrac = getAtrac(atracID);
atrac->SetOutputChannels(1);
return atracID;
}

Expand Down

0 comments on commit 020b539

Please sign in to comment.