[Scummvm-cvs-logs] scummvm master -> a709596b48b93e46b36f2142f6d781a5198fe8a2

m-kiewitz m_kiewitz at users.sourceforge.net
Tue May 19 12:42:40 CEST 2015


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
a709596b48 AGI: implement original sierra font, fix bug #6405


Commit: a709596b48b93e46b36f2142f6d781a5198fe8a2
    https://github.com/scummvm/scummvm/commit/a709596b48b93e46b36f2142f6d781a5198fe8a2
Author: Martin Kiewitz (m_kiewitz at users.sourceforge.net)
Date: 2015-05-19T12:39:39+02:00

Commit Message:
AGI: implement original sierra font, fix bug #6405

custom font is still used for fanmade games
i cannot test preAGI games, because I don't own
those.

Changed paths:
    engines/agi/agi.cpp
    engines/agi/agi.h
    engines/agi/font.h
    engines/agi/graphics.cpp
    engines/agi/graphics.h
    engines/agi/preagi.cpp
    engines/agi/text.cpp



diff --git a/engines/agi/agi.cpp b/engines/agi/agi.cpp
index 85a8e17..2b5d713 100644
--- a/engines/agi/agi.cpp
+++ b/engines/agi/agi.cpp
@@ -515,6 +515,8 @@ AgiBase::AgiBase(OSystem *syst, const AGIGameDescription *gameDesc) : Engine(sys
 	_rnd = new Common::RandomSource("agi");
 	_sound = 0;
 
+	_fontData = NULL;
+
 	initFeatures();
 	initVersion();
 }
@@ -569,6 +571,13 @@ AgiEngine::AgiEngine(OSystem *syst, const AGIGameDescription *gameDesc) : AgiBas
 		_game.mouseEnabled = false;
 	}
 
+	// We are currently using the custom font for all fanmade games
+	if (!(getFeatures() & (GF_FANMADE | GF_AGDS))) {
+		_fontData = fontData_Sierra; // original Sierra font
+	} else {
+		_fontData = fontData_FanGames; // our (own?) custom font, that supports umlauts etc.
+	}
+
 	_game._vm = this;
 
 	_game.clockEnabled = false;
diff --git a/engines/agi/agi.h b/engines/agi/agi.h
index 2cf70b3..04e02dc 100644
--- a/engines/agi/agi.h
+++ b/engines/agi/agi.h
@@ -781,6 +781,8 @@ protected:
 
 	void initRenderMode();
 
+	const uint8 *_fontData;
+
 public:
 	GfxMgr *_gfx;
 
@@ -840,6 +842,8 @@ public:
 
 	bool canLoadGameStateCurrently();
 	bool canSaveGameStateCurrently();
+
+	const uint8 *getFontData() { return _fontData; };
 };
 
 typedef void (*AgiCommand)(AgiGame *state, uint8 *p);
diff --git a/engines/agi/font.h b/engines/agi/font.h
index c77d8cf..0e6b15f 100644
--- a/engines/agi/font.h
+++ b/engines/agi/font.h
@@ -26,7 +26,7 @@
 namespace Agi {
 
 // 8x8 font patterns
-static const uint8 curFont[] = {
+static const uint8 fontData_Sierra[] = {
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x7E, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7E,	// cursor hollow
 	0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E,	// cursor solid
@@ -59,6 +59,267 @@ static const uint8 curFont[] = {
 	0x00, 0x24, 0x42, 0xFF, 0x42, 0x24, 0x00, 0x00,
 	0x00, 0x10, 0x38, 0x7C, 0xFE, 0xFE, 0x00, 0x00,
 	0x00, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x00,
+	// original sierra font starts here
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 Space
+	0x30, 0x78, 0x78, 0x30, 0x30, 0x00, 0x30, 0x00,
+	0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00,
+	0x30, 0x7C, 0xC0, 0x78, 0x0C, 0xF8, 0x30, 0x00,
+	0x00, 0xC6, 0xCC, 0x18, 0x30, 0x66, 0xC6, 0x00,
+	0x38, 0x6C, 0x38, 0x76, 0xDC, 0xCC, 0x76, 0x00,
+	0x60, 0x60, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x18, 0x30, 0x60, 0x60, 0x60, 0x30, 0x18, 0x00,
+	0x60, 0x30, 0x18, 0x18, 0x18, 0x30, 0x60, 0x00,
+	0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00,
+	0x00, 0x30, 0x30, 0xFC, 0x30, 0x30, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x60,
+	0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00,
+	0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00,
+	0x7C, 0xC6, 0xCE, 0xDE, 0xF6, 0xE6, 0x7C, 0x00, // 0x30
+	0x30, 0x70, 0x30, 0x30, 0x30, 0x30, 0xFC, 0x00,
+	0x78, 0xCC, 0x0C, 0x38, 0x60, 0xCC, 0xFC, 0x00,
+	0x78, 0xCC, 0x0C, 0x38, 0x0C, 0xCC, 0x78, 0x00,
+	0x1C, 0x3C, 0x6C, 0xCC, 0xFE, 0x0C, 0x1E, 0x00,
+	0xFC, 0xC0, 0xF8, 0x0C, 0x0C, 0xCC, 0x78, 0x00,
+	0x38, 0x60, 0xC0, 0xF8, 0xCC, 0xCC, 0x78, 0x00,
+	0xFC, 0xCC, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00,
+	0x78, 0xCC, 0xCC, 0x78, 0xCC, 0xCC, 0x78, 0x00,
+	0x78, 0xCC, 0xCC, 0x7C, 0x0C, 0x18, 0x70, 0x00,
+	0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00,
+	0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x60,
+	0x18, 0x30, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x00,
+	0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00,
+	0x60, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x60, 0x00,
+	0x78, 0xCC, 0x0C, 0x18, 0x30, 0x00, 0x30, 0x00,
+	0x7C, 0xC6, 0xDE, 0xDE, 0xDE, 0xC0, 0x78, 0x00, // 0x40
+	0x30, 0x78, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, 0x00,
+	0xFC, 0x66, 0x66, 0x7C, 0x66, 0x66, 0xFC, 0x00,
+	0x3C, 0x66, 0xC0, 0xC0, 0xC0, 0x66, 0x3C, 0x00,
+	0xF8, 0x6C, 0x66, 0x66, 0x66, 0x6C, 0xF8, 0x00,
+	0xFE, 0x62, 0x68, 0x78, 0x68, 0x62, 0xFE, 0x00,
+	0xFE, 0x62, 0x68, 0x78, 0x68, 0x60, 0xF0, 0x00,
+	0x3C, 0x66, 0xC0, 0xC0, 0xCE, 0x66, 0x3E, 0x00,
+	0xCC, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, 0xCC, 0x00,
+	0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00,
+	0x1E, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0x00,
+	0xE6, 0x66, 0x6C, 0x78, 0x6C, 0x66, 0xE6, 0x00,
+	0xF0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xFE, 0x00,
+	0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xC6, 0xC6, 0x00,
+	0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00,
+	0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x00,
+	0xFC, 0x66, 0x66, 0x7C, 0x60, 0x60, 0xF0, 0x00, // 0x50
+	0x78, 0xCC, 0xCC, 0xCC, 0xDC, 0x78, 0x1C, 0x00,
+	0xFC, 0x66, 0x66, 0x7C, 0x6C, 0x66, 0xE6, 0x00,
+	0x78, 0xCC, 0xE0, 0x70, 0x1C, 0xCC, 0x78, 0x00,
+	0xFC, 0xB4, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00,
+	0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xFC, 0x00,
+	0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x00,
+	0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC6, 0x00,
+	0xC6, 0xC6, 0x6C, 0x38, 0x38, 0x6C, 0xC6, 0x00,
+	0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x30, 0x78, 0x00,
+	0xFE, 0xC6, 0x8C, 0x18, 0x32, 0x66, 0xFE, 0x00,
+	0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, 0x00,
+	0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x02, 0x00,
+	0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x00,
+	0x10, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
+	0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x60
+	0x00, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00,
+	0xE0, 0x60, 0x60, 0x7C, 0x66, 0x66, 0xDC, 0x00,
+	0x00, 0x00, 0x78, 0xCC, 0xC0, 0xCC, 0x78, 0x00,
+	0x1C, 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0x76, 0x00,
+	0x00, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00,
+	0x38, 0x6C, 0x60, 0xF0, 0x60, 0x60, 0xF0, 0x00,
+	0x00, 0x00, 0x76, 0xCC, 0xCC, 0x7C, 0x0C, 0xF8,
+	0xE0, 0x60, 0x6C, 0x76, 0x66, 0x66, 0xE6, 0x00,
+	0x30, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00,
+	0x0C, 0x00, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78,
+	0xE0, 0x60, 0x66, 0x6C, 0x78, 0x6C, 0xE6, 0x00,
+	0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00,
+	0x00, 0x00, 0xCC, 0xFE, 0xFE, 0xD6, 0xC6, 0x00,
+	0x00, 0x00, 0xF8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00,
+	0x00, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
+	0x00, 0x00, 0xDC, 0x66, 0x66, 0x7C, 0x60, 0xF0, // 0x70
+	0x00, 0x00, 0x76, 0xCC, 0xCC, 0x7C, 0x0C, 0x1E,
+	0x00, 0x00, 0xDC, 0x76, 0x66, 0x60, 0xF0, 0x00,
+	0x00, 0x00, 0x7C, 0xC0, 0x78, 0x0C, 0xF8, 0x00,
+	0x10, 0x30, 0x7C, 0x30, 0x30, 0x34, 0x18, 0x00,
+	0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00,
+	0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x00,
+	0x00, 0x00, 0xC6, 0xD6, 0xFE, 0xFE, 0x6C, 0x00,
+	0x00, 0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0x00,
+	0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x7C, 0x0C, 0xF8,
+	0x00, 0x00, 0xFC, 0x98, 0x30, 0x64, 0xFC, 0x00,
+	0x1C, 0x30, 0x30, 0xE0, 0x30, 0x30, 0x1C, 0x00,
+	0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00,
+	0xE0, 0x30, 0x30, 0x1C, 0x30, 0x30, 0xE0, 0x00,
+	0x76, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+	// custom font starting here at 0x80
+	0x1E, 0x36, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x00, // 0x80
+	0x7C, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x00,
+	0x7C, 0x66, 0x66, 0x7C, 0x66, 0x66, 0x7C, 0x00,
+	0x7E, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+	0x38, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0xFE, 0xC6,
+	0x7E, 0x60, 0x60, 0x7C, 0x60, 0x60, 0x7E, 0x00,
+	0xDB, 0xDB, 0x7E, 0x3C, 0x7E, 0xDB, 0xDB, 0x00,
+	0x3C, 0x66, 0x06, 0x1C, 0x06, 0x66, 0x3C, 0x00,
+	0x66, 0x66, 0x6E, 0x7E, 0x76, 0x66, 0x66, 0x00,
+	0x3C, 0x66, 0x6E, 0x7E, 0x76, 0x66, 0x66, 0x00,
+	0x66, 0x6C, 0x78, 0x70, 0x78, 0x6C, 0x66, 0x00,
+	0x1E, 0x36, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00,
+	0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xC6, 0xC6, 0x00,
+	0x66, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, 0x00,
+	0x3C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00,
+	0x7E, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00,
+	0x7C, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x00,
+	0x3C, 0x66, 0x60, 0x60, 0x60, 0x66, 0x3C, 0x00,
+	0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00,
+	0x66, 0x66, 0x66, 0x3E, 0x06, 0x66, 0x3C, 0x00,
+	0x7E, 0xDB, 0xDB, 0xDB, 0x7E, 0x18, 0x18, 0x00,
+	0x66, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0x66, 0x00,
+	0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7F, 0x03,
+	0x66, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x06, 0x00,
+	0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xFF, 0x00,
+	0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xFF, 0x03,
+	0xE0, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x00,
+	0xC6, 0xC6, 0xC6, 0xF6, 0xDE, 0xDE, 0xF6, 0x00,
+	0x60, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x00,
+	0x78, 0x8C, 0x06, 0x3E, 0x06, 0x8C, 0x78, 0x00,
+	0xCE, 0xDB, 0xDB, 0xFB, 0xDB, 0xDB, 0xCE, 0x00,
+	0x3E, 0x66, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x00,
+	0x00, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x3A, 0x00,
+	0x00, 0x3C, 0x60, 0x3C, 0x66, 0x66, 0x3C, 0x00,
+	0x00, 0x00, 0x7C, 0x66, 0x7C, 0x66, 0x7C, 0x00,
+	0x00, 0x00, 0x7E, 0x60, 0x60, 0x60, 0x60, 0x00,
+	0x00, 0x00, 0x3C, 0x6C, 0x6C, 0x6C, 0xFE, 0xC6,
+	0x00, 0x00, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00,
+	0x00, 0x00, 0xDB, 0x7E, 0x3C, 0x7E, 0xDB, 0x00,
+	0x00, 0x00, 0x3C, 0x66, 0x0C, 0x66, 0x3C, 0x00,
+	0x00, 0x00, 0x66, 0x6E, 0x7E, 0x76, 0x66, 0x00,
+	0x00, 0x18, 0x66, 0x6E, 0x7E, 0x76, 0x66, 0x00,
+	0x00, 0x00, 0x66, 0x6C, 0x78, 0x6C, 0x66, 0x00,
+	0x00, 0x00, 0x1E, 0x36, 0x66, 0x66, 0x66, 0x00,
+	0x00, 0x00, 0xC6, 0xFE, 0xFE, 0xD6, 0xC6, 0x00,
+	0x00, 0x00, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x00,
+	0x00, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00,
+	0x00, 0x00, 0x7E, 0x66, 0x66, 0x66, 0x66, 0x00,
+	0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44,
+	0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA,
+	0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77, 0xDD, 0x77,
+	0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
+	0x18, 0x18, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18,
+	0x18, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18,
+	0x36, 0x36, 0x36, 0xF6, 0x36, 0x36, 0x36, 0x36,
+	0x00, 0x00, 0x00, 0xFE, 0x36, 0x36, 0x36, 0x36,
+	0x00, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18, 0x18,
+	0x36, 0xF6, 0x06, 0xF6, 0x36, 0x36, 0x36, 0x36,
+	0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
+	0x00, 0xFE, 0x06, 0xF6, 0x36, 0x36, 0x36, 0x36,
+	0x36, 0xF6, 0x06, 0xFE, 0x00, 0x00, 0x00, 0x00,
+	0x36, 0x36, 0x36, 0xFE, 0x00, 0x00, 0x00, 0x00,
+	0x18, 0xF8, 0x18, 0xF8, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0xF8, 0x18, 0x18, 0x18, 0x18,
+	0x18, 0x18, 0x18, 0x1F, 0x00, 0x00, 0x00, 0x00,
+	0x18, 0x18, 0x18, 0xFF, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0xFF, 0x18, 0x18, 0x18, 0x18,
+	0x18, 0x18, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18,
+	0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
+	0x18, 0x18, 0x18, 0xFF, 0x18, 0x18, 0x18, 0x18,
+	0x18, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18,
+	0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36, 0x36,
+	0x36, 0x37, 0x30, 0x3F, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x3F, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36,
+	0x36, 0xF7, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0xFF, 0x00, 0xF7, 0x36, 0x36, 0x36, 0x36,
+	0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36,
+	0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
+	0x36, 0xF7, 0x00, 0xF7, 0x36, 0x36, 0x36, 0x36,
+	0x18, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
+	0x36, 0x36, 0x36, 0xFF, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0xFF, 0x00, 0xFF, 0x18, 0x18, 0x18, 0x18,
+	0x00, 0x00, 0x00, 0xFF, 0x36, 0x36, 0x36, 0x36,
+	0x36, 0x36, 0x36, 0x3F, 0x00, 0x00, 0x00, 0x00,
+	0x18, 0x1F, 0x18, 0x1F, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18, 0x18,
+	0x00, 0x00, 0x00, 0x3F, 0x36, 0x36, 0x36, 0x36,
+	0x36, 0x36, 0x36, 0xFF, 0x36, 0x36, 0x36, 0x36,
+	0x18, 0xFF, 0x18, 0xFF, 0x18, 0x18, 0x18, 0x18,
+	0x18, 0x18, 0x18, 0xF8, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x1F, 0x18, 0x18, 0x18, 0x18,
+	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+	0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+	0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
+	0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
+	0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x00,
+	0x00, 0x00, 0x3C, 0x66, 0x60, 0x66, 0x3C, 0x00,
+	0x00, 0x00, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x00,
+	0x00, 0x00, 0x66, 0x66, 0x3E, 0x06, 0x7C, 0x00,
+	0x00, 0x00, 0x7E, 0xDB, 0xDB, 0x7E, 0x18, 0x00,
+	0x00, 0x00, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0x00,
+	0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x7F, 0x03,
+	0x00, 0x00, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x00,
+	0x00, 0x00, 0xDB, 0xDB, 0xDB, 0xDB, 0xFF, 0x00,
+	0x00, 0x00, 0xDB, 0xDB, 0xDB, 0xDB, 0xFF, 0x03,
+	0x00, 0x00, 0xE0, 0x60, 0x7C, 0x66, 0x7C, 0x00,
+	0x00, 0x00, 0xC6, 0xC6, 0xF6, 0xDE, 0xF6, 0x00,
+	0x00, 0x00, 0x60, 0x60, 0x7C, 0x66, 0x7C, 0x00,
+	0x00, 0x00, 0x7C, 0x06, 0x3E, 0x06, 0x7C, 0x00,
+	0x00, 0x00, 0xCE, 0xDB, 0xFB, 0xDB, 0xCE, 0x00,
+	0x00, 0x00, 0x3E, 0x66, 0x3E, 0x36, 0x66, 0x00,
+	0x00, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00,
+	0x10, 0x10, 0x7C, 0x10, 0x10, 0x00, 0x7C, 0x00,
+	0x00, 0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30,
+	0x00, 0x0C, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0C,
+	0x0E, 0x1B, 0x1B, 0x18, 0x18, 0x18, 0x18, 0x18,
+	0x18, 0x18, 0x18, 0x18, 0x18, 0xD8, 0xD8, 0x70,
+	0x00, 0x18, 0x18, 0x00, 0x7E, 0x00, 0x18, 0x18,
+	0x00, 0x76, 0xDC, 0x00, 0x76, 0xDC, 0x00, 0x00,
+	0x00, 0x38, 0x6C, 0x6C, 0x38, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00,
+	0x03, 0x02, 0x06, 0x04, 0xCC, 0x68, 0x38, 0x10,
+	0x3C, 0x42, 0x99, 0xA1, 0xA1, 0x99, 0x42, 0x3C,
+	0x30, 0x48, 0x10, 0x20, 0x78, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x7C, 0x7C, 0x7C, 0x7C, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x7E, 0x00
+};
+
+static const uint8 fontData_FanGames[] = {
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x7E, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x7E,	/* cursor hollow */
+	0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E,	/* cursor solid */
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* cursor empty */
+	0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x10, 0x00,
+	0x3C, 0x3C, 0x18, 0xFF, 0xE7, 0x18, 0x3C, 0x00,
+	0x10, 0x38, 0x7C, 0xFE, 0xEE, 0x10, 0x38, 0x00,
+	0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00,
+	0xFF, 0xFF, 0xE7, 0xC3, 0xC3, 0xE7, 0xFF, 0xFF,
+	0x00, 0x3C, 0x66, 0x42, 0x42, 0x66, 0x3C, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	/* \n */
+	0x0F, 0x07, 0x0F, 0x7D, 0xCC, 0xCC, 0xCC, 0x78,
+	0x3C, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x18,
+	0x08, 0x0C, 0x0A, 0x0A, 0x08, 0x78, 0xF0, 0x00,
+	0x18, 0x14, 0x1A, 0x16, 0x72, 0xE2, 0x0E, 0x1C,
+	0x10, 0x54, 0x38, 0xEE, 0x38, 0x54, 0x10, 0x00,
+	0x80, 0xE0, 0xF8, 0xFE, 0xF8, 0xE0, 0x80, 0x00,
+	0x02, 0x0E, 0x3E, 0xFE, 0x3E, 0x0E, 0x02, 0x00,
+	0x18, 0x3C, 0x5A, 0x18, 0x5A, 0x3C, 0x18, 0x00,
+	0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x00,
+	0x7F, 0xDB, 0xDB, 0xDB, 0x7B, 0x1B, 0x1B, 0x00,
+	0x1C, 0x22, 0x38, 0x44, 0x44, 0x38, 0x88, 0x70,
+	0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x7E, 0x00,
+	0x18, 0x3C, 0x5A, 0x18, 0x5A, 0x3C, 0x18, 0x7E,
+	0x18, 0x3C, 0x5A, 0x18, 0x18, 0x18, 0x18, 0x00,
+	0x18, 0x18, 0x18, 0x18, 0x5A, 0x3C, 0x18, 0x00,
+	0x00, 0x18, 0x0C, 0xFE, 0x0C, 0x18, 0x00, 0x00,
+	0x00, 0x30, 0x60, 0xFE, 0x60, 0x30, 0x00, 0x00,
+	0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xFE, 0x00, 0x00,
+	0x00, 0x24, 0x42, 0xFF, 0x42, 0x24, 0x00, 0x00,
+	0x00, 0x10, 0x38, 0x7C, 0xFE, 0xFE, 0x00, 0x00,
+	0x00, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00,
 	0x6C, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -154,9 +415,7 @@ static const uint8 curFont[] = {
 	0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00,
 	0xE0, 0x30, 0x30, 0x18, 0x30, 0x30, 0xE0, 0x00,
 	0x76, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	//0x00, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xFE, 0x00,
-	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,	//replacement 0x7F
-
+	0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,	/*replacement 0x7F */
 	0x1E, 0x36, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x00,
 	0x7C, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C, 0x00,
 	0x7C, 0x66, 0x66, 0x7C, 0x66, 0x66, 0x7C, 0x00,
@@ -287,7 +546,7 @@ static const uint8 curFont[] = {
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x7E, 0x00
 };
 
-static const uint8 mickey_fontdata[] = {
+static const uint8 fontData_Mickey[] = {
 	0x00, 0x36, 0x7F, 0x7F, 0x3E, 0x1C, 0x08, 0x00,
 	0x00, 0x00, 0x3F, 0x20, 0x2F, 0x28, 0x28, 0x28,
 	0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
@@ -546,7 +805,7 @@ static const uint8 mickey_fontdata[] = {
 	0x10, 0x18, 0x1C, 0x1E, 0x1C, 0x18, 0x10, 0x00,
 };
 
-static const uint8 ibm_fontdata[] = {
+static const uint8 fontData_IBM[] = {
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x7E, 0x81, 0xA5, 0x81, 0xBD, 0x99, 0x81, 0x7E,
 	0x7E, 0xFF, 0xDB, 0xFF, 0xC3, 0xE7, 0xFF, 0x7E,
diff --git a/engines/agi/graphics.cpp b/engines/agi/graphics.cpp
index 2b1bd8c..32d0fdc 100644
--- a/engines/agi/graphics.cpp
+++ b/engines/agi/graphics.cpp
@@ -616,6 +616,8 @@ void GfxMgr::putTextCharacter(int l, int x, int y, unsigned char c, int fg, int
 	int x1, y1, xx, yy, cc;
 	const uint8 *p;
 
+	assert(font);
+
 	p = font + ((unsigned int)c * CHAR_LINES);
 	for (y1 = 0; y1 < CHAR_LINES; y1++) {
 		for (x1 = 0; x1 < CHAR_COLS; x1++) {
@@ -699,7 +701,7 @@ void GfxMgr::printCharacter(int x, int y, char c, int fg, int bg) {
 	x *= CHAR_COLS;
 	y *= CHAR_LINES;
 
-	putTextCharacter(0, x, y, c, fg, bg);
+	putTextCharacter(0, x, y, c, fg, bg, false, _vm->getFontData());
 	// redundant! already inside put_text_character!
 	// flush_block (x, y, x + CHAR_COLS - 1, y + CHAR_LINES - 1);
 }
@@ -754,7 +756,7 @@ void GfxMgr::rawDrawButton(int x, int y, const char *s, int fgcolor, int bgcolor
 	drawRectangle(x1, y1, x2, y2, border ? BUTTON_BORDER : MSG_BOX_COLOR);
 
 	while (*s) {
-		putTextCharacter(0, x + textOffset, y + textOffset, *s++, fgcolor, bgcolor);
+		putTextCharacter(0, x + textOffset, y + textOffset, *s++, fgcolor, bgcolor, false, _vm->getFontData());
 		x += CHAR_COLS;
 	}
 
diff --git a/engines/agi/graphics.h b/engines/agi/graphics.h
index 15668fb..506a9d9 100644
--- a/engines/agi/graphics.h
+++ b/engines/agi/graphics.h
@@ -56,7 +56,7 @@ public:
 
 	void gfxPutBlock(int x1, int y1, int x2, int y2);
 
-	void putTextCharacter(int, int, int, unsigned char, int, int, bool checkerboard = false, const uint8 *font = curFont);
+	void putTextCharacter(int, int, int, unsigned char, int, int, bool checkerboard = false, const uint8 *font = fontData_Sierra);
 	void shakeScreen(int);
 	void shakeStart();
 	void shakeEnd();
diff --git a/engines/agi/preagi.cpp b/engines/agi/preagi.cpp
index daadb5f..c368c7b 100644
--- a/engines/agi/preagi.cpp
+++ b/engines/agi/preagi.cpp
@@ -59,6 +59,12 @@ void PreAgiEngine::initialize() {
 	_gfx = new GfxMgr(this);
 	_picture = new PictureMgr(this, _gfx);
 
+	if (getGameID() == GID_MICKEY) {
+		_fontData = fontData_Mickey;
+	} else {
+		_fontData = fontData_IBM;
+	}
+
 	_gfx->initMachine();
 
 	_game.gameFlags = 0;
@@ -137,7 +143,7 @@ void PreAgiEngine::drawStr(int row, int col, int attr, const char *buffer) {
 			break;
 
 		default:
-			_gfx->putTextCharacter(1, col * 8 , row * 8, static_cast<char>(code), attr & 0x0f, (attr & 0xf0) / 0x10, false, getGameID() == GID_MICKEY ? mickey_fontdata : ibm_fontdata);
+			_gfx->putTextCharacter(1, col * 8 , row * 8, static_cast<char>(code), attr & 0x0f, (attr & 0xf0) / 0x10, false, _fontData);
 
 			if (++col == 320 / 8) {
 				col = 0;
diff --git a/engines/agi/text.cpp b/engines/agi/text.cpp
index eb48857..16c8284 100644
--- a/engines/agi/text.cpp
+++ b/engines/agi/text.cpp
@@ -50,7 +50,7 @@ void AgiEngine::printText2(int l, const char *msg, int foff, int xoff, int yoff,
 
 	// FR: strings with len == 1 were not printed
 	if (len == 1) {
-		_gfx->putTextCharacter(l, xoff + foff, yoff, *msg, fg, bg, checkerboard);
+		_gfx->putTextCharacter(l, xoff + foff, yoff, *msg, fg, bg, checkerboard, _fontData);
 		maxx = 1;
 		minx = 0;
 		ofoff = foff;
@@ -74,7 +74,7 @@ void AgiEngine::printText2(int l, const char *msg, int foff, int xoff, int yoff,
 					if (xpos >= GFX_WIDTH)
 						continue;
 
-					_gfx->putTextCharacter(l, xpos, ypos, *m, fg, bg, checkerboard);
+					_gfx->putTextCharacter(l, xpos, ypos, *m, fg, bg, checkerboard, _fontData);
 
 					if (x1 > maxx)
 						maxx = x1;






More information about the Scummvm-git-logs mailing list