mirror of https://github.com/Washi1337/Emux.git
183 lines
5.4 KiB
C#
183 lines
5.4 KiB
C#
namespace Emux.GameBoy.Cartridge
|
|
{
|
|
/// <summary>
|
|
/// Provides a collection of valid (but not necessarily supported) cartridge types.
|
|
/// </summary>
|
|
public enum CartridgeType : byte
|
|
{
|
|
RomOnly = 0x00,
|
|
Mbc1 = 0x01,
|
|
Mbc1Ram = 0x02,
|
|
Mbc1RamBattery = 0x03,
|
|
Mbc2 = 0x05,
|
|
Mbc2Battery = 0x06,
|
|
RomRam = 0x8,
|
|
RomRamBattery = 0x9,
|
|
Mmm01 = 0xB,
|
|
Mmm01Ram = 0xC,
|
|
Mmm01RamBattery = 0xD,
|
|
Mbc3TimerBattery = 0xF,
|
|
Mbc3TimerRamBattery = 0x10,
|
|
Mbc3 = 0x11,
|
|
Mbc3Ram = 0x12,
|
|
Mbc3RamBattery = 0x13,
|
|
Mbc4 = 0x15,
|
|
Mbc4Ram = 0x16,
|
|
Mbc4RamBattery = 0x17,
|
|
Mbc5 = 0x19,
|
|
Mbc5Ram = 0x1A,
|
|
Mbc5RamBattery = 0x1B,
|
|
Mbc5Rumble = 0x1C,
|
|
Mbc5RumbleRam = 0x1D,
|
|
Mbc5RumbleRamBattery = 0x1E,
|
|
PocketCamera = 0xFC,
|
|
BandaiTama5 = 0xFD,
|
|
HuC3 = 0xFE,
|
|
HuC1RamBattery = 0xFF
|
|
}
|
|
|
|
public static class CartridgeTypeExtensions
|
|
{
|
|
public static bool IsRom(this CartridgeType type)
|
|
{
|
|
switch (type)
|
|
{
|
|
case CartridgeType.RomOnly:
|
|
case CartridgeType.RomRam:
|
|
case CartridgeType.RomRamBattery:
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static bool IsMbc1(this CartridgeType type)
|
|
{
|
|
switch (type)
|
|
{
|
|
case CartridgeType.Mbc1:
|
|
case CartridgeType.Mbc1Ram:
|
|
case CartridgeType.Mbc1RamBattery:
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static bool IsMbc2(this CartridgeType type)
|
|
{
|
|
switch (type)
|
|
{
|
|
case CartridgeType.Mbc2:
|
|
case CartridgeType.Mbc2Battery:
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static bool IsMbc3(this CartridgeType type)
|
|
{
|
|
switch (type)
|
|
{
|
|
case CartridgeType.Mbc3:
|
|
case CartridgeType.Mbc3Ram:
|
|
case CartridgeType.Mbc3RamBattery:
|
|
case CartridgeType.Mbc3TimerBattery:
|
|
case CartridgeType.Mbc3TimerRamBattery:
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static bool IsMbc4(this CartridgeType type)
|
|
{
|
|
switch (type)
|
|
{
|
|
case CartridgeType.Mbc4:
|
|
case CartridgeType.Mbc4Ram:
|
|
case CartridgeType.Mbc4RamBattery:
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static bool IsMbc5(this CartridgeType type)
|
|
{
|
|
switch (type)
|
|
{
|
|
case CartridgeType.Mbc5:
|
|
case CartridgeType.Mbc5Ram:
|
|
case CartridgeType.Mbc5RamBattery:
|
|
case CartridgeType.Mbc5Rumble:
|
|
case CartridgeType.Mbc5RumbleRam:
|
|
case CartridgeType.Mbc5RumbleRamBattery:
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static bool HasRam(this CartridgeType type)
|
|
{
|
|
switch (type)
|
|
{
|
|
case CartridgeType.Mbc1Ram:
|
|
case CartridgeType.Mbc3Ram:
|
|
case CartridgeType.Mbc3RamBattery:
|
|
case CartridgeType.Mbc3TimerRamBattery:
|
|
case CartridgeType.Mbc4Ram:
|
|
case CartridgeType.Mbc4RamBattery:
|
|
case CartridgeType.Mbc5Ram:
|
|
case CartridgeType.Mbc5RamBattery:
|
|
case CartridgeType.Mbc5RumbleRam:
|
|
case CartridgeType.Mbc5RumbleRamBattery:
|
|
case CartridgeType.HuC1RamBattery:
|
|
case CartridgeType.RomRam:
|
|
case CartridgeType.Mmm01Ram:
|
|
case CartridgeType.Mmm01RamBattery:
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static bool HasBattery(this CartridgeType type)
|
|
{
|
|
switch (type)
|
|
{
|
|
case CartridgeType.RomRamBattery:
|
|
case CartridgeType.Mbc1RamBattery:
|
|
case CartridgeType.Mbc2Battery:
|
|
case CartridgeType.Mbc3RamBattery:
|
|
case CartridgeType.Mbc3TimerBattery:
|
|
case CartridgeType.Mbc3TimerRamBattery:
|
|
case CartridgeType.Mbc4RamBattery:
|
|
case CartridgeType.Mbc5RamBattery:
|
|
case CartridgeType.Mmm01RamBattery:
|
|
case CartridgeType.HuC1RamBattery:
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static bool HasTimer(this CartridgeType type)
|
|
{
|
|
switch (type)
|
|
{
|
|
case CartridgeType.Mbc3TimerBattery:
|
|
case CartridgeType.Mbc3TimerRamBattery:
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static bool HasRumble(this CartridgeType type)
|
|
{
|
|
switch (type)
|
|
{
|
|
case CartridgeType.Mbc5Rumble:
|
|
case CartridgeType.Mbc5RumbleRam:
|
|
case CartridgeType.Mbc5RumbleRamBattery:
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
}
|