HOPKINS: Some more refactoring and renaming

This commit is contained in:
Strangerke 2013-01-01 21:03:24 +01:00
parent cb363aafd5
commit d6f72071a4
11 changed files with 278 additions and 409 deletions

View file

@ -319,7 +319,7 @@ void AnimationManager::playAnim2(const Common::String &filename, uint32 a2, uint
_vm->_graphicsManager.unlockScreen();
_vm->_graphicsManager.SCROLL = v11;
_vm->_graphicsManager.scrollScreen(v11);
if (_vm->_graphicsManager.DOUBLE_ECRAN) {
if (_vm->_graphicsManager._largeScreenFl) {
_vm->_graphicsManager.SCANLINE(1280);
_vm->_graphicsManager.max_x = 1280;
_vm->_graphicsManager.lockScreen();
@ -449,7 +449,7 @@ LABEL_114:
_vm->_graphicsManager.unlockScreen();
_vm->_graphicsManager.SCROLL = v11;
_vm->_graphicsManager.scrollScreen(v11);
if (_vm->_graphicsManager.DOUBLE_ECRAN) {
if (_vm->_graphicsManager._largeScreenFl) {
_vm->_graphicsManager.SCANLINE(1280);
_vm->_graphicsManager.max_x = 1280;
_vm->_graphicsManager.lockScreen();
@ -680,8 +680,8 @@ void AnimationManager::searchAnim(const byte *data, int animIndex, int count) {
WRITE_LE_UINT16(dataP + 22, v11);
WRITE_LE_UINT16(dataP + 24, v22);
WRITE_LE_UINT16(dataP + 26, v12);
*(dataP + 28) = *(v21 + data + 33);
*(dataP + 29) = *(v21 + data + 34);
dataP[28] = data[v21 + 33];
dataP[29] = data[v21 + 34];
for (int v14 = 1; v14 <= 4999; v14++) {
v9 += 10;
@ -697,8 +697,8 @@ void AnimationManager::searchAnim(const byte *data, int animIndex, int count) {
WRITE_LE_UINT16(v9 + 2, v15);
WRITE_LE_UINT16(v9 + 4, v22);
WRITE_LE_UINT16(v9 + 6, v16);
*(v9 + 8) = *(v23 + 8);
*(v9 + 9) = *(v23 + 9);
v9[8] = v23[8];
v9[9] = v23[9];
}
loopCond = true;
}

View file

@ -240,7 +240,7 @@ void ComputerManager::showComputer(ComputerEnum mode) {
switch (keyPressed) {
case '2':
readText(6);
break;
break;
case '3':
readText(7);
break;
@ -482,8 +482,7 @@ void ComputerManager::restoreFBIRoom() {
*/
void ComputerManager::readText(int idx) {
uint16 v1;
int v2;
uint16 v3;
bool foundFl;
int v4;
int v5;
int v6;
@ -506,21 +505,18 @@ void ComputerManager::readText(int idx) {
ptr = _vm->_fileManager.loadFile(_vm->_globals._curFilename);
v1 = _vm->_fileManager.fileSize(_vm->_globals._curFilename);
v2 = 0;
v3 = 0;
if (v1 > 0u) {
do {
if (*(ptr + v3) == '%') {
numStr = Common::String::format("%c%c", *(ptr + v3 + 1), *(ptr + v3 + 2));
num = atol(numStr.c_str());
foundFl = false;
int v3;
for (v3 = 0; v3 < v1; v3++) {
if (ptr[v3] == '%') {
numStr = Common::String::format("%c%c", ptr[v3 + 1], ptr[v3 + 2]);
num = atol(numStr.c_str());
if (num == idx)
v2 = 1;
}
if (v2 == 1)
break;
++v3;
} while (v3 < v1);
if (num == idx)
foundFl = true;
}
if (foundFl)
break;
}
v4 = v3;
if (v3 > v1 - 1)
@ -531,10 +527,8 @@ void ComputerManager::readText(int idx) {
v6 = 5;
v7 = 0;
do {
v4 = *(ptr + v10);
v4 = ptr[v10];
if (v4 == 13) {
// v12[v7] = 0;
// v7 = 0;
v8 = v4;
setTextPosition(v6, v5);
outText(v12);
@ -545,7 +539,6 @@ void ComputerManager::readText(int idx) {
v4 = v8;
v12 = "";
} else if (v4 != '%') {
//v12[v7++] = v4;
v12 += v4;
++v7;
}
@ -619,14 +612,14 @@ void ComputerManager::loadHiscore() {
for (int scoreIndex = 0; scoreIndex < 6; ++scoreIndex) {
for (int i = 0; i < 5; ++i) {
nextChar = *(ptr + i + (16 * scoreIndex));
nextChar = ptr[i + (16 * scoreIndex)];
if (!nextChar)
nextChar = ' ';
_score[scoreIndex]._name += nextChar;
}
for (int i = 0; i < 9; ++i) {
nextChar = *(ptr + i + scoreIndex * 16 + 6);
nextChar = ptr[i + scoreIndex * 16 + 6];
if (!nextChar)
nextChar = '0';
_score[scoreIndex]._score += nextChar;
@ -1047,19 +1040,19 @@ void ComputerManager::saveScore() {
v8 = _score[v14]._name[v7];
if (!v8)
v8 = 32;
*(ptr + (16 * v5) + v7) = v8;
ptr[(16 * v5) + v7] = v8;
};
*(ptr + v6 + 5) = 0;
ptr[v6 + 5] = 0;
v9 = v6 + 6;
for (int v10 = 0; v10 <= 8; v10++) {
v11 = _score[v14]._score[v10];
if (!v11)
v11 = 48;
*(ptr + v9 + v10) = v11;
ptr[v9 + v10] = v11;
};
*(ptr + v9 + 9) = 0;
ptr[v9 + 9] = 0;
}
_vm->_fileManager.constructLinuxFilename("HISCORE.DAT");

View file

@ -418,7 +418,7 @@ LABEL_63:
LABEL_65:
_vm->_globals._speed = 2;
_rateCounter = 0;
if (!_vm->_graphicsManager.DOUBLE_ECRAN || _vm->_graphicsManager.no_scroll == 1) {
if (!_vm->_graphicsManager._largeScreenFl || _vm->_graphicsManager.no_scroll == 1) {
_vm->_graphicsManager.Affiche_Segment_Vesa();
} else {
if (_vm->_graphicsManager.no_scroll != 2) {

View file

@ -355,12 +355,12 @@ LABEL_57:
}
}
_vm->_globals.hauteur_boite = (_vm->_globals.police_h + 1) * lineCount + 2;
int v56 = v73;
int v55 = yp;
int v53 = _vm->_globals._boxWidth + 10;
int v51 = (_vm->_globals.police_h + 1) * lineCount + 12;
int posX = v73;
int posY = yp;
int saveWidth = _vm->_globals._boxWidth + 10;
int saveHeight = (_vm->_globals.police_h + 1) * lineCount + 12;
if (_text[idx]._textType == 6) {
int v27 = v53 / 2;
int v27 = saveWidth / 2;
if (v27 < 0)
v27 = -v27;
_text[idx]._pos.x = 315 - v27;
@ -368,37 +368,36 @@ LABEL_57:
v73 = _vm->_eventsManager._startPos.x + 315 - v27;
_text[idx]._pos.y = 50;
v70 = 50;
v55 = 50;
v56 = v28;
posY = 50;
posX = v28;
}
int textType = _text[idx]._textType;
if (textType == 1 || textType == 3 || textType == 5 || textType == 6) {
int v49 = v51 * v53;
byte *ptrd = _vm->_globals.allocMemory(v49);
if (ptrd == g_PTRNUL) {
error("Cutting a block for text box (%d)", v49);
}
_vm->_graphicsManager.Capture_Mem(_vm->_graphicsManager._vesaBuffer, ptrd, v56, v55, v53, v51);
_vm->_graphicsManager.Trans_bloc2(ptrd, _vm->_graphicsManager._colorTable, v49);
_vm->_graphicsManager.Restore_Mem(_vm->_graphicsManager._vesaBuffer, ptrd, v56, v55, v53, v51);
int size = saveHeight * saveWidth;
byte *ptrd = _vm->_globals.allocMemory(size);
if (ptrd == g_PTRNUL)
error("Cutting a block for text box (%d)", size);
_vm->_graphicsManager.Capture_Mem(_vm->_graphicsManager._vesaBuffer, ptrd, posX, posY, saveWidth, saveHeight);
_vm->_graphicsManager.Trans_bloc2(ptrd, _vm->_graphicsManager._colorTable, size);
_vm->_graphicsManager.Restore_Mem(_vm->_graphicsManager._vesaBuffer, ptrd, posX, posY, saveWidth, saveHeight);
_vm->_globals.freeMemory(ptrd);
_vm->_graphicsManager.drawHorizontalLine(_vm->_graphicsManager._vesaBuffer, v56, v55, v53, (byte)-2);
_vm->_graphicsManager.drawHorizontalLine(_vm->_graphicsManager._vesaBuffer, v56, v51 + v55, v53, (byte)-2);
_vm->_graphicsManager.drawVerticalLine(_vm->_graphicsManager._vesaBuffer, v56, v70, v51, (byte)-2);
_vm->_graphicsManager.drawVerticalLine(_vm->_graphicsManager._vesaBuffer, v53 + v56, v70, v51, (byte)-2);
_vm->_graphicsManager.drawHorizontalLine(_vm->_graphicsManager._vesaBuffer, posX, posY, saveWidth, (byte)-2);
_vm->_graphicsManager.drawHorizontalLine(_vm->_graphicsManager._vesaBuffer, posX, saveHeight + posY, saveWidth, (byte)-2);
_vm->_graphicsManager.drawVerticalLine(_vm->_graphicsManager._vesaBuffer, posX, posY, saveHeight, (byte)-2);
_vm->_graphicsManager.drawVerticalLine(_vm->_graphicsManager._vesaBuffer, saveWidth + posX, posY, saveHeight, (byte)-2);
}
_text[idx]._lineCount = lineCount;
int v75 = v73 + 5;
int v71 = v70 + 5;
int v71 = posY + 5;
for (int lineNum = 0; lineNum < lineCount; ++lineNum) {
displayText(v75, v71, _text[idx]._lines[lineNum], _text[idx]._color);
displayText(v73 + 5, v71, _text[idx]._lines[lineNum], _text[idx]._color);
v71 += _vm->_globals.police_h + 1;
}
int blockWidth = v53 + 1;
int blockHeight = v51 + 1;
int blockWidth = saveWidth + 1;
int blockHeight = saveHeight + 1;
_text[idx]._width = blockWidth;
_text[idx]._height = blockHeight;
@ -413,7 +412,7 @@ LABEL_57:
_text[idx]._textBlock = ptre;
_text[idx]._width = blockWidth;
_text[idx]._height = blockHeight;
_vm->_graphicsManager.Capture_Mem(_vm->_graphicsManager._vesaBuffer, _text[idx]._textBlock, v56, v55, _text[idx]._width, blockHeight);
_vm->_graphicsManager.Capture_Mem(_vm->_graphicsManager._vesaBuffer, _text[idx]._textBlock, posX, posY, _text[idx]._width, blockHeight);
}
_tempText = _vm->_globals.freeMemory(_tempText);
}
@ -423,12 +422,11 @@ LABEL_57:
* Directly display text (using a VESA segment)
*/
void FontManager::displayTextVesa(int xp, int yp, const Common::String &message, int col) {
const char *srcP;
char currChar;
int charIndex;
int currentX = xp;
srcP = message.c_str();
const char *srcP = message.c_str();
for (;;) {
currChar = *srcP++;
if (!currChar)

View file

@ -43,8 +43,7 @@ GraphicsManager::GraphicsManager() {
_videoPtr = NULL;
_scrollOffset = 0;
SCROLL = 0;
PCX_L = PCX_H = 0;
DOUBLE_ECRAN = false;
_largeScreenFl = false;
OLD_SCROLL = 0;
_lineNbr2 = 0;
@ -196,13 +195,13 @@ void GraphicsManager::loadScreen(const Common::String &file) {
}
scrollScreen(0);
A_PCX640_480((byte *)_vesaScreen, file, _palette, flag);
A_PCX640_480(_vesaScreen, file, _palette, flag);
SCROLL = 0;
OLD_SCROLL = 0;
clearPalette();
if (!DOUBLE_ECRAN) {
if (!_largeScreenFl) {
SCANLINE(SCREEN_WIDTH);
max_x = SCREEN_WIDTH;
lockScreen();
@ -254,20 +253,19 @@ void GraphicsManager::scrollScreen(int amount) {
}
void GraphicsManager::Trans_bloc(byte *destP, const byte *srcP, int count, int minThreshold, int maxThreshold) {
byte *destPosP;
int palIndex;
int srcOffset;
int col1, col2;
destPosP = destP;
byte *destPosP = destP;
for (int idx = 0; idx < count; ++idx) {
palIndex = *(byte *)destPosP++;
palIndex = *destPosP;
srcOffset = 3 * palIndex;
col1 = *(srcP + srcOffset) + *(srcP + srcOffset + 1) + *(srcP + srcOffset + 2);
col1 = srcP[srcOffset] + srcP[srcOffset + 1] + srcP[srcOffset + 2];
for (int idx2 = 0; idx2 < 38; ++idx2) {
srcOffset = 3 * idx2;
col2 = *(srcP + srcOffset) + *(srcP + srcOffset + 1) + *(srcP + srcOffset + 2);
col2 = srcP[srcOffset] + srcP[srcOffset + 1] + srcP[srcOffset + 2];
col2 += minThreshold;
if (col2 < col1)
@ -277,9 +275,10 @@ void GraphicsManager::Trans_bloc(byte *destP, const byte *srcP, int count, int m
if (col2 > col1)
continue;
*(destPosP - 1) = (idx2 == 0) ? 1 : idx2;
*destPosP = (idx2 == 0) ? 1 : idx2;
break;
}
destPosP++;
}
}
@ -288,12 +287,12 @@ void GraphicsManager::Trans_bloc2(byte *surface, byte *col, int size) {
byte *dataP = surface;
for (int count = size - 1; count; count--){
dataVal = *dataP++;
*(dataP - 1) = *(dataVal + col);
dataVal = *dataP;
*dataP = col[dataVal];
dataP++;
}
}
// TODO: See if it's feasible and/or desirable to change this to use the Common PCX decoder
void GraphicsManager::A_PCX640_480(byte *surface, const Common::String &file, byte *palette, bool typeFlag) {
Common::File f;
Graphics::PCXDecoder pcxDecoder;
@ -322,9 +321,7 @@ void GraphicsManager::A_PCX640_480(byte *surface, const Common::String &file, by
const Graphics::Surface *s = pcxDecoder.getSurface();
// Copy out the dimensions and pixels of the decoded surface
DOUBLE_ECRAN = s->w > SCREEN_WIDTH;
PCX_L = s->w;
PCX_H = s->h;
_largeScreenFl = s->w > SCREEN_WIDTH;
Common::copy((byte *)s->pixels, (byte *)s->pixels + (s->pitch * s->h), surface);
// Copy out the palette
@ -378,11 +375,9 @@ void GraphicsManager::A_PCX320(byte *surface, const Common::String &file, byte *
v5 = 64000;
if (!v16)
v5 = v17;
// v8 = i;
f.read(ptr, v5);
// i = v8;
}
v9 = *(ptr + v7++);
v9 = ptr[v7++];
if (v9 > 192) {
v10 = v9 - 192;
if (v7 == v5) {
@ -391,17 +386,15 @@ void GraphicsManager::A_PCX320(byte *surface, const Common::String &file, byte *
v5 = 64000;
if (v16 == 1)
v5 = v17;
// v11 = i;
f.read(ptr, v5);
// i = v11;
}
v12 = *(ptr + v7++);
v12 = ptr[v7++];
do {
*(surface + i++) = v12;
surface[i++] = v12;
--v10;
} while (v10);
} else {
*(surface + i++) = v9;
surface[i++] = v9;
}
}
@ -421,32 +414,6 @@ void GraphicsManager::SCANLINE(int pitch) {
_lineNbr = _lineNbr2 = pitch;
}
void GraphicsManager::m_scroll(const byte *surface, int xs, int ys, int width, int height, int destX, int destY) {
const byte *srcP;
byte *destP;
int yNext;
int yCtr;
byte *dest2P;
const byte *src2P;
unsigned int widthRemaining;
assert(_videoPtr);
srcP = xs + _lineNbr2 * ys + surface;
destP = destX + WinScan * destY + (byte *)_videoPtr->pixels;
yNext = height;
do {
yCtr = yNext;
memcpy((byte *)destP, (const byte *)srcP, 4 * (width >> 2));
src2P = (const byte *)(srcP + 4 * (width >> 2));
dest2P = (byte *)(destP + 4 * (width >> 2));
widthRemaining = width - 4 * (width >> 2);
memcpy(dest2P, src2P, widthRemaining);
destP = dest2P + widthRemaining + WinScan - width;
srcP = src2P + widthRemaining + _lineNbr2 - width;
yNext = yCtr - 1;
} while (yCtr != 1);
}
/**
* Copies data from a 8-bit palette surface into the 16-bit screen
*/
@ -807,40 +774,41 @@ void GraphicsManager::Copy_WinScan_Vbe3(const byte *srcData, byte *destSurface)
return;
if (srcByte < kSetOffset) {
destOffset += (byte)(*srcP + 35);
srcByte = *(srcP++ + 1);
destOffset += srcP[35];
srcByte = srcP[1];
srcP++;
} else if (srcByte == k8bVal) {
destOffset += *(srcP + 1);
srcByte = *(srcP + 2);
destOffset += srcP[1];
srcByte = srcP[2];
srcP += 2;
} else if (srcByte == k16bVal) {
destOffset += READ_LE_UINT16(srcP + 1);
srcByte = *(srcP + 3);
srcByte = srcP[3];
srcP += 3;
} else {
destOffset += READ_LE_UINT32(srcP + 1);
srcByte = *(srcP + 5);
srcByte = srcP[5];
srcP += 5;
}
Video_Cont3_wVbe:
if (srcByte > 210) {
if (srcByte == (byte)-45) {
destLen1 = *(srcP + 1);
rleValue = *(srcP + 2);
if (srcByte == -45) {
destLen1 = srcP[1];
rleValue = srcP[2];
destSlice1P = destOffset + destSurface;
destOffset += destLen1;
memset(destSlice1P, rleValue, destLen1);
srcP += 3;
} else {
destLen2 = (byte)(*srcP + 45);
rleValue = *(srcP + 1);
destLen2 = srcP[45];
rleValue = srcP[1];
destSlice2P = destOffset + destSurface;
destOffset += destLen2;
memset(destSlice2P, rleValue, destLen2);
srcP += 2;
}
} else {
*(destOffset + destSurface) = srcByte;
destSurface[destOffset] = srcByte;
++srcP;
++destOffset;
}
@ -861,16 +829,16 @@ void GraphicsManager::Copy_Video_Vbe16(const byte *srcData) {
destOffset += srcByte - 221;
srcByte = *++srcP;
} else if (srcByte == k8bVal) {
destOffset += *(const byte *)(srcP + 1);
srcByte = *(const byte *)(srcP + 2);
destOffset += srcP[1];
srcByte = srcP[2];
srcP += 2;
} else if (srcByte == k16bVal) {
destOffset += READ_LE_UINT16(srcP + 1);
srcByte = *(const byte *)(srcP + 3);
srcByte = srcP[3];
srcP += 3;
} else {
destOffset += READ_LE_UINT32(srcP + 1);
srcByte = *(const byte *)(srcP + 5);
srcByte = srcP[5];
srcP += 5;
}
}
@ -882,8 +850,8 @@ void GraphicsManager::Copy_Video_Vbe16(const byte *srcData) {
if (srcByte > 210) {
if (srcByte == 211) {
int pixelCount = *(srcP + 1);
int pixelIndex = *(srcP + 2);
int pixelCount = srcP[1];
int pixelIndex = srcP[2];
uint16 *destP = (uint16 *)((byte *)_videoPtr->pixels + destOffset * 2);
uint16 pixelValue = *(uint16 *)(PAL_PIXELS + 2 * pixelIndex);
destOffset += pixelCount;
@ -894,7 +862,7 @@ void GraphicsManager::Copy_Video_Vbe16(const byte *srcData) {
srcP += 3;
} else {
int pixelCount = srcByte - 211;
int pixelIndex = *(srcP + 1);
int pixelIndex = srcP[1];
uint16 *destP = (uint16 *)((byte *)_videoPtr->pixels + destOffset * 2);
uint16 pixelValue = *(uint16 *)(PAL_PIXELS + 2 * pixelIndex);
destOffset += pixelCount;
@ -926,16 +894,16 @@ void GraphicsManager::Copy_Video_Vbe16a(const byte *srcData) {
if (pixelIndex == kByteStop)
return;
if (pixelIndex == k8bVal) {
destOffset += *(srcP + 1);
pixelIndex = *(srcP + 2);
destOffset += srcP[1];
pixelIndex = srcP[2];
srcP += 2;
} else if (pixelIndex == k16bVal) {
destOffset += READ_LE_UINT16(srcP + 1);
pixelIndex = *(srcP + 3);
pixelIndex = srcP[3];
srcP += 3;
} else {
destOffset += READ_LE_UINT32(srcP + 1);
pixelIndex = *(srcP + 5);
pixelIndex = srcP[5];
srcP += 5;
}
Video_Cont_Vbe16a:
@ -1313,10 +1281,10 @@ void GraphicsManager::CopyAsm16(const byte *surface) {
v6 = (uint16 *)(v5 + 2 * *v1);
v = *v6;
*v2 = *v6;
*(v2 + 1) = v;
v2[1] = v;
v8 = (uint16 *)(WinScan + v2);
*v8 = v;
*(v8 + 1) = v;
v8[1] = v;
++v1;
v2 = (byte *)v8 - WinScan + 4;
}
@ -1886,7 +1854,7 @@ void GraphicsManager::OPTI_INI(const Common::String &file, int mode) {
_vm->_globals.SPRITE_ECRAN = _vm->_fileManager.loadFile(_vm->_globals._curFilename);
}
}
if (*ptr != 'I' || *(ptr + 1) != 'N' || *(ptr + 2) != 'I') {
if (ptr[0] != 'I' || ptr[1] != 'N' || ptr[2] != 'I') {
error("Error, file not ini");
} else {
bool doneFlag = false;
@ -1927,9 +1895,6 @@ void GraphicsManager::OPTI_INI(const Common::String &file, int mode) {
}
void GraphicsManager::NB_SCREEN() {
byte *destP;
const byte *srcP;
if (!_vm->_globals.NECESSAIRE)
initColorTable(50, 65, _palette);
@ -1942,13 +1907,7 @@ void GraphicsManager::NB_SCREEN() {
m_scroll16(_vesaBuffer, _vm->_eventsManager._startPos.x, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0);
unlockScreen();
destP = _vesaScreen;
srcP = _vesaBuffer;
memcpy(_vesaScreen, _vesaBuffer, 614396);
srcP = srcP + 614396;
destP = destP + 614396;
*destP = *srcP;
*(destP + 2) = *(srcP + 2);
memcpy(_vesaScreen, _vesaBuffer, 614399);
DD_VBL();
}
@ -1972,20 +1931,20 @@ void GraphicsManager::Copy_WinScan_Vbe(const byte *src, byte *dest) {
if (byteVal == kByteStop)
return;
if (byteVal == k8bVal) {
destOffset += *(srcPtr + 1);
byteVal = *(srcPtr + 2);
destOffset += srcPtr[1];
byteVal = srcPtr[2];
srcPtr += 2;
} else if (byteVal == k16bVal) {
destOffset += READ_LE_UINT16(srcPtr + 1);
byteVal = *(srcPtr + 3);
byteVal = srcPtr[3];
srcPtr += 3;
} else {
destOffset += READ_LE_UINT32(srcPtr + 1);
byteVal = *(srcPtr + 5);
byteVal = srcPtr[5];
srcPtr += 5;
}
Video_Cont_wVbe:
*(dest + destOffset) = byteVal;
dest[destOffset] = byteVal;
++srcPtr;
++destOffset;
}
@ -2007,16 +1966,16 @@ void GraphicsManager::Copy_Video_Vbe(const byte *src) {
if (byteVal == kByteStop)
return;
if (byteVal == k8bVal) {
destOffset += *(srcP + 1);
byteVal = *(srcP + 2);
destOffset += srcP[1];
byteVal = srcP[2];
srcP += 2;
} else if (byteVal == k16bVal) {
destOffset += READ_LE_UINT16(srcP + 1);
byteVal = *(srcP + 3);
byteVal = srcP[3];
srcP += 3;
} else {
destOffset += READ_LE_UINT32(srcP + 1);
byteVal = *(srcP + 5);
byteVal = srcP[5];
srcP += 5;
}
}

View file

@ -70,8 +70,7 @@ public:
int _scrollOffset;
int SCROLL;
byte HEADER_PCX[128];
int PCX_L, PCX_H;
bool DOUBLE_ECRAN;
bool _largeScreenFl;
int OLD_SCROLL;
bool MANU_SCROLL;
int _scrollSpeed;
@ -114,7 +113,6 @@ public:
void A_PCX320(byte *surface, const Common::String &file, byte *palette);
void clearPalette();
void SCANLINE(int pitch);
void m_scroll(const byte *surface, int xs, int ys, int width, int height, int destX, int destY);
void m_scroll16(const byte *surface, int xs, int ys, int width, int height, int destX, int destY);
void m_scroll16A(const byte *surface, int xs, int ys, int width, int height, int destX, int destY);
void Copy_Vga16(const byte *surface, int xp, int yp, int width, int height, int destX, int destY);

View file

@ -4493,7 +4493,7 @@ void HopkinsEngine::playIntro() {
_globals.BPP_NOAFF = false;
_globals.iRegul = 1;
_graphicsManager.FADE_INW();
if (_graphicsManager.DOUBLE_ECRAN) {
if (_graphicsManager._largeScreenFl) {
_graphicsManager.no_scroll = 2;
bool v3 = false;
_graphicsManager.SCROLL = 0;
@ -4549,9 +4549,6 @@ void HopkinsEngine::playIntro() {
_eventsManager.VBL();
memcpy(&paletteData2, _graphicsManager._palette, 796);
// CHECKME: Useless variables?
// v21 = *(uint16 *)&_graphicsManager.Palette[796];
// v22 = _graphicsManager.Palette[798];
_graphicsManager.setpal_vga256_linux(paletteData, _graphicsManager._vesaBuffer);
_graphicsManager.FIN_VISU();

View file

@ -382,8 +382,8 @@ void ObjectsManager::displaySprite() {
}
}
AFF_BOB_ANIM();
AFF_VBOB();
displayBobAnim();
displayVBob();
if (!PERSO_ON) {
// Handle drawing characters on the screen
@ -698,39 +698,32 @@ void ObjectsManager::SCBOB(int idx) {
for (int v8 = 0; v8 <= 20; v8++) {
if ((_vm->_globals._bob[v8].field0) && (!_vm->_globals._bob[v8]._disabledAnimationFl) && (!_vm->_globals._bob[v8].field34) && (_vm->_globals._bob[v8]._frameIndex != 250)) {
int v2 = _vm->_globals._bob[v8]._oldWidth;
int v9 = _vm->_globals._bob[v8]._oldX + _vm->_globals._bob[v8]._oldWidth;
int v6 = _vm->_globals._bob[v8]._oldY + _vm->_globals._bob[v8]._oldHeight;
int v3 =_vm->_globals.Cache[idx]._x;
int v4 =_vm->_globals.Cache[idx]._y;
int v7 =_vm->_globals.Cache[idx]._width + v3;
int v1 =_vm->_globals.Cache[idx].field14 +_vm->_globals.Cache[idx]._height + v4;
int v7 = _vm->_globals.Cache[idx]._width + _vm->_globals.Cache[idx]._x;
if ((v6 > v4) && (v6 < v1)) {
v1 = 0;
if (v9 >= v3 && v9 <= (_vm->_globals.Cache[idx]._width + v3)) {
if ((v6 > _vm->_globals.Cache[idx]._y) && (v6 < _vm->_globals.Cache[idx].field14 +_vm->_globals.Cache[idx]._height + _vm->_globals.Cache[idx]._y)) {
bool checkFl = false;
if (v9 >= _vm->_globals.Cache[idx]._x && v9 <= v7) {
++_vm->_globals.Cache[idx].fieldA;
v1 = 1;
checkFl = true;
}
if (!(uint16)v1) {
if (v2 >= v3 && v7 >= v2) {
++_vm->_globals.Cache[idx].fieldA;
v1 = 1;
}
if (!checkFl && v7 >= _vm->_globals._bob[v8]._oldWidth && _vm->_globals._bob[v8]._oldWidth >= _vm->_globals.Cache[idx]._x) {
++_vm->_globals.Cache[idx].fieldA;
checkFl = true;
}
if (!(uint16)v1) {
if ( v7 >= v2 && v2 >= v3 ) {
++_vm->_globals.Cache[idx].fieldA;
v1 = 1;
}
if (!checkFl && v7 >= _vm->_globals._bob[v8]._oldWidth && _vm->_globals._bob[v8]._oldWidth >= _vm->_globals.Cache[idx]._x ) {
++_vm->_globals.Cache[idx].fieldA;
checkFl = true;
}
if (!(uint16)v1) {
if (v2 >= v3 && v9 <= v7) {
++_vm->_globals.Cache[idx].fieldA;
v1 = 1;
}
if (!checkFl && _vm->_globals._bob[v8]._oldWidth >= _vm->_globals.Cache[idx]._x && v9 <= v7) {
++_vm->_globals.Cache[idx].fieldA;
checkFl = true;
}
if (!(uint16)v1 && v2 <= v3 && v9 >= v7)
if (!checkFl && _vm->_globals._bob[v8]._oldWidth <= _vm->_globals.Cache[idx]._x && v9 >= v7)
++_vm->_globals.Cache[idx].fieldA;
}
}
@ -748,69 +741,58 @@ void ObjectsManager::CALCUL_BOB(int idx) {
if (result == 250)
return;
int v5, v15, v22;
int deltaY, deltaX;
if (_vm->_globals._bob[idx]._modeFlag) {
v22 = v15 = getOffsetX(_vm->_globals._bob[idx]._spriteData, result, 1);
v5 = getOffsetY(_vm->_globals._bob[idx]._spriteData, _vm->_globals._bob[idx]._frameIndex, 1);
deltaX = getOffsetX(_vm->_globals._bob[idx]._spriteData, result, 1);
deltaY = getOffsetY(_vm->_globals._bob[idx]._spriteData, _vm->_globals._bob[idx]._frameIndex, 1);
} else {
v22 = v15 = getOffsetX(_vm->_globals._bob[idx]._spriteData, result, 0);
v5 = getOffsetY(_vm->_globals._bob[idx]._spriteData, _vm->_globals._bob[idx]._frameIndex, 0);
deltaX = getOffsetX(_vm->_globals._bob[idx]._spriteData, result, 0);
deltaY = getOffsetY(_vm->_globals._bob[idx]._spriteData, _vm->_globals._bob[idx]._frameIndex, 0);
}
int v17 = v5;
int v6 = v5;
int v20 = 0;
int v7 = _vm->_globals._bob[idx].field36;
if (v7 < 0) {
v7 = -v7;
v20 = v7;
if (v7 > 95)
v20 = 95;
}
int v21 = 0;
if (_vm->_globals._bob[idx].field36 > 0)
if (_vm->_globals._bob[idx].field36 < 0) {
v20 = -_vm->_globals._bob[idx].field36;
if (v20 > 95)
v20 = 95;
} else
v21 = _vm->_globals._bob[idx].field36;
if (v21) {
if (v15 >= 0) {
v22 = _vm->_graphicsManager.zoomIn(v15, v21);
if (deltaX >= 0)
deltaX = _vm->_graphicsManager.zoomIn(deltaX, v21);
else
deltaX = -_vm->_graphicsManager.zoomIn(deltaX, v21);
if (deltaY >= 0) {
deltaY = _vm->_graphicsManager.zoomIn(deltaY, v21);
} else {
if (v15 < 0)
v15 = -v15;
v22 = -_vm->_graphicsManager.zoomIn(v15, v21);
}
if (v6 >= 0) {
v17 = _vm->_graphicsManager.zoomIn(v6, v21);
} else {
int v9 = v15;
if (v15 < 0)
v9 = -v15;
v6 = v9;
v17 = -_vm->_graphicsManager.zoomIn(v9, v21);
int deltaY = deltaX;
if (deltaX < 0)
deltaY = -deltaX;
deltaY = -_vm->_graphicsManager.zoomIn(deltaY, v21);
}
}
if (v20) {
if (v15 >= 0) {
v22 = _vm->_graphicsManager.zoomOut(v15, v20);
if (deltaX >= 0)
deltaX = _vm->_graphicsManager.zoomOut(deltaX, v20);
else
deltaX = -_vm->_graphicsManager.zoomOut(-deltaX, v20);
if (deltaY >= 0) {
deltaY = _vm->_graphicsManager.zoomOut(deltaY, v20);
} else {
v15 = -v15;
v22 = -_vm->_graphicsManager.zoomOut(v15, v20);
}
if (v6 >= 0) {
v17 = _vm->_graphicsManager.zoomOut(v6, v20);
} else {
int v11 = v15;
if (v15 < 0)
v11 = -v15;
v17 = -_vm->_graphicsManager.zoomOut(v11, v20);
if (deltaX < 0)
deltaY = -_vm->_graphicsManager.zoomOut(-deltaX, v20);
else
deltaY = -_vm->_graphicsManager.zoomOut(deltaX, v20);
}
}
int v13 = _vm->_globals._bob[idx]._xp - v22;
int v14 = _vm->_globals._bob[idx]._yp - v17;
int v13 = _vm->_globals._bob[idx]._xp - deltaX;
int v14 = _vm->_globals._bob[idx]._yp - deltaY;
_vm->_globals._bob[idx]._activeFl = true;
_vm->_globals._bob[idx]._oldX = v13;
_vm->_globals._bob[idx]._oldY = v14;
@ -840,78 +822,59 @@ void ObjectsManager::CALCUL_BOB(int idx) {
}
void ObjectsManager::VERIFCACHE() {
int v1;
int v2;
int v3;
int v4;
int v5;
int v6;
int v7;
int v9;
int v11;
for (int v8 = 0; v8 <= 19; v8++) {
if (_vm->_globals.Cache[v8].fieldA > 0) {
v7 = _vm->_globals.Cache[v8].fieldA;
for (int v10 = 0; v10 <= 4; v10++) {
if (_sprite[v10]._animationType == 1) {
if (_sprite[v10]._spriteIndex != 250) {
v1 = _sprite[v10].field2C;
v11 = _sprite[v10]._width + v1;
v2 = _sprite[v10]._height + _sprite[v10].field2E;
v6 = _vm->_globals.Cache[v8]._x;
v3 = _vm->_globals.Cache[v8]._y;
v9 = _vm->_globals.Cache[v8]._width + v6;
if (_vm->_globals.Cache[v8].fieldA <= 0)
continue;
if (v2 > v3) {
if (v2 < (_vm->_globals.Cache[v8].field14 + _vm->_globals.Cache[v8]._height + v3)) {
v4 = 0;
if (v11 >= v6 && v11 <= v9) {
++_vm->_globals.Cache[v8].fieldA;
v4 = 1;
}
if (!v4) {
if (v6 <= v1 && v9 >= v1) {
++_vm->_globals.Cache[v8].fieldA;
v4 = 1;
}
if (!v4) {
if (v9 >= v1 && v6 <= v1) {
++_vm->_globals.Cache[v8].fieldA;
v4 = 1;
}
if (!v4) {
if (v6 <= v1 && v11 <= v9) {
++_vm->_globals.Cache[v8].fieldA;
v4 = 1;
}
if (!v4 && v6 >= v1 && v11 >= v9)
++_vm->_globals.Cache[v8].fieldA;
}
}
}
}
}
int oldFieldA = _vm->_globals.Cache[v8].fieldA;
for (int v10 = 0; v10 <= 4; v10++) {
if (_sprite[v10]._animationType == 1 && _sprite[v10]._spriteIndex != 250) {
int v11 = _sprite[v10]._width + _sprite[v10].field2C;
int v2 = _sprite[v10]._height + _sprite[v10].field2E;
int v9 = _vm->_globals.Cache[v8]._width + _vm->_globals.Cache[v8]._x;
if (v2 > _vm->_globals.Cache[v8]._y && v2 < (_vm->_globals.Cache[v8].field14 + _vm->_globals.Cache[v8]._height + _vm->_globals.Cache[v8]._y)) {
bool v4 = false;
if (v11 >= _vm->_globals.Cache[v8]._x && v11 <= v9) {
++_vm->_globals.Cache[v8].fieldA;
v4 = true;
}
if (!v4 && v9 >= _sprite[v10].field2C && _vm->_globals.Cache[v8]._x <= _sprite[v10].field2C) {
++_vm->_globals.Cache[v8].fieldA;
v4 = true;
}
if (!v4 && v9 >= _sprite[v10].field2C && _vm->_globals.Cache[v8]._x <= _sprite[v10].field2C) {
++_vm->_globals.Cache[v8].fieldA;
v4 = true;
}
if (!v4 && _vm->_globals.Cache[v8]._x <= _sprite[v10].field2C && v11 <= v9) {
++_vm->_globals.Cache[v8].fieldA;
v4 = true;
}
if (!v4 && _vm->_globals.Cache[v8]._x >= _sprite[v10].field2C && v11 >= v9)
++_vm->_globals.Cache[v8].fieldA;
}
}
}
SCBOB(v8);
if (_vm->_globals.Cache[v8].fieldA == v7) {
if (_vm->_globals.Cache[v8].field10) {
_vm->_globals.Cache[v8].field10 = false;
_vm->_globals.Cache[v8].fieldA = 1;
}
} else {
v5 = _vm->_globals.Cache[v8].field14 + _vm->_globals.Cache[v8]._height +
_vm->_globals.Cache[v8]._y;
if (v5 > 440)
v5 = 500;
AvantTri(TRI_CACHE, v8, v5);
SCBOB(v8);
if (_vm->_globals.Cache[v8].fieldA == oldFieldA) {
if (_vm->_globals.Cache[v8].field10) {
_vm->_globals.Cache[v8].field10 = false;
_vm->_globals.Cache[v8].fieldA = 1;
_vm->_globals.Cache[v8].field10 = true;
}
} else {
int v5 = _vm->_globals.Cache[v8].field14 + _vm->_globals.Cache[v8]._height + _vm->_globals.Cache[v8]._y;
if (v5 > 440)
v5 = 500;
AvantTri(TRI_CACHE, v8, v5);
_vm->_globals.Cache[v8].fieldA = 1;
_vm->_globals.Cache[v8].field10 = true;
}
}
}
@ -1072,14 +1035,13 @@ int ObjectsManager::AvantTri(TriMode triMode, int index, int priority) {
}
// Display BOB Anim
void ObjectsManager::AFF_BOB_ANIM() {
void ObjectsManager::displayBobAnim() {
int v1;
int v5;
uint v6;
int v10;
int v11;
int v14;
int v19;
byte *v20;
byte *v21;
int v24;
@ -1194,56 +1156,55 @@ void ObjectsManager::AFF_BOB_ANIM() {
BOBTOUS = false;
for (int v27 = 1; v27 < 35; v27++) {
if (v27 > 20 || !PERSO_ON) {
if ((_vm->_globals._bob[v27].field0 == 10) && (_vm->_globals._bob[v27].field1C)) {
v14 = _vm->_globals._bob[v27].field1E;
for (int i = 1; i < 35; i++) {
if (i > 20 || !PERSO_ON) {
if ((_vm->_globals._bob[i].field0 == 10) && (_vm->_globals._bob[i].field1C)) {
v14 = _vm->_globals._bob[i].field1E;
if ((v14 != 2) && (v14 != 4)) {
if (_vm->_globals.Liste2[v27]._visibleFl) {
if (_vm->_globals.Liste2[i]._visibleFl) {
_vm->_graphicsManager.SCOPY(_vm->_graphicsManager._vesaScreen,
_vm->_globals.Liste2[v27]._xp, _vm->_globals.Liste2[v27]._yp,
_vm->_globals.Liste2[v27]._width, _vm->_globals.Liste2[v27]._height,
_vm->_graphicsManager._vesaBuffer, _vm->_globals.Liste2[v27]._xp,
_vm->_globals.Liste2[v27]._yp);
_vm->_globals.Liste2[v27]._visibleFl = false;
_vm->_globals.Liste2[i]._xp, _vm->_globals.Liste2[i]._yp,
_vm->_globals.Liste2[i]._width, _vm->_globals.Liste2[i]._height,
_vm->_graphicsManager._vesaBuffer, _vm->_globals.Liste2[i]._xp,
_vm->_globals.Liste2[i]._yp);
_vm->_globals.Liste2[i]._visibleFl = false;
}
}
}
if (_vm->_globals._bob[v27].field0 == 11) {
if (_vm->_globals.Liste2[v27]._visibleFl) {
if (_vm->_globals._bob[i].field0 == 11) {
if (_vm->_globals.Liste2[i]._visibleFl) {
_vm->_graphicsManager.SCOPY(_vm->_graphicsManager._vesaScreen,
_vm->_globals.Liste2[v27]._xp, _vm->_globals.Liste2[v27]._yp,
_vm->_globals.Liste2[v27]._width, _vm->_globals.Liste2[v27]._height,
_vm->_globals.Liste2[i]._xp, _vm->_globals.Liste2[i]._yp,
_vm->_globals.Liste2[i]._width, _vm->_globals.Liste2[i]._height,
_vm->_graphicsManager._vesaBuffer,
_vm->_globals.Liste2[v27]._xp, _vm->_globals.Liste2[v27]._yp);
_vm->_globals.Liste2[v27]._visibleFl = false;
_vm->_globals.Liste2[i]._xp, _vm->_globals.Liste2[i]._yp);
_vm->_globals.Liste2[i]._visibleFl = false;
}
_vm->_globals._bob[v27].field0 = 0;
_vm->_globals._bob[i].field0 = 0;
}
}
}
for (int v28 = 1; v28 < 25; v28++) {
_vm->_globals._bob[v28]._oldY = 0;
if (_vm->_globals._bob[v28].field0 == 10 && !_vm->_globals._bob[v28]._disabledAnimationFl && _vm->_globals._bob[v28].field1C) {
CALCUL_BOB(v28);
int v = _vm->_globals._bob[v28]._oldHeight + _vm->_globals._bob[v28]._oldY;
v19 = _vm->_globals._bob[v28]._oldX2 + v;
for (int i = 1; i < 25; i++) {
_vm->_globals._bob[i]._oldY = 0;
if (_vm->_globals._bob[i].field0 == 10 && !_vm->_globals._bob[i]._disabledAnimationFl && _vm->_globals._bob[i].field1C) {
CALCUL_BOB(i);
int v19 = _vm->_globals._bob[i]._oldX2 + _vm->_globals._bob[i]._oldHeight + _vm->_globals._bob[i]._oldY;
if (v19 > 450)
v19 = 600;
if (_vm->_globals._bob[v28]._activeFl)
AvantTri(TRI_BOB, v28, v19);
if (_vm->_globals._bob[i]._activeFl)
AvantTri(TRI_BOB, i, v19);
}
}
}
// Display VBOB
void ObjectsManager::AFF_VBOB() {
void ObjectsManager::displayVBob() {
int width, height;
for (int idx = 0; idx <= 29; idx++) {
@ -1362,10 +1323,6 @@ int ObjectsManager::getSpriteY(int idx) {
return _sprite[idx]._spritePos.y;
}
void ObjectsManager::SPRITE_NOW(const byte *spriteData, int a2, int a3, int a4, int a5, int a6, int a7, int a8) {
_vm->_graphicsManager.Affiche_Perfect(_vm->_graphicsManager._vesaBuffer, spriteData, a2, a3, a5, a6, a7, a8);
}
/**
* Clear sprite structure
*/
@ -2653,7 +2610,7 @@ void ObjectsManager::PARADISE() {
if (result && _vm->_globals._saveData->data[svField2] && result != 4 && result > 3) {
_vm->_fontManager.hideText(5);
if (!_vm->_globals._forestFl || ((uint16)(NUMZONE - 20) > 1u && (uint16)(NUMZONE - 22) > 1u)) {
if (_vm->_graphicsManager.DOUBLE_ECRAN) {
if (_vm->_graphicsManager._largeScreenFl) {
_vm->_graphicsManager.no_scroll = 2;
if (_vm->_eventsManager._startPos.x >= getSpriteX(0) - 320)
goto LABEL_64;
@ -4082,13 +4039,7 @@ void ObjectsManager::ACTION_DOS(int idx) {
if (idx == 3)
SPACTION1(_vm->_globals.GESTE, "12,11,10,9,8,7,6,5,4,3,2,1,0,-1,", 0, 0, 8);
if (idx == 4)
ACTION(
_vm->_globals.GESTE,
"0,1,2,3,4,5,6,7,8,8,8,8,8,8,9,10,11,12,13,12,11,12,13,12,11,12,13,12,11,10,9,8,7,6,5,4,3,2,1,0,-1,",
0,
0,
8,
0);
ACTION(_vm->_globals.GESTE, "0,1,2,3,4,5,6,7,8,8,8,8,8,8,9,10,11,12,13,12,11,12,13,12,11,12,13,12,11,10,9,8,7,6,5,4,3,2,1,0,-1,", 0, 0, 8, 0);
if (idx == 5)
SPACTION(_vm->_globals.GESTE, "15,16,17,18,19,20,21,-1,", 0, 0, 8, 0);
if (idx == 6)
@ -4816,10 +4767,10 @@ int ObjectsManager::colision(int xp, int yp) {
int16 *dataP = _vm->_linesManager._zoneLine[field2].zoneData;
if (dataP != (int16 *)g_PTRNUL) {
int count = _vm->_linesManager._zoneLine[field2].count;
int v1 = *dataP;
int v2 = *(dataP + 1);
int v3 = *(dataP + count * 2 - 2);
int v4 = *(dataP + count * 2 - 1);
int v1 = dataP[0];
int v2 = dataP[1];
int v3 = dataP[count * 2 - 2];
int v4 = dataP[count * 2 - 1];
bool flag = true;
if (v1 < v3 && (xMax < v1 || xMin > v3))
@ -5253,7 +5204,7 @@ void ObjectsManager::PERSONAGE2(const Common::String &backgroundFile, const Comm
break;
}
_vm->_eventsManager.setMouseXY(_characterPos);
if (_vm->_graphicsManager.DOUBLE_ECRAN)
if (_vm->_graphicsManager._largeScreenFl)
_vm->_graphicsManager.SCROLL = (int16)getSpriteX(0) - 320;
VERIFTAILLE();
SPRITE_ON(0);

View file

@ -156,13 +156,11 @@ public:
void DEF_CACHE(int idx);
void computeSprite(int idx);
int AvantTri(TriMode triMode, int index, int priority);
void AFF_BOB_ANIM();
void AFF_VBOB();
void displayBobAnim();
void displayVBob();
int getSpriteX(int idx);
int getSpriteY(int idx);
void SPRITE_NOW(const byte *spriteData, int a2, int a3, int a4, int a5, int a6, int a7, int a8);
void clearSprite();
void SPRITE_ON(int idx);
void SPRITE(const byte *spriteData, Common::Point pos, int idx, int spriteIndex, int a6, int a7, int a8, int a9);

View file

@ -49,7 +49,7 @@ int ScriptManager::handleOpcode(byte *dataP) {
int opcodeType = 0;
int v70 = 0;
if (dataP[2] == 'T' && dataP[3] == 'X' && dataP[4] == 'T') {
v70 = *(dataP + 6);
v70 = dataP[6];
byte v2 = dataP[7];
byte v69 = dataP[8];
int v67 = (int16)READ_LE_UINT16(dataP + 9);
@ -165,9 +165,9 @@ int ScriptManager::handleOpcode(byte *dataP) {
}
} else if (dataP[2] == 'B' && dataP[3] == 'O' && dataP[4] == 'B') {
if (!_vm->_objectsManager._disableFl) {
int v72 = *(dataP + 5);
v70 = *(dataP + 6);
int v4 = *(dataP + 7);
int v72 = dataP[5];
v70 = dataP[6];
int v4 = dataP[7];
int v68 = (int16)READ_LE_UINT16(dataP + 8);
int v66 = (int16)READ_LE_UINT16(dataP + 10);
if (v72 == 52) {
@ -175,22 +175,20 @@ int ScriptManager::handleOpcode(byte *dataP) {
} else if (v72 == 51) {
_vm->_objectsManager.BOB_VIVANT(v70);
} else {
if (v72 == 50)
goto LABEL_1141;
_vm->_objectsManager.VBOB(_vm->_globals.SPRITE_ECRAN, v72, v68, v66, v70);
if (v4)
v4 /= _vm->_globals._speed;
if (v4 > 1) {
do {
if (_vm->shouldQuit())
return -1; // Exiting game
if (v72 != 50) {
_vm->_objectsManager.VBOB(_vm->_globals.SPRITE_ECRAN, v72, v68, v66, v70);
if (v4)
v4 /= _vm->_globals._speed;
if (v4 > 1) {
do {
if (_vm->shouldQuit())
return -1; // Exiting game
--v4;
_vm->_eventsManager.VBL();
} while (v4);
}
if (v72 == 50)
LABEL_1141:
--v4;
_vm->_eventsManager.VBL();
} while (v4);
}
} else
_vm->_objectsManager.AFFICHE_SPEED1(_vm->_globals.SPRITE_ECRAN, v68, v66, v70);
}
}
@ -198,7 +196,7 @@ LABEL_1141:
} else if (dataP[2] == 'S' && dataP[3] == 'T' && dataP[4] == 'P') {
if (!_vm->_objectsManager._disableFl) {
_vm->_objectsManager._twoCharactersFl = false;
int v5 = *(dataP + 5);
int v5 = dataP[5];
int v6 = (int16)READ_LE_UINT16(dataP + 8);
_vm->_objectsManager._characterPos.x = (int16)READ_LE_UINT16(dataP + 6);
_vm->_objectsManager._characterPos.y = v6;
@ -258,10 +256,10 @@ LABEL_1141:
_vm->_objectsManager.CH_TETE = false;
} else if (dataP[2] == 'S' && dataP[3] == 'T' && dataP[4] == 'E') {
if (!_vm->_objectsManager._disableFl) {
int v7 = *(dataP + 5);
v70 = *(dataP + 6);
int v8 = *(dataP + 7);
int v9 = *(dataP + 8);
int v7 = dataP[5];
v70 = dataP[6];
int v8 = dataP[7];
int v9 = dataP[8];
_vm->_objectsManager.RECALL = 0;
_vm->_globals._prevScreenId = _vm->_globals._screenId;
_vm->_globals._saveData->data[svField6] = _vm->_globals._screenId;
@ -2427,7 +2425,7 @@ LABEL_1141:
_vm->_globals._saveData->data[(int16)READ_LE_UINT16(dataP + 5)] = (int16)READ_LE_UINT16(dataP + 7);
} else if (dataP[2] == 'A' && dataP[3] == 'D' && dataP[4] == 'D') {
opcodeType = 1;
_vm->_globals._saveData->data[(int16)READ_LE_UINT16(dataP + 5)] += *(dataP + 7);
_vm->_globals._saveData->data[(int16)READ_LE_UINT16(dataP + 5)] += dataP[7];
} else if (dataP[2] == 'B' && dataP[3] == 'O' && dataP[4] == 'S') {
opcodeType = 1;
_vm->_objectsManager.BOB_OFFSET((int16)READ_LE_UINT16(dataP + 5), (int16)READ_LE_UINT16(dataP + 7));

View file

@ -50,12 +50,6 @@ void TalkManager::setParent(HopkinsEngine *vm) {
}
void TalkManager::PARLER_PERSO(const Common::String &filename) {
int v5;
int v7;
byte *v8;
byte *v9;
byte *v10;
int v14;
Common::String spriteFilename;
int answer = 0;
@ -109,10 +103,11 @@ void TalkManager::PARLER_PERSO(const Common::String &filename) {
PLIGNE2 = PLIGNE1 + 1;
PLIGNE3 = PLIGNE1 + 2;
PLIGNE4 = PLIGNE1 + 3;
v14 = _vm->_eventsManager._mouseCursorId;
int v14 = _vm->_eventsManager._mouseCursorId;
_vm->_eventsManager._mouseCursorId = 4;
_vm->_eventsManager.changeMouseCursor(0);
if (!_vm->_globals.NOPARLE) {
int v5;
do {
v5 = DIALOGUE();
if (v5 != PLIGNE4)
@ -124,6 +119,7 @@ void TalkManager::PARLER_PERSO(const Common::String &filename) {
}
if (_vm->_globals.NOPARLE) {
int v6 = 1;
int v7;
do
v7 = DIALOGUE_REP(v6++);
while (v7 != -1);
@ -153,15 +149,7 @@ void TalkManager::PARLER_PERSO(const Common::String &filename) {
_vm->_graphicsManager.lockScreen();
_vm->_graphicsManager.m_scroll16(_vm->_graphicsManager._vesaScreen, _vm->_eventsManager._startPos.x, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0);
_vm->_graphicsManager.unlockScreen();
v8 = _vm->_graphicsManager._vesaBuffer;
v9 = _vm->_graphicsManager._vesaScreen;
memcpy(_vm->_graphicsManager._vesaBuffer, _vm->_graphicsManager._vesaScreen, 614396);
v9 = v9 + 614396;
v8 = v8 + 614396;
*v8 = *v9;
v8 += 2;
*v8 = *(v9 + 2);
v10 = v8 + 1;
memcpy(_vm->_graphicsManager._vesaBuffer, _vm->_graphicsManager._vesaScreen, 614399);
_vm->_globals._disableInventFl = oldDisableInventFl;
_vm->_graphicsManager.DD_VBL();
for (int i = 0; i <= 4; i++)
@ -651,24 +639,24 @@ int TalkManager::VERIF_BOITE(int idx, const Common::String &file, int a3) {
for (;;) {
v17 = v10;
do {
v11 = *(ptr + v9 + v10);
v11 = ptr[v9 + v10];
v14 = v11;
++v10;
} while (v11 != 32 && v11 != 37);
} while (v11 != ' ' && v11 != '%');
if (v10 >= v15 / _vm->_globals.police_l)
break;
if (v11 == 37) {
if (v11 == '%') {
if (v10 < v15 / _vm->_globals.police_l)
goto LABEL_31;
break;
}
}
if (v11 != 37)
if (v11 != '%')
goto LABEL_33;
v14 = 32;
v14 = ' ';
LABEL_31:
if (v14 == 37)
if (v14 == '%')
v17 = v10;
LABEL_33:
++v18;
@ -929,7 +917,7 @@ LABEL_2:
v11 = 0;
do {
assert(v11 < 20);
*(v11++ + v8) = v6[v7++];
v8[v11++] = v6[v7++];
if (v6[v7] == 'F' && v6[v7 + 1] == 'F') {
v16 = 1;
v8[v11] = 'F';
@ -939,9 +927,7 @@ LABEL_2:
} while (v16 != 1);
}
if (v16 != 1) {
if (v6[v7] == 'C' && v6[v7 + 1] == 'O' && v6[v7 + 2] == 'D')
loopCond = true;
if (v16 != 1 && v6[v7] == 'F' && v6[v7 + 1] == 'I' && v6[v7 + 2] == 'N')
if ((v6[v7] == 'C' && v6[v7 + 1] == 'O' && v6[v7 + 2] == 'D') || (v6[v7] == 'F' && v6[v7 + 1] == 'I' && v6[v7 + 2] == 'N'))
loopCond = true;
}
v6 += v7 + 1;
@ -1086,8 +1072,6 @@ void TalkManager::REPONSE2(int a1, int a2) {
void TalkManager::OBJET_VIVANT(const Common::String &a2) {
int v5;
byte *v11;
byte *v14;
byte *v15;
Common::String s;
Common::String v20;
Common::String v22;
@ -1213,14 +1197,7 @@ void TalkManager::OBJET_VIVANT(const Common::String &a2) {
_vm->_graphicsManager.m_scroll16(_vm->_graphicsManager._vesaScreen, _vm->_eventsManager._startPos.x, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0);
_vm->_graphicsManager.unlockScreen();
_vm->_graphicsManager.setpal_vga256(_vm->_graphicsManager._palette);
v14 = _vm->_graphicsManager._vesaBuffer;
v15 = _vm->_graphicsManager._vesaScreen;
memcpy(_vm->_graphicsManager._vesaBuffer, _vm->_graphicsManager._vesaScreen, 614396);
v15 = v15 + 614396;
v14 = v14 + 614396;
WRITE_LE_UINT16(v14, (int16)READ_LE_UINT16(v15));
v14 = v14 + 2;
*v14 = *(v15 + 2);
memcpy(_vm->_graphicsManager._vesaBuffer, _vm->_graphicsManager._vesaScreen, 614399);
_vm->_globals._disableInventFl = false;
_vm->_graphicsManager.DD_VBL();
for (int i = 0; i <= 4; i++)