diff options
author | Paul Gilbert | 2009-03-16 09:45:37 +0000 |
---|---|---|
committer | Paul Gilbert | 2009-03-16 09:45:37 +0000 |
commit | 34d3d7c74dcdd36acf6172c02ca3874c75073852 (patch) | |
tree | f91c12e150cab7a51553262e36bfdde0c84119d5 | |
parent | 7d85194eaae2e741ca9b2e55c91eaa2cdf4ff0c3 (diff) | |
download | scummvm-rg350-34d3d7c74dcdd36acf6172c02ca3874c75073852.tar.gz scummvm-rg350-34d3d7c74dcdd36acf6172c02ca3874c75073852.tar.bz2 scummvm-rg350-34d3d7c74dcdd36acf6172c02ca3874c75073852.zip |
Code formatting, added further constant references, and corrected method signatures
svn-id: r39445
-rw-r--r-- | engines/cruise/background.cpp | 16 | ||||
-rw-r--r-- | engines/cruise/background.h | 2 | ||||
-rw-r--r-- | engines/cruise/backgroundIncrust.cpp | 28 | ||||
-rw-r--r-- | engines/cruise/cell.cpp | 2 | ||||
-rw-r--r-- | engines/cruise/cruise.h | 3 | ||||
-rw-r--r-- | engines/cruise/cruise_main.cpp | 11 | ||||
-rw-r--r-- | engines/cruise/cruise_main.h | 22 | ||||
-rw-r--r-- | engines/cruise/dataLoader.cpp | 8 | ||||
-rw-r--r-- | engines/cruise/debugger.cpp | 6 | ||||
-rw-r--r-- | engines/cruise/function.cpp | 6 | ||||
-rw-r--r-- | engines/cruise/gfxModule.cpp | 14 | ||||
-rw-r--r-- | engines/cruise/gfxModule.h | 14 | ||||
-rw-r--r-- | engines/cruise/mainDraw.cpp | 43 | ||||
-rw-r--r-- | engines/cruise/mainDraw.h | 2 |
14 files changed, 90 insertions, 87 deletions
diff --git a/engines/cruise/background.cpp b/engines/cruise/background.cpp index d250ff7f2d..21e4052dcd 100644 --- a/engines/cruise/background.cpp +++ b/engines/cruise/background.cpp @@ -29,7 +29,7 @@ namespace Cruise { uint8 colorMode = 0; -uint8 *backgroundPtrtable[8] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; // wasn't initialized in original, but it's probably better +uint8 *backgroundScreens[8] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; // wasn't initialized in original, but it's probably better backgroundTableStruct backgroundTable[8]; char hwPage[64000]; @@ -92,11 +92,11 @@ int loadBackground(const char *name, int idx) { printf("Loading BG: %s\n", name); - if (!backgroundPtrtable[idx]) { - backgroundPtrtable[idx] = (uint8 *)mallocAndZero(320 * 200); + if (!backgroundScreens[idx]) { + backgroundScreens[idx] = (uint8 *)mallocAndZero(320 * 200); } - if (!backgroundPtrtable[idx]) { + if (!backgroundScreens[idx]) { backgroundTable[idx].name[0] = 0; return (-2); } @@ -184,19 +184,19 @@ int loadBackground(const char *name, int idx) { gfxModuleData_setPal256(palScreen[idx]); // read image data - gfxModuleData_gfxClearFrameBuffer(backgroundPtrtable[idx]); + gfxModuleData_gfxClearFrameBuffer(backgroundScreens[idx]); switch (mode) { case 0: case 4: - convertGfxFromMode4(ptr2, 320, 200, backgroundPtrtable[idx]); + convertGfxFromMode4(ptr2, 320, 200, backgroundScreens[idx]); ptr2 += 32000; break; case 5: - convertGfxFromMode5(ptr2, 320, 200, backgroundPtrtable[idx]); + convertGfxFromMode5(ptr2, 320, 200, backgroundScreens[idx]); break; case 8: - memcpy(backgroundPtrtable[idx], ptr2, 320 * 200); + memcpy(backgroundScreens[idx], ptr2, 320 * 200); ptr2 += 320 * 200; break; } diff --git a/engines/cruise/background.h b/engines/cruise/background.h index 5635f9343a..711e89a34a 100644 --- a/engines/cruise/background.h +++ b/engines/cruise/background.h @@ -35,7 +35,7 @@ struct backgroundTableStruct { extern short int cvtPalette[0x20]; extern int CVTLoaded; -extern uint8 *backgroundPtrtable[8]; +extern uint8 *backgroundScreens[8]; extern backgroundTableStruct backgroundTable[8]; int loadBackground(const char *name, int idx); diff --git a/engines/cruise/backgroundIncrust.cpp b/engines/cruise/backgroundIncrust.cpp index f67f4e6170..1f5a9d8513 100644 --- a/engines/cruise/backgroundIncrust.cpp +++ b/engines/cruise/backgroundIncrust.cpp @@ -24,6 +24,7 @@ */ #include "cruise/cruise_main.h" +#include "cruise/cruise.h" namespace Cruise { @@ -62,7 +63,7 @@ void restoreBackground(backgroundIncrustStruct *pIncrust) { if (pIncrust->ptr == NULL) return; - uint8* pBackground = backgroundPtrtable[pIncrust->backgroundIdx]; + uint8* pBackground = backgroundScreens[pIncrust->backgroundIdx]; if (pBackground == NULL) return; @@ -90,15 +91,14 @@ backgroundIncrustStruct *addBackgroundIncrust(int16 overlayIdx, int16 objectIdx, ptr = filesDatabase[params.fileIdx].subData.ptr; - if (!ptr) { + // Don't process any further if not a sprite or polygon + if (!ptr) return NULL; + if ((filesDatabase[params.fileIdx].subData.resourceType != OBJ_TYPE_SPRITE) && + (filesDatabase[params.fileIdx].subData.resourceType != OBJ_TYPE_POLY)) { return NULL; } - if (filesDatabase[params.fileIdx].subData.resourceType != 4 && filesDatabase[params.fileIdx].subData.resourceType != 8) { - return NULL; - } - - backgroundPtr = backgroundPtrtable[backgroundIdx]; + backgroundPtr = backgroundScreens[backgroundIdx]; assert(backgroundPtr != NULL); @@ -139,16 +139,18 @@ backgroundIncrustStruct *addBackgroundIncrust(int16 overlayIdx, int16 objectIdx, newElement->ptr = NULL; strcpy(newElement->name, filesDatabase[params.fileIdx].subData.name); - if (filesDatabase[params.fileIdx].subData.resourceType == 4) { // sprite + if (filesDatabase[params.fileIdx].subData.resourceType == OBJ_TYPE_SPRITE) { + // sprite int width = filesDatabase[params.fileIdx].width; int height = filesDatabase[params.fileIdx].height; - if (saveBuffer == 1) { backupBackground(newElement, newElement->X, newElement->Y, width, height, backgroundPtr); } - drawSprite(width, height, NULL, filesDatabase[params.fileIdx].subData.ptr, newElement->Y, newElement->X, backgroundPtr, filesDatabase[params.fileIdx].subData.ptrMask); - } else { // poly + drawSprite(width, height, NULL, filesDatabase[params.fileIdx].subData.ptr, newElement->Y, + newElement->X, backgroundPtr, filesDatabase[params.fileIdx].subData.ptrMask); + } else { + // poly if (saveBuffer == 1) { int newX; int newY; @@ -202,9 +204,9 @@ void regenerateBackgroundIncrust(backgroundIncrustStruct *pHead) { int width = filesDatabase[frame].width; int height = filesDatabase[frame].height; - drawSprite(width, height, NULL, filesDatabase[frame].subData.ptr, pl->Y, pl->X, backgroundPtrtable[pl->backgroundIdx], filesDatabase[frame].subData.ptrMask); + drawSprite(width, height, NULL, filesDatabase[frame].subData.ptr, pl->Y, pl->X, backgroundScreens[pl->backgroundIdx], filesDatabase[frame].subData.ptrMask); } else { // poly - addBackgroundIncrustSub1(frame, pl->X, pl->Y, NULL, pl->scale, (char*)backgroundPtrtable[pl->backgroundIdx], (char *)filesDatabase[frame].subData.ptr); + addBackgroundIncrustSub1(frame, pl->X, pl->Y, NULL, pl->scale, (char*)backgroundScreens[pl->backgroundIdx], (char *)filesDatabase[frame].subData.ptr); } } diff --git a/engines/cruise/cell.cpp b/engines/cruise/cell.cpp index 058bb3785e..7966d5ea12 100644 --- a/engines/cruise/cell.cpp +++ b/engines/cruise/cell.cpp @@ -150,7 +150,7 @@ void createTextObject(cellStruct *pObject, int overlayIdx, int messageIdx, int x pObject->next = pNewElement; pNewElement->idx = messageIdx; - pNewElement->type = OBJ_TYPE_MSG; + pNewElement->type = OBJ_TYPE_MESSAGE; pNewElement->backgroundPlane = backgroundPlane; pNewElement->overlay = overlayIdx; pNewElement->x = x; diff --git a/engines/cruise/cruise.h b/engines/cruise/cruise.h index c8bc52045e..a3fcd0216b 100644 --- a/engines/cruise/cruise.h +++ b/engines/cruise/cruise.h @@ -40,7 +40,7 @@ enum CruiseGameType { GType_CRUISE = 1 }; -#define GAME_FRAME_DELAY 70 +#define GAME_FRAME_DELAY 40 #define MAX_LANGUAGE_STRINGS 25 @@ -117,7 +117,6 @@ enum { kCmpLT = (1 << 2) }; - } // End of namespace Cruise #endif diff --git a/engines/cruise/cruise_main.cpp b/engines/cruise/cruise_main.cpp index 01f4ed0b08..7ca5750206 100644 --- a/engines/cruise/cruise_main.cpp +++ b/engines/cruise/cruise_main.cpp @@ -374,7 +374,7 @@ void resetFileEntry(int32 entryNumber) { filesDatabase[entryNumber].subData.ptrMask = NULL; filesDatabase[entryNumber].widthInColumn = 0; filesDatabase[entryNumber].width = 0; - filesDatabase[entryNumber].resType = 0; + filesDatabase[entryNumber].resType = OBJ_TYPE_LINE; filesDatabase[entryNumber].height = 0; filesDatabase[entryNumber].subData.index = -1; filesDatabase[entryNumber].subData.resourceType = 0; @@ -578,7 +578,9 @@ int findObject(int mouseX, int mouseY, int *outObjOvl, int *outObjIdx) { cellStruct *currentObject = cellHead.prev; while (currentObject) { - if (currentObject->overlay > 0 && overlayTable[currentObject->overlay].alreadyLoaded && (currentObject->type == OBJ_TYPE_SPRITE || currentObject->type == OBJ_TYPE_MASK || currentObject->type == OBJ_TYPE_EXIT || currentObject->type == OBJ_TYPE_VIRTUEL)) { + if (currentObject->overlay > 0 && overlayTable[currentObject->overlay].alreadyLoaded && + (currentObject->type == OBJ_TYPE_SPRITE || currentObject->type == OBJ_TYPE_MASK || + currentObject->type == OBJ_TYPE_EXIT || currentObject->type == OBJ_TYPE_VIRTUAL)) { const char* pObjectName = getObjectName(currentObject->idx, overlayTable[currentObject->overlay].ovlData->arrayNameObj); strcpy(objectName, pObjectName); @@ -639,7 +641,8 @@ int findObject(int mouseX, int mouseY, int *outObjOvl, int *outObjIdx) { offset += j; if (offset >= 0) { - if (filesDatabase[offset].resType == 0 && filesDatabase[offset].subData.ptr) { + if (filesDatabase[offset].resType == OBJ_TYPE_LINE && + filesDatabase[offset].subData.ptr) { dataPtr = (int16 *)filesDatabase[offset].subData.ptr; } } @@ -675,7 +678,7 @@ int findObject(int mouseX, int mouseY, int *outObjOvl, int *outObjIdx) { } } } - } else if (currentObject->type == OBJ_TYPE_VIRTUEL) { + } else if (currentObject->type == OBJ_TYPE_VIRTUAL) { int x = params.X + x2; int y = params.Y + y2; int width = params.fileIdx; diff --git a/engines/cruise/cruise_main.h b/engines/cruise/cruise_main.h index 602a72a98c..b5328cb3d0 100644 --- a/engines/cruise/cruise_main.h +++ b/engines/cruise/cruise_main.h @@ -73,16 +73,18 @@ enum MouseButton { #define ASSERT_PTR assert #define ASSERT assert -#define OBJ_TYPE_LINE 0 -#define OBJ_TYPE_MASK 1 -#define OBJ_TYPE_BGMK 2 -#define OBJ_TYPE_VIRTUEL 3 -#define OBJ_TYPE_SPRITE 4 -#define OBJ_TYPE_MSG 5 -#define OBJ_TYPE_SOUND 6 -#define OBJ_TYPE_FONT 7 -#define OBJ_TYPE_POLY 8 -#define OBJ_TYPE_EXIT 9 +enum ResType { + OBJ_TYPE_LINE = 0, + OBJ_TYPE_MASK = 1, + OBJ_TYPE_BGMASK = 2, + OBJ_TYPE_VIRTUAL = 3, + OBJ_TYPE_SPRITE = 4, + OBJ_TYPE_MESSAGE = 5, + OBJ_TYPE_SOUND = 6, + OBJ_TYPE_FONT = 7, + OBJ_TYPE_POLY = 8, + OBJ_TYPE_EXIT = 9 +}; extern gfxEntryStruct* linkedMsgList; diff --git a/engines/cruise/dataLoader.cpp b/engines/cruise/dataLoader.cpp index 364b1dfee8..db9e57d77d 100644 --- a/engines/cruise/dataLoader.cpp +++ b/engines/cruise/dataLoader.cpp @@ -148,9 +148,9 @@ int updateResFileEntry(int height, int width, int entryNumber, int resType) { int maskSize = height * width; // for sprites: width * height - if (resType == 4) { + if (resType == OBJ_TYPE_SPRITE) { div = maskSize / 4; - } else if (resType == 5) { + } else if (resType == OBJ_TYPE_MESSAGE) { width = (width * 8) / 5; } @@ -193,9 +193,9 @@ int createResFileEntry(int width, int height, int resType) { size = width * height; // for sprites: width * height - if (resType == 4) { + if (resType == OBJ_TYPE_SPRITE) { div = size / 4; - } else if (resType == 5) { + } else if (resType == OBJ_TYPE_MESSAGE) { width = (width * 8) / 5; } diff --git a/engines/cruise/debugger.cpp b/engines/cruise/debugger.cpp index 62a4e34b15..eb1cf585fc 100644 --- a/engines/cruise/debugger.cpp +++ b/engines/cruise/debugger.cpp @@ -49,7 +49,7 @@ bool Debugger::cmd_hotspots(int argc, const char **argv) { while (currentObject) { if (currentObject->overlay > 0 && overlayTable[currentObject->overlay].alreadyLoaded && (currentObject->type == OBJ_TYPE_SPRITE || currentObject->type == OBJ_TYPE_MASK || - currentObject->type == OBJ_TYPE_EXIT || currentObject->type == OBJ_TYPE_VIRTUEL)) { + currentObject->type == OBJ_TYPE_EXIT || currentObject->type == OBJ_TYPE_VIRTUAL)) { const char *pObjectName = getObjectName(currentObject->idx, overlayTable[currentObject->overlay].ovlData->arrayNameObj); switch (currentObject->type) { @@ -62,8 +62,8 @@ bool Debugger::cmd_hotspots(int argc, const char **argv) { case OBJ_TYPE_EXIT: pObjType = "EXIT"; break; - case OBJ_TYPE_VIRTUEL: - pObjType = "VIRTUEL"; + case OBJ_TYPE_VIRTUAL: + pObjType = "VIRTUAL"; break; default: pObjType = "UNKNOWN"; diff --git a/engines/cruise/function.cpp b/engines/cruise/function.cpp index 03037db629..815e1235c4 100644 --- a/engines/cruise/function.cpp +++ b/engines/cruise/function.cpp @@ -828,7 +828,7 @@ int16 Op_SetActiveBackground(void) { int newPlane = popVar(); if (newPlane >= 0 && newPlane < 8) { - if (backgroundPtrtable[newPlane]) { + if (backgroundScreens[newPlane]) { masterScreen = newPlane; switchPal = 1; } @@ -841,8 +841,8 @@ int16 Op_RemoveBackground(void) { int backgroundIdx = popVar(); if (backgroundIdx > 0 && backgroundIdx < 8) { - if (backgroundPtrtable[backgroundIdx]) - free(backgroundPtrtable[backgroundIdx]); + if (backgroundScreens[backgroundIdx]) + free(backgroundScreens[backgroundIdx]); if (masterScreen == backgroundIdx) masterScreen = 0; diff --git a/engines/cruise/gfxModule.cpp b/engines/cruise/gfxModule.cpp index 8a21842503..f3700253d3 100644 --- a/engines/cruise/gfxModule.cpp +++ b/engines/cruise/gfxModule.cpp @@ -54,15 +54,15 @@ void gfxModuleData_gfxClearFrameBuffer(uint8 *ptr) { memset(ptr, 0, 64000); } -void gfxModuleData_gfxCopyScreen(char *sourcePtr, char *destPtr) { - memcpy(destPtr, sourcePtr, 64000); +void gfxModuleData_gfxCopyScreen(const uint8 *sourcePtr, uint8 *destPtr) { + memcpy(destPtr, sourcePtr, 320 * 200); } void outputBit(char *buffer, int bitPlaneNumber, uint8 data) { *(buffer + (8000 * bitPlaneNumber)) = data; } -void convertGfxFromMode4(uint8 *sourcePtr, int width, int height, uint8 *destPtr) { +void convertGfxFromMode4(const uint8 *sourcePtr, int width, int height, uint8 *destPtr) { for (int y = 0; y < height; ++y) { for (int x = 0; x < width / 16; ++x) { for (int bit = 0; bit < 16; ++bit) { @@ -79,7 +79,7 @@ void convertGfxFromMode4(uint8 *sourcePtr, int width, int height, uint8 *destPtr } } -void convertGfxFromMode5(uint8 *sourcePtr, int width, int height, uint8 *destPtr) { +void convertGfxFromMode5(const uint8 *sourcePtr, int width, int height, uint8 *destPtr) { int range = (width / 8) * height; for (int line = 0; line < 200; line++) { @@ -169,7 +169,7 @@ void gfxModuleData_setPal256(uint8 *ptr) { gfxModuleData_setDirtyColors(0, 16); }*/ -void gfxModuleData_convertOldPalColor(uint16 oldColor, uint8* pOutput) { +void gfxModuleData_convertOldPalColor(uint16 oldColor, uint8 *pOutput) { int R; int G; int B; @@ -198,7 +198,7 @@ void gfxModuleData_gfxWaitVSync(void) { void gfxModuleData_flip(void) { } -void gfxCopyRect(const byte *sourceBuffer, int width, int height, byte *dest, int x, int y, int colour) { +void gfxCopyRect(const uint8 *sourceBuffer, int width, int height, byte *dest, int x, int y, int colour) { int xp, yp; for (yp = 0; yp < height; ++yp) { @@ -253,6 +253,4 @@ void resetBitmap(uint8 *dataPtr, int32 dataSize) { memset(dataPtr, 0, dataSize); } - - } // End of namespace Cruise diff --git a/engines/cruise/gfxModule.h b/engines/cruise/gfxModule.h index d0aab71fc8..d71029455b 100644 --- a/engines/cruise/gfxModule.h +++ b/engines/cruise/gfxModule.h @@ -46,20 +46,20 @@ struct palEntry { extern gfxModuleDataStruct gfxModuleData; -void gfxModuleData_gfxClearFrameBuffer(uint8 * ptr); +void gfxModuleData_gfxClearFrameBuffer(uint8 *ptr); void gfxModuleData_setDirtyColors(int min, int max); void gfxModuleData_setPalColor(int idx, int r, int g, int b); void gfxModuleData_field_90(void); void gfxModuleData_gfxWaitVSync(void); void gfxModuleData_flip(void); -void gfxCopyRect(const byte *sourceBuffer, int width, int height, byte *dest, int x, int y, int colour); -void gfxModuleData_gfxCopyScreen(char *sourcePtr, char *destPtr); -void convertGfxFromMode4(uint8 *sourcePtr, int width, int height, uint8 *destPtr); -void convertGfxFromMode5(uint8 *sourcePtr, int width, int height, uint8 *destPtr); +void gfxCopyRect(const uint8 *sourceBuffer, int width, int height, byte *dest, int x, int y, int colour); +void gfxModuleData_gfxCopyScreen(const uint8 *sourcePtr, uint8 *destPtr); +void convertGfxFromMode4(const uint8 *sourcePtr, int width, int height, uint8 *destPtr); +void convertGfxFromMode5(const uint8 *sourcePtr, int width, int height, uint8 *destPtr); void gfxModuleData_flipScreen(void); //void gfxModuleData_setPal(uint8 * ptr); -void gfxModuleData_convertOldPalColor(uint16 oldColor, uint8* pOutput); -void gfxModuleData_setPal256(uint8 * ptr); +void gfxModuleData_convertOldPalColor(uint16 oldColor, uint8 *pOutput); +void gfxModuleData_setPal256(uint8 *ptr); void flip(void); void drawSolidBox(int32 x1, int32 y1, int32 x2, int32 y2, uint8 colour); void resetBitmap(uint8 *dataPtr, int32 dataSize); diff --git a/engines/cruise/mainDraw.cpp b/engines/cruise/mainDraw.cpp index 6cdedd3d86..5d7ffe4ca0 100644 --- a/engines/cruise/mainDraw.cpp +++ b/engines/cruise/mainDraw.cpp @@ -175,7 +175,7 @@ void flipPoly(int fileId, int16 *dataPtr, int scale, char** newFrame, int X, int offset += fileId; if (offset >= 0) { - if (filesDatabase[offset].resType == 0 && filesDatabase[offset].subData.ptr) { + if (filesDatabase[offset].resType == OBJ_TYPE_LINE && filesDatabase[offset].subData.ptr) { dataPtr = (int16 *)filesDatabase[offset].subData.ptr; } } @@ -1107,7 +1107,7 @@ void mainDrawPolygons(int fileIndex, cellStruct *plWork, int X, int scale, int Y int numPasses = 0; while (plWork) { - if (plWork->type == OBJ_TYPE_BGMK && plWork->freeze == 0) { + if (plWork->type == OBJ_TYPE_BGMASK && plWork->freeze == 0) { objectParamsQuery params; getMultipleObjectParam(plWork->overlay, plWork->idx, ¶ms); @@ -1116,7 +1116,7 @@ void mainDrawPolygons(int fileIndex, cellStruct *plWork, int X, int scale, int Y int maskY = params.Y; int maskFrame = params.fileIdx; - if (filesDatabase[maskFrame].subData.resourceType == OBJ_TYPE_BGMK && filesDatabase[maskFrame].subData.ptrMask) { + if (filesDatabase[maskFrame].subData.resourceType == OBJ_TYPE_BGMASK && filesDatabase[maskFrame].subData.ptrMask) { drawMask(polygonMask, 40, 200, filesDatabase[maskFrame].subData.ptrMask, filesDatabase[maskFrame].width / 8, filesDatabase[maskFrame].height, maskX, maskY, numPasses++); } else if (filesDatabase[maskFrame].subData.resourceType == OBJ_TYPE_SPRITE && filesDatabase[maskFrame].subData.ptrMask) { @@ -1181,20 +1181,20 @@ void drawMessage(const gfxEntryStruct *pGfxPtr, int globalX, int globalY, int wi } } -void drawSprite(int objX1, int height, cellStruct *currentObjPtr, uint8 *data1, int objY2, int objX2, uint8 *output, uint8 *data2) { +void drawSprite(int width, int height, cellStruct *currentObjPtr, const uint8 *dataIn, int ys, int xs, uint8 *output, const uint8 *dataBuf) { int x = 0; int y = 0; cellStruct* plWork = currentObjPtr; - int workBufferSize = height * (objX1 / 8); + int workBufferSize = height * (width / 8); unsigned char* workBuf = (unsigned char*)malloc(workBufferSize); - memcpy(workBuf, data2, workBufferSize); + memcpy(workBuf, dataBuf, workBufferSize); int numPasses = 0; while (plWork) { - if (plWork->type == OBJ_TYPE_BGMK && plWork->freeze == 0) { + if (plWork->type == OBJ_TYPE_BGMASK && plWork->freeze == 0) { objectParamsQuery params; getMultipleObjectParam(plWork->overlay, plWork->idx, ¶ms); @@ -1203,11 +1203,11 @@ void drawSprite(int objX1, int height, cellStruct *currentObjPtr, uint8 *data1, int maskY = params.Y; int maskFrame = params.fileIdx; - if (filesDatabase[maskFrame].subData.resourceType == OBJ_TYPE_BGMK && filesDatabase[maskFrame].subData.ptrMask) { - drawMask(workBuf, objX1 / 8, height, filesDatabase[maskFrame].subData.ptrMask, filesDatabase[maskFrame].width / 8, filesDatabase[maskFrame].height, maskX - objX2, maskY - objY2, numPasses++); + if (filesDatabase[maskFrame].subData.resourceType == OBJ_TYPE_BGMASK && filesDatabase[maskFrame].subData.ptrMask) { + drawMask(workBuf, width / 8, height, filesDatabase[maskFrame].subData.ptrMask, filesDatabase[maskFrame].width / 8, filesDatabase[maskFrame].height, maskX - xs, maskY - ys, numPasses++); } else if (filesDatabase[maskFrame].subData.resourceType == OBJ_TYPE_SPRITE && filesDatabase[maskFrame].subData.ptrMask) { - drawMask(workBuf, objX1 / 8, height, filesDatabase[maskFrame].subData.ptrMask, filesDatabase[maskFrame].width / 8, filesDatabase[maskFrame].height, maskX - objX2, maskY - objY2, numPasses++); + drawMask(workBuf, width / 8, height, filesDatabase[maskFrame].subData.ptrMask, filesDatabase[maskFrame].width / 8, filesDatabase[maskFrame].height, maskX - xs, maskY - ys, numPasses++); } } @@ -1216,13 +1216,12 @@ void drawSprite(int objX1, int height, cellStruct *currentObjPtr, uint8 *data1, } for (y = 0; y < height; y++) { - for (x = 0; x < (objX1); x++) { - uint8 color = (data1[0]); - data1++; + for (x = 0; x < (width); x++) { + uint8 color = *dataIn++; - if ((x + objX2) >= 0 && (x + objX2) < 320 && (y + objY2) >= 0 && (y + objY2) < 200) { - if (testMask(x, y, workBuf, objX1 / 8)) { - output[320 * (y + objY2) + x + objX2] = color; + if ((x + xs) >= 0 && (x + xs) < 320 && (y + ys) >= 0 && (y + ys) < 200) { + if (testMask(x, y, workBuf, width / 8)) { + output[320 * (y + ys) + x + xs] = color; } } } @@ -1382,10 +1381,10 @@ void mainDraw(int16 param) { return; }*/ - bgPtr = backgroundPtrtable[masterScreen]; + bgPtr = backgroundScreens[masterScreen]; if (bgPtr) { - gfxModuleData_gfxCopyScreen((char *)bgPtr, (char *)gfxModuleData.pPage10); + gfxModuleData_gfxCopyScreen(bgPtr, gfxModuleData.pPage10); } autoCellHead.next = NULL; @@ -1433,9 +1432,9 @@ void mainDraw(int16 param) { if ((params.state >= 0) && (objZ2 >= 0) && filesDatabase[objZ2].subData.ptr) { if (filesDatabase[objZ2].subData.resourceType == 8) { // Poly mainDrawPolygons(objZ2, currentObjPtr, objX2, params.scale, objY2, (char *)gfxModuleData.pPage10, (char *)filesDatabase[objZ2].subData.ptr); // poly - } else if (filesDatabase[objZ2].subData.resourceType == 6) { // sound - } else if (filesDatabase[objZ2].resType == 1) { //(num plan == 1) - } else if (filesDatabase[objZ2].subData.resourceType == 4) { + } else if (filesDatabase[objZ2].subData.resourceType == OBJ_TYPE_SOUND) { + } else if (filesDatabase[objZ2].resType == OBJ_TYPE_MASK) { + } else if (filesDatabase[objZ2].subData.resourceType == OBJ_TYPE_SPRITE) { objX1 = filesDatabase[objZ2].width; // width spriteHeight = filesDatabase[objZ2].height; // height @@ -1535,7 +1534,7 @@ void mainDraw(int16 param) { currentObjPtr = cellHead.next; while (currentObjPtr) { - if (currentObjPtr->type == OBJ_TYPE_MSG && currentObjPtr->freeze == 0) { + if (currentObjPtr->type == OBJ_TYPE_MESSAGE && currentObjPtr->freeze == 0) { drawMessage(currentObjPtr->gfxPtr, currentObjPtr->x, currentObjPtr->field_C, currentObjPtr->spriteIdx, currentObjPtr->color, gfxModuleData.pPage10); isMessage = 1; } diff --git a/engines/cruise/mainDraw.h b/engines/cruise/mainDraw.h index 84705badb5..dc988b551d 100644 --- a/engines/cruise/mainDraw.h +++ b/engines/cruise/mainDraw.h @@ -39,7 +39,7 @@ void pixel(int x, int y, char color); void mainDraw(int16 param); void flipScreen(void); void buildPolyModel(int X, int Y, int scale, char *ptr2, char *destBuffer, char *dataPtr); -void drawSprite(int objX1, int height, cellStruct *currentObjPtr, uint8 *data1, int objY2, int objX2, uint8 *output, uint8 *data2); +void drawSprite(int width, int height, cellStruct *currentObjPtr, const uint8 *dataIn, int ys, int xs, uint8 *output, const uint8 *dataBuf); void flipPoly(int fileId, int16 *dataPtr, int scale, char** newFrame, int X, int Y, int *outX, int *outY, int *outScale); void getPolySize(int positionX, int positionY, int scale, int sizeTable[4], unsigned char *dataPtr); bool findPoly(char* dataPtr, int x, int y, int zoom, int mouseX, int mouseY); |