diff options
| -rw-r--r-- | README | 17 | ||||
| -rw-r--r-- | common/gameDetector.cpp | 4 | ||||
| -rw-r--r-- | common/gameDetector.h | 2 | ||||
| -rw-r--r-- | sky/control.cpp | 28 | ||||
| -rw-r--r-- | sky/control.h | 2 | ||||
| -rw-r--r-- | sky/logic.cpp | 9 | ||||
| -rw-r--r-- | sky/sky.cpp | 19 | ||||
| -rw-r--r-- | sky/sky.h | 1 | ||||
| -rw-r--r-- | sky/skydefs.h | 9 | 
9 files changed, 68 insertions, 23 deletions
@@ -433,8 +433,10 @@ being ran faster than their normal speed, as scripts will loose synchronisation  Language options:  ----------------- -ScummVM includes a language option for the Curse of Money Island and the Simon -the Sorcerer 1 & 2 games. +ScummVM includes a language option for the Curse of Monkey Island, Simon +the Sorcerer 1 & 2 and Beneath a Steel Sky. + +Curse of Monkey Island / Simon the Sorcerer:          en  - English (default)          de  - German @@ -447,6 +449,17 @@ the Sorcerer 1 & 2 games.          kr  - Korean          hb  - Hebrew +Beneath a Steel Sky: +	en  - English USA (default) +        de  - German +        fr  - French +        it  - Italian +        pt  - Portuguese +        es  - Spanish +        se  - Swedish +        gb  - English (Great Britain) + +  Graphics filters:  -----------------  ScummVM offers several anti-aliasing filters to attempt to improve visual diff --git a/common/gameDetector.cpp b/common/gameDetector.cpp index ef3b5c1384..88c9db6023 100644 --- a/common/gameDetector.cpp +++ b/common/gameDetector.cpp @@ -56,7 +56,7 @@ static const char USAGE_STRING[] =  	"\t-g<mode>       - graphics mode (normal,2x,3x,2xsai,super2xsai,supereagle,advmame2x,advmame3x,tv2x,dotmatrix)\n"  	"\t-e<mode>       - set music engine (see README for details)\n"  	"\t-a             - specify game is amiga version\n" -	"\t-q<lang>       - specify language (en,de,fr,it,pt,es,jp,zh,kr,hb)\n" +	"\t-q<lang>       - specify language (en,de,fr,it,pt,es,jp,zh,kr,hb) BASS also: (gb, se)\n"  	"\n"  	"\t-c<num>        - use cdrom <num> for cd audio\n"  	"\t-m<num>        - set music volume to <num> (0-255)\n" @@ -126,6 +126,8 @@ static const struct Language languages[] = {  	{"jp", "Japanese", JA_JPN},  	{"zh", "Chinese (Taiwan)", ZH_TWN},  	{"kr", "Korean", KO_KOR}, +	{"gb", "English", EN_GRB}, +	{"se", "Swedish", SE_SWE},  	{"hb", "Hebrew", HB_HEB},  	{0, 0, 0}  }; diff --git a/common/gameDetector.h b/common/gameDetector.h index a563c3c9e9..d65072b6cb 100644 --- a/common/gameDetector.h +++ b/common/gameDetector.h @@ -56,6 +56,8 @@ enum {  	JA_JPN = 6,  	ZH_TWN = 7,  	KO_KOR = 8, +	SE_SWE = 9, +	EN_GRB = 10,  	HB_HEB = 20  }; diff --git a/sky/control.cpp b/sky/control.cpp index 3cf1e9f743..0880a5b3c6 100644 --- a/sky/control.cpp +++ b/sky/control.cpp @@ -818,7 +818,8 @@ uint16 SkyControl::saveRestorePanel(bool allowSave) {  	uint8 *saveGameTexts = (uint8 *)malloc(MAX_SAVE_GAMES * MAX_TEXT_LEN);  	dataFileHeader *textSprites[MAX_ON_SCREEN + 1]; -	textSprites[MAX_ON_SCREEN] = NULL; +	for (cnt = 0; cnt < MAX_ON_SCREEN + 1; cnt++) +		textSprites[cnt] = NULL;  	_firstText = 0;  	loadDescriptions(saveGameTexts); @@ -829,6 +830,7 @@ uint16 SkyControl::saveRestorePanel(bool allowSave) {  	bool refreshAll = true;  	uint16 clickRes = 0;  	while (!quitPanel) { +		clickRes = 0;  		if (refreshNames || refreshAll) {  			if (refreshAll) {  				_text->flushForRedraw(); @@ -836,7 +838,11 @@ uint16 SkyControl::saveRestorePanel(bool allowSave) {  				_quitButton->drawToScreen(NO_MASK);  				if (withAutoSave)  					_autoSaveButton->drawToScreen(NO_MASK); +				refreshAll = false;  			} +			for (cnt = 0; cnt < MAX_ON_SCREEN; cnt++) +				if (textSprites[cnt]) +					free(textSprites[cnt]);  			setUpGameSprites(saveGameTexts, textSprites, _firstText, _selectedGame);  			showSprites(textSprites, allowSave);  			refreshNames = false; @@ -1632,7 +1638,6 @@ void SkyControl::showGameQuitMsg(bool useScreen) {  	_skyText->fnSetFont(0);  	uint8 *textBuf1 = (uint8 *)malloc(GAME_SCREEN_WIDTH * 14 + sizeof(dataFileHeader));  	uint8 *textBuf2 = (uint8 *)malloc(GAME_SCREEN_WIDTH * 14 + sizeof(dataFileHeader)); -	uint8 textNum;  	uint8 *screenData;  	if (useScreen) {  		if (_skyScreen->sequenceRunning()) @@ -1641,15 +1646,8 @@ void SkyControl::showGameQuitMsg(bool useScreen) {  		screenData = _skyScreen->giveCurrent();  	} else  		screenData = _screenBuf; -	switch (SkyState::_systemVars.language) { -		case DE_DEU: textNum = 1; break; -		case FR_FRA: textNum = 2; break; -		case IT_ITA: textNum = 4; break; -		case PT_BRA: textNum = 5; break; -		default: textNum = 0; break; -	} -	_skyText->displayText(_quitTexts[textNum * 2 + 0], textBuf1, true, 320, 255); -	_skyText->displayText(_quitTexts[textNum * 2 + 1], textBuf2, true, 320, 255); +	_skyText->displayText(_quitTexts[SkyState::_systemVars.language * 2 + 0], textBuf1, true, 320, 255); +	_skyText->displayText(_quitTexts[SkyState::_systemVars.language * 2 + 1], textBuf2, true, 320, 255);  	uint8 *curLine1 = textBuf1 + sizeof(dataFileHeader);  	uint8 *curLine2 = textBuf2 + sizeof(dataFileHeader);  	uint8 *targetLine = screenData + GAME_SCREEN_WIDTH * 80; @@ -1671,19 +1669,23 @@ void SkyControl::showGameQuitMsg(bool useScreen) {  	_system->quit();  } -char SkyControl::_quitTexts[12][30] = { +char SkyControl::_quitTexts[16][35] = {  	"Game over player one",  	"BE VIGILANT",  	"Das Spiel ist aus.",  	"SEI WACHSAM",  	"Game over joueur 1",  	"SOYEZ VIGILANTS", -	"Spelet r slut, Agent 1.", +	"Game over player one", +	"BE VIGILANT", +	"SPELET \x8Er SLUT, Agent 1.",  	"VAR VAKSAM",  	"Game over giocatore 1",  	"SIATE VIGILANTI",  	"Fim de jogo para o jogador um",  	"BE VIGILANT" +	"Game over player one", +	"BE VIGILANT",  };  uint8 SkyControl::_crossImg[594] = { diff --git a/sky/control.h b/sky/control.h index de1cdad8ef..7b23fe3d84 100644 --- a/sky/control.h +++ b/sky/control.h @@ -285,7 +285,7 @@ private:  	SkyControlStatus *_statusBar; -	static char _quitTexts[12][30]; +	static char _quitTexts[16][35];  	static uint8 _crossImg[594];  }; diff --git a/sky/logic.cpp b/sky/logic.cpp index 691f3d9ed1..9caf1ba0a1 100644 --- a/sky/logic.cpp +++ b/sky/logic.cpp @@ -2438,11 +2438,10 @@ void SkyLogic::stdSpeak(Compact *target, uint32 textNum, uint32 animNum, uint32  	// if sky is configured to speech-only return now - except if we're running another  	// language than english -	if (speechUsed && (!(SkyState::_systemVars.systemFlags & SF_ALLOW_TEXT)) && -		(SkyState::_systemVars.language == EN_USA)) { -            target->extCompact->spTime = 10; -			target->logic = L_TALK;  -			return ; +	if (speechUsed && (!(SkyState::_systemVars.systemFlags & SF_ALLOW_TEXT))) { +		target->extCompact->spTime = 10; +		target->logic = L_TALK;  +		return ;  	}  	//now form the text sprite diff --git a/sky/sky.cpp b/sky/sky.cpp index 0cfdb9e404..3a444da83e 100644 --- a/sky/sky.cpp +++ b/sky/sky.cpp @@ -87,7 +87,10 @@ SkyState::SkyState(GameDetector *detector, OSystem *syst)  	_debugMode = detector->_debugMode;  	_debugLevel = detector->_debugLevel; -	_systemVars.language = detector->_language; +	if (detector->_language > 10) +		_systemVars.language = SKY_USA; +	else +		_systemVars.language = _languageTable[detector->_language];  	_detector = detector;  	_floppyIntro = detector->_floppyIntro; @@ -110,6 +113,20 @@ void SkyState::errorString(const char *buf1, char *buf2) {  	strcpy(buf2, buf1);  } +uint8 SkyState::_languageTable[11] = { +	SKY_USA, // EN_USA +	SKY_GERMAN, // DE_DEU +	SKY_FRENCH, // FR_FRA +	SKY_ITALIAN, // IT_ITA +	SKY_PORTUGUESE, // PT_BRA +	SKY_SPANISH, // ES_ESP +	SKY_USA, // JA_JPN +	SKY_USA, // ZH_TWN +	SKY_USA, // KO_KOR +	SKY_SWEDISH, // SE_SWE +	SKY_ENGLISH  // EN_GRB +}; +  void SkyState::doCheat(uint8 num) {  	switch(num) { @@ -61,6 +61,7 @@ class SkyState : public Engine {  protected:  	byte _game;  	byte _key_pressed; +	static uint8 _languageTable[11];  	//intro related diff --git a/sky/skydefs.h b/sky/skydefs.h index 0f2030d48f..33d58de5e2 100644 --- a/sky/skydefs.h +++ b/sky/skydefs.h @@ -26,6 +26,15 @@  //This file is incomplete, several flags still missing. +#define SKY_ENGLISH		0 +#define SKY_GERMAN		1 +#define SKY_FRENCH		2 +#define SKY_USA			3 +#define SKY_SWEDISH		4 +#define SKY_ITALIAN		5 +#define SKY_PORTUGUESE	6 +#define SKY_SPANISH		7 +  #define ST_COLLISION_BIT	5  #define S_COUNT	0  | 
