Misc reductions

no functional change
This commit is contained in:
Kurt
2019-03-30 16:21:45 -07:00
parent 609db23dc5
commit 4f347fbfa9
2 changed files with 21 additions and 50 deletions

View File

@@ -110,7 +110,7 @@ public SAV1(byte[] data = null, GameVersion versionOverride = GameVersion.Any)
private readonly SAV1Offsets Offsets;
// Event Flags
protected override int EventFlagMax => EventFlag > 0 ? 0xA00 : int.MinValue; // 320 * 8
protected override int EventFlagMax => 0xA00; // 320 * 8
protected override int EventConstMax => 0;
private const int SIZE_RESERVED = 0x8000; // unpacked box data
@@ -207,16 +207,14 @@ private int GetBoxRawDataOffset(int i)
public override bool IsPKMPresent(int offset) => PKX.IsPKMPresentGB(Data, offset);
// Checksums
protected override void SetChecksums() => Data[Offsets.ChecksumOfs] = GetRBYChecksum(Offsets.ChecksumOfs);
public override bool ChecksumsValid => Data[Offsets.ChecksumOfs] == GetRBYChecksum(Offsets.ChecksumOfs);
protected override void SetChecksums() => Data[Offsets.ChecksumOfs] = GetRBYChecksum(Offsets.OT, Offsets.ChecksumOfs);
public override bool ChecksumsValid => Data[Offsets.ChecksumOfs] == GetRBYChecksum(Offsets.OT, Offsets.ChecksumOfs);
public override string ChecksumInfo => ChecksumsValid ? "Checksum valid." : "Checksum invalid";
private const int CHECKSUM_START = 0x2598;
private byte GetRBYChecksum(int end)
private byte GetRBYChecksum(int start, int end)
{
byte chksum = 0;
for (int i = CHECKSUM_START; i < end; i++)
for (int i = start; i < end; i++)
chksum += Data[i];
chksum ^= 0xFF;
return chksum;
@@ -227,11 +225,11 @@ private byte GetRBYChecksum(int end)
public override string OT
{
get => GetString(0x2598, OTLength);
set => SetString(value, OTLength).CopyTo(Data, 0x2598);
get => GetString(Offsets.OT, OTLength);
set => SetString(value, OTLength).CopyTo(Data, Offsets.OT);
}
public byte[] OT_Trash { get => GetData(0x2598, StringLength); set { if (value?.Length == StringLength) SetData(value, 0x2598); } }
public byte[] OT_Trash { get => GetData(Offsets.OT, StringLength); set { if (value?.Length == StringLength) SetData(value, Offsets.OT); } }
public override int Gender
{
@@ -324,29 +322,13 @@ public bool BattleStyleSwitch
public int Sound
{
get => (Options & 0x30) >> 4;
set
{
var new_sound = value;
if (new_sound > 3)
new_sound = 3;
if (new_sound < 0)
new_sound = 0;
Options = (byte)((Options & 0xCF) | (new_sound << 4));
}
set => Options = (byte)((Options & 0xCF) | ((value & 3) << 4));
}
public int TextSpeed
{
get => Options & 0x7;
set
{
var new_speed = value;
if (new_speed > 7)
new_speed = 7;
if (new_speed < 0)
new_speed = 0;
Options = (byte)((Options & 0xF8) | new_speed);
}
set => Options = (byte)((Options & 0xF8) | (value & 7));
}
public override uint Money
@@ -383,10 +365,7 @@ public override InventoryPouch[] Inventory
};
return pouch.LoadAll(Data);
}
set
{
value.SaveAll(Data);
}
set => value.SaveAll(Data);
}
public override int GetDaycareSlotOffset(int loc, int slot)
@@ -484,32 +463,23 @@ private bool CanSetDex(int species)
return true;
}
public override void SetSeen(int species, bool seen)
public override bool GetSeen(int species) => GetDexFlag(Offsets.DexSeen, species);
public override bool GetCaught(int species) => GetDexFlag(Offsets.DexCaught, species);
public override void SetSeen(int species, bool seen) => SetDexFlag(Offsets.DexSeen, species, seen);
public override void SetCaught(int species, bool caught) => SetDexFlag(Offsets.DexCaught, species, caught);
private bool GetDexFlag(int region, int species)
{
int bit = species - 1;
int ofs = bit >> 3;
SetFlag(Offsets.DexSeen + ofs, bit & 7, seen);
return GetFlag(region + ofs, bit & 7);
}
public override void SetCaught(int species, bool caught)
private void SetDexFlag(int region, int species, bool value)
{
int bit = species - 1;
int ofs = bit >> 3;
SetFlag(Offsets.DexCaught + ofs, bit & 7, caught);
}
public override bool GetSeen(int species)
{
int bit = species - 1;
int ofs = bit >> 3;
return GetFlag(Offsets.DexSeen + ofs, bit & 7);
}
public override bool GetCaught(int species)
{
int bit = species - 1;
int ofs = bit >> 3;
return GetFlag(Offsets.DexCaught + ofs, bit & 7);
SetFlag(region + ofs, bit & 7, value);
}
public override void SetStoredSlot(PKM pkm, int offset, PKMImportSetting trade = PKMImportSetting.UseDefault, PKMImportSetting dex = PKMImportSetting.UseDefault)

View File

@@ -51,6 +51,7 @@ internal class SAV1Offsets
ChecksumOfs = 0x3594,
};
public int OT { get; } = 0x2598;
public int DexCaught { get; private set; }
public int DexSeen { get; private set; }
public int Items { get; private set; }