Skip to content

Commit 21ceac3

Browse files
committed
Fix Version property calculation
1 parent 2152b1e commit 21ceac3

2 files changed

Lines changed: 16 additions & 13 deletions

File tree

src/Spectron.Files/Z80/Types/Flags3.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public bool EmulateFullerAudioBox
5050
}
5151

5252
/// <summary>
53-
/// Gets or sets a modify hardware flag..
53+
/// Gets or sets a modify hardware flag.
5454
/// </summary>
5555
public bool ModifyHardware
5656
{

src/Spectron.Files/Z80/Z80Header.cs

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ namespace OldBit.Spectron.Files.Z80;
99
public sealed class Z80Header
1010
{
1111
private byte[] _data;
12-
private Flags1? _flags1;
13-
private Flags2? _flags2;
14-
private Flags3? _flags3;
1512

1613
/// <summary>
1714
/// Gets or sets the raw header data.
@@ -101,7 +98,7 @@ public byte R
10198
/// <summary>
10299
/// Gets or sets miscellaneous flags 1.
103100
/// </summary>
104-
public Flags1 Flags1 => _flags1 ??= new Flags1(Data);
101+
public Flags1 Flags1 => field ??= new Flags1(Data);
105102

106103
/// <summary>
107104
/// Gets or sets the DE register.
@@ -196,17 +193,23 @@ public byte IFF2
196193
/// <summary>
197194
/// Gets or sets miscellaneous flags 2.
198195
/// </summary>
199-
public Flags2 Flags2 => _flags2 ??= new Flags2(Data);
196+
public Flags2 Flags2 => field ??= new Flags2(Data);
200197

201198
/// <summary>
202199
/// Gets the version of the Z80 header.
203200
/// </summary>
204-
public int Version => _data.Length switch
201+
public int Version
205202
{
206-
30 => 1,
207-
53 => 2,
208-
_ => 3
209-
};
203+
get
204+
{
205+
if (Data[6] != 0 || Data[7] != 0)
206+
{
207+
return 1;
208+
}
209+
210+
return _data[30] == 23 ? 2 : 3;
211+
}
212+
}
210213

211214
/// <summary>
212215
/// Gets the length of the additional header data.
@@ -356,7 +359,7 @@ public Flags3? Flags3
356359
return null;
357360
}
358361

359-
return _flags3 ??= new Flags3(Data);
362+
return field ??= new Flags3(Data);
360363
}
361364
}
362365

@@ -400,7 +403,7 @@ public Z80Header()
400403
_data = new byte[headerSize + 2];
401404

402405
Data.SetWord(30, headerSize - 30);
403-
Flags1.IsDataCompressed = true;
406+
Flags1?.IsDataCompressed = true;
404407
}
405408

406409
/// <summary>

0 commit comments

Comments
 (0)