Exemplo n.º 1
0
        public static string GetInstruction(int offset)
        {
            switch (Data.GetArchitechture(offset))
            {
            case Data.Architechture.CPU65C816: return(CPU65C816.GetInstruction(offset));

            case Data.Architechture.APUSPC700: return("");

            case Data.Architechture.GPUSuperFX: return("");
            }
            return("");
        }
Exemplo n.º 2
0
        public static int GetEffectiveAddress(int offset)
        {
            switch (Data.GetArchitechture(offset))
            {
            case Data.Architechture.CPU65C816: return(CPU65C816.GetEffectiveAddress(offset));

            case Data.Architechture.APUSPC700: return(-1);

            case Data.Architechture.GPUSuperFX: return(-1);
            }
            return(-1);
        }
Exemplo n.º 3
0
        public static int GetIntermediateAddress(int offset, bool resolve = false)
        {
            // FIX ME: log and generation of dp opcodes. search references
            switch (Data.GetArchitechture(offset))
            {
            case Data.Architechture.CPU65C816: return(CPU65C816.GetIntermediateAddress(offset, resolve));

            case Data.Architechture.APUSPC700: return(-1);

            case Data.Architechture.GPUSuperFX: return(-1);
            }
            return(-1);
        }
Exemplo n.º 4
0
        public static int Step(int offset, bool branch, bool force, int prevOffset)
        {
            Project.unsavedChanges = true;
            switch (Data.GetArchitechture(offset))
            {
            case Data.Architechture.CPU65C816: return(CPU65C816.Step(offset, branch, force, prevOffset));

            case Data.Architechture.APUSPC700: return(offset);

            case Data.Architechture.GPUSuperFX: return(offset);
            }
            return(offset);
        }
Exemplo n.º 5
0
        public static void RescanInOutPoints()
        {
            for (int i = 0; i < Data.GetROMSize(); i++)
            {
                Data.ClearInOutPoint(i);
            }

            for (int i = 0; i < Data.GetROMSize(); i++)
            {
                if (Data.GetFlag(i) == Data.FlagType.Opcode)
                {
                    switch (Data.GetArchitechture(i))
                    {
                    case Data.Architechture.CPU65C816: CPU65C816.MarkInOutPoints(i); break;

                    case Data.Architechture.APUSPC700: break;

                    case Data.Architechture.GPUSuperFX: break;
                    }
                }
            }

            Project.unsavedChanges = true;
        }
Exemplo n.º 6
0
        private static int GetLineByteLength(int offset)
        {
            int max = 1, step = 1;
            int size = Data.GetROMSize();

            switch (Data.GetFlag(offset))
            {
            case Data.FlagType.Opcode:
                switch (Data.GetArchitechture(offset))
                {
                case Data.Architechture.CPU65C816: return(CPU65C816.GetInstructionLength(offset));

                case Data.Architechture.APUSPC700: return(1);

                case Data.Architechture.GPUSuperFX: return(1);
                }
                return(1);

            case Data.FlagType.Unreached:
            case Data.FlagType.Operand:
            case Data.FlagType.Data8Bit:
            case Data.FlagType.Graphics:
            case Data.FlagType.Music:
            case Data.FlagType.Empty:
                max = dataPerLine;
                break;

            case Data.FlagType.Text:
                max = 21;
                break;

            case Data.FlagType.Data16Bit:
                step = 2;
                max  = dataPerLine;
                break;

            case Data.FlagType.Data24Bit:
                step = 3;
                max  = dataPerLine;
                break;

            case Data.FlagType.Data32Bit:
                step = 4;
                max  = dataPerLine;
                break;

            case Data.FlagType.Pointer16Bit:
                step = 2;
                max  = 2;
                break;

            case Data.FlagType.Pointer24Bit:
                step = 3;
                max  = 3;
                break;

            case Data.FlagType.Pointer32Bit:
                step = 4;
                max  = 4;
                break;
            }

            int min = step, myBank = offset / bankSize;

            while (
                min < max &&
                offset + min < size &&
                Data.GetFlag(offset + min) == Data.GetFlag(offset) &&
                Data.GetLabel(Util.ConvertPCtoSNES(offset + min)) == "" &&
                (offset + min) / bankSize == myBank
                )
            {
                min += step;
            }
            return(min);
        }