aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--costume.cpp59
-rw-r--r--gfx.cpp8
-rw-r--r--script_v1.cpp20
-rw-r--r--scumm.h5
-rw-r--r--scummvm.cpp8
-rw-r--r--scummvm.dsp10
-rw-r--r--sdl.cpp14
-rw-r--r--windows.cpp7
8 files changed, 112 insertions, 19 deletions
diff --git a/costume.cpp b/costume.cpp
index 5ed79da40b..6ccde531f0 100644
--- a/costume.cpp
+++ b/costume.cpp
@@ -17,6 +17,9 @@
*
* Change Log:
* $Log$
+ * Revision 1.4 2001/10/16 20:31:27 strigeus
+ * misc fixes
+ *
* Revision 1.3 2001/10/16 10:01:45 strigeus
* preliminary DOTT support
*
@@ -497,7 +500,61 @@ StartPos:;
}
void CostumeRenderer::proc3() {
- warning("COST_Proc3: not implemented");
+ byte *mask,*src,*dst;
+ byte maskbit,len,height,pcolor,width;
+ int color,t;
+ uint y;
+
+ mask = _mask_ptr_dest;
+ dst = _bg_ptr;
+ height = _height2;
+ width = _width2;
+ len = _replen;
+ color = _repcolor;
+ src = _srcptr;
+ maskbit = revBitMask[_xpos&7];
+ y = _ypos;
+
+ if (_docontinue) goto StartPos;
+
+ do {
+ len = *src++;
+ color = len>>_shrval;
+ len &= _maskval;
+ if (!len) len = *src++;
+ do {
+ if (cost_scaleTable[_scaleIndexY++] < _scaleY) {
+ if (color && y < _vscreenheight && !((*mask|mask[_imgbufoffs])&maskbit)) {
+ pcolor = _palette[color];
+ if (pcolor==13)
+ pcolor = _transEffect[*dst];
+ *dst = pcolor;
+ }
+ dst += 320;
+ mask += 40;
+ y++;
+ }
+ if (!--height) {
+ if(!--width)
+ return;
+ height = _height;
+ y = _ypostop;
+ _scaleIndexY = _scaleIndexYTop;
+ t = _scaleIndexX;
+ _scaleIndexX = t + _scaleIndexXStep;
+ if (cost_scaleTable[t] < _scaleX) {
+ _xpos += _scaleIndexXStep;
+ if (_xpos >= 320)
+ return;
+ maskbit = revBitMask[_xpos&7];
+ _bg_ptr += _scaleIndexXStep;
+ }
+ dst = _bg_ptr;
+ mask = _mask_ptr + (_xpos>>3);
+ }
+StartPos:;
+ } while (--len);
+ } while(1);
}
void CostumeRenderer::proc2() {
diff --git a/gfx.cpp b/gfx.cpp
index abb636024b..2633cd10c9 100644
--- a/gfx.cpp
+++ b/gfx.cpp
@@ -17,6 +17,9 @@
*
* Change Log:
* $Log$
+ * Revision 1.5 2001/10/16 20:31:27 strigeus
+ * misc fixes
+ *
* Revision 1.4 2001/10/16 10:01:47 strigeus
* preliminary DOTT support
*
@@ -231,6 +234,7 @@ void Scumm::drawStripToScreen() {
void blit(byte *dst, byte *src, int w, int h) {
+ assert(h>0);
do {
memcpy(dst, src, w);
dst += 320;
@@ -1361,7 +1365,7 @@ void Scumm::restoreBG(int left, int top, int right, int bottom) {
height = bottom - top;
width = right - left;
widthmod = (width >> 2) + 2;
-
+
if (vs->alloctwobuffers && _currentRoom!=0 && _vars[VAR_DRAWFLAGS]&2) {
blit(gdi.bg_ptr, gdi.where_to_draw_ptr, width, height);
if (gdi.virtScreen==0 && charset._hasMask && height) {
@@ -1433,7 +1437,7 @@ int Scumm::findVirtScreen(int y) {
gdi.virtScreen=-1;
for(i=0; i<3; i++,vs++) {
- if (y >= vs->topline && y <= vs->topline+vs->height) {
+ if (y >= vs->topline && y < vs->topline+vs->height) {
gdi.virtScreen = i;
return i;
}
diff --git a/script_v1.cpp b/script_v1.cpp
index dde9cbb908..8d5bac2f86 100644
--- a/script_v1.cpp
+++ b/script_v1.cpp
@@ -17,6 +17,9 @@
*
* Change Log:
* $Log$
+ * Revision 1.2 2001/10/16 20:31:27 strigeus
+ * misc fixes
+ *
* Revision 1.1 2001/10/16 10:01:47 strigeus
* preliminary DOTT support
*
@@ -1397,11 +1400,20 @@ void Scumm::o_roomOps() {
unkRoomFunc3(d, e, a, b, c);
break;
- case 13: /* ? */
- error("roomops:13 not implemented");
+ case 13: { /* save-string */
+ char buf[256],*s;
+ a = getVarOrDirectByte(0x80);
+ s = buf;
+ while (*s++=fetchScriptByte());
+ warning("roomops:13 save-string(%d,\"%s\") not implemented", a, buf);
break;
- case 14: /* ? */
- error("roomops:14 not implemented");
+ }
+ case 14: /* load-string */
+ char buf[256],*s;
+ a = getVarOrDirectByte(0x80);
+ s = buf;
+ while (*s++=fetchScriptByte());
+ warning("roomops:14 load-string(%d,\"%s\") not implemented", a, buf);
break;
case 15: /* palmanip? */
a = getVarOrDirectByte(0x80);
diff --git a/scumm.h b/scumm.h
index 680f6cd47a..e01d0bb117 100644
--- a/scumm.h
+++ b/scumm.h
@@ -17,6 +17,9 @@
*
* Change Log:
* $Log$
+ * Revision 1.9 2001/10/16 20:31:27 strigeus
+ * misc fixes
+ *
* Revision 1.8 2001/10/16 10:01:47 strigeus
* preliminary DOTT support
*
@@ -854,8 +857,6 @@ struct Scumm {
bool _BgNeedsRedraw;
-
-
int16 _localParamList[16];
uint16 _verbMouseOver;
diff --git a/scummvm.cpp b/scummvm.cpp
index 68ff70eff1..84fd1e0f75 100644
--- a/scummvm.cpp
+++ b/scummvm.cpp
@@ -17,6 +17,9 @@
*
* Change Log:
* $Log$
+ * Revision 1.9 2001/10/16 20:31:27 strigeus
+ * misc fixes
+ *
* Revision 1.8 2001/10/16 12:20:22 strigeus
* made files compile on unix
*
@@ -234,7 +237,11 @@ void Scumm::scummMain(int argc, char **argv) {
_fileHandle = NULL;
+#if defined(INDY4)
+ _bootParam = -7873;
+#else
_bootParam = 0;
+#endif
_debugMode = 1;
parseCommandLine(argc, argv);
@@ -412,6 +419,7 @@ static const GameNameList game_list[] = {
{"monkey2", "Monkey Island 2: LeChuck's revenge"},
{"atlantis", "Indiana Jones 4 and the Fate of Atlantis"},
{"fate", "Indiana Jones 4 and the Fate of Atlantis (Demo)"},
+ {"tentacle", "Day Of The Tenctacle"},
{NULL,NULL}
};
diff --git a/scummvm.dsp b/scummvm.dsp
index 7a2d635705..c56986b1cb 100644
--- a/scummvm.dsp
+++ b/scummvm.dsp
@@ -66,7 +66,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "CHECK_HEAP" /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "CHECK_HEAP" /D "DUMP_SCRIPTS" /Yu"stdafx.h" /FD /GZ /c
# ADD BASE RSC /l 0x41d /d "_DEBUG"
# ADD RSC /l 0x41d /d "_DEBUG"
BSC32=bscmake.exe
@@ -131,10 +131,6 @@ SOURCE=.\scummvm.cpp
# End Source File
# Begin Source File
-SOURCE=.\sdl.cpp
-# End Source File
-# Begin Source File
-
SOURCE=.\sound.cpp
# End Source File
# Begin Source File
@@ -154,6 +150,10 @@ SOURCE=.\sys.cpp
SOURCE=.\verbs.cpp
# End Source File
+# Begin Source File
+
+SOURCE=.\windows.cpp
+# End Source File
# End Group
# Begin Group "Header Files"
diff --git a/sdl.cpp b/sdl.cpp
index f54229e3d4..e309f6107a 100644
--- a/sdl.cpp
+++ b/sdl.cpp
@@ -17,6 +17,9 @@
*
* Change Log:
* $Log$
+ * Revision 1.9 2001/10/16 20:31:27 strigeus
+ * misc fixes
+ *
* Revision 1.8 2001/10/16 10:01:48 strigeus
* preliminary DOTT support
*
@@ -220,10 +223,9 @@ void updateScreen(Scumm *s) {
}
if(s->_palDirtyMax != -1) {
+ /* this updates the screen automatically */
updatePalette(s);
- }
-
- if (fullRedraw) {
+ } else if (fullRedraw) {
SDL_UpdateRect(screen, 0,0,0,0);
#if defined(SHOW_AREA)
debug(2,"update area 100 %%");
@@ -346,7 +348,13 @@ void initGraphics(Scumm *s) {
#undef main
int main(int argc, char* argv[]) {
+#if defined(DOTT)
+ scumm._exe_name = "tentacle";
+#elif defined(INDY4)
+ scumm._exe_name = "atlantis";
+#else
scumm._exe_name = "monkey2";
+#endif
scumm._videoMode = 0x13;
scumm.scummMain(argc, argv);
return 0;
diff --git a/windows.cpp b/windows.cpp
index 9b3988eedf..517db52424 100644
--- a/windows.cpp
+++ b/windows.cpp
@@ -17,6 +17,9 @@
*
* Change Log:
* $Log$
+ * Revision 1.6 2001/10/16 20:31:27 strigeus
+ * misc fixes
+ *
* Revision 1.5 2001/10/16 10:01:48 strigeus
* preliminary DOTT support
*
@@ -806,8 +809,6 @@ void updateScreen(Scumm *s) {
wm->writeToScreen();
}
-
-
void waitForTimer(Scumm *s) {
if (!veryFastMode) {
Sleep(5);
@@ -829,6 +830,8 @@ int main(int argc, char* argv[]) {
#if defined(DOTT)
scumm._exe_name = "tentacle";
+#elif defined(INDY4)
+ scumm._exe_name = "atlantis";
#else
scumm._exe_name = "monkey2";
#endif