diff --git a/SabreTools.Serialization/Models/Atari7800/Header.cs b/SabreTools.Serialization/Models/Atari7800/Header.cs index a99cabea..e3dfb86e 100644 --- a/SabreTools.Serialization/Models/Atari7800/Header.cs +++ b/SabreTools.Serialization/Models/Atari7800/Header.cs @@ -32,8 +32,8 @@ namespace SabreTools.Data.Models.Atari7800 /// Endianness possibly varies by version? /// Version 1 - Big-endian /// Version 2 - ????? - /// Version 3 - ????? - /// Version 4 - ????? + /// Version 3 - Documented as little-endian (unconfirmed) + /// Version 4 - Documented as little-endian (unconfirmed) /// public uint RomSizeWithoutHeader { get; set; } diff --git a/SabreTools.Serialization/Readers/Atari7800Cart.cs b/SabreTools.Serialization/Readers/Atari7800Cart.cs index 2720cf69..81a23881 100644 --- a/SabreTools.Serialization/Readers/Atari7800Cart.cs +++ b/SabreTools.Serialization/Readers/Atari7800Cart.cs @@ -66,7 +66,11 @@ namespace SabreTools.Serialization.Readers obj.HeaderVersion = data.ReadByteValue(); obj.MagicText = data.ReadBytes(16); obj.CartTitle = data.ReadBytes(32); - obj.RomSizeWithoutHeader = data.ReadUInt32BigEndian(); + if (obj.HeaderVersion == 1) + obj.RomSizeWithoutHeader = data.ReadUInt32BigEndian(); + else + obj.RomSizeWithoutHeader = data.ReadUInt32LittleEndian(); + obj.CartType = (CartType)data.ReadUInt16LittleEndian(); obj.Controller1Type = (ControllerType)data.ReadByteValue(); obj.Controller2Type = (ControllerType)data.ReadByteValue();