Skip to content

Commit

Permalink
HOPKINS: Merge 'remotes/dreammaster/hopkins' into hopkins
Browse files Browse the repository at this point in the history
Conflicts:
	engines/hopkins/lines.cpp
	engines/hopkins/lines.h
	engines/hopkins/objects.cpp
  • Loading branch information
wjp committed Feb 18, 2013
2 parents 6df5933 + 7428af9 commit 81bb4d4
Show file tree
Hide file tree
Showing 15 changed files with 782 additions and 778 deletions.
8 changes: 4 additions & 4 deletions engines/hopkins/anim.cpp
Expand Up @@ -532,10 +532,10 @@ int AnimationManager::loadSpriteBank(int idx, const Common::String &filename) {
byte *ofsData = _vm->_fileManager.loadFile(ofsFilename);
byte *curOfsData = ofsData;
for (int objIdx = 0; objIdx < _vm->_globals.Bank[idx]._objDataIdx; ++objIdx, curOfsData += 8) {
int x1 = (int16)READ_LE_UINT16(curOfsData);
int y1 = (int16)READ_LE_UINT16(curOfsData + 2);
int x2 = (int16)READ_LE_UINT16(curOfsData + 4);
int y2 = (int16)READ_LE_UINT16(curOfsData + 6);
int x1 = READ_LE_INT16(curOfsData);
int y1 = READ_LE_INT16(curOfsData + 2);
int x2 = READ_LE_INT16(curOfsData + 4);
int y2 = READ_LE_INT16(curOfsData + 6);

_vm->_objectsManager.setOffsetXY(_vm->_globals.Bank[idx]._data, objIdx, x1, y1, 0);
if (_vm->_globals.Bank[idx]._fileHeader == 2)
Expand Down
59 changes: 34 additions & 25 deletions engines/hopkins/computer.cpp
Expand Up @@ -659,36 +659,46 @@ void ComputerManager::displayBricks() {
_breakoutBrickNbr = 0;
_breakoutSpeed = 1;
int16 *level = _breakoutLevel;
int levelIdx = 0;

int cellLeft;
int cellTop;
int cellType;
do {
for (int levelIdx = 0; ; levelIdx += 6) {
cellLeft = level[levelIdx];
if (cellLeft == -1)
break;
cellTop = level[levelIdx + 1];
cellType = level[levelIdx + 4];
if (cellLeft != -1) {
if (cellType <= 6)
++_breakoutBrickNbr;

if (cellType == 3)
_vm->_graphicsManager.AFFICHE_SPEEDVGA(_breakoutSpr, cellLeft, cellTop, 17);
else if (cellType == 6)
_vm->_graphicsManager.AFFICHE_SPEEDVGA(_breakoutSpr, cellLeft, cellTop, 18);
else if (cellType == 5)
_vm->_graphicsManager.AFFICHE_SPEEDVGA(_breakoutSpr, cellLeft, cellTop, 19);
else if (cellType == 4)
_vm->_graphicsManager.AFFICHE_SPEEDVGA(_breakoutSpr, cellLeft, cellTop, 20);
else if (cellType == 1)
_vm->_graphicsManager.AFFICHE_SPEEDVGA(_breakoutSpr, cellLeft, cellTop, 21);
else if (cellType == 2)
_vm->_graphicsManager.AFFICHE_SPEEDVGA(_breakoutSpr, cellLeft, cellTop, 22);
else if (cellType == 31)
_vm->_graphicsManager.AFFICHE_SPEEDVGA(_breakoutSpr, cellLeft, cellTop, 23);

if (cellType <= 6)
++_breakoutBrickNbr;

switch (cellType) {
case 1:
_vm->_graphicsManager.AFFICHE_SPEEDVGA(_breakoutSpr, cellLeft, cellTop, 21);
break;
case 2:
_vm->_graphicsManager.AFFICHE_SPEEDVGA(_breakoutSpr, cellLeft, cellTop, 22);
break;
case 3:
_vm->_graphicsManager.AFFICHE_SPEEDVGA(_breakoutSpr, cellLeft, cellTop, 17);
break;
case 4:
_vm->_graphicsManager.AFFICHE_SPEEDVGA(_breakoutSpr, cellLeft, cellTop, 20);
break;
case 5:
_vm->_graphicsManager.AFFICHE_SPEEDVGA(_breakoutSpr, cellLeft, cellTop, 19);
break;
case 6:
_vm->_graphicsManager.AFFICHE_SPEEDVGA(_breakoutSpr, cellLeft, cellTop, 18);
break;
case 31:
_vm->_graphicsManager.AFFICHE_SPEEDVGA(_breakoutSpr, cellLeft, cellTop, 23);
break;
}

levelIdx += 6;
} while (cellLeft != -1);
}

displayScore();
}
Expand Down Expand Up @@ -1042,18 +1052,17 @@ int ComputerManager::moveBall() {
_vm->_soundManager.playSample(2, 6);
_ballPosition.x = randVal + 6;
_ballRightFl = !_ballRightFl;
}
if (_ballPosition.x > 307) {
} else if (_ballPosition.x > 307) {
_vm->_soundManager.playSample(2, 6);
_ballPosition.x = 307 - randVal;
_ballRightFl = !_ballRightFl;
}

if (_ballPosition.y <= 6) {
_vm->_soundManager.playSample(2, 6);
_ballPosition.y = randVal + 7;
_ballUpFl = !_ballUpFl;
}
if (_ballPosition.y >= 186 && _ballPosition.y <= 194) {
} else if (_ballPosition.y >= 186 && _ballPosition.y <= 194) {
_vm->_soundManager.playSample(2, 6);
int ballPosXRight = _ballPosition.x + 6;
if ((_ballPosition.x > _padPositionX - 2) && (ballPosXRight < _padPositionX + 36)) {
Expand Down
30 changes: 15 additions & 15 deletions engines/hopkins/dialogs.cpp
Expand Up @@ -320,7 +320,7 @@ void DialogsManager::showInventory() {
_vm->_eventsManager.getMouseY();
_vm->_eventsManager.VBL();
}
_vm->_dialogsManager._inventWin1 = g_PTRNUL;
_inventWin1 = g_PTRNUL;

bool loopFl;
do {
Expand Down Expand Up @@ -352,18 +352,18 @@ void DialogsManager::showInventory() {
error("Error opening file - %s", filename.c_str());

size_t filesize = f.size();
_vm->_dialogsManager._inventWin1 = _vm->_globals.allocMemory(filesize);
_vm->_fileManager.readStream(f, _vm->_dialogsManager._inventWin1, filesize);
_inventWin1 = _vm->_globals.allocMemory(filesize);
_vm->_fileManager.readStream(f, _inventWin1, filesize);
f.close();

_inventBuf2 = _vm->_fileManager.loadFile("INVENT2.SPR");

_inventX = _vm->_graphicsManager._scrollOffset + 152;
_inventY = 114;
_inventWidth = _vm->_objectsManager.getWidth(_vm->_dialogsManager._inventWin1, 0);
_inventHeight = _vm->_objectsManager.getHeight(_vm->_dialogsManager._inventWin1, 0);
_inventWidth = _vm->_objectsManager.getWidth(_inventWin1, 0);
_inventHeight = _vm->_objectsManager.getHeight(_inventWin1, 0);

_vm->_graphicsManager.Affiche_Perfect(_vm->_graphicsManager._vesaBuffer, _vm->_dialogsManager._inventWin1, _inventX + 300, 414, 0, 0, 0, false);
_vm->_graphicsManager.Affiche_Perfect(_vm->_graphicsManager._vesaBuffer, _inventWin1, _inventX + 300, 414, 0, 0, 0, false);
int curPosY = 0;
int inventCount = 0;
for (int inventLine = 1; inventLine <= 5; inventLine++) {
Expand All @@ -382,7 +382,7 @@ void DialogsManager::showInventory() {
};
curPosY += 38;
}
_vm->_graphicsManager.Capture_Mem(_vm->_graphicsManager._vesaBuffer, _vm->_dialogsManager._inventWin1, _inventX, _inventY, _inventWidth, _inventHeight);
_vm->_graphicsManager.Capture_Mem(_vm->_graphicsManager._vesaBuffer, _inventWin1, _inventX, _inventY, _inventWidth, _inventHeight);
_vm->_eventsManager._curMouseButton = 0;
int newInventoryItem = 0;

Expand Down Expand Up @@ -433,7 +433,7 @@ void DialogsManager::showInventory() {

_vm->_globals._exitId = 0;
_inventBuf2 = _vm->_globals.freeMemory(_inventBuf2);
_vm->_dialogsManager._inventWin1 = _vm->_globals.freeMemory(_vm->_dialogsManager._inventWin1);
_inventWin1 = _vm->_globals.freeMemory(_inventWin1);
loopFl = true;
break;
} else
Expand All @@ -455,15 +455,15 @@ void DialogsManager::showInventory() {
_vm->_objectsManager.BOBTOUS = true;
}

_vm->_dialogsManager._inventWin1 = _vm->_globals.freeMemory(_vm->_dialogsManager._inventWin1);
_inventWin1 = _vm->_globals.freeMemory(_inventWin1);
_inventBuf2 = _vm->_globals.freeMemory(_inventBuf2);

if (_vm->_eventsManager._mouseCursorId == 1)
showOptionsDialog();
else if (_vm->_eventsManager._mouseCursorId == 3)
_vm->_dialogsManager.showLoadGame();
showLoadGame();
else if (_vm->_eventsManager._mouseCursorId == 2)
_vm->_dialogsManager.showSaveGame();
showSaveGame();

_vm->_eventsManager._mouseCursorId = 4;
_vm->_eventsManager.changeMouseCursor(4);
Expand Down Expand Up @@ -535,21 +535,21 @@ void DialogsManager::testDialogOpening() {

switch (key) {
case KEY_INVENTORY:
_vm->_dialogsManager.showInventory();
showInventory();
break;
case KEY_OPTIONS:
_vm->_graphicsManager._scrollStatus = 1;
_vm->_dialogsManager.showOptionsDialog();
showOptionsDialog();
_vm->_graphicsManager._scrollStatus = 0;
break;
case KEY_LOAD:
_vm->_graphicsManager._scrollStatus = 1;
_vm->_dialogsManager.showLoadGame();
showLoadGame();
_vm->_graphicsManager._scrollStatus = 0;
break;
case KEY_SAVE:
_vm->_graphicsManager._scrollStatus = 1;
_vm->_dialogsManager.showSaveGame();
showSaveGame();
_vm->_graphicsManager._scrollStatus = 0;
break;
default:
Expand Down
2 changes: 1 addition & 1 deletion engines/hopkins/font.cpp
Expand Up @@ -210,7 +210,7 @@ void FontManager::box(int idx, int messageId, const Common::String &filename, in
_tempText = _vm->_globals.allocMemory(110);
Common::fill(&_tempText[0], &_tempText[110], 0);
memcpy(_tempText, _vm->_globals.BUF_ZONE + _index[messageId], 96);
WRITE_LE_UINT16((uint16 *)_tempText + 48, (int16)READ_LE_UINT16(_vm->_globals.BUF_ZONE + _index[messageId] + 96));
WRITE_LE_UINT16((uint16 *)_tempText + 48, READ_LE_INT16(_vm->_globals.BUF_ZONE + _index[messageId] + 96));
}
byte *curTempTextPtr = _tempText;
for (int i = 0; i < bufSize; i++) {
Expand Down
20 changes: 9 additions & 11 deletions engines/hopkins/globals.cpp
Expand Up @@ -103,9 +103,9 @@ Globals::Globals() {
_linuxEndDemoFl = false;
_speed = 1;
_oldFrameIndex = 0;
_oldDirection = 0;
_oldDirection = DIR_NONE;
_oldDirectionSpriteIdx = 59;
_lastDirection = 0;
_lastDirection = DIR_NONE;
NUM_FICHIER_OBJ = 0;
nbrligne = 0;
_boxWidth = 0;
Expand All @@ -130,8 +130,7 @@ Globals::Globals() {
PERSO_TYPE = 0;
GOACTION = false;
Compteur = 0;
_actionDirection = 0;
_actionDirection = 0;
_actionDirection = DIR_NONE;

Credit_bx = -1;
Credit_bx1 = -1;
Expand All @@ -142,7 +141,7 @@ Globals::Globals() {
memset(_creditsItem, 0, 12000);
_creditsStep = 0;

_oceanDirection = 0;
_oceanDirection = DIR_NONE;

// Initialize pointers
BUF_ZONE = NULL;
Expand Down Expand Up @@ -177,7 +176,6 @@ Globals::Globals() {
_oldMouseY = 0;
compteur_71 = 0;
_forceHideText = false;
j_104 = 0;
}

Globals::~Globals() {
Expand Down Expand Up @@ -284,7 +282,7 @@ void Globals::loadCharacterData() {
}

_oldFrameIndex = -1;
_oldDirection = -1;
_oldDirection = DIR_NONE;
}

void Globals::INIT_ANIM() {
Expand Down Expand Up @@ -414,10 +412,10 @@ void Globals::loadCache(const Common::String &file) {
CACHE_BANQUE[1] = spriteData;
int curBufIdx = 60;
for (int i = 0; i <= 21; i++) {
Cache[i]._spriteIndex = (int16)READ_LE_UINT16((uint16 *)ptr + curBufIdx);
Cache[i]._x = (int16)READ_LE_UINT16((uint16 *)ptr + curBufIdx + 1);
Cache[i]._y = (int16)READ_LE_UINT16((uint16 *)ptr + curBufIdx + 2);
Cache[i].field14 = (int16)READ_LE_UINT16((uint16 *)ptr + curBufIdx + 4);
Cache[i]._spriteIndex = READ_LE_INT16((uint16 *)ptr + curBufIdx);
Cache[i]._x = READ_LE_INT16((uint16 *)ptr + curBufIdx + 1);
Cache[i]._y = READ_LE_INT16((uint16 *)ptr + curBufIdx + 2);
Cache[i].field14 = READ_LE_INT16((uint16 *)ptr + curBufIdx + 4);
if (spriteData == g_PTRNUL) {
Cache[i]._useCount = 0;
} else {
Expand Down
25 changes: 19 additions & 6 deletions engines/hopkins/globals.h
Expand Up @@ -192,8 +192,6 @@ enum SauvegardeOffset {
, svField401 = 401
};

enum PlayerCharacter { CHARACTER_HOPKINS = 0, CHARACTER_HOPKINS_CLONE = 1, CHARACTER_SAMANTHA = 2 };

// TODO: Sauvegrade1 fields should really be mapped into data array
struct Sauvegarde {
byte _data[2050];
Expand All @@ -215,6 +213,21 @@ struct CreditItem {

enum Language { LANG_EN = 0, LANG_FR = 1, LANG_SP = 2};

enum PlayerCharacter { CHARACTER_HOPKINS = 0, CHARACTER_HOPKINS_CLONE = 1, CHARACTER_SAMANTHA = 2 };

enum Directions {
DIR_NONE = -1,
DIR_UP = 1,
DIR_UP_RIGHT = 2,
DIR_RIGHT = 3,
DIR_DOWN_RIGHT = 4,
DIR_DOWN = 5,
DIR_DOWN_LEFT = 6,
DIR_LEFT = 7,
DIR_UP_LEFT = 8
};


class HopkinsEngine;

/**
Expand All @@ -238,10 +251,11 @@ class Globals {
bool _cacheFl;
bool _forceHideText;
int _exitId;
int _oceanDirection;
int _oldDirection, _oldDirectionSpriteIdx;
Directions _oceanDirection;
Directions _oldDirection;
int _oldDirectionSpriteIdx;
int _actionDirection;
int _lastDirection;
Directions _lastDirection;
int _oldFrameIndex;
int _hotspotTextColor;
int _inventory[36];
Expand Down Expand Up @@ -312,7 +326,6 @@ class Globals {
int compteur_71;
Common::String FICH_ZONE;
bool GOACTION;
int j_104;
Common::String FICH_TEXTE;

Globals();
Expand Down
8 changes: 4 additions & 4 deletions engines/hopkins/graphics.cpp
Expand Up @@ -1246,9 +1246,9 @@ void GraphicsManager::Affiche_Perfect(byte *surface, const byte *srcData, int xp
spriteStartP += READ_LE_UINT32(spriteStartP) + 16;

const byte *spriteSizeP = spriteStartP + 4;
int spriteWidth = (int16)READ_LE_UINT16(spriteSizeP);
int spriteWidth = READ_LE_INT16(spriteSizeP);
spriteSizeP += 2;
int spriteHeight2 = (int16)READ_LE_UINT16(spriteSizeP);
int spriteHeight2 = READ_LE_INT16(spriteSizeP);
int spriteHeight1 = spriteHeight2;
const byte *spritePixelsP = spriteSizeP + 10;
_posXClipped = 0;
Expand Down Expand Up @@ -1639,9 +1639,9 @@ void GraphicsManager::displayFont(byte *surface, const byte *spriteData, int xp,
int spriteWidth = 0;
int spriteHeight = 0;
const byte *spriteSizeP = spriteDataP + 4;
spriteWidth = (int16)READ_LE_UINT16(spriteSizeP);
spriteWidth = READ_LE_INT16(spriteSizeP);
spriteSizeP += 2;
spriteHeight = (int16)READ_LE_UINT16(spriteSizeP);
spriteHeight = READ_LE_INT16(spriteSizeP);
const byte *spritePixelsP = spriteSizeP + 10;
byte *destP = surface + xp + _lineNbr2 * yp;
_width = spriteWidth;
Expand Down

0 comments on commit 81bb4d4

Please sign in to comment.