minor code refactoring, to simplify BizHawk support (#958)

This commit is contained in:
SuuperW 2021-01-22 12:05:07 -06:00 committed by GitHub
parent f259fd9755
commit 34da7f5cc3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 19 deletions

View File

@ -88,6 +88,29 @@ void DeInit()
if (Firmware) delete[] Firmware;
}
u32 FixFirmwareLength(u32 originalLength)
{
if (originalLength != 0x20000 && originalLength != 0x40000 && originalLength != 0x80000)
{
printf("Bad firmware size %d, ", originalLength);
// pick the nearest power-of-two length
originalLength |= (originalLength >> 1);
originalLength |= (originalLength >> 2);
originalLength |= (originalLength >> 4);
originalLength |= (originalLength >> 8);
originalLength |= (originalLength >> 16);
originalLength++;
// ensure it's a sane length
if (originalLength > 0x80000) originalLength = 0x80000;
else if (originalLength < 0x20000) originalLength = 0x20000;
printf("assuming %d\n", originalLength);
}
return originalLength;
}
void Reset()
{
if (Firmware) delete[] Firmware;
@ -109,25 +132,7 @@ void Reset()
fseek(f, 0, SEEK_END);
FirmwareLength = (u32)ftell(f);
if (FirmwareLength != 0x20000 && FirmwareLength != 0x40000 && FirmwareLength != 0x80000)
{
printf("Bad firmware size %d, ", FirmwareLength);
// pick the nearest power-of-two length
FirmwareLength |= (FirmwareLength >> 1);
FirmwareLength |= (FirmwareLength >> 2);
FirmwareLength |= (FirmwareLength >> 4);
FirmwareLength |= (FirmwareLength >> 8);
FirmwareLength |= (FirmwareLength >> 16);
FirmwareLength++;
// ensure it's a sane length
if (FirmwareLength > 0x80000) FirmwareLength = 0x80000;
else if (FirmwareLength < 0x20000) FirmwareLength = 0x20000;
printf("assuming %d\n", FirmwareLength);
}
FirmwareLength = FixFirmwareLength((u32)ftell(f));
Firmware = new u8[FirmwareLength];

View File

@ -26,6 +26,8 @@ namespace SPI_Firmware
void SetupDirectBoot();
u32 FixFirmwareLength(u32 originalLength);
u8 GetConsoleType();
u8 GetWifiVersion();
u8 GetNWifiVersion();