Ejemplo n.º 1
0
        private static void AnimAnalyzeIndividual(BACData.BACAnim anim)
        {
            AELogger.bPrintAll = true;
            if (anim.bEmpty)
            {
                AELogger.Log("anim empty", false);
                return;
            }
            AELogger.Log("anim: " + anim.name, false);

            int ptr_chunk_list = (int)AEDataTools.UInt32FromData(anim.data.data, 20);
            // header size is usually 24 but we just gotta be safe

            String headerstring = "";
            for (int i = 0; i < ptr_chunk_list; i++)
            {
                headerstring += anim.data.data[i].ToString("X2");
            }
            AELogger.Log("header:", false);
            AELogger.Log(headerstring, false);

            int size_chunk_list = AEDataTools.UInt16FromData(anim.data.data, 18);
            AELogger.Log("ptr_chunk_list: " + ptr_chunk_list.ToString("X2"), false);
            AELogger.Log("size_chunk_list: " + size_chunk_list.ToString("X2"), false);

            int ptr_current = ptr_chunk_list;

            for (int i = 0; i < size_chunk_list; i++)
            {
                int cur_chunk = AEDataTools.UInt16FromData(anim.data.data, ptr_chunk_list + (i * 12));
                int cur_chunk_size = AEDataTools.UInt16FromData(anim.data.data, ptr_chunk_list + (i * 12) + 2);
                int cur_chunk_start = (int)AEDataTools.UInt32FromData(anim.data.data, ptr_chunk_list + (i * 12) + 4) + ptr_chunk_list + (i * 12);
                int cur_chunk_end = (int)AEDataTools.UInt32FromData(anim.data.data, ptr_chunk_list + (i * 12) + 8) + ptr_chunk_list + (i * 12);

                AELogger.Log((BACData.BACChunkType)cur_chunk + " " +
                    cur_chunk_size + " " + cur_chunk_start + " " + cur_chunk_end, false);

                for (int j = 0; j < cur_chunk_size; j++)
                {
                    AELogger.Log("frames: " + AEDataTools.UInt16FromData(anim.data.data, cur_chunk_start + j * 4).ToString() +
                        "-" + AEDataTools.UInt16FromData(anim.data.data, cur_chunk_start + j * 4 + 2).ToString(), false);
                }
            }

            headerstring = "";
            for (int i = 0; i < anim.data.data.Count; i++)
            {
                headerstring += anim.data.data[i];
            }
            AELogger.Log(headerstring, false);
            //AELogger.Log("num subanims: " + anim.data.data[ptrHeader + 2].ToString("X2"), false);
        }
Ejemplo n.º 2
0
        private static void AnimAnalyze(BACData bac)
        {
            List<List<Byte>> byteList = new List<List<Byte>>();
            List<List<String>> stringList = new List<List<String>>();
            Console.WriteLine("shortest and longest " + bac.ShortestAnim + " and " + bac.LongestAnim);
            AELogger.Log("shortest and longest " + bac.ShortestAnim + " and " + bac.LongestAnim, false);
            for (int i = 0; i < bac.LongestAnim; i++)
            {
                byteList.Add(new List<Byte>());
                stringList.Add(new List<String>());
            }
            for (int inputIndex = 0; inputIndex < bac.AnimList.Count; inputIndex++)
            {
                if (!bac.AnimList[inputIndex].bEmpty)
                {
                    for (int byteIndex = 0; byteIndex < bac.AnimList[inputIndex].data.Count; byteIndex++)
                    {
                        int outByteIndex = byteList[byteIndex].IndexOf(bac.AnimList[inputIndex].data.data[byteIndex]);
                        //byteList[byteIndex].Contains(bac.AnimList[inputIndex].data[byteIndex])
                        if (outByteIndex == -1)
                        {
                            byteList[byteIndex].Add(bac.AnimList[inputIndex].data.data[byteIndex]);
                            stringList[byteIndex].Add(bac.AnimList[inputIndex].name);
                        }
                        else
                        {
                            stringList[byteIndex][outByteIndex] = stringList[byteIndex][outByteIndex] + ", " + bac.AnimList[inputIndex].name;
                        }
                    }
                }
            }

            for (int i = 0; i < bac.LongestAnim; i++)
            {
                String output2 = "Byte " + i;
                Console.WriteLine(output2);
                AELogger.Log(output2, false);
                for (int j = 0; j < byteList[i].Count; j++)
                {
                    String output = "----" + byteList[i][j].ToString("X2") + " occurs in " + stringList[i][j];
                    Console.WriteLine(output);
                    AELogger.Log(output, false);
                }
            }
        }
Ejemplo n.º 3
0
 private static void AnimAnalyzeIndividual(BACData bac, int p)
 {
     AnimAnalyzeIndividual(bac.GetAnimAt(p));
 }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            try
            {
                //AELogger.bPrintAll = true;
                if (args.Length <= 0)
                {
                    AELogger.Log("No file specified.");
                    Console.WriteLine("No file specified.");
                }
                else if (args.Length == 1)
                {
                    AELogger.Log(args[0] + " is target");
                    using (BinaryReader b = new BinaryReader(File.Open(args[0], FileMode.Open)))
                    {
                        BACData bac = new BACData(b);
                        AnimAnalyze(bac);
                    }
                }
                else
                {
                    AELogger.Log(args[0] + " is target");
                    using (BinaryReader b = new BinaryReader(File.Open(args[0], FileMode.Open)))
                    {
                        BACData bac = new BACData(b);
                        if (args.Length == 2)
                        {
                            AnimAnalyzeRange(bac, int.Parse(args[1]), int.Parse(args[1]));
                        }
                        else
                        {
                            if (args[1].ToLower() == "i")
                            {
                                AnimAnalyzeIndividual(bac, int.Parse(args[2]));
                            }
                            else
                            {
                                AnimAnalyzeRange(bac, int.Parse(args[1]), int.Parse(args[2]));
                            }
                        }
                    }
                }
                AELogger.WriteLog();
            }
            catch (Exception e)
            {
                AELogger.Log("Exception: " + e.Message);

                AELogger.Log("Exception: " + e.StackTrace);

                if (e.InnerException != null)
                {
                    AELogger.Log("InnerException: " + e.InnerException.ToString());
                }
                Console.WriteLine(e.Message);
                AELogger.WriteLog();
            }
        }
Ejemplo n.º 5
0
        private static void AnimAnalyzeRange(BACData bac, int start, int end)
        {
            List<String> valueList = new List<String>();
            List<String> nameList = new List<String>();
            Console.WriteLine("shortest and longest " + bac.ShortestAnim + " and " + bac.LongestAnim);
            AELogger.Log("shortest and longest " + bac.ShortestAnim + " and " + bac.LongestAnim, false);
            end++;
            if (end > bac.LongestAnim)
            {
                end = bac.LongestAnim;
            }
            if (start > end)
            {
                start = end - 1;
            }
            for (int inputIndex = 0; inputIndex < bac.AnimList.Count; inputIndex++)
            {
                String current = "";
                if(!bac.AnimList[inputIndex].bEmpty)
                {
                    for (int byteIndex = start; byteIndex < end; byteIndex++)
                    {
                        // = byteList[byteIndex].IndexOf(bac.AnimList[inputIndex].data[byteIndex]);
                        current += bac.AnimList[inputIndex].data.data[byteIndex].ToString("X2");
                    }
                    int outByteIndex = valueList.IndexOf(current);
                    if (outByteIndex == -1)
                    {
                        valueList.Add(current);
                        nameList.Add(bac.AnimList[inputIndex].name);
                    }
                    else
                    {
                        nameList[outByteIndex] = nameList[outByteIndex] + ", " + bac.AnimList[inputIndex].name;
                    }
                }
            }

            String output2 = "Bytes " + start + " to " + (end - 1);
            Console.WriteLine(output2);
            AELogger.Log(output2, false);
            for (int j = 0; j < valueList.Count; j++)
            {
                String output = "----" + valueList[j] + " occurs in " + nameList[j];
                Console.WriteLine(output);
                AELogger.Log(output, false);
            }
        }
Ejemplo n.º 6
0
 private void openButton_Click(object sender, EventArgs e)
 {
     OpenFileDialog openFile = new OpenFileDialog();
     openFile.DefaultExt = "bac";
     // The Filter property requires a search string after the pipe ( | )
     openFile.Filter = "BAC Files (*.bac)|*.bac|All files (*.*)|*.*";
     openFile.ShowDialog();
     if (openFile.FileNames.Length > 0)
     {
         using (BinaryReader b = new BinaryReader(File.Open(openFile.FileNames[0], FileMode.Open)))
         {
             currentBAC = new BACData(b);
             saveButton.Enabled = true;
             animBox.Enabled = true;
             animBox.DataSource = currentBAC.GetAnimList();
             animBox.SelectedIndex = 0;
         }
     }
     else
     {
         Log("nothing selected!");
     }
 }