Merge branch 'main' into main

This commit is contained in:
AdAstra-LD 2021-12-14 22:46:30 +01:00 committed by GitHub
commit a4bfe2a837
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 146 additions and 60 deletions

View File

@ -13,6 +13,17 @@ using static DSPRE.RomInfo;
namespace DSPRE {
public static class DSUtils {
public static class ARM9 {
public static uint address = 0x02000000;
public class Reader : BinaryReader {
public Reader(long pos = 0) : base(File.OpenRead(arm9Path)) {
this.BaseStream.Position = pos;
}
}
public class Writer : BinaryWriter {
public Writer(long pos = 0) : base(File.OpenWrite(arm9Path)) {
this.BaseStream.Position = pos;
}
}
public static bool Decompress(string path) {
Process decompress = new Process();
decompress.StartInfo.FileName = @"Tools\blz.exe";
@ -56,23 +67,17 @@ namespace DSPRE {
public static void WriteByte(byte value, uint destOffset) {
WriteToFile(RomInfo.arm9Path, BitConverter.GetBytes(value), destOffset, 0);
}
}
public class Reader : BinaryReader {
public Reader(string path, long pos = 0) : base(File.OpenRead(path)) {
this.BaseStream.Position = pos;
}
public Reader(long pos = 0) : this(arm9Path, pos) {
}
public class EasyReader : BinaryReader {
public EasyReader(string path, long pos = 0) : base(File.OpenRead(path)) {
this.BaseStream.Position = pos;
}
public class Writer : BinaryWriter {
public Writer(string path, long pos = 0) : base(File.OpenWrite(path)) {
this.BaseStream.Position = pos;
}
public Writer(long pos = 0) : this(arm9Path, pos) {
}
}
public class EasyWriter : BinaryWriter {
public EasyWriter(string path, long pos = 0) : base(File.OpenWrite(path)) {
this.BaseStream.Position = pos;
}
}
public const int NSBMD_DOESNTHAVE_TEXTURE = 0;

View File

@ -926,8 +926,9 @@ namespace DSPRE {
}
/*Add list of options to each control */
locationNameComboBox.Items.Clear();
locationNameComboBox.Items.AddRange(new TextArchive(RomInfo.locationNamesTextNumber).messages.ToArray());
currentTextArchive = new TextArchive(RomInfo.locationNamesTextNumber);
ReloadHeaderEditorLocationsList();
switch (RomInfo.gameFamily) {
case gFamEnum.DP:
areaIconComboBox.Enabled = false;
@ -2382,20 +2383,27 @@ namespace DSPRE {
statusLabel.Text = "Ready";
}
private void mapFilesGridView_CellMouseDoubleClick(object sender, DataGridViewCellEventArgs e) {
if (!mapEditorIsReady) {
SetupMapEditor();
mapEditorIsReady = true;
}
if (e.RowIndex >= 0 && e.ColumnIndex >= 0) {
if (currentMatrix.maps[e.RowIndex, e.ColumnIndex] == GameMatrix.EMPTY) {
MessageBox.Show("You can't load an empty map.\nSelect a valid map and try again.\n" +
MessageBox.Show("You can't load an empty map.\nSelect a valid map and try again.\n\n" +
"If you only meant to change the value of this cell, wait some time between one mouse click and the other.\n" +
"Alternatively, highlight the cell and press F2 on your keyboard.",
"User attempted to load VOID", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (!mapEditorIsReady) {
SetupMapEditor();
mapEditorIsReady = true;
}
int mapCount = romInfo.GetMapCount();
if ( currentMatrix.maps[e.RowIndex, e.ColumnIndex] >= mapCount) {
MessageBox.Show("This matrix cell points to a map file that doesn't exist.",
"There " + ((mapCount > 1) ? "are only " + mapCount + " map files." : "is only 1 map file."), MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
/* Determine area data */
ushort headerID = 0;
if (currentMatrix.hasHeadersSection) {
@ -6836,9 +6844,22 @@ namespace DSPRE {
}
private void exportTextFileButton_Click(object sender, EventArgs e) {
currentTextArchive.SaveToFileExplorePath("Text Archive " + selectTextFileComboBox.SelectedIndex);
if (selectTextFileComboBox.SelectedIndex == RomInfo.locationNamesTextNumber) {
ReloadHeaderEditorLocationsList();
}
}
private void saveTextArchiveButton_Click(object sender, EventArgs e) {
currentTextArchive.SaveToFileDefaultDir(selectTextFileComboBox.SelectedIndex);
if (selectTextFileComboBox.SelectedIndex == RomInfo.locationNamesTextNumber) {
ReloadHeaderEditorLocationsList();
}
}
private void ReloadHeaderEditorLocationsList() {
int selection = locationNameComboBox.SelectedIndex;
locationNameComboBox.Items.Clear();
locationNameComboBox.Items.AddRange(currentTextArchive.messages.ToArray());
locationNameComboBox.SelectedIndex = selection;
}
private void importTextFileButton_Click(object sender, EventArgs e) {
/* Prompt user to select .msg file */
@ -7364,9 +7385,17 @@ namespace DSPRE {
/* Add new NSBTX file to the correct folder */
if (mapTilesetRadioButton.Checked) {
File.Copy(RomInfo.gameDirs[DirNames.mapTextures].unpackedDir + "\\" + 0.ToString("D4"), RomInfo.gameDirs[DirNames.mapTextures].unpackedDir + "\\" + texturePacksListBox.Items.Count.ToString("D4"));
if (mapEditorIsReady) {
mapTextureComboBox.Items.Add("Map Texture Pack [" + mapTextureComboBox.Items.Count.ToString("D2") + "]");
}
} else {
File.Copy(RomInfo.gameDirs[DirNames.buildingTextures].unpackedDir + "\\" + 0.ToString("D4"), RomInfo.gameDirs[DirNames.buildingTextures].unpackedDir + "\\" + texturePacksListBox.Items.Count.ToString("D4"));
File.Copy(RomInfo.gameDirs[DirNames.buildingConfigFiles].unpackedDir + "\\" + 0.ToString("D4"), RomInfo.gameDirs[DirNames.buildingConfigFiles].unpackedDir + "\\" + texturePacksListBox.Items.Count.ToString("D4"));
if (mapEditorIsReady) {
buildTextureComboBox.Items.Add("Building Texture Pack [" + buildTextureComboBox.Items.Count.ToString("D2") + "]");
}
}
/* Update ComboBox and select new file */
@ -7376,23 +7405,31 @@ namespace DSPRE {
private void removeNSBTXButton_Click(object sender, EventArgs e) {
if (texturePacksListBox.Items.Count > 1) {
/* Delete NSBTX file */
if (mapTilesetRadioButton.Checked)
if (mapTilesetRadioButton.Checked) {
File.Delete(RomInfo.gameDirs[DirNames.mapTextures].unpackedDir + "\\" + (texturePacksListBox.Items.Count - 1).ToString("D4"));
else {
if (mapEditorIsReady) {
mapTextureComboBox.Items.RemoveAt(mapTextureComboBox.Items.Count - 1);
}
} else {
File.Delete(RomInfo.gameDirs[DirNames.buildingTextures].unpackedDir + "\\" + (texturePacksListBox.Items.Count - 1).ToString("D4"));
File.Delete(RomInfo.gameDirs[DirNames.buildingConfigFiles].unpackedDir + "\\" + (texturePacksListBox.Items.Count - 1).ToString("D4"));
if (mapEditorIsReady) {
buildTextureComboBox.Items.RemoveAt(buildTextureComboBox.Items.Count - 1);
}
}
/* Check if currently selected file is the last one, and in that case select the one before it */
int lastIndex = texturePacksListBox.Items.Count - 1;
if (texturePacksListBox.SelectedIndex == lastIndex)
if (texturePacksListBox.SelectedIndex == lastIndex) {
texturePacksListBox.SelectedIndex--;
}
/* Remove item from ComboBox */
texturePacksListBox.Items.RemoveAt(lastIndex);
} else {
MessageBox.Show("At least one tileset must be kept.", "Can't delete tileset", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
private void addAreaDataButton_Click(object sender, EventArgs e) {
@ -8188,6 +8225,14 @@ namespace DSPRE {
disableHandlers = false;
//trainerClassListBox_SelectedIndexChanged(null, null);
if ( gameFamily.Equals(gFamEnum.HGSS) && tableEditorIsReady ) {
pbEffectsTrainerCombobox.Items[selectedTrClass] = trainerClassListBox.Items[selectedTrClass];
for (int i = 0; i < vsTrainerEffectsList.Count; i++) {
if (vsTrainerEffectsList[i].trainerClass == selectedTrClass) {
pbEffectsVsTrainerListbox.Items[i] = pbEffectsTrainerCombobox.Items[selectedTrClass] + " uses Combo #" + vsTrainerEffectsList[i].comboID;
}
}
}
MessageBox.Show("Trainer Class settings saved.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
@ -8255,10 +8300,18 @@ namespace DSPRE {
vsPokemonEffectsList = new List<(int pokemonID, int comboID)>();
effectsComboTable = new List<(ushort vsGraph, ushort battleSSEQ)>();
vsTrainerTableStartAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(RomInfo.vsTrainerEntryTableOffsetToRAMAddress, 4), 0) - 0x02000000;
vsPokemonTableStartAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(RomInfo.vsPokemonEntryTableOffsetToRAMAddress, 4), 0) - 0x02000000;
effectsComboMainTableStartAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(RomInfo.effectsComboTableOffsetToRAMAddress, 4), 0) - 0x02000000;
vsTrainerTableStartAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(RomInfo.vsTrainerEntryTableOffsetToRAMAddress, 4), 0);
ROMToolboxDialog.flag_TrainerClassBattleTableRepointed = (vsTrainerTableStartAddress >= ROMToolboxDialog.synthOverlayLoadAddress);
vsTrainerTableStartAddress -= ROMToolboxDialog.flag_TrainerClassBattleTableRepointed ? ROMToolboxDialog.synthOverlayLoadAddress : DSUtils.ARM9.address;
vsPokemonTableStartAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(RomInfo.vsPokemonEntryTableOffsetToRAMAddress, 4), 0);
ROMToolboxDialog.flag_PokemonBattleTableRepointed = (vsPokemonTableStartAddress >= ROMToolboxDialog.synthOverlayLoadAddress);
vsPokemonTableStartAddress -= ROMToolboxDialog.flag_PokemonBattleTableRepointed ? ROMToolboxDialog.synthOverlayLoadAddress : DSUtils.ARM9.address;
effectsComboMainTableStartAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(RomInfo.effectsComboTableOffsetToRAMAddress, 4), 0);
ROMToolboxDialog.flag_MainComboTableRepointed = (effectsComboMainTableStartAddress >= ROMToolboxDialog.synthOverlayLoadAddress);
effectsComboMainTableStartAddress -= ROMToolboxDialog.flag_MainComboTableRepointed ? ROMToolboxDialog.synthOverlayLoadAddress : DSUtils.ARM9.address;
byte trainerTableEntriesCount = DSUtils.ARM9.ReadByte(RomInfo.vsTrainerEntryTableOffsetToSizeLimiter);
byte pokemonTableEntriesCount = DSUtils.ARM9.ReadByte(RomInfo.vsPokemonEntryTableOffsetToSizeLimiter);
byte comboTableEntriesCount = DSUtils.ARM9.ReadByte(RomInfo.effectsComboTableOffsetToSizeLimiter);
@ -8269,35 +8322,42 @@ namespace DSPRE {
pbEffectsPokemonCombobox.Items.Add("[" + i + "]" + " " + pokeNames[i]);
}
pbEffectsTrainerCombobox.Items.Clear();
trcNames = RomInfo.GetTrainerClassNames();
for (int i = 0; i < trcNames.Length; i++) {
pbEffectsTrainerCombobox.Items.Add("[" + i + "]" + " " + trcNames[i]);
}
RepopulateTableEditorTrainerClasses();
pbEffectsVsTrainerListbox.Items.Clear();
pbEffectsVsPokemonListbox.Items.Clear();
pbEffectsCombosListbox.Items.Clear();
using (DSUtils.ARM9.Reader ar = new DSUtils.ARM9.Reader(vsTrainerTableStartAddress) ) {
for (int i = 0; i < trainerTableEntriesCount; i++) {
String expArmPath = RomInfo.gameDirs[DirNames.synthOverlay].unpackedDir + '\\' + ROMToolboxDialog.expandedARMfileID.ToString("D4");
using(DSUtils.EasyReader ar = new DSUtils.EasyReader(ROMToolboxDialog.flag_TrainerClassBattleTableRepointed ? expArmPath : RomInfo.arm9Path, vsTrainerTableStartAddress)) {
for (int i = 0; i < trainerTableEntriesCount; i++) {
ushort entry = ar.ReadUInt16();
int classID = entry & 1023;
int comboID = entry >> 10;
vsTrainerEffectsList.Add((classID, comboID));
pbEffectsVsTrainerListbox.Items.Add("[" + classID.ToString("D3") + "]" + " " + trcNames[classID] + " uses Combo #" + comboID);
pbEffectsVsTrainerListbox.Items.Add(pbEffectsTrainerCombobox.Items[classID] + " uses Combo #" + comboID);
}
}
ar.BaseStream.Position = vsPokemonTableStartAddress;
using (DSUtils.EasyReader ar = new DSUtils.EasyReader(ROMToolboxDialog.flag_PokemonBattleTableRepointed ? expArmPath : RomInfo.arm9Path, vsPokemonTableStartAddress)) {
for (int i = 0; i < pokemonTableEntriesCount; i++) {
ushort entry = ar.ReadUInt16();
int pokeID = entry & 1023;
int comboID = entry >> 10;
vsPokemonEffectsList.Add((pokeID, comboID));
pbEffectsVsPokemonListbox.Items.Add("[" + pokeID.ToString("D3") + "]" + " " + pokeNames[pokeID] + " uses Combo #" + comboID);
}
ar.BaseStream.Position = effectsComboMainTableStartAddress;
string pokeName;
try {
pokeName = pokeNames[pokeID];
} catch (IndexOutOfRangeException) {
pokeName = "UNKNOWN";
}
pbEffectsVsPokemonListbox.Items.Add("[" + pokeID.ToString("D3") + "]" + " " + pokeName + " uses Combo #" + comboID);
}
}
using (DSUtils.EasyReader ar = new DSUtils.EasyReader(ROMToolboxDialog.flag_MainComboTableRepointed ? expArmPath : RomInfo.arm9Path, effectsComboMainTableStartAddress)) {
for (int i = 0; i < comboTableEntriesCount; i++) {
ushort battleIntroEffect = ar.ReadUInt16();
ushort battleMusic = ar.ReadUInt16();
@ -8326,6 +8386,15 @@ namespace DSPRE {
pbEffectsGroupBox.Enabled = false;
}
}
private void RepopulateTableEditorTrainerClasses() {
pbEffectsTrainerCombobox.Items.Clear();
trcNames = RomInfo.GetTrainerClassNames();
for (int i = 0; i < trcNames.Length; i++) {
pbEffectsTrainerCombobox.Items.Add("[" + i.ToString("D3") + "]" + " " + trcNames[i]);
}
}
private void conditionalMusicTableListBox_SelectedIndexChanged(object sender, EventArgs e) {
int selection = conditionalMusicTableListBox.SelectedIndex;
headerConditionalMusicComboBox.SelectedIndex = conditionalMusicTable[selection].header;
@ -8399,13 +8468,14 @@ namespace DSPRE {
effectsComboTable[index] = (battleIntroEffect, battleMusic);
using (DSUtils.ARM9.Writer wr = new DSUtils.ARM9.Writer(effectsComboMainTableStartAddress + 4 * index)) {
String expArmPath = RomInfo.gameDirs[DirNames.synthOverlay].unpackedDir + '\\' + ROMToolboxDialog.expandedARMfileID.ToString("D4");
using (DSUtils.EasyWriter wr = new DSUtils.EasyWriter(ROMToolboxDialog.flag_MainComboTableRepointed ? expArmPath : RomInfo.arm9Path, effectsComboMainTableStartAddress + 4 * index)) {
wr.Write(battleIntroEffect);
wr.Write(battleMusic);
};
disableHandlers = true;
pbEffectsCombosListbox.Items[index] = "Combo " + index.ToString("D2") + " - " + "Effect #" + battleIntroEffect + ", " + "Music #" + battleMusic;
pbEffectsCombosListbox.Items[index] = pbEffectsTrainerChooseMainCombobox.Items[index] = pbEffectsPokemonChooseMainCombobox.Items[index] = "Combo " + index.ToString("D2") + " - " + "Effect #" + battleIntroEffect + ", " + "Music #" + battleMusic;
disableHandlers = false;
}
@ -8415,7 +8485,9 @@ namespace DSPRE {
ushort comboID = (ushort)pbEffectsPokemonChooseMainCombobox.SelectedIndex;
vsPokemonEffectsList[index] = (pokemonID, comboID);
using (DSUtils.ARM9.Writer wr = new DSUtils.ARM9.Writer(vsPokemonTableStartAddress + 2 * index)) {
String expArmPath = RomInfo.gameDirs[DirNames.synthOverlay].unpackedDir + '\\' + ROMToolboxDialog.expandedARMfileID.ToString("D4");
using (DSUtils.EasyWriter wr = new DSUtils.EasyWriter(ROMToolboxDialog.flag_PokemonBattleTableRepointed ? expArmPath : RomInfo.arm9Path, vsPokemonTableStartAddress + 2 * index)) {
wr.Write((ushort)((pokemonID & 1023) + (comboID << 10))); //PokemonID
};
@ -8430,7 +8502,8 @@ namespace DSPRE {
ushort comboID = (ushort)pbEffectsTrainerChooseMainCombobox.SelectedIndex;
vsTrainerEffectsList[index] = (trainerClass, comboID);
using (DSUtils.ARM9.Writer wr = new DSUtils.ARM9.Writer(vsTrainerTableStartAddress + 2 * index)) {
String expArmPath = RomInfo.gameDirs[DirNames.synthOverlay].unpackedDir + '\\' + ROMToolboxDialog.expandedARMfileID.ToString("D4");
using (DSUtils.EasyWriter wr = new DSUtils.EasyWriter(ROMToolboxDialog.flag_TrainerClassBattleTableRepointed ? expArmPath : RomInfo.arm9Path, vsTrainerTableStartAddress + 2 * index)) {
wr.Write((ushort)((trainerClass & 1023) + (comboID << 10)));
};
@ -8470,7 +8543,12 @@ namespace DSPRE {
return;
}
(int pokemonID, int comboID) entry = vsPokemonEffectsList[pbEffectsVsPokemonListbox.SelectedIndex];
pbEffectsPokemonCombobox.SelectedIndex = entry.pokemonID;
try {
pbEffectsPokemonCombobox.SelectedIndex = entry.pokemonID;
} catch (ArgumentOutOfRangeException) {
pbEffectsPokemonCombobox.SelectedIndex = 0;
}
pbEffectsCombosListbox.SelectedIndex = pbEffectsPokemonChooseMainCombobox.SelectedIndex = entry.comboID;
}

View File

@ -341,7 +341,7 @@
//
// repointScrcmdTextLBL
//
this.repointScrcmdTextLBL.Location = new System.Drawing.Point(509, 48);
this.repointScrcmdTextLBL.Location = new System.Drawing.Point(481, 48);
this.repointScrcmdTextLBL.Name = "repointScrcmdTextLBL";
this.repointScrcmdTextLBL.Size = new System.Drawing.Size(288, 37);
this.repointScrcmdTextLBL.TabIndex = 27;
@ -353,7 +353,7 @@
//
this.repointScrcmdLBL.AutoSize = true;
this.repointScrcmdLBL.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.repointScrcmdLBL.Location = new System.Drawing.Point(509, 31);
this.repointScrcmdLBL.Location = new System.Drawing.Point(481, 31);
this.repointScrcmdLBL.Name = "repointScrcmdLBL";
this.repointScrcmdLBL.Size = new System.Drawing.Size(157, 13);
this.repointScrcmdLBL.TabIndex = 26;
@ -365,16 +365,15 @@
this.repointScrcmdButton.Name = "repointScrcmdButton";
this.repointScrcmdButton.Size = new System.Drawing.Size(100, 50);
this.repointScrcmdButton.TabIndex = 25;
this.repointScrcmdButton.Text = "Expand ARM9";
this.repointScrcmdButton.Text = "Repoint Table";
this.repointScrcmdButton.UseVisualStyleBackColor = true;
this.repointScrcmdButton.Click += new System.EventHandler(this.repointScrcmdButton_Click);
//
// scrcmdARM9requiredLBL
//
this.scrcmdARM9requiredLBL.AutoSize = true;
this.scrcmdARM9requiredLBL.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.scrcmdARM9requiredLBL.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(64)))), ((int)(((byte)(0)))));
this.scrcmdARM9requiredLBL.Location = new System.Drawing.Point(663, 30);
this.scrcmdARM9requiredLBL.Location = new System.Drawing.Point(635, 30);
this.scrcmdARM9requiredLBL.Name = "scrcmdARM9requiredLBL";
this.scrcmdARM9requiredLBL.Size = new System.Drawing.Size(165, 13);
this.scrcmdARM9requiredLBL.TabIndex = 29;
@ -382,7 +381,7 @@
//
// label1
//
this.label1.Location = new System.Drawing.Point(509, 81);
this.label1.Location = new System.Drawing.Point(481, 81);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(288, 37);
this.label1.TabIndex = 30;
@ -391,7 +390,7 @@
//
// label2
//
this.label2.Location = new System.Drawing.Point(509, 188);
this.label2.Location = new System.Drawing.Point(481, 188);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(288, 37);
this.label2.TabIndex = 34;
@ -411,7 +410,7 @@
//
// dynamicHeadersTextLBL
//
this.dynamicHeadersTextLBL.Location = new System.Drawing.Point(509, 139);
this.dynamicHeadersTextLBL.Location = new System.Drawing.Point(481, 139);
this.dynamicHeadersTextLBL.Name = "dynamicHeadersTextLBL";
this.dynamicHeadersTextLBL.Size = new System.Drawing.Size(288, 59);
this.dynamicHeadersTextLBL.TabIndex = 32;
@ -423,7 +422,7 @@
//
this.dynamicHeadersLBL.AutoSize = true;
this.dynamicHeadersLBL.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.dynamicHeadersLBL.Location = new System.Drawing.Point(509, 122);
this.dynamicHeadersLBL.Location = new System.Drawing.Point(481, 122);
this.dynamicHeadersLBL.Name = "dynamicHeadersLBL";
this.dynamicHeadersLBL.Size = new System.Drawing.Size(160, 13);
this.dynamicHeadersLBL.TabIndex = 31;

View File

@ -15,11 +15,18 @@ using static DSPRE.Resources.ROMToolboxDB.ToolboxDB;
namespace DSPRE {
public partial class ROMToolboxDialog : Form {
public static uint expandedARMfileID = ToolboxDB.syntheticOverlayFileNumbersDB[RomInfo.gameFamily];
public static uint synthOverlayLoadAddress = 0x023C8000;
public static bool flag_standardizedItems { get; private set; } = false;
public static bool flag_arm9Expanded { get; private set; } = false;
public static bool flag_BDHCamPatchApplied { get; private set; } = false;
public static bool flag_DynamicHeadersPatchApplied { get; private set; } = false;
public static bool flag_MatrixExpansionApplied { get; private set; } = false;
public static bool flag_MainComboTableRepointed { get; set; } = false;
public static bool flag_TrainerClassBattleTableRepointed { get; set; } = false;
public static bool flag_PokemonBattleTableRepointed { get; set; } = false;
public static bool overlay1MustBeRestoredFromBackup { get; private set; } = true;
#region Constructor
@ -862,9 +869,5 @@ namespace DSPRE {
MessageBox.Show("This patch has already been applied.", "Can't reapply patch", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
#endregion
private void repointScrcmdButton_Click(object sender, EventArgs e) {
}
}
}

View File

@ -21,6 +21,7 @@ namespace DSPRE {
public static string arm9Path { get; private set; }
public static string overlayTablePath { get; set; }
public static string overlayPath { get; set; }
public static gLangEnum gameLanguage { get; private set; }
public static gVerEnum gameVersion { get; private set; }
public static gFamEnum gameFamily { get; private set; }