core, fixes and improvements for type issues
authorkub <derkub@gmail.com>
Tue, 29 Dec 2020 10:27:11 +0000 (11:27 +0100)
committerkub <derkub@gmail.com>
Tue, 29 Dec 2020 10:27:11 +0000 (11:27 +0100)
pico/32x/pwm.c
pico/carthw/svp/svp.c
pico/cd/gfx_dma.c
pico/draw.c
pico/draw2.c
pico/mode4.c
pico/pico_int.h
pico/sound/ym2612.h
pico/videoport.c

index ec4bdb3..8fccc98 100644 (file)
@@ -171,8 +171,7 @@ void p32x_pwm_irq_event(unsigned int m68k_now)
   p32x_pwm_schedule(m68k_now);
 }
 
-unsigned int p32x_pwm_read16(unsigned int a, SH2 *sh2,
-  unsigned int m68k_cycles)
+unsigned int p32x_pwm_read16(u32 a, SH2 *sh2, unsigned int m68k_cycles)
 {
   unsigned int d = 0;
 
@@ -206,8 +205,7 @@ unsigned int p32x_pwm_read16(unsigned int a, SH2 *sh2,
   return d;
 }
 
-void p32x_pwm_write16(unsigned int a, unsigned int d,
-  SH2 *sh2, unsigned int m68k_cycles)
+void p32x_pwm_write16(u32 a, unsigned int d, SH2 *sh2, unsigned int m68k_cycles)
 {
   unsigned short *fifo;
   int idx;
index c50eb85..8bde779 100644 (file)
@@ -92,7 +92,7 @@ static void PicoSVPLine(void)
 }
 
 
-static int PicoSVPDma(unsigned int source, int len, unsigned short **base, unsigned int *mask)
+static int PicoSVPDma(u32 source, int len, unsigned short **base, unsigned int *mask)
 {
        if (source < Pico.romsize) // Rom
        {
index 354fc21..76777d2 100644 (file)
@@ -11,7 +11,7 @@
 #include "cell_map.c"
 
 // check: Heart of the alien, jaguar xj 220
-PICO_INTERNAL void DmaSlowCell(unsigned int source, unsigned int a, int len, unsigned char inc)
+PICO_INTERNAL void DmaSlowCell(u32 source, u32 a, int len, unsigned char inc)
 {
   unsigned char *base;
   unsigned int asrc, a2;
index a9e7bde..27a48a8 100644 (file)
@@ -53,15 +53,15 @@ static unsigned char DefHighCol[8+320+8];
 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
@@ -104,7 +104,7 @@ struct TileStrip
   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
@@ -114,10 +114,10 @@ void DrawWindow(int tstart, int tend, int prio, int sh,
                 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
@@ -134,7 +134,7 @@ void blockcpy_or(void *dst, void *src, size_t n, int pat)
 \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
@@ -149,7 +149,7 @@ void blockcpy_or(void *dst, void *src, size_t n, int pat)
 \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
@@ -163,24 +163,24 @@ void blockcpy_or(void *dst, void *src, size_t n, int pat)
 }\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
@@ -189,28 +189,26 @@ TileFlipMaker(TileFlip, pix_just_write)
 \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
@@ -219,7 +217,7 @@ TileFlipMaker(TileFlipSH_markop, pix_sh_markop)
 \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
@@ -233,7 +231,8 @@ TileFlipMaker(TileFlipSH_onlyop_lp, pix_sh_onlyop)
 \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
@@ -241,10 +240,9 @@ TileFlipMakerAS(TileFlipAS, pix_as)
 // 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
@@ -252,7 +250,7 @@ TileFlipMakerAS(TileFlipSH_AS, pix_sh_as)
 \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
@@ -262,7 +260,7 @@ TileFlipMakerAS(TileFlipSH_AS_onlyop_lp, pix_sh_as_onlyop)
 \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
@@ -272,7 +270,7 @@ TileFlipMakerAS(TileFlipAS_onlymark, pix_sh_as_onlymark)
 // 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
@@ -280,9 +278,9 @@ TileFlipMaker(TileFlip_and, pix_and)
 // 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
@@ -295,7 +293,7 @@ TileFlipMakerAS(TileFlipSH_AS_and, pix_sh_as_and)
 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
@@ -329,7 +327,7 @@ static void DrawStrip(struct TileStrip *ts, int lflags, int cellskip)
 \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
@@ -356,7 +354,7 @@ static void DrawStrip(struct TileStrip *ts, int lflags, int cellskip)
 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
@@ -418,7 +416,7 @@ static void DrawStripVSRam(struct TileStrip *ts, int plane_sh, int cellskip)
     }\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
@@ -445,7 +443,7 @@ static
 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
@@ -478,7 +476,7 @@ void DrawStripInterlace(struct TileStrip *ts, int plane_sh)
 \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
@@ -504,7 +502,7 @@ void DrawStripInterlace(struct TileStrip *ts, int plane_sh)
 // --------------------------------------------\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
@@ -628,7 +626,7 @@ static void DrawWindow(int tstart, int tend, int prio, int sh,
       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
@@ -670,7 +668,7 @@ static void DrawWindow(int tstart, int tend, int prio, int sh,
       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
@@ -699,7 +697,7 @@ static void DrawTilesFromCacheShPrep(void)
   }\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
@@ -797,12 +795,13 @@ last_cut_tile:
 // 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
@@ -848,7 +847,7 @@ static void DrawSprite(int *sprite, int sh, int w)
     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
@@ -894,7 +893,7 @@ static void DrawSpriteInterlace(unsigned int *sprite)
     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
@@ -917,7 +916,7 @@ static NOINLINE void DrawAllSpritesInterlace(int pri, int sh)
     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
@@ -959,11 +958,11 @@ static NOINLINE void DrawAllSpritesInterlace(int pri, int sh)
  */\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
@@ -979,7 +978,8 @@ static void DrawSpritesSHi(unsigned char *sprited, const struct PicoEState *est)
   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
@@ -1016,7 +1016,7 @@ static void DrawSpritesSHi(unsigned char *sprited, const struct PicoEState *est)
       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
@@ -1025,11 +1025,11 @@ static void DrawSpritesSHi(unsigned char *sprited, const struct PicoEState *est)
 \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
@@ -1047,7 +1047,8 @@ static void DrawSpritesHiAS(unsigned char *sprited, int sh)
   // 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
@@ -1084,7 +1085,7 @@ static void DrawSpritesHiAS(unsigned char *sprited, int sh)
 \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
@@ -1127,7 +1128,7 @@ static void DrawStripForced(struct TileStrip *ts, int cellskip)
       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
@@ -1191,7 +1192,7 @@ static void DrawStripVSRamForced(struct TileStrip *ts, int plane_sh, int cellski
     }\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
@@ -1225,7 +1226,7 @@ void DrawStripInterlaceForced(struct TileStrip *ts)
 \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
@@ -1305,7 +1306,7 @@ static void DrawLayerForced(int plane_sh, int cellskip, int maxcells,
 \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
@@ -1323,7 +1324,8 @@ static void DrawSpritesForced(unsigned char *sprited)
   // 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
@@ -1361,7 +1363,7 @@ static void DrawSpritesForced(unsigned char *sprited)
 \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
@@ -1395,7 +1397,7 @@ static NOINLINE void PrepareSprites(int max_lines)
   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
@@ -1418,7 +1420,7 @@ static NOINLINE void PrepareSprites(int max_lines)
     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
@@ -1521,7 +1523,7 @@ static void DrawAllSprites(unsigned char *sprited, int prio, int sh,
   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
index ec1a12c..a1adaee 100644 (file)
@@ -25,8 +25,8 @@
 \r
 static unsigned char PicoDraw2FB_[(8+320) * (8+240+8) + 8];\r
 \r
-static int HighCache2A[2*41*(TILE_ROWS+1)+1+1]; // caches for high layers\r
-static int HighCache2B[2*41*(TILE_ROWS+1)+1+1];\r
+static u32 HighCache2A[2*41*(TILE_ROWS+1)+1+1]; // caches for high layers\r
+static u32 HighCache2B[2*41*(TILE_ROWS+1)+1+1];\r
 \r
 unsigned short *PicoCramHigh=PicoMem.cram; // pointer to CRAM buff (0x40 shorts), converted to native device color (works only with 16bit for now)\r
 void (*PicoPrepareCram)()=0;            // prepares PicoCramHigh for renderer to use\r
@@ -35,9 +35,9 @@ void (*PicoPrepareCram)()=0;            // prepares PicoCramHigh for renderer to
 // stuff available in asm:\r
 #ifdef _ASM_DRAW_C\r
 void BackFillFull(void *dst, int reg7);\r
-void DrawLayerFull(int plane, int *hcache, int planestart, int planeend,\r
+void DrawLayerFull(int plane, u32 *hcache, int planestart, int planeend,\r
                    struct PicoEState *est);\r
-void DrawTilesFromCacheF(int *hc, struct PicoEState *est);\r
+void DrawTilesFromCacheF(u32 *hc, struct PicoEState *est);\r
 void DrawWindowFull(int start, int end, int prio, struct PicoEState *est);\r
 void DrawSpriteFull(unsigned int *sprite, struct PicoEState *est);\r
 #else\r
@@ -52,7 +52,7 @@ static int TileXnormYnorm(unsigned char *pd,int addr,unsigned char pal, struct P
        if ((pvid->reg[12]&6) == 6) inc = 4;\r
 #endif\r
        for(i=8; i; i--, addr+=inc, pd += LINE_WIDTH) {\r
-               pack=*(unsigned int *)(PicoMem.vram+addr); // Get 8 pixels\r
+               pack=*(u32 *)(PicoMem.vram+addr); // Get 8 pixels\r
                if(!pack) continue;\r
 \r
                t=pack&0x0000f000; if (t) pd[0]=(unsigned char)((t>>12)|pal);\r
@@ -78,7 +78,7 @@ static int TileXflipYnorm(unsigned char *pd,int addr,unsigned char pal, struct P
        if ((pvid->reg[12]&6) == 6) inc = 4;\r
 #endif\r
        for(i=8; i; i--, addr+=inc, pd += LINE_WIDTH) {\r
-               pack=*(unsigned int *)(PicoMem.vram+addr); // Get 8 pixels\r
+               pack=*(u32 *)(PicoMem.vram+addr); // Get 8 pixels\r
                if(!pack) continue;\r
 \r
                t=pack&0x000f0000; if (t) pd[0]=(unsigned char)((t>>16)|pal);\r
@@ -104,7 +104,7 @@ static int TileXnormYflip(unsigned char *pd,int addr,unsigned char pal, struct P
 #endif\r
        addr+=14;\r
        for(i=8; i; i--, addr-=inc, pd += LINE_WIDTH) {\r
-               pack=*(unsigned int *)(PicoMem.vram+addr); // Get 8 pixels\r
+               pack=*(u32 *)(PicoMem.vram+addr); // Get 8 pixels\r
                if(!pack) continue;\r
 \r
                t=pack&0x0000f000; if (t) pd[0]=(unsigned char)((t>>12)|pal);\r
@@ -131,7 +131,7 @@ static int TileXflipYflip(unsigned char *pd,int addr,unsigned char pal, struct P
 #endif\r
        addr+=14;\r
        for(i=8; i; i--, addr-=inc, pd += LINE_WIDTH) {\r
-               pack=*(unsigned int *)(PicoMem.vram+addr); // Get 8 pixels\r
+               pack=*(u32 *)(PicoMem.vram+addr); // Get 8 pixels\r
                if(!pack) continue;\r
 \r
                t=pack&0x000f0000; if (t) pd[0]=(unsigned char)((t>>16)|pal);\r
@@ -215,7 +215,7 @@ static void DrawWindowFull(int start, int end, int prio, struct PicoEState *est)
 }\r
 \r
 \r
-static void DrawLayerFull(int plane, int *hcache, int planestart, int planeend,\r
+static void DrawLayerFull(int plane, u32 *hcache, int planestart, int planeend,\r
                          struct PicoEState *est)\r
 {\r
        struct PicoVideo *pvid=&Pico.video;\r
@@ -347,9 +347,10 @@ static void DrawLayerFull(int plane, int *hcache, int planestart, int planeend,
 }\r
 \r
 \r
-static void DrawTilesFromCacheF(int *hc, struct PicoEState *est)\r
+static void DrawTilesFromCacheF(u32 *hc, struct PicoEState *est)\r
 {\r
-       int code, addr, zero = 0, vscroll;\r
+       u32 code;\r
+       int addr, zero = 0, vscroll;\r
        unsigned int prevy=0xFFFFFFFF;\r
 //     unsigned short *pal;\r
        unsigned char pal;\r
@@ -481,7 +482,7 @@ static void DrawAllSpritesFull(int prio, int maxwidth)
                unsigned int *sprite=NULL;\r
                int code, code2, 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
index 8de41ae..f8ce646 100644 (file)
@@ -145,7 +145,7 @@ static void draw_sprites(int scanline)
 
   // now draw all sprites backwards
   for (--s; s >= 0; s--) {
-    pack = *(unsigned int *)(PicoMem.vram + sprites_addr[s]);
+    pack = *(u32 *)(PicoMem.vram + sprites_addr[s]);
     TileNormM4(sprites_x[s], pack, 0x10);
   }
 }
@@ -161,7 +161,7 @@ static void draw_strip_low(const unsigned short *nametab, int dx, int cells, int
   for (; cells > 0; dx += 8, tilex_ty_prio++, cells--)
   {
     unsigned int pack;
-    int code;
+    unsigned code;
 
     code = nametab[tilex_ty_prio & 0x1f];
 
@@ -176,7 +176,7 @@ static void draw_strip_low(const unsigned short *nametab, int dx, int cells, int
       pal = (code>>7) & 0x10;
     }
 
-    pack = *(unsigned int *)(PicoMem.vram + addr); /* Get 4 bitplanes / 8 pixels */
+    pack = *(u32 *)(PicoMem.vram + addr); /* Get 4 bitplanes / 8 pixels */
     if (pack == 0)          TileBGM4(dx, pal);
     else if (code & 0x0200) TileFlipM4Low(dx, pack, pal);
     else                    TileNormM4Low(dx, pack, pal);
@@ -192,7 +192,7 @@ static void draw_strip_high(const unsigned short *nametab, int dx, int cells, in
   for (; cells > 0; dx += 8, tilex_ty_prio++, cells--)
   {
     unsigned int pack;
-    int code;
+    unsigned code;
 
     code = nametab[tilex_ty_prio & 0x1f];
     if (code == blank)
@@ -211,7 +211,7 @@ static void draw_strip_high(const unsigned short *nametab, int dx, int cells, in
       pal = (code>>7) & 0x10;
     }
 
-    pack = *(unsigned int *)(PicoMem.vram + addr); /* Get 4 bitplanes / 8 pixels */
+    pack = *(u32 *)(PicoMem.vram + addr); /* Get 4 bitplanes / 8 pixels */
     if (pack == 0) {
       blank = code;
       continue;
index 411d9f9..b4b9a85 100644 (file)
@@ -354,7 +354,7 @@ struct PicoEState
   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
@@ -671,7 +671,7 @@ extern unsigned char *HighColBase;
 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
@@ -686,10 +686,10 @@ void PicoDrawSetOutputMode4(pdso_t which);
 \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
@@ -727,14 +727,14 @@ int gfx_context_save(unsigned char *state);
 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
@@ -844,7 +844,7 @@ void ym2612_unpack_state(void);
 \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
@@ -862,15 +862,15 @@ static __inline void VideoWriteVRAM(u32 a, u16 d)
     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
@@ -996,10 +996,8 @@ enum {
 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
index e73c973..9b4fd72 100644 (file)
@@ -6,15 +6,16 @@
 #define _H_FM_FM_\r
 \r
 /* compiler dependence */\r
+#include <stdint.h>\r
 #ifndef UINT8\r
-typedef unsigned char  UINT8;   /* unsigned  8bit */\r
-typedef unsigned short UINT16;  /* unsigned 16bit */\r
-typedef unsigned int   UINT32;  /* unsigned 32bit */\r
+typedef uint8_t                UINT8;   /* unsigned  8bit */\r
+typedef uint16_t       UINT16;  /* unsigned 16bit */\r
+typedef uint32_t       UINT32;  /* unsigned 32bit */\r
 #endif\r
 #ifndef INT8\r
-typedef signed char            INT8;    /* signed  8bit   */\r
-typedef signed short   INT16;   /* signed 16bit   */\r
-typedef signed int             INT32;   /* signed 32bit   */\r
+typedef int8_t         INT8;    /* signed  8bit   */\r
+typedef int16_t                INT16;   /* signed 16bit   */\r
+typedef int32_t                INT32;   /* signed 32bit   */\r
 #endif\r
 \r
 #if 1\r
index e8604c3..8e42e30 100644 (file)
@@ -20,7 +20,7 @@ extern const unsigned short vdpsl2cyc_32[], vdpsl2cyc_40[];
 \r
 static int blankline;           // display disabled for this line\r
 \r
-unsigned SATaddr, SATmask;      // VRAM addr of sprite attribute table\r
+u32 SATaddr, SATmask;      // VRAM addr of sprite attribute table\r
 \r
 int (*PicoDmaHook)(unsigned int source, int len, unsigned short **base, unsigned int *mask) = NULL;\r
 \r
@@ -335,7 +335,7 @@ static NOINLINE void VideoWriteVRAM128(u32 a, u16 d)
   u32 b = ((a & 2) >> 1) | ((a & 0x400) >> 9) | (a & 0x3FC) | ((a & 0x1F800) >> 1);\r
 \r
   ((u8 *)PicoMem.vram)[b] = d;\r
-  if (!((u16)(b^SATaddr) & SATmask))\r
+  if (!(u16)((b^SATaddr) & SATmask))\r
     Pico.est.rendstatus |= PDRAW_DIRTY_SPRITES;\r
 \r
   if (((a^SATaddr) & SATmask) == 0)\r
@@ -402,7 +402,7 @@ static int GetDmaLength(void)
   return len;\r
 }\r
 \r
-static void DmaSlow(int len, unsigned int source)\r
+static void DmaSlow(int len, u32 source)\r
 {\r
   u32 inc = Pico.video.reg[0xf];\r
   u32 a = Pico.video.addr | (Pico.video.addr_u << 16);\r
@@ -881,9 +881,10 @@ update_irq:
 \r
 static u32 VideoSr(const struct PicoVideo *pv)\r
 {\r
-  unsigned int c, d = pv->status;\r
   unsigned int hp = pv->reg[12]&1 ? 15*488/210+1 : 15*488/171+1; // HBLANK start\r
   unsigned int hl = pv->reg[12]&1 ? 37*488/210+1 : 28*488/171+1; // HBLANK len\r
+  unsigned int c;\r
+  u32 d = pv->status;\r
 \r
   c = SekCyclesDone() - Pico.t.m68c_line_start;\r
   if (c - hp < hl)\r
@@ -897,14 +898,14 @@ static u32 VideoSr(const struct PicoVideo *pv)
   return d;\r
 }\r
 \r
-PICO_INTERNAL_ASM unsigned int PicoVideoRead(unsigned int a)\r
+PICO_INTERNAL_ASM u32 PicoVideoRead(u32 a)\r
 {\r
   a &= 0x1c;\r
 \r
   if (a == 0x04) // control port\r
   {\r
     struct PicoVideo *pv = &Pico.video;\r
-    unsigned int d = VideoSr(pv);\r
+    u32 d = VideoSr(pv);\r
     if (pv->pending) {\r
       CommandChange(pv);\r
       pv->pending = 0;\r
@@ -930,14 +931,15 @@ PICO_INTERNAL_ASM unsigned int PicoVideoRead(unsigned int a)
   // check: Sonic 3D Blast bonus, Cannon Fodder, Chase HQ II, 3 Ninjas kick back, Road Rash 3, Skitchin', Wheel of Fortune\r
   if ((a&0x1c)==0x08)\r
   {\r
-    unsigned int d;\r
+    unsigned int c;\r
+    u32 d;\r
 \r
-    d = (SekCyclesDone() - Pico.t.m68c_line_start) & 0x1ff; // FIXME\r
+    c = (SekCyclesDone() - Pico.t.m68c_line_start) & 0x1ff; // FIXME\r
     if (Pico.video.reg[0]&2)\r
          d = Pico.video.hv_latch;\r
     else if (Pico.video.reg[12]&1)\r
-         d = hcounts_40[d/2] | (Pico.video.v_counter << 8);\r
-    else d = hcounts_32[d/2] | (Pico.video.v_counter << 8);\r
+         d = hcounts_40[c/2] | (Pico.video.v_counter << 8);\r
+    else d = hcounts_32[c/2] | (Pico.video.v_counter << 8);\r
 \r
     elprintf(EL_HVCNT, "hv: %02x %02x [%u] @ %06x", d, Pico.video.v_counter, SekCyclesDone(), SekPc);\r
     return d;\r