private bool IsAsciiString(Rom rom, int start, int length) { for (int i = start; i < start + length; i++) { if (rom.Byte(i) < 0x20 || rom.Byte(i) > 0x7E) { return(false); } } return(true); }
private int GetHiRomScore(Rom rom) { int score = 0; if (rom.Word(0xFFDC) + rom.Word(0xFFDE) == 0xFFFF) { score += 2; } if (rom.Byte(0xFFDA) == 0x33) { score += 2; } if ((rom.Byte(0xFFD5) & 0xf) < 4) { score += 2; } if ((rom.Byte(0xFFFD) & 0x80) == 0) { score -= 4; } if ((1 << (rom.Byte(0xFFD7) - 7)) > 48) { score -= 1; } if (!IsAsciiString(rom, 0xFFB0, 6)) { score -= 1; } if (!IsAsciiString(rom, 0xFFC0, 20)) { score -= 1; } return(score); }
private void ReadHeader(Rom rom) { var startAddress = rom.BankSize - 0x40; rom.Header.Title = rom.String(startAddress, 21); rom.Header.Makeup = RomMakeup.Parse(rom.Byte(startAddress + 0x15)); rom.Header.Type = rom.Byte(startAddress + 0x16); rom.Header.RomSize = rom.Byte(startAddress + 0x17); rom.Header.SramSize = rom.Byte(startAddress + 0x18); rom.Header.CreatorLicenseIdCode = rom.Byte(startAddress + 0x19); rom.Header.VersionNum = rom.Byte(startAddress + 0x1B); rom.Header.ChecksumComplement = rom.Word(startAddress + 0x1C); rom.Header.Checksum = rom.Word(startAddress + 0x1E); }