X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2Fpico_int.h;h=4a4418e4f80c68fd5d349d2bb58d64d71fea6f17;hb=87b0845f3733166b491ae236feb8bc2eb0fca2ec;hp=d3b64a820aa804b4f9a813b0e122edb80d7ee642;hpb=d8f51995c466282c7c93f3666b1bc54b827ec19e;p=picodrive.git diff --git a/pico/pico_int.h b/pico/pico_int.h index d3b64a8..4a4418e 100644 --- a/pico/pico_int.h +++ b/pico/pico_int.h @@ -272,10 +272,14 @@ struct PicoMisc struct Pico { unsigned char ram[0x10000]; // 0x00000 scratch ram - unsigned short vram[0x8000]; // 0x10000 + union { // vram is byteswapped for easier reads when drawing + unsigned short vram[0x8000]; // 0x10000 + unsigned char vramb[0x4000]; // VRAM in SMS mode + }; unsigned char zram[0x2000]; // 0x20000 Z80 ram unsigned char ioports[0x10]; - unsigned int pad[0x3c]; // unused + unsigned char sms_io_ctl; + unsigned char pad[0xef]; // unused unsigned short cram[0x40]; // 0x22100 unsigned short vsram[0x40]; // 0x22180 @@ -411,6 +415,7 @@ int CM_compareRun(int cyc, int is_sub); // draw.c PICO_INTERNAL void PicoFrameStart(void); void PicoDrawSync(int to, int blank_last_line); +void BackFill(int reg7, int sh); extern int DrawScanline; #define MAX_LINE_SPRITES 29 extern unsigned char HighLnSpr[240][3 + MAX_LINE_SPRITES]; @@ -418,6 +423,12 @@ extern unsigned char HighLnSpr[240][3 + MAX_LINE_SPRITES]; // draw2.c PICO_INTERNAL void PicoFrameFull(); +// mode4.c +void PicoFrameStartMode4(void); +void PicoLineMode4(int line); +void PicoDoHighPal555M4(void); +void PicoDrawSetColorFormatMode4(int which); + // memory.c PICO_INTERNAL void PicoInitPc(unsigned int pc); PICO_INTERNAL unsigned int PicoCheckPc(unsigned int pc); @@ -549,8 +560,16 @@ PICO_INTERNAL void PsndReset(void); PICO_INTERNAL void PsndDoDAC(int line_to); PICO_INTERNAL void PsndClear(void); PICO_INTERNAL void PsndGetSamples(int y); +PICO_INTERNAL void PsndGetSamplesMS(void); extern int PsndDacLine; +// sms.c +void PicoPowerMS(void); +void PicoResetMS(void); +void PicoMemSetupMS(void); +void PicoFrameMS(void); +void PicoFrameDrawOnlyMS(void); + // emulation event logging #ifndef EL_LOGMASK #define EL_LOGMASK 0 @@ -596,7 +615,7 @@ extern void lprintf(const char *fmt, ...); #define cdprintf(x...) #endif -#if defined(__GNUC__) && !defined(ARM) +#if defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 3 #define MEMH_FUNC __attribute__((aligned(4))) #else #define MEMH_FUNC