X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2F32x%2F32x.c;h=26162e49582b7a4c5289d723e9c808cb71163870;hb=14caeebcc7fc4a73731eec05c1c6150fa29d1374;hp=92d5216d59efce0beeb898de81f5fb998786d92d;hpb=0185b677364b849e1e11f523d9f025d90ce86770;p=picodrive.git diff --git a/pico/32x/32x.c b/pico/32x/32x.c index 92d5216..26162e4 100644 --- a/pico/32x/32x.c +++ b/pico/32x/32x.c @@ -109,6 +109,10 @@ void Pico32xStartup(void) p32x_pwm_ctl_changed(); p32x_timers_recalc(); + Pico32x.sh2_regs[0] = P32XS2_ADEN; + if (Pico.m.ncart_in) + Pico32x.sh2_regs[0] |= P32XS_nCART; + if (!Pico.m.pal) Pico32x.vdp_regs[0] |= P32XV_nPAL; @@ -183,7 +187,6 @@ void PicoPower32x(void) Pico32x.regs[0] = P32XS_REN|P32XS_nRES; // verified Pico32x.vdp_regs[0x0a/2] = P32XV_VBLK|P32XV_PEN; - Pico32x.sh2_regs[0] = P32XS2_ADEN; } void PicoUnload32x(void) @@ -200,7 +203,6 @@ void PicoUnload32x(void) void PicoReset32x(void) { if (PicoAHW & PAHW_32X) { - msh2.m68krcycles_done = ssh2.m68krcycles_done = SekCyclesDone(); p32x_trigger_irq(NULL, SekCyclesDone(), P32XI_VRES); p32x_sh2_poll_event(&msh2, SH2_IDLE_STATES, 0); p32x_sh2_poll_event(&ssh2, SH2_IDLE_STATES, 0); @@ -516,7 +518,11 @@ void sync_sh2s_lockstep(unsigned int m68k_target) } #define CPUS_RUN(m68k_cycles) do { \ - SekRunM68k(m68k_cycles); \ + if (PicoAHW & PAHW_MCD) \ + pcd_run_cpus(m68k_cycles); \ + else \ + SekRunM68k(m68k_cycles); \ + \ if ((Pico32x.emu_flags & P32XF_Z80_32X_IO) && Pico.m.z80Run \ && !Pico.m.z80_reset && (PicoOpt & POPT_EN_Z80)) \ PicoSyncZ80(SekCyclesDone()); \ @@ -525,6 +531,7 @@ void sync_sh2s_lockstep(unsigned int m68k_target) } while (0) #define PICO_32X +#define PICO_CD #include "../pico_cmn.c" void PicoFrame32x(void) @@ -540,6 +547,9 @@ void PicoFrame32x(void) p32x_sh2_poll_event(&msh2, SH2_STATE_VPOLL, 0); p32x_sh2_poll_event(&ssh2, SH2_STATE_VPOLL, 0); + if (PicoAHW & PAHW_MCD) + pcd_prepare_frame(); + PicoFrameStart(); PicoFrameHints(); sh2_drc_frame();