Exemple #1
0
        public static Program LoadEXE(string filename)
        {
            Program program = new Program();

            using (FileStream exe = new FileStream(filename, FileMode.Open, FileAccess.Read))
            {
                byte[] buffer = new byte [4];
                exe.Position = 0x10;
                exe.Read(buffer, 0, 4);
                int entrypoint = BitConv.FromInt32(buffer, 0);
                exe.Position = 0x18;
                exe.Read(buffer, 0, 4);
                int address = BitConv.FromInt32(buffer, 0);
                exe.Position = 0x800;
                while (exe.Read(buffer, 0, 4) == 4)
                {
                    program.SetWord(address, BitConv.FromInt32(buffer, 0));
                    address += 4;
                }
                program[entrypoint].IsMethod = true;
                program[entrypoint].Label    = "Main";
                program.MarkBranch(entrypoint);
            }
            return(program);
        }
Exemple #2
0
 public override void Mark(Program p,int address)
 {
     if (rs == Register.R0)
         p.MarkDelaySlot(address + 4);
     else
         base.Mark(p,address);
     p.MarkBranch(address + offset * 4 + 4);
 }
Exemple #3
0
 public override void Mark(Program p, int address)
 {
     p.MarkDelaySlot(address + 4);
     foreach (Word destination in p[address].Destinations)
     {
         p.MarkBranch(destination.Address);
     }
 }
Exemple #4
0
 public override void Mark(Program p, int address)
 {
     if (rs == Register.R0)
     {
         p.MarkDelaySlot(address + 4);
     }
     else
     {
         base.Mark(p, address);
     }
     p.MarkBranch(address + offset * 4 + 4);
 }
Exemple #5
0
 public static Program LoadEXE(string filename)
 {
     Program program = new Program();
     using (FileStream exe = new FileStream(filename,FileMode.Open,FileAccess.Read))
     {
         byte[] buffer = new byte [4];
         exe.Position = 0x10;
         exe.Read(buffer,0,4);
         int entrypoint = BitConv.FromInt32(buffer,0);
         exe.Position = 0x18;
         exe.Read(buffer,0,4);
         int address = BitConv.FromInt32(buffer,0);
         exe.Position = 0x800;
         while (exe.Read(buffer,0,4) == 4)
         {
             program.SetWord(address,BitConv.FromInt32(buffer,0));
             address += 4;
         }
         program[entrypoint].IsMethod = true;
         program[entrypoint].Label = "Main";
         program.MarkBranch(entrypoint);
     }
     return program;
 }
Exemple #6
0
        static void DefineUnknown()
        {
            p.MarkUnknown(0x18DD0);
            p.MarkUnknown(0x1C850);
            p.MarkUnknown(0x18F84);
            p.MarkUnknown(0x18FA4);
            p.MarkUnknown(0x1D014);
            p.MarkUnknown(0x2A4CC);
            p.MarkBranch(0x3E170);
            p.MarkUnknown(0x5519C);
            p.MarkUnknown(0x191B0);
            p.MarkUnknown(0x19E68);
            p.MarkUnknown(0x54498);
            p.MarkBranch(0x42D50);
            p.MarkUnknown(0x53408);
            p.MarkUnknown(0x53D10);
            p.MarkUnknown(0x5510C);
            p.MarkUnknown(0x53FE0);
            p.MarkBranch(0x4573C);
            p.MarkAnonymousJumpTable(0x5B8F0, 0x5B924);
            p.MarkAnonymousJumpTable(0x5B930, 0x5B99C);
            p.MarkAnonymousJumpTable(0x5B9A4, 0x5B9AC);
            p.MarkAnonymousJumpTable(0x5B9B4, 0x5BA00);
            p.MarkAnonymousJumpTable(0x5BA08, 0x5BA44);
            p.MarkBranch(0x41FAC);
            p.MarkUnknown(0x54090);
            p.MarkUnknown(0x5456C);
            p.MarkUnknown(0x542C8);
            p.MarkUnknown(0x46BB4);
            p.MarkUnknown(0x48B90);
            p.MarkUnknown(0x4AAA8);
            p.MarkUnknown(0x4AD6C);
            p.MarkBranch(0x420E8);
            p.MarkBranch(0x42DDC);
            p.MarkBranch(0x42C34);
            p.MarkBranch(0x42EC4);
            p.MarkBranch(0x44138);
            p.MarkBranch(0x44C9C);
            p.MarkUnknown(0x4B1F8);
            p.MarkBranch(0x43FEC);
            p.MarkBranch(0x4401C);
            p.MarkBranch(0x44D08);
            p.MarkBranch(0x45158);
            p.MarkUnknown(0x48AAC);
            p.MarkUnknown(0x4B0D8);
            p.MarkBranch(0x42F08);
            p.MarkBranch(0x3E794);
            p.MarkBranch(0x44C18);
            p.MarkUnknown(0x4B37C);
            p.MarkBranch(0x42E14);
            p.MarkBranch(0x43C34);
            p.MarkUnknown(0x53830);
            p.MarkUnknown(0x4F9D0);
            p.MarkBranch(0x44C48);
            p.MarkUnknown(0x46C04);
            p.MarkBranch(0x43DF4);
            p.MarkBranch(0x43EE0);
            p.MarkBranch(0x43FCC);
            p.MarkBranch(0x43E0C);
            p.MarkBranch(0x43EC4);
            p.MarkBranch(0x4311C);
            p.MarkBranch(0x42930);
            p.MarkBranch(0x431A0);
            p.MarkUnknown(0x4A454);
            p.MarkUnknown(0x3C120);

            // JAN 05 2015 - Night Fight
            p.MarkBranch(0x44D38);
            p.MarkBranch(0x450E0);
            p.MarkBranch(0x44D40);
            p.MarkBranch(0x44D98);

            // JAN 07 2015 - Road To Ruin
            p.MarkBranch(0x43D1C);
            p.MarkUnknown(0x43C6C);

            // JAN 07 2015 - Ruination
            p.MarkBranch(0x45C34);
            p.MarkBranch(0x45C40);
            p.MarkBranch(0x45D4C);

            // JAN 07 2015 - Diggin' It
            p.MarkBranch(0x45EB0);
            p.MarkUnknown(0x46020);
            p.MarkBranch(0x461D8);

            // JAN 10 2015 - Table Discovered From Save Game Screen
            p.MarkAnonymousCallTable(0x5DF70, 0x5DFA8);

            //p.MarkBranch(0x3BC64);

            /*p.MarkAnonymousJumpTable(0x5B8F0,0x5B924);
             * p.MarkAnonymousJumpTable(0x5B930,0x5B99C);
             * p.MarkAnonymousJumpTable(0x5B9A4,0x5B9AC);
             * p.MarkAnonymousJumpTable(0x5B9B4,0x5BA00);
             * p.MarkAnonymousJumpTable(0x5BA08,0x5BA44);
             * p.MarkAnonymousJumpTable(0x5DEE4,0x5DEEC);
             *
             * p.FlushMarks();
             * p.MarkUnknown(0x11E98);
             * p.MarkUnknown(0x12100);
             * p.MarkUnknown(0x1232C);
             * p.MarkUnknown(0x14324);
             * p.MarkUnknown(0x14D0C);
             * p.MarkUnknown(0x14D4C);
             * p.MarkUnknown(0x16328);
             * p.MarkUnknown(0x1642C);
             * p.MarkUnknown(0x16518);
             * p.MarkUnknown(0x16538);
             * p.MarkUnknown(0x16548);
             * p.MarkUnknown(0x17020);
             * p.MarkUnknown(0x172BC);
             * p.MarkUnknown(0x172E4);
             * p.MarkUnknown(0x1747C);
             * p.MarkUnknown(0x18558);
             * p.MarkUnknown(0x18AE8);
             * p.MarkUnknown(0x18DD0);
             * p.MarkUnknown(0x18F84);
             * p.MarkUnknown(0x18FA4);
             * p.MarkUnknown(0x191B0);
             * p.MarkUnknown(0x19E68);
             * p.MarkUnknown(0x1C850);
             * p.MarkUnknown(0x1D014);
             * p.MarkUnknown(0x1F0AC);
             * p.MarkUnknown(0x1F220);
             * p.MarkUnknown(0x1FC0C);
             * p.MarkUnknown(0x20024);
             * p.MarkUnknown(0x20178);
             * p.MarkUnknown(0x243FC);
             * p.MarkUnknown(0x27CAC);
             * p.MarkUnknown(0x27E10);
             * p.MarkUnknown(0x299B0);
             * p.MarkUnknown(0x299DC);
             * p.MarkUnknown(0x29A3C);
             * p.MarkUnknown(0x2A4CC);
             * p.MarkUnknown(0x2CE28);
             * p.MarkUnknown(0x2E93C);
             * p.MarkUnknown(0x2E9F4);
             * p.MarkUnknown(0x2EB68);
             * p.MarkUnknown(0x2FFDC);
             * p.MarkUnknown(0x2FFF4);
             * p.MarkUnknown(0x2FFFC);
             * p.MarkUnknown(0x31780);
             * p.MarkUnknown(0x31788);
             * p.MarkUnknown(0x31964);
             * p.MarkUnknown(0x32618);
             * p.MarkUnknown(0x32620);
             * p.MarkUnknown(0x32628);
             * p.MarkUnknown(0x32630);
             * p.MarkUnknown(0x32638);
             * p.MarkUnknown(0x32640);
             * p.MarkUnknown(0x32648);
             * p.MarkUnknown(0x32650);
             * p.MarkUnknown(0x32658);
             * p.MarkUnknown(0x32660);
             * p.MarkUnknown(0x32668);
             * p.MarkUnknown(0x32670);
             * p.MarkUnknown(0x32678);
             * p.MarkUnknown(0x32680);
             * p.MarkUnknown(0x32688);
             * p.MarkUnknown(0x32690);
             * p.MarkUnknown(0x32698);
             * p.MarkUnknown(0x326A0);
             * p.MarkUnknown(0x326A8);
             * p.MarkUnknown(0x326B0);
             * p.MarkUnknown(0x327A4);
             * p.MarkUnknown(0x327B4);
             * p.MarkUnknown(0x328E8);
             * p.MarkUnknown(0x34034);
             * p.MarkUnknown(0x34E0C);
             * p.MarkUnknown(0x35DA8);
             * p.MarkUnknown(0x35E80);
             * p.MarkUnknown(0x362B4);
             * p.MarkUnknown(0x36F90);
             * p.MarkUnknown(0x376D8);
             * p.MarkUnknown(0x376E0);
             * p.MarkUnknown(0x37804);
             * p.MarkUnknown(0x38414);
             * p.MarkUnknown(0x38998);
             * p.MarkUnknown(0x38D94);
             * p.MarkUnknown(0x38EAC);
             * p.MarkUnknown(0x38FA0);
             * p.MarkUnknown(0x39198);
             * p.MarkUnknown(0x392A4);
             * p.MarkUnknown(0x3939C);
             * p.MarkUnknown(0x39470);
             * p.MarkUnknown(0x395A8);
             * p.MarkUnknown(0x3975C);
             * p.MarkUnknown(0x3991C);
             * p.MarkUnknown(0x39CAC);
             * p.MarkUnknown(0x39D3C);
             * p.MarkUnknown(0x39DAC);
             * p.MarkUnknown(0x39EA0);
             * p.MarkUnknown(0x3C120);
             * p.MarkUnknown(0x3C198);
             * p.MarkUnknown(0x3E170);
             * p.MarkUnknown(0x3E794);
             * p.MarkUnknown(0x426B8);
             * p.MarkUnknown(0x4573C);
             * p.MarkUnknown(0x46BB4);
             * p.MarkUnknown(0x46BDC);
             * p.MarkUnknown(0x46C4C);
             * p.MarkUnknown(0x46D10);
             * p.MarkUnknown(0x46D44);
             * p.MarkUnknown(0x47190);
             * p.MarkUnknown(0x48B90);
             * p.MarkUnknown(0x49170);
             * p.MarkUnknown(0x49EDC);
             * //p.MarkUnknown(0x49F54);
             * p.MarkUnknown(0x4A100);
             * p.MarkUnknown(0x4A1DC);
             * p.MarkUnknown(0x4A1FC);
             * p.MarkUnknown(0x4A454);
             * p.MarkUnknown(0x4A4BC);
             * //p.MarkUnknown(0x4A52C);
             * p.MarkUnknown(0x4A5FC);
             * p.MarkUnknown(0x4A9D4);
             * p.MarkUnknown(0x4AA34);
             * p.MarkUnknown(0x4AA74);
             * p.MarkUnknown(0x4B0D8);
             * p.MarkUnknown(0x4B478);
             * p.MarkUnknown(0x4B564);
             * p.MarkUnknown(0x4B5CC);
             * p.MarkUnknown(0x4B77C);
             * p.MarkUnknown(0x4B890);
             * p.MarkUnknown(0x4B8CC);
             * p.MarkUnknown(0x4B930);
             * p.MarkUnknown(0x4B958);
             * p.MarkUnknown(0x4B96C);
             * p.MarkUnknown(0x4B9BC);
             * p.MarkUnknown(0x4B9D0);
             * p.MarkUnknown(0x4B9E4);
             * p.MarkUnknown(0x4B9F8);
             * p.MarkUnknown(0x4BA0C);
             * p.MarkUnknown(0x4BA20);
             * p.MarkUnknown(0x4BA34);
             * p.MarkUnknown(0x4BA48);
             * p.MarkUnknown(0x4BA5C);
             * p.MarkUnknown(0x4BA70);
             * p.MarkUnknown(0x4BA84);
             * p.MarkUnknown(0x4BA98);
             * p.MarkUnknown(0x4BFA0);
             * p.MarkUnknown(0x4C118);
             * p.MarkUnknown(0x4C1D4);
             * p.MarkUnknown(0x4C1E4);
             * p.MarkUnknown(0x4C470);
             * p.MarkUnknown(0x4C504);
             * p.MarkUnknown(0x4C72C);
             * p.MarkUnknown(0x4C7E4);
             * p.MarkUnknown(0x4CA54);
             * p.MarkUnknown(0x4CB70);
             * p.MarkUnknown(0x4D050);
             * p.MarkUnknown(0x4D088);
             * p.MarkUnknown(0x4D0B8);
             * p.MarkUnknown(0x4D240);
             * p.MarkUnknown(0x4F500);
             * p.MarkUnknown(0x4F9D0);
             * p.MarkUnknown(0x4FA8C);
             * p.MarkUnknown(0x4FE38);
             * p.MarkUnknown(0x4FF84);
             * p.MarkUnknown(0x4FFC0);
             * p.MarkUnknown(0x50330);
             * p.MarkUnknown(0x519F0);
             * p.MarkUnknown(0x52150);
             * p.MarkUnknown(0x529AC);
             * p.MarkUnknown(0x52B28);
             * p.MarkUnknown(0x52DB0);
             * p.MarkUnknown(0x53390);
             * p.MarkUnknown(0x53408);
             * p.MarkUnknown(0x53830);
             * p.MarkUnknown(0x54B44);
             * p.MarkUnknown(0x54B98);
             * p.MarkUnknown(0x54CA4);
             * p.MarkUnknown(0x550EC);
             * p.MarkUnknown(0x5510C);
             * p.MarkUnknown(0x5514C);
             * p.MarkUnknown(0x56574);
             * p.MarkUnknown(0x5690C);
             * p.MarkUnknown(0x56A84);
             * p.MarkUnknown(0x5817C);
             * p.MarkUnknown(0x59E40);
             * p.MarkUnknown(0x59E88);
             * p.MarkUnknown(0x5AB04);
             * p.MarkUnknown(0x5AB34);
             * p.MarkUnknown(0x1F260);
             * p.MarkUnknown(0x390AC);
             * p.MarkUnknown(0x41FAC);
             * p.MarkUnknown(0x42D50);
             * /*p.MarkUnknown(0x80043C34);
             * p.MarkUnknown(0x800444D0);
             * p.MarkUnknown(0x80044C18);
             * p.MarkUnknown(0x80046C04);
             * p.MarkUnknown(0x80048A9C);
             * p.MarkUnknown(0x80048E60);
             * p.MarkUnknown(0x);
             * p.MarkUnknown(0x);
             * p.MarkUnknown(0x);
             * p.MarkUnknown(0x);
             * p.MarkUnknown(0x);
             * p.MarkUnknown(0x);
             * p.MarkUnknown(0x);
             * p.MarkUnknown(0x);
             * p.MarkUnknown(0x);
             * p.MarkUnknown(0x);
             * p.MarkUnknown(0x);
             * p.MarkUnknown(0x);
             * p.MarkUnknown(0x);
             * p.MarkUnknown(0x);
             * p.MarkUnknown(0x);*/
        }
Exemple #7
0
 public override void Mark(Program p,int address)
 {
     p.MarkDelaySlot(address + 4);
     p.MarkBranch(address + 8);
     p.MarkCall((address & ~0xFFFFFFF) | target << 2,address + 8);
 }
 public override void Mark(Program p, int address)
 {
     base.Mark(p, address);
     p.MarkBranch(address + offset * 4 + 4);
 }
Exemple #9
0
 public override void Mark(Program p, int address)
 {
     p.MarkDelaySlot(address + 4);
     p.MarkBranch(address + 8);
     p.MarkCall((address & ~0xFFFFFFF) | target << 2, address + 8);
 }
Exemple #10
0
 public override void Mark(Program p, int address)
 {
     p.MarkDelaySlot(address + 4);
     p.MarkBranch(address + 8);
 }
Exemple #11
0
 public override void Mark(Program p,int address)
 {
     base.Mark(p,address);
     p.MarkBranch(address + offset * 4 + 4);
 }
Exemple #12
0
 public override void Mark(Program p,int address)
 {
     p.MarkDelaySlot(address + 4);
     p.MarkBranch(address + 8);
 }