mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-10-01 18:08:31 -05:00
Add gen5 form bool setting
SAV6 updated for visual parity, no functional change
This commit is contained in:
@@ -622,25 +622,47 @@ protected override void setDex(PKM pkm)
|
||||
int shiftoff = shiny * brSize * 2 + gender * brSize + brSize;
|
||||
|
||||
// Set the Species Owned Flag
|
||||
Data[PokeDex + bit / 8 + 0x8] |= (byte)(1 << (bit % 8));
|
||||
Data[PokeDex + 0x8 + bit / 8] |= (byte)(1 << (bit % 8));
|
||||
|
||||
// Set the [Species/Gender/Shiny] Seen Flag
|
||||
Data[PokeDex + shiftoff + bit / 8 + 0x8] |= (byte)(1 << (bit % 8));
|
||||
Data[PokeDex + 0x8 + shiftoff + bit / 8] |= (byte)(1 << (bit % 8));
|
||||
|
||||
// Set the Display flag if none are set
|
||||
bool Displayed = false;
|
||||
Displayed |= (Data[PokeDex + brSize * 5 + bit / 8 + 0x8] & (byte)(1 << (bit % 8))) != 0;
|
||||
Displayed |= (Data[PokeDex + brSize * 6 + bit / 8 + 0x8] & (byte)(1 << (bit % 8))) != 0;
|
||||
Displayed |= (Data[PokeDex + brSize * 7 + bit / 8 + 0x8] & (byte)(1 << (bit % 8))) != 0;
|
||||
Displayed |= (Data[PokeDex + brSize * 8 + bit / 8 + 0x8] & (byte)(1 << (bit % 8))) != 0;
|
||||
if (!Displayed) // offset is already biased by 0x60, reuse shiftoff but for the display flags.
|
||||
Data[PokeDex + shiftoff + brSize * 4 + bit / 8 + 0x8] |= (byte)(1 << (bit % 8));
|
||||
Displayed |= (Data[PokeDex + 0x8 + brSize*5 + bit/8] & (byte)(1 << (bit%8))) != 0;
|
||||
Displayed |= (Data[PokeDex + 0x8 + brSize*6 + bit/8] & (byte)(1 << (bit%8))) != 0;
|
||||
Displayed |= (Data[PokeDex + 0x8 + brSize*7 + bit/8] & (byte)(1 << (bit%8))) != 0;
|
||||
Displayed |= (Data[PokeDex + 0x8 + brSize*8 + bit/8] & (byte)(1 << (bit%8))) != 0;
|
||||
if (!Displayed) // offset is already biased by brSize, reuse shiftoff but for the display flags.
|
||||
Data[PokeDex + 0x8 + shiftoff + brSize*4 + bit/8] |= (byte)(1 << (bit%8));
|
||||
|
||||
// Set the Language
|
||||
if (lang < 0) lang = 1;
|
||||
Data[PokeDexLanguageFlags + (bit * 7 + lang) / 8] |= (byte)(1 << ((bit * 7 + lang) % 8));
|
||||
Data[PokeDexLanguageFlags + (bit*7 + lang) / 8] |= (byte)(1 << ((bit*7 + lang) % 8));
|
||||
|
||||
// Formes : todo
|
||||
// Formes
|
||||
int fc = Personal[pkm.Species].FormeCount;
|
||||
int f = B2W2 ? SaveUtil.getDexFormIndexB2W2(pkm.Species, fc) : SaveUtil.getDexFormIndexBW(pkm.Species, fc);
|
||||
if (f < 0) return;
|
||||
|
||||
int FormLen = B2W2 ? 0xB : 0x9;
|
||||
int FormDex = PokeDex + 0x8 + brSize*9;
|
||||
bit = f + pkm.AltForm;
|
||||
|
||||
// Set Form Seen Flag
|
||||
Data[FormDex + FormLen*shiny + bit/8] |= (byte)(1 << (bit%8));
|
||||
|
||||
// Set Displayed Flag if necessary, check all flags
|
||||
for (int i = 0; i < fc; i++)
|
||||
{
|
||||
bit = f + i;
|
||||
if ((Data[FormDex + FormLen*2 + bit/8] & (byte)(1 << (bit%8))) != 0) // Nonshiny
|
||||
return; // already set
|
||||
if ((Data[FormDex + FormLen*3 + bit/8] & (byte)(1 << (bit%8))) != 0) // Shiny
|
||||
return; // already set
|
||||
}
|
||||
bit = f + pkm.AltForm;
|
||||
Data[FormDex + FormLen * (2 + shiny) + bit / 8] |= (byte)(1 << (bit % 8));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -730,35 +730,33 @@ protected override void setDex(PKM pkm)
|
||||
if (lang < 0) lang = 1;
|
||||
Data[PokeDexLanguageFlags + (bit * 7 + lang) / 8] |= (byte)(1 << ((bit * 7 + lang) % 8));
|
||||
|
||||
// Set Form flags
|
||||
int fc = Personal[pkm.Species].FormeCount;
|
||||
int f = ORAS ? SaveUtil.getDexFormIndexORAS(pkm.Species, fc) : SaveUtil.getDexFormIndexXY(pkm.Species, fc);
|
||||
if (f >= 0)
|
||||
{
|
||||
int FormLen = ORAS ? 0x26 : 0x18;
|
||||
int FormDex = PokeDex + 0x368;
|
||||
bit = f + pkm.AltForm;
|
||||
// Set Seen Flag
|
||||
Data[FormDex + FormLen * shiny + bit / 8] |= (byte)(1 << (bit % 8));
|
||||
|
||||
// Set Displayed Flag if necessary, check all flags
|
||||
bool FormDisplayed = false;
|
||||
for (int i = 0; i < fc; i++)
|
||||
{
|
||||
bit = f + i;
|
||||
FormDisplayed |= (Data[FormDex + FormLen * 2 + bit / 8] & (byte)(1 << (bit % 8))) != 0; // Nonshiny
|
||||
FormDisplayed |= (Data[FormDex + FormLen * 3 + bit / 8] & (byte)(1 << (bit % 8))) != 0; // Shiny
|
||||
}
|
||||
if (!FormDisplayed)
|
||||
{
|
||||
bit = f + pkm.AltForm;
|
||||
Data[FormDex + FormLen * (2 + shiny) + bit / 8] |= (byte)(1 << (bit % 8));
|
||||
}
|
||||
}
|
||||
|
||||
// Set DexNav count (only if not encountered previously)
|
||||
if (ORAS && getEncounterCount(pkm.Species - 1) == 0)
|
||||
setEncounterCount(pkm.Species - 1, 1);
|
||||
|
||||
// Set Form flags
|
||||
int fc = Personal[pkm.Species].FormeCount;
|
||||
int f = ORAS ? SaveUtil.getDexFormIndexORAS(pkm.Species, fc) : SaveUtil.getDexFormIndexXY(pkm.Species, fc);
|
||||
if (f < 0) return;
|
||||
|
||||
int FormLen = ORAS ? 0x26 : 0x18;
|
||||
int FormDex = PokeDex + 0x8 + brSize*9;
|
||||
bit = f + pkm.AltForm;
|
||||
|
||||
// Set Form Seen Flag
|
||||
Data[FormDex + FormLen*shiny + bit/8] |= (byte)(1 << (bit%8));
|
||||
|
||||
// Set Displayed Flag if necessary, check all flags
|
||||
for (int i = 0; i < fc; i++)
|
||||
{
|
||||
bit = f + i;
|
||||
if ((Data[FormDex + FormLen*2 + bit/8] & (byte) (1 << (bit%8))) != 0) // Nonshiny
|
||||
return; // already set
|
||||
if ((Data[FormDex + FormLen*3 + bit/8] & (byte) (1 << (bit%8))) != 0) // Shiny
|
||||
return; // already set
|
||||
}
|
||||
bit = f + pkm.AltForm;
|
||||
Data[FormDex + FormLen * (2 + shiny) + bit / 8] |= (byte)(1 << (bit % 8));
|
||||
}
|
||||
public override byte[] decryptPKM(byte[] data)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user