c0e249e993
This reverts commitdaf3b57e89
, reversing changes made to7a6e0b7d77
.
77 lines
1.3 KiB
C
77 lines
1.3 KiB
C
#pragma once
|
|
#include "stdafx.h"
|
|
|
|
struct GameboyHeader
|
|
{
|
|
//Starts at 0x134
|
|
char Title[11];
|
|
char ManufacturerCode[4];
|
|
uint8_t CgbFlag;
|
|
char LicenseeCode[2];
|
|
uint8_t SgbFlag;
|
|
uint8_t CartType;
|
|
uint8_t PrgRomSize;
|
|
uint8_t CartRamSize;
|
|
uint8_t DestCode;
|
|
uint8_t OldLicenseeCode;
|
|
uint8_t MaskRomVersion;
|
|
uint8_t HeaderChecksum;
|
|
uint8_t GlobalChecksum[2];
|
|
|
|
uint32_t GetPrgRomSize()
|
|
{
|
|
if(PrgRomSize < 16) {
|
|
return 0x8000 << PrgRomSize;
|
|
}
|
|
return 0x8000;
|
|
}
|
|
|
|
uint32_t GetCartRamSize()
|
|
{
|
|
if(CartType == 5 || CartType == 6) {
|
|
//MBC2 has 512x4bits of cart ram
|
|
return 0x200;
|
|
}
|
|
|
|
switch(CartRamSize) {
|
|
case 0: return 0;
|
|
case 1: return 0x800;
|
|
case 2: return 0x2000;
|
|
case 3: return 0x8000;
|
|
case 4: return 0x20000;
|
|
case 5: return 0x10000;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
bool HasBattery()
|
|
{
|
|
switch(CartType) {
|
|
case 0x03: case 0x06: case 0x09: case 0x0D:
|
|
case 0x0F: case 0x10: case 0x13: case 0x1B:
|
|
case 0x1E: case 0x22: case 0xFF:
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
string GetCartName()
|
|
{
|
|
int nameLength = 11;
|
|
for(int i = 0; i < 11; i++) {
|
|
if(Title[i] == 0) {
|
|
nameLength = i;
|
|
break;
|
|
}
|
|
}
|
|
string name = string(Title, nameLength);
|
|
|
|
size_t lastNonSpace = name.find_last_not_of(' ');
|
|
if(lastNonSpace != string::npos) {
|
|
return name.substr(0, lastNonSpace + 1);
|
|
} else {
|
|
return name;
|
|
}
|
|
}
|
|
};
|