Example #1
0
        public void PeekSequentialInstructions()
        {
            NextInstructions.Clear();

            string            instructionText;
            UInt32            rawInstr;
            StoredInstruction newInstruction;

            UInt32 instrSize = (UInt32)(gba.Cpu.State == Cpu.CpuState.Arm ? 4 : 2);
            UInt32 adjust    = 0;

            int instructionPtr = gba.Cpu.NextPipelineInsturction;

            // Inefficient but we are not running at this point so what the hell
            rawInstr        = gba.Cpu.InstructionPipeline[instructionPtr];
            instructionText = gba.Cpu.State == Cpu.CpuState.Arm ? gba.Cpu.PeekArmInstruction(rawInstr) : gba.Cpu.PeekThumbInstruction((ushort)rawInstr);
            newInstruction  = new StoredInstruction(rawInstr, instructionText, gba.Cpu.PC_Adjusted);
            NextInstructions.Add(newInstruction);

            instructionPtr++;
            if (instructionPtr >= Cpu.Pipeline_Size)
            {
                instructionPtr = 0;
            }
            adjust += instrSize;

            rawInstr        = gba.Cpu.InstructionPipeline[instructionPtr];
            instructionText = gba.Cpu.State == Cpu.CpuState.Arm ? gba.Cpu.PeekArmInstruction(rawInstr) : gba.Cpu.PeekThumbInstruction((ushort)rawInstr);
            newInstruction  = new StoredInstruction(rawInstr, instructionText, (UInt32)(gba.Cpu.PC_Adjusted + adjust));
            NextInstructions.Add(newInstruction);

            instructionPtr++;
            if (instructionPtr >= Cpu.Pipeline_Size)
            {
                instructionPtr = 0;
            }
            adjust += instrSize;

            rawInstr        = gba.Cpu.InstructionPipeline[instructionPtr];
            instructionText = gba.Cpu.State == Cpu.CpuState.Arm ? gba.Cpu.PeekArmInstruction(rawInstr) : gba.Cpu.PeekThumbInstruction((ushort)rawInstr);
            newInstruction  = new StoredInstruction(rawInstr, instructionText, (UInt32)(gba.Cpu.PC_Adjusted + adjust));
            NextInstructions.Add(newInstruction);
        }
Example #2
0
        public void PeekSequentialInstructions()
        {
            NextInstructions.Clear();

            string            instructionText;
            UInt32            rawInstr;
            StoredInstruction newInstruction;

            UInt32 instrSize = (UInt32)(gba.Cpu.State == Cpu.CpuState.Arm ? 4 : 2);
            UInt32 adjust    = 0;

            int instructionPtr = gba.Cpu.NextPipelineInsturction;

            // Inefficient but we are not running at this point so what the hell
            rawInstr        = gba.Cpu.InstructionPipeline[instructionPtr];
            instructionText = gba.Cpu.State == Cpu.CpuState.Arm ? gba.Cpu.PeekArmInstruction(rawInstr) : gba.Cpu.PeekThumbInstruction((ushort)rawInstr);
            newInstruction  = new StoredInstruction(rawInstr, instructionText, gba.Cpu.PC_Adjusted);
            NextInstructions.Add(newInstruction);

            instructionPtr++;
            if (instructionPtr >= Cpu.Pipeline_Size)
            {
                instructionPtr = 0;
            }
            adjust += instrSize;

            rawInstr        = gba.Cpu.InstructionPipeline[instructionPtr];
            instructionText = gba.Cpu.State == Cpu.CpuState.Arm ? gba.Cpu.PeekArmInstruction(rawInstr) : gba.Cpu.PeekThumbInstruction((ushort)rawInstr);
            newInstruction  = new StoredInstruction(rawInstr, instructionText, (UInt32)(gba.Cpu.PC_Adjusted + adjust));
            NextInstructions.Add(newInstruction);

            instructionPtr++;
            if (instructionPtr >= Cpu.Pipeline_Size)
            {
                instructionPtr = 0;
            }
            adjust += instrSize;

            rawInstr        = gba.Cpu.InstructionPipeline[instructionPtr];
            instructionText = gba.Cpu.State == Cpu.CpuState.Arm ? gba.Cpu.PeekArmInstruction(rawInstr) : gba.Cpu.PeekThumbInstruction((ushort)rawInstr);
            newInstruction  = new StoredInstruction(rawInstr, instructionText, (UInt32)(gba.Cpu.PC_Adjusted + adjust));
            NextInstructions.Add(newInstruction);

            /*
             * UInt32 lookAheadBytes = 0;
             * for (int i = 0; i < Cpu.Pipeline_Size; i++)
             * {
             *  UInt32 pc = (UInt32)(gba.Cpu.PC_Adjusted + lookAheadBytes);
             *  UInt32 rawInstr = gba.Memory.ReadWord(pc);
             *  lookAheadBytes+= 4;
             *
             *  string instructionText;
             *  try
             *  {
             *      instructionText = gba.Cpu.PeekArmInstruction(rawInstr);
             *      var newInstruction = new StoredInstruction(instructionText, pc);
             *      NextInstructions.Add(newInstruction);
             *  }
             *  catch (ArgumentException) { }
             * }
             */
        }