Add keyboard control for HE80+ games.
svn-id: r15604
This commit is contained in:
parent
a6da710923
commit
1922b330ad
5 changed files with 32 additions and 4 deletions
|
@ -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
|
||||
|
|
|
@ -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)");
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue