notaz.gp2x.de
/
picodrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed a possible deadlock in DrZ80
[picodrive.git]
/
Pico
/
Draw2.c
diff --git
a/Pico/Draw2.c
b/Pico/Draw2.c
index
2484164
..
9fc413b
100644
(file)
--- a/
Pico/Draw2.c
+++ b/
Pico/Draw2.c
@@
-10,10
+10,6
@@
\r
\r
#include "PicoInt.h"
\r
\r
\r
#include "PicoInt.h"
\r
-#include <assert.h>
\r
-#ifndef __GNUC__
\r
-#pragma warning (disable:4706) // Disable assignment within conditional
\r
-#endif
\r
\r
// port_config.h include must define these 2 defines:
\r
// #define START_ROW 1 // which row of tiles to start rendering at?
\r
\r
// port_config.h include must define these 2 defines:
\r
// #define START_ROW 1 // which row of tiles to start rendering at?
\r
@@
-25,11
+21,10
@@
#define USE_CACHE
\r
\r
\r
#define USE_CACHE
\r
\r
\r
-extern unsigned char *framebuff; // in format (8+320)x(8+224+8) (eights for borders)
\r
int currpri = 0;
\r
\r
int currpri = 0;
\r
\r
-static int HighCacheA[41*(TILE_ROWS+1)+1+1]; // caches for high layers
\r
-static int HighCacheB[41*(TILE_ROWS+1)+1+1];
\r
+static int HighCache
2
A[41*(TILE_ROWS+1)+1+1]; // caches for high layers
\r
+static int HighCache
2
B[41*(TILE_ROWS+1)+1+1];
\r
\r
unsigned short *PicoCramHigh=Pico.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
\r
unsigned short *PicoCramHigh=Pico.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
@@
-143,7
+138,7
@@
static void DrawWindowFull(int start, int end, int prio)
{
\r
struct PicoVideo *pvid=&Pico.video;
\r
int nametab, nametab_step, trow, tilex, blank=-1, code;
\r
{
\r
struct PicoVideo *pvid=&Pico.video;
\r
int nametab, nametab_step, trow, tilex, blank=-1, code;
\r
- unsigned char *scrpos =
framebuff
;
\r
+ unsigned char *scrpos =
PicoDraw2FB
;
\r
int tile_start, tile_end; // in cells
\r
\r
// parse ranges
\r
int tile_start, tile_end; // in cells
\r
\r
// parse ranges
\r
@@
-235,15
+230,15
@@
static void DrawLayerFull(int plane, int *hcache, int planestart, int planeend)
height=(width>>4)&3; width&=3;
\r
\r
xmask=(1<<shift[width ])-1; // X Mask in tiles
\r
height=(width>>4)&3; width&=3;
\r
\r
xmask=(1<<shift[width ])-1; // X Mask in tiles
\r
- ymask=(height<<5)|0x1f; // Y Mask in tiles
\r
- if(width == 1) ymask&=0x3f;
\r
- else if(width>1) ymask =0x1f;
\r
+
ymask=(height<<5)|0x1f; // Y Mask in tiles
\r
+
if(width == 1) ymask&=0x3f;
\r
+
else if(width>1) ymask =0x1f;
\r
\r
// Find name table:
\r
if (plane==0) nametab=(pvid->reg[2]&0x38)<< 9; // A
\r
else nametab=(pvid->reg[4]&0x07)<<12; // B
\r
\r
\r
// Find name table:
\r
if (plane==0) nametab=(pvid->reg[2]&0x38)<< 9; // A
\r
else nametab=(pvid->reg[4]&0x07)<<12; // B
\r
\r
- scrpos =
framebuff
;
\r
+ scrpos =
PicoDraw2FB
;
\r
scrpos+=8*328*(planestart-START_ROW);
\r
\r
// Get vertical scroll value:
\r
scrpos+=8*328*(planestart-START_ROW);
\r
\r
// Get vertical scroll value:
\r
@@
-321,7
+316,7
@@
static void DrawTilesFromCacheF(int *hc)
// unsigned short *pal;
\r
unsigned char pal;
\r
short blank=-1; // The tile we know is blank
\r
// unsigned short *pal;
\r
unsigned char pal;
\r
short blank=-1; // The tile we know is blank
\r
- unsigned char *scrpos =
framebuff
, *pd = 0;
\r
+ unsigned char *scrpos =
PicoDraw2FB
, *pd = 0;
\r
\r
// *hcache++ = code|(dx<<16)|(trow<<27); // cache it
\r
scrpos+=(*hc++)*328 - START_ROW*328*8;
\r
\r
// *hcache++ = code|(dx<<16)|(trow<<27); // cache it
\r
scrpos+=(*hc++)*328 - START_ROW*328*8;
\r
@@
-384,7
+379,7
@@
static void DrawSpriteFull(unsigned int *sprite)
// goto first vertically visible tile
\r
while(sy <= START_ROW*8) { sy+=8; tile+=tdeltay; height--; }
\r
\r
// goto first vertically visible tile
\r
while(sy <= START_ROW*8) { sy+=8; tile+=tdeltay; height--; }
\r
\r
- scrpos =
framebuff
;
\r
+ scrpos =
PicoDraw2FB
;
\r
scrpos+=(sy-START_ROW*8)*328;
\r
\r
for (; height > 0; height--, sy+=8, tile+=tdeltay)
\r
scrpos+=(sy-START_ROW*8)*328;
\r
\r
for (; height > 0; height--, sy+=8, tile+=tdeltay)
\r
@@
-485,7
+480,7
@@
static void DrawAllSpritesFull(int prio, int maxwidth)
static void BackFillFull(int reg7)
\r
{
\r
unsigned int back, i;
\r
static void BackFillFull(int reg7)
\r
{
\r
unsigned int back, i;
\r
- unsigned int *p=(unsigned int *)
framebuff
;
\r
+ unsigned int *p=(unsigned int *)
PicoDraw2FB
;
\r
\r
// Start with a background color:
\r
// back=PicoCramHigh[reg7&0x3f];
\r
\r
// Start with a background color:
\r
// back=PicoCramHigh[reg7&0x3f];
\r
@@
-563,17
+558,17
@@
static void DrawDisplayFull()
if(hvwin==1) { winend|=maxcolc<<16; planeend|=maxcolc<<16; }
\r
\r
currpri = 0;
\r
if(hvwin==1) { winend|=maxcolc<<16; planeend|=maxcolc<<16; }
\r
\r
currpri = 0;
\r
- DrawLayerFull(1, HighCacheB, START_ROW, (maxcolc<<16)|END_ROW);
\r
+ DrawLayerFull(1, HighCache
2
B, START_ROW, (maxcolc<<16)|END_ROW);
\r
switch(hvwin) {
\r
case 4:
\r
// fullscreen window
\r
DrawWindowFull(START_ROW, (maxcolc<<16)|END_ROW, 0);
\r
switch(hvwin) {
\r
case 4:
\r
// fullscreen window
\r
DrawWindowFull(START_ROW, (maxcolc<<16)|END_ROW, 0);
\r
- HighCacheA[1] = 0;
\r
+ HighCache
2
A[1] = 0;
\r
break;
\r
\r
case 3:
\r
// we have plane A and both v and h windows
\r
break;
\r
\r
case 3:
\r
// we have plane A and both v and h windows
\r
- DrawLayerFull(0, HighCacheA, planestart, planeend);
\r
+ DrawLayerFull(0, HighCache
2
A, planestart, planeend);
\r
DrawWindowFull( winstart&~0xff0000, (winend&~0xff0000)|(maxcolc<<16), 0); // h
\r
DrawWindowFull((winstart&~0xff)|START_ROW, (winend&~0xff)|END_ROW, 0); // v
\r
break;
\r
DrawWindowFull( winstart&~0xff0000, (winend&~0xff0000)|(maxcolc<<16), 0); // h
\r
DrawWindowFull((winstart&~0xff)|START_ROW, (winend&~0xff)|END_ROW, 0); // v
\r
break;
\r
@@
-581,20
+576,20
@@
static void DrawDisplayFull()
case 2:
\r
case 1:
\r
// both window and plane A visible, window is vertical XOR horizontal
\r
case 2:
\r
case 1:
\r
// both window and plane A visible, window is vertical XOR horizontal
\r
- DrawLayerFull(0, HighCacheA, planestart, planeend);
\r
+ DrawLayerFull(0, HighCache
2
A, planestart, planeend);
\r
DrawWindowFull(winstart, winend, 0);
\r
break;
\r
\r
default:
\r
// fullscreen plane A
\r
DrawWindowFull(winstart, winend, 0);
\r
break;
\r
\r
default:
\r
// fullscreen plane A
\r
- DrawLayerFull(0, HighCacheA, START_ROW, (maxcolc<<16)|END_ROW);
\r
+ DrawLayerFull(0, HighCache
2
A, START_ROW, (maxcolc<<16)|END_ROW);
\r
break;
\r
}
\r
DrawAllSpritesFull(0, maxw);
\r
\r
#ifdef USE_CACHE
\r
break;
\r
}
\r
DrawAllSpritesFull(0, maxw);
\r
\r
#ifdef USE_CACHE
\r
- if(HighCache
B[1]) DrawTilesFromCacheF(HighCache
B);
\r
- if(HighCache
A[1]) DrawTilesFromCacheF(HighCache
A);
\r
+ if(HighCache
2B[1]) DrawTilesFromCacheF(HighCache2
B);
\r
+ if(HighCache
2A[1]) DrawTilesFromCacheF(HighCache2
A);
\r
switch(hvwin) {
\r
case 4:
\r
// fullscreen window
\r
switch(hvwin) {
\r
case 4:
\r
// fullscreen window
\r
@@
-621,7
+616,7
@@
static void DrawDisplayFull()
}
\r
\r
\r
}
\r
\r
\r
-void PicoFrameFull()
\r
+
PICO_INTERNAL
void PicoFrameFull()
\r
{
\r
// prepare cram?
\r
if(PicoPrepareCram) PicoPrepareCram();
\r
{
\r
// prepare cram?
\r
if(PicoPrepareCram) PicoPrepareCram();
\r