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);