mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-04-21 21:59:47 +00:00
Split more things
This commit is contained in:
@@ -464,6 +464,7 @@ namespace SabreTools.Data.Models.NES
|
||||
/// <summary>
|
||||
/// Extended Console Type
|
||||
/// </summary>
|
||||
/// <remarks>Actually only 4 bits (bits 0-3 of flag 13)</remarks>
|
||||
public enum ExtendedConsoleType : byte
|
||||
{
|
||||
/// <summary>
|
||||
@@ -601,7 +602,7 @@ namespace SabreTools.Data.Models.NES
|
||||
/// <summary>
|
||||
/// Vs. Hardware Type
|
||||
/// </summary>
|
||||
/// <remarks>Actually only 4 bits</remarks>
|
||||
/// <remarks>Actually only 4 bits (bits 4-7 of flag 13)</remarks>
|
||||
public enum VsHardwareType : byte
|
||||
{
|
||||
/// <summary>
|
||||
@@ -643,7 +644,7 @@ namespace SabreTools.Data.Models.NES
|
||||
/// <summary>
|
||||
/// Vs. System Type
|
||||
/// </summary>
|
||||
/// <remarks>Actually only 4 bits</remarks>
|
||||
/// <remarks>Actually only 4 bits (bits 0-3 of flag 13)</remarks>
|
||||
public enum VsSystemType : byte
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
@@ -58,7 +58,7 @@ namespace SabreTools.Data.Models.NES
|
||||
/// This byte is not part of the official specification, and relatively
|
||||
/// few emulators honor it.
|
||||
/// </remarks>
|
||||
public byte ReservedBits23 { get; set; }
|
||||
public byte Byte10ReservedBits23 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// PRG RAM ($6000-$7FFF) present
|
||||
@@ -91,7 +91,7 @@ namespace SabreTools.Data.Models.NES
|
||||
/// This byte is not part of the official specification, and relatively
|
||||
/// few emulators honor it.
|
||||
/// </remarks>
|
||||
public byte ReservedBits67 { get; set; }
|
||||
public byte Byte10ReservedBits67 { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -101,14 +101,66 @@ namespace SabreTools.Data.Models.NES
|
||||
/// </summary>
|
||||
public CPUPPUTiming CPUPPUTiming { get; set; }
|
||||
|
||||
#region Byte 13
|
||||
|
||||
#region Standard System and PlayChoice-10
|
||||
|
||||
/// <summary>
|
||||
/// Vs. System Type and Extended Console Type
|
||||
/// Reserved byte, unused
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// When Byte 7 AND 3 =1: Vs. System Type
|
||||
/// When Byte 7 AND 3 =3: Extended Console Type
|
||||
/// Valid when <see cref="Header.ConsoleType"/> == <see cref="ConsoleType.StandardSystem"/>.
|
||||
/// Valid when <see cref="Header.ConsoleType"/> == <see cref="ConsoleType.PlayChoice10"/>.
|
||||
/// </remarks>
|
||||
public byte ExtendedSystemType { get; set; }
|
||||
public byte Reserved13 { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Vs. Unisystem
|
||||
|
||||
/// <summary>
|
||||
/// Vs. System Type
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Byte 13, Bits 0-3
|
||||
///
|
||||
/// Valid when <see cref="Header.ConsoleType"/> == <see cref="ConsoleType.VSUnisystem"/>
|
||||
/// </remarks>
|
||||
public VsSystemType VsSystemType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Vs. Hardware Type
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Byte 13, Bits 4-7
|
||||
///
|
||||
/// Valid when <see cref="Header.ConsoleType"/> == <see cref="ConsoleType.VSUnisystem"/>
|
||||
/// </remarks>
|
||||
public VsHardwareType VsHardwareType { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Extended Console Type
|
||||
|
||||
/// <summary>
|
||||
/// Extended Console Type
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Byte 13, Bits 0-3
|
||||
///
|
||||
/// Valid when <see cref="Header.ConsoleType"/> == <see cref="ConsoleType.ExtendedConsoleType"/>
|
||||
/// </remarks>
|
||||
public ExtendedConsoleType ExtendedConsoleType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Unknown reserved bits
|
||||
/// </summary>
|
||||
/// <remarks>Byte 13, Bits 4-7</remarks>
|
||||
public byte Byte13ReservedBits47 { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Number of miscellaneous ROMs present
|
||||
|
||||
@@ -147,7 +147,24 @@ namespace SabreTools.Serialization.Readers
|
||||
obj.ChrNvramShiftCount = (byte)((byte11 >> 4) & 0x0F);
|
||||
|
||||
obj.CPUPPUTiming = (CPUPPUTiming)data.ReadByteValue();
|
||||
obj.ExtendedSystemType = data.ReadByteValue();
|
||||
|
||||
// Byte 13
|
||||
byte byte13 = data.ReadByteValue();
|
||||
if (obj.ConsoleType == ConsoleType.VSUnisystem)
|
||||
{
|
||||
obj.VsSystemType = (VsSystemType)(byte13 & 0x0F);
|
||||
obj.VsHardwareType = (VsHardwareType)((byte13 >> 4) & 0x0F);
|
||||
}
|
||||
else if (obj.ConsoleType == ConsoleType.ExtendedConsoleType)
|
||||
{
|
||||
obj.ExtendedConsoleType = (ExtendedConsoleType)(byte13 & 0x0F);
|
||||
obj.Byte13ReservedBits47 = (byte)((byte13 >> 4) & 0x0F);
|
||||
}
|
||||
else
|
||||
{
|
||||
obj.Reserved13 = byte13;
|
||||
}
|
||||
|
||||
obj.MiscellaneousROMs = data.ReadByteValue();
|
||||
obj.DefaultExpansionDevice = (DefaultExpansionDevice)data.ReadByteValue();
|
||||
|
||||
@@ -181,10 +198,10 @@ namespace SabreTools.Serialization.Readers
|
||||
// Byte 10
|
||||
byte byte10 = data.ReadByteValue();
|
||||
obj.TVSystemExtended = (TVSystemExtended)(byte10 & 0x03);
|
||||
obj.ReservedBits23 = (byte)((byte10 >> 2) & 0x03);
|
||||
obj.Byte10ReservedBits23 = (byte)((byte10 >> 2) & 0x03);
|
||||
obj.PrgRamPresent = ((byte10 >> 4) & 0x01) == 0x01;
|
||||
obj.HasBusConflicts = ((byte10 >> 5) & 0x01) == 0x01;
|
||||
obj.ReservedBits67 = (byte)((byte10 >> 6) & 0x03);
|
||||
obj.Byte10ReservedBits67 = (byte)((byte10 >> 6) & 0x03);
|
||||
|
||||
obj.Padding = data.ReadBytes(5);
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ namespace SabreTools.Serialization.Wrappers
|
||||
builder.AppendLine(tvSystemExtended, " TV System Extended");
|
||||
|
||||
// Bits 2-3
|
||||
builder.AppendLine(header1.ReservedBits23, " Reserved bits 1-2");
|
||||
builder.AppendLine(header1.Byte10ReservedBits23, " Reserved bits 1-2");
|
||||
|
||||
// Bit 4
|
||||
string prgRamPresent = header1.PrgRamPresent ? "Present" : "Not present";
|
||||
@@ -114,7 +114,7 @@ namespace SabreTools.Serialization.Wrappers
|
||||
builder.AppendLine(header1.HasBusConflicts, " Has Bus Conflicts");
|
||||
|
||||
// Bits 6-7
|
||||
builder.AppendLine(header1.ReservedBits67, " Reserved bits 6-7");
|
||||
builder.AppendLine(header1.Byte10ReservedBits67, " Reserved bits 6-7");
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -166,20 +166,23 @@ namespace SabreTools.Serialization.Wrappers
|
||||
// Byte 13
|
||||
if (header.ConsoleType == ConsoleType.ExtendedConsoleType)
|
||||
{
|
||||
ExtendedConsoleType extendedConsoleType = (ExtendedConsoleType)(header2.ExtendedSystemType & 0x0F);
|
||||
string extendedConsoleTypeString = extendedConsoleType.FromExtendedConsoleType();
|
||||
string extendedConsoleTypeString = header2.ExtendedConsoleType.FromExtendedConsoleType();
|
||||
builder.AppendLine(extendedConsoleTypeString, " Extended console type");
|
||||
|
||||
builder.AppendLine(extendedConsoleTypeString, " Reserved bits");
|
||||
}
|
||||
else if (header.ConsoleType == ConsoleType.VSUnisystem)
|
||||
{
|
||||
VsSystemType vsSystemType = (VsSystemType)(header2.ExtendedSystemType & 0x0F);
|
||||
string vsSystemTypeString = vsSystemType.FromVsSystemType();
|
||||
string vsSystemTypeString = header2.VsSystemType.FromVsSystemType();
|
||||
builder.AppendLine(vsSystemTypeString, " Vs. system type");
|
||||
|
||||
VsHardwareType vsHardwareType = (VsHardwareType)(header2.ExtendedSystemType >> 4);
|
||||
string vsHardwareTypeString = vsHardwareType.FromVsHardwareType();
|
||||
string vsHardwareTypeString = header2.VsHardwareType.FromVsHardwareType();
|
||||
builder.AppendLine(vsHardwareTypeString, " Vs. hardware type");
|
||||
}
|
||||
else
|
||||
{
|
||||
builder.AppendLine(header2.Reserved13, " Reserved");
|
||||
}
|
||||
|
||||
// Byte 14
|
||||
builder.AppendLine(header2.MiscellaneousROMs, " Number of miscellaneous ROMs");
|
||||
|
||||
@@ -281,7 +281,7 @@ namespace SabreTools.Serialization.Wrappers
|
||||
if (ConsoleType != ConsoleType.ExtendedConsoleType)
|
||||
return ExtendedConsoleType.RegularSystem;
|
||||
|
||||
return (ExtendedConsoleType)(header2.ExtendedSystemType & 0x0F);
|
||||
return header2.ExtendedConsoleType;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -347,7 +347,7 @@ namespace SabreTools.Serialization.Wrappers
|
||||
if (ConsoleType != ConsoleType.VSUnisystem)
|
||||
return VsHardwareType.VsUnisystem;
|
||||
|
||||
return (VsHardwareType)(header2.ExtendedSystemType >> 4);
|
||||
return header2.VsHardwareType;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -367,7 +367,7 @@ namespace SabreTools.Serialization.Wrappers
|
||||
if (ConsoleType != ConsoleType.VSUnisystem)
|
||||
return VsSystemType.AnyRP2C03RC2C03Variant;
|
||||
|
||||
return (VsSystemType)(header2.ExtendedSystemType & 0x0F);
|
||||
return header2.VsSystemType;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user