@@ -9,9 +9,6 @@ namespace OldBit.Spectron.Files.Z80;
99public 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