[Scummvm-cvs-logs] CVS: scummvm/scumm module.mk,1.5,1.6 script.cpp,1.23,1.24 script_v8.cpp,2.32,2.33 scumm.h,1.100,1.101

James Brown ender at users.sourceforge.net
Wed Dec 25 05:52:02 CET 2002


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv25932/scumm

Modified Files:
	module.mk script.cpp script_v8.cpp scumm.h 
Log Message:
Hacky font support - first attempt :)


Index: module.mk
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/module.mk,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- module.mk	22 Dec 2002 21:58:15 -0000	1.5
+++ module.mk	25 Dec 2002 13:51:01 -0000	1.6
@@ -26,6 +26,7 @@
 	scumm/string.o \
 	scumm/vars.o \
 	scumm/verbs.o \
+	scumm/nut_renderer.o
 
 SMUSH_OBJS = \
 	scumm/smush/blitter.o \

Index: script.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- script.cpp	24 Dec 2002 23:26:37 -0000	1.23
+++ script.cpp	25 Dec 2002 13:51:01 -0000	1.24
@@ -336,6 +336,8 @@
 #endif
 	debug(9, "readvar=%d", var);
 	if (!(var & 0xF000)) {
+		if (var == 175)
+			return 1;
 #if defined(BYPASS_COPY_PROT)
 		if (var == 490 && _gameId == GID_MONKEY2 && !copyprotbypassed) {
 			copyprotbypassed = true;

Index: script_v8.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v8.cpp,v
retrieving revision 2.32
retrieving revision 2.33
diff -u -d -r2.32 -r2.33
--- script_v8.cpp	25 Dec 2002 12:25:35 -0000	2.32
+++ script_v8.cpp	25 Dec 2002 13:51:01 -0000	2.33
@@ -26,8 +26,7 @@
 #include "sound.h"
 #include "verbs.h"
 
-#include "smush/player.h"
-#include "smush/frenderer.h"
+#include "nut_renderer.h"
 
 /*
  * NO, we do NOT support CMI yet :-) This file is mostly a placeholder and a place
@@ -35,24 +34,6 @@
  * might even be wrong... so don't hold your breath.
  */
 
-
-// #define FONT_HACK
-
-#ifdef FONT_HACK
-// FIXME: Copied from smush/player.cpp - this should probably go somewhere sensible :)
-static FontRenderer *loadFont(const char * file, const char * directory, bool original = false) {
-#ifdef DEBUG
-        debug(5, "loading font from \"%s\"", file);
-#endif
-        FontRenderer * fr = new FontRenderer(original);
-        SmushPlayer p(fr, false, false);
-        p.play(file, directory);
-        return fr;
-}
-#endif
-
-
-
 #define OPCODE(x)	{ &Scumm_v8::x, #x }
 
 void Scumm_v8::setupOpcodes()
@@ -512,9 +493,23 @@
 		_string[m].center = true;
 		_string[m].overhead = false;
 		break;
-	case 0xCD:		// SO_PRINT_CHARSET Set print character set
+	case 0xCD: {		// SO_PRINT_CHARSET Set print character set
 		// FIXME - TODO
-		_string[m].charset = pop();
+		int charset = pop();
+		if (_fr[charset] == NULL) {
+			char fontname[255];
+			sprintf(fontname, "resource/font%d.nut", charset);
+			_fr[charset] = new NutRenderer;
+			_fr[charset]->loadFont(fontname, (char*)getGameDataPath());
+			_fr[charset]->bindDisplay((byte*)virtscr[0].screenPtr, (int32)_realWidth, (int32)_realHeight, (int32)_realWidth);
+			if (!_fr[charset])
+				warning("Failed to load font %d from %s%s\n", charset, getGameDataPath(), fontname);
+			else
+				warning("Loaded font %d from %s%s\n", charset, getGameDataPath(), fontname);
+
+		}
+		_string[m].charset = charset;
+	}
 		break;
 	case 0xCE:
 		_string[m].center = false;
@@ -531,17 +526,16 @@
 		// TODO - FIXME
 		_messagePtr = _scriptPointer;
 
-		Point screenSize(_realHeight, _realWidth);
 		byte buffer[1024];
 		_msgPtrToAdd = buffer;
 		_scriptPointer = _messagePtr = addMessageToStack(_messagePtr);
 
 		if (_fr[_string[m].charset] != NULL) {
-			_fr[_string[m].charset]->drawStringAbsolute((const char*)buffer, (char*)virtscr[0].screenPtr, screenSize, (int16)_string[m].xpos, (int16)_string[m].ypos);
-			printf("Drawn message(%d)\n", m);
+			_fr[_string[m].charset]->drawString((char *)buffer, (int)_string[m].xpos, (int)_string[m].ypos, (unsigned char)_string[m].color, 0);
+		} else {
+			warning("No font loaded in slot %d\n", m);
 		}
 
-//		printf("Message(%d): '%s'\n", m, buffer);
 		break;
 	}
 	case 0xD2:		// SO_PRINT_WRAP Set print wordwrap
@@ -759,18 +753,18 @@
 		makeCursorColorTransparent(pop());
 		break;
 	case 0xE7: {		// SO_CHARSET_SET
-		// FIXME - TODO
 		int charset = pop();
 		if (_fr[charset] == NULL) {
 			char fontname[255];
 			sprintf(fontname, "resource/font%d.nut", charset);
-
-#ifdef FONT_HACK
-			_fr[charset] = loadFont(fontname, getGameDataPath(), true);
-#endif
-
+			_fr[charset] = new NutRenderer;
+			_fr[charset]->loadFont(fontname, (char*)getGameDataPath());
+			_fr[charset]->bindDisplay((byte*)virtscr[0].screenPtr, (int32)_realWidth, (int32)_realHeight, (int32)_realWidth);
 			if (!_fr[charset])
 				warning("Failed to load font %d from %s%s\n", charset, getGameDataPath(), fontname);
+			else
+				warning("Loaded font %d from %s%s\n", charset, getGameDataPath(), fontname);
+
 		}
 		break;
 	}

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -d -r1.100 -r1.101
--- scumm.h	25 Dec 2002 12:41:41 -0000	1.100
+++ scumm.h	25 Dec 2002 13:51:01 -0000	1.101
@@ -31,7 +31,7 @@
 #include "common/timer.h"
 #include "common/util.h"
 
-class FontRenderer;
+class NutRenderer;
 class GameDetector;
 class NewGui;
 class Dialog;
@@ -682,7 +682,7 @@
 	void stopTalk();	
 
 	/* FIXME: This should not be here, probably. Hack for CMI v8 fonts */
-	FontRenderer *_fr[4];
+	NutRenderer *_fr[4];
 
 	/* Akos Class */
 





More information about the Scummvm-git-logs mailing list