extern "C" {\r
#endif\r
\r
+// message log\r
+extern void lprintf(const char *fmt, ...);\r
+\r
// external funcs for Sega/Mega CD\r
extern int mp3_get_bitrate(void *f, int size);\r
extern void mp3_start_play(void *f, int pos);\r
// this function should write-back d-cache and invalidate i-cache\r
// on a mem region [start_addr, end_addr)\r
// used by dynarecs\r
-extern void cache_flush_d_inval_i(const void *start_addr, const void *end_addr);\r
+extern void cache_flush_d_inval_i(void *start_addr, void *end_addr);\r
\r
// attempt to alloc mem at specified address.\r
// alloc anywhere else if that fails (callers should handle that)\r
extern void *plat_mmap(unsigned long addr, size_t size, int need_exec, int is_fixed);\r
extern void *plat_mremap(void *ptr, size_t oldsize, size_t newsize);\r
extern void plat_munmap(void *ptr, size_t size);\r
+extern int plat_mem_set_exec(void *ptr, size_t size);\r
\r
// this one should handle display mode changes\r
extern void emu_video_mode_change(int start_line, int line_count, int is_32cols);\r
extern void (*PicoPrepareCram)(); // prepares PicoCramHigh for renderer to use\r
\r
// pico.c (32x)\r
-// multipliers against 68k clock\r
-extern int p32x_msh2_multiplier;\r
-extern int p32x_ssh2_multiplier;\r
-#define SH2_MULTI_SHIFT 10\r
-#define MSH2_MULTI_DEFAULT ((1 << SH2_MULTI_SHIFT) * 21 / 10)\r
-#define SSH2_MULTI_DEFAULT ((1 << SH2_MULTI_SHIFT) * 3 / 2)\r
+#ifndef NO_32X\r
+\r
+void Pico32xSetClocks(int msh2_hz, int ssh2_hz);\r
\r
// 32x/draw.c\r
void PicoDraw32xSetFrameMode(int is_on, int only_32x);\r
\r
+#else\r
+\r
+#define Pico32xSetClocks(msh2_khz, ssh2_khz)\r
+\r
+#endif\r
+\r
+// normally 68k clock (7670442) * 3, in reality but much lower\r
+// because of high memory latencies\r
+#define PICO_MSH2_HZ ((int)(7670442.0 * 2.4))\r
+#define PICO_SSH2_HZ ((int)(7670442.0 * 2.4))\r
+\r
// sound.c\r
extern int PsndRate,PsndLen;\r
extern short *PsndOut;\r