struct Pico\r
{\r
unsigned char ram[0x10000]; // 0x00000 scratch ram\r
- unsigned short vram[0x8000]; // 0x10000\r
+ union { // vram is byteswapped for easier reads when drawing\r
+ unsigned short vram[0x8000]; // 0x10000\r
+ unsigned char vramb[0x4000]; // VRAM in SMS mode\r
+ };\r
unsigned char zram[0x2000]; // 0x20000 Z80 ram\r
unsigned char ioports[0x10];\r
- unsigned int pad[0x3c]; // unused\r
+ unsigned char sms_io_ctl;\r
+ unsigned char pad[0xef]; // unused\r
unsigned short cram[0x40]; // 0x22100\r
unsigned short vsram[0x40]; // 0x22180\r
\r
// draw.c\r
PICO_INTERNAL void PicoFrameStart(void);\r
void PicoDrawSync(int to, int blank_last_line);\r
+void BackFill(int reg7, int sh);\r
extern int DrawScanline;\r
#define MAX_LINE_SPRITES 29\r
extern unsigned char HighLnSpr[240][3 + MAX_LINE_SPRITES];\r
// draw2.c\r
PICO_INTERNAL void PicoFrameFull();\r
\r
+// mode4.c\r
+void PicoFrameStartMode4(void);\r
+void PicoLineMode4(int line);\r
+void PicoDoHighPal555M4(void);\r
+\r
// memory.c\r
PICO_INTERNAL void PicoInitPc(unsigned int pc);\r
PICO_INTERNAL unsigned int PicoCheckPc(unsigned int pc);\r
PICO_INTERNAL void PsndDoDAC(int line_to);\r
PICO_INTERNAL void PsndClear(void);\r
PICO_INTERNAL void PsndGetSamples(int y);\r
+PICO_INTERNAL void PsndGetSamplesMS(void);\r
extern int PsndDacLine;\r
\r
+// sms.c\r
+void PicoPowerMS(void);\r
+void PicoResetMS(void);\r
+void PicoMemSetupMS(void);\r
+void PicoFrameMS(void);\r
+\r
// emulation event logging\r
#ifndef EL_LOGMASK\r
#define EL_LOGMASK 0\r
#define cdprintf(x...)\r
#endif\r
\r
-#if defined(__GNUC__) && !defined(ARM)\r
+#if defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 3\r
#define MEMH_FUNC __attribute__((aligned(4)))\r
#else\r
#define MEMH_FUNC\r