using System;
using System.ComponentModel.DataAnnotations;
using Aaru.CommonTypes.Enums;
namespace Aaru.Database.Models;
///
/// Information needed to rebuild an iNES/NES 2.0 header from a ROM hash
public class NesHeaderInfo : BaseModel
{
/// ROM hash
[StringLength(64)]
[Required]
public string Sha256 { get; set; }
/// If true vertical mirroring is hard-wired, horizontal or mapper defined otherwise
public bool NametableMirroring { get; set; }
/// If true a battery is present
public bool BatteryPresent { get; set; }
/// If true the four player screen mode is hardwired
public bool FourScreenMode { get; set; }
/// Mapper number (NES 2.0 when in conflict)
public ushort Mapper { get; set; }
/// Console type
public NesConsoleType ConsoleType { get; set; }
/// Submapper number
public byte Submapper { get; set; }
/// Timing mode
public NesTimingMode TimingMode { get; set; }
/// Vs. PPU type
public NesVsPpuType VsPpuType { get; set; }
/// Vs. hardware type
public NesVsHardwareType VsHardwareType { get; set; }
/// Extended console type
public NesExtendedConsoleType ExtendedConsoleType { get; set; }
/// Default expansion device
public NesDefaultExpansionDevice DefaultExpansionDevice { get; set; }
/// Date when model has been added to the database
public DateTime AddedWhen { get; set; }
/// Date when model was last modified
public DateTime ModifiedWhen { get; set; }
}