mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-09-09 23:25:46 -05:00
Fix dex lang bitflag offset write
LangFlags is expected to be less than 0x500 or whatever, zero indexed to the start of the dex block; NOT an absolute position. I don't feel like making every usage consistent (gen5, gui editors) which use the absolute position, so just adjust in the zukan constructors
This commit is contained in:
@@ -9,6 +9,15 @@ public abstract class Zukan
|
||||
protected int PokeDex { get; set; }
|
||||
protected int PokeDexLanguageFlags { get; set; }
|
||||
|
||||
protected Zukan(SaveFile sav, int dex, int langflag)
|
||||
{
|
||||
SAV = sav;
|
||||
PokeDex = dex;
|
||||
PokeDexLanguageFlags = langflag;
|
||||
if (langflag > dex)
|
||||
throw new ArgumentException(nameof(langflag));
|
||||
}
|
||||
|
||||
protected abstract int OFS_SEEN { get; }
|
||||
protected abstract int OFS_CAUGHT { get; }
|
||||
protected abstract int BitSeenSize { get; }
|
||||
|
||||
@@ -10,11 +10,8 @@ public class Zukan5 : Zukan
|
||||
protected override int DexLangFlagByteCount => 7;
|
||||
protected override int DexLangIDCount => 7;
|
||||
|
||||
public Zukan5(SaveFile sav, int dex, int langflag)
|
||||
public Zukan5(SaveFile sav, int dex, int langflag) : base(sav, dex, langflag - dex)
|
||||
{
|
||||
SAV = sav;
|
||||
PokeDex = dex;
|
||||
PokeDexLanguageFlags = langflag;
|
||||
var wrap = SAV.BW ? DexFormUtil.GetDexFormIndexBW : (Func<int, int, int>)DexFormUtil.GetDexFormIndexB2W2;
|
||||
DexFormIndexFetcher = (spec, form, _) => wrap(spec, form);
|
||||
}
|
||||
|
||||
@@ -10,11 +10,8 @@ public class Zukan6 : Zukan
|
||||
protected override int DexLangFlagByteCount => 7;
|
||||
protected override int DexLangIDCount => 7;
|
||||
|
||||
public Zukan6(SaveFile sav, int dex, int langflag)
|
||||
public Zukan6(SaveFile sav, int dex, int langflag) : base(sav, dex, langflag - dex)
|
||||
{
|
||||
SAV = sav;
|
||||
PokeDex = dex;
|
||||
PokeDexLanguageFlags = langflag;
|
||||
var wrap = SAV.ORAS ? DexFormUtil.GetDexFormIndexORAS : (Func<int,int,int>)DexFormUtil.GetDexFormIndexXY;
|
||||
DexFormIndexFetcher = (spec, form, _) => wrap(spec, form);
|
||||
}
|
||||
|
||||
@@ -21,15 +21,8 @@ public class Zukan7 : Zukan
|
||||
|
||||
private IList<int> FormBaseSpecies;
|
||||
|
||||
protected Zukan7()
|
||||
public Zukan7(SaveFile sav, int dex, int langflag) : base(sav, dex, langflag - dex)
|
||||
{
|
||||
}
|
||||
|
||||
public Zukan7(SaveFile sav, int dex, int langflag)
|
||||
{
|
||||
SAV = sav;
|
||||
PokeDex = dex;
|
||||
PokeDexLanguageFlags = langflag;
|
||||
DexFormIndexFetcher = SAV.USUM ? (Func<int, int, int, int>) DexFormUtil.GetDexFormIndexSM : DexFormUtil.GetDexFormIndexSM;
|
||||
LoadDexList();
|
||||
Debug.Assert(!SAV.Exportable || BitConverter.ToUInt32(SAV.Data, PokeDex) == MAGIC);
|
||||
|
||||
@@ -19,11 +19,8 @@ public class Zukan7b : Zukan7
|
||||
protected override int DexLangFlagByteCount => 920; // 0x398 = 817*9, top off the savedata block.
|
||||
protected override int DexLangIDCount => 9; // CHT, skipping langID 6 (unused)
|
||||
|
||||
public Zukan7b(SaveFile sav, int dex, int langflag)
|
||||
public Zukan7b(SaveFile sav, int dex, int langflag) : base(sav, dex, langflag)
|
||||
{
|
||||
SAV = sav;
|
||||
PokeDex = dex;
|
||||
PokeDexLanguageFlags = langflag;
|
||||
DexFormIndexFetcher = DexFormUtil.GetDexFormIndexGG;
|
||||
LoadDexList();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user