namespace SabreTools.Data.Models.NES
{
///
/// Console Type
///
/// Actually only 2 bits (bits 0-1 of flag 7)
public enum ConsoleType : byte
{
///
/// Nintendo Entertainment System/Family Computer
///
StandardSystem = 0x00,
///
/// VS Unisystem
///
VSUnisystem = 0x01,
///
/// PlayChoice-10 (8 KB of Hint Screen data stored after CHR data)
///
PlayChoice10 = 0x02,
///
/// Extended Console Type
///
ExtendedConsoleType = 0x03,
}
///
/// CPU/PPU Timing
///
public enum CPUPPUTiming : byte
{
///
/// NTSC NES
///
RP2C02 = 0x00,
///
/// Licensed PAL NES
///
RP2C07 = 0x01,
///
/// Multiple-region
///
MultipleRegion = 0x02,
///
/// Dendy
///
UA6538 = 0x03,
}
///
/// Default Expansion Device
///
public enum DefaultExpansionDevice : byte
{
///
/// Unspecified
///
Unspecified = 0x00,
///
/// Standard NES/Famicom controllers
///
StandardControllers = 0x01,
///
/// NES Four Score/Satellite with two additional standard controllers
///
NESFourScore = 0x02,
///
/// Famicom Four Players Adapter with two additional standard controllers
/// using the "simple" protocol
///
FamicomFourPlayersAdapter = 0x03,
///
/// Vs. System (1P via $4016)
///
VsSystem4016 = 0x04,
///
/// Vs. System (1P via $4017)
///
VsSystem4017 = 0x05,
///
/// Reserved
///
Reserved06 = 0x06,
///
/// Vs. Zapper
///
VsZapper = 0x07,
///
/// Zapper ($4017)
///
Zapper4017 = 0x08,
///
/// Two Zappers
///
TwoZappers = 0x09,
///
/// Bandai Hyper Shot Lightgun
///
BandaiHyperShotLightgun = 0x0A,
///
/// Power Pad Side A
///
PowerPadSideA = 0x0B,
///
/// Power Pad Side B
///
PowerPadSideB = 0x0C,
///
/// Family Trainer Side A
///
FamilyTrainerSideA = 0x0D,
///
/// Family Trainer Side B
///
FamilyTrainerSideB = 0x0E,
///
/// Arkanoid Vaus Controller (NES)
///
ArkanoidVausControllerNES = 0x0F,
///
/// Arkanoid Vaus Controller (Famicom)
///
ArkanoidVausControllerFamicom = 0x10,
///
/// Two Vaus Controllers plus Famicom Data Recorder
///
TwoVausControllersPlusFamicomDataRecorder = 0x11,
///
/// Konami Hyper Shot Controller
///
KonamiHyperShotController = 0x12,
///
/// Coconuts Pachinko Controller
///
CoconutsPachinkoController = 0x13,
///
/// Exciting Boxing Punching Bag (Blowup Doll)
///
ExcitingBoxingPunchingBag = 0x14,
///
/// Jissen Mahjong Controller
///
JissenMahjongController = 0x15,
///
/// 米澤 (Yonezawa) Party Tap
///
YonezawaPartyTap = 0x16,
///
/// Oeka Kids Tablet
///
OekaKidsTablet = 0x17,
///
/// Sunsoft Barcode Battler
///
SunsoftBarcodeBattler = 0x18,
///
/// Miracle Piano Keyboard
///
MiraclePianoKeyboard = 0x19,
///
/// Pokkun Moguraa Tap-tap Mat (Whack-a-Mole Mat and Mallet)
///
PokkunMoguraaTapTapMat = 0x1A,
///
/// Top Rider (Inflatable Bicycle)
///
TopRider = 0x1B,
///
/// Double-Fisted (Requires or allows use of two controllers by one player)
///
DoubleFisted = 0x1C,
///
/// Famicom 3D System
///
Famicom3DSystem = 0x1D,
///
/// Doremikko Keyboard
///
DoremikkoKeyboard = 0x1E,
///
/// R.O.B. Gyromite
///
ROBGyromite = 0x1F,
///
/// Famicom Data Recorder ("silent" keyboard)
///
FamicomDataRecorder = 0x20,
///
/// ASCII Turbo File
///
ASCIITurboFile = 0x21,
///
/// IGS Storage Battle Box
///
IGSStorageBattleBox = 0x22,
///
/// Family BASIC Keyboard plus Famicom Data Recorder
///
FamilyBASICKeyboardPlusFamicomDataRecorder = 0x23,
///
/// 东达 (Dōngdá) PEC Keyboard
///
DongdaPECKeyboard = 0x24,
///
/// 普澤 (Pǔzé, a.k.a. Bit Corp.) Bit-79 Keyboard
///
BitCorpBit79Keyboard = 0x25,
///
/// 小霸王 (Xiǎobàwáng, a.k.a. Subor) Keyboard
///
SuborKeyboard = 0x26,
///
/// 小霸王 (Xiǎobàwáng, a.k.a. Subor) Keyboard plus Macro Winners Mouse
///
SuborKeyboardPlusMacroWinnersMouse = 0x27,
///
/// 小霸王 (Xiǎobàwáng, a.k.a. Subor) Keyboard plus Subor Mouse via $4016
///
SuborKeyboardPlusSuborMouse4016 = 0x28,
///
/// SNES Mouse ($4016)
///
SNESMouse4016 = 0x29,
///
/// Multicart
///
Multicart = 0x2A,
///
/// Two SNES controllers replacing the two standard NES controllers
///
TwoSNESControllers = 0x2B,
///
/// RacerMate Bicycle
///
RacerMateBicycle = 0x2C,
///
/// U-Force
///
UForce = 0x2D,
///
/// R.O.B. Stack-Up
///
ROBStackUp = 0x2E,
///
/// City Patrolman Lightgun
///
CityPatrolmanLightgun = 0x2F,
///
/// Sharp C1 Cassette Interface
///
SharpC1CassetteInterface = 0x30,
///
/// Standard Controller with swapped Left-Right/Up-Down/B-A
///
StandardControllerWithSwappedInputs = 0x31,
///
/// Excalibur Sudoku Pad
///
ExcaliburSudokuPad = 0x32,
///
/// ABL Pinball
///
ABLPinball = 0x33,
///
/// Golden Nugget Casino extra buttons
///
GoldenNuggetCasinoExtraButtons = 0x34,
///
/// 科达 (Kēdá) Keyboard
///
KedaKeyboard = 0x35,
///
/// 小霸王 (Xiǎobàwáng, a.k.a. Subor) Keyboard plus Subor Mouse via $4017
///
SuborKeyboardPlusSuborMouse4017 = 0x36,
///
/// Port test controller
///
PortTestController = 0x37,
///
/// Bandai Multi Game Player Gamepad buttons
///
BandaiMultiGamePlayerGamepad = 0x38,
///
/// Venom TV Dance Mat
///
VenomTVDanceMat = 0x39,
///
/// LG TV Remote Control
///
LGTVRemoteControl = 0x3A,
///
/// Famicom Network Controller
///
FamicomNetworkController = 0x3B,
///
/// King Fishing Controller
///
KingFishingController = 0x3C,
///
/// Croaky Karaoke Controller
///
CroakyKaraokeController = 0x3D,
///
/// 科王 (Kēwáng, a.k.a. Kingwon) Keyboard
///
KingwonKeyboard = 0x3E,
///
/// 泽诚 (Zéchéng) Keyboard
///
ZechengKeyboard = 0x3F,
///
/// 小霸王 (Xiǎobàwáng, a.k.a. Subor) Keyboard plus L90-rotated PS/2 mouse in $4017
///
SuborKeyboardPlusL90RotatedPS2Mouse4017 = 0x40,
///
/// PS/2 Keyboard in UM6578 PS/2 port, PS/2 Mouse via $4017
///
PS2KeyboardInUM6578PS2PortPS2Mouse4017 = 0x41,
///
/// PS/2 Mouse in UM6578 PS/2 port
///
PS2MouseInUM6578PS2Port = 0x42,
///
/// 裕兴 (Yùxìng) Mouse via $4016
///
YuxingMouse4016 = 0x43,
///
/// 小霸王 (Xiǎobàwáng, a.k.a. Subor) Keyboard plus 裕兴 (Yùxìng)
/// Mouse mouse in $4016
///
SuborKeyboardPlusYuxingMouse4016 = 0x44,
///
/// Gigggle TV Pump
///
GigggleTVPump = 0x45,
///
/// 步步高 (Bùbùgāo, a.k.a. BBK) Keyboard plus R90-rotated PS/2 mouse in $4017
///
BBKKeyboardPlusR90RotatedPS2Mouse4017 = 0x46,
///
/// Magical Cooking
///
MagicalCooking = 0x47,
///
/// SNES Mouse ($4017)
///
SNESMouse4017 = 0x48,
///
/// Zapper ($4016)
///
Zapper4016 = 0x49,
///
/// Arkanoid Vaus Controller (Prototype)
///
ArkanoidVausControllerPrototype = 0x4A,
///
/// TV 麻雀 Game (TV Mahjong Game) Controller
///
TVMahjongGameController = 0x4B,
///
/// 麻雀激闘伝説 (Mahjong Gekitou Densetsu) Controller
///
MahjongGekitouDensetsuController = 0x4C,
///
/// 小霸王 (Xiǎobàwáng, a.k.a. Subor) Keyboard plus X-inverted PS/2 mouse in $4017
///
SuborKeyboardPlusXInvertedPS2Mouse4017 = 0x4D,
///
/// IBM PC/XT Keyboard
///
IBMPCXTKeyboard = 0x4E,
///
/// 小霸王 (Xiǎobàwáng, a.k.a. Subor) Keyboard plus Mega Book Mouse
///
SuborKeyboardPlusMegaBookMouse = 0x4F,
}
///
/// Extended Console Type
///
/// Actually only 4 bits (bits 0-3 of flag 13)
public enum ExtendedConsoleType : byte
{
///
/// Regular NES/Famicom/Dendy
///
RegularSystem = 0x00,
///
/// Nintendo Vs. System
///
NintendoVsSystem = 0x01,
///
/// Playchoice 10
///
Playchoice10 = 0x02,
///
/// Regular Famiclone, but with CPU that supports Decimal Mode
///
RegularFamicloneDecimalMode = 0x03,
///
/// Regular NES/Famicom with EPSM module or plug-through cartridge
///
RegularNESWithEPSM = 0x04,
///
/// V.R. Technology VT01 with red/cyan STN palette
///
VRTechnologyVT01 = 0x05,
///
/// V.R. Technology VT02
///
VRTechnologyVT02 = 0x06,
///
/// V.R. Technology VT03
///
VRTechnologyVT03 = 0x07,
///
/// V.R. Technology VT09
///
VRTechnologyVT09 = 0x08,
///
/// V.R. Technology VT32
///
VRTechnologyVT32 = 0x09,
///
/// V.R. Technology VT369
///
VRTechnologyVT369 = 0x0A,
///
/// UMC UM6578
///
UMCUM6578 = 0x0B,
///
/// Famicom Network System
///
FamicomNetworkSystem = 0x0C,
///
/// Reserved
///
ReservedD = 0x0D,
///
/// Reserved
///
ReservedE = 0x0E,
///
/// Reserved
///
ReservedF = 0x0F,
}
///
/// Nametable arrangement
///
/// Actually only 1 bit (bit 0 of flag 6)
public enum NametableArrangement : byte
{
///
/// Vertical arrangement ("horizontal mirrored") or mapper-controlled
///
/// CIRAM A10 = PPU A11
Vertical = 0x00,
///
/// Horizontal arrangement ("vertically mirrored")
///
/// CIRAM A10 = PPU A10
Horizontal = 0x01,
}
///
/// TV system (rarely used extension)
///
/// Byte 9
public enum TVSystem : byte
{
NTSC = 0x00,
PAL = 0x01,
}
///
/// TV system with extended values
///
/// Actually only 2 bits (bits 0-1 of flag 10)
public enum TVSystemExtended : byte
{
NTSC = 0x00,
DualCompatible1 = 0x01,
PAL = 0x02,
DualCompatible3 = 0x03,
}
///
/// Vs. Hardware Type
///
/// Actually only 4 bits (bits 4-7 of flag 13)
public enum VsHardwareType : byte
{
///
/// Vs. Unisystem (normal)
///
VsUnisystem = 0x00,
///
/// Vs. Unisystem (RBI Baseball protection)
///
VsUnisystemRBIBaseballProtection = 0x01,
///
/// Vs. Unisystem (TKO Boxing protection)
///
VsUnisystemTKOBoxingProtection = 0x02,
///
/// Vs. Unisystem (Super Xevious protection)
///
VsUnisystemSuperXeviousProtection = 0x03,
///
/// Vs. Unisystem (Vs. Ice Climber Japan protection)
///
VsUnisystemVsIceClimberJapanProtection = 0x04,
///
/// Vs. Dual System (normal)
///
VsDualSystem = 0x05,
///
/// Vs. Dual System (Raid on Bungeling Bay protection)
///
VsDualSystemRaidOnBungelingBayProtection = 0x06,
}
///
/// Vs. System Type
///
/// Actually only 4 bits (bits 0-3 of flag 13)
public enum VsSystemType : byte
{
///
/// Any RP2C03/RC2C03 variant
///
AnyRP2C03RC2C03Variant = 0x00,
///
/// Reserved
///
Reserved1 = 0x01,
///
/// RP2C04-0001
///
RP2C040001 = 0x02,
///
/// RP2C04-0002
///
RP2C040002 = 0x03,
///
/// RP2C04-0003
///
RP2C040003 = 0x04,
///
/// RP2C04-0004
///
RP2C040004 = 0x05,
///
/// Reserved
///
Reserved6 = 0x06,
///
/// Reserved
///
Reserved7 = 0x07,
///
/// RC2C05-01 (signature unknown)
///
RC2C0501 = 0x08,
///
/// RC2C05-02 ($2002 AND $3F =$3D)
///
RC2C0502 = 0x09,
///
/// RC2C05-03 ($2002 AND $1F =$1C)
///
RC2C0503 = 0x0A,
///
/// RC2C05-04 ($2002 AND $1F =$1B)
///
RC2C0504 = 0x0B,
///
/// Reserved
///
ReservedC = 0x0C,
///
/// Reserved
///
ReservedD = 0x0D,
///
/// Reserved
///
ReservedE = 0x0E,
///
/// Reserved
///
ReservedF = 0x0F,
}
}