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
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 *Pico_video;\r
+ void *Pico_vram;\r
+};\r
+\r
// some assembly stuff depend on these, do not touch!\r
struct Pico\r
{\r
struct PicoMisc m;\r
struct PicoVideo video;\r
struct PicoMS ms;\r
+ struct PicoEState est;\r
};\r
\r
// sram\r
\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
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
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 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 (*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
\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
#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