diff --git a/NHSE.Core/Save/Files/MainSave.cs b/NHSE.Core/Save/Files/MainSave.cs index f689761..1bb412e 100644 --- a/NHSE.Core/Save/Files/MainSave.cs +++ b/NHSE.Core/Save/Files/MainSave.cs @@ -205,10 +205,10 @@ public void SetAcreBytes(ReadOnlySpan data) private const int FieldItemLayerSize = MapGrid.MapTileCount32x32 * Item.SIZE; private const int FieldItemFlagSize = MapGrid.MapTileCount32x32 / 8; // bitflags - private int FieldItemLayer1 => Offsets.FieldItem; - private int FieldItemLayer2 => Offsets.FieldItem + FieldItemLayerSize; - public int FieldItemFlag1 => Offsets.FieldItem + (FieldItemLayerSize * 2); - public int FieldItemFlag2 => Offsets.FieldItem + (FieldItemLayerSize * 2) + FieldItemFlagSize; + private int FieldItemLayer1 => Offsets.FieldItem + Offsets.FieldItemLayerOffset; + private int FieldItemLayer2 => Offsets.FieldItem + FieldItemLayerSize + Offsets.FieldItemLayerOffset * (2 + 1); + public int FieldItemFlag1 => Offsets.FieldItem + ((FieldItemLayerSize + Offsets.FieldItemLayerOffset * 2) * 2); + public int FieldItemFlag2 => Offsets.FieldItem + ((FieldItemLayerSize + Offsets.FieldItemLayerOffset * 2) * 2) + FieldItemFlagSize; public Item[] GetFieldItemLayer1() => Item.GetArray(Data.Slice(FieldItemLayer1, FieldItemLayerSize)); public void SetFieldItemLayer1(IReadOnlyList array) => Item.SetArray(array).CopyTo(Data[FieldItemLayer1..]); diff --git a/NHSE.Core/Save/Offsets/MainSaveOffsets.cs b/NHSE.Core/Save/Offsets/MainSaveOffsets.cs index 5a97a6b..48b7103 100644 --- a/NHSE.Core/Save/Offsets/MainSaveOffsets.cs +++ b/NHSE.Core/Save/Offsets/MainSaveOffsets.cs @@ -34,6 +34,9 @@ public abstract class MainSaveOffsets public abstract int EventFlagLand { get; } public abstract int FruitFlags { get; } public abstract int FieldItem { get; } + + public virtual int FieldItemLayerOffset => 0; + public abstract int LandMakingMap { get; } public abstract int OutsideField { get; } public abstract int MyDesignMap { get; } diff --git a/NHSE.Core/Save/Offsets/MainSaveOffsets30.cs b/NHSE.Core/Save/Offsets/MainSaveOffsets30.cs index 22d9751..be5af06 100644 --- a/NHSE.Core/Save/Offsets/MainSaveOffsets30.cs +++ b/NHSE.Core/Save/Offsets/MainSaveOffsets30.cs @@ -44,6 +44,9 @@ public class MainSaveOffsets30 : MainSaveOffsets // ItemSwitch1 1500 => 1B00 // MainField 398 => 3AC public override int FieldItem => GSaveMainFieldStart + 0x00000; + + public override int FieldItemLayerOffset => 8 * 32 * 192; + public override int LandMakingMap => GSaveMainFieldStart + 0xdb600; // CHANGED*** all following are shifted. public override int MainFieldStructure => GSaveMainFieldStart + 0x100200; public override int OutsideField => GSaveMainFieldStart + 0x1005ac;