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); }
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); }
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 }
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); }
static u32 M68KC68KGetPC(void) { return C68k_Get_PC(&C68K); }