示例#1
0
        public static void MQJsonImportAndPatch(IExperimentFace face, List <string> filePath)
        {
            Rom n0 = new ORom(filePath[0], ORom.Build.N0);
            Rom mq = new ORom(filePath[1], ORom.Build.MQU);

            List <Scene_MQJson> scenes = Load_Scene_MQJson();

            foreach (var scene in scenes)
            {
                if (!MQRandoScenes.Contains(scene.Id))
                {
                    continue;
                }

                var n0_scene = SceneRoomReader.InitializeScene(n0, scene.Id);
                var mq_scene = SceneRoomReader.InitializeScene(mq, scene.Id);

                CollisionMesh n0_mesh = ((CollisionCommand)n0_scene.Header[HeaderCommands.Collision]).Mesh;
                CollisionMesh mq_mesh = ((CollisionCommand)mq_scene.Header[HeaderCommands.Collision]).Mesh;

                var delta = new Col_MQJson(n0_mesh, mq_mesh);
                scene.ColDelta = delta;
            }
            MemoryStream s  = SerializeScenes(scenes);
            StreamReader sr = new StreamReader(s);

            face.OutputText(sr.ReadToEnd());
        }
示例#2
0
        private void DumpActorTable()
        {
            List <RomVersion> versions = new List <RomVersion>();

            versions.AddRange(ORom.GetSupportedBuilds());
            versions.AddRange(MRom.GetSupportedBuilds());

            StringBuilder sb = new StringBuilder();

            foreach (var version in versions)
            {
                string outFile = $"actor_dlf_{version.ShortUniqueKey}.txt";
                if (PathUtil.TryGetRomLocation(version, out string file))
                {
                    var txt = Get.ActorTable(Rom.New(file, version));
                    System.IO.File.WriteAllText(outFile, txt);
                    sb.AppendLine($"Created {outFile}");
                }
                else
                {
                    sb.AppendLine($"{outFile} failed; no rom found");
                }
            }
            outRichTextBox.Text = sb.ToString();
        }
示例#3
0
        public static void TestYazDecompress(IExperimentFace face, List <string> filePath)
        {
            StringBuilder sb         = new StringBuilder();
            ORom          compRom    = new ORom(filePath[0], ORom.Build.N0);
            ORom          decompRom  = new ORom(@"C:\Users\mzxrules\Documents\Roms\N64\Games\Ocarina\Ocarina (U10)\Ocarina (U10) (d).z64", ORom.Build.N0);
            RomFile       compFile   = compRom.Files.GetFile(ORom.FileList.code);
            RomFile       decompFile = decompRom.Files.GetFile(ORom.FileList.code);

            BinaryReader compReader   = new BinaryReader(compFile);
            BinaryReader decompReader = new BinaryReader(decompFile);

            byte[] compText   = compReader.ReadBytes(compFile.Record.VRom.Size);
            byte[] decompText = decompReader.ReadBytes(decompFile.Record.VRom.Size);

            for (int i = 0; i < compFile.Record.VRom.Size; i++)
            {
                byte a = decompText[i];
                byte b = compText[i];
                if (a == b)
                {
                    continue;
                }

                sb.AppendLine($"DECOMPRESS MISMATCH {i:X6}: {a:X2} {b:X2}");
                break;
            }

            sb.AppendLine("Test Complete");
            face.OutputText(sb.ToString());
        }
示例#4
0
        static void DisassembleRom(RomVersion ver, string path)
        {
            Rom rom;

            Console.Write("Initializing task list:  ");
            if (ver.Game == Game.OcarinaOfTime)
            {
                rom = new ORom(path, ver);
            }
            else
            {
                rom = new MRom(path, ver);
            }

            List <DisassemblyTask> taskList = DisassemblyTask.CreateTaskList(rom);

            taskList = taskList.Where(x => x.VRom.End > 0).ToList();
            Console.WriteLine("DONE!");
            Console.Write($"Building symbol table: ");
            Stream getFile(FileAddress x) => rom.Files.GetFile(x);

            LoadFunctionDatabase(ver);
            GetSymbols(taskList, rom.Version, getFile);

            Console.WriteLine("DONE!");
            Console.WriteLine("Disassembling files: ");

            DisassembleTasks(rom.Version, taskList, getFile);
            DumpFoundFunctions(rom.Version, Disassemble.GetFunctions());
        }
示例#5
0
        public static void ChestContents(ORom rom)
        {
            //int NTSC10 = 0xBEEE94;
            int NTSC12 = 0xBEEF74;
            //int PAL11 = 0xBEF204;
            int val = NTSC12;

            Get.Table(rom, val - (129 * 6), "chestcontents", DumpChestContents);

            //int tableStart_N0 = 0xBEEE94;
            //FileRecord start;

            //if (rom.Version != Rom.Build.N0)
            //    return;

            //start = rom.Files.GetFileStart(tableStart_N0);

            //if (start == null)
            //    return;

            //using (StreamWriter fs = new StreamWriter(String.Format("{0}-chestcontents.txt", rom.Version)))
            //using (BinaryReader file = new BinaryReader(rom.Files.GetFile(start.VirtualAddress)))
            //{
            //    file.BaseStream.Position = start.GetRelativeAddress(tableStart_N0);

            //}
        }
示例#6
0
        private static void DisplayHelp()
        {
            Console.WriteLine("compress   'inputRom' 'outputRom' 'GameId' 'Version'");
            Console.WriteLine("decompress 'inputRom' 'outputRom' 'GameId' 'Version'");
            Console.WriteLine("swap       'inputRom' 'outputRom' 'SwapType'");
            Console.WriteLine();

            Console.Write("Press Enter to Continue...");
            Console.ReadLine();
            Console.Clear();

            ORom.ConsolePrintSupportedVersions();
            Console.WriteLine();

            MRom.ConsolePrintSupportedVersions();
            Console.WriteLine();

            Console.Write("Press Enter to Continue...");
            Console.ReadLine();
            Console.Clear();

            Console.WriteLine("Swap Types:");
            //                                    00 01 02 03
            Console.WriteLine("little16: converts 01 00 03 02 -> 00 01 02 03");
            Console.WriteLine("little32: converts 03 02 01 00 -> 00 01 02 03");
            //                                    02 03 00 01


            Console.WriteLine();
            Console.WriteLine("Press Enter to Quit");
            Console.ReadLine();
        }
示例#7
0
        public static void ImportMapData(IExperimentFace face, List <string> files)
        {
            Rom n0 = new ORom(files[0], ORom.Build.N0);
            Rom mq = new ORom(files[1], ORom.Build.MQU);

            var scenes = Load_Scene_MQJson();

            const int dung_mark_vrom_mq = 0xBE78D8;
            N64Ptr    dung_mark_vram_mq = 0x8085CFF8;

            var Minimaps = GetDungeonMinimaps(mq, dung_mark_vrom_mq, dung_mark_vram_mq);

            //const int floor_index_n0 = 0xB6C934;
            //const int floor_data_n0 = 0xBC7E00;

            const int floor_index_mq = 0xB6AFC4;
            const int floor_data_mq  = 0xBB49E0;

            var FloorMap = GetDungeonFloorData(mq, floor_index_mq, floor_data_mq);

            for (int i = 0; i < 10; i++)
            {
                scenes[i].FloorMaps = FloorMap[i];
                scenes[i].Minimaps  = Minimaps[i];
            }

            var ms = SerializeScenes(scenes);

            StreamReader sr = new StreamReader(ms);

            face.OutputText(sr.ReadToEnd());
        }
示例#8
0
        private void CompareFiles()
        {
            List <string> files = DoubleDialog();

            if (files == null)
            {
                return;
            }

            int addr = 0x7170;

            ORom         rom1 = new ORom(files[0], ORom.Build.MQP);
            ORom         rom2 = new ORom(files[1], ORom.Build.MQP);
            BinaryReader br1  = new BinaryReader(rom1.Files.GetFile(addr));
            BinaryReader br2  = new BinaryReader(rom2.Files.GetFile(addr));

            StringBuilder sb = new StringBuilder();

            while (br1.BaseStream.Position < br1.BaseStream.Length)
            {
                if (br1.ReadInt64() != br2.ReadInt64())
                {
                    sb.AppendLine(string.Format("{0:X4}", br1.BaseStream.Position - 8 + addr));
                }
            }
            br1.Close();
            br2.Close();
            outRichTextBox.Text = sb.ToString();
        }
示例#9
0
        private void DumpTextSingle()
        {
            List <string> s = SingleDialog();

            ORom r = new ORom(s[0], ORom.Build.N0);

            outRichTextBox.Text = Get.TextDump(r, ORom.Language.English);
        }
示例#10
0
 private void VersionSelector_Load(object sender, EventArgs e)
 {
     if (Game == Game.OcarinaOfTime)
     {
         versionComboBox.DataSource = ORom.GetSupportedBuilds().ToList();
     }
     else if (Game == Game.MajorasMask)
     {
         versionComboBox.DataSource = MRom.GetSupportedBuilds().ToList();
     }
 }
示例#11
0
        public static void OutputMQJson(IExperimentFace face, List <string> filePath)
        {
            Rom n0 = new ORom(filePath[0], ORom.Build.N0);
            Rom mq = new ORom(filePath[1], ORom.Build.MQU);


            var rom_scenes = new List <List <Scene_MQJson> >();
            List <Scene_MQJson> scenes;

            foreach (Rom rom in new Rom[] { n0, mq })
            {
                scenes = new List <Scene_MQJson>();
                foreach (int sceneId in MQRandoScenes)
                {
                    if (sceneId == 12)
                    {
                        continue;
                    }

                    var sceneFile = rom.Files.GetSceneFile(sceneId);
                    using (BinaryReader br = new BinaryReader(sceneFile))
                    {
                        var va    = sceneFile.Record.VRom;
                        var scene = new Scene_MQJson(br, sceneId, va.Start, va.End);

                        br.BaseStream.Position = scene.RoomsAddress.Offset;

                        for (int roomId = 0; roomId < scene.RoomsCount; roomId++)
                        {
                            int start = br.ReadBigInt32();
                            int end   = br.ReadBigInt32();

                            var roomFile = rom.Files.GetFile(start);

                            var room = new Room_MQJson(new BinaryReader(roomFile), sceneId, roomId, start, end);
                            scene.Rooms.Add(room);
                        }
                        scenes.Add(scene);
                    }
                }
                rom_scenes.Add(scenes);
            }

            var n0_scenes = rom_scenes[0];

            scenes = rom_scenes[1];
            SetN0Addresses(scenes, n0_scenes);

            MemoryStream ms   = SerializeScenes(scenes);
            StreamReader sr   = new StreamReader(ms);
            string       json = sr.ReadToEnd();

            face.OutputText(json);
        }
示例#12
0
        private void TextTestClass(List <string> file)
        {
            ORom r = new ORom(file[0], ORom.Build.N0);

            g = new GameText(r);
            //outRichTextBox.AppendText(g.GetMessage(0x1/*01A*/, Rom.Language.English));
            //outRichTextBox.AppendText("                                                 --- End ---");
            //outRichTextBox.AppendText(Environment.NewLine);

            //outRichTextBox.AppendText(g.GetMessage(0x1/*01A*/, Rom.Language.Japanese));
            //outRichTextBox.AppendText(Environment.NewLine);
        }
示例#13
0
 public static void PatchFiles_SameVrom(Stream output, bool outputIsCompressed,
                                        ORom hostRom, Dictionary <long, string> updateFiles, GetFileDelegate getFile)
 {
     if (outputIsCompressed)
     {
         PatchFiles_SameVrom_Compressed(output, hostRom, updateFiles, getFile);
     }
     else
     {
         throw new NotImplementedException();
     }
 }
示例#14
0
 static void DumpChestContents(ORom rom, BinaryReader file, StreamWriter write)
 {
     for (int i = 0; i < 0x7D + 128 + 2; i++)
     {
         write.WriteLine(String.Format("{0:X2} {1:X2} {2:X2} {3:X2} {4:X4}",
                                       file.ReadByte(),
                                       file.ReadByte(),
                                       file.ReadByte(),
                                       file.ReadByte(),
                                       file.ReadBigUInt16()));//Endian.ConvertUShort(file.ReadUInt16())));
     }
 }
示例#15
0
        private void GetChestContents()
        {
            List <string> file = SingleDialog();

            if (file == null)
            {
                return;
            }

            ORom r = new ORom(file[0], ORom.Build.N2);

            Get.ChestContents(r);
        }
示例#16
0
        private static bool TryGetBuild(string enumStr, out ORom.Build build)
        {
            if (!Enum.TryParse(enumStr, true, out build))
            {
                return(false);
            }

            if (!ORom.IsBuildNintendo(build))
            {
                return(false);
            }

            return(true);
        }
示例#17
0
        private void CompressFile(List <string> file)
        {
            ORom r = new ORom(file[0], ORom.Build.MQP);

            byte[] data;

            using (Stream stream = r.Files.GetFile(COMPRESS_FILE_TEST))
                using (FileStream fs = new FileStream("00E7DC20", FileMode.CreateNew))
                {
                    data = new byte[stream.Length];
                    stream.Read(data, 0, (int)stream.Length);
                    Yaz.Encode(data, data.Length, fs);
                }
        }
示例#18
0
        private static Cutscene GetCutscene(List <string> file, int csAddr)
        {
            Cutscene   cs;
            FileRecord record;
            ORom       rom = new ORom(file[0], ORom.Build.N0);

            record = rom.Files.GetFileStart(csAddr);
            RomFile f = rom.Files.GetFile(record.VRom);

            f.Stream.Position = f.Record.GetRelativeAddress(csAddr);

            cs = new Cutscene(f);
            return(cs);
        }
示例#19
0
        public static string GetPartialCutscene()
        {
            List <InCutsceneData>    cutsceneData;
            Dictionary <int, _Scene> sceneInfo;
            StringBuilder            sb = new();
            ORom   rom;
            string romLoc = string.Empty;

            if (!VerboseOcarina.RomLocation.TryGetRomLocation(ORom.Build.N0, ref romLoc))
            {
                throw new NotImplementedException();
            }

            rom = new ORom(romLoc, ORom.Build.N0);

            //get list of cutscene bank offsets
            cutsceneData = GetCutsceneOffsetData();

            //get stats on the scenes within the input list
            sceneInfo = GetSceneInfo(rom);

            InCutsceneData.GetSceneDelegate = sceneInfo.TryGetValue;

            for (int sceneId = 0; sceneId < 101; sceneId++)
            {
                RomFile file;
                sceneInfo.TryGetValue(sceneId, out _Scene scene);
                file = rom.Files.GetSceneFile(sceneId);

                foreach (InCutsceneData inData in cutsceneData)
                {
                    if (inData.scene == sceneId)
                    {
                        continue;
                    }

                    var odat = GetData(scene, file, inData);

                    sb.AppendFormat("{0},{1},{2:X6},{3:X6},{4:X8},{5},{6}",
                                    odat.inData.scene, odat.inData.setup, odat.inData.offset,
                                    odat.inData.RamStart,
                                    odat.cutsceneRomAddress,
                                    odat.scene.Id,
                                    odat.result.ToString());
                    sb.AppendLine();
                }
            }

            return(sb.ToString());
        }
示例#20
0
        private static Dictionary <int, _Scene> GetSceneInfo(ORom rom)
        {
            Dictionary <int, _Scene> result = new();

            for (int sceneId = 0; sceneId < 101; sceneId++)
            {
                _Scene s = new()
                {
                    Id      = sceneId,
                    Address = rom.Files.GetSceneVirtualAddress(sceneId)
                };
                result.Add(sceneId, s);
            }
            return(result);
        }
示例#21
0
        public static void TestYazCompression(IExperimentFace face, List <string> filePath)
        {
            ORom          rom = new ORom(filePath[0], ORom.Build.N0);
            StringBuilder sb  = new StringBuilder();

            foreach (var file in rom.Files)
            {
                if (!file.IsCompressed)
                {
                    continue;
                }

                try
                {
                    Stream       vanillaFile      = rom.Files.GetPhysicalFile(file.VRom);
                    var          decompressedFile = Yaz.Decode(vanillaFile, file.Rom.Size);
                    MemoryStream ms = new MemoryStream(file.Rom.Size);
                    sb.AppendLine($"{ Yaz.Encode(decompressedFile, decompressedFile.Length, ms):X8}");
                    while (ms.Length < ms.Capacity)
                    {
                        ms.WriteByte(0);
                    }

                    vanillaFile.Position = 0;
                    ms.Position          = 0;

                    BinaryReader original = new BinaryReader(vanillaFile);
                    BinaryReader test     = new BinaryReader(ms);

                    sb.AppendLine($"{file.VRom} - original: {original.BaseStream.Length:X8} test: {test.BaseStream.Length:X8}");

                    for (int i = 0; i < file.Rom.Size; i += 4)
                    {
                        int left  = original.ReadBigInt32();
                        int right = test.ReadBigInt32();
                        if (left != right)
                        {
                            sb.AppendLine($"{file.VRom} - {i:X8} does not match, comparison stopped");
                        }
                    }
                }
                catch (Exception e)
                {
                    sb.AppendLine($"{file.VRom} - Exception {e.Message} {e.InnerException}");
                }
            }
            face.OutputText(sb.ToString());
        }
示例#22
0
        public static void Generate(IExperimentFace face, List <string> file)
        {
            byte[]       buffer;
            MemoryStream ms;

            const int RecordLength = 0x1EC;
            const int RecordCount  = 0x4158 / 0x1EC;

            ORom         rom           = new ORom(file[0], ORom.Build.MQU);
            var          addr          = rom.Files.GetPlayPauseAddress(0);
            var          kaleido_scope = rom.Files.GetFile(addr);
            var          kalBr         = new BinaryReader(kaleido_scope);
            BinaryWriter newBw;

            using (FileStream fs = new FileStream(file[1], FileMode.Open))
            {
                buffer = new byte[fs.Length];
                ms     = new MemoryStream(buffer);
                fs.CopyTo(ms);
            }
            newBw = new BinaryWriter(ms);

            ms.Position = 0x016C20;
            kaleido_scope.Stream.Position = kaleido_scope.Record.GetRelativeAddress(0xBB49E0);

            for (int i = 0; i < RecordCount; i++)
            {
                for (int j = 0; j < RecordLength; j += 4)
                {
                    var word = kalBr.ReadBigInt32();
                    if (j == 0x8)
                    {
                        newBw.BaseStream.Position += 4;
                        continue;
                    }
                    else
                    {
                        newBw.WriteBig(word);
                    }
                }
            }
            using (FileStream fs = new FileStream("new_ovl_kaleido_scope", FileMode.Create))
            {
                newBw.Seek(0, SeekOrigin.Begin);
                newBw.BaseStream.CopyTo(fs);
            }
        }
示例#23
0
        private static Stream CompressFile(ORom rom, FileRecord record)
        {
            byte[] data;

            using (BinaryReader br = new BinaryReader(rom.Files.GetFile(record.VRom.Start)))
            {
                data = br.ReadBytes(record.VRom.Size);
            }

            //compress file
            MemoryStream ms = new MemoryStream();

            Yaz.Encode(data, data.Length, ms);
            ms.Position = 0;

            return(ms);
        }
示例#24
0
 public static void DmaFile(ORom r)
 {
     using (StreamWriter fs = new StreamWriter($"{r.Version}-dmadata.txt"))
     {
         for (int i = 0; i < r.Files.Count; i++)
         {
             FileRecord f = r.Files[i];
             fs.WriteLine(string.Format("{0},{1},{2:X8},{3:X8},{2},{3},{4},{5}",
                                        i,
                                        r.Version.ToString(),
                                        f.VRom.Start,
                                        f.VRom.End,
                                        f.Rom.Start,
                                        f.Rom.End));
         }
     }
 }
示例#25
0
        private static void DisplayHelp()
        {
            Console.WriteLine("compress   \"inputRom\" \"outputRom\" \"GameId\" \"Version\"");
            Console.WriteLine("decompress \"inputRom\" \"outputRom\" \"GameId\" \"Version\"");
            Console.WriteLine("swap       \"inputRom\" \"outputRom\" \"SwapType\"");
            Console.WriteLine();

            Console.Write("Press Enter to Continue...");
            Console.ReadLine();
            Console.Clear();

            Console.WriteLine("Ocarina of Time: use GameId \"oot\"");
            Console.WriteLine("Version:");
            foreach (var item in ORom.GetSupportedBuilds())
            {
                var info = ORom.BuildInformation.Get(item);
                Console.WriteLine(" {0,-5} {1}", info.Version + ":", info.Name);
            }
            Console.WriteLine();

            Console.WriteLine("Majora's Mask: use GameId \"mm\"");
            Console.WriteLine("Version:");
            foreach (var item in MRom.GetSupportedBuilds())
            {
                var info = MRom.BuildInformation.Get(item);
                Console.WriteLine(" {0,-5} {1}", info.Version + ":", info.Name);
            }
            Console.WriteLine();

            Console.Write("Press Enter to Continue...");
            Console.ReadLine();
            Console.Clear();

            Console.WriteLine("Swap Types:");
            //                                    00 01 02 03
            Console.WriteLine("little16: converts 01 00 03 02 -> 00 01 02 03");
            Console.WriteLine("little32: converts 03 02 01 00 -> 00 01 02 03");
            //                                    02 03 00 01


            Console.WriteLine();
            Console.WriteLine("Press Enter to Quit");
            Console.ReadLine();
        }
示例#26
0
        public static void RandomDrops(IExperimentFace face, List <string> file)
        {
            ORom          rom = new ORom(file[0], ORom.Build.N0);
            StringBuilder sb  = new StringBuilder();

            var  codeFile      = rom.Files.GetFile(new RomFileToken(ORom.FileList.code));
            long dropTableAddr = codeFile.Record.GetRelativeAddress(0xB5D764);

            BinaryReader br = new BinaryReader(codeFile);

            br.BaseStream.Position = dropTableAddr;

            for (int i = 0; i < 15; i++)
            {
                sb.AppendLine(new RandomDropTable(br).ToString());
            }

            face.OutputText(sb.ToString());
        }
        public static string DecompressedFileList(ORom romFile)
        {
            OFileTable ft;
            StringBuilder sb = new StringBuilder();

            ft = new OFileTable(romFile.FileLocation, romFile.Version);

            sb.AppendLine(romFile.Version.ToString());

            for (int i = 0; i < ft.Count; i++)
            {
                FileRecord record = ft[i];
                if (record.IsCompressed == false)
                {
                    sb.AppendLine($"{i:D4} {record.VRom.Start:X8}");
                }
            }
            return sb.ToString();
        }
示例#28
0
        public void Script(string path)
        {
            ORom         rom = new ORom(path, ORom.Build.DBGMQ);
            MemoryStream ms  = new MemoryStream(new byte[0x4000000]);

            //clone rom's files by DMA
            foreach (var item in rom.Files)
            {
                var rfile = rom.Files.GetFile(item.VRom);
                CopyToOutputRom(ms, rfile);
            }

            //clone scene and room files

            for (int i = 0; i < rom.Scenes; i++)
            {
                var sceneFile = rom.Files.GetSceneFile(i);
                if (sceneFile == null)
                {
                    continue;
                }
                var sceneFileMeta = SceneRoomReader.InitializeScene(sceneFile, i);
                RemoveActor0001FromFile(ms, sceneFile, sceneFileMeta.Header);
                CopyToOutputRom(ms, sceneFile);

                foreach (var roomAddr in sceneFileMeta.Header.GetRoomAddresses())
                {
                    var roomFile     = rom.Files.GetFile(roomAddr);
                    var roomFileMeta = SceneRoomReader.InitializeRoom(roomFile);
                    RemoveActor0001FromFile(ms, roomFile, roomFileMeta.Header);
                    CopyToOutputRom(ms, roomFile);
                }
            }

            //save
            using (Stream sw = new FileStream("ZeldosBirthday.z64", FileMode.Create))
            {
                ms.Position = 0;
                ms.CopyTo(sw);
            }
            //using (BinaryWriter bw = new BinaryWriter(new StreamWriter()))
        }
示例#29
0
        //public delegate void GenerateFile();

        /// <summary>
        ///
        /// </summary>
        /// <param name="sourceRom">The source rom file</param>
        /// <param name="modifiedRom">The modified rom file</param>
        /// <param name="folder"></param>
        public static void GenerateModifiedFiles(ORom sourceRom, ORom modifiedRom, string folder)
        {
            BinaryReader source;
            BinaryReader modified;
            //FileRecord modifiedFileRecord;
            RomFile modifiedFile;


            foreach (FileRecord record in sourceRom.Files)
            {
                source       = new BinaryReader(sourceRom.Files.GetFile(record.VRom));
                modifiedFile = modifiedRom.Files.GetFile(record.VRom);
                modified     = new BinaryReader(modifiedFile);

                if (source.BaseStream.IsDifferentTo(modified.BaseStream))
                {
                    modified.BaseStream.Position = 0;
                    WriteFile(modified, modifiedFile.Record, record.IsCompressed, folder);
                }
            }
        }
示例#30
0
        //void XmlActorDictionaryTests()
        //{
        //    XmlActorDictionary.LoadFile(openFileDialog.FileName);
        //    byte[] test = new byte[0x10];
        //    byte[] testInit = test;

        //    //test out our actor def function
        //    XmlActorDictionary.TryGetActorDefinition(0xA, out ActorDefinition def);

        //    string testOut = def.GetDescription(test);

        //    XmlActor testNewRecord = new XmlActor(testInit);

        //    this.outRichTextBox.Text = testNewRecord.Print();
        //}


        private void CutsceneParser()
        {
            #region Cutscene Parser
            mzxrules.OcaLib.Cutscenes.Cutscene a;

            //br =  SceneRoomReader.LocalFileTable.GetFile(0x0318E000);
            //br.BaseStream.Position = 0x1DA40;
            //hyrule field title
            //br = SceneRoomReader.LocalFileTable.GetFile(0x01FB8000);
            //br.BaseStream.Position = 0xA920;

            ORom rom = new ORom("", ORom.Build.N0);

            //navi
            Stream s = rom.Files.GetFile(0x206F000);
            s.Position = 0xA6D0;
            a          = new mzxrules.OcaLib.Cutscenes.Cutscene(s);
            outRichTextBox.Clear();
            outRichTextBox.Text = a.PrintByOccurrence();
            #endregion
        }