@@ -71,11 +71,11 @@ private static SimsObjectAsset DeserializeWithVersion(IoBuffer reader, int versi
7171 semiAttrs [ i ] = reader . ReadInt16 ( ) ;
7272 }
7373
74- // 8 unknown shorts called "data".
75- var dataArray = new short [ 8 ] ;
76- for ( var i = 0 ; i < dataArray . Length ; i ++ )
74+ // 8 shorts, read as the beginning of "data", this is called "temp"
75+ var temp = new short [ 8 ] ;
76+ for ( var i = 0 ; i < temp . Length ; i ++ )
7777 {
78- dataArray [ i ] = reader . ReadInt16 ( ) ;
78+ temp [ i ] = reader . ReadInt16 ( ) ;
7979 }
8080
8181 // Next is a number of shorts that depends on the exact version of the file.
@@ -86,12 +86,7 @@ private static SimsObjectAsset DeserializeWithVersion(IoBuffer reader, int versi
8686 _ => throw new NotImplementedException ( $ "SimObjectCodec not implemented for version { version : X} ") ,
8787 } ;
8888
89- var temp = new short [ 8 ] ;
90- for ( var i = 0 ; i < temp . Length ; i ++ )
91- {
92- temp [ i ] = reader . ReadInt16 ( ) ;
93- }
94- var data = new short [ numShorts - 8 ] ;
89+ var data = new short [ numShorts ] ;
9590 for ( var i = 0 ; i < data . Length ; i ++ )
9691 {
9792 data [ i ] = reader . ReadInt16 ( ) ;
@@ -122,6 +117,7 @@ private static SimsObjectAsset DeserializeWithVersion(IoBuffer reader, int versi
122117
123118 // Next is the number of object arrays. Each being a short array itself.
124119 var numObjectArrays = reader . ReadInt16 ( ) ;
120+ Debug . Log ( $ "numObjectArrays: { numObjectArrays } ") ;
125121 var shortArrays = new List < short [ ] > ( numObjectArrays ) ;
126122 for ( var i = 0 ; i < numObjectArrays ; i ++ )
127123 {
@@ -132,15 +128,15 @@ private static SimsObjectAsset DeserializeWithVersion(IoBuffer reader, int versi
132128 }
133129 shortArrays . Add ( objectArray ) ;
134130 }
135- Debug . Log ( $ "numObjectArrays: { numObjectArrays } ") ;
136131
137132 // An array of shorts. Unknown.
133+ Debug . Log ( $ " Position before numSecondShortArray: 0x{ reader . Position : X} ") ;
138134 var numSecondShortArray = reader . ReadInt16 ( ) ;
135+ Debug . Log ( $ "numSecondShortArrays: { numSecondShortArray } ") ;
139136 for ( var i = 0 ; i < numSecondShortArray ; i ++ )
140137 {
141138 reader . ReadInt16 ( ) ;
142139 }
143- Debug . Log ( $ "numSecondShortArrays: { numSecondShortArray } ") ;
144140
145141 var ownershipValue = reader . ReadInt32 ( ) ;
146142 Debug . Log ( $ "ownershipValue: { ownershipValue } ") ;
@@ -160,6 +156,7 @@ private static SimsObjectAsset DeserializeWithVersion(IoBuffer reader, int versi
160156
161157 // Read the cTSTreeStack, a set of cTreeStackElems, probably the edith execution stack?
162158 var numStackFrames = reader . ReadInt32 ( ) ;
159+ Debug . Log ( $ "numStackFrames: { numStackFrames } ") ;
163160 var frames = new SimsObjectStackFrame [ numStackFrames ] ;
164161 reader . ReadUInt32 ( ) ; // unknown
165162 for ( var i = 0 ; i < numStackFrames ; i ++ )
@@ -307,6 +304,24 @@ private static SimsObjectAsset DeserializeWithVersion(IoBuffer reader, int versi
307304 Debug . Log ( $ "{ overrideString1 } / { overrideString2 } / { overrideString3 } ") ;
308305 }
309306
307+ // Timers
308+ var numTimers = reader . ReadUInt32 ( ) ;
309+ for ( var i = 0 ; i < numTimers ; i ++ )
310+ {
311+ reader . ReadUInt32 ( ) ;
312+ reader . ReadUInt32 ( ) ;
313+ reader . ReadUInt16 ( ) ;
314+ reader . ReadUInt32 ( ) ;
315+ reader . ReadInt32 ( ) ;
316+ reader . ReadInt32 ( ) ;
317+ for ( var j = 0 ; j < 8 ; j ++ )
318+ {
319+ reader . ReadInt16 ( ) ;
320+ }
321+ }
322+
323+ // Maybe 6 int32s and 1 int16 here dependent on some flag in the file.
324+
310325 return new SimsObjectAsset ( tileLocationY : tileLocationY , tileLocationX : tileLocationX , level : level ,
311326 elevation : elevation , objectGroupId : objectGroupId , attrs : attrs , semiAttrs : semiAttrs , temp : temp ,
312327 data : data ,
0 commit comments