unsigned char *HighColBase = DefHighCol;\r
int HighColIncrement;\r
\r
-static unsigned int DefOutBuff[320*2/2];\r
+static u16 DefOutBuff[320*2];\r
void *DrawLineDestBase = DefOutBuff;\r
int DrawLineDestIncrement;\r
\r
-static int HighCacheA[41*2+1]; // caches for high layers\r
-static int HighCacheB[41*2+1];\r
-static int HighPreSpr[80*2+1]; // slightly preprocessed sprites\r
+static u32 HighCacheA[41*2+1]; // caches for high layers\r
+static u32 HighCacheB[41*2+1];\r
+static u32 HighPreSpr[80*2+1]; // slightly preprocessed sprites\r
\r
-unsigned int VdpSATCache[128]; // VDP sprite cache (1st 32 sprite attr bits)\r
+u32 VdpSATCache[128]; // VDP sprite cache (1st 32 sprite attr bits)\r
\r
// NB don't change any defines without checking their usage in ASM\r
\r
int line; // Line number in pixels 0x000-0x3ff within the virtual tilemap\r
int hscroll; // Horizontal scroll value in pixels for the line\r
int xmask; // X-Mask (0x1f - 0x7f) for horizontal wraparound in the tilemap\r
- int *hc; // cache for high tile codes and their positions\r
+ u32 *hc; // cache for high tile codes and their positions\r
int cells; // cells (tiles) to draw (32 col mode doesn't need to update whole 320)\r
};\r
\r
struct PicoEState *est);\r
void DrawAllSprites(unsigned char *sprited, int prio, int sh,\r
struct PicoEState *est);\r
-void DrawTilesFromCache(int *hc, int sh, int rlim,\r
+void DrawTilesFromCache(u32 *hc, int sh, int rlim,\r
struct PicoEState *est);\r
void DrawSpritesSHi(unsigned char *sprited, struct PicoEState *est);\r
-void DrawLayer(int plane_sh, int *hcache, int cellskip, int maxcells,\r
+void DrawLayer(int plane_sh, u32 *hcache, int cellskip, int maxcells,\r
struct PicoEState *est);\r
void *blockcpy(void *dst, const void *src, size_t n);\r
void blockcpy_or(void *dst, void *src, size_t n, int pat);\r
\r
#define TileNormMaker_(pix_func,ret) \\r
{ \\r
- unsigned int t; \\r
+ unsigned char t; \\r
\\r
t = (pack&0x0000f000)>>12; pix_func(0); \\r
t = (pack&0x00000f00)>> 8; pix_func(1); \\r
\r
#define TileFlipMaker_(pix_func,ret) \\r
{ \\r
- unsigned int t; \\r
+ unsigned char t; \\r
\\r
t = (pack&0x000f0000)>>16; pix_func(0); \\r
t = (pack&0x00f00000)>>20; pix_func(1); \\r
}\r
\r
#define TileNormMaker(funcname, pix_func) \\r
-static void funcname(unsigned char *pd, unsigned int pack, int pal) \\r
+static void funcname(unsigned char *pd, unsigned int pack, unsigned char pal) \\r
TileNormMaker_(pix_func,)\r
\r
#define TileFlipMaker(funcname, pix_func) \\r
-static void funcname(unsigned char *pd, unsigned int pack, int pal) \\r
+static void funcname(unsigned char *pd, unsigned int pack, unsigned char pal) \\r
TileFlipMaker_(pix_func,)\r
\r
#define TileNormMakerAS(funcname, pix_func) \\r
-static unsigned funcname(unsigned m, unsigned char *pd, unsigned int pack, int pal) \\r
+static unsigned funcname(unsigned m, unsigned char *pd, unsigned int pack, unsigned char pal) \\r
TileNormMaker_(pix_func,m)\r
\r
#define TileFlipMakerAS(funcname, pix_func) \\r
-static unsigned funcname(unsigned m, unsigned char *pd, unsigned int pack, int pal) \\r
+static unsigned funcname(unsigned m, unsigned char *pd, unsigned int pack, unsigned char pal) \\r
TileFlipMaker_(pix_func,m)\r
\r
// draw layer or non-s/h sprite pixels (no operator colors)\r
#define pix_just_write(x) \\r
- if (t) pd[x]=pal|t\r
+ if (likely(t)) pd[x]=pal|t\r
\r
TileNormMaker(TileNorm, pix_just_write)\r
TileFlipMaker(TileFlip, pix_just_write)\r
\r
// draw low prio sprite non-s/h pixels in s/h mode\r
#define pix_nonsh(x) \\r
- if (t == 0xe) pd[x]=(pal|t)&~0x80; /* disable shadow for color 14 (hw bug?) */ \\r
- else if (t) pd[x]=pal|t\r
+ if (likely(t)) { \\r
+ pd[x]=pal|t; \\r
+ if (unlikely(t==0xe)) pd[x]&=~0x80; /* disable shadow for color 14 (hw bug?) */ \\r
+ }\r
\r
TileNormMaker(TileNormNonSH, pix_nonsh)\r
TileFlipMaker(TileFlipNonSH, pix_nonsh)\r
\r
// draw sprite pixels, process operator colors\r
#define pix_sh(x) \\r
- if (t) { \\r
- if (t>=0xe) pd[x]|=(t-1)<<6; /* 80 shadow, 40 hilight */ \\r
- else pd[x]=pal|t; \\r
- }\r
+ if (likely(t)) \\r
+ pd[x]=(likely(t<0xe) ? pal|t : pd[x]|((t-1)<<6));\r
\r
TileNormMaker(TileNormSH, pix_sh)\r
TileFlipMaker(TileFlipSH, pix_sh)\r
\r
// draw sprite pixels, mark but don't process operator colors\r
#define pix_sh_markop(x) \\r
- if (t) { \\r
- if (t>=0xe) pd[x]|=0x40; \\r
- else pd[x]=pal|t; \\r
- }\r
+ if (likely(t)) \\r
+ pd[x]=(likely(t<0xe) ? pal|t : pd[x]|0x40);\r
\r
TileNormMaker(TileNormSH_markop, pix_sh_markop)\r
TileFlipMaker(TileFlipSH_markop, pix_sh_markop)\r
\r
// draw low prio sprite operator pixels if visible (i.e. marked)\r
#define pix_sh_onlyop(x) \\r
- if (t>=0xe && (pd[x]&0x40)) \\r
+ if (unlikely(t>=0xe && (pd[x]&0x40))) \\r
pd[x]=(pd[x]&~0x40)|((t-1)<<6)\r
\r
#ifndef _ASM_DRAW_C\r
\r
// draw high prio sprite pixels (AS)\r
#define pix_as(x) \\r
- if (t && (m & (1<<(x+8)))) m &= ~(1<<(x+8)), pd[x] = pal | t\r
+ if (likely(t && (m & (1<<(x+8))))) \\r
+ m &= ~(1<<(x+8)), pd[x] = pal|t\r
\r
TileNormMakerAS(TileNormAS, pix_as)\r
TileFlipMakerAS(TileFlipAS, pix_as)\r
// draw high prio sprite pixels, process operator colors (AS)\r
// NB sprite+planes: h+s->n, h+[nh]->h, s+[nhs]->s, hence mask h before op\r
#define pix_sh_as(x) \\r
- if (t && (m & (1<<(x+8)))) { \\r
+ if (likely(t && (m & (1<<(x+8))))) { \\r
m &= ~(1<<(x+8)); \\r
- if (t>=0xe) pd[x]=(pd[x]&~0x40)|((t-1)<<6); \\r
- else pd[x] = pal | t; \\r
+ pd[x]=(likely(t<0xe) ? pal|t : (pd[x]&~0x40)|((t-1)<<6)); \\r
}\r
\r
TileNormMakerAS(TileNormSH_AS, pix_sh_as)\r
\r
// draw only sprite operator pixels (AS)\r
#define pix_sh_as_onlyop(x) \\r
- if (t && (m & (1<<(x+8)))) { \\r
+ if (likely(t && (m & (1<<(x+8))))) { \\r
m &= ~(1<<(x+8)); \\r
pix_sh_onlyop(x); \\r
}\r
\r
// mark low prio sprite pixels (AS)\r
#define pix_sh_as_onlymark(x) \\r
- if (t) m &= ~(1<<(x+8))\r
+ if (likely(t)) m &= ~(1<<(x+8))\r
\r
TileNormMakerAS(TileNormAS_onlymark, pix_sh_as_onlymark)\r
TileFlipMakerAS(TileFlipAS_onlymark, pix_sh_as_onlymark)\r
// forced both layer draw (through debug reg)\r
#define pix_and(x) \\r
pal |= 0xc0; /* leave s/h bits untouched in pixel "and" */ \\r
- pd[x] &= pal | t\r
+ pd[x] &= pal|t\r
\r
TileNormMaker(TileNorm_and, pix_and)\r
TileFlipMaker(TileFlip_and, pix_and)\r
// forced sprite draw (through debug reg)\r
#define pix_sh_as_and(x) \\r
pal |= 0xc0; /* leave s/h bits untouched in pixel "and" */ \\r
- if (m & (1<<(x+8))) { \\r
+ if (likely(m & (1<<(x+8)))) { \\r
m &= ~(1<<(x+8)); \\r
- if (t<0xe) pd[x] &= pal | t; \\r
+ if (t<0xe) pd[x] &= pal|t; \\r
}\r
\r
TileNormMakerAS(TileNormSH_AS_and, pix_sh_as_and)\r
static void DrawStrip(struct TileStrip *ts, int lflags, int cellskip)\r
{\r
unsigned char *pd = Pico.est.HighCol;\r
- int *hc = ts->hc;\r
+ u32 *hc = ts->hc;\r
int tilex, dx, ty, cells;\r
int oldcode = -1, blank = -1; // The tile we know is blank\r
unsigned int pal = 0, pack = 0, sh;\r
\r
pal = ((code>>9)&0x30) | sh; // shadow\r
\r
- pack = *(unsigned int *)(PicoMem.vram + addr);\r
+ pack = *(u32 *)(PicoMem.vram + addr);\r
if (!pack)\r
blank = code;\r
}\r
static void DrawStripVSRam(struct TileStrip *ts, int plane_sh, int cellskip)\r
{\r
unsigned char *pd = Pico.est.HighCol;\r
- int *hc = ts->hc;\r
+ u32 *hc = ts->hc;\r
int tilex, dx, ty = 0, addr = 0, cell = 0, nametabadd = 0;\r
int oldcode = -1, blank = -1; // The tile we know is blank\r
unsigned int pal = 0, scan = Pico.est.DrawScanline, sh, plane;\r
}\r
\r
pack = (code & 0x1000 ? ty^0xe : ty); // Y-flip\r
- pack = *(unsigned int *)(PicoMem.vram + addr+pack);\r
+ pack = *(u32 *)(PicoMem.vram + addr+pack);\r
if (!pack)\r
blank = code;\r
\r
void DrawStripInterlace(struct TileStrip *ts, int plane_sh)\r
{\r
unsigned char *pd = Pico.est.HighCol;\r
- int *hc = ts->hc;\r
+ u32 *hc = ts->hc;\r
int tilex = 0, dx = 0, ty = 0, cells;\r
int oldcode = -1, blank = -1; // The tile we know is blank\r
unsigned int pal = 0, pack = 0, sh;\r
\r
pal = ((code>>9)&0x30) | sh; // shadow\r
\r
- pack = *(unsigned int *)(PicoMem.vram + addr);\r
+ pack = *(u32 *)(PicoMem.vram + addr);\r
if (!pack)\r
blank = code;\r
}\r
// --------------------------------------------\r
\r
#ifndef _ASM_DRAW_C\r
-static void DrawLayer(int plane_sh, int *hcache, int cellskip, int maxcells,\r
+static void DrawLayer(int plane_sh, u32 *hcache, int cellskip, int maxcells,\r
struct PicoEState *est)\r
{\r
struct PicoVideo *pvid=&Pico.video;\r
addr=(code&0x7ff)<<4;\r
if (code&0x1000) addr+=14-ty; else addr+=ty; // Y-flip\r
\r
- pack = *(unsigned int *)(PicoMem.vram + addr);\r
+ pack = *(u32 *)(PicoMem.vram + addr);\r
if (!pack) {\r
blank = code;\r
continue;\r
addr=(code&0x7ff)<<4;\r
if (code&0x1000) addr+=14-ty; else addr+=ty; // Y-flip\r
\r
- pack = *(unsigned int *)(PicoMem.vram + addr);\r
+ pack = *(u32 *)(PicoMem.vram + addr);\r
if (!pack) {\r
blank = code;\r
continue;\r
}\r
}\r
\r
-static void DrawTilesFromCache(int *hc, int sh, int rlim, struct PicoEState *est)\r
+static void DrawTilesFromCache(u32 *hc, int sh, int rlim, struct PicoEState *est)\r
{\r
unsigned char *pd = Pico.est.HighCol;\r
int code, dx;\r
// Index + 0 : hhhhvvvv ab--hhvv yyyyyyyy yyyyyyyy // a: offscreen h, b: offs. v, h: horiz. size\r
// Index + 4 : xxxxxxxx xxxxxxxx pccvhnnn nnnnnnnn // x: x coord + 8\r
\r
-static void DrawSprite(int *sprite, int sh, int w)\r
+static void DrawSprite(u32 *sprite, int sh, int w)\r
{\r
- void (*fTileFunc)(unsigned char *pd, unsigned int pack, int pal);\r
+ void (*fTileFunc)(unsigned char *pd, unsigned int pack, unsigned char pal);\r
unsigned char *pd = Pico.est.HighCol;\r
int width=0,height=0;\r
- int row=0,code=0;\r
+ int row=0;\r
+ u32 code=0;\r
int pal;\r
int tile=0,delta=0;\r
int sx, sy;\r
if(sx<=0) continue;\r
if(sx>=328) break; // Offscreen\r
\r
- pack = *(unsigned int *)(PicoMem.vram + (tile & 0x7fff));\r
+ pack = *(u32 *)(PicoMem.vram + (tile & 0x7fff));\r
fTileFunc(pd + sx, pack, pal);\r
}\r
}\r
if(sx<=0) continue;\r
if(sx>=328) break; // Offscreen\r
\r
- pack = *(unsigned int *)(PicoMem.vram + (tile & 0x7fff));\r
+ pack = *(u32 *)(PicoMem.vram + (tile & 0x7fff));\r
if (code & 0x0800) TileFlip(pd + sx, pack, pal);\r
else TileNorm(pd + sx, pack, pal);\r
}\r
unsigned int *sprite;\r
int code, sx, sy, height;\r
\r
- sprite=(unsigned int *)(PicoMem.vram+((table+(link<<2))&0x7ffc)); // Find sprite\r
+ sprite=(u32 *)(PicoMem.vram+((table+(link<<2))&0x7ffc)); // Find sprite\r
\r
// get sprite info\r
code = sprite[0];\r
*/\r
static void DrawSpritesSHi(unsigned char *sprited, const struct PicoEState *est)\r
{\r
- static void (*tilefuncs[2][2][2])(unsigned char *, unsigned, int) = {\r
+ static void (*tilefuncs[2][2][2])(unsigned char *, unsigned, unsigned char) = {\r
{ {NULL, NULL}, {TileNorm, TileFlip} },\r
{ {TileNormSH_onlyop_lp, TileFlipSH_onlyop_lp}, {TileNormSH, TileFlipSH} }\r
}; // [sh?][hi?][flip?]\r
- void (*fTileFunc)(unsigned char *pd, unsigned int pack, int pal);\r
+ void (*fTileFunc)(unsigned char *pd, unsigned int pack, unsigned char pal);\r
unsigned char *pd = Pico.est.HighCol;\r
unsigned char *p;\r
int cnt, w;\r
w = p[cnt]; // possibly clipped width of last sprite\r
for (cnt--; cnt >= 0; cnt--, w = 0)\r
{\r
- int *sprite, code, pal, tile, sx, sy;\r
+ u32 *sprite, code;\r
+ int pal, tile, sx, sy;\r
int offs, delta, width, height, row;\r
\r
offs = (p[cnt] & 0x7f) * 2;\r
if(sx<=0) continue;\r
if(sx>=328) break; // Offscreen\r
\r
- pack = *(unsigned int *)(PicoMem.vram + (tile & 0x7fff));\r
+ pack = *(u32 *)(PicoMem.vram + (tile & 0x7fff));\r
fTileFunc(pd + sx, pack, pal);\r
}\r
}\r
\r
static void DrawSpritesHiAS(unsigned char *sprited, int sh)\r
{\r
- static unsigned (*tilefuncs[2][2][2])(unsigned, unsigned char *, unsigned, int) = {\r
+ static unsigned (*tilefuncs[2][2][2])(unsigned, unsigned char *, unsigned, unsigned char) = {\r
{ {TileNormAS_onlymark, TileFlipAS_onlymark}, {TileNormAS, TileFlipAS} },\r
{ {TileNormSH_AS_onlyop_lp, TileFlipSH_AS_onlyop_lp}, {TileNormSH_AS, TileFlipSH_AS} }\r
}; // [sh?][hi?][flip?]\r
- unsigned (*fTileFunc)(unsigned m, unsigned char *pd, unsigned int pack, int pal);\r
+ unsigned (*fTileFunc)(unsigned m, unsigned char *pd, unsigned int pack, unsigned char pal);\r
unsigned char *pd = Pico.est.HighCol;\r
unsigned char mb[sizeof(DefHighCol)/8];\r
unsigned char *p, *mp;\r
// Go through sprites:\r
for (entry = 0; entry < cnt; entry++)\r
{\r
- int *sprite, code, pal, tile, sx, sy;\r
+ u32 *sprite, code;\r
+ int pal, tile, sx, sy;\r
int offs, delta, width, height, row;\r
\r
offs = (p[entry] & 0x7f) * 2;\r
\r
if(sx>=328) break; // Offscreen\r
\r
- pack = *(unsigned int *)(PicoMem.vram + (tile & 0x7fff));\r
+ pack = *(u32 *)(PicoMem.vram + (tile & 0x7fff));\r
\r
m |= mp[1] << 8; // next mask byte\r
// shift mask bits to bits 8-15 for easier load/store handling\r
pal = (code>>9)&0x30;\r
}\r
\r
- pack = *(unsigned int *)(PicoMem.vram + addr);\r
+ pack = *(u32 *)(PicoMem.vram + addr);\r
\r
if (code & 0x0800) TileFlip_and(pd + dx, pack, pal);\r
else TileNorm_and(pd + dx, pack, pal);\r
}\r
\r
pack = code & 0x1000 ? ty^0xe : ty; // Y-flip\r
- pack = *(unsigned int *)(PicoMem.vram + addr+pack);\r
+ pack = *(u32 *)(PicoMem.vram + addr+pack);\r
\r
if (code & 0x0800) TileFlip_and(pd + dx, pack, pal);\r
else TileNorm_and(pd + dx, pack, pal);\r
\r
pal = (code>>9)&0x30; // shadow\r
\r
- pack = *(unsigned int *)(PicoMem.vram + addr);\r
+ pack = *(u32 *)(PicoMem.vram + addr);\r
}\r
\r
if (code & 0x0800) TileFlip_and(pd + dx, pack, pal);\r
\r
static void DrawSpritesForced(unsigned char *sprited)\r
{\r
- unsigned (*fTileFunc)(unsigned m, unsigned char *pd, unsigned int pack, int pal);\r
+ unsigned (*fTileFunc)(unsigned m, unsigned char *pd, unsigned int pack, unsigned char pal);\r
unsigned char *pd = Pico.est.HighCol;\r
unsigned char mb[sizeof(DefHighCol)/8];\r
unsigned char *p, *mp;\r
// Go through sprites:\r
for (entry = 0; entry < cnt; entry++)\r
{\r
- int *sprite, code, pal, tile, sx, sy;\r
+ u32 *sprite, code;\r
+ int pal, tile, sx, sy;\r
int offs, delta, width, height, row;\r
\r
offs = (p[entry] & 0x7f) * 2;\r
\r
if(sx>=328) break; // Offscreen\r
\r
- pack = *(unsigned int *)(PicoMem.vram + (tile & 0x7fff));\r
+ pack = *(u32 *)(PicoMem.vram + (tile & 0x7fff));\r
\r
m |= mp[1] << 8; // next mask byte\r
// shift mask bits to bits 8-15 for easier load/store handling\r
const struct PicoEState *est=&Pico.est;\r
int u,link=0,sh;\r
int table=0;\r
- int *pd = HighPreSpr;\r
+ u32 *pd = HighPreSpr;\r
int max_sprites = 80, max_width = 328;\r
int max_line_sprites = 20; // 20 sprites, 40 tiles\r
\r
unsigned int *sprite;\r
int code, code2, sx, sy, hv, height, width;\r
\r
- sprite=(unsigned int *)(PicoMem.vram+((table+(link<<2))&0x7ffc)); // Find sprite\r
+ sprite=(u32 *)(PicoMem.vram+((table+(link<<2))&0x7ffc)); // Find sprite\r
\r
// parse sprite info. the 1st half comes from the VDPs internal cache,\r
// the 2nd half is read from VRAM\r
w = p[cnt]; // possibly clipped width of last sprite\r
for (cnt--; cnt >= 0; cnt--, w = 0)\r
{\r
- int *sp = HighPreSpr + (p[cnt]&0x7f) * 2;\r
+ u32 *sp = HighPreSpr + (p[cnt]&0x7f) * 2;\r
if ((p[cnt] >> 7) != prio) continue;\r
DrawSprite(sp, sh, w);\r
}\r
int rendstatus;\r
void *DrawLineDest; // draw destination\r
unsigned char *HighCol;\r
- int *HighPreSpr;\r
+ u32 *HighPreSpr;\r
struct Pico *Pico;\r
void *PicoMem_vram;\r
void *PicoMem_cram;\r
extern int HighColIncrement;\r
extern void *DrawLineDestBase;\r
extern int DrawLineDestIncrement;\r
-extern unsigned int VdpSATCache[128];\r
+extern u32 VdpSATCache[128];\r
\r
// draw2.c\r
void PicoDraw2SetOutBuf(void *dest);\r
\r
// memory.c\r
PICO_INTERNAL void PicoMemSetup(void);\r
-unsigned int PicoRead8_io(unsigned int a);\r
-unsigned int PicoRead16_io(unsigned int a);\r
-void PicoWrite8_io(unsigned int a, unsigned int d);\r
-void PicoWrite16_io(unsigned int a, unsigned int d);\r
+u32 PicoRead8_io(u32 a);\r
+u32 PicoRead16_io(u32 a);\r
+void PicoWrite8_io(u32 a, u32 d);\r
+void PicoWrite16_io(u32 a, u32 d);\r
\r
// pico/memory.c\r
PICO_INTERNAL void PicoMemSetupPico(void);\r
int gfx_context_load(const unsigned char *state);\r
\r
// cd/gfx_dma.c\r
-void DmaSlowCell(unsigned int source, unsigned int a, int len, unsigned char inc);\r
+void DmaSlowCell(u32 source, u32 a, int len, unsigned char inc);\r
\r
// cd/memory.c\r
PICO_INTERNAL void PicoMemSetupCD(void);\r
-unsigned int PicoRead8_mcd_io(unsigned int a);\r
-unsigned int PicoRead16_mcd_io(unsigned int a);\r
-void PicoWrite8_mcd_io(unsigned int a, unsigned int d);\r
-void PicoWrite16_mcd_io(unsigned int a, unsigned int d);\r
+u32 PicoRead8_mcd_io(u32 a);\r
+u32 PicoRead16_mcd_io(u32 a);\r
+void PicoWrite8_mcd_io(u32 a, u32 d);\r
+void PicoWrite16_mcd_io(u32 a, u32 d);\r
void pcd_state_loaded_mem(void);\r
\r
// pico.c\r
\r
\r
// videoport.c\r
-extern unsigned SATaddr, SATmask;\r
+extern u32 SATaddr, SATmask;\r
static __inline void UpdateSAT(u32 a, u32 d)\r
{\r
unsigned num = (a^SATaddr) >> 3;\r
UpdateSAT(a, d);\r
}\r
\r
-PICO_INTERNAL_ASM void PicoVideoWrite(unsigned int a,unsigned short d);\r
-PICO_INTERNAL_ASM unsigned int PicoVideoRead(unsigned int a);\r
+PICO_INTERNAL_ASM void PicoVideoWrite(u32 a,unsigned short d);\r
+PICO_INTERNAL_ASM u32 PicoVideoRead(u32 a);\r
unsigned char PicoVideoRead8DataH(int is_from_z80);\r
unsigned char PicoVideoRead8DataL(int is_from_z80);\r
unsigned char PicoVideoRead8CtlH(int is_from_z80);\r
unsigned char PicoVideoRead8CtlL(int is_from_z80);\r
unsigned char PicoVideoRead8HV_H(int is_from_z80);\r
unsigned char PicoVideoRead8HV_L(int is_from_z80);\r
-extern int (*PicoDmaHook)(unsigned int source, int len, unsigned short **base, unsigned int *mask);\r
+extern int (*PicoDmaHook)(u32 source, int len, unsigned short **base, unsigned int *mask);\r
void PicoVideoFIFOSync(int cycles);\r
int PicoVideoFIFOHint(void);\r
void PicoVideoFIFOMode(int active, int h40);\r
extern int Pico32xDrawMode;\r
\r
// 32x/pwm.c\r
-unsigned int p32x_pwm_read16(unsigned int a, SH2 *sh2,\r
- unsigned int m68k_cycles);\r
-void p32x_pwm_write16(unsigned int a, unsigned int d,\r
- SH2 *sh2, unsigned int m68k_cycles);\r
+unsigned int p32x_pwm_read16(u32 a, SH2 *sh2, unsigned int m68k_cycles);\r
+void p32x_pwm_write16(u32 a, unsigned int d, SH2 *sh2, unsigned int m68k_cycles);\r
void p32x_pwm_update(int *buf32, int length, int stereo);\r
void p32x_pwm_ctl_changed(void);\r
void p32x_pwm_schedule(unsigned int m68k_now);\r