[Scummvm-cvs-logs] SF.net SVN: scummvm: [29837] scummvm/trunk/engines/cruise

cyx at users.sourceforge.net cyx at users.sourceforge.net
Wed Dec 12 21:55:33 CET 2007


Revision: 29837
          http://scummvm.svn.sourceforge.net/scummvm/?rev=29837&view=rev
Author:   cyx
Date:     2007-12-12 12:55:32 -0800 (Wed, 12 Dec 2007)

Log Message:
-----------
simplify gfxModuleData_field_60, sync with cine code

Modified Paths:
--------------
    scummvm/trunk/engines/cruise/gfxModule.cpp
    scummvm/trunk/engines/cruise/gfxModule.h

Modified: scummvm/trunk/engines/cruise/gfxModule.cpp
===================================================================
--- scummvm/trunk/engines/cruise/gfxModule.cpp	2007-12-12 09:45:51 UTC (rev 29836)
+++ scummvm/trunk/engines/cruise/gfxModule.cpp	2007-12-12 20:55:32 UTC (rev 29837)
@@ -25,6 +25,7 @@
 
 
 #include "common/system.h"
+#include "common/endian.h"
 
 #include "cruise/cruise_main.h"
 
@@ -35,7 +36,6 @@
 
 char screen[320 * 200];
 palEntry lpalette[256];
-short globalAtariScreen[320 * 200 / 4];
 
 int palDirtyMin = 256;
 int palDirtyMax = -1;
@@ -63,476 +63,22 @@
 }
 
 void gfxModuleData_field_60(char *sourcePtr, int width, int height,
-    char *destPtr, int x, int y) {
-				/*
-				 * int loc_1064;
-				 * int loc_10AA;
-				 * int loc_10AD;
-				 * int loc_10C5;
-				 * int loc_10DF;
-				 * int loc_10EC;
-				 * int loc_1147;
-				 * int loc_114B;
-				 * int loc_117C = 0xF8;
-				 * int loc_11DC;
-				 * int loc_1277;
-				 * int loc_12D9;
-				 * int loc_12DD;
-				 *
-				 * int loc_11E7;
-				 * int loc_127A;
-				 * int loc_1203;
-				 * int loc_122B;
-				 * int loc_117F;
-				 * int loc_11EF;
-				 * int loc_1217;
-				 * int loc_12E1;
-				 *
-				 * int tempSwap;
-				 *
-				 * int cx;
-				 * int bp;
-				 * int bpSave;
-				 *
-				 * char* diPtr;
-				 * char* siPtr;
-				 *
-				 * int direction = 1;
-				 * int dx = height;
-				 * int ax = width;
-				 * int es = ax << 1;
-				 * int bx = 0;
-				 * int di = 199;
-				 * int si;
-				 *
-				 * ax = y;
-				 * si = 0;
-				 *
-				 * if (y>199) // out of screen vertically
-				 * return;
-				 *
-				 * if (y<0) // cropped on the top
-				 * {
-				 * cx = bx;
-				 * bx -= ax;
-				 * dx -= bx;
-				 * if (dx <= 0)
-				 * {
-				 * return;
-				 * }
-				 * ax = es; // es = size of a line ?
-				 * ax*=(bx&0xFF); // bx number of lines to skip vertically
-				 * si+=ax;
-				 * ax = cx;
-				 * }
-				 *
-				 * bx = ax;
-				 * ax += dx;
-				 * ax--;
-				 *
-				 * if (ax > di)
-				 * {
-				 * ax -= di;
-				 * dx -= ax;
-				 *
-				 * if (dx <= 0)
-				 * {
-				 * return;
-				 * }
-				 * }
-				 *
-				 * ax = dx;
-				 * loc_10DF = ax;
-				 * ax = bx;
-				 * loc_10AD = ax;
-				 *
-				 * bx = 0;
-				 * di = 319;
-				 *
-				 * ax = x;
-				 * dx = ax;
-				 * cx = ax&0xFF;
-				 * cx &= 7;
-				 * {
-				 * int cl = cx;
-				 * int ch = cl;
-				 *
-				 * cl-=8;
-				 * cl=-cl;
-				 * cl&=7;
-				 * ax = (ch<<8) | (cl);
-				 * }
-				 * loc_1064 = ax;
-				 * ax = es;
-				 * ax <<= 3;
-				 *
-				 * tempSwap = dx;
-				 * dx = ax;
-				 * ax = tempSwap;
-				 *
-				 * if (ax > di)
-				 * {
-				 * return;
-				 * }
-				 *
-				 * cx = ax;
-				 * cx += dx;
-				 * cx --;
-				 *
-				 * dx >>= 3;
-				 *
-				 * dx = dx&0xFF;
-				 *
-				 * if (cx<bx)
-				 * {
-				 * return;
-				 * }
-				 *
-				 * if (cx>di)
-				 * {
-				 * cx -= di;
-				 * cx >>= 3;
-				 * dx = (dx&0xFF00) | (((dx&0xFF) - (cx&0xFF))&0xFF);
-				 * dx = ((cx&0xFF)<<8) | (dx&0xFF);
-				 * di = 0xF8F9;
-				 * }
-				 * else
-				 * {
-				 * di = 0xF8F8;
-				 * }
-				 *
-				 * if (ax<bx)
-				 * {
-				 * ax -= bx;
-				 * ax = -ax;
-				 * ax >>= 3;
-				 *
-				 * si += ax;
-				 * dx = (dx&0xFF00) | (((dx&0xFF)-(ax&0xFF))&0xFF);
-				 * dx = (((dx&0xFF00) + ((ax&0xFF)<<8))&0xFF00) | (dx&0xFF);
-				 * ax = bx;
-				 * cx = di;
-				 * cx = (248<<8)|(cx&0xFF);
-				 * di = cx;
-				 * }
-				 *
-				 * loc_10AA = ax;
-				 * ax = (ax&0xFF00) | (((dx&0xFF00)>>8)&0xFF);
-				 * ax = ax&0xFF;
-				 * loc_10C5 = ax;
-				 * ax = (ax&0xFF00) | (dx&0xFF);
-				 *
-				 * dx = loc_1064;
-				 *
-				 * if (dx)
-				 * {
-				 * if (di&1)
-				 * {
-				 * loc_10C5++;
-				 * }
-				 *
-				 * bx = ax;
-				 * ax--;
-				 * loc_11DC = ax;
-				 *
-				 * if (di&0x100)
-				 * {
-				 * bx--;
-				 * }
-				 *
-				 * ax = bx;
-				 * ax -= 40;
-				 * ax = -ax;
-				 * loc_12D9 = ax;
-				 * ax = di;
-				 * loc_1277 = ax&0xFF;
-				 * ax = (ax&0xFF00) | (((ax&0xFF00)>>8)&0xFF);
-				 * loc_117C = ax&0xFF;
-				 * }
-				 * else
-				 * {
-				 * loc_10EC = ax;
-				 * ax -= 40;
-				 * ax = -ax;
-				 * loc_1147 = ax;
-				 * }
-				 *
-				 * bx = loc_10AA;
-				 * ax = loc_10AD;
-				 * bx = ((((((bx&0xFF00)>>8)&0xFF) + (ax&0xFF))<<8)&0xFF00) | (bx&0xFF);
-				 *
-				 * bx>>=3;
-				 * ax<<=3;
-				 *
-				 * bx+=ax;
-				 *
-				 * diPtr = destPtr;
-				 * diPtr += bx;
-				 *
-				 * ax = loc_10C5;
-				 * ax<<=2;
-				 * loc_114B = ax;
-				 * loc_12DD = ax;
-				 * ax = si;
-				 * ax <<=2;
-				 * siPtr = sourcePtr;
-				 *
-				 * siPtr+=ax;
-				 *
-				 * bp = loc_10DF;
-				 * bx = dx;
-				 * dx = 974;
-				 *
-				 * if (!bx) // no crop ?
-				 * {
-				 * do // for each line
-				 * {
-				 * bpSave = bp;
-				 * cx = loc_10EC;
-				 *
-				 * do // for the line
-				 * {
-				 * outputBit(diPtr,0,*(siPtr));
-				 * outputBit(diPtr,1,*(siPtr+1));
-				 * outputBit(diPtr,2,*(siPtr+2));
-				 * outputBit(diPtr,3,*(siPtr+3));
-				 *
-				 * siPtr+=4;
-				 * diPtr++;
-				 * } while (--cx);
-				 *
-				 * diPtr += loc_1147; // interline
-				 * siPtr += loc_114B;
-				 * bp = bpSave;
-				 * } while (--bp);
-				 * }
-				 * else // croped
-				 * {
-				 * ASSERT(0);
-				 * loc_1156:
-				 * ax = (ax&0xFF00) | bx&0xFF;
-				 * loc_11E7 = ax&0xFF;
-				 * loc_127A = ax&0xFF;
-				 * loc_1203 = ax&0xFF;
-				 * loc_122B = ax&0xFF;
-				 *
-				 * ax = (ax&0xFF00) | (((bx&0xFF00)>>8)&0xFF);
-				 * loc_117F = ax&0xFF;
-				 * loc_11EF = ax&0xFF;
-				 * loc_1217 = ax&0xFF;
-				 *
-				 * do // main copy loop
-				 * {
-				 * ax = bp;
-				 * loc_12E1 = ax;
-				 *
-				 * if (loc_117C == 0xF8)
-				 * {
-				 * direction = 1;
-				 * }
-				 * else
-				 * {
-				 * direction = -1;
-				 * }
-				 *
-				 * if (direction == -1)
-				 * {
-				 * goto label_11DC;
-				 * }
-				 *
-				 * cx = loc_117F;
-				 *
-				 * ax = (ax&0xFF00) | (((*siPtr)&0xFF)>>cx)&0xFF;
-				 * dx = (((ax&0xFF)<<8)&0xFF00) | (dx&0xFF);
-				 * ax = (((ax&0xFF)<<8)&0xFF00) | (ax&0xFF);
-				 *
-				 * ax = (ax&0xFF00) | (((*(siPtr+1))&0xFF)>>cx)&0xFF;
-				 * dx = (dx&0xFF00) | (ax&0xFF);
-				 * ax = ((((((ax&0xFF00)>>8)&0xFF) | (ax&0xFF))<<8)&0xFF00) | (ax&0xFF);
-				 *
-				 * ax = (ax&0xFF00) | (((*(siPtr+2))&0xFF)>>cx)&0xFF;
-				 * bx = (((ax&0xFF)<<8)&0xFF00) | (bx&0xFF);
-				 * ax = ((((((ax&0xFF00)>>8)&0xFF) | (ax&0xFF))<<8)&0xFF00) | (ax&0xFF);
-				 *
-				 * ax = (ax&0xFF00) | (((*(siPtr+3))&0xFF)>>cx)&0xFF;
-				 * bx = (bx&0xFF00) | (ax&0xFF);
-				 * ax = ((((((ax&0xFF00)>>8)&0xFF) | (ax&0xFF))<<8)&0xFF00) | (ax&0xFF);
-				 *
-				 * if (ax)
-				 * {
-				 * bp = dx;
-				 * ax = (ax&0xFF00) | (*diPtr)&0xFF;
-				 * ax = (ax&0xFF00) | 8;
-				 *
-				 * outputBit(diPtr,0,(bp>>8)&0xFF);
-				 * outputBit(diPtr,1,(bp&0xFF));
-				 * outputBit(diPtr,2,(bx>>8)&0xFF);
-				 * outputBit(diPtr,3,(bx&0xFF));
-				 * }
-				 *
-				 * diPtr++;
-				 *
-				 * label_11DC:
-				 *
-				 * bp = loc_11DC;
-				 * if (bp >0)
-				 * {
-				 * do
-				 * {
-				 * cx = loc_11E7;
-				 *
-				 * ax = (ax&0xFF00) | (((*siPtr)&0xFF)>>cx)&0xFF;
-				 * dx = (((ax&0xFF)<<8)&0xFF00) | (dx&0xFF);
-				 * cx = loc_11EF;
-				 * ax = (ax&0xFF00) | (((*(siPtr+4))&0xFF)>>cx)&0xFF;
-				 * dx = (((dx&0xFF00) | (((ax&0xFF)<<8)&0xFF00))&0xFF00) | (dx&0xFF);
-				 * ax = (ax&0xFF00) | (((ax&0xFF) | (((dx&0xFF00)>>8)&0xFF))&0xFF);
-				 * ax = ((ax&0xFF)<<8) | (ax&0xFF);
-				 *
-				 * ax = (ax&0xFF00) | (((*(siPtr+5))&0xFF)>>cx)&0xFF;
-				 * dx = (dx&0xFF00) | (ax&0xFF);
-				 * cx = loc_1203;
-				 * ax = (ax&0xFF00) | (((*(siPtr+1))&0xFF)>>cx)&0xFF;
-				 * dx = (dx&0xFF00) | ((dx&0xFF) | (ax&0xFF));
-				 * ax = (ax&0xFF00) | ((ax&0xFF) | dx&0xFF);
-				 * ax = (ax&0xFF00) | ((ax&0xFF)<<8) | (ax&0xFF);
-				 *
-				 * ax = (ax&0xFF00) | (((*(siPtr+2))&0xFF)>>cx)&0xFF;
-				 * bx = (((ax&0xFF)<<8)&0xFF00) | (bx&0xFF);
-				 * cx = loc_1217;
-				 * ax = (ax&0xFF00) | (((*(siPtr+7))&0xFF)>>cx)&0xFF;
-				 * bx = (((bx&0xFF00) | (((ax&0xFF)<<8)&0xFF00))&0xFF00) | (bx&0xFF);
-				 * ax = (ax&0xFF00) | ((ax&0xFF) | ((bx&0xFF00)>>8));
-				 * ax = (ax&0xFF00) | ((ax&0xFF)<<8) | (ax&0xFF);
-				 *
-				 * ax = (ax&0xFF00) | (((*(siPtr+7))&0xFF)>>cx)&0xFF;
-				 * bx = (bx&0xFF00) | (ax&0xFF);
-				 * cx = loc_122B;
-				 * ax = (ax&0xFF00) | (((*(siPtr+3))&0xFF)>>cx)&0xFF;
-				 * bx = (bx&0xFF00) | ((bx&0xFF) | (ax&0xFF));
-				 * ax = (ax&0xFF00) | ((ax&0xFF) | bx&0xFF);
-				 * ax = (ax&0xFF00) | ((ax&0xFF)<<8) | (ax&0xFF);
-				 *
-				 * if (ax)
-				 * {
-				 * cx = dx;
-				 * ax = (ax&0xFF00) | (*diPtr)&0xFF;
-				 * ax = (ax&0xFF00) | 8;
-				 *
-				 * outputBit(diPtr,0,(cx>>8)&0xFF);
-				 * outputBit(diPtr,1,(cx&0xFF));
-				 * outputBit(diPtr,2,(cx>>8)&0xFF);
-				 * outputBit(diPtr,3,(cx&0xFF));
-				 * }
-				 *
-				 * siPtr += 4;
-				 * diPtr++;
-				 * } while (--bp);
-				 * }
-				 *
-				 * if (loc_122B == 0xF8)
-				 * {
-				 * direction = 1;
-				 * }
-				 * else
-				 * {
-				 * direction = -1;
-				 * }
-				 *
-				 * if (direction == -1)
-				 * {
-				 * goto label_12D9;
-				 * }
-				 *
-				 * cx = loc_127A;
-				 *
-				 * ax = (ax&0xFF00) | (((*siPtr)&0xFF)>>cx)&0xFF;
-				 * dx = (((ax&0xFF)<<8)&0xFF00) | (dx&0xFF);
-				 * ax = (((ax&0xFF)<<8)&0xFF00) | (ax&0xFF);
-				 *
-				 * ax = (ax&0xFF00) | (((*(siPtr+1))&0xFF)>>cx)&0xFF;
-				 * dx = (dx&0xFF00) | (ax&0xFF);
-				 * ax = ((((((ax&0xFF00)>>8)&0xFF) | (ax&0xFF))<<8)&0xFF00) | (ax&0xFF);
-				 *
-				 * ax = (ax&0xFF00) | (((*(siPtr+2))&0xFF)>>cx)&0xFF;
-				 * bx = (((ax&0xFF)<<8)&0xFF00) | (bx&0xFF);
-				 * ax = ((((((ax&0xFF00)>>8)&0xFF) | (ax&0xFF))<<8)&0xFF00) | (ax&0xFF);
-				 *
-				 * ax = (ax&0xFF00) | (((*(siPtr+3))&0xFF)>>cx)&0xFF;
-				 * bx = (bx&0xFF00) | (ax&0xFF);
-				 * ax = ((((((ax&0xFF00)>>8)&0xFF) | (ax&0xFF))<<8)&0xFF00) | (ax&0xFF);
-				 *
-				 * if (ax)
-				 * {
-				 * bp = dx;
-				 * ax = (ax&0xFF00) | (*diPtr)&0xFF;
-				 * ax = (ax&0xFF00) | 8;
-				 *
-				 * outputBit(diPtr,0,(bp>>8)&0xFF);
-				 * outputBit(diPtr,1,(bp&0xFF));
-				 * outputBit(diPtr,2,(bx>>8)&0xFF);
-				 * outputBit(diPtr,3,(bx&0xFF));
-				 * }
-				 *
-				 * siPtr+=4;
-				 *
-				 * label_12D9:
-				 * diPtr+=loc_12D9;
-				 * siPtr+=loc_12DD;
-				 * bp = loc_12E1;
-				 *
-				 * } while (--bp);
-				 * } */
+    char *destPtr, int x_, int y_) {
 
-	{
-		int cols = 320;
-		int rows = 200;
-		int row;
-		int col;
-		int i;
-		uint8 *pP;
-		short atariScreen[320 * 200 / 4];
-
-		for (i = 0; i < rows * cols / 4; i++) {
-			atariScreen[i] = *(int16 *) sourcePtr;
-			flipShort(&atariScreen[i]);
-			sourcePtr += 2;
-		}
-
-		memcpy(globalAtariScreen, atariScreen, sizeof(atariScreen));
-
-		pP = (uint8 *) destPtr;
-
-		for (row = 0; row < rows; ++row) {
-			for (col = 0; col < cols; ++col, ++pP) {
-				long int c, ind, b, plane;
-
-				ind = 80 * row + ((col >> 4) << 2);
-				b = 0x8000 >> (col & 0xf);
-				c = 0;
-
-				for (plane = 0; plane < 4; ++plane) {
-					if (b & atariScreen[ind + plane]) {
-						c |= (1 << plane);
+	for (int y = 0; y < height; ++y) {
+		for (int x = 0; x < width / 8; ++x) {
+			for (int bit = 0; bit < 16; ++bit) {
+				uint8 color = 0;
+				for (int p = 0; p < 4; ++p) {
+					if (READ_BE_UINT16(sourcePtr + p * 2) & (1 << (15 - bit))) {
+						color |= 1 << p;
 					}
 				}
-
-				*pP = (uint8) c;
+				*destPtr++ = color;
 			}
+			sourcePtr += 8;
 		}
 	}
-/*
-	{
-		int i;
-		int j;
-
-		for (i=x;i<height+x;i++) {
-			for (j=y;j<width*16+y;j++) {
-				if (i>=0&&i<200&&j>=0&&j<320)
-					destPtr[i*320+j] = *(sourcePtr++);
-			}
-		}
-	}*/
 }
 
 void gfxModuleData_setDirtyColors(int min, int max) {

Modified: scummvm/trunk/engines/cruise/gfxModule.h
===================================================================
--- scummvm/trunk/engines/cruise/gfxModule.h	2007-12-12 09:45:51 UTC (rev 29836)
+++ scummvm/trunk/engines/cruise/gfxModule.h	2007-12-12 20:55:32 UTC (rev 29837)
@@ -46,7 +46,6 @@
 };
 
 extern gfxModuleDataStruct gfxModuleData;
-extern short globalAtariScreen[320 * 200 / 4];
 
 void gfxModuleData_gfxClearFrameBuffer(uint8 * ptr);
 void gfxModuleData_setDirtyColors(int min, int max);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list