Cleaned up Base+Add on code.
This commit is contained in:
@@ -598,49 +598,64 @@ void loadZipFile()
|
||||
}
|
||||
}
|
||||
|
||||
bool SplittedROM;
|
||||
int addOnStart;
|
||||
int addOnSize;
|
||||
|
||||
void SplitSetup(const char *basefile, unsigned int MirrorSystem)
|
||||
{
|
||||
unsigned char *ROM = (unsigned char *)romdata;
|
||||
|
||||
curromspace = 0;
|
||||
if (maxromspace < addOnStart+addOnSize) { return; }
|
||||
memcpy(ROM+addOnStart, ROM, addOnSize);
|
||||
strcpy(ZOpenFileName, basefile);
|
||||
loadZipFile();
|
||||
if ((curromspace & 0x7FFF) == 512)
|
||||
{
|
||||
memmove(ROM, ROM+512, addOnStart);
|
||||
curromspace -= 512;
|
||||
}
|
||||
if (!curromspace) { return; }
|
||||
|
||||
switch (MirrorSystem)
|
||||
{
|
||||
case 1:
|
||||
memcpy(ROM+0x100000, ROM, 0x100000); //Mirror 8 to 16
|
||||
break;
|
||||
|
||||
case 2:
|
||||
memcpy(ROM+0x180000, ROM+0x100000, 0x80000); //Mirror 12 to 16
|
||||
memcpy(ROM+0x200000, ROM, 0x200000); //Mirror 16 to 32
|
||||
break;
|
||||
}
|
||||
|
||||
curromspace = addOnStart+addOnSize;
|
||||
SplittedROM = true;
|
||||
}
|
||||
|
||||
void SplitSupport()
|
||||
{
|
||||
unsigned char *ROM = (unsigned char *)romdata;
|
||||
SplittedROM = false;
|
||||
|
||||
//Same Game add on
|
||||
if (ROM[Hi+26] == 0x33 && curromspace == 0x80000 &&
|
||||
!ROM[Hi+21] && !ROM[Hi+22] && !ROM[Hi+23])
|
||||
{
|
||||
curromspace = 0;
|
||||
if (maxromspace < 0x280000) { return; }
|
||||
memcpy(ROM+0x200000, ROM, 0x80000);
|
||||
strcpy(ZOpenFileName, "SAMEGAME.ZIP");
|
||||
loadZipFile();
|
||||
if ((curromspace & 0x7FFF) == 512)
|
||||
{
|
||||
memmove(ROM, ROM+512, 0x200000);
|
||||
curromspace -= 512;
|
||||
}
|
||||
if (!curromspace) { return; }
|
||||
memcpy(ROM+0x100000, ROM, 0x100000); //Mirror 8 to 16
|
||||
curromspace = 0x280000;
|
||||
addOnStart = 0x200000;
|
||||
addOnSize = 0x80000;
|
||||
SplitSetup("SAMEGAME.ZIP", 1);
|
||||
}
|
||||
|
||||
//SD Gundam G-Next add on
|
||||
if (ROM[Lo+26] == 0x33 && curromspace == 0x80000 &&
|
||||
!ROM[Lo+21] && !ROM[Lo+22] && !ROM[Lo+23] && !strncmp(ROM+Lo, "GNEXT", 5))
|
||||
{
|
||||
curromspace = 0;
|
||||
if (maxromspace < 0x480000) { return; }
|
||||
memcpy(ROM+0x400000, ROM, 0x80000);
|
||||
strcpy(ZOpenFileName, "G-NEXT.ZIP");
|
||||
loadZipFile();
|
||||
if ((curromspace & 0x7FFF) == 512)
|
||||
{
|
||||
memmove(ROM, ROM+512, 0x400000);
|
||||
curromspace -= 512;
|
||||
}
|
||||
if (!curromspace) { return; }
|
||||
memcpy(ROM+0x180000, ROM+0x100000, 0x80000); //Mirror 12 to 16
|
||||
memcpy(ROM+0x200000, ROM, 0x200000); //Mirror 16 to 32
|
||||
curromspace = 0x480000;
|
||||
addOnStart = 0x400000;
|
||||
addOnSize = 0x80000;
|
||||
SplitSetup("G-NEXT.ZIP", 2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extern bool Sup48mbit;
|
||||
|
||||
Reference in New Issue
Block a user