Example #1
0
void MDDBG_CPUHook(void)	//uint32 PC, uint16 op)
{
 uint32 PC = C68k_Get_PC(&Main68K);
 std::vector<MD_BPOINT>::iterator bpit;

 FoundBPoint = 0;

 for(bpit = BreakPointsPC.begin(); bpit != BreakPointsPC.end(); bpit++)
 {
  if(PC >= bpit->A[0] && PC <= bpit->A[1])
  {
   FoundBPoint = TRUE;
   break;
  }
 }

 if(BPNonPCActive)
 {
  MD_HackyHackyMode++;

  C68k_Copy_State2(&Main68K, &Main68K_BP);

  //printf("Moo: %08x\n", C68k_Get_PC(&Main68K_BP)); //, (int)(((uint8 *)&(Main68K.dirty1)) - ((uint8 *)&(Main68K.D[0]))));

  C68k_Exec(&Main68K_BP);

  MD_HackyHackyMode--;
 }

 if(FoundBPoint)
  BPCallB(PC);

 if(DriverCPUHook)
  DriverCPUHook(PC);
}
Example #2
0
static void C68k_Save_State(c68k_struc *mcpu, FILE * fp)
{
   IOCheck_struct check = { 0, 0 };
   int i = 0;
   u32 pc = 0;

   for (i = 0; i < 8; i++)
      ywrite(&check, (void *)&mcpu->D[i], sizeof(u32), 1, fp);

   for (i = 0; i < 8; i++)
      ywrite(&check, (void *)&mcpu->A[i], sizeof(u32), 1, fp);

   ywrite(&check, (void *)&mcpu->flag_C, sizeof(u32), 1, fp);
   ywrite(&check, (void *)&mcpu->flag_V, sizeof(u32), 1, fp);
   ywrite(&check, (void *)&mcpu->flag_notZ, sizeof(u32), 1, fp);
   ywrite(&check, (void *)&mcpu->flag_N, sizeof(u32), 1, fp);

   ywrite(&check, (void *)&mcpu->flag_X, sizeof(u32), 1, fp);
   ywrite(&check, (void *)&mcpu->flag_I, sizeof(u32), 1, fp);
   ywrite(&check, (void *)&mcpu->flag_S, sizeof(u32), 1, fp);

   ywrite(&check, (void *)&mcpu->USP, sizeof(u32), 1, fp);

   pc = C68k_Get_PC(&C68K);

   ywrite(&check, (void *)&pc, sizeof(u32), 1, fp);

   ywrite(&check, (void *)&mcpu->Status, sizeof(u32), 1, fp);
   ywrite(&check, (void *)&mcpu->IRQLine, sizeof(s32), 1, fp);

   ywrite(&check, (void *)&mcpu->CycleToDo, sizeof(s32), 1, fp);
   ywrite(&check, (void *)&mcpu->CycleIO, sizeof(s32), 1, fp);
   ywrite(&check, (void *)&mcpu->CycleSup, sizeof(s32), 1, fp);
   ywrite(&check, (void *)&mcpu->dirty1, sizeof(u32), 1, fp);
}
Example #3
0
inline u32 M68K_GetPC(void)
{
#ifdef CPU68K_USE_MUSASHI
    return m68k_get_reg(NULL, M68K_REG_PC);
#endif

#ifdef CPU68K_USE_C68K
    return C68k_Get_PC(&C68K);
#endif
}
Example #4
0
static uint32 M68K_GetRegister(const unsigned int id, char *special, const uint32 special_len)
{
 uint32 ret = 0xDEADBEEF;

 if(id == C68K_GSREG_PC)
 {
  ret = C68k_Get_PC(&Main68K);
 } 
 else if(id == C68K_GSREG_SR)
 {
  ret = C68k_Get_SR(&Main68K);
 }
 else if(id >= C68K_GSREG_D0 && id <= C68K_GSREG_D7)
 {
  ret = C68k_Get_DReg(&Main68K, id - C68K_GSREG_D0);
 }
 else if(id >= C68K_GSREG_A0 && id <= C68K_GSREG_A7)
 {
  ret = C68k_Get_AReg(&Main68K, id - C68K_GSREG_A0);
 }
 return(ret);
}
Example #5
0
static u32 M68KC68KGetPC(void) {
	return C68k_Get_PC(&C68K);
}