From 12da61692f4348d8abe63feb31b7c9372a97fb75 Mon Sep 17 00:00:00 2001 From: Miguel Terol Espino Date: Sun, 3 Mar 2024 14:07:40 +0100 Subject: [PATCH] Started merging changes Co-authored-by: Cuddlyogre --- DS_Map/BuildingEditor.cs | 2 +- DS_Map/DSPRE.csproj | 2 + DS_Map/DSUtils.cs | 2 +- DS_Map/Filesystem.cs | 245 ++++++ DS_Map/GameCamera.cs | 2 +- DS_Map/Helpers.cs | 397 ++++++++++ DS_Map/Main Window.Designer.cs | 14 +- DS_Map/Main Window.cs | 236 +++--- DS_Map/Main Window.resx | 90 --- DS_Map/PokemonEditor.cs | 6 - DS_Map/ROMFiles/AreaData.cs | 4 +- DS_Map/ROMFiles/MapFile.cs | 10 +- DS_Map/ROMFiles/MapHeader.cs | 12 +- DS_Map/ROMFiles/ScriptCommand.cs | 24 +- DS_Map/ROMFiles/ScriptFile.cs | 12 +- DS_Map/ROMFiles/TrainerFile.cs | 4 +- DS_Map/ROMToolboxDialog.cs | 26 +- DS_Map/Resources/PokeDatabase.cs | 64 +- DS_Map/Resources/ROMToolboxDB/ToolboxDB.cs | 84 +-- DS_Map/RomInfo.cs | 817 ++++++++------------- DS_Map/SpawnEditor.cs | 6 +- DS_Map/WildEditorDPPt.cs | 2 +- 22 files changed, 1204 insertions(+), 857 deletions(-) create mode 100644 DS_Map/Filesystem.cs create mode 100644 DS_Map/Helpers.cs diff --git a/DS_Map/BuildingEditor.cs b/DS_Map/BuildingEditor.cs index 3988b65..fcdfef9 100644 --- a/DS_Map/BuildingEditor.cs +++ b/DS_Map/BuildingEditor.cs @@ -45,7 +45,7 @@ namespace DSPRE { buildingOpenGLControl.MouseWheel += new MouseEventHandler(buildingOpenGLControl_MouseWheel); Gl.glEnable(Gl.GL_TEXTURE_2D); - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { interiorCheckBox.Enabled = true; } diff --git a/DS_Map/DSPRE.csproj b/DS_Map/DSPRE.csproj index edd7cf7..4c82d6f 100644 --- a/DS_Map/DSPRE.csproj +++ b/DS_Map/DSPRE.csproj @@ -125,7 +125,9 @@ EvolutionsEditor.cs + + Component diff --git a/DS_Map/DSUtils.cs b/DS_Map/DSUtils.cs index 6bf2848..3313457 100644 --- a/DS_Map/DSUtils.cs +++ b/DS_Map/DSUtils.cs @@ -70,7 +70,7 @@ namespace DSPRE { return new FileInfo(RomInfo.arm9Path).Length <= 0xBC000; } public static bool CheckCompressionMark() { - return BitConverter.ToInt32(DSUtils.ARM9.ReadBytes((uint)(RomInfo.gameFamily == gFamEnum.DP ? 0xB7C : 0xBB4), 4), 0) != 0; + return BitConverter.ToInt32(DSUtils.ARM9.ReadBytes((uint)(RomInfo.gameFamily == GameFamilies.DP ? 0xB7C : 0xBB4), 4), 0) != 0; } public static byte[] ReadBytes(uint startOffset, long numberOfBytes = 0) { return ReadFromFile(RomInfo.arm9Path, startOffset, numberOfBytes); diff --git a/DS_Map/Filesystem.cs b/DS_Map/Filesystem.cs new file mode 100644 index 0000000..3d503ab --- /dev/null +++ b/DS_Map/Filesystem.cs @@ -0,0 +1,245 @@ +using System.IO; + +namespace DSPRE { + public static class Filesystem { + public static string eventFiles { get { return RomInfo.gameDirs[RomInfo.DirNames.eventFiles].unpackedDir; } } + public static string OWSprites { get { return RomInfo.gameDirs[RomInfo.DirNames.OWSprites].unpackedDir; } } + public static string mapTextures { get { return RomInfo.gameDirs[RomInfo.DirNames.mapTextures].unpackedDir; } } + public static string buildingTextures { get { return RomInfo.gameDirs[RomInfo.DirNames.buildingTextures].unpackedDir; } } + public static string dynamicHeaders { get { return RomInfo.gameDirs[RomInfo.DirNames.dynamicHeaders].unpackedDir; } } + public static string dynamicHeadersPacked { get { return RomInfo.gameDirs[RomInfo.DirNames.dynamicHeaders].packedDir; } } + public static string scripts { get { return RomInfo.gameDirs[RomInfo.DirNames.scripts].unpackedDir; } } + public static string maps { get { return RomInfo.gameDirs[RomInfo.DirNames.maps].unpackedDir; } } + public static string matrices { get { return RomInfo.gameDirs[RomInfo.DirNames.matrices].unpackedDir; } } + public static string buildingConfigFiles { get { return RomInfo.gameDirs[RomInfo.DirNames.buildingConfigFiles].unpackedDir; } } + public static string areaData { get { return RomInfo.gameDirs[RomInfo.DirNames.areaData].unpackedDir; } } + public static string textArchives { get { return RomInfo.gameDirs[RomInfo.DirNames.textArchives].unpackedDir; } } + public static string trainerProperties { get { return RomInfo.gameDirs[RomInfo.DirNames.trainerProperties].unpackedDir; } } + public static string trainerParty { get { return RomInfo.gameDirs[RomInfo.DirNames.trainerParty].unpackedDir; } } + public static string trainerGraphics { get { return RomInfo.gameDirs[RomInfo.DirNames.trainerGraphics].unpackedDir; } } + public static string encounters { get { return RomInfo.gameDirs[RomInfo.DirNames.encounters].unpackedDir; } } + public static string headbutt { get { return RomInfo.gameDirs[RomInfo.DirNames.headbutt].unpackedDir; } } + public static string safariZone { get { return RomInfo.gameDirs[RomInfo.DirNames.safariZone].unpackedDir; } } + public static string monIcons { get { return RomInfo.gameDirs[RomInfo.DirNames.monIcons].unpackedDir; } } + public static string synthOverlay { get { return RomInfo.gameDirs[RomInfo.DirNames.synthOverlay].unpackedDir; } } + public static string interiorBuildingModels { get { return RomInfo.gameDirs[RomInfo.DirNames.interiorBuildingModels].unpackedDir; } } + public static string exteriorBuildingModels { get { return RomInfo.gameDirs[RomInfo.DirNames.exteriorBuildingModels].unpackedDir; } } + + public static string GetBuildingModelsDirPath(bool interior) { + if (interior) { + return interiorBuildingModels; + } else { + return exteriorBuildingModels; + } + } + + public static string expArmPath { get { return Path.Combine(synthOverlay, ROMToolboxDialog.expandedARMfileID.ToString("D4")); } } + + public static string GetPath(string path, int id, string format = "D4") { + return Path.Combine(path, id.ToString(format)); + } + + public static string GetPath(string path, string prefix, int id, string ext, string format = "D4") { + return Path.Combine(path, prefix + id.ToString(format) + "." + ext); + } + + static string[] GetBuildingModelFiles(bool interior) { + return Directory.GetFiles(Filesystem.GetBuildingModelsDirPath(interior)); + } + + public static string GetBuildingModelPath(bool interior, int id) { + return GetPath(Filesystem.GetBuildingModelsDirPath(interior), id); + } + + public static int GetBuildingCount(bool interior) { + return GetBuildingModelFiles(interior).Length; + } + + public static string[] GetAreaDataFiles() { + return Directory.GetFiles(Filesystem.areaData); + } + + public static string GetAreaDataPath(int id) { + return GetPath(Filesystem.areaData, id); + } + + public static int GetAreaDataCount() { + return GetAreaDataFiles().Length; + } + + public static string GetTexturePath(bool useMapTiles, int textureID) { + string path = Filesystem.GetMapTexturePath(textureID); + string path2 = Filesystem.GetBuildingTexturePath(textureID); + string tilesetPath = useMapTiles ? path : path2; + return tilesetPath; + } + + static string[] GetMapTextureFiles() { + return Directory.GetFiles(Filesystem.mapTextures); + } + + public static string GetMapTexturePath(int id) { + return GetPath(Filesystem.mapTextures, id); + } + + public static int GetMapTexturesCount() { + return GetMapTextureFiles().Length; + } + + static string[] GetBuildingTextureFiles() { + return Directory.GetFiles(Filesystem.buildingTextures); + } + + public static string GetBuildingTexturePath(int id) { + return GetPath(Filesystem.buildingTextures, id); + } + + public static int GetBuildingTexturesCount() { + return GetBuildingTextureFiles().Length; + } + + static string[] GetMatrixFiles() { + return Directory.GetFiles(Filesystem.matrices); + } + + public static string GetMatrixPath(int id) { + return GetPath(Filesystem.matrices, id); + } + + public static int GetMatrixCount() { + return GetMatrixFiles().Length; + } + + static string[] GetTextArchiveFiles() { + return Directory.GetFiles(Filesystem.textArchives); + } + + public static string GetTextArchivePath(int id) { + return GetPath(Filesystem.textArchives, id); + } + + public static int GetTextArchivesCount() { + return GetTextArchiveFiles().Length; + } + + static string[] GetMapFiles() { + return Directory.GetFiles(Filesystem.maps); + } + + public static string GetMapPath(int id) { + return GetPath(Filesystem.maps, id); + } + + public static int GetMapCount() { + return GetMapFiles().Length; + } + + static string[] GetScriptFiles() { + return Directory.GetFiles(Filesystem.scripts); + } + + public static string GetScriptPath(int id) { + return GetPath(Filesystem.scripts, id); + } + + public static int GetScriptCount() { + return GetScriptFiles().Length; + } + + static string[] GetEventFiles() { + return Directory.GetFiles(Filesystem.eventFiles); + } + + public static string GetEventPath(int id) { + return GetPath(Filesystem.eventFiles, id); + } + + public static int GetEventFileCount() { + return GetEventFiles().Length; + } + + static string[] GetTrainerPropertiesFiles() { + return Directory.GetFiles(Filesystem.trainerProperties); + } + + public static string GetTrainerPropertiesPath(int id) { + return GetPath(Filesystem.trainerProperties, id); + } + + public static int GetTrainerPropertiesCount() { + return GetTrainerPropertiesFiles().Length; + } + + static string[] GetDynamicHeaderFiles() { + return Directory.GetFiles(Filesystem.dynamicHeaders); + } + + public static string GetDynamicHeaderPath(int id) { + return GetPath(Filesystem.dynamicHeaders, id); + } + + public static int GetDynamicHeadersCount() { + return GetDynamicHeaderFiles().Length; + } + + static string[] GetEncounterFiles() { + return Directory.GetFiles(Filesystem.encounters); + } + + public static string GetEncounterPath(int id) { + return GetPath(Filesystem.encounters, id); + } + + public static int GetEncountersCount() { + return GetEncounterFiles().Length; + } + + static string[] GetSafariZoneFiles() { + return Directory.GetFiles(Filesystem.safariZone); + } + + public static string GetSafariZonePath(int id) { + return GetPath(Filesystem.safariZone, id); + } + + public static int GetSafariZoneCount() { + return GetSafariZoneFiles().Length; + } + + static string[] GetHeadbuttFiles() { + return Directory.GetFiles(Filesystem.headbutt); + } + + public static string GetHeadbuttPath(int id) { + return GetPath(Filesystem.headbutt, id); + } + + public static int GetHeadbuttCount() { + return GetHeadbuttFiles().Length; + } + + public static string GetOWSpritePath(int id) { + return GetPath(Filesystem.OWSprites, id); + } + + public static string GetBuildingConfigPath(int id) { + return GetPath(Filesystem.buildingConfigFiles, id); + } + + public static string GetTrainerPartyPath(int id) { + return GetPath(Filesystem.trainerParty, id); + } + + public static string GetTrainerGraphicsPath(int id) { + return GetPath(Filesystem.trainerGraphics, id); + } + + public static string GetMonIconPath(int id, string format = "D4") { + return GetPath(Filesystem.monIcons, id, format); + } + + public static string GetSynthOerlayPath(int id) { + return GetPath(Filesystem.synthOverlay, id); + } + } +} diff --git a/DS_Map/GameCamera.cs b/DS_Map/GameCamera.cs index 8aefe8e..f006233 100644 --- a/DS_Map/GameCamera.cs +++ b/DS_Map/GameCamera.cs @@ -146,7 +146,7 @@ public class GameCamera { nearClip = b.ReadUInt32(); farClip = b.ReadUInt32(); - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { xOffset = b.ReadInt32(); yOffset = b.ReadInt32(); zOffset = b.ReadInt32(); diff --git a/DS_Map/Helpers.cs b/DS_Map/Helpers.cs new file mode 100644 index 0000000..81d1b9a --- /dev/null +++ b/DS_Map/Helpers.cs @@ -0,0 +1,397 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Text; +using System.Windows.Forms; +using Tao.OpenGl; +using LibNDSFormats.NSBMD; +using LibNDSFormats.NSBTX; +using DSPRE.ROMFiles; +using Images; +using Ekona.Images; +using ScintillaNET; +using ScintillaNET.Utils; +using Tao.Platform.Windows; +using NSMBe4.DSFileSystem; + +namespace DSPRE { + public static class Helpers { + static MainProgram MainProgram; + + public static RomInfo romInfo; + public static bool hideBuildings = new bool(); + + public static NSBMDGlRenderer mapRenderer; + + public static ToolStripProgressBar toolStripProgressBar { get { return MainProgram.toolStripProgressBar; } } + + public static void Initialize(MainProgram mainProgram) { + MainProgram = mainProgram; + mapRenderer = new NSBMDGlRenderer(); + } + + static bool disableHandlersOld; + static bool disableHandlers; + + public static bool HandlersDisabled { get { return disableHandlers == true; } } + public static bool HandlersEnabled { get { return disableHandlers == false; } } + + public static void BackUpDisableHandler() { + disableHandlersOld = disableHandlers; + } + + public static void RestoreDisableHandler() { + disableHandlers = disableHandlersOld; + } + + public static void DisableHandlers() { + disableHandlers = true; + } + + public static void EnableHandlers() { + disableHandlers = false; + } + + public static void statusLabelMessage(string msg = "Ready") { + ToolStripStatusLabel statusLabel = MainProgram.statusLabel; + statusLabel.Text = msg; + statusLabel.Font = new Font(statusLabel.Font, FontStyle.Regular); + statusLabel.ForeColor = Color.Black; + statusLabel.Invalidate(); + } + + public static void statusLabelError(string errorMsg, bool severe = true) { + ToolStripStatusLabel statusLabel = MainProgram.statusLabel; + statusLabel.Text = errorMsg; + statusLabel.Font = new Font(statusLabel.Font, FontStyle.Bold); + statusLabel.ForeColor = severe ? Color.Red : Color.DarkOrange; + statusLabel.Invalidate(); + } + + //Locate File - buttons + public static void ExplorerSelect(string path) { + if (System.IO.File.Exists(path)) { + Process.Start("explorer.exe", "/select" + "," + "\"" + path + "\""); + } + } + + public static string[] GetTrainerNames() { + List trainerList = new List(); + + /* Store all trainer names and classes */ + TextArchive trainerClasses = new TextArchive(RomInfo.trainerClassMessageNumber); + TextArchive trainerNames = new TextArchive(RomInfo.trainerNamesMessageNumber); + + int trainerCount = Filesystem.GetTrainerPropertiesCount(); + for (int i = 0; i < trainerCount; i++) { + string path = Filesystem.GetTrainerPropertiesPath(i); + int classMessageID = BitConverter.ToUInt16(DSUtils.ReadFromFile(path, startOffset: 1, 2), 0); + string currentTrainerName; + + if (i < trainerNames.messages.Count) { + currentTrainerName = trainerNames.messages[i]; + } else { + currentTrainerName = TrainerFile.NAME_NOT_FOUND; + } + + trainerList.Add("[" + i.ToString("D2") + "] " + trainerClasses.messages[classMessageID] + " " + currentTrainerName); + } + + return trainerList.ToArray(); + } + + public static void MW_LoadModelTextures(NSBMD model, string textureFolder, int fileID) { + if (fileID < 0) { + return; + } + + string texturePath = Filesystem.GetPath(textureFolder, fileID); + model.materials = NSBTXLoader.LoadNsbtx(new MemoryStream(System.IO.File.ReadAllBytes(texturePath)), out model.Textures, out model.Palettes); + try { + model.MatchTextures(); + } catch { + } + } + + public static void MW_LoadModelTextures(MapFile mapFile, int fileID) { + MW_LoadModelTextures(mapFile.mapModel, Filesystem.mapTextures, fileID); + } + + public static void MW_LoadModelTextures(Building building, int fileID) { + MW_LoadModelTextures(building.NSBMDFile, Filesystem.buildingTextures, fileID); + } + + public static void SetupRenderer(float ang, float dist, float elev, float perspective, int width, int height) { + //TODO: improve this + Gl.glEnable(Gl.GL_RESCALE_NORMAL); + Gl.glEnable(Gl.GL_COLOR_MATERIAL); + Gl.glEnable(Gl.GL_DEPTH_TEST); + Gl.glEnable(Gl.GL_NORMALIZE); + Gl.glDisable(Gl.GL_CULL_FACE); + Gl.glFrontFace(Gl.GL_CCW); + Gl.glClearDepth(1); + Gl.glEnable(Gl.GL_ALPHA_TEST); + Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA); + Gl.glEnable(Gl.GL_BLEND); + Gl.glAlphaFunc(Gl.GL_GREATER, 0f); + Gl.glClearColor(51f / 255f, 51f / 255f, 51f / 255f, 1f); + Gl.glViewport(0, 0, width, height); + float aspect = width / height; //(vp[2] - vp[0]) / (vp[3] - vp[1]); + Gl.glMatrixMode(Gl.GL_PROJECTION); + Gl.glLoadIdentity(); + Glu.gluPerspective(perspective, aspect, 0.2f, 500.0f); //0.02f, 32.0f); + Gl.glTranslatef(0, 0, -dist); + Gl.glRotatef(elev, 1, 0, 0); + Gl.glRotatef(ang, 0, 1, 0); + Gl.glMatrixMode(Gl.GL_MODELVIEW); + Gl.glLoadIdentity(); + Gl.glTranslatef(0, 0, -dist); + Gl.glRotatef(elev, 1, 0, 0); + Gl.glRotatef(-ang, 0, 1, 0); + Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_POSITION, new float[] { 1, 1, 1, 0 }); + Gl.glLightfv(Gl.GL_LIGHT1, Gl.GL_POSITION, new float[] { 1, 1, 1, 0 }); + Gl.glLightfv(Gl.GL_LIGHT2, Gl.GL_POSITION, new float[] { 1, 1, 1, 0 }); + Gl.glLightfv(Gl.GL_LIGHT3, Gl.GL_POSITION, new float[] { 1, 1, 1, 0 }); + Gl.glLoadIdentity(); + Gl.glBindTexture(Gl.GL_TEXTURE_2D, 0); + Gl.glColor3f(1.0f, 1.0f, 1.0f); + Gl.glDepthMask(Gl.GL_TRUE); + Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); + } + + public static void RenderMap(ref MapFile mapFile, int width, int height, float ang, float dist, float elev, float perspective, bool mapTexturesON = true, bool buildingTexturesON = true) { + #region Useless variables that the rendering API still needs + + MKDS_Course_Editor.NSBTA.NSBTA.NSBTA_File ani = new MKDS_Course_Editor.NSBTA.NSBTA.NSBTA_File(); + MKDS_Course_Editor.NSBTP.NSBTP.NSBTP_File tp = new MKDS_Course_Editor.NSBTP.NSBTP.NSBTP_File(); + MKDS_Course_Editor.NSBCA.NSBCA.NSBCA_File ca = new MKDS_Course_Editor.NSBCA.NSBCA.NSBCA_File(); + int[] aniframeS = new int[0]; + + #endregion + + /* Adjust rendering settings */ + SetupRenderer(ang, dist, elev, perspective, width, height); + + /* Render the map model */ + NSBMD model = mapFile.mapModel; + mapRenderer.Model = model.models[0]; + + // int scale = 64; + float scale = 0.015625f; + Gl.glScalef(mapRenderer.Model.modelScale * scale, mapRenderer.Model.modelScale * scale, mapRenderer.Model.modelScale * scale); + + /* Determine if map textures must be rendered */ + if (mapTexturesON) { + Gl.glEnable(Gl.GL_TEXTURE_2D); + } else { + Gl.glDisable(Gl.GL_TEXTURE_2D); + } + + // Render map model + mapRenderer.RenderModel("", ani, aniframeS, aniframeS, aniframeS, aniframeS, aniframeS, ca, false, -1, 0.0f, 0.0f, dist, elev, ang, true, tp, model); + + if (hideBuildings) { + return; + } + + if (buildingTexturesON) { + Gl.glEnable(Gl.GL_TEXTURE_2D); + } else { + Gl.glDisable(Gl.GL_TEXTURE_2D); + } + + for (int i = 0; i < mapFile.buildings.Count; i++) { + Building building = mapFile.buildings[i]; + model = building.NSBMDFile; + if (model is null) { + Console.WriteLine("Null building can't be rendered"); + } else { + mapRenderer.Model = model.models[0]; + ScaleTranslateRotateBuilding(building); + mapRenderer.RenderModel("", ani, aniframeS, aniframeS, aniframeS, aniframeS, aniframeS, ca, false, -1, 0.0f, 0.0f, dist, elev, ang, true, tp, model); + } + } + } + + public static Bitmap GrabMapScreenshot(int width, int height) { + Bitmap bmp = new Bitmap(width, height); + System.Drawing.Imaging.BitmapData data = bmp.LockBits(new Rectangle(0, 0, width, height), System.Drawing.Imaging.ImageLockMode.WriteOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + Gl.glReadPixels(0, 0, width, height, Gl.GL_BGR, Gl.GL_UNSIGNED_BYTE, data.Scan0); + bmp.UnlockBits(data); + bmp.RotateFlip(RotateFlipType.RotateNoneFlipY); + return bmp; + } + + private static void ScaleTranslateRotateBuilding(Building building) { + float fullXcoord = building.xPosition + building.xFraction / 65536f; + float fullYcoord = building.yPosition + building.yFraction / 65536f; + float fullZcoord = building.zPosition + building.zFraction / 65536f; + + float scaleFactor = building.NSBMDFile.models[0].modelScale / 1024; + float translateFactor = 256 / building.NSBMDFile.models[0].modelScale; + + Gl.glScalef(scaleFactor * building.width, scaleFactor * building.height, scaleFactor * building.length); + Gl.glTranslatef(fullXcoord * translateFactor / building.width, fullYcoord * translateFactor / building.height, fullZcoord * translateFactor / building.length); + Gl.glRotatef(Building.U16ToDeg(building.xRotation), 1, 0, 0); + Gl.glRotatef(Building.U16ToDeg(building.yRotation), 0, 1, 0); + Gl.glRotatef(Building.U16ToDeg(building.zRotation), 0, 0, 1); + } + + public static Image GetPokePic(int species, int w, int h, PaletteBase paletteBase, ImageBase imageBase, SpriteBase spriteBase) { + bool fiveDigits = false; // some extreme future proofing + try { + string path = Filesystem.GetMonIconPath(0); + paletteBase = new NCLR(path, 0, Path.GetFileName(path)); + } catch (FileNotFoundException) { + string path = Filesystem.GetMonIconPath(0, "D5"); + paletteBase = new NCLR(path, 0, Path.GetFileName(path)); + fiveDigits = true; + } + + // read arm9 table to grab pal ID + int paletteId = 0; + byte[] iconPalTableBuf; + + switch (RomInfo.gameFamily) { + case RomInfo.GameFamilies.DP: + iconPalTableBuf = DSUtils.ARM9.ReadBytes(0x6B838, 4); + break; + case RomInfo.GameFamilies.Plat: + iconPalTableBuf = DSUtils.ARM9.ReadBytes(0x79F80, 4); + break; + case RomInfo.GameFamilies.HGSS: + default: + iconPalTableBuf = DSUtils.ARM9.ReadBytes(0x74408, 4); + break; + } + + int iconPalTableAddress = (iconPalTableBuf[3] & 0xFF) << 24 | (iconPalTableBuf[2] & 0xFF) << 16 | (iconPalTableBuf[1] & 0xFF) << 8 | (iconPalTableBuf[0] & 0xFF) /* << 0 */; + string iconTablePath; + + int iconPalTableOffsetFromFileStart; + if (iconPalTableAddress >= RomInfo.synthOverlayLoadAddress) { + // if the pointer shows the table was moved to the synthetic overlay + iconPalTableOffsetFromFileStart = iconPalTableAddress - (int)RomInfo.synthOverlayLoadAddress; + iconTablePath = Filesystem.expArmPath; + } else { + iconPalTableOffsetFromFileStart = iconPalTableAddress - 0x02000000; + iconTablePath = RomInfo.arm9Path; + } + + using (DSUtils.EasyReader idReader = new DSUtils.EasyReader(iconTablePath, iconPalTableOffsetFromFileStart + species)) { + paletteId = idReader.ReadByte(); + } + + if (paletteId != 0) { + paletteBase.Palette[0] = paletteBase.Palette[paletteId]; // update pal 0 to be the new pal + } + + // grab tiles + int spriteFileID = species + 7; + if (fiveDigits) { + string path = Filesystem.GetMonIconPath(spriteFileID, "D5"); + imageBase = new NCGR(path, spriteFileID, Path.GetFileName(path)); + } else { + string path = Filesystem.GetMonIconPath(spriteFileID); + imageBase = new NCGR(path, spriteFileID, Path.GetFileName(path)); + } + + // grab sprite + const int ncerFileId = 2; + if (fiveDigits) { + string path = Filesystem.GetMonIconPath(ncerFileId, "D5"); + spriteBase = new NCER(path, ncerFileId, Path.GetFileName(path)); + } else { + string path = Filesystem.GetMonIconPath(ncerFileId); + spriteBase = new NCER(path, ncerFileId, Path.GetFileName(path)); + } + + // copy this from the trainer + int bank0OAMcount = spriteBase.Banks[0].oams.Length; + int[] OAMenabled = new int[bank0OAMcount]; + for (int i = 0; i < OAMenabled.Length; i++) { + OAMenabled[i] = i; + } + + // finally compose image + try { + return spriteBase.Get_Image(imageBase, paletteBase, 0, w, h, false, false, false, true, true, -1, OAMenabled); + } catch (FormatException) { + return Properties.Resources.IconPokeball; + } + // default: + //partyPokemonPictureBoxList[partyPos].Image = cb.SelectedIndex > 0 ? (Image)Properties.PokePics.ResourceManager.GetObject(FixPokenameString(PokeDatabase.System.pokeNames[(ushort)cb.SelectedIndex])) : global::DSPRE.Properties.Resources.IconPokeball; + } + + public static void GenerateKeystrokes(string keys, Scintilla textArea) { + //Example + //GenerateKeystrokes("+{TAB}"); + HotKeyManager.Enable = false; + textArea.Focus(); + SendKeys.Send(keys); + HotKeyManager.Enable = true; + } + + public static void PictureBoxDisable(object sender, PaintEventArgs e) { + if (sender is PictureBox pict && pict.Image != null && (!pict.Enabled)) { + using (Bitmap img = new Bitmap(pict.Image, pict.ClientSize)) { + ControlPaint.DrawImageDisabled(e.Graphics, img, 0, 0, pict.BackColor); + } + } + } + + public static List getHeaderListBoxNames() { + List headerListBoxNames = new List(); + + using (DSUtils.EasyReader reader = new DSUtils.EasyReader(RomInfo.internalNamesPath)) { + int headerCount = RomInfo.GetHeaderCount(); + for (int i = 0; i < headerCount; i++) { + byte[] row = reader.ReadBytes(RomInfo.internalNameLength); + string internalName = Encoding.ASCII.GetString(row); //.TrimEnd(); + headerListBoxNames.Add(MapHeader.BuildName(i, internalName)); + } + } + + return headerListBoxNames; + } + + public static List getInternalNames() { + List internalNames = new List(); + + using (DSUtils.EasyReader reader = new DSUtils.EasyReader(RomInfo.internalNamesPath)) { + int headerCount = RomInfo.GetHeaderCount(); + for (int i = 0; i < headerCount; i++) { + byte[] row = reader.ReadBytes(RomInfo.internalNameLength); + string internalName = Encoding.ASCII.GetString(row); //.TrimEnd(); + internalNames.Add(internalName.TrimEnd('\0')); + } + } + + return internalNames; + } + + public static void OpenWildEditor(int encToOpen = 0) { + Helpers.statusLabelMessage("Attempting to extract Wild Encounters NARC..."); + + DSUtils.TryUnpackNarcs(new List() { RomInfo.DirNames.encounters, RomInfo.DirNames.monIcons }); + + Helpers.statusLabelMessage("Passing control to Wild Pokémon Editor..."); + + switch (RomInfo.gameFamily) { + case RomInfo.GameFamilies.DP: + case RomInfo.GameFamilies.Plat: + using (WildEditorDPPt editor = new WildEditorDPPt(encToOpen)) + editor.ShowDialog(); + break; + default: + using (WildEditorHGSS editor = new WildEditorHGSS(encToOpen)) + editor.ShowDialog(); + break; + } + + Helpers.statusLabelMessage(); + } + } +} \ No newline at end of file diff --git a/DS_Map/Main Window.Designer.cs b/DS_Map/Main Window.Designer.cs index a8d37f9..47fcadb 100644 --- a/DS_Map/Main Window.Designer.cs +++ b/DS_Map/Main Window.Designer.cs @@ -11167,14 +11167,14 @@ // personalDataEditorToolStripMenuItem // this.personalDataEditorToolStripMenuItem.Name = "personalDataEditorToolStripMenuItem"; - this.personalDataEditorToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.personalDataEditorToolStripMenuItem.Size = new System.Drawing.Size(163, 22); this.personalDataEditorToolStripMenuItem.Text = "Pokemon Editor"; this.personalDataEditorToolStripMenuItem.Click += new System.EventHandler(this.personalDataEditorToolStripMenuItem_Click); // // learnsetsEditorToolStripMenuItem // this.learnsetsEditorToolStripMenuItem.Name = "learnsetsEditorToolStripMenuItem"; - this.learnsetsEditorToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.learnsetsEditorToolStripMenuItem.Size = new System.Drawing.Size(163, 22); this.learnsetsEditorToolStripMenuItem.Text = "Learnsets Editor"; this.learnsetsEditorToolStripMenuItem.Visible = false; this.learnsetsEditorToolStripMenuItem.Click += new System.EventHandler(this.learnsetsEditorToolStripMenuItem_Click); @@ -11182,7 +11182,7 @@ // evolutionsEditorToolStripMenuItem // this.evolutionsEditorToolStripMenuItem.Name = "evolutionsEditorToolStripMenuItem"; - this.evolutionsEditorToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.evolutionsEditorToolStripMenuItem.Size = new System.Drawing.Size(163, 22); this.evolutionsEditorToolStripMenuItem.Text = "Evolutions Editor"; this.evolutionsEditorToolStripMenuItem.Visible = false; this.evolutionsEditorToolStripMenuItem.Click += new System.EventHandler(this.evolutionsEditorToolStripMenuItem_Click); @@ -11241,16 +11241,16 @@ this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.statusLabel, this.toolStripProgressBar}); - this.statusStrip1.Location = new System.Drawing.Point(0, 739); + this.statusStrip1.Location = new System.Drawing.Point(0, 737); this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Size = new System.Drawing.Size(1214, 22); + this.statusStrip1.Size = new System.Drawing.Size(1214, 24); this.statusStrip1.TabIndex = 13; this.statusStrip1.Text = "statusStrip1"; // // statusLabel // this.statusLabel.Name = "statusLabel"; - this.statusLabel.Size = new System.Drawing.Size(39, 17); + this.statusLabel.Size = new System.Drawing.Size(39, 19); this.statusLabel.Text = "Ready"; // // toolStripProgressBar @@ -12016,7 +12016,6 @@ private System.Windows.Forms.RadioButton radio2D; private System.Windows.Forms.CheckBox wireframeCheckBox; private System.Windows.Forms.StatusStrip statusStrip1; - private System.Windows.Forms.ToolStripStatusLabel statusLabel; private System.Windows.Forms.PictureBox collisionPictureBox; private System.Windows.Forms.PictureBox typePictureBox; private System.Windows.Forms.Label typeLabel; @@ -12332,7 +12331,6 @@ private System.Windows.Forms.PictureBox rightClickPicture; private System.Windows.Forms.Label WheelClickLabel; private System.Windows.Forms.Label LeftClickLabel; - private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar; private System.Windows.Forms.ToolStripButton unpackAllButton; private System.Windows.Forms.Button pasteHeaderButton; private System.Windows.Forms.Button copyHeaderButton; diff --git a/DS_Map/Main Window.cs b/DS_Map/Main Window.cs index 087f718..23b3a27 100644 --- a/DS_Map/Main Window.cs +++ b/DS_Map/Main Window.cs @@ -506,13 +506,13 @@ namespace DSPRE { if (forceUnpack) { DSUtils.ForceUnpackNarcs(toUnpack); - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { DSUtils.ForceUnpackNarcs(new List { DirNames.interiorBuildingModels });// Last = interior buildings dir } } else { DSUtils.TryUnpackNarcs(toUnpack); - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { DSUtils.TryUnpackNarcs(new List { DirNames.interiorBuildingModels }); } } @@ -594,7 +594,11 @@ namespace DSPRE { gameIcon.Refresh(); // Paint game icon statusLabelMessage("Attempting to unpack NARCs from folder..."); Update(); - + for (int i = 0; i < 128; i++) { + if (DSUtils.OverlayIsCompressed(i)) { + DSUtils.DecompressOverlay(i); + } + } ReadROMInitData(); } @@ -605,7 +609,7 @@ namespace DSPRE { versionLabel.Text = RomInfo.gameVersion.ToString() + " " + "[" + RomInfo.romID + "]"; languageLabel.Text = "Lang: " + RomInfo.gameLanguage; - if (RomInfo.gameLanguage == gLangEnum.English) { + if (RomInfo.gameLanguage == GameLanguages.English) { if (europeByte == 0x0A) { languageLabel.Text += " [Europe]"; } else { @@ -654,7 +658,7 @@ namespace DSPRE { private void ReadROMInitData() { if (DSUtils.ARM9.CheckCompressionMark()) { - if (!RomInfo.gameFamily.Equals(gFamEnum.HGSS)) { + if (!RomInfo.gameFamily.Equals(GameFamilies.HGSS)) { MessageBox.Show("Unexpected compressed ARM9. It is advised that you double check the ARM9."); } if (!DSUtils.ARM9.Decompress(RomInfo.arm9Path)) { @@ -724,7 +728,7 @@ namespace DSPRE { MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (d == DialogResult.Yes) { - DSUtils.ARM9.WriteBytes(new byte[4] { 0, 0, 0, 0 }, (uint)(RomInfo.gameFamily == gFamEnum.DP ? 0xB7C : 0xBB4)); + DSUtils.ARM9.WriteBytes(new byte[4] { 0, 0, 0, 0 }, (uint)(RomInfo.gameFamily == GameFamilies.DP ? 0xB7C : 0xBB4)); } } @@ -749,9 +753,15 @@ namespace DSPRE { Update(); + for (int i = 0; i < 128; i++) { + if (!DSUtils.OverlayIsCompressed(i)) { + DSUtils.CompressOverlay(i); + } + } + DSUtils.RepackROM(saveRom.FileName); - if (RomInfo.gameFamily != gFamEnum.DP && RomInfo.gameFamily != gFamEnum.Plat) { + if (RomInfo.gameFamily != GameFamilies.DP && RomInfo.gameFamily != GameFamilies.Plat) { if (eventEditorIsReady) { if (DSUtils.OverlayIsCompressed(1)) { DSUtils.DecompressOverlay(1); @@ -819,16 +829,16 @@ namespace DSPRE { } } private void diamondAndPearlToolStripMenuItem_Click(object sender, EventArgs e) { - OpenCommandsDatabase(RomInfo.BuildCommandNamesDatabase(gFamEnum.DP), RomInfo.BuildCommandParametersDatabase(gFamEnum.DP), - RomInfo.BuildActionNamesDatabase(gFamEnum.DP), RomInfo.BuildComparisonOperatorsDatabase(gFamEnum.DP)); + OpenCommandsDatabase(RomInfo.BuildCommandNamesDatabase(GameFamilies.DP), RomInfo.BuildCommandParametersDatabase(GameFamilies.DP), + RomInfo.BuildActionNamesDatabase(GameFamilies.DP), RomInfo.BuildComparisonOperatorsDatabase(GameFamilies.DP)); } private void platinumToolStripMenuItem_Click(object sender, EventArgs e) { - OpenCommandsDatabase(RomInfo.BuildCommandNamesDatabase(gFamEnum.Plat), RomInfo.BuildCommandParametersDatabase(gFamEnum.Plat), - RomInfo.BuildActionNamesDatabase(gFamEnum.Plat), RomInfo.BuildComparisonOperatorsDatabase(gFamEnum.Plat)); + OpenCommandsDatabase(RomInfo.BuildCommandNamesDatabase(GameFamilies.Plat), RomInfo.BuildCommandParametersDatabase(GameFamilies.Plat), + RomInfo.BuildActionNamesDatabase(GameFamilies.Plat), RomInfo.BuildComparisonOperatorsDatabase(GameFamilies.Plat)); } private void heartGoldAndSoulSilverToolStripMenuItem_Click(object sender, EventArgs e) { - OpenCommandsDatabase(RomInfo.BuildCommandNamesDatabase(gFamEnum.HGSS), RomInfo.BuildCommandParametersDatabase(gFamEnum.HGSS), - RomInfo.BuildActionNamesDatabase(gFamEnum.HGSS), RomInfo.BuildComparisonOperatorsDatabase(gFamEnum.HGSS)); + OpenCommandsDatabase(RomInfo.BuildCommandNamesDatabase(GameFamilies.HGSS), RomInfo.BuildCommandParametersDatabase(GameFamilies.HGSS), + RomInfo.BuildActionNamesDatabase(GameFamilies.HGSS), RomInfo.BuildComparisonOperatorsDatabase(GameFamilies.HGSS)); } private void mainTabControl_SelectedIndexChanged(object sender, EventArgs e) { if (mainTabControl.SelectedTab == headerEditorTabPage) { @@ -915,8 +925,8 @@ namespace DSPRE { string wildPokeUnpackedPath = gameDirs[DirNames.encounters].unpackedDir; switch (RomInfo.gameFamily) { - case gFamEnum.DP: - case gFamEnum.Plat: + case GameFamilies.DP: + case GameFamilies.Plat: using (WildEditorDPPt editor = new WildEditorDPPt(wildPokeUnpackedPath, RomInfo.GetPokemonNames(), encToOpen, internalNames.Count)) editor.ShowDialog(); break; @@ -996,7 +1006,7 @@ namespace DSPRE { ReloadHeaderEditorLocationsList(currentTextArchive.messages); switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: areaIconComboBox.Enabled = false; areaIconPictureBox.Image = (Image)Properties.Resources.ResourceManager.GetObject("dpareaicon"); areaSettingsLabel.Text = "Show nametag:"; @@ -1014,7 +1024,7 @@ namespace DSPRE { battleBackgroundLabel.Location = new Point(battleBackgroundLabel.Location.X - 25, battleBackgroundLabel.Location.Y - 8); battleBackgroundUpDown.Location = new Point(battleBackgroundUpDown.Location.X - 25, battleBackgroundUpDown.Location.Y - 8); break; - case gFamEnum.Plat: + case GameFamilies.Plat: areaSettingsLabel.Text = "Show nametag:"; areaIconComboBox.Items.Clear(); cameraComboBox.Items.Clear(); @@ -1134,9 +1144,9 @@ namespace DSPRE { string imageName; switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: break; - case gFamEnum.Plat: + case GameFamilies.Plat: ((HeaderPt)currentHeader).areaIcon = (byte)areaIconComboBox.SelectedIndex; imageName = "areaicon0" + areaIconComboBox.SelectedIndex.ToString(); areaIconPictureBox.Image = (Image)Properties.Resources.ResourceManager.GetObject(imageName); @@ -1162,7 +1172,7 @@ namespace DSPRE { return; } - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { HeaderHGSS currentHeaderHGSS = (HeaderHGSS)currentHeader; currentHeaderHGSS.followMode = (byte)followModeComboBox.SelectedIndex; } @@ -1172,7 +1182,7 @@ namespace DSPRE { if (disableHandlers) { return; } - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { HeaderHGSS currentHeaderHGSS = (HeaderHGSS)currentHeader; currentHeaderHGSS.kantoFlag = kantoRadioButton.Checked; } @@ -1195,7 +1205,7 @@ namespace DSPRE { if (flag3CheckBox.Checked) flagVal += (byte)Math.Pow(2, 3); - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { if (flag4CheckBox.Checked) flagVal += (byte)Math.Pow(2, 4); if (flag5CheckBox.Checked) @@ -1243,7 +1253,7 @@ namespace DSPRE { cameraUpDown.Value = currentHeader.cameraAngleID; battleBackgroundUpDown.Value = currentHeader.battleBackground; - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { areaSettingsComboBox.SelectedIndex = ((HeaderHGSS)currentHeader).locationType; } @@ -1252,7 +1262,7 @@ namespace DSPRE { /* Setup controls for fields with version-specific differences */ try { switch (RomInfo.gameFamily) { - case gFamEnum.DP: { + case GameFamilies.DP: { HeaderDP h = (HeaderDP)currentHeader; locationNameComboBox.SelectedIndex = h.locationName; @@ -1261,7 +1271,7 @@ namespace DSPRE { areaSettingsComboBox.SelectedIndex = areaSettingsComboBox.FindString("[" + $"{currentHeader.locationSpecifier:D3}"); break; } - case gFamEnum.Plat: { + case GameFamilies.Plat: { HeaderPt h = (HeaderPt)currentHeader; areaIconComboBox.SelectedIndex = h.areaIcon; @@ -1301,7 +1311,7 @@ namespace DSPRE { flag2CheckBox.Checked = ba[2]; flag3CheckBox.Checked = ba[3]; - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { flag4CheckBox.Checked = ba[4]; flag5CheckBox.Checked = ba[5]; flag6CheckBox.Checked = ba[6]; @@ -1360,10 +1370,10 @@ namespace DSPRE { } switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: ((HeaderDP)currentHeader).locationName = (ushort)locationNameComboBox.SelectedIndex; break; - case gFamEnum.Plat: + case GameFamilies.Plat: ((HeaderPt)currentHeader).locationName = (byte)locationNameComboBox.SelectedIndex; break; default: @@ -1382,10 +1392,10 @@ namespace DSPRE { return; } switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: currentHeader.musicDayID = (ushort)(musicDayUpDown.Value = PokeDatabase.MusicDB.DPMusicDict.Keys.ElementAt(musicDayComboBox.SelectedIndex)); break; - case gFamEnum.Plat: + case GameFamilies.Plat: currentHeader.musicDayID = (ushort)(musicDayUpDown.Value = PokeDatabase.MusicDB.PtMusicDict.Keys.ElementAt(musicDayComboBox.SelectedIndex)); break; default: @@ -1399,10 +1409,10 @@ namespace DSPRE { } switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: currentHeader.musicNightID = (ushort)(musicNightUpDown.Value = PokeDatabase.MusicDB.DPMusicDict.Keys.ElementAt(musicNightComboBox.SelectedIndex)); break; - case gFamEnum.Plat: + case GameFamilies.Plat: currentHeader.musicNightID = (ushort)(musicNightUpDown.Value = PokeDatabase.MusicDB.PtMusicDict.Keys.ElementAt(musicNightComboBox.SelectedIndex)); break; default: @@ -1420,10 +1430,10 @@ namespace DSPRE { currentHeader.musicDayID = updValue; try { switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: musicDayComboBox.SelectedItem = PokeDatabase.MusicDB.DPMusicDict[updValue]; break; - case gFamEnum.Plat: + case GameFamilies.Plat: musicDayComboBox.SelectedItem = PokeDatabase.MusicDB.PtMusicDict[updValue]; break; default: @@ -1445,10 +1455,10 @@ namespace DSPRE { currentHeader.musicNightID = updValue; try { switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: musicNightComboBox.SelectedItem = PokeDatabase.MusicDB.DPMusicDict[updValue]; break; - case gFamEnum.Plat: + case GameFamilies.Plat: musicNightComboBox.SelectedItem = PokeDatabase.MusicDB.PtMusicDict[updValue]; break; default: @@ -1475,10 +1485,10 @@ namespace DSPRE { disableHandlers = true; try { switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: weatherComboBox.SelectedItem = PokeDatabase.Weather.DPWeatherDict[currentHeader.weatherID]; break; - case gFamEnum.Plat: + case GameFamilies.Plat: weatherComboBox.SelectedItem = PokeDatabase.Weather.PtWeatherDict[currentHeader.weatherID]; break; default: @@ -1494,10 +1504,10 @@ namespace DSPRE { try { Dictionary dict; switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: dict = PokeDatabase.System.WeatherPics.dpWeatherImageDict; break; - case gFamEnum.Plat: + case GameFamilies.Plat: dict = PokeDatabase.System.WeatherPics.ptWeatherImageDict; break; default: @@ -1528,10 +1538,10 @@ namespace DSPRE { disableHandlers = true; try { switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: cameraComboBox.SelectedItem = PokeDatabase.CameraAngles.DPPtCameraDict[currentHeader.cameraAngleID]; break; - case gFamEnum.Plat: + case GameFamilies.Plat: cameraComboBox.SelectedItem = PokeDatabase.CameraAngles.DPPtCameraDict[currentHeader.cameraAngleID]; break; default: @@ -1547,11 +1557,11 @@ namespace DSPRE { string imageName; try { switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: currentHeader.cameraAngleID = (byte)cameraComboBox.SelectedIndex; imageName = "dpcamera" + cameraUpDown.Value.ToString(); break; - case gFamEnum.Plat: + case GameFamilies.Plat: currentHeader.cameraAngleID = (byte)cameraComboBox.SelectedIndex; imageName = "ptcamera" + cameraUpDown.Value.ToString(); break; @@ -1572,10 +1582,10 @@ namespace DSPRE { } switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: weatherUpDown.Value = PokeDatabase.Weather.DPWeatherDict.Keys.ElementAt(weatherComboBox.SelectedIndex); break; - case gFamEnum.Plat: + case GameFamilies.Plat: weatherUpDown.Value = PokeDatabase.Weather.PtWeatherDict.Keys.ElementAt(weatherComboBox.SelectedIndex); break; default: @@ -1594,10 +1604,10 @@ namespace DSPRE { } switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: cameraUpDown.Value = PokeDatabase.CameraAngles.DPPtCameraDict.Keys.ElementAt(cameraComboBox.SelectedIndex); break; - case gFamEnum.Plat: + case GameFamilies.Plat: cameraUpDown.Value = PokeDatabase.CameraAngles.DPPtCameraDict.Keys.ElementAt(cameraComboBox.SelectedIndex); break; default: @@ -1751,13 +1761,13 @@ namespace DSPRE { string locationName = ""; switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: locationName = locationNameComboBox.Items[((HeaderDP)h).locationName].ToString(); break; - case gFamEnum.Plat: + case GameFamilies.Plat: locationName = locationNameComboBox.Items[((HeaderPt)h).locationName].ToString(); break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: locationName = locationNameComboBox.Items[((HeaderHGSS)h).locationName].ToString(); break; } @@ -1792,13 +1802,13 @@ namespace DSPRE { string[] locBuff = new string[2]; switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: locBuff[1] = locationNameComboBox.Items[((HeaderDP)hBuff[1]).locationName].ToString(); break; - case gFamEnum.Plat: + case GameFamilies.Plat: locBuff[1] = locationNameComboBox.Items[((HeaderPt)hBuff[1]).locationName].ToString(); break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: locBuff[1] = locationNameComboBox.Items[((HeaderHGSS)hBuff[1]).locationName].ToString(); break; } @@ -1810,13 +1820,13 @@ namespace DSPRE { string lastName = locBuff[0]; //Kind of a locBuff[-1] locBuff[0] = locBuff[1]; switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: locBuff[1] = locationNameComboBox.Items[((HeaderDP)hBuff[1]).locationName].ToString(); break; - case gFamEnum.Plat: + case GameFamilies.Plat: locBuff[1] = locationNameComboBox.Items[((HeaderPt)hBuff[1]).locationName].ToString(); break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: locBuff[1] = locationNameComboBox.Items[((HeaderHGSS)hBuff[1]).locationName].ToString(); break; } @@ -1854,11 +1864,11 @@ namespace DSPRE { } switch (RomInfo.gameFamily) { - case gFamEnum.DP: - case gFamEnum.Plat: + case GameFamilies.DP: + case GameFamilies.Plat: currentHeader.locationSpecifier = Byte.Parse(areaSettingsComboBox.SelectedItem.ToString().Substring(1, 3)); break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: HeaderHGSS ch = (HeaderHGSS)currentHeader; ch.locationType = (byte)areaSettingsComboBox.SelectedIndex; break; @@ -2124,11 +2134,11 @@ namespace DSPRE { wildPokeUpDown.Value = encountersIDCopy; switch (RomInfo.gameFamily) { - case gFamEnum.DP: - case gFamEnum.Plat: + case GameFamilies.DP: + case GameFamilies.Plat: areaSettingsComboBox.SelectedIndex = shownameCopy; break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: areaSettingsComboBox.SelectedIndex = areaSettingsCopy; break; } @@ -2614,7 +2624,7 @@ namespace DSPRE { statusLabelMessage("Multiple Headers are associated to this Matrix, including the last selected one [Header " + headerID + "]. Now using its textures."); } else { - if (gameFamily.Equals(gFamEnum.DP)) { + if (gameFamily.Equals(GameFamilies.DP)) { foreach (ushort r in result) { HeaderDP hdp; hdp = (HeaderDP)MapHeader.LoadFromARM9(r); @@ -2624,7 +2634,7 @@ namespace DSPRE { break; } } - } else if (gameFamily.Equals(gFamEnum.Plat)) { + } else if (gameFamily.Equals(GameFamilies.Plat)) { foreach (ushort r in result) { HeaderPt hpt; if (ROMToolboxDialog.flag_DynamicHeadersPatchApplied || ROMToolboxDialog.CheckFilesDynamicHeadersPatchApplied()) { @@ -3195,7 +3205,7 @@ namespace DSPRE { DirNames.areaData, }); - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { DSUtils.TryUnpackNarcs(new List { DirNames.interiorBuildingModels }); } @@ -3204,8 +3214,8 @@ namespace DSPRE { collisionPainterPictureBox.Image = new Bitmap(100, 100); typePainterPictureBox.Image = new Bitmap(100, 100); switch (RomInfo.gameFamily) { - case gFamEnum.DP: - case gFamEnum.Plat: + case GameFamilies.DP: + case GameFamilies.Plat: mapPartsTabControl.TabPages.Remove(bgsTabPage); break; default: @@ -3222,8 +3232,8 @@ namespace DSPRE { for (int i = 0; i < mapCount; i++) { using (DSUtils.EasyReader reader = new DSUtils.EasyReader(RomInfo.gameDirs[DirNames.maps].unpackedDir + "\\" + i.ToString("D4"))) { switch (RomInfo.gameFamily) { - case gFamEnum.DP: - case gFamEnum.Plat: + case GameFamilies.DP: + case GameFamilies.Plat: reader.BaseStream.Position = 0x10 + reader.ReadUInt32() + reader.ReadUInt32(); break; default: @@ -3288,12 +3298,12 @@ namespace DSPRE { selectMapComboBox.SelectedIndex = 0; exteriorbldRadioButton.Checked = true; switch (RomInfo.gameFamily) { - case gFamEnum.DP: - case gFamEnum.Plat: + case GameFamilies.DP: + case GameFamilies.Plat: mapTextureComboBox.SelectedIndex = 7; buildTextureComboBox.SelectedIndex = 1; break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: mapTextureComboBox.SelectedIndex = 3; buildTextureComboBox.SelectedIndex = 1; break; @@ -3328,12 +3338,12 @@ namespace DSPRE { UpdateMapBinAndRefresh(temp, "Map BIN imported successfully!"); return; } else { - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { //If HGSS didn't work try reading as Platinum Map - temp = new MapFile(of.FileName, gFamEnum.Plat, false); + temp = new MapFile(of.FileName, GameFamilies.Plat, false); } else { //If Plat didn't work try reading as HGSS Map - temp = new MapFile(of.FileName, gFamEnum.HGSS, false); + temp = new MapFile(of.FileName, GameFamilies.HGSS, false); } if (temp.correctnessFlag) { @@ -3723,7 +3733,7 @@ namespace DSPRE { modelSizeLBL.Text = currentMapFile.mapModelData.Length.ToString() + " B"; terrainSizeLBL.Text = currentMapFile.bdhc.Length.ToString() + " B"; - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { BGSSizeLBL.Text = currentMapFile.bgs.Length.ToString() + " B"; } } @@ -4715,7 +4725,7 @@ namespace DSPRE { #region BDHC I/O private void bdhcImportButton_Click(object sender, EventArgs e) { OpenFileDialog it = new OpenFileDialog() { - Filter = RomInfo.gameFamily == gFamEnum.DP ? MapFile.BDHCFilter : MapFile.BDHCamFilter + Filter = RomInfo.gameFamily == GameFamilies.DP ? MapFile.BDHCFilter : MapFile.BDHCamFilter }; if (it.ShowDialog(this) != DialogResult.OK) { @@ -4729,7 +4739,7 @@ namespace DSPRE { private void bdhcExportButton_Click(object sender, EventArgs e) { SaveFileDialog sf = new SaveFileDialog { FileName = selectMapComboBox.SelectedItem.ToString(), - Filter = RomInfo.gameFamily == gFamEnum.DP ? MapFile.BDHCFilter : MapFile.BDHCamFilter + Filter = RomInfo.gameFamily == GameFamilies.DP ? MapFile.BDHCFilter : MapFile.BDHCamFilter }; if (sf.ShowDialog(this) != DialogResult.OK) { @@ -4852,7 +4862,7 @@ namespace DSPRE { Dictionary dict = new Dictionary(); - if (gameFamily.Equals(gFamEnum.DP)) { + if (gameFamily.Equals(GameFamilies.DP)) { foreach (ushort headerID in result) { HeaderDP hdp = (HeaderDP)MapHeader.LoadFromARM9(headerID); @@ -5082,7 +5092,7 @@ namespace DSPRE { MW_LoadModelTextures(eventMapFile.mapModel, RomInfo.gameDirs[DirNames.mapTextures].unpackedDir, areaData.mapTileset); bool isInteriorMap = false; - if ((RomInfo.gameVersion == gVerEnum.HeartGold || RomInfo.gameVersion == gVerEnum.SoulSilver) && areaData.areaType == 0x0) + if ((RomInfo.gameVersion == GameVersions.HeartGold || RomInfo.gameVersion == GameVersions.SoulSilver) && areaData.areaType == 0x0) isInteriorMap = true; for (int i = 0; i < eventMapFile.buildings.Count; i++) { @@ -5303,15 +5313,15 @@ namespace DSPRE { RomInfo.SetOWtable(); RomInfo.Set3DOverworldsDict(); - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { DSUtils.TryUnpackNarcs(new List { DirNames.interiorBuildingModels }); } disableHandlers = true; if (File.Exists(RomInfo.OWtablePath)) { switch (RomInfo.gameFamily) { - case gFamEnum.DP: - case gFamEnum.Plat: + case GameFamilies.DP: + case GameFamilies.Plat: break; default: // HGSS Overlay 1 must be decompressed in order to read the overworld table @@ -6381,13 +6391,13 @@ namespace DSPRE { int locNum; switch (RomInfo.gameFamily) { - case gFamEnum.DP: { + case GameFamilies.DP: { HeaderDP h = (HeaderDP)destHeader; locNum = h.locationName; break; } - case gFamEnum.Plat: { + case GameFamilies.Plat: { HeaderPt h = (HeaderPt)destHeader; locNum = h.locationName; @@ -8134,8 +8144,8 @@ namespace DSPRE { string[] lightTypes; switch (RomInfo.gameFamily) { - case gFamEnum.DP: - case gFamEnum.Plat: + case GameFamilies.DP: + case GameFamilies.Plat: lightTypes = new string[3] { "Day/Night Light", "Model's light", "Unknown Light" }; break; default: @@ -8363,7 +8373,7 @@ namespace DSPRE { areaDataLightTypeComboBox.SelectedIndex = currentAreaData.lightType; disableHandlers = true; - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { areaDataDynamicTexturesNumericUpDown.Value = currentAreaData.dynamicTextureType; bool interior = currentAreaData.areaType == 0; @@ -8540,7 +8550,7 @@ namespace DSPRE { overlayCameraTblOffset = RAMaddresses[0] - DSUtils.GetOverlayRAMAddress(RomInfo.cameraTblOverlayNumber); using (DSUtils.EasyReader br = new DSUtils.EasyReader(camOverlayPath, overlayCameraTblOffset)) { - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { currentCameraTable = new GameCamera[17]; for (int i = 0; i < currentCameraTable.Length; i++) { currentCameraTable[i] = new GameCamera(br.ReadUInt32(), br.ReadInt16(), br.ReadInt16(), br.ReadInt16(), @@ -8690,7 +8700,7 @@ namespace DSPRE { uint entrySize = 4; uint tableSizeOffset = 10; - if (gameFamily == gFamEnum.HGSS) { + if (gameFamily == GameFamilies.HGSS) { entrySize += 2; tableSizeOffset += 2; encounterSSEQAltUpDown.Enabled = true; @@ -8702,7 +8712,7 @@ namespace DSPRE { uint entryOffset = (uint)ar.BaseStream.Position; byte tclass = (byte)ar.ReadUInt16(); ushort musicD = ar.ReadUInt16(); - ushort? musicN = gameFamily == gFamEnum.HGSS ? ar.ReadUInt16() : (ushort?)null; + ushort? musicN = gameFamily == GameFamilies.HGSS ? ar.ReadUInt16() : (ushort?)null; trainerClassEncounterMusicDict[tclass] = (entryOffset, musicD, musicN); } } @@ -8846,7 +8856,7 @@ namespace DSPRE { pokemonSpecies[i] = new SpeciesFile(new FileStream(RomInfo.gameDirs[DirNames.personalPokeData].unpackedDir + "\\" + i.ToString("D4"), FileMode.Open)); } - if (gameFamily == gFamEnum.HGSS) { + if (gameFamily == GameFamilies.HGSS) { foreach (ComboBox partyGenderComboBox in partyGenderComboBoxList) { partyGenderComboBox.Visible = true; partyGenderComboBox.Items.Add("Default Gender"); @@ -8858,7 +8868,7 @@ namespace DSPRE { partyGenderComboBox.Visible = false; } - if (gameFamily == gFamEnum.DP) { + if (gameFamily == GameFamilies.DP) { foreach (ComboBox partyFormComboBox in partyFormComboBoxList) partyFormComboBox.Visible = false; @@ -9165,7 +9175,7 @@ namespace DSPRE { currentTrainerFile.party[i].difficulty = (byte)partyIVUpdownList[i].Value; - if (hasMoreThanOneGender((int)currentTrainerFile.party[i].pokeID, pokemonSpecies) && gameFamily == gFamEnum.HGSS) { + if (hasMoreThanOneGender((int)currentTrainerFile.party[i].pokeID, pokemonSpecies) && gameFamily == GameFamilies.HGSS) { switch (partyGenderComboBoxList[i].SelectedIndex) { case TRAINER_PARTY_POKEMON_GENDER_DEFAULT_INDEX: currentTrainerFile.party[i].genderAndAbilityFlags = PartyPokemon.GenderAndAbilityFlags.NO_FLAGS; @@ -9280,7 +9290,7 @@ namespace DSPRE { encounterSSEQMainUpDown.Value = 0; } - eyeContactMusicAltLabel.Enabled = encounterSSEQAltUpDown.Enabled = (encounterSSEQMainUpDown.Enabled && gameFamily == gFamEnum.HGSS); + eyeContactMusicAltLabel.Enabled = encounterSSEQAltUpDown.Enabled = (encounterSSEQMainUpDown.Enabled && gameFamily == GameFamilies.HGSS); encounterSSEQAltUpDown.Value = output.musicN != null ? (ushort)output.musicN : 0; currentTrainerFile.trp.trainerClass = (byte)selection; } @@ -9294,7 +9304,7 @@ namespace DSPRE { string tilesFilename = tilesFileID.ToString("D4"); trainerTile = new NCGR(gameDirs[DirNames.trainerGraphics].unpackedDir + "\\" + tilesFilename, tilesFileID, tilesFilename); - if (gameFamily == gFamEnum.DP) { + if (gameFamily == GameFamilies.DP) { return 0; } @@ -9447,7 +9457,7 @@ namespace DSPRE { } disableHandlers = false; - if (gameFamily.Equals(gFamEnum.HGSS) && tableEditorIsReady) { + if (gameFamily.Equals(GameFamilies.HGSS) && tableEditorIsReady) { pbEffectsTrainerCombobox.Items[selectedTrClass] = trainerClassListBox.Items[selectedTrClass]; for (int i = 0; i < vsTrainerEffectsList.Count; i++) { if (vsTrainerEffectsList[i].trainerClass == selectedTrClass) { @@ -9483,7 +9493,7 @@ namespace DSPRE { partyAbilityComboBoxList[partyPokemonPosition].Items.Add(ability1); //if the name " -" is returned for ability 2 then there is no ability 2 - if (ability2.Equals(" -") || ability2.Equals(ability1) || gameFamily != gFamEnum.HGSS) { + if (ability2.Equals(" -") || ability2.Equals(ability1) || gameFamily != GameFamilies.HGSS) { partyAbilityComboBoxList[partyPokemonPosition].Enabled = false; } else { partyAbilityComboBoxList[partyPokemonPosition].Items.Add(ability2); @@ -9497,7 +9507,7 @@ namespace DSPRE { int currentPokemonGenderRatio = pokemonSpecies[partyPokemonComboboxList[partyPokemonPosition].SelectedIndex].GenderRatioMaleToFemale; PartyPokemon.GenderAndAbilityFlags currentPokemonGenderAndAbilityFlags = currentTrainerFile.party[partyPokemonPosition].genderAndAbilityFlags; - if (gameFamily == gFamEnum.HGSS) { + if (gameFamily == GameFamilies.HGSS) { switch (currentPokemonGenderRatio) { case GENDER_RATIO_MALE: partyGenderComboBoxList[partyPokemonPosition].SelectedIndex = TRAINER_PARTY_POKEMON_GENDER_MALE_INDEX; @@ -9530,7 +9540,7 @@ namespace DSPRE { switch (pokemonID) { case PICHU_ID_NUM: - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { pokemonFormNames.Add("Non-Spiky-Eared"); pokemonFormNames.Add("Spiky-Eared"); } else { @@ -9588,7 +9598,7 @@ namespace DSPRE { } private void setTrainerPartyPokemonForm(int partyPokemonPosition) { - if (gameFamily != gFamEnum.DP) { + if (gameFamily != GameFamilies.DP) { partyFormComboBoxList[partyPokemonPosition].Items.Clear(); List currentPokemonFormName = getPokemonFormNames(partyPokemonComboboxList[partyPokemonPosition].SelectedIndex); foreach (string formName in currentPokemonFormName) @@ -9627,7 +9637,7 @@ namespace DSPRE { private void SetupConditionalMusicTable() { switch (RomInfo.gameFamily) { - case gFamEnum.HGSS: + case GameFamilies.HGSS: RomInfo.SetConditionalMusicTableOffsetToRAMAddress(); conditionalMusicTable = new List<(ushort, ushort, ushort)>(); @@ -9656,7 +9666,7 @@ namespace DSPRE { } break; - case gFamEnum.Plat: + case GameFamilies.Plat: pbEffectsMonGroupBox.Enabled = false; pbEffectsTrainerGroupBox.Enabled = false; conditionalMusicGroupBox.Enabled = false; @@ -9671,7 +9681,7 @@ namespace DSPRE { } } private void SetupBattleEffectsTables() { - if (RomInfo.gameFamily == gFamEnum.HGSS || RomInfo.gameFamily == gFamEnum.Plat) { + if (RomInfo.gameFamily == GameFamilies.HGSS || RomInfo.gameFamily == GameFamilies.Plat) { DSUtils.TryUnpackNarcs(new List { DirNames.trainerGraphics, DirNames.textArchives, @@ -9688,7 +9698,7 @@ namespace DSPRE { byte comboTableEntriesCount; - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { comboTableEntriesCount = DSUtils.ARM9.ReadByte(RomInfo.effectsComboTableOffsetToSizeLimiter); vsPokemonEffectsList = new List<(int pokemonID, int comboID)>(); @@ -9721,7 +9731,7 @@ namespace DSPRE { String expArmPath = RomInfo.gameDirs[DirNames.synthOverlay].unpackedDir + '\\' + ROMToolboxDialog.expandedARMfileID.ToString("D4"); - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { using (DSUtils.EasyReader ar = new DSUtils.EasyReader(ROMToolboxDialog.flag_TrainerClassBattleTableRepointed ? expArmPath : RomInfo.arm9Path, vsTrainerTableStartAddress)) { byte trainerTableEntriesCount = DSUtils.ARM9.ReadByte(RomInfo.vsTrainerEntryTableOffsetToSizeLimiter); @@ -9763,7 +9773,7 @@ namespace DSPRE { } } - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { var items = pbEffectsCombosListbox.Items.Cast().ToArray(); pbEffectsPokemonChooseMainCombobox.Items.Clear(); @@ -9818,13 +9828,13 @@ namespace DSPRE { MapHeader selected = MapHeader.LoadFromARM9(newTuple.header); switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: locationNameConditionalMusicLBL.Text = RomInfo.GetLocationNames()[(selected as HeaderDP).locationName]; break; - case gFamEnum.Plat: + case GameFamilies.Plat: locationNameConditionalMusicLBL.Text = RomInfo.GetLocationNames()[(selected as HeaderPt).locationName]; break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: locationNameConditionalMusicLBL.Text = RomInfo.GetLocationNames()[(selected as HeaderHGSS).locationName]; break; } @@ -9880,7 +9890,7 @@ namespace DSPRE { string updatedEntry = "Combo " + index.ToString("D2") + " - " + "Effect #" + battleIntroEffect + ", " + "Music #" + battleMusic; pbEffectsCombosListbox.Items[index] = updatedEntry; - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { pbEffectsTrainerChooseMainCombobox.Items[index] = pbEffectsPokemonChooseMainCombobox.Items[index] = updatedEntry; } disableHandlers = false; @@ -9921,7 +9931,7 @@ namespace DSPRE { private void HOWpbEffectsTableButton_Click(object sender, EventArgs e) { MessageBox.Show("An entry of this table is a combination of VS. Graphics + Battle Theme.\n\n" + - (RomInfo.gameFamily.Equals(gFamEnum.HGSS) ? "Each entry can be \"inherited\" by one or more Pokémon or Trainer classes." : ""), + (RomInfo.gameFamily.Equals(GameFamilies.HGSS) ? "Each entry can be \"inherited\" by one or more Pokémon or Trainer classes." : ""), "How this table works", MessageBoxButtons.OK, MessageBoxIcon.Information); } diff --git a/DS_Map/Main Window.resx b/DS_Map/Main Window.resx index 3281ac8..773342c 100644 --- a/DS_Map/Main Window.resx +++ b/DS_Map/Main Window.resx @@ -1036,96 +1036,6 @@ p3S+M+m1V1me9QgCUQNXX2YRT1sYHBiEP3wHVbp3PF3cB40GbrzN86xHENrScf1NDsl8FaI4jODMHOgS SOacfYAmbr5XeNYjGH7yDReXv+JeNIUhUYwFpmZjDz+nMLf5B3b2rcZ5tju4ntjtFw4T54j+v2g/t9NH 9AiCIPwGJelqUAd/T3AAAAAASUVORK5CYII= - - - - 239, 17 - - - - AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w - LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACM - EgAAAk1TRnQBSQFMAgEBCgEAAaABGwGgARsBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo - AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA - AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 - AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA - AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm - AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM - AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA - ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz - AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ - AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM - AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA - AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA - AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ - AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/ - AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA - AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm - ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ - Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz - AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA - AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM - AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM - ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM - Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA - AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM - AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ - AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz - AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm - AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw - AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/xMABLwEAAS8KwAGvAIA - BOkBvAMABOkBvCoAASYBHgQAArwBAATpBAAE6QG8KgABJgEeAgABJgEeAQABvAEAAukBvAIABLwBAALp - AbwtAAG8ASYBHgMAAukBvAEABAsCvALpAbwsAAEmAR4CAAG8AgAC6QG8AgsBvAEAAgsBvALpAbwmAAO8 - AgABJgEeAgABvAMAAukBvAILArwCCwEAAukBvCUAAc0BCgEAAbwBAAEmAR4BAAHsAwABvAEAAukBvAUL - AgAC6QG8JQABzQEKAQACvAEmAR4BAAESArwBAAG8AQAC6QG8AgsCvAMAAukBvCQAAc0BCgMAAbwBAAEm - AR4GAALpAbwBAAILA7wBAALpAbwkAAHNAQoBEgHsAQABEgG8CAAC6QG8AgADCwIAAukBvCQAAc0BCgES - AgABEgG8CAAC6QO8BAABvALpAbwjAAHNAQoBAAG8AwABvAgABOkBvAMABOkBvAEAAbwhAAHNAQoBAAG8 - AwAB7AG8BwAE6QQABOkBGwExAZkhAAFlGwADMT0AARsBMQEbKQAB7AESAe8FAAH0EQAKEhgAAvMC6wHv - AewB6wHzBQAB6gH0BQAC8gH0BgADEgZKAxIUAAHzAfEBvALsAQcBvAEHAewB6wEHBAABDgESAe0EAAHw - ASIBKQHrAfMFAAESAkoGbgJKARIDAAEPBwABDwUAAQ8BAAG8AfcB7QGSAe8BvAEHAfAB9AHyAesB6gQA - AQ4BbQHtAwABBwEjAisBKgHrAfMDAAESAUoBbgFKBm4BSgFuAUoBEgEAAQ8J7wEPAwAB7wIAAW0C9wHw - AbwB8wLyAvQB7QHrAQcDAAEHARUB6gPtASkBKwElAR8BJQEqAesB9AIAARIBSgFuAUoGkwFKAW4BSgES - AgAB7wEBAR8G7wMAAu8CAAG8Ae8B8QH0AfYB8gLwAfQB9gHvAewBbQMAAfQBEAHrAUoBMAEDASUBFwH5 - AiABJQEqAeoCAAESAUoBkwFuBkkBbgGTAUoBEgIAAe8CAQEfBe8BAAIPAu8CAAHyAe8C9gH3AW0B6wHy - AfQB9gHzAesB7AEHAgAB9AEQAXMBRQEkASAB+QEXAfkBIAEfASABMQEiAfQBAAESAZMBbgFJBmwBSQFu - AZMBEgIAAe8BAQEfBu8DAALvAwAB7wHzAbwBkgHwAfcB9gH3Ae0BBwHrAewB7wMAAfIBEQFFAR8CIAH5 - ARcB+QEgAR8BMQEiAfQBAAESAZMBSQJsBHECbAFJAZMBEgEAAQ8J7wEPAwAB7wMAAQcB8AFEASUBGgKS - AfIC8wH0ARIB6wHyAgAB8gFDAewBRQEfASAB+QEXASYBMQE3ATABFAIAAUkBbgFsAXEBlwRxAZcBcQFs - AW4BEgIAAQ8HAAEPBQABDwIAAfQBbQEsASUB6wH0AvEC7wHyAusBvAIAAfMBbQHrAUUBHwIgAfkBMQFR - Am0B8wIAAUkCbAGXAnEClwJxAZcCbAFJAgABFQEPARUDAAEVAQ8BFQgAARwBLAErAeoBBwG8Au8B9AK8 - AfMCbQMAAfABEwFFAR8BJAIrAVEBvAUAAUkBbAJxBpcCcQFsAUkBAAEVAfcBBwH3ARUBAAEVAfcBBwH3 - ARUGAAHvAisBSwHvAQcBvAHxBAcB9AGLAeoDAAHwAREBSwEkASMBAwFKAfAHAAFsAXEDlwJ4A5cBcQFs - AgABDwEHAQABBwEPAQABDwEHAQABBwEPBQAB7wErASwBRQK8AQcB7wEHAbwB8AEZAtsBbAEHAwAB8AEj - AisBDgHwAfEIAAFJAXEClwF4BZcBcQFJAgABFQH3AQcB9wEVAQABFQH3AQcB9wEVBQABEgEsAUUB8gHz - Ae8B8gHxAbsC2gGzAosB8wQAAfABIwE3ATEBDgsAAUkBcQKXAXgDlwFxAUkEAAEVAQ8BFQMAARUBDwEV - BwABEgG8AgABBwGzAdQBswJsAe8IAAHvAg4B8wwAAWwBcQSXAXEBbBkAAQcCEgG8HQAEcRcAAfQL8wH0 - EwAN8xMAAQcL7wEHAgAPEAEAAQcNswEHBwAEQwcAAe8BAAG7BrMBuwIAAe8CAAEQBjgBEAbTARABAAGz - DQABswUAAkME8AJDBQAB7wEAAbMGAAGzAgAB7wIAARACOAMAATgBEALTAgAC0wEQAQABsw0AAbMEAAFD - CPABQwQAAe8BAAGtAQABlwJWAZcBAAGzAgAB7wIAARADOAEAAjgBEAHTAQAC0wEAAdMBEAEAAbMBAAFW - CVABVgEAAbMDAAFDA/ABkgJDAZID8AFDAwAB7wEAAa0BAARWAQABswH0AQAB7wIAARACOAIAAjgBEAHT - AQAC0wEAAdMBEAEAAbMBAAtWAQABswMAAUMB8AGSARIBQwHwAZIBQwESAZIB8AFDAwAB7wEAAa0BAARW - AQABswH0AQAB7wIAARADOAEAAjgBEALTAgAC0wEQAQABswEAC1YBAAGzAgABQwHwARICYwFDAQAB8AFD - AmMBEgHwAUMCAAHvAQABrQEABHgBAAGzAfQBAAHvAgABEAY4ARAG0wEQAQABswEAC1YBAAGzAgABQwES - BEcCQwRHARIBQwIAAe8BAAGtBgABswHzAQAB7wIADxABAAGzAQALVgEAAbMCAAFDDEcBQwIAAe8BAAG7 - Aq0EswG7AfMBAAHvAgABEAZHARAGAAEQAQABswEAC1YBAAGzAgABQwxHAUMCAAHvAQAB8wP0AfMB9AQA - Ae8CAAEQAkcCAAJHARAGAAEQAQABswEAC1YBAAGzAwABQwJHApQGRwFDAwAB7wEAAXQCMgEsAXQBAAG8 - AvcBAAHvAgABEAFHAQACRwEAAUcBEAYAARABAAGzAQABVgl4AVYBAAGzAwABQwFHBJQFRwFDAwAB7wEA - ASwDwwFTAQAB9wIAAfMB8AIAARABRwEAAkcBAAFHARAGAAEQAQABswEAC3gBAAGzBAABQwSUBEcBQwQA - Ae8BAAF0AywBdAEAAfcBAAHzAfADAAEQAkcCAAJHARAGAAEQAQABswEAC3gBAAGzBQACQwGUA0cCQwUA - Ae8IAAHzAfAEAAEQBkcBEAYAARABAAGzDQABswcABEMHAAEHCO8BBwUADxABAAEJDbMBCREAAUIBTQE+ - BwABPgMAASgDAAFAAwABMAMAAQEBAAEBBQABgAEBFgAD/wEAAv8CwwQAAf8BgQKDBAAB/wEAAYcBgwQA - Af8BMAGMASMEAAH/AeEBiAEDBAAB/wHBAYEBAwQAAfEBgwGAASMEAAHhAQ4BgAFjBAAB4AEAAYAB4wQA - AcABgQGIASMEAAHAAX8BjAFjBAABxAF/AYMBwwQAAYQBfwGDAYIEAAGEAT8BhwGABAABjAF/Af8B+AQA - A/8B+AQAAf8BjwG/Af8B4AEHAv8B+AEHAo8BwAEDAv8BwAEHAY8BBwHAAQMBgAE8AYABBwGOAQMBgAEB - AQABGAGAAQMBgAEBAYABAQIAAYABAwGAAQEBgAEBAgABgAEBAYABAAGAAQECAAHAAQEBwAEAAYABAQEA - ARgBwAEAAcABAQGAAQEBgAE8AcABAAHAAQEBgAEBAY4BPwHAAQAB4AEPAYABAQEEAR8BgAEAAeABHwHA - AQMBJAGfAgAB4AE/AcABAwEEAR8BAAEBAeAB/wHgAQcBjgE/AZgBDwHwAf8B8AEPAv8B+AF/Av8B/AE/ - Av8BgAEDAv8BgAEDAv8BgAEDAQABAQEAAQEB/AE/AaABGwEAAQEBfwH9AfABDwGvAdsBAAExAX8B/QHg - AQcBqAFbAQABSQFAAQUBwAEDAagBSwEAAUkBQAEFAcABAwGoAUsBAAExAUABBQGBAQEBqAFLAQABAQFA - AQUBgAEBAa8BywEAAQEBQAEFAYABAQGgAQsBAAH9AUABBQGAAQEBoAF7ARgBxQFAAQUBwAEDAaABiwEk - Ae0BQAEFAcABAwGgAbMBJAHNAUABBQHgAQcBoAGnARgB7QFAAQUB8AEPAb8BzwEAAf0BfwH9AfwBPwGA - AR8BAAEBAQABAQL/Cw== diff --git a/DS_Map/PokemonEditor.cs b/DS_Map/PokemonEditor.cs index b0276c0..b222a58 100644 --- a/DS_Map/PokemonEditor.cs +++ b/DS_Map/PokemonEditor.cs @@ -14,12 +14,6 @@ namespace DSPRE { public partial class PokemonEditor : Form { public PokemonEditor(string[] itemNames, string[] abilityNames, string[] moveNames) { InitializeComponent(); - foreach (var cb in Controls.OfType()) { - cb.Resize += (sender, e) => { - if (!cb.Focused) - cb.SelectionLength = 0; - }; - } IsMdiContainer = true; PersonalDataEditor personalEditor = new PersonalDataEditor(itemNames, abilityNames, evoPage); diff --git a/DS_Map/ROMFiles/AreaData.cs b/DS_Map/ROMFiles/AreaData.cs index cc2d400..a724da1 100644 --- a/DS_Map/ROMFiles/AreaData.cs +++ b/DS_Map/ROMFiles/AreaData.cs @@ -24,7 +24,7 @@ namespace DSPRE.ROMFiles { buildingsTileset = reader.ReadUInt16(); mapTileset = reader.ReadUInt16(); - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { dynamicTextureType = reader.ReadUInt16(); areaType = reader.ReadByte(); lightType = reader.ReadByte(); @@ -44,7 +44,7 @@ namespace DSPRE.ROMFiles { writer.Write(buildingsTileset); writer.Write(mapTileset); - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { writer.Write(dynamicTextureType); writer.Write(areaType); writer.Write((byte)lightType); diff --git a/DS_Map/ROMFiles/MapFile.cs b/DS_Map/ROMFiles/MapFile.cs index bced3aa..71f9d20 100644 --- a/DS_Map/ROMFiles/MapFile.cs +++ b/DS_Map/ROMFiles/MapFile.cs @@ -76,9 +76,9 @@ namespace DSPRE.ROMFiles { #endregion #region Constructors (1) - public MapFile(string path, gFamEnum gFamily, bool discardMoveperms = false, bool showMessages = true) : this (new FileStream(path, FileMode.Open), gFamily, discardMoveperms, showMessages) {} - public MapFile(int mapNumber, gFamEnum gFamily, bool discardMoveperms = false, bool showMessages = true) : this(RomInfo.gameDirs[DirNames.maps].unpackedDir + "\\" + mapNumber.ToString("D4"), gFamily, discardMoveperms, showMessages) { } - public MapFile(Stream data, gFamEnum gFamily, bool discardMoveperms = false, bool showMessages = true) { + public MapFile(string path, GameFamilies gFamily, bool discardMoveperms = false, bool showMessages = true) : this (new FileStream(path, FileMode.Open), gFamily, discardMoveperms, showMessages) {} + public MapFile(int mapNumber, GameFamilies gFamily, bool discardMoveperms = false, bool showMessages = true) : this(RomInfo.gameDirs[DirNames.maps].unpackedDir + "\\" + mapNumber.ToString("D4"), gFamily, discardMoveperms, showMessages) { } + public MapFile(Stream data, GameFamilies gFamily, bool discardMoveperms = false, bool showMessages = true) { using (BinaryReader reader = new BinaryReader(data)) { /* Read sections lengths */ int permissionsSectionLength = reader.ReadInt32(); @@ -87,7 +87,7 @@ namespace DSPRE.ROMFiles { int bdhcSectionLength = reader.ReadInt32(); /* Read background sounds section */ - if (gFamily == gFamEnum.HGSS) { //Map must be loaded as HGSS + if (gFamily == GameFamilies.HGSS) { //Map must be loaded as HGSS ushort bgsSignature = reader.ReadUInt16(); if (bgsSignature == 0x1234) { ushort bgsDataLength = reader.ReadUInt16(); @@ -227,7 +227,7 @@ namespace DSPRE.ROMFiles { writer.Write(bdhc.Length); /* Write soundplate section for HG/SS */ - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { writer.Write(bgs); } diff --git a/DS_Map/ROMFiles/MapHeader.cs b/DS_Map/ROMFiles/MapHeader.cs index 425f383..f0c19d3 100644 --- a/DS_Map/ROMFiles/MapHeader.cs +++ b/DS_Map/ROMFiles/MapHeader.cs @@ -128,32 +128,32 @@ namespace DSPRE.ROMFiles { #endregion Fields #region Methods (1) - public static MapHeader LoadFromByteArray(byte[] headerData, ushort headerNumber, gFamEnum gameFamily = gFamEnum.NULL) { + public static MapHeader LoadFromByteArray(byte[] headerData, ushort headerNumber, GameFamilies gameFamily = GameFamilies.NULL) { /* Encapsulate header data into the class appropriate for the gameVersion */ if (headerData.Length < MapHeader.length) { MessageBox.Show("File of header " + headerNumber + " is too small and can't store header data.", "Header file too small", MessageBoxButtons.OK, MessageBoxIcon.Error); return null; } - if (gameFamily == gFamEnum.NULL) { + if (gameFamily == GameFamilies.NULL) { gameFamily = RomInfo.gameFamily; } switch (gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: return new HeaderDP(headerNumber, new MemoryStream(headerData)); - case gFamEnum.Plat: + case GameFamilies.Plat: return new HeaderPt(headerNumber, new MemoryStream(headerData)); default: return new HeaderHGSS(headerNumber, new MemoryStream(headerData)); } } - public static MapHeader LoadFromFile(string filename, ushort headerNumber, long offsetInFile, gFamEnum gameFamily = gFamEnum.NULL) { + public static MapHeader LoadFromFile(string filename, ushort headerNumber, long offsetInFile, GameFamilies gameFamily = GameFamilies.NULL) { /* Calculate header offset and load data */ byte[] headerData = DSUtils.ReadFromFile(filename, offsetInFile, MapHeader.length); return LoadFromByteArray(headerData, headerNumber, gameFamily); } - public static MapHeader LoadFromARM9(ushort headerNumber, gFamEnum gameFamily = gFamEnum.NULL) { + public static MapHeader LoadFromARM9(ushort headerNumber, GameFamilies gameFamily = GameFamilies.NULL) { long headerOffset = RomInfo.headerTableOffset + MapHeader.length * headerNumber; return LoadFromFile(RomInfo.arm9Path, headerNumber, headerOffset, gameFamily); } diff --git a/DS_Map/ROMFiles/ScriptCommand.cs b/DS_Map/ROMFiles/ScriptCommand.cs index a847097..8472bb2 100644 --- a/DS_Map/ROMFiles/ScriptCommand.cs +++ b/DS_Map/ROMFiles/ScriptCommand.cs @@ -90,42 +90,42 @@ namespace DSPRE.ROMFiles { break; case 0x00B0: // Warp [HGSS] - if (RomInfo.gameFamily.Equals(RomInfo.gFamEnum.HGSS)) { + if (RomInfo.gameFamily.Equals(RomInfo.GameFamilies.HGSS)) { name += FormatCmd_Warp(parametersList); } else { goto default; } break; case 0x0152: // SetOverworldDefaultPosition [HGSS] - if (RomInfo.gameFamily.Equals(RomInfo.gFamEnum.HGSS)) { + if (RomInfo.gameFamily.Equals(RomInfo.GameFamilies.HGSS)) { name += FormatCmd_Overworld_TwoParams(parametersList); } else { goto default; } break; case 0x0153: // SetOverworldPosition [HGSS] - if (RomInfo.gameFamily.Equals(RomInfo.gFamEnum.HGSS)) { + if (RomInfo.gameFamily.Equals(RomInfo.GameFamilies.HGSS)) { name += FormatCmd_Overworld_3Coords_Dir(parametersList); } else { goto default; } break; case 0x0154: // SetOverworldDefaultMovement [HGSS] - if (RomInfo.gameFamily.Equals(RomInfo.gFamEnum.HGSS)) { + if (RomInfo.gameFamily.Equals(RomInfo.GameFamilies.HGSS)) { name += FormatCmd_Overworld_Move(parametersList); } else { goto default; } break; case 0x0155: // SetOverworldDefaultDirection [DPPt] - if (RomInfo.gameFamily.Equals(RomInfo.gFamEnum.HGSS)) { + if (RomInfo.gameFamily.Equals(RomInfo.GameFamilies.HGSS)) { name += FormatCmd_Overworld_Dir(parametersList); } else { goto default; } break; case 0x0158: // SetOverworldDirection [DPPt] - if (RomInfo.gameFamily.Equals(RomInfo.gFamEnum.HGSS)) { + if (RomInfo.gameFamily.Equals(RomInfo.GameFamilies.HGSS)) { name += FormatCmd_Overworld_Dir(parametersList); } else { goto default; @@ -133,42 +133,42 @@ namespace DSPRE.ROMFiles { break; case 0x00BE: // Warp [DPPt] - if (RomInfo.gameFamily.Equals(RomInfo.gFamEnum.DP) || RomInfo.gameFamily.Equals(RomInfo.gFamEnum.Plat)) { + if (RomInfo.gameFamily.Equals(RomInfo.GameFamilies.DP) || RomInfo.gameFamily.Equals(RomInfo.GameFamilies.Plat)) { name += FormatCmd_Warp(parametersList); } else { goto default; } break; case 0x0186: // SetOverworldDefaultPosition [DPPt] - if (RomInfo.gameFamily.Equals(RomInfo.gFamEnum.DP) || RomInfo.gameFamily.Equals(RomInfo.gFamEnum.Plat)) { + if (RomInfo.gameFamily.Equals(RomInfo.GameFamilies.DP) || RomInfo.gameFamily.Equals(RomInfo.GameFamilies.Plat)) { name += FormatCmd_Overworld_TwoParams(parametersList); } else { goto default; } break; case 0x0187: // SetOverworldPosition [DPPt] - if (RomInfo.gameFamily.Equals(RomInfo.gFamEnum.DP) || RomInfo.gameFamily.Equals(RomInfo.gFamEnum.Plat)) { + if (RomInfo.gameFamily.Equals(RomInfo.GameFamilies.DP) || RomInfo.gameFamily.Equals(RomInfo.GameFamilies.Plat)) { name += FormatCmd_Overworld_3Coords_Dir(parametersList); } else { goto default; } break; case 0x0188: // SetOverworldDefaultMovement [DPPt] - if (RomInfo.gameFamily.Equals(RomInfo.gFamEnum.DP) || RomInfo.gameFamily.Equals(RomInfo.gFamEnum.Plat)) { + if (RomInfo.gameFamily.Equals(RomInfo.GameFamilies.DP) || RomInfo.gameFamily.Equals(RomInfo.GameFamilies.Plat)) { name += FormatCmd_Overworld_Move(parametersList); } else { goto default; } break; case 0x0189: // SetOverworldDefaultDirection [DPPt] - if (RomInfo.gameFamily.Equals(RomInfo.gFamEnum.DP) || RomInfo.gameFamily.Equals(RomInfo.gFamEnum.Plat)) { + if (RomInfo.gameFamily.Equals(RomInfo.GameFamilies.DP) || RomInfo.gameFamily.Equals(RomInfo.GameFamilies.Plat)) { name += FormatCmd_Overworld_Dir(parametersList); } else { goto default; } break; case 0x018C: // SetOverworldDirection [DPPt] - if (RomInfo.gameFamily.Equals(RomInfo.gFamEnum.DP) || RomInfo.gameFamily.Equals(RomInfo.gFamEnum.Plat)) { + if (RomInfo.gameFamily.Equals(RomInfo.GameFamilies.DP) || RomInfo.gameFamily.Equals(RomInfo.GameFamilies.Plat)) { name += FormatCmd_Overworld_Dir(parametersList); } else { goto default; diff --git a/DS_Map/ROMFiles/ScriptFile.cs b/DS_Map/ROMFiles/ScriptFile.cs index ccdc1bb..864abdc 100644 --- a/DS_Map/ROMFiles/ScriptFile.cs +++ b/DS_Map/ROMFiles/ScriptFile.cs @@ -211,8 +211,8 @@ namespace DSPRE.ROMFiles { /* How to read parameters for different commands for DPPt*/ switch (RomInfo.gameFamily) { - case gFamEnum.DP: - case gFamEnum.Plat: + case GameFamilies.DP: + case GameFamilies.Plat: switch (id) { case 0x16: //Jump case 0x1A: //Call @@ -318,7 +318,7 @@ namespace DSPRE.ROMFiles { } break; case 0x2C5: { - if (RomInfo.gameVersion == gVerEnum.Platinum) { + if (RomInfo.gameVersion == GameVersions.Platinum) { parameterList.Add(dataReader.ReadBytes(2)); parameterList.Add(dataReader.ReadBytes(2)); } else { @@ -330,13 +330,13 @@ namespace DSPRE.ROMFiles { case 0x2C9: case 0x2CA: case 0x2CD: - if (RomInfo.gameVersion == gVerEnum.Platinum) { + if (RomInfo.gameVersion == GameVersions.Platinum) { break; } else { goto default; } case 0x2CF: - if (RomInfo.gameVersion == gVerEnum.Platinum) { + if (RomInfo.gameVersion == GameVersions.Platinum) { parameterList.Add(dataReader.ReadBytes(2)); parameterList.Add(dataReader.ReadBytes(2)); } else { @@ -348,7 +348,7 @@ namespace DSPRE.ROMFiles { break; } break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: switch (id) { case 0x16: //Jump case 0x1A: //Call diff --git a/DS_Map/ROMFiles/TrainerFile.cs b/DS_Map/ROMFiles/TrainerFile.cs index 567cf22..1aba11d 100644 --- a/DS_Map/ROMFiles/TrainerFile.cs +++ b/DS_Map/ROMFiles/TrainerFile.cs @@ -78,7 +78,7 @@ namespace DSPRE.ROMFiles { writer.Write(move); } } - if (RomInfo.gameFamily == RomInfo.gFamEnum.HGSS || RomInfo.gameFamily == RomInfo.gFamEnum.Plat) + if (RomInfo.gameFamily == RomInfo.GameFamilies.HGSS || RomInfo.gameFamily == RomInfo.GameFamilies.Plat) writer.Write(ballSeals); // Diamond and Pearl apparently dont save ball capsule data in enemy trainer pokedata!!! } return newData.ToArray(); @@ -249,7 +249,7 @@ namespace DSPRE.ROMFiles { } - if (RomInfo.gameFamily == RomInfo.gFamEnum.HGSS || RomInfo.gameFamily == RomInfo.gFamEnum.Plat) + if (RomInfo.gameFamily == RomInfo.GameFamilies.HGSS || RomInfo.gameFamily == RomInfo.GameFamilies.Plat) content[i] = new PartyPokemon(difficulty, genderAndAbilityFlags, level, pokemon, form_no, reader.ReadUInt16(), heldItem, moves); else content[i] = new PartyPokemon(difficulty, level, pokemon, heldItem, moves); // Diamond and Pearl apparently dont save ball capsule data in enemy trainer pokedata!!! diff --git a/DS_Map/ROMToolboxDialog.cs b/DS_Map/ROMToolboxDialog.cs index 882130e..d5b9b18 100644 --- a/DS_Map/ROMToolboxDialog.cs +++ b/DS_Map/ROMToolboxDialog.cs @@ -38,7 +38,7 @@ namespace DSPRE { CheckStandardizedItems(); - if (RomInfo.gameLanguage == gLangEnum.English || RomInfo.gameLanguage == gLangEnum.Spanish) { + if (RomInfo.gameLanguage == GameLanguages.English || RomInfo.gameLanguage == GameLanguages.Spanish) { CheckARM9ExpansionApplied(); } else { DisableARM9patch("Unsupported\nlanguage"); @@ -50,31 +50,31 @@ namespace DSPRE { switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: DisableOverlay1patch("Unsupported"); DisableDynamicHeadersPatch("Unsupported"); DisableMatrixExpansionPatch("Unsupported"); DisableScrcmdRepointPatch("Unsupported"); DisableKillTextureAnimationsPatch("Unsupported"); break; - case gFamEnum.Plat: + case GameFamilies.Plat: DisableOverlay1patch("Unsupported"); DisableMatrixExpansionPatch("Unsupported"); DisableScrcmdRepointPatch("Unsupported"); DisableKillTextureAnimationsPatch("Unsupported"); - if (RomInfo.gameLanguage == gLangEnum.English || RomInfo.gameLanguage == gLangEnum.Spanish) { + if (RomInfo.gameLanguage == GameLanguages.English || RomInfo.gameLanguage == GameLanguages.Spanish) { CheckBDHCamPatchApplied(); } CheckDynamicHeadersPatchApplied(); break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: if (!DSUtils.CheckOverlayHasCompressionFlag(1)) { DisableOverlay1patch("Already applied"); overlay1CB.Visible = true; } - if (RomInfo.gameLanguage == gLangEnum.English || RomInfo.gameLanguage == gLangEnum.Spanish) { + if (RomInfo.gameLanguage == GameLanguages.English || RomInfo.gameLanguage == GameLanguages.Spanish) { CheckBDHCamPatchApplied(); CheckMatrixExpansionApplied(); CheckScrcmdRepointPatchApplied(); @@ -264,8 +264,8 @@ namespace DSPRE { DisableARM9patch("Already applied"); switch (RomInfo.gameFamily) { - case gFamEnum.Plat: - case gFamEnum.HGSS: + case GameFamilies.Plat: + case GameFamilies.HGSS: BDHCamARM9requiredLBL.Visible = false; BDHCamPatchButton.Enabled = true; BDHCamPatchLBL.Enabled = true; @@ -364,7 +364,7 @@ namespace DSPRE { private void BDHCAMPatchButton_Click(object sender, EventArgs e) { BDHCAMPatchData data = new BDHCAMPatchData(); - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { if (DSUtils.CheckOverlayHasCompressionFlag(data.overlayNumber)) { DialogResult d1 = MessageBox.Show("It is STRONGLY recommended to configure Overlay1 as uncompressed before proceeding.\n\n" + "More details in the following dialog.\n\n" + "Do you want to know more?", @@ -513,7 +513,7 @@ namespace DSPRE { }; //Distortion world - turnback cave Griseous Orb fix - if (gameFamily.Equals(gFamEnum.Plat)) { + if (gameFamily.Equals(GameFamilies.Plat)) { string ow9path = DSUtils.GetOverlayPath(9); int ow9offs = 0x8E20 + 10; @@ -590,8 +590,8 @@ namespace DSPRE { ROMToolboxDialog.flag_arm9Expanded = true; switch (RomInfo.gameFamily) { - case gFamEnum.Plat: - case gFamEnum.HGSS: + case GameFamilies.Plat: + case GameFamilies.HGSS: BDHCamPatchButton.Text = "Apply Patch"; BDHCamPatchButton.Enabled = true; BDHCamPatchLBL.Enabled = true; @@ -660,7 +660,7 @@ namespace DSPRE { DynamicHeadersPatchData data = new DynamicHeadersPatchData(); var headersDir = RomInfo.gameDirs[DirNames.dynamicHeaders]; - bool specialCase = RomInfo.gameFamily == gFamEnum.HGSS && RomInfo.gameLanguage != gLangEnum.Japanese && RomInfo.gameLanguage != gLangEnum.Spanish; + bool specialCase = RomInfo.gameFamily == GameFamilies.HGSS && RomInfo.gameLanguage != GameLanguages.Japanese && RomInfo.gameLanguage != GameLanguages.Spanish; string specialCaseChanges = ""; if (specialCase) { diff --git a/DS_Map/Resources/PokeDatabase.cs b/DS_Map/Resources/PokeDatabase.cs index f938da6..2deb915 100644 --- a/DS_Map/Resources/PokeDatabase.cs +++ b/DS_Map/Resources/PokeDatabase.cs @@ -612,42 +612,42 @@ namespace DSPRE.Resources { } } public static class System { - public static Dictionary versionsDict = new Dictionary() { - ["ADAE"] = gVerEnum.Diamond, - ["ADAS"] = gVerEnum.Diamond, - ["ADAI"] = gVerEnum.Diamond, - ["ADAF"] = gVerEnum.Diamond, - ["ADAD"] = gVerEnum.Diamond, - ["ADAJ"] = gVerEnum.Diamond, + public static Dictionary versionsDict = new Dictionary() { + ["ADAE"] = GameVersions.Diamond, + ["ADAS"] = GameVersions.Diamond, + ["ADAI"] = GameVersions.Diamond, + ["ADAF"] = GameVersions.Diamond, + ["ADAD"] = GameVersions.Diamond, + ["ADAJ"] = GameVersions.Diamond, - ["APAE"] = gVerEnum.Pearl, - ["APAS"] = gVerEnum.Pearl, - ["APAI"] = gVerEnum.Pearl, - ["APAF"] = gVerEnum.Pearl, - ["APAD"] = gVerEnum.Pearl, - ["APAJ"] = gVerEnum.Pearl, + ["APAE"] = GameVersions.Pearl, + ["APAS"] = GameVersions.Pearl, + ["APAI"] = GameVersions.Pearl, + ["APAF"] = GameVersions.Pearl, + ["APAD"] = GameVersions.Pearl, + ["APAJ"] = GameVersions.Pearl, - ["CPUE"] = gVerEnum.Platinum, - ["CPUS"] = gVerEnum.Platinum, - ["CPUI"] = gVerEnum.Platinum, - ["CPUF"] = gVerEnum.Platinum, - ["CPUD"] = gVerEnum.Platinum, - ["CPUJ"] = gVerEnum.Platinum, - ["CPUP"] = gVerEnum.Platinum, + ["CPUE"] = GameVersions.Platinum, + ["CPUS"] = GameVersions.Platinum, + ["CPUI"] = GameVersions.Platinum, + ["CPUF"] = GameVersions.Platinum, + ["CPUD"] = GameVersions.Platinum, + ["CPUJ"] = GameVersions.Platinum, + ["CPUP"] = GameVersions.Platinum, - ["IPKE"] = gVerEnum.HeartGold, - ["IPKS"] = gVerEnum.HeartGold, - ["IPKI"] = gVerEnum.HeartGold, - ["IPKF"] = gVerEnum.HeartGold, - ["IPKD"] = gVerEnum.HeartGold, - ["IPKJ"] = gVerEnum.HeartGold, + ["IPKE"] = GameVersions.HeartGold, + ["IPKS"] = GameVersions.HeartGold, + ["IPKI"] = GameVersions.HeartGold, + ["IPKF"] = GameVersions.HeartGold, + ["IPKD"] = GameVersions.HeartGold, + ["IPKJ"] = GameVersions.HeartGold, - ["IPGE"] = gVerEnum.SoulSilver, - ["IPGS"] = gVerEnum.SoulSilver, - ["IPGI"] = gVerEnum.SoulSilver, - ["IPGF"] = gVerEnum.SoulSilver, - ["IPGD"] = gVerEnum.SoulSilver, - ["IPGJ"] = gVerEnum.SoulSilver + ["IPGE"] = GameVersions.SoulSilver, + ["IPGS"] = GameVersions.SoulSilver, + ["IPGI"] = GameVersions.SoulSilver, + ["IPGF"] = GameVersions.SoulSilver, + ["IPGD"] = GameVersions.SoulSilver, + ["IPGJ"] = GameVersions.SoulSilver }; public static Dictionary MapCollisionPainters = new Dictionary() { diff --git a/DS_Map/Resources/ROMToolboxDB/ToolboxDB.cs b/DS_Map/Resources/ROMToolboxDB/ToolboxDB.cs index e577255..d844273 100644 --- a/DS_Map/Resources/ROMToolboxDB/ToolboxDB.cs +++ b/DS_Map/Resources/ROMToolboxDB/ToolboxDB.cs @@ -14,36 +14,36 @@ namespace DSPRE.Resources.ROMToolboxDB { internal uint initOffset; public static Dictionary arm9ExpansionCodeDB = new Dictionary() { - ["branchString" + "_" + RomInfo.gFamEnum.DP + "_" + RomInfo.gLangEnum.English] = "05 F1 34 FC", - ["branchString" + "_" + RomInfo.gFamEnum.DP + "_" + RomInfo.gLangEnum.Spanish] = "05 F1 04 FD", - ["branchString" + "_" + RomInfo.gFamEnum.Plat + "_" + RomInfo.gLangEnum.English] = "00 F1 B4 F8", - ["branchString" + "_" + RomInfo.gFamEnum.Plat + "_" + RomInfo.gLangEnum.Spanish] = "00 F1 B2 F9", - ["branchString" + "_" + RomInfo.gFamEnum.HGSS + "_" + RomInfo.gLangEnum.English] = "0F F1 30 FB", - ["branchString" + "_" + RomInfo.gFamEnum.HGSS + "_" + RomInfo.gLangEnum.Spanish] = "0F F1 40 FB", + ["branchString" + "_" + RomInfo.GameFamilies.DP + "_" + RomInfo.GameLanguages.English] = "05 F1 34 FC", + ["branchString" + "_" + RomInfo.GameFamilies.DP + "_" + RomInfo.GameLanguages.Spanish] = "05 F1 04 FD", + ["branchString" + "_" + RomInfo.GameFamilies.Plat + "_" + RomInfo.GameLanguages.English] = "00 F1 B4 F8", + ["branchString" + "_" + RomInfo.GameFamilies.Plat + "_" + RomInfo.GameLanguages.Spanish] = "00 F1 B2 F9", + ["branchString" + "_" + RomInfo.GameFamilies.HGSS + "_" + RomInfo.GameLanguages.English] = "0F F1 30 FB", + ["branchString" + "_" + RomInfo.GameFamilies.HGSS + "_" + RomInfo.GameLanguages.Spanish] = "0F F1 40 FB", - ["initString" + "_" + RomInfo.gFamEnum.DP] = "FC B5 05 48 C0 46 41 21 09 22 02 4D A8 47 00 20 03 21 FC BD F1 64 00 02 00 80 3C 02", //Valid for ENG and ESP, also for P - ["initString" + "_" + RomInfo.gFamEnum.Plat + "_" + RomInfo.gLangEnum.English] = "FC B5 05 48 C0 46 41 21 09 22 02 4D A8 47 00 20 03 21 FC BD A5 6A 00 02 00 80 3C 02", - ["initString" + "_" + RomInfo.gFamEnum.Plat + "_" + RomInfo.gLangEnum.Spanish] = "FC B5 05 48 C0 46 41 21 09 22 02 4D A8 47 00 20 03 21 FC BD B9 6A 00 02 00 80 3C 02", - ["initString" + "_" + RomInfo.gFamEnum.HGSS] = "FC B5 05 48 C0 46 1C 21 00 22 02 4D A8 47 00 20 03 21 FC BD 09 75 00 02 00 80 3C 02" //Valid for ENG and ESP, also for SS + ["initString" + "_" + RomInfo.GameFamilies.DP] = "FC B5 05 48 C0 46 41 21 09 22 02 4D A8 47 00 20 03 21 FC BD F1 64 00 02 00 80 3C 02", //Valid for ENG and ESP, also for P + ["initString" + "_" + RomInfo.GameFamilies.Plat + "_" + RomInfo.GameLanguages.English] = "FC B5 05 48 C0 46 41 21 09 22 02 4D A8 47 00 20 03 21 FC BD A5 6A 00 02 00 80 3C 02", + ["initString" + "_" + RomInfo.GameFamilies.Plat + "_" + RomInfo.GameLanguages.Spanish] = "FC B5 05 48 C0 46 41 21 09 22 02 4D A8 47 00 20 03 21 FC BD B9 6A 00 02 00 80 3C 02", + ["initString" + "_" + RomInfo.GameFamilies.HGSS] = "FC B5 05 48 C0 46 1C 21 00 22 02 4D A8 47 00 20 03 21 FC BD 09 75 00 02 00 80 3C 02" //Valid for ENG and ESP, also for SS }; public static Dictionary arm9ExpansionOffsetsDB = new Dictionary() { - ["branchOffset" + "_" + RomInfo.gFamEnum.DP] = 0x02000C80, //Valid also for P - ["branchOffset" + "_" + RomInfo.gFamEnum.Plat] = 0x02000CB4, - ["branchOffset" + "_" + RomInfo.gFamEnum.HGSS] = 0x02000CD0, //Valid also for SS + ["branchOffset" + "_" + RomInfo.GameFamilies.DP] = 0x02000C80, //Valid also for P + ["branchOffset" + "_" + RomInfo.GameFamilies.Plat] = 0x02000CB4, + ["branchOffset" + "_" + RomInfo.GameFamilies.HGSS] = 0x02000CD0, //Valid also for SS - ["initOffset" + "_" + RomInfo.gFamEnum.DP + "_" + RomInfo.gLangEnum.English] = 0x021064EC, - ["initOffset" + "_" + RomInfo.gFamEnum.DP + "_" + RomInfo.gLangEnum.Spanish] = 0x0210668C, - ["initOffset" + "_" + RomInfo.gFamEnum.Plat + "_" + RomInfo.gLangEnum.English] = 0x02100E20, - ["initOffset" + "_" + RomInfo.gFamEnum.Plat + "_" + RomInfo.gLangEnum.Spanish] = 0x0210101C, - ["initOffset" + "_" + RomInfo.gFamEnum.HGSS + "_" + RomInfo.gLangEnum.English] = 0x02110334, - ["initOffset" + "_" + RomInfo.gFamEnum.HGSS + "_" + RomInfo.gLangEnum.Spanish] = 0x02110354 + ["initOffset" + "_" + RomInfo.GameFamilies.DP + "_" + RomInfo.GameLanguages.English] = 0x021064EC, + ["initOffset" + "_" + RomInfo.GameFamilies.DP + "_" + RomInfo.GameLanguages.Spanish] = 0x0210668C, + ["initOffset" + "_" + RomInfo.GameFamilies.Plat + "_" + RomInfo.GameLanguages.English] = 0x02100E20, + ["initOffset" + "_" + RomInfo.GameFamilies.Plat + "_" + RomInfo.GameLanguages.Spanish] = 0x0210101C, + ["initOffset" + "_" + RomInfo.GameFamilies.HGSS + "_" + RomInfo.GameLanguages.English] = 0x02110334, + ["initOffset" + "_" + RomInfo.GameFamilies.HGSS + "_" + RomInfo.GameLanguages.Spanish] = 0x02110354 }; internal ARM9PatchData() { branchOffset = arm9ExpansionOffsetsDB[nameof(branchOffset) + "_" + RomInfo.gameFamily] - DSUtils.ARM9.address; initOffset = arm9ExpansionOffsetsDB[nameof(initOffset) + "_" + RomInfo.gameFamily + "_" + RomInfo.gameLanguage] - DSUtils.ARM9.address; branchString = arm9ExpansionCodeDB[nameof(branchString) + "_" + RomInfo.gameFamily + "_" + RomInfo.gameLanguage]; - if (RomInfo.gameFamily == gFamEnum.Plat) { + if (RomInfo.gameFamily == GameFamilies.Plat) { initString = arm9ExpansionCodeDB[nameof(initString) + "_" + RomInfo.gameFamily + "_" + RomInfo.gameLanguage]; } else { initString = arm9ExpansionCodeDB[nameof(initString) + "_" + RomInfo.gameFamily]; @@ -65,32 +65,32 @@ namespace DSPRE.Resources.ROMToolboxDB { internal byte[] subroutine; public static Dictionary BDHCamCodeDB = new Dictionary() { - ["branchString" + "_" + RomInfo.gFamEnum.Plat + "_" + RomInfo.gLangEnum.English] = "B9 F3 E2 F8", - ["branchString" + "_" + RomInfo.gFamEnum.Plat + "_" + RomInfo.gLangEnum.Spanish] = "B9 F3 AA F8", - ["branchString" + "_" + RomInfo.gFamEnum.HGSS] = "B6 F3 2E FA", //Also valid for SS, both ESP and ENG + ["branchString" + "_" + RomInfo.GameFamilies.Plat + "_" + RomInfo.GameLanguages.English] = "B9 F3 E2 F8", + ["branchString" + "_" + RomInfo.GameFamilies.Plat + "_" + RomInfo.GameLanguages.Spanish] = "B9 F3 AA F8", + ["branchString" + "_" + RomInfo.GameFamilies.HGSS] = "B6 F3 2E FA", //Also valid for SS, both ESP and ENG ["overlayString1"] = "00 4B 18 47 41 9C 3D 02", ["overlayString2"] = "00 4B 18 47 01 9C 3D 02", }; public static Dictionary BDHCamOffsetsDB = new Dictionary() { - ["branchOffset" + "_" + RomInfo.gFamEnum.Plat + "_" + RomInfo.gLangEnum.English] = 0x0202040C, - ["branchOffset" + "_" + RomInfo.gFamEnum.Plat + "_" + RomInfo.gLangEnum.Spanish] = 0x0202047C, - ["branchOffset" + "_" + RomInfo.gFamEnum.HGSS] = 0x02023174, //Also valid for SS, both ESP and ENG + ["branchOffset" + "_" + RomInfo.GameFamilies.Plat + "_" + RomInfo.GameLanguages.English] = 0x0202040C, + ["branchOffset" + "_" + RomInfo.GameFamilies.Plat + "_" + RomInfo.GameLanguages.Spanish] = 0x0202047C, + ["branchOffset" + "_" + RomInfo.GameFamilies.HGSS] = 0x02023174, //Also valid for SS, both ESP and ENG - ["overlayOffset1" + "_" + RomInfo.gFamEnum.Plat + "_" + RomInfo.gLangEnum.English] = 0x0001E1B4, - ["overlayOffset1" + "_" + RomInfo.gFamEnum.Plat + "_" + RomInfo.gLangEnum.Spanish] = 0x0001E1BC, - ["overlayOffset1" + "_" + RomInfo.gFamEnum.HGSS] = 0x0001574C, + ["overlayOffset1" + "_" + RomInfo.GameFamilies.Plat + "_" + RomInfo.GameLanguages.English] = 0x0001E1B4, + ["overlayOffset1" + "_" + RomInfo.GameFamilies.Plat + "_" + RomInfo.GameLanguages.Spanish] = 0x0001E1BC, + ["overlayOffset1" + "_" + RomInfo.GameFamilies.HGSS] = 0x0001574C, - ["overlayOffset2" + "_" + RomInfo.gFamEnum.Plat + "_" + RomInfo.gLangEnum.English] = 0x0001E2CC, - ["overlayOffset2" + "_" + RomInfo.gFamEnum.Plat + "_" + RomInfo.gLangEnum.Spanish] = 0x0001E2D4, - ["overlayOffset2" + "_" + RomInfo.gFamEnum.HGSS] = 0x00015864, + ["overlayOffset2" + "_" + RomInfo.GameFamilies.Plat + "_" + RomInfo.GameLanguages.English] = 0x0001E2CC, + ["overlayOffset2" + "_" + RomInfo.GameFamilies.Plat + "_" + RomInfo.GameLanguages.Spanish] = 0x0001E2D4, + ["overlayOffset2" + "_" + RomInfo.GameFamilies.HGSS] = 0x00015864, }; public static uint BDHCamSubroutineOffset = 0x000115B0; internal BDHCAMPatchData() { switch (RomInfo.gameFamily) { - case gFamEnum.Plat: + case GameFamilies.Plat: overlayNumber = 5; branchString = BDHCamCodeDB[nameof(branchString) + "_" + RomInfo.gameFamily + "_" + RomInfo.gameLanguage]; @@ -98,7 +98,7 @@ namespace DSPRE.Resources.ROMToolboxDB { overlayOffset1 = BDHCamOffsetsDB[nameof(overlayOffset1) + "_" + RomInfo.gameFamily + "_" + RomInfo.gameLanguage]; overlayOffset2 = BDHCamOffsetsDB[nameof(overlayOffset2) + "_" + RomInfo.gameFamily + "_" + RomInfo.gameLanguage]; break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: overlayNumber = 1; branchString = BDHCamCodeDB[nameof(branchString) + "_" + RomInfo.gameFamily]; @@ -167,9 +167,9 @@ namespace DSPRE.Resources.ROMToolboxDB { return "00 B5 01 1C 32 20 00 22 CC F7 58 F9 03 1C DF F7 49 FC 00 BD"; } } - public static Dictionary[]> dynamicHeadersPointersDB = new Dictionary[]>() { + public static Dictionary[]> dynamicHeadersPointersDB = new Dictionary[]>() { // format: headerID*18 offset, (ARM9_HEADER_TABLE_OFFSET + n) offset - [gFamEnum.Plat] = new Tuple[] { + [GameFamilies.Plat] = new Tuple[] { new Tuple(0x3A03E, 0x3A048), new Tuple(0x3A052, 0x3A05C), new Tuple(0x3A066, 0x3A080), @@ -191,7 +191,7 @@ namespace DSPRE.Resources.ROMToolboxDB { new Tuple(0x3A1F6, 0x3A208), new Tuple(0x3A212, 0x3A224), }, - [gFamEnum.HGSS] = new Tuple[] { + [GameFamilies.HGSS] = new Tuple[] { new Tuple(0x3B282, 0x3B28C), new Tuple(0x3B296, 0x3B2A8), new Tuple(0x3B2B2, 0x3B2BC), @@ -225,7 +225,7 @@ namespace DSPRE.Resources.ROMToolboxDB { initOffset = getDynamicHeadersInitOffset(RomInfo.romID); initString = getDynamicHeadersInitString(RomInfo.romID); - if (RomInfo.gameFamily == gFamEnum.HGSS) { + if (RomInfo.gameFamily == GameFamilies.HGSS) { pointerDiff = (int)(initOffset - getDynamicHeadersInitOffset("IPKE")); } else { pointerDiff = (int)(initOffset - getDynamicHeadersInitOffset("CPUE")); @@ -233,10 +233,10 @@ namespace DSPRE.Resources.ROMToolboxDB { } } - public static Dictionary syntheticOverlayFileNumbersDB = new Dictionary() { - [gFamEnum.DP] = 9, - [gFamEnum.Plat] = 9, - [gFamEnum.HGSS] = 0, + public static Dictionary syntheticOverlayFileNumbersDB = new Dictionary() { + [GameFamilies.DP] = 9, + [GameFamilies.Plat] = 9, + [GameFamilies.HGSS] = 0, }; public static Dictionary matrixExpansionDB = new Dictionary() { diff --git a/DS_Map/RomInfo.cs b/DS_Map/RomInfo.cs index 8420125..a77297e 100644 --- a/DS_Map/RomInfo.cs +++ b/DS_Map/RomInfo.cs @@ -6,7 +6,6 @@ using System.Linq; using DSPRE.Resources; using System; using DSPRE.ROMFiles; -using static DSPRE.RomInfo; namespace DSPRE { @@ -15,49 +14,44 @@ namespace DSPRE { /// public class RomInfo { + public static readonly byte internalNameLength = 16; + public static uint synthOverlayLoadAddress = 0x023C8000; + public Dictionary, (Color background, Color foreground)> MapCellsColorDictionary; public static string folderSuffix = "_DSPRE_contents"; + const string dataFolderName = @"data"; + public static string romID { get; private set; } public static string fileName { get; private set; } public static string workDir { get; private set; } public static string arm9Path { get; private set; } + public static string arm7Path { get; private set; } public static string overlayTablePath { get; set; } + public static string y7Path { get; set; } + public static string dataPath { 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; } - - - public static uint synthOverlayLoadAddress = 0x023C8000; + public static string unpackedPath { get; set; } + public static string bannerPath { get; set; } + public static string headerPath { get; set; } + public static GameLanguages gameLanguage { get; private set; } + public static GameVersions gameVersion { get; private set; } + public static GameFamilies gameFamily { get; private set; } public static uint arm9spawnOffset { get; private set; } - public static int initialMoneyOverlayNumber { get; private set; } public static uint initialMoneyOverlayOffset { get; private set; } - public static int cameraTblOverlayNumber { get; private set; } public static uint[] cameraTblOffsetsToRAMaddress { get; private set; } - public static uint headerTableOffset { get; private set; } - public static uint conditionalMusicTableOffsetToRAMAddress { get; internal set; } public static uint encounterMusicTableOffsetToRAMAddress { get; internal set; } - public static uint vsTrainerEntryTableOffsetToRAMAddress { get; internal set; } public static uint vsPokemonEntryTableOffsetToRAMAddress { get; internal set; } public static uint effectsComboTableOffsetToRAMAddress { get; internal set; } - public static uint vsTrainerEntryTableOffsetToSizeLimiter { get; internal set; } public static uint vsPokemonEntryTableOffsetToSizeLimiter { get; internal set; } public static uint effectsComboTableOffsetToSizeLimiter { get; internal set; } - - public static uint OWTableOffset { get; internal set; } public static string OWtablePath { get; private set; } - - public static uint monIconPalTableAddress { get; private set; } - public static int nullEncounterID { get; private set; } - public static int abilityNamesTextNumber { get; private set; } public static int attackNamesTextNumber { get; private set; } public static int[] pokemonNamesTextNumbers { get; private set; } public static int itemNamesTextNumber { get; private set; } @@ -65,37 +59,26 @@ namespace DSPRE { public static int trainerClassMessageNumber { get; private set; } public static int trainerNamesMessageNumber { get; private set; } public static int locationNamesTextNumber { get; private set; } - public static int trainerNameLenOffset { get; private set; } - public static int trainerNameMaxLen { get; private set; } - - public static string internalNamesLocation { get; private set; } - public static readonly byte internalNameLength = 16; + public static string internalNamesPath { get; private set; } public static int cameraSize { get; private set; } - - public Dictionary, (Color background, Color foreground)> MapCellsColorDictionary; public static SortedDictionary OverworldTable { get; private set; } public static uint[] overworldTableKeys { get; private set; } public static Dictionary ow3DSpriteDict { get; private set; } - - public static Dictionary ScriptCommandNamesDict { get; private set; } public static Dictionary ScriptCommandNamesReverseDict { get; private set; } - public static Dictionary ScriptActionNamesDict { get; private set; } public static Dictionary ScriptActionNamesReverseDict { get; private set; } - public static Dictionary ScriptCommandParametersDict { get; private set; } - public static Dictionary ScriptComparisonOperatorsDict { get; private set; } public static Dictionary ScriptComparisonOperatorsReverseDict { get; private set; } - public enum gVerEnum : byte { + public enum GameVersions : byte { Diamond, Pearl, Platinum, HeartGold, SoulSilver, Black, White, Black2, White2 } - public enum gFamEnum : byte { + public enum GameFamilies : byte { NULL, DP, Plat, @@ -103,7 +86,7 @@ namespace DSPRE { BW, BW2 } - public enum gLangEnum : byte { + public enum GameLanguages : byte { English, Japanese, @@ -113,8 +96,6 @@ namespace DSPRE { German } public enum DirNames : byte { - personalPokeData, - synthOverlay, dynamicHeaders, @@ -132,7 +113,10 @@ namespace DSPRE { OWSprites, scripts, + encounters, + headbutt, + safariZone, trainerProperties, trainerParty, @@ -140,24 +124,29 @@ namespace DSPRE { monIcons, - interiorBuildingModels, - learnsets, - evolutions + interiorBuildingModels }; public static Dictionary gameDirs { get; private set; } - #region Constructors (1) public RomInfo(string id, string romName, bool useSuffix = true) { if (!useSuffix) { folderSuffix = ""; } - workDir = Path.GetDirectoryName(romName) + "\\" + Path.GetFileNameWithoutExtension(romName) + folderSuffix + "\\"; - arm9Path = workDir + @"arm9.bin"; - overlayTablePath = workDir + @"y9.bin"; - overlayPath = workDir + "overlay"; - internalNamesLocation = workDir + @"data\fielddata\maptable\mapname.bin"; + string path = Path.GetDirectoryName(romName) + "\\" + Path.GetFileNameWithoutExtension(romName) + folderSuffix + "\\"; + + workDir = path; + arm9Path = Path.Combine(workDir, @"arm9.bin"); + arm7Path = Path.Combine(workDir, @"arm7.bin"); + overlayTablePath = Path.Combine(workDir, @"y9.bin"); + y7Path = Path.Combine(workDir, @"y7.bin"); + dataPath = Path.Combine(workDir, dataFolderName); + overlayPath = Path.Combine(workDir, @"overlay"); + bannerPath = Path.Combine(workDir, @"banner.bin"); + headerPath = Path.Combine(workDir, @"header.bin"); + unpackedPath = Path.Combine(workDir, @"unpacked"); + internalNamesPath = Path.Combine(workDir, $@"{dataFolderName}\fielddata\maptable\mapname.bin"); try { gameVersion = PokeDatabase.System.versionsDict[id]; @@ -177,7 +166,6 @@ namespace DSPRE { SetHeaderTableOffset(); SetNullEncounterID(); - SetAbilityNamesTextNumber(); SetAttackNamesTextNumber(); SetPokemonNamesTextNumber(); SetItemNamesTextNumber(); @@ -185,7 +173,6 @@ namespace DSPRE { SetLocationNamesTextNumber(); SetTrainerNamesMessageNumber(); SetTrainerClassMessageNumber(); - SetTrainerNameLenOffset(); /* System */ ScriptCommandParametersDict = BuildCommandParametersDatabase(gameFamily); @@ -201,16 +188,16 @@ namespace DSPRE { #endregion #region Methods (22) - public static Dictionary BuildCommandNamesDatabase(gFamEnum gameFam) { + public static Dictionary BuildCommandNamesDatabase(GameFamilies gameFam) { Dictionary commonDictionaryNames; Dictionary specificDictionaryNames; switch (gameFam) { - case gFamEnum.DP: + case GameFamilies.DP: commonDictionaryNames = ScriptDatabase.DPPtScrCmdNames; specificDictionaryNames = ScriptDatabase.DPScrCmdNames; break; - case gFamEnum.Plat: + case GameFamilies.Plat: commonDictionaryNames = ScriptDatabase.DPPtScrCmdNames; specificDictionaryNames = ScriptDatabase.PlatScrCmdNames; break; @@ -225,16 +212,16 @@ namespace DSPRE { } return commonDictionaryNames.Concat(specificDictionaryNames).ToLookup(x => x.Key, x => x.Value).ToDictionary(x => x.Key, g => g.First()); } - public static Dictionary BuildCommandParametersDatabase(gFamEnum gameFam) { + public static Dictionary BuildCommandParametersDatabase(GameFamilies gameFam) { Dictionary commonDictionaryParams; Dictionary specificDictionaryParams; switch (gameFam) { - case gFamEnum.DP: + case GameFamilies.DP: commonDictionaryParams = ScriptDatabase.DPPtScrCmdParameters; specificDictionaryParams = ScriptDatabase.DPScrCmdParameters; break; - case gFamEnum.Plat: + case GameFamilies.Plat: commonDictionaryParams = ScriptDatabase.DPPtScrCmdParameters; specificDictionaryParams = ScriptDatabase.PlatScrCmdParameters; break; @@ -249,10 +236,10 @@ namespace DSPRE { } return commonDictionaryParams.Concat(specificDictionaryParams).ToLookup(x => x.Key, x => x.Value).ToDictionary(x => x.Key, g => g.First()); } - public static Dictionary BuildActionNamesDatabase(gFamEnum gameFam) { + public static Dictionary BuildActionNamesDatabase(GameFamilies gameFam) { switch (gameFam) { - case gFamEnum.DP: - case gFamEnum.Plat: + case GameFamilies.DP: + case GameFamilies.Plat: return ScriptDatabase.movementsDictIDName; default: #if false @@ -264,11 +251,11 @@ namespace DSPRE { #endif } } - public static Dictionary BuildComparisonOperatorsDatabase(gFamEnum gameFam) { + public static Dictionary BuildComparisonOperatorsDatabase(GameFamilies gameFam) { switch (gameFam) { - case gFamEnum.DP: - case gFamEnum.Plat: - case gFamEnum.HGSS: + case GameFamilies.DP: + case GameFamilies.Plat: + case GameFamilies.HGSS: return ScriptDatabase.comparisonOperatorsDict; default: var commonDict = ScriptDatabase.comparisonOperatorsDict; @@ -290,68 +277,68 @@ namespace DSPRE { } public static void SetHeaderTableOffset() { switch (gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: switch (gameLanguage) { - case gLangEnum.English: + case GameLanguages.English: headerTableOffset = 0xEEDBC; break; - case gLangEnum.Spanish: + case GameLanguages.Spanish: headerTableOffset = 0xEEE08; break; - case gLangEnum.Italian: + case GameLanguages.Italian: headerTableOffset = 0xEED70; break; - case gLangEnum.French: + case GameLanguages.French: headerTableOffset = 0xEEDFC; break; - case gLangEnum.German: + case GameLanguages.German: headerTableOffset = 0xEEDCC; break; - case gLangEnum.Japanese: - headerTableOffset = gameVersion == gVerEnum.Diamond ? (uint)0xF0D68 : 0xF0D6C; + case GameLanguages.Japanese: + headerTableOffset = gameVersion == GameVersions.Diamond ? (uint)0xF0D68 : 0xF0D6C; break; } break; - case gFamEnum.Plat: + case GameFamilies.Plat: switch (gameLanguage) { - case gLangEnum.English: + case GameLanguages.English: headerTableOffset = 0xE601C; break; - case gLangEnum.Spanish: + case GameLanguages.Spanish: headerTableOffset = 0xE60B0; break; - case gLangEnum.Italian: + case GameLanguages.Italian: headerTableOffset = 0xE6038; break; - case gLangEnum.French: + case GameLanguages.French: headerTableOffset = 0xE60A4; break; - case gLangEnum.German: + case GameLanguages.German: headerTableOffset = 0xE6074; break; - case gLangEnum.Japanese: + case GameLanguages.Japanese: headerTableOffset = 0xE56F0; break; } break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: switch (gameLanguage) { - case gLangEnum.English: + case GameLanguages.English: headerTableOffset = 0xF6BE0; break; - case gLangEnum.Spanish: - headerTableOffset = gameVersion == gVerEnum.HeartGold ? 0xF6BC8 : (uint)0xF6BD0; + case GameLanguages.Spanish: + headerTableOffset = gameVersion == GameVersions.HeartGold ? 0xF6BC8 : (uint)0xF6BD0; break; - case gLangEnum.Italian: + case GameLanguages.Italian: headerTableOffset = 0xF6B58; break; - case gLangEnum.French: + case GameLanguages.French: headerTableOffset = 0xF6BC4; break; - case gLangEnum.German: + case GameLanguages.German: headerTableOffset = 0xF6B94; break; - case gLangEnum.Japanese: + case GameLanguages.Japanese: headerTableOffset = 0xF6390; break; } @@ -360,74 +347,74 @@ namespace DSPRE { } public static void SetupSpawnSettings() { switch (gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: initialMoneyOverlayNumber = 52; initialMoneyOverlayOffset = 0x1E4; switch (gameLanguage) { - case gLangEnum.English: + case GameLanguages.English: arm9spawnOffset = 0xF2B9C; break; - case gLangEnum.Spanish: + case GameLanguages.Spanish: arm9spawnOffset = 0xF2BE8; break; - case gLangEnum.Italian: + case GameLanguages.Italian: arm9spawnOffset = 0xF2B50; break; - case gLangEnum.French: + case GameLanguages.French: arm9spawnOffset = 0xF2BDC; break; - case gLangEnum.German: + case GameLanguages.German: arm9spawnOffset = 0xF2BAC; break; - case gLangEnum.Japanese: + case GameLanguages.Japanese: arm9spawnOffset = 0xF4B48; break; } break; - case gFamEnum.Plat: + case GameFamilies.Plat: initialMoneyOverlayNumber = 57; initialMoneyOverlayOffset = 0x1EC; switch (gameLanguage) { - case gLangEnum.English: + case GameLanguages.English: arm9spawnOffset = 0xEA12C; break; - case gLangEnum.Spanish: + case GameLanguages.Spanish: arm9spawnOffset = 0xEA1C0; break; - case gLangEnum.Italian: + case GameLanguages.Italian: arm9spawnOffset = 0xEA148; break; - case gLangEnum.French: + case GameLanguages.French: arm9spawnOffset = 0xEA1B4; break; - case gLangEnum.German: + case GameLanguages.German: arm9spawnOffset = 0xEA184; break; - case gLangEnum.Japanese: + case GameLanguages.Japanese: arm9spawnOffset = 0xE9800; break; } break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: initialMoneyOverlayNumber = 36; initialMoneyOverlayOffset = 0x2FC; switch (gameLanguage) { - case gLangEnum.English: + case GameLanguages.English: arm9spawnOffset = 0xFA17C; break; - case gLangEnum.Spanish: - arm9spawnOffset = gameVersion == gVerEnum.HeartGold ? 0xFA164 : (uint)0xFA16C; + case GameLanguages.Spanish: + arm9spawnOffset = gameVersion == GameVersions.HeartGold ? 0xFA164 : (uint)0xFA16C; break; - case gLangEnum.Italian: + case GameLanguages.Italian: arm9spawnOffset = 0xFA0F4; break; - case gLangEnum.French: + case GameLanguages.French: arm9spawnOffset = 0xFA160; break; - case gLangEnum.German: + case GameLanguages.German: arm9spawnOffset = 0xFA130; break; - case gLangEnum.Japanese: + case GameLanguages.Japanese: arm9spawnOffset = 0xF992C; break; } @@ -436,28 +423,28 @@ namespace DSPRE { } public static void PrepareCameraData() { switch (gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: cameraTblOverlayNumber = 5; - cameraTblOffsetsToRAMaddress = gameLanguage.Equals(gLangEnum.Japanese) ? (new uint[] { 0x4C50 }) : (new uint[] { 0x4908 }); + cameraTblOffsetsToRAMaddress = gameLanguage.Equals(GameLanguages.Japanese) ? (new uint[] { 0x4C50 }) : (new uint[] { 0x4908 }); cameraSize = 24; break; - case gFamEnum.Plat: + case GameFamilies.Plat: cameraTblOverlayNumber = 5; cameraTblOffsetsToRAMaddress = new uint[] { 0x4E24 }; cameraSize = 24; break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: cameraTblOverlayNumber = 1; cameraSize = 36; switch (gameLanguage) { - case gLangEnum.English: - case gLangEnum.Spanish: - case gLangEnum.French: - case gLangEnum.German: - case gLangEnum.Italian: + case GameLanguages.English: + case GameLanguages.Spanish: + case GameLanguages.French: + case GameLanguages.German: + case GameLanguages.Italian: cameraTblOffsetsToRAMaddress = new uint[] { 0x532C, 0x547C }; break; - case gLangEnum.Japanese: + case GameLanguages.Japanese: cameraTblOffsetsToRAMaddress = new uint[] { 0x5324, 0x5474 }; break; } @@ -466,13 +453,13 @@ namespace DSPRE { } public static void SetOWtable() { switch (gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: OWtablePath = DSUtils.GetOverlayPath(5); switch (gameLanguage) { // Go to the beginning of the overworld table - case gLangEnum.English: + case GameLanguages.English: OWTableOffset = 0x22BCC; break; - case gLangEnum.Japanese: + case GameLanguages.Japanese: OWTableOffset = 0x23BB8; break; default: @@ -480,20 +467,20 @@ namespace DSPRE { break; } break; - case gFamEnum.Plat: + case GameFamilies.Plat: OWtablePath = DSUtils.GetOverlayPath(5); switch (gameLanguage) { // Go to the beginning of the overworld table - case gLangEnum.Italian: + case GameLanguages.Italian: OWTableOffset = 0x2BC44; break; - case gLangEnum.French: - case gLangEnum.Spanish: + case GameLanguages.French: + case GameLanguages.Spanish: OWTableOffset = 0x2BC3C; break; - case gLangEnum.German: + case GameLanguages.German: OWTableOffset = 0x2BC50; break; - case gLangEnum.Japanese: + case GameLanguages.Japanese: OWTableOffset = 0x2BA24; break; default: @@ -501,7 +488,7 @@ namespace DSPRE { break; } break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: if (DSUtils.CheckOverlayHasCompressionFlag(1)) { if (DSUtils.OverlayIsCompressed(1)) { if (DSUtils.DecompressOverlay(1) < 0) { @@ -516,17 +503,17 @@ namespace DSPRE { int ramAddrOfPointer; switch (gameLanguage) { - case gLangEnum.Italian: + case GameLanguages.Italian: ramAddrOfPointer = 0x021F929C; break; - case gLangEnum.French: - case gLangEnum.Spanish: + case GameLanguages.French: + case GameLanguages.Spanish: ramAddrOfPointer = 0x021F931C; break; - case gLangEnum.German: + case GameLanguages.German: ramAddrOfPointer = 0x021F92DC; break; - case gLangEnum.Japanese: + case GameLanguages.Japanese: ramAddrOfPointer = 0x021F86C4; break; default: @@ -536,21 +523,14 @@ namespace DSPRE { using (DSUtils.EasyReader bReader = new DSUtils.EasyReader(ov1Path, ramAddrOfPointer - ov1Address)) { // read the pointer at the specified ram address and adjust accordingly below uint ramAddressOfTable = bReader.ReadUInt32(); - if ((ramAddressOfTable >> 0x18) != 0x02) { + if (ramAddressOfTable >= 0x03000000) { MessageBox.Show("Something went wrong reading the Overworld configuration table.\nOverworld sprites in the Event Editor will be " + "displayed incorrectly or not displayed at all.", "Decompression error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } - - string ov131path = DSUtils.GetOverlayPath(131); - if (File.Exists(ov131path)) { - // if HGE field extension overlay exists - OWTableOffset = ramAddressOfTable - DSUtils.GetOverlayRAMAddress(131); - OWtablePath = ov131path; - } else if (ramAddressOfTable >= RomInfo.synthOverlayLoadAddress) { - // if the pointer shows the table was moved to the synthetic overlay + if (ramAddressOfTable >= RomInfo.synthOverlayLoadAddress) { // if the pointer shows the table was moved to the synthetic overlay OWTableOffset = ramAddressOfTable - RomInfo.synthOverlayLoadAddress; - OWtablePath = gameDirs[DirNames.synthOverlay].unpackedDir + "\\" + ROMToolboxDialog.expandedARMfileID.ToString("D4"); + OWtablePath = Filesystem.expArmPath; } else { OWTableOffset = ramAddressOfTable - ov1Address; OWtablePath = ov1Path; @@ -561,18 +541,18 @@ namespace DSPRE { } public static void SetConditionalMusicTableOffsetToRAMAddress() { switch (gameFamily) { - case gFamEnum.HGSS: + case GameFamilies.HGSS: switch (gameLanguage) { - case gLangEnum.Spanish: - conditionalMusicTableOffsetToRAMAddress = gameVersion == gVerEnum.HeartGold ? (uint)0x667D0 : 0x667D8; + case GameLanguages.Spanish: + conditionalMusicTableOffsetToRAMAddress = gameVersion == GameVersions.HeartGold ? (uint)0x667D0 : 0x667D8; break; - case gLangEnum.English: - case gLangEnum.Italian: - case gLangEnum.French: - case gLangEnum.German: + case GameLanguages.English: + case GameLanguages.Italian: + case GameLanguages.French: + case GameLanguages.German: conditionalMusicTableOffsetToRAMAddress = 0x667D8; break; - case gLangEnum.Japanese: + case GameLanguages.Japanese: conditionalMusicTableOffsetToRAMAddress = 0x66238; break; } @@ -581,22 +561,22 @@ namespace DSPRE { } public static void SetBattleEffectsData() { switch (gameFamily) { - case gFamEnum.HGSS: + case GameFamilies.HGSS: switch (gameLanguage) { - case gLangEnum.Spanish: - vsPokemonEntryTableOffsetToRAMAddress = gameVersion == gVerEnum.HeartGold ? (uint)0x518CC : 0x518D4; - vsTrainerEntryTableOffsetToRAMAddress = gameVersion == gVerEnum.HeartGold ? (uint)0x51888 : 0x51890; - effectsComboTableOffsetToRAMAddress = gameVersion == gVerEnum.HeartGold ? (uint)0x517C0 : 0x517C8; + case GameLanguages.Spanish: + vsPokemonEntryTableOffsetToRAMAddress = gameVersion == GameVersions.HeartGold ? (uint)0x518CC : 0x518D4; + vsTrainerEntryTableOffsetToRAMAddress = gameVersion == GameVersions.HeartGold ? (uint)0x51888 : 0x51890; + effectsComboTableOffsetToRAMAddress = gameVersion == GameVersions.HeartGold ? (uint)0x517C0 : 0x517C8; break; - case gLangEnum.English: - case gLangEnum.Italian: - case gLangEnum.French: - case gLangEnum.German: + case GameLanguages.English: + case GameLanguages.Italian: + case GameLanguages.French: + case GameLanguages.German: vsPokemonEntryTableOffsetToRAMAddress = 0x518D4; vsTrainerEntryTableOffsetToRAMAddress = 0x51890; effectsComboTableOffsetToRAMAddress = 0x517C8; break; - case gLangEnum.Japanese: + case GameLanguages.Japanese: vsPokemonEntryTableOffsetToRAMAddress = 0x5136C; vsTrainerEntryTableOffsetToRAMAddress = 0x51328; effectsComboTableOffsetToRAMAddress = 0x51260; @@ -607,18 +587,18 @@ namespace DSPRE { effectsComboTableOffsetToSizeLimiter = effectsComboTableOffsetToRAMAddress - 0x1E; break; - case gFamEnum.Plat: + case GameFamilies.Plat: switch (gameLanguage) { - case gLangEnum.English: + case GameLanguages.English: effectsComboTableOffsetToRAMAddress = 0x51BE0; break; - case gLangEnum.Italian: - case gLangEnum.French: - case gLangEnum.Spanish: - case gLangEnum.German: + case GameLanguages.Italian: + case GameLanguages.French: + case GameLanguages.Spanish: + case GameLanguages.German: effectsComboTableOffsetToRAMAddress = 0x51C84; break; - case gLangEnum.Japanese: + case GameLanguages.Japanese: effectsComboTableOffsetToRAMAddress = 0x514C0; break; } @@ -627,130 +607,64 @@ namespace DSPRE { } public static void SetEncounterMusicTableOffsetToRAMAddress() { switch (gameFamily) { - case gFamEnum.HGSS: + case GameFamilies.HGSS: switch (gameLanguage) { - case gLangEnum.Spanish: - encounterMusicTableOffsetToRAMAddress = gameVersion == gVerEnum.HeartGold ? (uint)0x550D8 : 0x550E0; + case GameLanguages.Spanish: + encounterMusicTableOffsetToRAMAddress = gameVersion == GameVersions.HeartGold ? (uint)0x550D8 : 0x550E0; break; - case gLangEnum.English: - case gLangEnum.Italian: - case gLangEnum.French: - case gLangEnum.German: + case GameLanguages.English: + case GameLanguages.Italian: + case GameLanguages.French: + case GameLanguages.German: encounterMusicTableOffsetToRAMAddress = 0x550E0; break; - case gLangEnum.Japanese: + case GameLanguages.Japanese: encounterMusicTableOffsetToRAMAddress = 0x54B44; break; } break; - case gFamEnum.Plat: + case GameFamilies.Plat: switch (gameLanguage) { - case gLangEnum.English: + case GameLanguages.English: encounterMusicTableOffsetToRAMAddress = 0x5563C; break; - case gLangEnum.Italian: - case gLangEnum.French: - case gLangEnum.Spanish: - case gLangEnum.German: + case GameLanguages.Italian: + case GameLanguages.French: + case GameLanguages.Spanish: + case GameLanguages.German: encounterMusicTableOffsetToRAMAddress = 0x556E0; break; - case gLangEnum.Japanese: + case GameLanguages.Japanese: encounterMusicTableOffsetToRAMAddress = 0x54F04; break; } break; - case gFamEnum.DP: + case GameFamilies.DP: switch (gameLanguage) { - case gLangEnum.English: + case GameLanguages.English: encounterMusicTableOffsetToRAMAddress = 0x4AD3C; break; - case gLangEnum.Italian: - case gLangEnum.French: - case gLangEnum.Spanish: - case gLangEnum.German: + case GameLanguages.Italian: + case GameLanguages.French: + case GameLanguages.Spanish: + case GameLanguages.German: encounterMusicTableOffsetToRAMAddress = 0x4ADAC; break; - case gLangEnum.Japanese: + case GameLanguages.Japanese: encounterMusicTableOffsetToRAMAddress = 0x4D9AC; break; } break; } } - public static void SetMonIconsPalTableAddress() { - switch (RomInfo.gameFamily) { - case gFamEnum.DP: - switch (gameLanguage) { - case gLangEnum.English: - monIconPalTableAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(0x6B838, 4), 0); - break; - case gLangEnum.Italian: - monIconPalTableAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(0x6B874, 4), 0); - break; - case gLangEnum.German: - case gLangEnum.French: - case gLangEnum.Spanish: - monIconPalTableAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(0x6B894, 4), 0); - break; - case gLangEnum.Japanese: - monIconPalTableAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(0x6FDEC, 4), 0); - break; - } - break; - case gFamEnum.Plat: - switch (gameLanguage) { - case gLangEnum.English: - monIconPalTableAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(0x79F80, 4), 0); - break; - case gLangEnum.Italian: - case gLangEnum.German: - case gLangEnum.French: - case gLangEnum.Spanish: - monIconPalTableAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(0x7A020, 4), 0); - break; - case gLangEnum.Japanese: - monIconPalTableAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(0x79858, 4), 0); - break; - } - break; - case gFamEnum.HGSS: - default: - switch (gameLanguage) { - case gLangEnum.English: - case gLangEnum.Italian: - monIconPalTableAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(0x74408, 4), 0); - break; - case gLangEnum.German: - if (gameVersion == gVerEnum.HeartGold) { - monIconPalTableAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(0x74408, 4), 0); - } else { - monIconPalTableAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(0x74400, 4), 0); - } - break; - case gLangEnum.French: - case gLangEnum.Spanish: - if (gameVersion == gVerEnum.HeartGold) { - monIconPalTableAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(0x74400, 4), 0); - } else { - monIconPalTableAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(0x74408, 4), 0); - } - break; - case gLangEnum.Japanese: - monIconPalTableAddress = BitConverter.ToUInt32(DSUtils.ARM9.ReadBytes(0x73EA0, 4), 0); - break; - } - break; - } - } - - private static void SetItemScriptFileNumber() { + private void SetItemScriptFileNumber() { switch (gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: itemScriptFileNumber = 370; break; - case gFamEnum.Plat: + case GameFamilies.Plat: itemScriptFileNumber = 404; break; default: @@ -758,208 +672,110 @@ namespace DSPRE { break; } } - private static void SetNullEncounterID() { + private void SetNullEncounterID() { switch (gameFamily) { - case gFamEnum.DP: - case gFamEnum.Plat: + case GameFamilies.DP: + case GameFamilies.Plat: nullEncounterID = ushort.MaxValue; break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: nullEncounterID = Byte.MaxValue; break; } } - - private static void SetAbilityNamesTextNumber() { + private void SetAttackNamesTextNumber() { switch (gameFamily) { - case gFamEnum.DP: - abilityNamesTextNumber = 552; - break; - case gFamEnum.Plat: - abilityNamesTextNumber = 610; - break; - case gFamEnum.HGSS: - abilityNamesTextNumber = 720; - break; - default: - break; - } - } - - private static void SetAttackNamesTextNumber() { - switch (gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: attackNamesTextNumber = 588; break; - case gFamEnum.Plat: + case GameFamilies.Plat: attackNamesTextNumber = 647; break; default: - attackNamesTextNumber = gameLanguage == gLangEnum.Japanese ? 739 : 750; + attackNamesTextNumber = gameLanguage == GameLanguages.Japanese ? 739 : 750; break; } } - private static void SetItemNamesTextNumber() { + private void SetItemNamesTextNumber() { switch (gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: itemNamesTextNumber = 344; break; - case gFamEnum.Plat: + case GameFamilies.Plat: itemNamesTextNumber = 392; break; default: - itemNamesTextNumber = gameLanguage == gLangEnum.Japanese ? 219 : 222; + itemNamesTextNumber = gameLanguage == GameLanguages.Japanese ? 219 : 222; break; } } - private static void SetLocationNamesTextNumber() { + private void SetLocationNamesTextNumber() { switch (gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: locationNamesTextNumber = 382; break; - case gFamEnum.Plat: + case GameFamilies.Plat: locationNamesTextNumber = 433; break; default: - locationNamesTextNumber = gameLanguage == gLangEnum.Japanese ? 272 : 279; + locationNamesTextNumber = gameLanguage == GameLanguages.Japanese ? 272 : 279; break; } } - private static void SetPokemonNamesTextNumber() { + private void SetPokemonNamesTextNumber() { switch (gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: pokemonNamesTextNumbers = new int[2] { 362, 363 }; break; - case gFamEnum.Plat: + case GameFamilies.Plat: pokemonNamesTextNumbers = new int[7] { 412, 413, 712, 713, 714, 715, 716 }; //413? break; - case gFamEnum.HGSS: - pokemonNamesTextNumbers = gameLanguage.Equals(gLangEnum.Japanese) ? new int[1] { 232 } : new int[7] { 237, 238, 817, 818, 819, 820, 821 }; //238? + case GameFamilies.HGSS: + pokemonNamesTextNumbers = gameLanguage.Equals(GameLanguages.Japanese) ? new int[1] { 232 } : new int[7] { 237, 238, 817, 818, 819, 820, 821 }; //238? break; } } - private static void SetTrainerNamesMessageNumber() { + private void SetTrainerNamesMessageNumber() { switch (gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: trainerNamesMessageNumber = 559; - if (gameLanguage.Equals(gLangEnum.Japanese)) { + if (gameLanguage.Equals(GameLanguages.Japanese)) { trainerNamesMessageNumber -= 9; } break; - case gFamEnum.Plat: + case GameFamilies.Plat: trainerNamesMessageNumber = 618; break; default: trainerNamesMessageNumber = 729; - if (gameLanguage == gLangEnum.Japanese) { + if (gameLanguage == GameLanguages.Japanese) { trainerNamesMessageNumber -= 10; } break; } } - private static void SetTrainerClassMessageNumber() { + private void SetTrainerClassMessageNumber() { switch (gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: trainerClassMessageNumber = 560; - if (gameLanguage.Equals(gLangEnum.Japanese)) { + if (gameLanguage.Equals(GameLanguages.Japanese)) { trainerClassMessageNumber -= 9; } break; - case gFamEnum.Plat: + case GameFamilies.Plat: trainerClassMessageNumber = 619; break; default: trainerClassMessageNumber = 730; - if (gameLanguage.Equals(gLangEnum.Japanese)) { + if (gameLanguage.Equals(GameLanguages.Japanese)) { trainerClassMessageNumber -= 10; } break; } } - private static void SetTrainerNameLenOffset() { - switch (RomInfo.gameFamily) { - case gFamEnum.DP: - switch (RomInfo.gameLanguage) { - case gLangEnum.English: - trainerNameLenOffset = 0x6AC32; - break; - case gLangEnum.Italian: - trainerNameLenOffset = 0x6AC6E; - break; - case gLangEnum.Spanish: - case gLangEnum.German: - case gLangEnum.French: - trainerNameLenOffset = 0x6AC8E; - break; - - case gLangEnum.Japanese: //? - default: - trainerNameLenOffset = -1; - break; - } - break; - - case gFamEnum.Plat: - switch (RomInfo.gameLanguage) { - case gLangEnum.English: - trainerNameLenOffset = 0x791DE; - break; - case gLangEnum.Spanish: - case gLangEnum.Italian: - case gLangEnum.German: - case gLangEnum.French: - trainerNameLenOffset = 0x7927E; - break; - case gLangEnum.Japanese: - trainerNameLenOffset = 0x78AB6; - break; - - default: - trainerNameLenOffset = -1; - break; - } - break; - - case gFamEnum.HGSS: - if (RomInfo.gameLanguage.Equals(gLangEnum.Japanese)) { - //Jap HGSS - trainerNameLenOffset = 0x7342E; - } else if(gameVersion.Equals(gVerEnum.SoulSilver)){ - //All SS languages except Jap - trainerNameLenOffset = 0x72EC2; - } else { - //All HG languages except Jap - switch (RomInfo.gameLanguage) { - case gLangEnum.English: - case gLangEnum.Italian: - case gLangEnum.German: - case gLangEnum.French: - trainerNameLenOffset = 0x7342E; - break; - case gLangEnum.Spanish: - trainerNameLenOffset = 0x73426; - break; - } - } - break; - } - } - - public static int SetTrainerNameMaxLen() { - if(trainerNameLenOffset < 0) { - trainerNameMaxLen = TrainerFile.defaultNameLen; - } else { - using (DSUtils.ARM9.Reader ar = new DSUtils.ARM9.Reader(trainerNameLenOffset)) { - trainerNameMaxLen = ar.ReadByte(); - } - } - return trainerNameMaxLen; - } - - public string GetBuildingModelsDirPath(bool interior) => interior ? gameDirs[DirNames.interiorBuildingModels].unpackedDir : gameDirs[DirNames.exteriorBuildingModels].unpackedDir; public string GetRomNameFromWorkdir() => workDir.Substring(0, workDir.Length - folderSuffix.Length - 1); - public static int GetHeaderCount() => (int)new FileInfo(internalNamesLocation).Length / internalNameLength; + public static int GetHeaderCount() => (int)new FileInfo(internalNamesPath).Length / internalNameLength; public static List GetLocationNames() => new TextArchive(locationNamesTextNumber).messages; public static string[] GetSimpleTrainerNames() => new TextArchive(trainerNamesMessageNumber).messages.ToArray(); public static string[] GetTrainerClassNames() => new TextArchive(trainerClassMessageNumber).messages.ToArray(); @@ -969,23 +785,7 @@ namespace DSPRE { return itemNames.messages.GetRange(startIndex, count == null ? itemNames.messages.Count - 1 : (int)count).ToArray(); } public static string[] GetPokemonNames() => new TextArchive(pokemonNamesTextNumbers[0]).messages.ToArray(); - public static string[] GetAbilityNames() => new TextArchive(abilityNamesTextNumber).messages.ToArray(); public static string[] GetAttackNames() => new TextArchive(attackNamesTextNumber).messages.ToArray(); - public static int GetLearnsetFilesCount() => Directory.GetFiles(gameDirs[DirNames.learnsets].unpackedDir).Length; - public static int GetPersonalFilesCount() => Directory.GetFiles(gameDirs[DirNames.personalPokeData].unpackedDir).Length; - public static string[] GetEvolutionFilesList() => Directory.GetFiles(gameDirs[DirNames.evolutions].unpackedDir); - public static int GetEvolutionFilesCount() => GetEvolutionFilesList().Length; - - public int GetAreaDataCount() => Directory.GetFiles(gameDirs[DirNames.areaData].unpackedDir).Length; - public int GetMapTexturesCount() => Directory.GetFiles(gameDirs[DirNames.mapTextures].unpackedDir).Length; - public int GetBuildingTexturesCount() => Directory.GetFiles(gameDirs[DirNames.buildingTextures].unpackedDir).Length; - public int GetMatrixCount() => Directory.GetFiles(gameDirs[DirNames.matrices].unpackedDir).Length; - public int GetTextArchivesCount() => Directory.GetFiles(gameDirs[DirNames.textArchives].unpackedDir).Length; - public int GetMapCount() => Directory.GetFiles(gameDirs[DirNames.maps].unpackedDir).Length; - public int GetEventCount() => Directory.GetFiles(gameDirs[DirNames.eventFiles].unpackedDir).Length; - public int GetScriptCount() => Directory.GetFiles(gameDirs[DirNames.scripts].unpackedDir).Length; - public int GetBuildingCount(bool interior) => Directory.GetFiles(GetBuildingModelsDirPath(interior)).Length; - public static int GetEventFileCount() => Directory.GetFiles(RomInfo.gameDirs[DirNames.eventFiles].unpackedDir).Length; #endregion #region System Methods @@ -996,7 +796,7 @@ namespace DSPRE { case "CPUE": case "IPKE": case "IPGE": - gameLanguage = gLangEnum.English; + gameLanguage = GameLanguages.English; break; case "ADAS": @@ -1005,7 +805,7 @@ namespace DSPRE { case "IPKS": case "IPGS": case "LATA": - gameLanguage = gLangEnum.Spanish; + gameLanguage = GameLanguages.Spanish; break; case "ADAI": @@ -1013,7 +813,7 @@ namespace DSPRE { case "CPUI": case "IPKI": case "IPGI": - gameLanguage = gLangEnum.Italian; + gameLanguage = GameLanguages.Italian; break; case "ADAF": @@ -1021,7 +821,7 @@ namespace DSPRE { case "CPUF": case "IPKF": case "IPGF": - gameLanguage = gLangEnum.French; + gameLanguage = GameLanguages.French; break; case "ADAD": @@ -1029,161 +829,152 @@ namespace DSPRE { case "CPUD": case "IPKD": case "IPGD": - gameLanguage = gLangEnum.German; + gameLanguage = GameLanguages.German; break; default: - gameLanguage = gLangEnum.Japanese; + gameLanguage = GameLanguages.Japanese; break; } } private void LoadGameFamily() { switch (gameVersion) { - case gVerEnum.Diamond: - case gVerEnum.Pearl: - gameFamily = gFamEnum.DP; + case GameVersions.Diamond: + case GameVersions.Pearl: + gameFamily = GameFamilies.DP; break; - case gVerEnum.Platinum: - gameFamily = gFamEnum.Plat; + case GameVersions.Platinum: + gameFamily = GameFamilies.Plat; break; - case gVerEnum.HeartGold: - case gVerEnum.SoulSilver: - gameFamily = gFamEnum.HGSS; + case GameVersions.HeartGold: + case GameVersions.SoulSilver: + gameFamily = GameFamilies.HGSS; break; } } private void SetNarcDirs() { Dictionary packedDirsDict = null; switch (gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: string suffix = ""; - if (!gameLanguage.Equals(gLangEnum.Japanese)) { + if (!gameLanguage.Equals(GameLanguages.Japanese)) suffix = "_release"; - } packedDirsDict = new Dictionary() { - [DirNames.synthOverlay] = @"data\data\weather_sys.narc", - [DirNames.textArchives] = @"data\msgdata\msg.narc", + [DirNames.synthOverlay] = @"data\weather_sys.narc", + [DirNames.textArchives] = @"msgdata\msg.narc", - [DirNames.matrices] = @"data\fielddata\mapmatrix\map_matrix.narc", + [DirNames.matrices] = @"fielddata\mapmatrix\map_matrix.narc", - [DirNames.maps] = @"data\fielddata\land_data\land_data" + suffix + ".narc", - [DirNames.exteriorBuildingModels] = @"data\fielddata\build_model\build_model.narc", - [DirNames.buildingConfigFiles] = @"data\fielddata\areadata\area_build_model\area_build.narc", - [DirNames.buildingTextures] = @"data\fielddata\areadata\area_build_model\areabm_texset.narc", - [DirNames.mapTextures] = @"data\fielddata\areadata\area_map_tex\map_tex_set.narc", - [DirNames.areaData] = @"data\fielddata\areadata\area_data.narc", + [DirNames.maps] = @"fielddata\land_data\land_data" + suffix + ".narc", + [DirNames.exteriorBuildingModels] = @"fielddata\build_model\build_model.narc", + [DirNames.buildingConfigFiles] = @"fielddata\areadata\area_build_model\area_build.narc", + [DirNames.buildingTextures] = @"fielddata\areadata\area_build_model\areabm_texset.narc", + [DirNames.mapTextures] = @"fielddata\areadata\area_map_tex\map_tex_set.narc", + [DirNames.areaData] = @"fielddata\areadata\area_data.narc", - [DirNames.eventFiles] = @"data\fielddata\eventdata\zone_event" + suffix + ".narc", - [DirNames.OWSprites] = @"data\data\mmodel\mmodel.narc", + [DirNames.eventFiles] = @"fielddata\eventdata\zone_event" + suffix + ".narc", + [DirNames.OWSprites] = @"data\mmodel\mmodel.narc", - [DirNames.scripts] = @"data\fielddata\script\scr_seq" + suffix + ".narc", + [DirNames.scripts] = @"fielddata\script\scr_seq" + suffix + ".narc", - [DirNames.trainerProperties] = @"data\poketool\trainer\trdata.narc", - [DirNames.trainerParty] = @"data\poketool\trainer\trpoke.narc", - [DirNames.trainerGraphics] = @"data\poketool\trgra\trfgra.narc", + [DirNames.trainerProperties] = @"poketool\trainer\trdata.narc", + [DirNames.trainerParty] = @"poketool\trainer\trpoke.narc", + [DirNames.trainerGraphics] = @"poketool\trgra\trfgra.narc", - [DirNames.monIcons] = @"data\poketool\icongra\poke_icon.narc", + [DirNames.monIcons] = @"poketool\icongra\poke_icon.narc", - [DirNames.encounters] = @"data\fielddata\encountdata\" + char.ToLower(gameVersion.ToString()[0]) + '_' + "enc_data.narc", - [DirNames.learnsets] = @"data\poketool\personal\wotbl.narc", - [DirNames.evolutions] = @"data\poketool\personal\evo.narc", - }; - - //Personal Data archive is different for Pearl - string personal = @"data\poketool\personal"; - if (gameVersion == gVerEnum.Pearl) { - personal += ("_" + gameVersion.ToString().ToLower()); - } - personal += @"\personal.narc"; - packedDirsDict[DirNames.personalPokeData] = personal; - - break; - case gFamEnum.Plat: - suffix = gameVersion.ToString().Substring(0, 2).ToLower(); - - packedDirsDict = new Dictionary() { - [DirNames.personalPokeData] = @"data\poketool\personal\pl_personal.narc", - [DirNames.synthOverlay] = @"data\data\weather_sys.narc", - [DirNames.dynamicHeaders] = @"data\debug\cb_edit\d_test.narc", - - [DirNames.textArchives] = @"data\msgdata\" + suffix + '_' + "msg.narc", - - [DirNames.matrices] = @"data\fielddata\mapmatrix\map_matrix.narc", - - [DirNames.maps] = @"data\fielddata\land_data\land_data.narc", - [DirNames.exteriorBuildingModels] = @"data\fielddata\build_model\build_model.narc", - [DirNames.buildingConfigFiles] = @"data\fielddata\areadata\area_build_model\area_build.narc", - [DirNames.buildingTextures] = @"data\fielddata\areadata\area_build_model\areabm_texset.narc", - [DirNames.mapTextures] = @"data\fielddata\areadata\area_map_tex\map_tex_set.narc", - [DirNames.areaData] = @"data\fielddata\areadata\area_data.narc", - - [DirNames.eventFiles] = @"data\fielddata\eventdata\zone_event.narc", - [DirNames.OWSprites] = @"data\data\mmodel\mmodel.narc", - - [DirNames.scripts] = @"data\fielddata\script\scr_seq.narc", - - [DirNames.trainerProperties] = @"data\poketool\trainer\trdata.narc", - [DirNames.trainerParty] = @"data\poketool\trainer\trpoke.narc", - [DirNames.trainerGraphics] = @"data\poketool\trgra\trfgra.narc", - - [DirNames.monIcons] = @"data\poketool\icongra\pl_poke_icon.narc", - - [DirNames.encounters] = @"data\fielddata\encountdata\" + suffix + '_' + "enc_data.narc", - [DirNames.learnsets] = @"data\poketool\personal\wotbl.narc", - [DirNames.evolutions] = @"data\poketool\personal\evo.narc", + [DirNames.encounters] = @"fielddata\encountdata\" + char.ToLower(gameVersion.ToString()[0]) + '_' + "enc_data.narc" }; break; - case gFamEnum.HGSS: + case GameFamilies.Plat: packedDirsDict = new Dictionary() { - [DirNames.personalPokeData] = @"data\a\0\0\2", - [DirNames.synthOverlay] = @"data\a\0\2\8", - [DirNames.dynamicHeaders] = @"data\a\0\5\0", + [DirNames.synthOverlay] = @"data\weather_sys.narc", + [DirNames.dynamicHeaders] = @"debug\cb_edit\d_test.narc", - [DirNames.textArchives] = @"data\a\0\2\7", + [DirNames.textArchives] = @"msgdata\" + gameVersion.ToString().Substring(0, 2).ToLower() + '_' + "msg.narc", - [DirNames.matrices] = @"data\a\0\4\1", + [DirNames.matrices] = @"fielddata\mapmatrix\map_matrix.narc", - [DirNames.maps] = @"data\a\0\6\5", - [DirNames.exteriorBuildingModels] = @"data\a\0\4\0", - [DirNames.buildingConfigFiles] = @"data\a\0\4\3", - [DirNames.buildingTextures] = @"data\a\0\7\0", - [DirNames.mapTextures] = @"data\a\0\4\4", - [DirNames.areaData] = @"data\a\0\4\2", + [DirNames.maps] = @"fielddata\land_data\land_data.narc", + [DirNames.exteriorBuildingModels] = @"fielddata\build_model\build_model.narc", + [DirNames.buildingConfigFiles] = @"fielddata\areadata\area_build_model\area_build.narc", + [DirNames.buildingTextures] = @"fielddata\areadata\area_build_model\areabm_texset.narc", + [DirNames.mapTextures] = @"fielddata\areadata\area_map_tex\map_tex_set.narc", + [DirNames.areaData] = @"fielddata\areadata\area_data.narc", - [DirNames.eventFiles] = @"data\a\0\3\2", - [DirNames.OWSprites] = @"data\a\0\8\1", + [DirNames.eventFiles] = @"fielddata\eventdata\zone_event.narc", + [DirNames.OWSprites] = @"data\mmodel\mmodel.narc", + + [DirNames.scripts] = @"fielddata\script\scr_seq.narc", + + [DirNames.trainerProperties] = @"poketool\trainer\trdata.narc", + [DirNames.trainerParty] = @"poketool\trainer\trpoke.narc", + [DirNames.trainerGraphics] = @"poketool\trgra\trfgra.narc", + + [DirNames.monIcons] = @"poketool\icongra\pl_poke_icon.narc", + + [DirNames.encounters] = @"fielddata\encountdata\" + gameVersion.ToString().Substring(0, 2).ToLower() + '_' + "enc_data.narc" + }; + break; + case GameFamilies.HGSS: + packedDirsDict = new Dictionary() { + [DirNames.synthOverlay] = @"a\0\2\8", + [DirNames.dynamicHeaders] = @"a\0\5\0", + + [DirNames.textArchives] = @"a\0\2\7", + + [DirNames.matrices] = @"a\0\4\1", + + [DirNames.maps] = @"a\0\6\5", + [DirNames.exteriorBuildingModels] = @"a\0\4\0", + [DirNames.buildingConfigFiles] = @"a\0\4\3", + [DirNames.buildingTextures] = @"a\0\7\0", + [DirNames.mapTextures] = @"a\0\4\4", + [DirNames.areaData] = @"a\0\4\2", + + [DirNames.eventFiles] = @"a\0\3\2", + [DirNames.OWSprites] = @"a\0\8\1", + + [DirNames.scripts] = @"a\0\1\2", - [DirNames.scripts] = @"data\a\0\1\2", //ENCOUNTERS FOLDER DEPENDS ON VERSION - [DirNames.trainerProperties] = @"data\a\0\5\5", - [DirNames.trainerParty] = @"data\a\0\5\6", - [DirNames.trainerGraphics] = @"data\a\0\5\8", + [DirNames.trainerProperties] = @"a\0\5\5", + [DirNames.trainerParty] = @"a\0\5\6", + [DirNames.trainerGraphics] = @"a\0\5\8", - [DirNames.monIcons] = @"data\a\0\2\0", + [DirNames.monIcons] = @"a\0\2\0", - [DirNames.interiorBuildingModels] = @"data\a\1\4\8", - [DirNames.learnsets] = @"data\a\0\3\3", - [DirNames.evolutions] = @"data\a\0\3\4", + [DirNames.interiorBuildingModels] = @"a\1\4\8", + + [DirNames.safariZone] = @"a\2\3\0", + [DirNames.headbutt] = @"a\2\5\2", //both versions use the same folder with different data }; //Encounter archive is different for SS - packedDirsDict[DirNames.encounters] = gameVersion == gVerEnum.HeartGold ? @"data\a\0\3\7" : @"data\a\1\3\6"; + if (gameVersion == GameVersions.HeartGold) { + packedDirsDict[DirNames.encounters] = @"a\0\3\7"; + } else { + packedDirsDict[DirNames.encounters] = @"a\1\3\6"; + } + break; } gameDirs = new Dictionary(); foreach (KeyValuePair kvp in packedDirsDict) { - gameDirs.Add(kvp.Key, (workDir + kvp.Value, workDir + @"unpacked" + '\\' + kvp.Key.ToString())); + string _packedPath = Path.Combine(workDir, Path.Combine(dataFolderName, kvp.Value)); + string _unpackedPath = Path.Combine(unpackedPath, kvp.Key.ToString()); + gameDirs.Add(kvp.Key, (_packedPath, _unpackedPath)); } } public void ResetMapCellsColorDictionary() { switch (gameFamily) { - case gFamEnum.DP: - case gFamEnum.Plat: + case GameFamilies.DP: + case GameFamilies.Plat: MapCellsColorDictionary = PokeDatabase.System.MatrixCellColors.DPPtmatrixColorsDict; break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: MapCellsColorDictionary = PokeDatabase.System.MatrixCellColors.HGSSmatrixColorsDict; break; } @@ -1191,8 +982,8 @@ namespace DSPRE { public static void ReadOWTable() { OverworldTable = new SortedDictionary(); switch (gameFamily) { - case gFamEnum.DP: - case gFamEnum.Plat: + case GameFamilies.DP: + case GameFamilies.Plat: using (BinaryReader idReader = new BinaryReader(new FileStream(OWtablePath, FileMode.Open))) { idReader.BaseStream.Position = OWTableOffset; @@ -1205,7 +996,7 @@ namespace DSPRE { } } break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: using (BinaryReader idReader = new BinaryReader(new FileStream(OWtablePath, FileMode.Open))) { idReader.BaseStream.Position = OWTableOffset; diff --git a/DS_Map/SpawnEditor.cs b/DS_Map/SpawnEditor.cs index 12f8e60..998c790 100644 --- a/DS_Map/SpawnEditor.cs +++ b/DS_Map/SpawnEditor.cs @@ -120,13 +120,13 @@ namespace DSPRE { matrixyUpDown.Maximum = headerMatrix.maps.GetLength(0) - 1; switch (RomInfo.gameFamily) { - case gFamEnum.DP: + case GameFamilies.DP: locationNameLBL.Text = locations[((HeaderDP)currentHeader).locationName]; break; - case gFamEnum.Plat: + case GameFamilies.Plat: locationNameLBL.Text = locations[((HeaderPt)currentHeader).locationName]; break; - case gFamEnum.HGSS: + case GameFamilies.HGSS: locationNameLBL.Text = locations[((HeaderHGSS)currentHeader).locationName]; break; } diff --git a/DS_Map/WildEditorDPPt.cs b/DS_Map/WildEditorDPPt.cs index 713904a..895ed0d 100644 --- a/DS_Map/WildEditorDPPt.cs +++ b/DS_Map/WildEditorDPPt.cs @@ -30,7 +30,7 @@ namespace DSPRE { } if (tempMapHeader.wildPokemon != MapHeader.DPPT_NULL_ENCOUNTER_FILE_ID) { - if (RomInfo.gameFamily == gFamEnum.DP) { + if (RomInfo.gameFamily == GameFamilies.DP) { EncounterFileLocationName.Add(tempMapHeader.wildPokemon, locationNames[((HeaderDP)tempMapHeader).locationName]); } else { EncounterFileLocationName.Add(tempMapHeader.wildPokemon, locationNames[((HeaderPt)tempMapHeader).locationName]);