diff options
| -rw-r--r-- | engines/gob/inter.cpp | 25 | ||||
| -rw-r--r-- | engines/gob/inter.h | 4 | ||||
| -rw-r--r-- | engines/gob/inter_v1.cpp | 28 | ||||
| -rw-r--r-- | engines/gob/inter_v2.cpp | 29 | 
4 files changed, 59 insertions, 27 deletions
diff --git a/engines/gob/inter.cpp b/engines/gob/inter.cpp index 425b3e6df0..2fa2f79645 100644 --- a/engines/gob/inter.cpp +++ b/engines/gob/inter.cpp @@ -189,31 +189,6 @@ void Inter::funcBlock(int16 retFlag) {  	return;  } -void Inter::storeKey(int16 key) { -	WRITE_VAR(12, _vm->_util->getTimeKey() - _vm->_game->_startTimeKey); - -	storeMouse(); -	WRITE_VAR(1, _vm->_snd->_playingSound); - -	if (key == 0x4800) -		key = 0x0b; -	else if (key == 0x5000) -		key = 0x0a; -	else if (key == 0x4d00) -		key = 0x09; -	else if (key == 0x4b00) -		key = 0x08; -	else if (key == 0x011b) -		key = 0x1b; -	else if ((key & 0xff) != 0) -		key &= 0xff; - -	WRITE_VAR(0, key); - -	if (key != 0) -		_vm->_util->waitKey(); -} -  void Inter::checkSwitchTable(char **ppExec) {  	int16 i;  	int16 len; diff --git a/engines/gob/inter.h b/engines/gob/inter.h index 7a49045ac5..18f501c262 100644 --- a/engines/gob/inter.h +++ b/engines/gob/inter.h @@ -58,13 +58,13 @@ public:  	char evalExpr(int16 *pRes);  	char evalBoolResult(void);  	void funcBlock(int16 retFlag); -	void storeKey(int16 key);  	void checkSwitchTable(char **ppExec);  	void callSub(int16 retFlag);  	void initControlVars(char full);  	void renewTimeInVars(void);  	void manipulateMap(int16 xPos, int16 yPos, int16 item);  	virtual int16 loadSound(int16 slot) = 0; +	virtual void storeKey(int16 key) = 0;  	virtual void storeMouse(void) = 0;  	virtual void animPalette(void) = 0; @@ -89,6 +89,7 @@ public:  	Inter_v1(GobEngine *vm);  	virtual ~Inter_v1() {};  	virtual int16 loadSound(int16 slot); +	virtual void storeKey(int16 key);  	virtual void storeMouse(void);  	virtual void animPalette(void); @@ -281,6 +282,7 @@ public:  	Inter_v2(GobEngine *vm);  	virtual ~Inter_v2() {};  	virtual int16 loadSound(int16 search); +	virtual void storeKey(int16 key);  	virtual void storeMouse(void);  	virtual void animPalette(void); diff --git a/engines/gob/inter_v1.cpp b/engines/gob/inter_v1.cpp index 9ab3f2a97e..a58c526512 100644 --- a/engines/gob/inter_v1.cpp +++ b/engines/gob/inter_v1.cpp @@ -1339,8 +1339,9 @@ bool Inter_v1::o1_keyFunc(char &cmdCount, int16 &counter, int16 &retFlag) {  	animPalette();  	_vm->_draw->blitInvalidated(); +	_vm->_video->waitRetrace(_vm->_global->_videoMode);  	// Gob2 busy-waits here, so add a delay -	_vm->_util->longDelay(1); +	_vm->_util->delay(1);  	if (flag != 0) { @@ -2797,6 +2798,31 @@ void Inter_v1::loadMult(void) {  	}  } +void Inter_v1::storeKey(int16 key) { +	WRITE_VAR(12, _vm->_util->getTimeKey() - _vm->_game->_startTimeKey); + +	storeMouse(); +	WRITE_VAR(1, _vm->_snd->_playingSound); + +	if (key == 0x4800) +		key = 0x0B; +	else if (key == 0x5000) +		key = 0x0A; +	else if (key == 0x4D00) +		key = 0x09; +	else if (key == 0x4B00) +		key = 0x08; +	else if (key == 0x011B) +		key = 0x1B; +	else if ((key & 0xFF) != 0) +		key &= 0xFF; + +	WRITE_VAR(0, key); + +	if (key != 0) +		_vm->_util->waitKey(); +} +  void Inter_v1::storeMouse(void) {  	WRITE_VAR(2, _vm->_global->_inter_mouseX);  	WRITE_VAR(3, _vm->_global->_inter_mouseY); diff --git a/engines/gob/inter_v2.cpp b/engines/gob/inter_v2.cpp index 5a03aa7586..b070570911 100644 --- a/engines/gob/inter_v2.cpp +++ b/engines/gob/inter_v2.cpp @@ -2312,6 +2312,35 @@ void Inter_v2::o2_switchTotSub(void) {  	_vm->_game->switchTotSub(index, skipPlay);  } +void Inter_v2::storeKey(int16 key) { +	WRITE_VAR(12, _vm->_util->getTimeKey() - _vm->_game->_startTimeKey); + +	storeMouse(); +	WRITE_VAR(1, _vm->_snd->_playingSound); + +	if (key == 0x4800) +		key = 0x0B; +	else if (key == 0x5000) +		key = 0x0A; +	else if (key == 0x4D00) +		key = 0x09; +	else if (key == 0x4B00) +		key = 0x08; +	else if (key == 0x011B) +		key = 0x1B; +	else if (key == 0x0E08) +		key = 0x19; +	else if (key == 0x5300) +		key = 0x1A; +	else if ((key & 0xFF) != 0) +		key &= 0xFF; + +	WRITE_VAR(0, key); + +	if (key != 0) +		_vm->_util->waitKey(); +} +  void Inter_v2::storeMouse(void) {  	int16 x;  	int16 y;  | 
