Beispiel #1
0
void M68K_SetRegister(const unsigned int id, uint32 value)
{
 if(id == C68K_GSREG_PC)
 {
  C68k_Set_PC(&Main68K, value);
 } 
}
Beispiel #2
0
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);
}
Beispiel #3
0
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
}
Beispiel #4
0
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;
}
Beispiel #5
0
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;
}
Beispiel #6
0
static void M68KC68KSetPC(u32 val) {
	C68k_Set_PC(&C68K, val);
}