private static void ListItems(SDat sdat)
        {
            for (int seqIndex = 0; seqIndex < sdat.sequenceInfo.Count; ++seqIndex)
            {
                if (sdat.sequenceInfo[seqIndex] == null)
                {
                    continue;
                }
                if (sdat.seqSymbols != null & sdat.seqSymbols[seqIndex] != null)
                {
                    Console.WriteLine(sdat.seqSymbols[seqIndex]);
                }
                else
                {
                    Console.WriteLine($"SSEQ #{seqIndex}");
                }
            }

            for (int strmIndex = 0; strmIndex < sdat.streamInfo.Count; ++strmIndex)
            {
                if (sdat.streamInfo[strmIndex] == null)
                {
                    continue;
                }
                if (sdat.streamSymbols != null & sdat.streamSymbols[strmIndex] != null)
                {
                    Console.WriteLine(sdat.streamSymbols[strmIndex]);
                }
                else
                {
                    Console.WriteLine($"STRM #{strmIndex}");
                }
            }
        }
        private static int Disasm(SDat sdat, string name)
        {
            if (Regex.IsMatch(name, @"^[0-9]+$"))
            {
                return(Disasm(sdat, int.Parse(name)));
            }
            try {
                var sseq = sdat.OpenSequence(name);
                var ser  = new SequenceSerializer();
                Console.Write(ser.Serialize(sseq.sequence));
                return(ERR_OK);
            } catch (FileNotFoundException) {
                //just swallow this one
            }

            try {
                var strm = sdat.OpenStream(name);
                Console.WriteLine("Is stream.");
                return(ERR_IS_STREAM);
            } catch (FileNotFoundException) {
                //keep on ignoring missing files
            }

            return(ERR_SEQ_NOT_FOUND);
        }
Пример #3
0
        private static void ScanFile(Stream fileStream)
        {
            NDS nds = null;

            try {
                nds = new NDS(fileStream);
            } catch (Exception) {
                Console.WriteLine("NDS parsing failed.");
                return;
            }

            var ser = new SequenceSerializer();

            var sdatFiles = nds.FileSystem.RootDir.FindMatchingFiles("*.sdat");

            foreach (var sdatFile in sdatFiles)
            {
                SDat sdat;
                try {
                    sdat = SDat.Open(nds.FileSystem.OpenFile(sdatFile));
                } catch (InvalidDataException) {
                    Console.Out.WriteLine($"{sdatFile.AbsPath} Fail");
                    continue;                    //if this isn't even a valid sdat, no need to try the sequence parser on it
                }
                Console.Out.WriteLine($"{sdatFile.AbsPath} Loaded");

                for (int sequenceIndex = 0; sequenceIndex < sdat.sequenceInfo.Count; ++sequenceIndex)
                {
                    if (sdat.sequenceInfo[sequenceIndex] == null)
                    {
                        continue;
                    }

                    string seqName;
                    if (sdat.seqSymbols != null && sdat.seqSymbols[sequenceIndex] != null)
                    {
                        seqName = $"# {sequenceIndex} {sdat.seqSymbols[sequenceIndex]}";
                    }
                    else
                    {
                        seqName = $"# {sequenceIndex}";
                    }

                    SSEQ sseq = null;
                    try {
                        sseq = sdat.OpenSequence(sequenceIndex);
                    } catch (Exception) {
                        Console.WriteLine($"Sequence {seqName} failed to parse.");
                    }

                    try {
                        ser.Clear();
                        ser.Serialize(sseq.sequence);
                    } catch (Exception) {
                        Console.WriteLine($"Sequence {seqName} failed to serialize.");
                    }
                }
            }
        }
        private static int ListItems(NDS nds, List <FileSystem.File> sdats)
        {
            foreach (var sdatFile in sdats)
            {
                SDat sdat = SDat.Open(nds.FileSystem.OpenFile(sdatFile));

                ListItems(sdat);
            }
            return(ERR_OK);
        }
 private static int Disasm(SDat sdat, int index)
 {
     try {
         var sseq = sdat.OpenSequence(index);
         var ser  = new SequenceSerializer();
         Console.Write(ser.Serialize(sseq.sequence));
         return(ERR_OK);
     } catch (FileNotFoundException) {
         return(ERR_SEQ_NOT_FOUND);
     }
 }
        private static BasePlayer MakePlayer(string name, NDS nds, List <FileSystem.File> sdats)
        {
            foreach (var sdatFile in sdats)
            {
                SDat sdat = SDat.Open(nds.FileSystem.OpenFile(sdatFile));

                BasePlayer player = MakePlayer(sdat, name);
                if (player != null)
                {
                    return(player);
                }
            }

            throw new FileNotFoundException($"Failed to find a sequence by the name of \"{name}\"");
        }
        private static int Disasm(string name, NDS nds, List <FileSystem.File> sdats)
        {
            foreach (var sdatFile in sdats)
            {
                SDat sdat = SDat.Open(nds.FileSystem.OpenFile(sdatFile));

                int res = Disasm(sdat, name);
                if (res == ERR_SEQ_NOT_FOUND)
                {
                    continue;
                }
                return(res);
            }

            Console.Error.WriteLine("Sequence not found");
            return(ERR_SEQ_NOT_FOUND);
        }
        private static BasePlayer MakePlayer(SDat sdat, string name)
        {
            if (Regex.IsMatch(name, @"^[0-9]+$"))
            {
                return(new SequencePlayer(sdat, int.Parse(name)));
            }
            try {
                return(new SequencePlayer(sdat, name));
            } catch (FileNotFoundException) {
                //just swallow this one
            }

            try {
                var strm = sdat.OpenStream(name);
                Console.WriteLine("Is stream.");
                var player = new StreamPlayer(strm);
                player.SampleRate = strm.sampleRate;
                return(player);
            } catch (FileNotFoundException) {
                //keep on ignoring missing files
            }

            return(null);
        }
Пример #9
0
        private void Load(SDat sdat, int streamIndex)
        {
            var strm = sdat.OpenStream(streamIndex);

            Load(strm);
        }
Пример #10
0
 public StreamPlayer(SDat sdat, int streamIndex)
 {
     Load(sdat, streamIndex);
 }
Пример #11
0
        public StreamPlayer(SDat sdat, string streamName)
        {
            var strm = sdat.OpenStream(streamName);

            Load(strm);
        }