SVP stubs
authornotaz <notasas@gmail.com>
Sat, 22 Dec 2007 20:25:17 +0000 (20:25 +0000)
committernotaz <notasas@gmail.com>
Sat, 22 Dec 2007 20:25:17 +0000 (20:25 +0000)
git-svn-id: file:///home/notaz/opt/svn/PicoDrive@317 be3aeb3a-fb24-0410-a615-afba39da0efa

Pico/Cart.c
Pico/Memory.c
Pico/MemoryCmn.c
Pico/PicoInt.h
Pico/carthw/carthw.h [new file with mode: 0644]
Pico/carthw/svp/Memory.c [new file with mode: 0644]
Pico/carthw/svp/svp.c [new file with mode: 0644]
Pico/cd/Memory.c
platform/linux/Makefile
platform/linux/gp2x.c
platform/linux/port_config.h

index 749d461..34a497e 100644 (file)
@@ -632,5 +632,13 @@ void PicoCartDetect(void)
   // Unusual region 'code'\r
   if (rom_strcmp(0x1f0, "EUROPE") == 0)\r
     *(int *) (Pico.rom+0x1f0) = 0x20204520;\r
+\r
+  // SVP detection\r
+  if (name_cmp("Virtua Racing") == 0)\r
+  {\r
+    PicoSVPInit();\r
+    PicoRead16Hook = PicoSVPRead16;\r
+    PicoWrite8Hook = PicoSVPWrite8;\r
+  }\r
 }\r
 \r
index 8dc11bb..f9d7f69 100644 (file)
@@ -203,10 +203,7 @@ static void SRAMWrite(u32 a, u32 d)
 }\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
@@ -499,8 +496,17 @@ static void PicoWrite32(u32 a,u32 d)
 \r
 \r
 // -----------------------------------------------------------------\r
+\r
+// TODO: asm code\r
+u32  (*PicoRead16Hook)(u32 a, int realsize) = OtherRead16End;\r
+void (*PicoWrite8Hook)(u32 a, u32 d, int realsize) = OtherWrite8End;\r
+\r
 PICO_INTERNAL void PicoMemSetup(void)\r
 {\r
+  // default unmapped/cart specific handlers\r
+  PicoRead16Hook = OtherRead16End;\r
+  PicoWrite8Hook = OtherWrite8End;\r
+\r
   // Setup memory callbacks:\r
 #ifdef EMU_C68K\r
   PicoCpuCM68k.checkpc=PicoCheckPc;\r
index 946125c..422ae2e 100644 (file)
@@ -136,7 +136,7 @@ u32 OtherRead16(u32 a, int realsize)
     goto end;
   }
 
-  d = OtherRead16End(a, realsize);
+  d = PicoRead16Hook(a, realsize);
 
 end:
   return d;
@@ -191,7 +191,7 @@ void OtherWrite8(u32 a,u32 d)
     return;
   }
 
-  OtherWrite8End(a, d, 8);
+  PicoWrite8Hook(a, d, 8);
 }
 
 
@@ -227,10 +227,10 @@ void OtherWrite16(u32 a,u32 d)
       SRAMWrite(a, d);
     return;
   }
-#else
-  OtherWrite8End(a,  d>>8, 16);
-  OtherWrite8End(a+1,d&0xff, 16);
 #endif
+
+  PicoWrite8Hook(a,  d>>8, 16);
+  PicoWrite8Hook(a+1,d&0xff, 16);
 }
 
 
index ed97081..b84ec1a 100644 (file)
@@ -13,6 +13,7 @@
 #include <stdlib.h>\r
 #include <string.h>\r
 #include "Pico.h"\r
+#include "carthw/carthw.h"\r
 \r
 //\r
 #define USE_POLL_DETECT\r
@@ -393,6 +394,8 @@ PICO_INTERNAL unsigned short z80_read16(unsigned short a);
 #else\r
 PICO_INTERNAL_ASM void z80_write(unsigned int a, unsigned char data);\r
 #endif\r
+extern unsigned int (*PicoRead16Hook)(unsigned int a, int realsize);\r
+extern void (*PicoWrite8Hook)(unsigned int a,unsigned int d,int realsize);\r
 \r
 // cd/Memory.c\r
 PICO_INTERNAL void PicoMemSetupCD(void);\r
diff --git a/Pico/carthw/carthw.h b/Pico/carthw/carthw.h
new file mode 100644 (file)
index 0000000..e066cac
--- /dev/null
@@ -0,0 +1,8 @@
+
+
+/* svp */
+void PicoSVPInit(void);
+
+unsigned int PicoSVPRead16(unsigned int a, int realsize);
+void PicoSVPWrite8(unsigned int a,unsigned int d,int realsize);
+
diff --git a/Pico/carthw/svp/Memory.c b/Pico/carthw/svp/Memory.c
new file mode 100644 (file)
index 0000000..0462d7f
--- /dev/null
@@ -0,0 +1,16 @@
+#include "../../PicoInt.h"
+
+unsigned int PicoSVPRead16(unsigned int a, int realsize)
+{
+  unsigned int d = 0;
+
+  elprintf(EL_UIO, "SVP r%i: [%06x] %04x @%06x", realsize, a&0xffffff, d, SekPc);
+
+  return d;
+}
+
+void PicoSVPWrite8(unsigned int a, unsigned int d, int realsize)
+{
+  elprintf(EL_UIO, "SVP w%i: %06x, %08x @%06x", realsize, a&0xffffff, d, SekPc);
+}
+
diff --git a/Pico/carthw/svp/svp.c b/Pico/carthw/svp/svp.c
new file mode 100644 (file)
index 0000000..a5de987
--- /dev/null
@@ -0,0 +1,7 @@
+#include "../../PicoInt.h"
+
+void PicoSVPInit(void)
+{
+  elprintf(0xffff, "SVP");
+}
+
index c883a76..66719a8 100644 (file)
@@ -1626,6 +1626,10 @@ void PicoMemResetCD(int r3)
 \r
 PICO_INTERNAL void PicoMemSetupCD(void)\r
 {\r
+  // additional handlers for common code\r
+  PicoRead16Hook = OtherRead16End;\r
+  PicoWrite8Hook = OtherWrite8End;\r
+\r
 #ifdef EMU_C68K\r
   // Setup m68k memory callbacks:\r
   PicoCpuCM68k.checkpc=PicoCheckPcM68k;\r
index 870b1b3..66e44da 100644 (file)
@@ -43,6 +43,8 @@ OBJS += Pico/cd/Pico.o Pico/cd/Memory.o Pico/cd/Sek.o Pico/cd/LC89510.o \
                Pico/cd/Area.o Pico/cd/Misc.o Pico/cd/pcm.o Pico/cd/buffering.o
 # Pico - sound
 OBJS += Pico/sound/sound.o Pico/sound/sn76496.o Pico/sound/ym2612.o Pico/sound/mix.o
+# Pico - carthw
+OBJS += Pico/carthw/svp/svp.o Pico/carthw/svp/Memory.o
 # zlib
 OBJS += zlib/gzio.o zlib/inffast.o zlib/inflate.o zlib/inftrees.o zlib/trees.o \
        zlib/deflate.o zlib/crc32.o zlib/adler32.o zlib/zutil.o zlib/compress.o zlib/uncompr.o
@@ -74,8 +76,8 @@ endif
 endif
 
 vpath %.c = ../..
-DIRS = platform platform/gp2x platform/common Pico Pico/cd Pico/sound zlib unzip \
-       cpu cpu/musashi cpu/fame cpu/mz80 cpu/cz80
+DIRS = platform platform/gp2x platform/common Pico Pico/cd Pico/sound Pico/carthw/svp \
+       zlib unzip cpu cpu/musashi cpu/fame cpu/mz80 cpu/cz80
 
 all: mkdirs PicoDrive
 clean: tidy
index b89990b..4a7c556 100644 (file)
@@ -30,6 +30,7 @@ static const char *verstring = "PicoDrive " VERSION;
 
 // dummies
 char *ext_menu = 0, *ext_state = 0;
+int mix_32_to_16l_level;
 
 /* gtk */
 struct gtk_global_struct
index 9af5d3d..2f897b9 100644 (file)
@@ -12,7 +12,9 @@
 // pico.c
 #define CAN_HANDLE_240_LINES   1
 
-#define EL_LOGMASK (EL_ANOMALY|EL_STATUS|EL_SRAMIO|EL_EEPROM) // EL_VDPDMA|EL_ASVDP|EL_SR) // |EL_BUSREQ|EL_Z80BNK)
+#define mix_32_to_16l_stereo_lvl mix_32_to_16l_stereo
+
+#define EL_LOGMASK (EL_ANOMALY|EL_STATUS|EL_SRAMIO|EL_EEPROM|EL_UIO) // EL_VDPDMA|EL_ASVDP|EL_SR) // |EL_BUSREQ|EL_Z80BNK)
 
 //#define dprintf(f,...) printf("%05i:%03i: " f "\n",Pico.m.frame_count,Pico.m.scanline,##__VA_ARGS__)
 #define dprintf(x...)