int PadRead(int i)\r
{\r
int pad,value,data_reg;\r
- pad=~PicoPad[i]; // Get inverse of pad MXYZ SACB RLDU\r
+ pad=~PicoPadInt[i]; // Get inverse of pad MXYZ SACB RLDU\r
data_reg=Pico.ioports[i+1];\r
\r
// orr the bits, which are set as output\r
\r
static void PicoWrite32(u32 a,u32 d)\r
{\r
- elprintf(EL_IO, "w32: %06x, %08x", a&0xffffff, d);\r
+ elprintf(EL_IO, "w32: %06x, %08x @%06x", a&0xffffff, d, SekPc);\r
#ifdef EMU_CORE_DEBUG\r
lastwrite_cyc_d[lwp_cyc++&15] = d;\r
#endif\r
int PicoSkipFrame = 0; // skip rendering frame?\r
int emustatus = 0; // rapid_ym2612, multi_ym_updates\r
int PicoPad[2]; // Joypads, format is SACB RLDU\r
+int PicoPadInt[2]; // internal copy\r
int PicoAHW = 0; // active addon hardware: scd_active, 32x_active, svp_active, pico_active\r
int PicoRegionOverride = 0; // override the region detection 0: Auto, 1: Japan NTSC, 2: Japan PAL, 4: US, 8: Europe\r
int PicoAutoRgnOrder = 0;\r
// Blank space for state:\r
memset(&Pico,0,sizeof(Pico));\r
memset(&PicoPad,0,sizeof(PicoPad));\r
+ memset(&PicoPadInt,0,sizeof(PicoPadInt));\r
\r
// Init CPUs:\r
SekInit();\r
\r
PicoMemReset();\r
SekReset();\r
+ memset(&PicoPadInt,0,sizeof(PicoPadInt));\r
// s68k doesn't have the TAS quirk, so we just globally set normal TAS handler in MCD mode (used by Batman games).\r
SekSetRealTAS(PicoAHW & PAHW_MCD);\r
SekCycleCntT=0;\r
pv->lwrite_cnt=0;
Pico.video.status|=0x200;
+ memcpy(PicoPadInt, PicoPad, sizeof(PicoPadInt));
PAD_DELAY
#ifdef PICO_CD
check_cd_dma();
// Pico.c\r
extern struct Pico Pico;\r
extern struct PicoSRAM SRam;\r
+extern int PicoPadInt[2];\r
extern int emustatus;\r
extern void (*PicoResetHook)(void);\r
extern void (*PicoLineHook)(void);\r
PICO_INTERNAL int SekReset(void);\r
PICO_INTERNAL void SekState(int *data);\r
PICO_INTERNAL void SekSetRealTAS(int use_real);\r
+void SekStepM68k(void);\r
void SekInitIdleDet(void);\r
void SekFinishIdleDet(void);\r
\r
return 0;\r
}\r
\r
+void SekStepM68k(void)\r
+{\r
+ SekCycleAim=SekCycleCnt+1;\r
+#if defined(EMU_CORE_DEBUG)\r
+ SekCycleCnt+=CM_compareRun(1, 0);\r
+#elif defined(EMU_C68K)\r
+ PicoCpuCM68k.cycles=1;\r
+ CycloneRun(&PicoCpuCM68k);\r
+ SekCycleCnt+=1-PicoCpuCM68k.cycles;\r
+#elif defined(EMU_M68K)\r
+ SekCycleCnt+=m68k_execute(1);\r
+#elif defined(EMU_F68K)\r
+ SekCycleCnt+=fm68k_emulate(1, 0);\r
+#endif\r
+}\r
\r
PICO_INTERNAL void SekSetRealTAS(int use_real)\r
{\r
#endif\r
}\r
\r
+\r
/* idle loop detection, not to be used in CD mode */\r
#ifdef EMU_C68K\r
#include "cpu/Cyclone/tools/idle.h"\r