#include <stdio.h>\r
#include <stdlib.h>\r
#include <string.h>\r
+#include "pico_port.h"\r
#include "pico.h"\r
#include "carthw/carthw.h"\r
\r
#define SekNotPolling PicoCpuMM68k.not_polling\r
#define SekNotPollingS68k PicoCpuMS68k.not_polling\r
\r
-#define SekInterrupt(irq) { \\r
- void *oldcontext = m68ki_cpu_p; \\r
- m68k_set_context(&PicoCpuMM68k); \\r
- m68k_set_irq(irq); \\r
- m68k_set_context(oldcontext); \\r
-}\r
-#define SekIrqLevel (PicoCpuMM68k.int_level >> 8)\r
+// avoid m68k_set_irq() for delaying to work\r
+#define SekInterrupt(irq) PicoCpuMM68k.int_level = (irq) << 8\r
+#define SekIrqLevel (PicoCpuMM68k.int_level >> 8)\r
\r
#endif\r
#endif // EMU_M68K\r
#define SR_EMPT (1 << 9)\r
// not part of real SR\r
#define PVS_ACTIVE (1 << 16)\r
+#define PVS_VB2 (1 << 17) // ignores forced blanking\r
\r
struct PicoVideo\r
{\r
unsigned short HighPal[0x100];\r
};\r
\r
-// some assembly stuff still depends on these, do not touch!\r
struct PicoMem\r
{\r
unsigned char ram[0x10000]; // 0x00000 scratch ram\r
};\r
unsigned char zram[0x2000]; // 0x20000 Z80 ram\r
unsigned char ioports[0x10]; // XXX: fix asm and mv\r
- unsigned char pad[0xf0]; // unused\r
- unsigned short cram[0x40]; // 0x22100\r
- unsigned short vsram[0x40]; // 0x22180\r
+ unsigned short cram[0x40]; // 0x22010\r
+ unsigned char pad[0x70]; // 0x22050 DrawStripVSRam reads 0 from here\r
+ unsigned short vsram[0x40]; // 0x22100\r
};\r
\r
// sram\r
#define pevt_dump()\r
#endif\r
\r
-// misc\r
-#ifdef _MSC_VER\r
-#define cdprintf\r
-#else\r
-#define cdprintf(x...)\r
-#endif\r
-\r
-#if defined(__GNUC__) && defined(__i386__)\r
-#define REGPARM(x) __attribute__((regparm(x)))\r
-#else\r
-#define REGPARM(x)\r
-#endif\r
-\r
-#ifdef __GNUC__\r
-#define NOINLINE __attribute__((noinline))\r
-#else\r
-#define NOINLINE\r
-#endif\r
-\r
#ifdef __cplusplus\r
} // End of extern "C"\r
#endif\r