Add keyboard control for HE80+ games.

svn-id: r15604
This commit is contained in:
Travis Howell 2004-10-18 06:40:36 +00:00
parent a6da710923
commit 1922b330ad
5 changed files with 32 additions and 4 deletions

View file

@ -97,6 +97,31 @@ void ScummEngine::parseEvents() {
_keyPressed = event.kbd.ascii; // Normal key press, pass on to the game.
}
if (_heversion >= 80) {
// Keyboard is controlled via variable
int _keyState = 0;
if (event.kbd.ascii == 276) // Left
_keyState = 1;
if (event.kbd.ascii == 275) // Right
_keyState |= 2;
if (event.kbd.ascii == 273) // Up
_keyState |= 4;
if (event.kbd.ascii == 274) // Down
_keyState |= 8;
if (event.kbd.flags == OSystem::KBD_SHIFT)
_keyState |= 16;
if (event.kbd.flags == OSystem::KBD_CTRL)
_keyState |= 32;
VAR(VAR_KEY_STATE) = _keyState;
}
if (_keyPressed >= 512)
debugC(DEBUG_GENERAL, "_keyPressed > 512 (%d)", _keyPressed);
else

View file

@ -548,7 +548,7 @@ int ScummEngine::readVar(uint var) {
var &= 0xFFF;
}
if (_heversion >= 72)
if (_heversion >= 80)
checkRange(25, 0, var, "Local variable %d out of range(r)");
else
checkRange(20, 0, var, "Local variable %d out of range(r)");
@ -627,7 +627,7 @@ void ScummEngine::writeVar(uint var, int value) {
var &= 0xFFF;
}
if (_heversion >= 72)
if (_heversion >= 80)
checkRange(25, 0, var, "Local variable %d out of range(w)");
else
checkRange(20, 0, var, "Local variable %d out of range(w)");

View file

@ -850,6 +850,7 @@ ScummEngine::ScummEngine(GameDetector *detector, OSystem *syst, const ScummGameS
VAR_NUM_UNK = 0xFF;
VAR_POLYGONS_ONLY = 0xFF;
VAR_WINDOWS_VERSION = 0xFF;
VAR_KEY_STATE = 0xFF;
VAR_WIZ_TCOLOR = 0xFF;
// Use g_scumm from error() ONLY
@ -1089,7 +1090,7 @@ void ScummEngine::mainInit() {
if (VAR_DEBUGMODE != 0xFF) {
// This is NOT for the Mac version of Indy3/Loom
VAR(VAR_DEBUGMODE) = _debugMode;
if (_heversion >= 80)
if (_heversion >= 80 && _debugMode)
VAR(85) = 1;
}

View file

@ -1335,6 +1335,7 @@ public:
byte VAR_NUM_UNK;
byte VAR_POLYGONS_ONLY;
byte VAR_WINDOWS_VERSION;
byte VAR_KEY_STATE;
byte VAR_WIZ_TCOLOR;
};

View file

@ -263,6 +263,7 @@ void ScummEngine_v72he::setupScummVars() {
if (_heversion >= 80)
VAR_WINDOWS_VERSION = 79;
VAR_KEY_STATE = 86;
if (_heversion >= 90) {
VAR_NUM_SPRITES = 106;
VAR_WIZ_TCOLOR = 117;
@ -491,7 +492,7 @@ void ScummEngine::initScummVars() {
VAR(VAR_V6_EMSSPACE) = 10000;
VAR(VAR_NUM_GLOBAL_OBJS) = _numGlobalObjects - 1;
} else if (_heversion >= 70) {
VAR(VAR_NUM_SOUND_CHANNELS) = 3;
VAR(VAR_NUM_SOUND_CHANNELS) = 8;
VAR(VAR_MUSIC_CHANNEL) = 1;
VAR(VAR_SOUND_CHANNEL) = 2;