X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Pico%2FDraw2.c;h=054cee972ebd2db88e3c99041c3184fbe664a040;hb=6a13ef3f56a80ac698d463f5d00235ea2a090f52;hp=ec82e44e768de69a634fd8a52adcf52322ebceff;hpb=b542be4686241c9e0722ff8e452980f9ac2b4d7c;p=picodrive.git diff --git a/Pico/Draw2.c b/Pico/Draw2.c index ec82e44..054cee9 100644 --- a/Pico/Draw2.c +++ b/Pico/Draw2.c @@ -27,8 +27,6 @@ #define LINE_WIDTH 328 #endif -int currpri = 0; - static int HighCache2A[41*(TILE_ROWS+1)+1+1]; // caches for high layers static int HighCache2B[41*(TILE_ROWS+1)+1+1]; @@ -284,12 +282,8 @@ static void DrawLayerFull(int plane, int *hcache, int planestart, int planeend) code=Pico.vram[nametab_row+(tilex&xmask)]; if (code==blank) continue; -#ifdef USE_CACHE if (code>>15) { // high priority tile *hcache++ = code|(dx<<16)|(trow<<27); // cache it -#else - if ((code>>15) != currpri) { -#endif continue; } @@ -497,7 +491,7 @@ static void BackFillFull(int reg7) } #endif -static void DrawDisplayFull() +static void DrawDisplayFull(void) { struct PicoVideo *pvid=&Pico.video; int win, edge=0, hvwin=0; // LSb->MSb: hwin&plane, vwin&plane, full @@ -512,7 +506,8 @@ static void DrawDisplayFull() } // horizontal window? - if((win=pvid->reg[0x12])) { + if ((win=pvid->reg[0x12])) + { hvwin=1; // hwindow shares display with plane A edge=win&0x1f; if(win == 0x80) { @@ -531,7 +526,8 @@ static void DrawDisplayFull() } // check for vertical window, but only if win is not fullscreen - if(hvwin != 4) { + if (hvwin != 4) + { win=pvid->reg[0x11]; edge=win&0x1f; if (win&0x80) { @@ -555,15 +551,16 @@ static void DrawDisplayFull() } } - if(hvwin==1) { winend|=maxcolc<<16; planeend|=maxcolc<<16; } + if (hvwin==1) { winend|=maxcolc<<16; planeend|=maxcolc<<16; } - currpri = 0; - DrawLayerFull(1, HighCache2B, START_ROW, (maxcolc<<16)|END_ROW); - switch(hvwin) { + HighCache2A[1] = HighCache2B[1] = 0; + if (PicoDrawMask & PDRAW_LAYERB_ON) + DrawLayerFull(1, HighCache2B, START_ROW, (maxcolc<<16)|END_ROW); + if (PicoDrawMask & PDRAW_LAYERA_ON) switch (hvwin) + { case 4: // fullscreen window DrawWindowFull(START_ROW, (maxcolc<<16)|END_ROW, 0); - HighCache2A[1] = 0; break; case 3: @@ -585,12 +582,13 @@ static void DrawDisplayFull() DrawLayerFull(0, HighCache2A, START_ROW, (maxcolc<<16)|END_ROW); break; } - DrawAllSpritesFull(0, maxw); + if (PicoDrawMask & PDRAW_SPRITES_LOW_ON) + DrawAllSpritesFull(0, maxw); -#ifdef USE_CACHE - if(HighCache2B[1]) DrawTilesFromCacheF(HighCache2B); - if(HighCache2A[1]) DrawTilesFromCacheF(HighCache2A); - switch(hvwin) { + if (HighCache2B[1]) DrawTilesFromCacheF(HighCache2B); + if (HighCache2A[1]) DrawTilesFromCacheF(HighCache2A); + if (PicoDrawMask & PDRAW_LAYERA_ON) switch (hvwin) + { case 4: // fullscreen window DrawWindowFull(START_ROW, (maxcolc<<16)|END_ROW, 1); @@ -608,18 +606,15 @@ static void DrawDisplayFull() DrawWindowFull(winstart, winend, 1); break; } -#else - currpri = 1; - // TODO -#endif - DrawAllSpritesFull(1, maxw); + if (PicoDrawMask & PDRAW_SPRITES_HI_ON) + DrawAllSpritesFull(1, maxw); } PICO_INTERNAL void PicoFrameFull() { // prepare cram? - if(PicoPrepareCram) PicoPrepareCram(); + if (PicoPrepareCram) PicoPrepareCram(); // Draw screen: BackFillFull(Pico.video.reg[7]);