+++ /dev/null
-static int EmulateScanFull16(unsigned int scan,unsigned short *data)\r
-{\r
- unsigned short *ps=NULL,*end=NULL;\r
- unsigned short *pd=NULL;\r
- unsigned short *pdSrc1 = NULL;\r
- unsigned short *pdSrc2 = NULL;\r
- int screenScan;\r
-\r
- int index = 0;\r
- int xpitch=0;\r
- TInt retValue = 0;\r
- if(scan<224)\r
- retValue = 1-(gLineTable[scan+1]-gLineTable[scan]);\r
- screenScan = gLineTable[scan];\r
- \r
- if ((int)screenScan< 0) return 0; // Out of range\r
- if ((int)screenScan>=Targ.view.iBr.iY) return 0; // Out of range\r
- \r
- pd=(unsigned short*)(Targ.screen+screenScan*2+Targ.screen_offset);\r
- pdSrc1 = pd;\r
- \r
- xpitch=-(Targ.scanline_length>>1);\r
- if((Pico.video.reg[12]&1))\r
- {\r
- ps=data; end=ps+320;\r
- do\r
- {\r
- if(gColumnStepTable[index]>1)\r
- {\r
- *pd = gColorMapTab[*ps];\r
- pd+=xpitch;\r
- *pd = ((gColorMapTab[*ps]+gColorMapTab[*(ps+1)])>>1); \r
- index++;\r
- ps++;\r
- }\r
- else if(gColumnStepTable[index]>0)\r
- {\r
- *pd = gColorMapTab[*ps];\r
- index++;\r
- ps++; \r
- }\r
- else\r
- {\r
- *pd = ((gColorMapTab[*ps]+gColorMapTab[*(ps+1)])>>1);\r
- ps+=2;\r
- index+=2;\r
- }\r
- pd+=xpitch;\r
- }\r
- while (ps<end);\r
- }\r
- else\r
- {\r
- ps=data+32; end=ps+256;\r
- \r
- // Reduce 10 pixels into 7\r
- do\r
- {\r
- if(gNarrowColumnStepTable[index]>1)\r
- {\r
- *pd = gColorMapTab[*ps];\r
- pd+=xpitch;\r
- *pd = ((gColorMapTab[*ps]+gColorMapTab[*(ps+1)])>>1); \r
- index++;\r
- }\r
- else if(gNarrowColumnStepTable[index]>0)\r
- {\r
- *pd = gColorMapTab[*ps];\r
- ps++;\r
- index++;\r
- }\r
- else\r
- {\r
- *pd = ((gColorMapTab[*ps]+gColorMapTab[*(ps+1)])>>1);\r
- ps+=2;\r
- index+=2;\r
- }\r
- pd+=xpitch; \r
- }\r
- while (ps<end); \r
- }\r
-\r
- if(scan>0 && screenScan != gLineTable[scan-1]+1)\r
- { \r
- pdSrc2 = pdSrc1-2;\r
- pd = pdSrc1-1;\r
-\r
- for(TInt loop=0;loop<Targ.view.iBr.iY;loop++)\r
- {\r
- *pd=((*pdSrc1+*pdSrc2)>>1);\r
- pd+=xpitch;\r
- pdSrc1+=xpitch;\r
- pdSrc2+=xpitch;\r
- }\r
- \r
- }\r
-\r
- return retValue;\r
-}\r
-\r
-static int EmulateScanFullRight16(unsigned int scan,unsigned short *data)\r
-{\r
- unsigned short *ps=NULL,*end=NULL;\r
- unsigned short *pd=NULL;\r
- unsigned short *pdSrc1 = NULL;\r
- unsigned short *pdSrc2 = NULL;\r
- int screenScan;\r
- int xpitch=0;\r
- int retValue = 0;\r
- int index = 0;\r
- if(scan<224)\r
- retValue = 1-(gLineTable[scan+1]-gLineTable[scan]);\r
- screenScan = gLineTable[scan];\r
-\r
- if ((int)screenScan< 0) return 0; // Out of range\r
- if ((int)screenScan>=Targ.view.iBr.iY) return 0; // Out of range\r
- \r
- pd=(unsigned short*)(Targ.screen+Targ.scanline_length-screenScan*2);\r
- pdSrc1 = pd;\r
- \r
- xpitch=+(Targ.scanline_length>>1);\r
- if((Pico.video.reg[12]&1))\r
- {\r
- ps=data; end=ps+320;\r
- do\r
- {\r
- if(gColumnStepTable[index]>1)\r
- {\r
- *pd = gColorMapTab[*ps];\r
- pd+=xpitch;\r
- *pd = ((gColorMapTab[*ps]+gColorMapTab[*(ps+1)])>>1); \r
- index++;\r
- ps++;\r
- }\r
- else if(gColumnStepTable[index]>0)\r
- {\r
- *pd = gColorMapTab[*ps];\r
- index++;\r
- ps++; \r
- }\r
- else\r
- {\r
- *pd = ((gColorMapTab[*ps]+gColorMapTab[*(ps+1)])>>1);\r
- ps+=2;\r
- index+=2;\r
- }\r
- pd+=xpitch;\r
- }\r
- while (ps<end);\r
- }\r
- else\r
- {\r
- ps=data+32; end=ps+256;\r
- \r
- // Reduce 10 pixels into 7\r
- do\r
- {\r
- if(gNarrowColumnStepTable[index]>1)\r
- {\r
- *pd = gColorMapTab[*ps];\r
- pd+=xpitch;\r
- *pd = ((gColorMapTab[*ps]+gColorMapTab[*(ps+1)])>>1); \r
- index++;\r
- }\r
- else if(gNarrowColumnStepTable[index]>0)\r
- {\r
- *pd = gColorMapTab[*ps];\r
- ps++;\r
- index++;\r
- }\r
- else\r
- {\r
- *pd = ((gColorMapTab[*ps]+gColorMapTab[*(ps+1)])>>1);\r
- ps+=2;\r
- index+=2;\r
- }\r
- pd+=xpitch; \r
- }\r
- while (ps<end); \r
- }\r
-\r
- if(scan>0 && screenScan != gLineTable[scan-1]+1)\r
- { \r
- pdSrc2 = pdSrc1+2;\r
- pd = pdSrc1+1;\r
-\r
- for(TInt loop=0;loop<Targ.view.iBr.iY;loop++)\r
- {\r
- *pd=((*pdSrc1+*pdSrc2)>>1);\r
- pd+=xpitch;\r
- pdSrc1+=xpitch;\r
- pdSrc2+=xpitch;\r
- }\r
- \r
- }\r
- \r
- return retValue;\r
-}\r
-\r
-\r
-\r
-static int EmulateScan16(unsigned int scan,unsigned short *data)\r
-{\r
- // int len=0;\r
- unsigned short *ps=NULL,*end=NULL;\r
- unsigned short *pd=NULL;\r
- int xpitch=0;\r
- int retValue = 0;\r
- int index = 0;\r
-\r
- if(scan<224)\r
- retValue = 1-(gLineTable[scan+1]-gLineTable[scan]);\r
- scan = gLineTable[scan];\r
- \r
- if ((int)scan< 0) return 0; // Out of range\r
- if ((int)scan>=Targ.view.iBr.iY) return 0; // Out of range\r
- \r
- pd=(unsigned short*)(Targ.screen+scan*Targ.scanline_length);\r
- \r
- xpitch=2;\r
- if((Pico.video.reg[12]&1))\r
- {\r
- ps=data; end=ps+320;\r
- do\r
- {\r
- if(gColumnStepTable[index]>0)\r
- {\r
- *pd = gColorMapTab[*ps];\r
- ps++;\r
- \r
- index++;\r
- }\r
- else\r
- {\r
- *pd = ((gColorMapTab[*ps]+gColorMapTab[*(ps+1)])>>1);\r
- ps+=2;\r
- index+=2;\r
- }\r
- pd++;\r
- \r
- }\r
- while (ps<end);\r
- } \r
- else\r
- {\r
- ps=data+32; end=ps+256;\r
- // Reduce 10 pixels into 7\r
- do\r
- {\r
- if(gNarrowColumnStepTable[index]>0)\r
- {\r
- *pd = gColorMapTab[*ps];\r
- ps++;\r
- index++;\r
- }\r
- else\r
- {\r
- *pd = ((gColorMapTab[*ps]+gColorMapTab[*(ps+1)])>>1);\r
- ps+=2;\r
- index+=2;\r
- }\r
- pd++; \r
- }\r
- while (ps<end);\r
- \r
- }\r
- \r
- return retValue;\r
-}\r
-\r
-static int EmulateStretchScan16(unsigned int scan,unsigned short *data)\r
-{\r
- unsigned short *ps=NULL,*end=NULL;\r
- unsigned short *pd=NULL;\r
- unsigned short *pdSrc1 = NULL;\r
- unsigned short *pdSrc2 = NULL;\r
-\r
- int retValue = 0;\r
- int index = 0;\r
- int screenScan;\r
- if(scan<224)\r
- retValue = 1-(gLineTable[scan+1]-gLineTable[scan]);\r
- screenScan = gLineTable[scan];\r
-\r
- if ((int)screenScan<0) \r
- return 0; // Out of range\r
- if ((int)screenScan>=Targ.view.iBr.iY) \r
- return 0; // Out of range\r
- \r
- pd=(unsigned short*)(Targ.screen+screenScan*Targ.scanline_length);\r
- pdSrc1 = pd;\r
-\r
- if((Pico.video.reg[12]&1))\r
- {\r
- ps=data; end=ps+320; \r
- do\r
- {\r
- if(gColumnStepTable[index]>1)\r
- {\r
- *pd = gColorMapTab[*ps];\r
- pd++;\r
- *pd = ((gColorMapTab[*ps]+gColorMapTab[*(ps+1)])>>1); \r
- index++;\r
- ps++;\r
- }\r
- else if(gColumnStepTable[index]>0)\r
- {\r
- *pd = gColorMapTab[*ps];\r
- index++;\r
- ps++; \r
- }\r
- else\r
- {\r
- *pd = ((gColorMapTab[*ps]+gColorMapTab[*(ps+1)])>>1);\r
- ps+=2;\r
- index+=2;\r
- }\r
- pd++;\r
- }\r
- while (ps<end);\r
-\r
- \r
- \r
- }\r
- else\r
- {\r
- ps=data+32; end=ps+256;\r
- // Reduce 10 pixels into 7\r
- do\r
- {\r
- if(gNarrowColumnStepTable[index]>1)\r
- {\r
- *pd = gColorMapTab[*ps];\r
- pd++;\r
- *pd = ((gColorMapTab[*ps]+gColorMapTab[*(ps+1)])>>1); \r
- index++;\r
- }\r
- else if(gNarrowColumnStepTable[index]>0)\r
- {\r
- *pd = gColorMapTab[*ps];\r
- ps++;\r
- index++;\r
- }\r
- else\r
- {\r
- *pd = ((gColorMapTab[*ps]+gColorMapTab[*(ps+1)])>>1);\r
- ps+=2;\r
- index+=2;\r
- }\r
- pd++; \r
- }\r
- while (ps<end); \r
- }\r
-\r
- if(scan>0 && screenScan != gLineTable[scan-1]+1)\r
- { \r
- pdSrc2 = pdSrc1-Targ.scanline_length;\r
- pd = pdSrc1-(Targ.scanline_length>>1);\r
-\r
- for(TInt loop=0;loop<Targ.view.iBr.iX;loop++)\r
- {\r
- *pd=((*pdSrc1+*pdSrc2)>>1);\r
- pd++;\r
- pdSrc1++;\r
- pdSrc2++;\r
- }\r
- \r
- }\r
- \r
- return retValue;\r
-}\r