[Scummvm-cvs-logs] CVS: scummvm/scumm object.cpp,1.27,1.28 script_v8.cpp,2.29,2.30 scumm.h,1.97,1.98
James Brown
ender at users.sourceforge.net
Tue Dec 24 20:31:07 CET 2002
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm gfx.cpp,1.89,1.90 gfx.h,1.15,1.16 object.cpp,1.26,1.27 script_v8.cpp,2.28,2.29 scumm.h,1.96,1.97 vars.cpp,1.10,1.11
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm/smush frenderer.h,1.7,1.8 player.cpp,1.23,1.24
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv29674/scumm
Modified Files:
object.cpp script_v8.cpp scumm.h
Log Message:
Skeleton for hacky font support using Smush's FontRenderer. Doesn't work (uncomment the loadFont line in script_v8 to test).
Aquadran, where are you? :)
Index: object.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/object.cpp,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- object.cpp 25 Dec 2002 03:48:27 -0000 1.27
+++ object.cpp 25 Dec 2002 04:30:23 -0000 1.28
@@ -1326,7 +1326,7 @@
if (!bomp)
error("object %d is not a blast object", eo->number);
- hexdump(bomp,32);
+ //hexdump(bomp,32);
if (_features & GF_AFTER_V8) {
bdd.srcwidth = READ_LE_UINT32(&((BompHeader *)bomp)->v8.width);
Index: script_v8.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v8.cpp,v
retrieving revision 2.29
retrieving revision 2.30
diff -u -d -r2.29 -r2.30
--- script_v8.cpp 25 Dec 2002 03:48:27 -0000 2.29
+++ script_v8.cpp 25 Dec 2002 04:30:23 -0000 2.30
@@ -26,6 +26,9 @@
#include "sound.h"
#include "verbs.h"
+#include "smush/player.h"
+#include "smush/frenderer.h"
+
/*
* NO, we do NOT support CMI yet :-) This file is mostly a placeholder and a place
* to grow real support in. For now, only a few opcodes are implemented, and they
@@ -34,6 +37,17 @@
#define OPCODE(x) { &Scumm_v8::x, #x }
+// 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;
+}
+
void Scumm_v8::setupOpcodes()
{
// TODO: any of the o6_ entries are potentially wrong and pure guesses :-)
@@ -493,7 +507,8 @@
break;
case 0xCD: // SO_PRINT_CHARSET Set print character set
// FIXME - TODO
- pop();
+ _string[m].charset = pop();
+ printf("so_print_charset(%d)\n", _string[m].charset);
break;
case 0xCE:
_string[m].center = false;
@@ -506,15 +521,23 @@
case 0xD0: // SO_PRINT_MUMBLE
error("decodeParseString: SO_PRINT_MUMBLE");
break;
- case 0xD1:
+ case 0xD1: {
// 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);
+ }
+
// printf("Message(%d): '%s'\n", m, buffer);
break;
+ }
case 0xD2: // SO_PRINT_WRAP Set print wordwrap
error("decodeParseString: SO_PRINT_MUMBLE");
break;
@@ -729,11 +752,20 @@
case 0xE6: // SO_CURSOR_TRANSPARENT Set cursor transparent color
makeCursorColorTransparent(pop());
break;
- case 0xE7: // SO_CHARSET_SET
+ case 0xE7: { // SO_CHARSET_SET
// FIXME - TODO
- pop();
-// initCharset(pop());
+ int charset = pop();
+ if (_fr[charset] == NULL) {
+ char fontname[255];
+ sprintf(fontname, "resource/font%d.nut", charset);
+
+// _fr[charset] = loadFont(fontname, getGameDataPath(), true);
+
+ if (!_fr[charset])
+ warning("Failed to load font %d from %s%s\n", charset, getGameDataPath(), fontname);
+ }
break;
+ }
case 0xE8: // SO_CHARSET_COLOR
getStackList(args, sizeof(args) / sizeof(args[0]));
for (i = 0; i < 16; i++)
@@ -1125,6 +1157,7 @@
// TODO
int16 args[30];
getStackList(args, sizeof(args) / sizeof(args[0]));
+ warning("o8_kludge %d\n", args[0]);
switch (args[0]) {
case 11:
@@ -1177,7 +1210,7 @@
// TODO
int16 args[30];
getStackList(args, sizeof(args) / sizeof(args[0]));
-
+ warning("o8_kludge2 %d\n", args[0]);
switch (args[0]) {
case 0xCE: // getRGBSlot
case 0xD3: // getKeyState
Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.97
retrieving revision 1.98
diff -u -d -r1.97 -r1.98
--- scumm.h 25 Dec 2002 03:48:27 -0000 1.97
+++ scumm.h 25 Dec 2002 04:30:23 -0000 1.98
@@ -31,6 +31,7 @@
#include "common/timer.h"
#include "common/util.h"
+class FontRenderer;
class GameDetector;
class NewGui;
class Dialog;
@@ -679,6 +680,9 @@
StringTab _string[6];
void actorTalk();
void stopTalk();
+
+ /* FIXME: This should not be here, probably. Hack for CMI v8 fonts */
+ FontRenderer *_fr[4];
/* Akos Class */
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/scumm gfx.cpp,1.89,1.90 gfx.h,1.15,1.16 object.cpp,1.26,1.27 script_v8.cpp,2.28,2.29 scumm.h,1.96,1.97 vars.cpp,1.10,1.11
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm/smush frenderer.h,1.7,1.8 player.cpp,1.23,1.24
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list