@@ -129,9 +129,11 @@ public async Task SaveGmpEntries(List<(uint PrimaryId, GimmickParameter GmpData)
129
129
130
130
// Resolve offsets, expanding on the first pass.
131
131
// (GMP files use an identical file structure to EQP files)
132
+
132
133
while ( ! clean )
133
134
{
134
135
clean = true ;
136
+ offsets . Clear ( ) ;
135
137
foreach ( var tuple in entries )
136
138
{
137
139
var offset = ResolveEqpEntryOffset ( file , ( int ) tuple . PrimaryId ) ;
@@ -281,9 +283,10 @@ public async Task SaveEqpEntries(List<(uint PrimaryId, EquipmentParameter EqpDat
281
283
var clean = false ;
282
284
283
285
// Resolve offsets, expanding on the first pass.
284
- while ( ! clean )
286
+ while ( ! clean )
285
287
{
286
288
clean = true ;
289
+ offsets . Clear ( ) ;
287
290
foreach ( var tuple in entries )
288
291
{
289
292
var offset = ResolveEqpEntryOffset ( file , ( int ) tuple . PrimaryId ) ;
@@ -310,7 +313,7 @@ public async Task SaveEqpEntries(List<(uint PrimaryId, EquipmentParameter EqpDat
310
313
}
311
314
312
315
313
- foreach ( var tuple in entries )
316
+ foreach ( var tuple in entries )
314
317
{
315
318
var offset = offsets [ tuple . PrimaryId ] ;
316
319
var slotOffset = EquipmentParameterSet . EntryOffsets [ tuple . EqpData . Slot ] ;
@@ -582,7 +585,7 @@ private byte[] ExpandEqpBlock(byte[] eqpData, int setId)
582
585
var baseOffset = uncompressedBlocks * blockSize ;
583
586
584
587
// Total Size of the data.
585
- var totalDataSize = ( totalUncompressedBlocks * blockSize * EquipmentParameterEntrySize ) ;
588
+ var totalDataSize = ( ( totalUncompressedBlocks + 1 ) * blockSize * EquipmentParameterEntrySize ) ;
586
589
587
590
// Pad out to nearest 512 bytes.
588
591
var padding = totalDataSize % 512 == 0 ? 0 : 512 - ( totalDataSize % 512 ) ;
@@ -597,12 +600,12 @@ private byte[] ExpandEqpBlock(byte[] eqpData, int setId)
597
600
// Copy the first half of the data in, then a blank block, then the second half of the data.
598
601
Array . Copy ( eqpData , 0 , newData , 0 , newDataByteOffset ) ;
599
602
var rem = eqpData . Length - newDataByteOffset ;
600
- var rem2 = newData . Length - newDataByteOffset - ( blockSize * EquipmentDeformerParameterEntrySize ) ;
603
+ var rem2 = newData . Length - newDataByteOffset - ( blockSize * EquipmentParameterEntrySize ) ;
601
604
602
605
// Don't let us try to write padding data off the end of the file.
603
606
rem = rem > rem2 ? rem2 : rem ;
604
607
605
- Array . Copy ( eqpData , newDataByteOffset , newData , newDataByteOffset + ( blockSize * EquipmentDeformerParameterEntrySize ) , rem ) ;
608
+ Array . Copy ( eqpData , newDataByteOffset , newData , newDataByteOffset + ( blockSize * EquipmentParameterEntrySize ) , rem ) ;
606
609
607
610
// Return new array.
608
611
return newData ;
0 commit comments