Fixed checksum and CRC32 on add on ROMs.
This commit is contained in:
@@ -122,6 +122,10 @@ EXTSYM loadROM
|
||||
EXTSYM CalcChecksum
|
||||
EXTSYM BankCheck
|
||||
EXTSYM MirrorROM
|
||||
EXTSYM SplittedROM
|
||||
EXTSYM addOnStart
|
||||
EXTSYM addOnSize
|
||||
|
||||
|
||||
EXTSYM SetaCmdEnable,setaramdata
|
||||
EXTSYM setaaccessbankr8,setaaccessbankw8,setaaccessbankr8a,setaaccessbankw8a
|
||||
@@ -3755,12 +3759,19 @@ NEWSYM showinfogui
|
||||
je .nointlv
|
||||
mov dword[CSStatus2+12],'Yes '
|
||||
.nointlv
|
||||
|
||||
|
||||
; calculate CRC32
|
||||
xor edx,edx
|
||||
mov eax,0FFFFFFFFh
|
||||
mov ecx,dword[NumofBytes]
|
||||
mov esi,[romdata]
|
||||
|
||||
;Only calculate Add on ROM?
|
||||
cmp byte[SplittedROM],1
|
||||
jne .calcloop
|
||||
mov ecx,dword[addOnSize]
|
||||
add esi,dword[addOnStart]
|
||||
|
||||
.calcloop
|
||||
mov dl,byte[esi]
|
||||
mov ebx,eax ;ebx = CRC32
|
||||
@@ -3805,6 +3816,11 @@ NEWSYM showinfogui
|
||||
add esi,[infoloc]
|
||||
add esi,1Eh
|
||||
mov ax,[Checksumvalue]
|
||||
;On add on ROMs we check the add on
|
||||
cmp byte[SplittedROM],1
|
||||
jne .check
|
||||
add esi,dword[addOnStart]
|
||||
.check
|
||||
cmp ax,[esi]
|
||||
jne .failed
|
||||
.passed2
|
||||
|
||||
@@ -61,6 +61,11 @@ unsigned int maxromspace;
|
||||
unsigned int curromspace;
|
||||
unsigned int infoloc;
|
||||
|
||||
bool SplittedROM;
|
||||
unsigned int addOnStart;
|
||||
unsigned int addOnSize;
|
||||
|
||||
|
||||
//Deinterleave functions
|
||||
bool validChecksum(unsigned char *ROM, int BankLoc)
|
||||
{
|
||||
@@ -314,7 +319,13 @@ extern unsigned short Checksumvalue;
|
||||
void CalcChecksum()
|
||||
{
|
||||
unsigned char *ROM = (unsigned char *)romdata;
|
||||
if (SPC7110Enable)
|
||||
|
||||
if (SplittedROM)
|
||||
{
|
||||
Checksumvalue = sum(ROM+addOnStart, addOnSize);
|
||||
Checksumvalue -= sum(&ROM[infoloc+addOnStart - 16], 48);
|
||||
}
|
||||
else if (SPC7110Enable)
|
||||
{
|
||||
Checksumvalue = sum(ROM, NumofBytes);
|
||||
if (NumofBanks == 96)
|
||||
@@ -598,10 +609,6 @@ void loadZipFile()
|
||||
}
|
||||
}
|
||||
|
||||
bool SplittedROM;
|
||||
int addOnStart;
|
||||
int addOnSize;
|
||||
|
||||
void SplitSetup(const char *basefile, unsigned int MirrorSystem)
|
||||
{
|
||||
unsigned char *ROM = (unsigned char *)romdata;
|
||||
|
||||
Reference in New Issue
Block a user