-// This is part of Pico Library\r
-\r
-// (c) Copyright 2004 Dave, All rights reserved.\r
-// (c) Copyright 2007 notaz, All rights reserved.\r
-// Free for non-commercial use.\r
-\r
-// For commercial use, separate licencing terms must be obtained.\r
+// Memory I/O handlers for Sega/Mega CD.\r
+// Loosely based on Gens code.\r
+// (c) Copyright 2007, Grazvydas "notaz" Ignotas\r
\r
// A68K no longer supported here\r
\r
\r
#include "../PicoInt.h"\r
\r
-#include "../sound/sound.h"\r
#include "../sound/ym2612.h"\r
#include "../sound/sn76496.h"\r
\r
#include "gfx_cd.h"\r
#include "pcm.h"\r
\r
+#ifndef UTYPES_DEFINED\r
typedef unsigned char u8;\r
typedef unsigned short u16;\r
typedef unsigned int u32;\r
+#define UTYPES_DEFINED\r
+#endif\r
\r
//#define __debug_io\r
//#define __debug_io2\r
\r
//u8 PicoReadM68k8_(u32 a);\r
#ifdef _ASM_CD_MEMORY_C\r
-u8 PicoReadM68k8(u32 a);\r
+u32 PicoReadM68k8(u32 a);\r
#else\r
-static u8 PicoReadM68k8(u32 a)\r
+static u32 PicoReadM68k8(u32 a)\r
{\r
u32 d=0;\r
\r
#ifdef __debug_io\r
dprintf("r8 : %06x, %02x @%06x", a&0xffffff, (u8)d, SekPc);\r
#endif\r
- return (u8)d;\r
+ return d;\r
}\r
#endif\r
\r
\r
#ifdef _ASM_CD_MEMORY_C\r
-u16 PicoReadM68k16(u32 a);\r
+u32 PicoReadM68k16(u32 a);\r
#else\r
-static u16 PicoReadM68k16(u32 a)\r
+static u32 PicoReadM68k16(u32 a)\r
{\r
- u16 d=0;\r
+ u32 d=0;\r
\r
if ((a&0xe00000)==0xe00000) { d=*(u16 *)(Pico.ram+(a&0xfffe)); goto end; } // Ram\r
\r
if ((a&0xffffc0)==0xa12000)\r
rdprintf("m68k_regs r16: [%02x] @%06x", a&0x3f, SekPc);\r
\r
- d = (u16)OtherRead16(a, 16);\r
+ d = OtherRead16(a, 16);\r
\r
if ((a&0xffffc0)==0xa12000)\r
rdprintf("ret = %04x", d);\r
return;\r
}\r
\r
- OtherWrite8(a,d,8);\r
+ OtherWrite8(a,d);\r
}\r
#endif\r
\r
Pico_mcd->s68k_regs[0xe] = d >> 8;\r
#ifdef USE_POLL_DETECT\r
if ((s68k_poll_adclk&0xfe) == 0xe && s68k_poll_cnt > POLL_LIMIT) {\r
- SekSetStopS68k(0); s68k_poll_adclk = -1;\r
+ SekSetStopS68k(0); s68k_poll_adclk = 0;\r
plprintf("s68k poll release, a=%02x\n", a);\r
}\r
#endif\r
// -----------------------------------------------------------------\r
\r
#ifdef _ASM_CD_MEMORY_C\r
-u8 PicoReadS68k8(u32 a);\r
+u32 PicoReadS68k8(u32 a);\r
#else\r
-static u8 PicoReadS68k8(u32 a)\r
+static u32 PicoReadS68k8(u32 a)\r
{\r
u32 d=0;\r
\r
#ifdef __debug_io2\r
dprintf("s68k r8 : %06x, %02x @%06x", a&0xffffff, (u8)d, SekPcS68k);\r
#endif\r
- return (u8)d;\r
+ return d;\r
}\r
#endif\r
\r
\r
-//u16 PicoReadS68k16_(u32 a);\r
#ifdef _ASM_CD_MEMORY_C\r
-u16 PicoReadS68k16(u32 a);\r
+u32 PicoReadS68k16(u32 a);\r
#else\r
-static u16 PicoReadS68k16(u32 a)\r
+static u32 PicoReadS68k16(u32 a)\r
{\r
u32 d=0;\r
\r
#endif\r
\r
\r
-void PicoMemSetupCD()\r
+PICO_INTERNAL void PicoMemSetupCD(void)\r
{\r
dprintf("PicoMemSetupCD()");\r
#ifdef EMU_C68K\r