amalgamation
[picodrive.git] / Pico / cd / Memory.c
index 564623e..71ec377 100644 (file)
@@ -1,10 +1,6 @@
-// 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
@@ -421,9 +419,9 @@ static void OtherWrite8End(u32 a, u32 d, int realsize)
 \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
@@ -472,17 +470,17 @@ static u8 PicoReadM68k8(u32 a)
 #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
@@ -519,7 +517,7 @@ static u16 PicoReadM68k16(u32 a)
   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
@@ -698,7 +696,7 @@ static void PicoWriteM68k16(u32 a,u16 d)
       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
@@ -782,9 +780,9 @@ static void PicoWriteM68k32(u32 a,u32 d)
 // -----------------------------------------------------------------\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
@@ -872,16 +870,15 @@ static u8 PicoReadS68k8(u32 a)
 #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
@@ -1459,7 +1456,7 @@ static u32 PicoCheckPcS68k(u32 pc)
 #endif\r
 \r
 \r
-void PicoMemSetupCD()\r
+PICO_INTERNAL void PicoMemSetupCD(void)\r
 {\r
   dprintf("PicoMemSetupCD()");\r
 #ifdef EMU_C68K\r