1
0
Fork 0
forked from len0rd/rockbox

codec: cRSID: check whole load address

Due to a typo, only the high byte of the embedded load address was
checked to be empty. For a full check, high and low byte must be
evaluated, of course. Also, fixed in cRSID 1.3.

Change-Id: Ib0b701622b006ab4bb1791f07bf17b3b06a70719
This commit is contained in:
Wolfram Sang 2024-09-04 23:47:13 +02:00
parent 55e1a78cf8
commit 22b05c97a3

View file

@ -39,7 +39,7 @@ cRSID_SIDheader* cRSID_processSIDfile(cRSID_C64instance* C64, unsigned char* fil
for (i=1; i < (int)(sizeof(MagicStringPSID)-1); ++i) { if (SIDheader->MagicString[i] != MagicStringPSID[i]) return NULL; } for (i=1; i < (int)(sizeof(MagicStringPSID)-1); ++i) { if (SIDheader->MagicString[i] != MagicStringPSID[i]) return NULL; }
C64->RealSIDmode = ( SIDheader->MagicString[0] == 'R' ); C64->RealSIDmode = ( SIDheader->MagicString[0] == 'R' );
if (SIDheader->LoadAddressH==0 && SIDheader->LoadAddressH==0) { //load-address taken from first 2 bytes of the C64 PRG if (SIDheader->LoadAddressH==0 && SIDheader->LoadAddressL==0) { //load-address taken from first 2 bytes of the C64 PRG
C64->LoadAddress = (filedata[SIDheader->HeaderSize+1]<<8) + (filedata[SIDheader->HeaderSize+0]); C64->LoadAddress = (filedata[SIDheader->HeaderSize+1]<<8) + (filedata[SIDheader->HeaderSize+0]);
SIDdataOffset = SIDheader->HeaderSize+2; SIDdataOffset = SIDheader->HeaderSize+2;
} }