Add gen3 event flag/variable editing

Template files added for e/frlg, no guarantees.
http://i.imgur.com/ER5rRBn.png
(left+select+b when on groudon/kyogre menu screen)

Closes #1328, thanks @rboninsegna !

Added the ability to prefix flag numbers with 0x, and prefix variable
numbers with 0x40__; will be parsed as hex.
This commit is contained in:
Kurt 2017-07-13 23:05:56 -07:00
parent 88eed8dca7
commit ee57bc49f0
10 changed files with 404 additions and 3 deletions

View File

@ -99,6 +99,45 @@ internal class Resources {
}
}
/// <summary>
/// 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]&quot;;.
/// </summary>
internal static string const_e {
get {
return ResourceManager.GetString("const_e", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to .
/// </summary>
internal static string const_frlg {
get {
return ResourceManager.GetString("const_frlg", resourceCulture);
}
}
/// <summary>
/// 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 {
}
}
/// <summary>
/// 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]&quot;;.
/// </summary>
internal static string const_rs {
get {
return ResourceManager.GetString("const_rs", resourceCulture);
}
}
/// <summary>
/// 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 {
}
}
/// <summary>
/// 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]&quot;;.
/// </summary>
internal static string flags_e {
get {
return ResourceManager.GetString("flags_e", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to .
/// </summary>
internal static string flags_frlg {
get {
return ResourceManager.GetString("flags_frlg", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 0607 Red(Mt.Silver) disappeared
///0774 Articuno disappeared
@ -320,6 +433,41 @@ internal class Resources {
}
}
/// <summary>
/// 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]&quot;;.
/// </summary>
internal static string flags_rs {
get {
return ResourceManager.GetString("flags_rs", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 3100 Is Alolan Champion + Magearna Event Active
///3487 Received Magearna Gift

View File

@ -1531,4 +1531,22 @@
<data name="text_mail4_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\text\ko\text_Mail4_ko.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="const_e" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\text\other\const_e.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="const_frlg" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\text\other\const_frlg.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="const_rs" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\text\other\const_rs.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="flags_e" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\text\other\flags_e.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="flags_frlg" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\text\other\flags_frlg.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="flags_rs" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\text\other\flags_rs.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
</root>

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

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

View File

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