// This is part of Pico Library\r
\r
// (c) Copyright 2004 Dave, All rights reserved.\r
-// (c) Copyright 2006 notaz, All rights reserved.\r
+// (c) Copyright 2006,2007 notaz, All rights reserved.\r
// Free for non-commercial use.\r
\r
// For commercial use, separate licencing terms must be obtained.\r
\r
\r
-//#define __debug_io\r
-\r
#include "PicoInt.h"\r
\r
#include "sound/ym2612.h"\r
}\r
\r
// for nonstandard reads\r
-#ifndef _ASM_MEMORY_C\r
-static\r
-#endif\r
-u32 OtherRead16End(u32 a, int realsize)\r
+static u32 OtherRead16End(u32 a, int realsize)\r
{\r
u32 d=0;\r
\r
Pico.m.prot_bytes[(a>>2)&1] = (u8)d;\r
}\r
\r
-\r
#include "MemoryCmn.c"\r
\r
\r
if ((a&1)==0) d>>=8;\r
\r
end:\r
-#ifdef __debug_io\r
- dprintf("r8 : %06x, %02x @%06x", a&0xffffff, (u8)d, SekPc);\r
-#endif\r
+ elprintf(EL_IO, "r8 : %06x, %02x @%06x", a&0xffffff, (u8)d, SekPc);\r
#ifdef EMU_CORE_DEBUG\r
if (a>=Pico.romsize) {\r
lastread_a = a;\r
else d = OtherRead16(a, 16);\r
\r
end:\r
-#ifdef __debug_io\r
- dprintf("r16: %06x, %04x @%06x", a&0xffffff, d, SekPc);\r
-#endif\r
+ elprintf(EL_IO, "r16: %06x, %04x @%06x", a&0xffffff, d, SekPc);\r
#ifdef EMU_CORE_DEBUG\r
if (a>=Pico.romsize) {\r
lastread_a = a;\r
else d = (OtherRead16(a, 32)<<16)|OtherRead16(a+2, 32);\r
\r
end:\r
-#ifdef __debug_io\r
- dprintf("r32: %06x, %08x @%06x", a&0xffffff, d, SekPc);\r
-#endif\r
+ elprintf(EL_IO, "r32: %06x, %08x @%06x", a&0xffffff, d, SekPc);\r
#ifdef EMU_CORE_DEBUG\r
if (a>=Pico.romsize) {\r
lastread_a = a;\r
#if !defined(_ASM_MEMORY_C) || defined(_ASM_MEMORY_C_AMIPS)\r
PICO_INTERNAL_ASM void PicoWrite8(u32 a,u8 d)\r
{\r
-#ifdef __debug_io\r
- dprintf("w8 : %06x, %02x @%06x", a&0xffffff, d, SekPc);\r
-#endif\r
+ elprintf(EL_IO, "w8 : %06x, %02x @%06x", a&0xffffff, d, SekPc);\r
#ifdef EMU_CORE_DEBUG\r
lastwrite_cyc_d[lwp_cyc++&15] = d;\r
#endif\r
\r
void PicoWrite16(u32 a,u16 d)\r
{\r
-#ifdef __debug_io\r
- dprintf("w16: %06x, %04x", a&0xffffff, d);\r
-#endif\r
+ elprintf(EL_IO, "w16: %06x, %04x", a&0xffffff, d);\r
#ifdef EMU_CORE_DEBUG\r
lastwrite_cyc_d[lwp_cyc++&15] = d;\r
#endif\r
\r
static void PicoWrite32(u32 a,u32 d)\r
{\r
-#ifdef __debug_io\r
- dprintf("w32: %06x, %08x", a&0xffffff, d);\r
-#endif\r
+ elprintf(EL_IO, "w32: %06x, %08x", a&0xffffff, d);\r
#ifdef EMU_CORE_DEBUG\r
lastwrite_cyc_d[lwp_cyc++&15] = d;\r
#endif\r
\r
\r
// -----------------------------------------------------------------\r
+\r
+// TODO: asm code\r
+static void OtherWrite16End(u32 a,u32 d,int realsize)\r
+{\r
+ PicoWrite8Hook(a, d>>8, realsize);\r
+ PicoWrite8Hook(a+1,d&0xff, realsize);\r
+}\r
+\r
+u32 (*PicoRead16Hook) (u32 a, int realsize) = OtherRead16End;\r
+void (*PicoWrite8Hook) (u32 a, u32 d, int realsize) = OtherWrite8End;\r
+void (*PicoWrite16Hook)(u32 a, u32 d, int realsize) = OtherWrite16End;\r
+\r
+PICO_INTERNAL void PicoMemResetHooks(void)\r
+{\r
+ // default unmapped/cart specific handlers\r
+ PicoRead16Hook = OtherRead16End;\r
+ PicoWrite8Hook = OtherWrite8End;\r
+ PicoWrite16Hook = OtherWrite16End;\r
+}\r
+\r
PICO_INTERNAL void PicoMemSetup(void)\r
{\r
// Setup memory callbacks:\r
if (a<Pico.romsize && m68ki_cpu_p==&PicoCpuMM68k)\r
d = *(u8 *) (Pico.rom+(a^1));\r
else d = (u8) lastread_d[lrp_mus++&15];\r
-#ifdef __debug_io\r
- dprintf("r8_mu : %06x, %02x @%06x", a&0xffffff, d, SekPc);\r
-#endif\r
+ elprintf(EL_IO, "r8_mu : %06x, %02x @%06x", a&0xffffff, d, SekPc);\r
return d;\r
}\r
unsigned int m68k_read_memory_16(unsigned int a)\r
if (a<Pico.romsize && m68ki_cpu_p==&PicoCpuMM68k)\r
d = *(u16 *)(Pico.rom+(a&~1));\r
else d = (u16) lastread_d[lrp_mus++&15];\r
-#ifdef __debug_io\r
- dprintf("r16_mu: %06x, %04x @%06x", a&0xffffff, d, SekPc);\r
-#endif\r
+ elprintf(EL_IO, "r16_mu: %06x, %04x @%06x", a&0xffffff, d, SekPc);\r
return d;\r
}\r
unsigned int m68k_read_memory_32(unsigned int a)\r
{ u16 *pm=(u16 *)(Pico.rom+(a&~1));d=(pm[0]<<16)|pm[1]; }\r
else if (a <= 0x78) d = m68k_read_32(a, 0);\r
else d = lastread_d[lrp_mus++&15];\r
-#ifdef __debug_io\r
- dprintf("r32_mu: %06x, %08x @%06x", a&0xffffff, d, SekPc);\r
-#endif\r
+ elprintf(EL_IO, "r32_mu: %06x, %08x @%06x", a&0xffffff, d, SekPc);\r
return d;\r
}\r
\r