コード例 #1
0
 private void Setup(ISnesData data)
 {
     Running         = true;
     streamProcessor = new BsnesImportStreamProcessor();
     taskManager     = CreateWorkerTaskManager();
     importer        = CreateTraceLogImporter(data);
 }
コード例 #2
0
    private void Shutdown()
    {
        streamProcessor.Shutdown();

        streamProcessor = null;
        taskManager     = null;
        importer        = null;

        Running = false;
    }
コード例 #3
0
        public static void TestParseText2()
        {
            var modData  = new BsnesTraceLogImporter.ModificationData();
            var importer = new BsnesTraceLogImporter(null);

            importer.ParseTextLine(Example2, modData);
            Assert.Equal(0xc3091a, modData.SnesAddress);
            Assert.Equal(0xF001, modData.DirectPage);
            Assert.Equal(0xAF, modData.DataBank);
            Assert.False(modData.MFlagSet);
            Assert.True(modData.XFlagSet);
        }
コード例 #4
0
        public static void TestParseText3()
        {
            var modData  = new BsnesTraceLogImporter.ModificationData();
            var importer = new BsnesTraceLogImporter(null);

            importer.ParseTextLine(Example3, modData);

            Assert.Equal(0x90c860, modData.SnesAddress);
            Assert.Equal(0x2134, modData.DirectPage);
            Assert.Equal(0x9A, modData.DataBank);
            Assert.True(modData.MFlagSet);
            Assert.True(modData.XFlagSet);
        }
コード例 #5
0
        public static void TestParseText1()
        {
            var modData  = new BsnesTraceLogImporter.ModificationData();
            var importer = new BsnesTraceLogImporter(null);

            importer.ParseTextLine(example1, modData);

            Assert.Equal(0x28cde, modData.SnesAddress);
            Assert.Equal(0x0000, modData.DirectPage);
            Assert.Equal(0x02, modData.DataBank);
            Assert.True(modData.MFlagSet);
            Assert.False(modData.XFlagSet);
        }
コード例 #6
0
ファイル: TraceLogTests.cs プロジェクト: furious/diztinguish
        public static void TestParseText()
        {
            var sampleLine = BsnesTraceLogImporter.SampleLineText;

            var modData = new BsnesTraceLogImporter.ModificationData();

            BsnesTraceLogImporter.ParseTextLine(sampleLine, modData);

            Assert.Equal(0x28cde, modData.SnesAddress);
            Assert.Equal(0x0000, modData.DirectPage);
            Assert.Equal(0x02, modData.DataBank);
            Assert.False(modData.XFlagSet);
            Assert.False(modData.MFlagSet);
        }
コード例 #7
0
        public long ImportBsnesTraceLogsBinary(IEnumerable <string> filenames)
        {
            var importer = new BsnesTraceLogImporter(Project.Data);

            foreach (var file in filenames)
            {
                using Stream source = File.OpenRead(file);
                const int bytesPerPacket = 22;
                var       buffer         = new byte[bytesPerPacket];
                int       bytesRead;
                while ((bytesRead = source.Read(buffer, 0, bytesPerPacket)) > 0)
                {
                    Debug.Assert(bytesRead == 22);
                    importer.ImportTraceLogLineBinary(buffer);
                }
            }

            return(importer.CurrentStats.NumRomBytesModified);
        }
コード例 #8
0
        public long ImportBsnesTraceLogs(string[] fileNames)
        {
            var importer = new BsnesTraceLogImporter(Project.Data);

            // TODO: differentiate between binary-formatted and text-formatted files
            // probably look for a newline within 80 characters
            // call importer.ImportTraceLogLineBinary()

            // caution: trace logs can be gigantic, even a few seconds can be > 1GB
            // inside here, performance becomes critical.
            LargeFilesReader.ReadFilesLines(fileNames,
                                            (line) =>
            {
                importer.ImportTraceLogLine(line);
            });

            if (importer.CurrentStats.NumRomBytesModified > 0)
            {
                MarkChanged();
            }

            return(importer.CurrentStats.NumRomBytesModified);
        }