Handle m_RomName for disks that don't have any disk ID (use CRC instead) and also forge disk header differently for plugins.

This commit is contained in:
LuigiBlood 2019-01-27 22:03:52 +01:00
parent 15ceec5d38
commit 29a97e6c8b
1 changed files with 19 additions and 8 deletions

View File

@ -49,18 +49,16 @@ bool CN64Disk::LoadDiskImage(const char * FileLoc)
}
char RomName[5];
//Get the disk ID from the disk image
RomName[0] = (char)*(m_DiskImage + 0x43673);
RomName[1] = (char)*(m_DiskImage + 0x43672);
RomName[2] = (char)*(m_DiskImage + 0x43671);
RomName[3] = (char)*(m_DiskImage + 0x43670);
RomName[4] = '\0';
m_RomName = RomName;
m_FileName = FileLoc;
if (*(uint32_t *)(&m_DiskImage[0x43670]) != 0)
{
m_DiskIdent.Format("%08X-%08X-C:%X", *(uint32_t *)(&m_DiskImage[0]), *(uint32_t *)(&m_DiskImage[0x43670]), m_DiskImage[0x43670]);
//Get the disk ID from the disk image
RomName[0] = (char)*(m_DiskImage + 0x43673);
RomName[1] = (char)*(m_DiskImage + 0x43672);
RomName[2] = (char)*(m_DiskImage + 0x43671);
RomName[3] = (char)*(m_DiskImage + 0x43670);
RomName[4] = '\0';
}
else
{
@ -70,7 +68,20 @@ bool CN64Disk::LoadDiskImage(const char * FileLoc)
crc += *(uint32_t *)(m_DiskImage + i);
}
m_DiskIdent.Format("%08X-%08X-C:%X", *(uint32_t *)(&m_DiskImage[0]), crc, m_DiskImage[0x43670]);
//Get the disk ID from the disk image
RomName[0] = m_DiskIdent[12];
RomName[1] = m_DiskIdent[11];
RomName[2] = m_DiskIdent[10];
RomName[3] = m_DiskIdent[9];
RomName[4] = '\0';
for (uint8_t i = 0; i < 8; i++)
{
m_DiskHeader[0x20 + (i ^ 3)] = (uint8_t)m_DiskIdent[9 + i];
}
}
m_RomName = RomName;
m_Country = (Country)m_DiskImage[0x43670];
if (g_Disk == this)