Files
2020-02-16 18:17:17 -05:00

42 lines
1.0 KiB
HolyC

U0 parseHeader(U8 *rom, ROMHeader *header)
{
I64 i;
header->name = CAlloc(24);
MemCpy(header->name, rom+0x7FC0, 20);
i = StrLen(header->name)-1;
while (header->name[i]==' ') { header->name[i]=NULL; i--; }
header->type = rom[0x7fd5] & 0xf;
header->speed = rom[0x7fd5] >> 4;
header->chips = rom[0x7fd6];
header->romSize = 0x400 << rom[0x7fd7];
header->ramSize = 0x400 << rom[0x7fd8];
header->hasSram = header->chips > 0;
header->banks = header->romSize / 0x8000;
header->sramSize = cond(header->hasSram, header->ramSize, 0);
if (header->hasSram) sram = MAlloc(header->ramSize);
}
U0 LoROM(U8 *filename)
{
// LoROM loader
MemSet(&header, NULL, sizeof(ROMHeader));
I64 rom_length;
rom = FileRead(filename, &rom_length);
// skip copier header
if (rom_length%1024)
{
rom += 512;
rom_length -= 512;
}
parseHeader(rom, &header);
if (header.romSize < rom_length)
{
"Incorrect romSize?\n";
return;
}
}