Re-enabled the 3 entries that can't have menus (KQ3 ST, KQ3 DOS 1.01, SQ1 DOS 1.0X). The ESC key will pause the game in those 3 games

svn-id: r28129
This commit is contained in:
Filippos Karapetis 2007-07-17 20:17:28 +00:00
parent 332f74486e
commit a5e6b75edb
3 changed files with 18 additions and 15 deletions

View File

@ -112,7 +112,8 @@ enum AgiGameFeatures {
GF_AGIPAL = (1 << 4),
GF_MACGOLDRUSH = (1 << 5),
GF_FANMADE = (1 << 6),
GF_MENUS = (1 << 7)
GF_MENUS = (1 << 7),
GF_ESCPAUSE = (1 << 8)
};
enum AgiGameID {

View File

@ -648,10 +648,10 @@ static const AGIGameDescription gameDescriptions[] = {
0x2440,
},
#if 0
{
// King's Quest 3 (ST) 1.02 11/18/86
// Problematic: does not have menus, crashes if menus are enforced
// Does not have menus, crashes if menus are enforced. Therefore, ESC pauses the game
{
"kq3",
"1.02 1986-11-18",
@ -662,10 +662,10 @@ static const AGIGameDescription gameDescriptions[] = {
},
GID_KQ3,
GType_V2,
0,
GF_ESCPAUSE,
0x2272,
},
#endif
{
// King's Quest 3 (Mac) 2.14 3/15/88
@ -717,10 +717,10 @@ static const AGIGameDescription gameDescriptions[] = {
0x3086,
},
#if 0
{
// King's Quest 3 (PC) 1.01 11/08/86 [AGI 2.272]
// Problematic: does not have menus, crashes if menus are enforced
// Does not have menus, crashes if menus are enforced. Therefore, ESC pauses the game
{
"kq3",
"1.01 1986-11-08",
@ -731,10 +731,10 @@ static const AGIGameDescription gameDescriptions[] = {
},
GID_KQ3,
GType_V2,
0,
GF_ESCPAUSE,
0x2272,
},
#endif
{
// King's Quest 3 (PC 5.25") 2.00 5/25/87 [AGI 2.435]
@ -1411,10 +1411,10 @@ static const AGIGameDescription gameDescriptions[] = {
0x2917,
},
#if 0
{
// Space Quest 1 (PC) 1.0X [AGI 2.089]
// Problematic: does not have menus, crashes if menus are enforced
// Does not have menus, crashes if menus are enforced. Therefore, ESC pauses the game
{
"sq1",
"1.0X 1986-09-24",
@ -1425,10 +1425,10 @@ static const AGIGameDescription gameDescriptions[] = {
},
GID_SQ1,
GType_V2,
0,
GF_ESCPAUSE,
0x2089,
},
#endif
{

View File

@ -107,8 +107,10 @@ int AgiEngine::handleController(int key) {
VtEntry *v = &_game.viewTable[0];
int i;
/* AGI 3.149 games and The Black Cauldron need KEY_ESCAPE to use menus */
if (key == 0 || (key == KEY_ESCAPE && agiGetRelease() != 0x3149 && getGameID() != GID_BC) )
// AGI 3.149 games and The Black Cauldron need KEY_ESCAPE to use menus
// Games with the GF_ESCPAUSE flag need KEY_ESCAPE to pause the game
if (key == 0 ||
(key == KEY_ESCAPE && agiGetRelease() != 0x3149 && getGameID() != GID_BC && !(getFeatures() & GF_ESCPAUSE)) )
return false;
if ((getGameID() == GID_MH1 || getGameID() == GID_MH2) && (key == KEY_ENTER) &&