eliminate texrels, part 3
[picodrive.git] / pico / pico_int.h
index 76c4812..b562b2f 100644 (file)
 extern "C" {\r
 #endif\r
 \r
+#ifdef _MSC_VER\r
+#define snprintf _snprintf\r
+#define strcasecmp _stricmp\r
+#define strncasecmp _strnicmp\r
+#endif\r
 \r
 // ----------------------- 68000 CPU -----------------------\r
 #ifdef EMU_C68K\r
@@ -328,6 +333,21 @@ struct PicoMS
   unsigned char pad[0x4e];\r
 };\r
 \r
+// emu state and data for the asm code\r
+struct PicoEState\r
+{\r
+  int DrawScanline;\r
+  int rendstatus;\r
+  void *DrawLineDest;          // draw destination\r
+  unsigned char *HighCol;\r
+  int *HighPreSpr;\r
+  void *Pico_video;\r
+  void *Pico_vram;\r
+  int  *PicoOpt;\r
+  unsigned char *Draw2FB;\r
+  unsigned short HighPal[0x100];\r
+};\r
+\r
 // some assembly stuff depend on these, do not touch!\r
 struct Pico\r
 {\r
@@ -348,6 +368,7 @@ struct Pico
   struct PicoMisc m;\r
   struct PicoVideo video;\r
   struct PicoMS ms;\r
+  struct PicoEState est;\r
 };\r
 \r
 // sram\r
@@ -396,20 +417,21 @@ struct mcd_pcm
 \r
 struct mcd_misc\r
 {\r
-       unsigned short hint_vector;\r
-       unsigned char  busreq;          // not s68k_regs[1]\r
-       unsigned char  s68k_pend_ints;\r
-       unsigned int   state_flags;     // 04\r
-       unsigned int   stopwatch_base_c;\r
-       unsigned short m68k_poll_a;\r
-       unsigned short m68k_poll_cnt;\r
-       unsigned short s68k_poll_a;\r
-       unsigned short s68k_poll_cnt;\r
-       unsigned int   s68k_poll_clk;\r
-       unsigned char  bcram_reg;       // 18: battery-backed RAM cart register\r
-       unsigned char  dmna_ret_2m;\r
-       unsigned short pad3;\r
-       int pad4[9];\r
+  unsigned short hint_vector;\r
+  unsigned char  busreq;          // not s68k_regs[1]\r
+  unsigned char  s68k_pend_ints;\r
+  unsigned int   state_flags;     // 04\r
+  unsigned int   stopwatch_base_c;\r
+  unsigned short m68k_poll_a;\r
+  unsigned short m68k_poll_cnt;\r
+  unsigned short s68k_poll_a;\r
+  unsigned short s68k_poll_cnt;\r
+  unsigned int   s68k_poll_clk;\r
+  unsigned char  bcram_reg;       // 18: battery-backed RAM cart register\r
+  unsigned char  dmna_ret_2m;\r
+  unsigned char  need_sync;\r
+  unsigned char  pad3;\r
+  int pad4[9];\r
 };\r
 \r
 typedef struct\r
@@ -433,15 +455,7 @@ typedef struct
     unsigned char pcm_ram[0x10000];\r
     unsigned char pcm_ram_b[0x10][0x1000];\r
   };\r
-  union {\r
-    unsigned char s68k_regs[0x200];            // 110000: GA, not CPU regs\r
-    union {\r
-      struct {\r
-        unsigned char h;\r
-        unsigned char l;\r
-      } byte;\r
-    } regs[0x200/2];\r
-  };\r
+  unsigned char s68k_regs[0x200];              // 110000: GA, not CPU regs\r
   unsigned char bram[0x2000];                  // 110200: 8K\r
   struct mcd_misc m;                           // 112200: misc\r
   struct mcd_pcm pcm;                          // 112240:\r
@@ -581,19 +595,20 @@ extern void (*PicoCartUnloadHook)(void);
 int CM_compareRun(int cyc, int is_sub);\r
 \r
 // draw.c\r
+void PicoDrawInit(void);\r
 PICO_INTERNAL void PicoFrameStart(void);\r
 void PicoDrawSync(int to, int blank_last_line);\r
-void BackFill(int reg7, int sh);\r
-void FinalizeLine555(int sh, int line);\r
+void BackFill(int reg7, int sh, struct PicoEState *est);\r
+void FinalizeLine555(int sh, int line, struct PicoEState *est);\r
 extern int (*PicoScanBegin)(unsigned int num);\r
 extern int (*PicoScanEnd)(unsigned int num);\r
-extern int DrawScanline;\r
 #define MAX_LINE_SPRITES 29\r
 extern unsigned char HighLnSpr[240][3 + MAX_LINE_SPRITES];\r
 extern void *DrawLineDestBase;\r
 extern int DrawLineDestIncrement;\r
 \r
 // draw2.c\r
+void PicoDraw2Init(void);\r
 PICO_INTERNAL void PicoFrameFull();\r
 \r
 // mode4.c\r
@@ -775,7 +790,7 @@ PICO_INTERNAL_ASM unsigned int PicoVideoRead8(unsigned int a);
 extern int (*PicoDmaHook)(unsigned int source, int len, unsigned short **srcp, unsigned short **limitp);\r
 \r
 // misc.c\r
-PICO_INTERNAL_ASM void memcpy16(unsigned short *dest, unsigned short *src, int count);\r
+PICO_INTERNAL_ASM void pmemcpy16(unsigned short *dest, unsigned short *src, int count);\r
 PICO_INTERNAL_ASM void memcpy16bswap(unsigned short *dest, void *src, int count);\r
 PICO_INTERNAL_ASM void memcpy32(int *dest, int *src, int count); // 32bit word count\r
 PICO_INTERNAL_ASM void memset32(int *dest, int c, int count);\r
@@ -863,7 +878,7 @@ void p32x_sh2_poll_event(SH2 *sh2, unsigned int flags, unsigned int m68k_cycles)
 \r
 // 32x/draw.c\r
 void PicoDrawSetOutFormat32x(pdso_t which, int use_32x_line_mode);\r
-void FinalizeLine32xRGB555(int sh, int line);\r
+void FinalizeLine32xRGB555(int sh, int line, struct PicoEState *est);\r
 void PicoDraw32xLayer(int offs, int lines, int mdbg);\r
 void PicoDraw32xLayerMdOnly(int offs, int lines);\r
 extern int (*PicoScan32xBegin)(unsigned int num);\r
@@ -914,7 +929,7 @@ void REGPARM(3) sh2_peripheral_write32(unsigned int a, unsigned int d, SH2 *sh2)
 #endif\r
 \r
 /* avoid dependency on newer glibc */\r
-static __inline int isspace_(int c)\r
+static INLINE int isspace_(int c)\r
 {\r
        return (0x09 <= c && c <= 0x0d) || c == ' ';\r
 }\r