HOPKINS: Implement Credits()

This commit is contained in:
Strangerke 2012-11-11 17:59:29 +01:00
parent 0e11fbbe53
commit 49c20931d9
4 changed files with 90 additions and 1 deletions

View File

@ -184,6 +184,15 @@ Globals::Globals() {
STOP_BUG = 0;
MAX_COMPTE = 0;
Credit_bx = -1;
Credit_bx1 = -1;
Credit_by = -1;
Credit_by1 = -1;
Credit_y = 0;
Credit_lignes = 0;
memset(Credit, 0, 12000);
Credit_step = 0;
// Initialise pointers
ICONE = NULL;
BUF_ZONE = NULL;

View File

@ -452,6 +452,15 @@ public:
int old_z_69;
int j_104;
int Credit_bx;
int Credit_bx1;
int Credit_by;
int Credit_by1;
int Credit_y;
int Credit_lignes;
char Credit[12000];
int Credit_step;
Globals();
~Globals();
void setParent(HopkinsEngine *vm);

View File

@ -2215,8 +2215,77 @@ int HopkinsEngine::PWBASE() {
return result;
}
void HopkinsEngine::Charge_Credits() {
warning("STUB - Charge_Credits()");
}
void HopkinsEngine::CREDIT_AFFICHE(int a1, int a2, char a3) {
warning("STUB - CREDIT_AFFICHE");
}
void HopkinsEngine::Credits() {
warning("STUB - Credits()");
warning("Credits()");
Charge_Credits();
_globals.Credit_y = 436;
_graphicsManager.LOAD_IMAGE("GENERIC");
_graphicsManager.FADE_INW();
_soundManager.WSOUND(28);
_eventsManager.souris_flag = false;
_globals.iRegul = 3;
_globals.Credit_bx = _globals.Credit_bx1 = _globals.Credit_by = _globals.Credit_by1 = -1;
int soundId = 28;
do {
for (int i = 0; i < _globals.Credit_lignes; ++i) {
if (_globals.Credit[60 * i] == 1) {
int nextY = _globals.Credit_y + i * _globals.Credit_step;
// *(_DWORD *)&Credit[60 * i + 4] = nextY;
_globals.Credit[60 * i + 4] = nextY & 0xFF;
_globals.Credit[60 * i + 5] = (nextY >> 8) & 0xFF;
_globals.Credit[60 * i + 6] = (nextY >> 16) & 0xFF;
_globals.Credit[60 * i + 7] = (nextY >> 24) & 0xFF;
if ((nextY - 21 >= 0) && (nextY - 21 <= 418)) {
char tmpVal = _globals.Credit[60 * i + 1];
int a1 = 0;
if (tmpVal == 49)
a1 = 163;
if (tmpVal == 50)
a1 = 161;
if (tmpVal == 51)
a1 = 162;
// if (*(_WORD *)&Credit[60 * i + 8] != -1)
if ((_globals.Credit[60 * i + 8] != 0xFF) && _globals.Credit[60 * i + 9] != 0xFF)
CREDIT_AFFICHE(nextY, 60 * i + 8, a1);
}
}
}
--_globals.Credit_y;
if (_globals.Credit_bx != -1 || _globals.Credit_bx1 != -1 || _globals.Credit_by != -1 || _globals.Credit_by1 != -1) {
_eventsManager.VBL();
_graphicsManager.SCOPY(_graphicsManager.VESA_SCREEN, 60, 50, 520, 380, _graphicsManager.VESA_BUFFER, 60, 50);
} else {
_eventsManager.VBL();
}
// if (*(_DWORD *)&Credit[20 * (3 * Credit_lignes - 3) + 4] <= 39) {
if ( _globals.Credit[20 * (3 * _globals.Credit_lignes - 3) + 4] +
(_globals.Credit[20 * (3 * _globals.Credit_lignes - 3) + 4] << 8) +
(_globals.Credit[20 * (3 * _globals.Credit_lignes - 3) + 4] << 16) +
(_globals.Credit[20 * (3 * _globals.Credit_lignes - 3) + 4] << 24) <= 39) {
_globals.Credit_y = 440;
++soundId;
if (soundId > 31)
soundId = 28;
_soundManager.WSOUND(soundId);
}
_globals.Credit_bx = -1;
_globals.Credit_bx1 = -1;
_globals.Credit_by = -1;
_globals.Credit_by1 = -1;
} while (_eventsManager.BMOUSE() != 1);
_graphicsManager.FADE_OUTW();
_globals.iRegul = 1;
_eventsManager.souris_flag = true;
}
void HopkinsEngine::OCEAN(int16 a1, Common::String a2, Common::String a3, int16 a4, int16 a5, int16 a6, int16 a7, int16 a8, int16 a9) {

View File

@ -98,6 +98,8 @@ private:
void AVION();
int PWBASE();
void OCEAN(int16 a1, Common::String a2, Common::String a3, int16 a4, int16 a5, int16 a6, int16 a7, int16 a8, int16 a9);
void Charge_Credits();
void CREDIT_AFFICHE(int a1, int a2, char a3);
void Credits();
bool runLinuxDemo();