void M68K_SetRegister(const unsigned int id, uint32 value) { if(id == C68K_GSREG_PC) { C68k_Set_PC(&Main68K, value); } }
static void C68k_Load_State(c68k_struc *mcpu, FILE * fp) { IOCheck_struct check = { 0, 0 }; int i = 0; u32 pc = 0; for (i = 0; i < 8; i++) yread(&check, (void *)&mcpu->D[i], sizeof(u32), 1, fp); for (i = 0; i < 8; i++) yread(&check, (void *)&mcpu->A[i], sizeof(u32), 1, fp); yread(&check, (void *)&mcpu->flag_C, sizeof(u32), 1, fp); yread(&check, (void *)&mcpu->flag_V, sizeof(u32), 1, fp); yread(&check, (void *)&mcpu->flag_notZ, sizeof(u32), 1, fp); yread(&check, (void *)&mcpu->flag_N, sizeof(u32), 1, fp); yread(&check, (void *)&mcpu->flag_X, sizeof(u32), 1, fp); yread(&check, (void *)&mcpu->flag_I, sizeof(u32), 1, fp); yread(&check, (void *)&mcpu->flag_S, sizeof(u32), 1, fp); yread(&check, (void *)&mcpu->USP, sizeof(u32), 1, fp); yread(&check, (void *)&pc, sizeof(u32), 1, fp); C68k_Set_PC(&C68K, pc); yread(&check, (void *)&mcpu->Status, sizeof(u32), 1, fp); yread(&check, (void *)&mcpu->IRQLine, sizeof(s32), 1, fp); yread(&check, (void *)&mcpu->CycleToDo, sizeof(s32), 1, fp); yread(&check, (void *)&mcpu->CycleIO, sizeof(s32), 1, fp); yread(&check, (void *)&mcpu->CycleSup, sizeof(s32), 1, fp); yread(&check, (void *)&mcpu->dirty1, sizeof(u32), 1, fp); }
void M68K_SetPC(u32 val) { #ifdef CPU68K_USE_MUSASHI m68k_set_reg(M68K_REG_PC, val); #endif #ifdef CPU68K_USE_C68K C68k_Set_PC(&C68K, val); #endif }
s32 C68K_FASTCALL C68k_Reset(c68k_struc *cpu) { //memset(cpu, 0, (u32)(&(cpu->dirty1)) - (u32)(&(cpu->D[0]))); memset(cpu, 0, ((u8 *)&(cpu->dirty1)) - ((u8 *)&(cpu->D[0]))); cpu->flag_I = 7; cpu->flag_S = C68K_SR_S; cpu->A[7] = C68k_Read_Long(cpu, 0); C68k_Set_PC(cpu, C68k_Read_Long(cpu, 4)); return cpu->Status; }
int WinX68k_Reset(void) { OPM_Reset(); #ifdef CYCLONE m68000_reset(); m68000_set_reg(M68K_A7, (IPL[0x30001]<<24)|(IPL[0x30000]<<16)|(IPL[0x30003]<<8)|IPL[0x30002]); m68000_set_reg(M68K_PC, (IPL[0x30005]<<24)|(IPL[0x30004]<<16)|(IPL[0x30007]<<8)|IPL[0x30006]); #else C68k_Reset(&C68K); /* C68k_Set_Reg(&C68K, C68K_A7, (IPL[0x30001]<<24)|(IPL[0x30000]<<16)|(IPL[0x30003]<<8)|IPL[0x30002]); C68k_Set_Reg(&C68K, C68K_PC, (IPL[0x30005]<<24)|(IPL[0x30004]<<16)|(IPL[0x30007]<<8)|IPL[0x30006]); */ C68k_Set_AReg(&C68K, 7, (IPL[0x30001]<<24)|(IPL[0x30000]<<16)|(IPL[0x30003]<<8)|IPL[0x30002]); C68k_Set_PC(&C68K, (IPL[0x30005]<<24)|(IPL[0x30004]<<16)|(IPL[0x30007]<<8)|IPL[0x30006]); #endif Memory_Init(); CRTC_Init(); DMA_Init(); MFP_Init(); FDC_Init(); FDD_Reset(); SASI_Init(); SCSI_Init(); IOC_Init(); SCC_Init(); PIA_Init(); RTC_Init(); TVRAM_Init(); GVRAM_Init(); BG_Init(); Pal_Init(); IRQH_Init(); MIDI_Init(); //WinDrv_Init(); //C68K.ICount = 0; m68000_ICountBk = 0; ICount = 0; DSound_Stop(); SRAM_VirusCheck(); //CDROM_Init(); DSound_Play(); return TRUE; }
static void M68KC68KSetPC(u32 val) { C68k_Set_PC(&C68K, val); }