diff --git a/PKHeX.Core/Properties/Resources.Designer.cs b/PKHeX.Core/Properties/Resources.Designer.cs
index 1fea165d6..75d355fb5 100644
--- a/PKHeX.Core/Properties/Resources.Designer.cs
+++ b/PKHeX.Core/Properties/Resources.Designer.cs
@@ -99,6 +99,45 @@ internal class Resources {
}
}
+ ///
+ /// Looks up a localized string similar to 0x4001 VAR_0x4001
+ ///0x4002 VAR_0x4002
+ ///0x4003 VAR_0x4003
+ ///0x4004 VAR_0x4004
+ ///0x4005 VAR_0x4005
+ ///0x4006 VAR_0x4006
+ ///0x4007 VAR_0x4007
+ ///0x4008 VAR_0x4008
+ ///0x4009 VAR_0x4009
+ ///0x400A VAR_0x400A
+ ///0x401F VAR_0x401F
+ ///0x4020 VAR_RECYCLE_GOODS
+ ///0x4021 VAR_REPEL_STEP_COUNT
+ ///0x4022 VAR_ICE_STEP_COUNT
+ ///0x4023 VAR_FIRST_POKE
+ ///0x4024 VAR_MIRAGE_RND_H
+ ///0x4025 VAR_MIRAGE_RND_L
+ ///0x4026 VAR_SECRET_BASE_MAP
+ ///
+ ///0x402A VAR_HAPPINESS_STEP_COUNTER
+ ///0x402B VAR_POISON_STEP_COUNTER
+ ///0x402C VAR_RESET_RTC_ENABLE 00:Disabled,2336:Enab [rest of string was truncated]";.
+ ///
+ internal static string const_e {
+ get {
+ return ResourceManager.GetString("const_e", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to .
+ ///
+ internal static string const_frlg {
+ get {
+ return ResourceManager.GetString("const_frlg", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to 0299 Spiky-eared Pichu(IlexForest) 0:Not appeared,2:disappeared
///0161 Beasts(BurnedTower) 0:stay,1:roamed/fleed
@@ -144,6 +183,36 @@ internal class Resources {
}
}
+ ///
+ /// Looks up a localized string similar to 0x4001 VAR_0x4001
+ ///0x4002 VAR_0x4002
+ ///0x4003 VAR_0x4003
+ ///0x4004 VAR_0x4004
+ ///0x4005 VAR_0x4005
+ ///0x4006 VAR_0x4006
+ ///0x4007 VAR_0x4007
+ ///0x4008 VAR_0x4008
+ ///0x4009 VAR_0x4009
+ ///0x400A VAR_0x400A
+ ///0x401F VAR_0x401F
+ ///0x4020 VAR_RECYCLE_GOODS
+ ///0x4021 VAR_REPEL_STEP_COUNT
+ ///0x4022 VAR_ICE_STEP_COUNT
+ ///0x4023 VAR_FIRST_POKE
+ ///0x4024 VAR_MIRAGE_RND_H
+ ///0x4025 VAR_MIRAGE_RND_L
+ ///0x4026 VAR_SECRET_BASE_MAP
+ ///
+ ///0x402A VAR_HAPPINESS_STEP_COUNTER
+ ///0x402B VAR_POISON_STEP_COUNTER
+ ///0x402C VAR_RESET_RTC_ENABLE 00:Disabled,2336:Enab [rest of string was truncated]";.
+ ///
+ internal static string const_rs {
+ get {
+ return ResourceManager.GetString("const_rs", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to 148 Starter 00:Rowlet,01:Litten,02:Popplio
///432 Tapu Koko 03:Battleable,04:Defeated,05:Captured
@@ -242,6 +311,50 @@ internal class Resources {
}
}
+ ///
+ /// Looks up a localized string similar to 0x800 SYS_POKEMON_GET
+ ///0x801 SYS_POKEDEX_GET
+ ///0x802 SYS_POKENAV_GET
+ ///0x804 SYS_GAME_CLEAR
+ ///0x805 SYS_CHAT_USED
+ ///0x806 SYS_HIPSTER_MEET
+ ///
+ ///0x807 BADGE01_GET
+ ///0x808 BADGE02_GET
+ ///0x809 BADGE03_GET
+ ///0x80A BADGE04_GET
+ ///0x80B BADGE05_GET
+ ///0x80C BADGE06_GET
+ ///0x80D BADGE07_GET
+ ///0x80E BADGE08_GET
+ ///
+ ///0x828 SYS_USE_FLASH
+ ///0x829 SYS_USE_STRENGTH
+ ///0x82A SYS_WEATHER_CTRL
+ ///0x82B SYS_CYCLING_ROAD
+ ///0x82C SYS_SAFARI_MODE
+ ///0x82D SYS_CRUISE_MODE
+ ///
+ ///0x830 SYS_TV_HOME
+ ///0x831 SYS_TV_WATCH
+ ///0x832 SYS_TV_START
+ ///0x833 SYS_POPWORD_IN [rest of string was truncated]";.
+ ///
+ internal static string flags_e {
+ get {
+ return ResourceManager.GetString("flags_e", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to .
+ ///
+ internal static string flags_frlg {
+ get {
+ return ResourceManager.GetString("flags_frlg", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to 0607 Red(Mt.Silver) disappeared
///0774 Articuno disappeared
@@ -320,6 +433,41 @@ internal class Resources {
}
}
+ ///
+ /// Looks up a localized string similar to 0x800 SYS_POKEMON_GET
+ ///0x801 SYS_POKEDEX_GET
+ ///0x802 SYS_POKENAV_GET
+ ///0x804 SYS_GAME_CLEAR
+ ///0x805 SYS_CHAT_USED
+ ///0x806 SYS_HIPSTER_MEET
+ ///
+ ///0x807 BADGE01_GET
+ ///0x808 BADGE02_GET
+ ///0x809 BADGE03_GET
+ ///0x80A BADGE04_GET
+ ///0x80B BADGE05_GET
+ ///0x80C BADGE06_GET
+ ///0x80D BADGE07_GET
+ ///0x80E BADGE08_GET
+ ///
+ ///0x828 SYS_USE_FLASH
+ ///0x829 SYS_USE_STRENGTH
+ ///0x82A SYS_WEATHER_CTRL
+ ///0x82B SYS_CYCLING_ROAD
+ ///0x82C SYS_SAFARI_MODE
+ ///0x82D SYS_CRUISE_MODE
+ ///
+ ///0x830 SYS_TV_HOME
+ ///0x831 SYS_TV_WATCH
+ ///0x832 SYS_TV_START
+ ///0x833 SYS_POPWORD_IN [rest of string was truncated]";.
+ ///
+ internal static string flags_rs {
+ get {
+ return ResourceManager.GetString("flags_rs", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to 3100 Is Alolan Champion + Magearna Event Active
///3487 Received Magearna Gift
diff --git a/PKHeX.Core/Properties/Resources.resx b/PKHeX.Core/Properties/Resources.resx
index dfaa727d5..239c412b2 100644
--- a/PKHeX.Core/Properties/Resources.resx
+++ b/PKHeX.Core/Properties/Resources.resx
@@ -1531,4 +1531,22 @@
..\Resources\text\ko\text_Mail4_ko.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
+
+ ..\Resources\text\other\const_e.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252
+
+
+ ..\Resources\text\other\const_frlg.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252
+
+
+ ..\Resources\text\other\const_rs.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252
+
+
+ ..\Resources\text\other\flags_e.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252
+
+
+ ..\Resources\text\other\flags_frlg.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252
+
+
+ ..\Resources\text\other\flags_rs.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252
+
\ No newline at end of file
diff --git a/PKHeX.Core/Resources/text/other/const_e.txt b/PKHeX.Core/Resources/text/other/const_e.txt
new file mode 100644
index 000000000..19bc6b761
--- /dev/null
+++ b/PKHeX.Core/Resources/text/other/const_e.txt
@@ -0,0 +1,47 @@
+0x4001 VAR_0x4001
+0x4002 VAR_0x4002
+0x4003 VAR_0x4003
+0x4004 VAR_0x4004
+0x4005 VAR_0x4005
+0x4006 VAR_0x4006
+0x4007 VAR_0x4007
+0x4008 VAR_0x4008
+0x4009 VAR_0x4009
+0x400A VAR_0x400A
+0x401F VAR_0x401F
+0x4020 VAR_RECYCLE_GOODS
+0x4021 VAR_REPEL_STEP_COUNT
+0x4022 VAR_ICE_STEP_COUNT
+0x4023 VAR_FIRST_POKE
+0x4024 VAR_MIRAGE_RND_H
+0x4025 VAR_MIRAGE_RND_L
+0x4026 VAR_SECRET_BASE_MAP
+
+0x402A VAR_HAPPINESS_STEP_COUNTER
+0x402B VAR_POISON_STEP_COUNTER
+0x402C VAR_RESET_RTC_ENABLE 00:Disabled,2336:Enabled
+
+0x4040 VAR_DAYS
+
+0x4043 VAR_DEPT_STORE_FLOOR
+0x4045 VAR_POKELOT_PRIZE
+0x4046 VAR_NATIONAL_DEX
+0x4047 VAR_SHROOMISH_SIZE_RECORD
+0x4048 VAR_ASH_GATHER_COUNT
+0x4049 VAR_BIRCH_STATE
+0x404A VAR_CRUISE_STEP_COUNT
+0x404B VAR_POKELOT_RND1
+0x404C VAR_POKELOT_RND2
+
+0x404F VAR_BARBOACH_SIZE_RECORD
+
+0x4054 VAR_0x4054
+
+0x4089 VAR_0x4089
+0x4095 VAR_0x4095
+0x4097 VAR_0x4097
+0x409a VAR_0x409A
+0x40B4 VAR_PORTHOLE
+
+0x40BC VAR_0x40BC
+0x40C2 VAR_0x40C2
\ No newline at end of file
diff --git a/PKHeX.Core/Resources/text/other/const_frlg.txt b/PKHeX.Core/Resources/text/other/const_frlg.txt
new file mode 100644
index 000000000..e69de29bb
diff --git a/PKHeX.Core/Resources/text/other/const_rs.txt b/PKHeX.Core/Resources/text/other/const_rs.txt
new file mode 100644
index 000000000..19bc6b761
--- /dev/null
+++ b/PKHeX.Core/Resources/text/other/const_rs.txt
@@ -0,0 +1,47 @@
+0x4001 VAR_0x4001
+0x4002 VAR_0x4002
+0x4003 VAR_0x4003
+0x4004 VAR_0x4004
+0x4005 VAR_0x4005
+0x4006 VAR_0x4006
+0x4007 VAR_0x4007
+0x4008 VAR_0x4008
+0x4009 VAR_0x4009
+0x400A VAR_0x400A
+0x401F VAR_0x401F
+0x4020 VAR_RECYCLE_GOODS
+0x4021 VAR_REPEL_STEP_COUNT
+0x4022 VAR_ICE_STEP_COUNT
+0x4023 VAR_FIRST_POKE
+0x4024 VAR_MIRAGE_RND_H
+0x4025 VAR_MIRAGE_RND_L
+0x4026 VAR_SECRET_BASE_MAP
+
+0x402A VAR_HAPPINESS_STEP_COUNTER
+0x402B VAR_POISON_STEP_COUNTER
+0x402C VAR_RESET_RTC_ENABLE 00:Disabled,2336:Enabled
+
+0x4040 VAR_DAYS
+
+0x4043 VAR_DEPT_STORE_FLOOR
+0x4045 VAR_POKELOT_PRIZE
+0x4046 VAR_NATIONAL_DEX
+0x4047 VAR_SHROOMISH_SIZE_RECORD
+0x4048 VAR_ASH_GATHER_COUNT
+0x4049 VAR_BIRCH_STATE
+0x404A VAR_CRUISE_STEP_COUNT
+0x404B VAR_POKELOT_RND1
+0x404C VAR_POKELOT_RND2
+
+0x404F VAR_BARBOACH_SIZE_RECORD
+
+0x4054 VAR_0x4054
+
+0x4089 VAR_0x4089
+0x4095 VAR_0x4095
+0x4097 VAR_0x4097
+0x409a VAR_0x409A
+0x40B4 VAR_PORTHOLE
+
+0x40BC VAR_0x40BC
+0x40C2 VAR_0x40C2
\ No newline at end of file
diff --git a/PKHeX.Core/Resources/text/other/flags_e.txt b/PKHeX.Core/Resources/text/other/flags_e.txt
new file mode 100644
index 000000000..3ddd35a84
--- /dev/null
+++ b/PKHeX.Core/Resources/text/other/flags_e.txt
@@ -0,0 +1,51 @@
+0x800 SYS_POKEMON_GET
+0x801 SYS_POKEDEX_GET
+0x802 SYS_POKENAV_GET
+0x804 SYS_GAME_CLEAR
+0x805 SYS_CHAT_USED
+0x806 SYS_HIPSTER_MEET
+
+0x807 BADGE01_GET
+0x808 BADGE02_GET
+0x809 BADGE03_GET
+0x80A BADGE04_GET
+0x80B BADGE05_GET
+0x80C BADGE06_GET
+0x80D BADGE07_GET
+0x80E BADGE08_GET
+
+0x828 SYS_USE_FLASH
+0x829 SYS_USE_STRENGTH
+0x82A SYS_WEATHER_CTRL
+0x82B SYS_CYCLING_ROAD
+0x82C SYS_SAFARI_MODE
+0x82D SYS_CRUISE_MODE
+
+0x830 SYS_TV_HOME
+0x831 SYS_TV_WATCH
+0x832 SYS_TV_START
+0x833 SYS_POPWORD_INPUT
+0x834 SYS_MIX_RECORD
+0x835 SYS_CLOCK_SET
+0x836 SYS_NATIONAL_DEX
+0x837 SYS_CAVE_SHIP
+0x838 SYS_CAVE_WONDER
+0x839 SYS_CAVE_BATTLE
+0x83A SYS_SHOAL_TIDE
+0x83B SYS_RIBBON_GET
+
+0x84B SYS_PC_LANETTE
+0x84C SYS_EXDATA_ENABLE
+0x84D SYS_ENC_UP_ITEM
+0x84E SYS_ENC_DOWN_ITEM
+0x84F SYS_BRAILLE_DIG
+0x850 SYS_BRAILLE_STRENGTH
+0x851 SYS_BRAILLE_WAIT
+0x852 SYS_BRAILLE_FLY
+
+0x85D SYS_TV_LATI
+
+0x85F SYS_SHOAL_ITEM
+0x860 SYS_B_DASH
+0x861 SYS_CTRL_OBJ_DELETE
+0x862 SYS_RESET_RTC_ENABLE
\ No newline at end of file
diff --git a/PKHeX.Core/Resources/text/other/flags_frlg.txt b/PKHeX.Core/Resources/text/other/flags_frlg.txt
new file mode 100644
index 000000000..e69de29bb
diff --git a/PKHeX.Core/Resources/text/other/flags_rs.txt b/PKHeX.Core/Resources/text/other/flags_rs.txt
new file mode 100644
index 000000000..3ddd35a84
--- /dev/null
+++ b/PKHeX.Core/Resources/text/other/flags_rs.txt
@@ -0,0 +1,51 @@
+0x800 SYS_POKEMON_GET
+0x801 SYS_POKEDEX_GET
+0x802 SYS_POKENAV_GET
+0x804 SYS_GAME_CLEAR
+0x805 SYS_CHAT_USED
+0x806 SYS_HIPSTER_MEET
+
+0x807 BADGE01_GET
+0x808 BADGE02_GET
+0x809 BADGE03_GET
+0x80A BADGE04_GET
+0x80B BADGE05_GET
+0x80C BADGE06_GET
+0x80D BADGE07_GET
+0x80E BADGE08_GET
+
+0x828 SYS_USE_FLASH
+0x829 SYS_USE_STRENGTH
+0x82A SYS_WEATHER_CTRL
+0x82B SYS_CYCLING_ROAD
+0x82C SYS_SAFARI_MODE
+0x82D SYS_CRUISE_MODE
+
+0x830 SYS_TV_HOME
+0x831 SYS_TV_WATCH
+0x832 SYS_TV_START
+0x833 SYS_POPWORD_INPUT
+0x834 SYS_MIX_RECORD
+0x835 SYS_CLOCK_SET
+0x836 SYS_NATIONAL_DEX
+0x837 SYS_CAVE_SHIP
+0x838 SYS_CAVE_WONDER
+0x839 SYS_CAVE_BATTLE
+0x83A SYS_SHOAL_TIDE
+0x83B SYS_RIBBON_GET
+
+0x84B SYS_PC_LANETTE
+0x84C SYS_EXDATA_ENABLE
+0x84D SYS_ENC_UP_ITEM
+0x84E SYS_ENC_DOWN_ITEM
+0x84F SYS_BRAILLE_DIG
+0x850 SYS_BRAILLE_STRENGTH
+0x851 SYS_BRAILLE_WAIT
+0x852 SYS_BRAILLE_FLY
+
+0x85D SYS_TV_LATI
+
+0x85F SYS_SHOAL_ITEM
+0x860 SYS_B_DASH
+0x861 SYS_CTRL_OBJ_DELETE
+0x862 SYS_RESET_RTC_ENABLE
\ No newline at end of file
diff --git a/PKHeX.Core/Saves/SAV3.cs b/PKHeX.Core/Saves/SAV3.cs
index 424396193..f18a6fbd5 100644
--- a/PKHeX.Core/Saves/SAV3.cs
+++ b/PKHeX.Core/Saves/SAV3.cs
@@ -116,6 +116,8 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any)
OFS_PouchBerry = BlockOfs[1] + 0x0740;
Personal = PersonalTable.RS;
SeenFlagOffsets = new[] {BlockOfs[0] + 0x5C, BlockOfs[1] + 0x938, BlockOfs[4] + 0xC0C};
+ EventFlag = BlockOfs[2] + 0x2A0;
+ EventConst = EventFlag + EventFlagMax / 8;
break;
case GameVersion.E:
LegalKeyItems = Legal.Pouch_Key_E;
@@ -127,6 +129,8 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any)
OFS_PouchBerry = BlockOfs[1] + 0x0790;
Personal = PersonalTable.E;
SeenFlagOffsets = new[] {BlockOfs[0] + 0x5C, BlockOfs[1] + 0x988, BlockOfs[4] + 0xCA4};
+ EventFlag = BlockOfs[2] + 0x2F0;
+ EventConst = EventFlag + EventFlagMax / 8;
break;
case GameVersion.FRLG:
LegalKeyItems = Legal.Pouch_Key_FRLG;
@@ -138,6 +142,8 @@ public SAV3(byte[] data = null, GameVersion versionOverride = GameVersion.Any)
OFS_PouchBerry = BlockOfs[1] + 0x054C;
Personal = PersonalTable.FR;
SeenFlagOffsets = new[] {BlockOfs[0] + 0x5C, BlockOfs[1] + 0x5F8, BlockOfs[4] + 0xB98};
+ EventFlag = BlockOfs[2] + 0x000;
+ EventConst = EventFlag + EventFlagMax / 8;
break;
}
LoadEReaderBerryData();
@@ -199,6 +205,8 @@ protected override byte[] Write(bool DSV)
public override int OTLength => 7;
public override int NickLength => 10;
public override int MaxMoney => 999999;
+ protected override int EventFlagMax => EventFlag > 0 ? 0x900 : int.MinValue;
+ protected override int EventConstMax => EventConst > 0 ? 0x100 : int.MinValue;
public override bool HasParty => true;
diff --git a/PKHeX.WinForms/Subforms/Save Editors/SAV_EventFlags.cs b/PKHeX.WinForms/Subforms/Save Editors/SAV_EventFlags.cs
index 208a1d227..4eeda9e01 100644
--- a/PKHeX.WinForms/Subforms/Save Editors/SAV_EventFlags.cs
+++ b/PKHeX.WinForms/Subforms/Save Editors/SAV_EventFlags.cs
@@ -90,7 +90,6 @@ private void HandleSpecialFlags()
{
BitConverter.GetBytes(flags[3100] ? MagearnaConst : 0).CopyTo(SAV.Data, ((SAV7)SAV).QRSaveData + 0x168);
}
-
}
private string[] GetStringList(string type)
@@ -124,6 +123,19 @@ private string[] GetStringList(string type)
case GameVersion.B2W2:
gamePrefix = "b2w2";
break;
+ case GameVersion.R:
+ case GameVersion.S:
+ case GameVersion.RS:
+ gamePrefix = "rs";
+ break;
+ case GameVersion.E:
+ gamePrefix = "e";
+ break;
+ case GameVersion.FR:
+ case GameVersion.LG:
+ case GameVersion.FRLG:
+ gamePrefix = "e";
+ break;
default:
return null;
}
@@ -145,7 +157,17 @@ private void AddFlagList(string[] list)
{
try
{
- int n = Convert.ToInt32(split[0]);
+ var flag = split[0];
+
+ int n;
+ if (flag.StartsWith("0x"))
+ {
+ flag = flag.Substring(2);
+ n = Convert.ToInt16(flag, 16);
+ }
+ else
+ n = Convert.ToInt16(flag);
+
if (num.Contains(n))
continue;
num.Add(n);
@@ -198,7 +220,16 @@ private void AddConstList(string[] list)
{
try
{
- int n = Convert.ToInt32(split[0]);
+ var c = split[0];
+ int n;
+ if (c.StartsWith("0x40"))
+ {
+ c = c.Substring(4);
+ n = Convert.ToInt16(c, 16);
+ }
+ else
+ n = Convert.ToInt16(c);
+
if (num.Contains(n))
continue;
num.Add(n);