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, } }