[Scummvm-cvs-logs] scummvm master -> 81c16d12c8f637890a3a122c31db17cbcb7ee910

wjp wjp at usecode.org
Wed Nov 16 23:30:03 CET 2011


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

Summary:
80092965c7 DREAMWEB: Move 'loadroomssample' from dreamgen
402e44f97c DREAMWEB: Convert 'loadroomssample'
bcf440aa3f DREAMWEB: Remove 'twodigitnum' entirely
81c16d12c8 DREAMWEB: Clean up 'dodoor'


Commit: 80092965c7d00a17aec924d9fb380ab3c1187767
    https://github.com/scummvm/scummvm/commit/80092965c7d00a17aec924d9fb380ab3c1187767
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-11-16T14:27:48-08:00

Commit Message:
DREAMWEB: Move 'loadroomssample' from dreamgen

Changed paths:
    devtools/tasmrecover/tasm-recover
    engines/dreamweb/dreamgen.cpp
    engines/dreamweb/dreamgen.h
    engines/dreamweb/stubs.cpp
    engines/dreamweb/stubs.h



diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index d38fca9..63c9377 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -229,6 +229,7 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'textforend',
 	'textformonk',
 	'twodigitnum',
+	'loadroomssample',
 	], skip_output = [
 	# These functions are processed but not output
 	'dreamweb',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index 41ed80e..8f88560 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -14208,26 +14208,6 @@ void DreamGenContext::loadtemptext() {
 	data.word(kTextfile1) = ax;
 }
 
-void DreamGenContext::loadroomssample() {
-	STACK_CHECK;
-	al = data.byte(kRoomssample);
-	_cmp(al, 255);
-	if (flags.z())
-		return /* (loadedalready) */;
-	_cmp(al, data.byte(kCurrentsample));
-	if (flags.z())
-		return /* (loadedalready) */;
-	data.byte(kCurrentsample) = al;
-	al = data.byte(kCurrentsample);
-	cl = '0';
-	twodigitnum();
-	di = 1896;
-	_xchg(al, ah);
-	cs.word(di+10) = ax;
-	dx = di;
-	loadsecondsample();
-}
-
 void DreamGenContext::getridofreels() {
 	STACK_CHECK;
 	_cmp(data.byte(kRoomloaded), 0);
@@ -16188,7 +16168,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {
 		case addr_loadtempcharset: loadtempcharset(); break;
 		case addr_standardload: standardload(); break;
 		case addr_loadtemptext: loadtemptext(); break;
-		case addr_loadroomssample: loadroomssample(); break;
 		case addr_getridofreels: getridofreels(); break;
 		case addr_getridofall: getridofall(); break;
 		case addr_restorereels: restorereels(); break;
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index 63783c0..a89fb43 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -64,7 +64,6 @@ public:
 	static const uint16 addr_restorereels = 0xcb40;
 	static const uint16 addr_getridofall = 0xcb3c;
 	static const uint16 addr_getridofreels = 0xcb38;
-	static const uint16 addr_loadroomssample = 0xcb34;
 	static const uint16 addr_loadtemptext = 0xcb2c;
 	static const uint16 addr_standardload = 0xcb28;
 	static const uint16 addr_loadtempcharset = 0xcb24;
@@ -1342,7 +1341,7 @@ public:
 	void bartender();
 	void eden();
 	void showdiary();
-	void purgealocation();
+	//void loadroomssample();
 	//void updatepeople();
 	//void addtopeoplelist();
 	void hangoncurs();
@@ -1593,7 +1592,7 @@ public:
 	void enablesoundint();
 	void madmanstelly();
 	void constant();
-	void loadroomssample();
+	void purgealocation();
 	void sparkydrip();
 	//void paltostartpal();
 	void bossman();
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 8e7a076..2817465 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -2054,5 +2054,25 @@ void DreamGenContext::twodigitnum() {
 	al = digit2;
 }
 
+void DreamGenContext::loadroomssample() {
+	STACK_CHECK;
+	al = data.byte(kRoomssample);
+	_cmp(al, 255);
+	if (flags.z())
+		return /* (loadedalready) */;
+	_cmp(al, data.byte(kCurrentsample));
+	if (flags.z())
+		return /* (loadedalready) */;
+	data.byte(kCurrentsample) = al;
+	al = data.byte(kCurrentsample);
+	cl = '0';
+	twodigitnum();
+	di = 1896;
+	_xchg(al, ah);
+	cs.word(di+10) = ax;
+	dx = di;
+	loadsecondsample();
+}
+
 } /*namespace dreamgen */
 
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index aa47a62..09d93d0 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -275,4 +275,5 @@
 	void textforend();
 	void twodigitnum(uint8 num, uint8 baseChar, uint8 *digit1, uint8 *digit2);
 	void twodigitnum();
+	void loadroomssample();
 


Commit: 402e44f97c60ed462cdc16d6713bb87848cd7c66
    https://github.com/scummvm/scummvm/commit/402e44f97c60ed462cdc16d6713bb87848cd7c66
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-11-16T14:27:48-08:00

Commit Message:
DREAMWEB: Convert 'loadroomssample'

Changed paths:
    engines/dreamweb/stubs.cpp



diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 2817465..8c95217 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -2055,22 +2055,15 @@ void DreamGenContext::twodigitnum() {
 }
 
 void DreamGenContext::loadroomssample() {
-	STACK_CHECK;
-	al = data.byte(kRoomssample);
-	_cmp(al, 255);
-	if (flags.z())
-		return /* (loadedalready) */;
-	_cmp(al, data.byte(kCurrentsample));
-	if (flags.z())
-		return /* (loadedalready) */;
-	data.byte(kCurrentsample) = al;
-	al = data.byte(kCurrentsample);
-	cl = '0';
-	twodigitnum();
-	di = 1896;
-	_xchg(al, ah);
-	cs.word(di+10) = ax;
-	dx = di;
+	uint8 sample = data.byte(kRoomssample);
+
+	if (sample == 255 || data.byte(kCurrentsample) == sample)
+		return; // loaded already
+
+	data.byte(kCurrentsample) = sample;
+	cs.byte(kSamplename+10) = '0' + sample / 10;
+	cs.byte(kSamplename+11) = '0' + sample % 10;
+	dx = kSamplename;
 	loadsecondsample();
 }
 


Commit: bcf440aa3fc3f2a87410da6cef36f8fec2d27393
    https://github.com/scummvm/scummvm/commit/bcf440aa3fc3f2a87410da6cef36f8fec2d27393
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-11-16T14:27:48-08:00

Commit Message:
DREAMWEB: Remove 'twodigitnum' entirely

Changed paths:
    engines/dreamweb/stubs.cpp
    engines/dreamweb/stubs.h



diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 8c95217..f98e069 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -1961,16 +1961,18 @@ void DreamGenContext::showtime() {
 		return;
 	Frame *charset = (Frame *)segRef(data.word(kCharset1)).ptr(0, 0);
 
-	uint8 mod1, mod10;
-	twodigitnum(data.byte(kSecondcount), 0, &mod10, &mod1);
-	showframe(charset, 282+5, 21, 91*3+10 + mod10, 0);
-	showframe(charset, 282+9, 21, 91*3+10 + mod1, 0);
-	twodigitnum(data.byte(kMinutecount), 0, &mod10, &mod1);
-	showframe(charset, 270+5, 21, 91*3 + mod10, 0);
-	showframe(charset, 270+11, 21, 91*3 + mod1, 0);
-	twodigitnum(data.byte(kHourcount), 0, &mod10, &mod1);
-	showframe(charset, 256+5, 21, 91*3 + mod10, 0);
-	showframe(charset, 256+11, 21, 91*3 + mod1, 0);
+	int seconds = data.byte(kSecondcount);
+	int minutes = data.byte(kMinutecount);
+	int hours = data.byte(kHourcount);
+
+	showframe(charset, 282+5, 21, 91*3+10 + seconds / 10, 0);
+	showframe(charset, 282+9, 21, 91*3+10 + seconds % 10, 0);
+
+	showframe(charset, 270+5, 21, 91*3 + minutes / 10, 0);
+	showframe(charset, 270+11, 21, 91*3 + minutes % 10, 0);
+
+	showframe(charset, 256+5, 21, 91*3 + hours / 10, 0);
+	showframe(charset, 256+11, 21, 91*3 + hours % 10, 0);
 
 	showframe(charset, 267+5, 21, 91*3+20, 0);
 }
@@ -2039,21 +2041,6 @@ void DreamGenContext::loadroom() {
 	getdimension();
 }
 
-void DreamGenContext::twodigitnum(uint8 num, uint8 baseChar,
-                                  uint8 *digit1, uint8 *digit2) {
-	*digit1 = baseChar + num/10;
-	*digit2 = baseChar + num%10;
-}
-
-// Convert a number between 0 and 99 into its two digits, either
-// ASCII (if cl/basechar == '0'), or raw (if cl/basechar == 0).
-void DreamGenContext::twodigitnum() {
-	uint8 digit1, digit2;
-	twodigitnum(al, cl, &digit1, &digit2);
-	ah = digit1;
-	al = digit2;
-}
-
 void DreamGenContext::loadroomssample() {
 	uint8 sample = data.byte(kRoomssample);
 
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 09d93d0..3fa764f 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -273,7 +273,5 @@
 	void putundermenu();
 	void textformonk();
 	void textforend();
-	void twodigitnum(uint8 num, uint8 baseChar, uint8 *digit1, uint8 *digit2);
-	void twodigitnum();
 	void loadroomssample();
 


Commit: 81c16d12c8f637890a3a122c31db17cbcb7ee910
    https://github.com/scummvm/scummvm/commit/81c16d12c8f637890a3a122c31db17cbcb7ee910
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-11-16T14:29:17-08:00

Commit Message:
DREAMWEB: Clean up 'dodoor'

Changed paths:
    engines/dreamweb/sprite.cpp
    engines/dreamweb/structs.h
    engines/dreamweb/stubs.h



diff --git a/engines/dreamweb/sprite.cpp b/engines/dreamweb/sprite.cpp
index 1a1c8e9..7bbe298 100644
--- a/engines/dreamweb/sprite.cpp
+++ b/engines/dreamweb/sprite.cpp
@@ -295,76 +295,61 @@ void DreamGenContext::random(Sprite *sprite, SetObject *objData) {
 }
 
 void DreamGenContext::doorway(Sprite *sprite, SetObject *objData) {
-	data.byte(kDoorcheck1) = (uint8)-24;
-	data.byte(kDoorcheck2) = 10;
-	data.byte(kDoorcheck3) = (uint8)-30;
-	data.byte(kDoorcheck4) = 10;
-	dodoor(sprite, objData);
+	Common::Rect check(-24, -30, 10, 10);
+	dodoor(sprite, objData, check);
 }
 
 void DreamGenContext::widedoor(Sprite *sprite, SetObject *objData) {
-	data.byte(kDoorcheck1) = (uint8)-24;
-	data.byte(kDoorcheck2) = 24;
-	data.byte(kDoorcheck3) = (uint8)-30;
-	data.byte(kDoorcheck4) = 24;
-	dodoor(sprite, objData);
+	Common::Rect check(-24, -30, 24, 24);
+	dodoor(sprite, objData, check);
 }
 
-void DreamGenContext::dodoor() {
-	Sprite *sprite = (Sprite *)es.ptr(bx, sizeof(Sprite));
-	SetObject *objData = (SetObject *)ds.ptr(di, 0);
-	dodoor(sprite, objData);
-}
+void DreamGenContext::dodoor(Sprite *sprite, SetObject *objData, Common::Rect check) {
+
+	int ryanx = data.byte(kRyanx);
+	int ryany = data.byte(kRyany);
+
+	// Automatically opening doors: check if Ryan is in range
+
+	check.translate(sprite->x, sprite->y);
+	bool openDoor = check.contains(ryanx, ryany);
+
+	if (openDoor) {
+
+		if ((data.byte(kThroughdoor) == 1) && (sprite->frame == 0))
+			sprite->frame = 6;
+
+		++sprite->frame;
+		if (sprite->frame == 1) { // doorsound2
+			if (data.byte(kReallocation) == 5) // hoteldoor2
+				al = 13;
+			else
+				al = 0;
+			playchannel1();
+		}
+		if (objData->b18[sprite->frame] == 255)
+			--sprite->frame;
+
+		sprite->b15 = objData->index = objData->b18[sprite->frame];
+		data.byte(kThroughdoor) = 1;
 
-void DreamGenContext::dodoor(Sprite *sprite, SetObject *objData) {
-	uint8 ryanx = data.byte(kRyanx);
-	uint8 ryany = data.byte(kRyany);
-	if (ryanx < sprite->x) {
-		if (ryanx < sprite->x + (int8)data.byte(kDoorcheck1))
-			goto shutdoor;
-	} else {
-		if (ryanx >= sprite->x + data.byte(kDoorcheck2))
-			goto shutdoor;
-	}
-	if (ryany < sprite->y) {
-		if (ryany < sprite->y + (int8)data.byte(kDoorcheck3))
-			goto shutdoor;
 	} else {
-		if (ryany >= sprite->y + data.byte(kDoorcheck4))
-			goto shutdoor;
-	}
-//opendoor:
-	if ((data.byte(kThroughdoor) == 1) && (sprite->frame == 0))
-		sprite->frame = 6;
+		// shut door
 
-	++sprite->frame;
-	if (sprite->frame == 1) { //doorsound2
-		if (data.byte(kReallocation) == 5) //hoteldoor2
-			al = 13;
-		else
-			al = 0;
-		playchannel1();
-	}
-	if (objData->b18[sprite->frame] == 255) {
-		--sprite->frame;
-	}
-	sprite->b15 = objData->index = objData->b18[sprite->frame];
-	data.byte(kThroughdoor) = 1;
-	return;
-shutdoor:
-	if (sprite->frame == 5) { //doorsound1;
-		if (data.byte(kReallocation) == 5) //hoteldoor1
-			al = 13;
-		else
-			al = 1;
-		playchannel1();
-	}
-	if (sprite->frame != 0) {
-		--sprite->frame;
+		if (sprite->frame == 5) { // doorsound1;
+			if (data.byte(kReallocation) == 5) // hoteldoor1
+				al = 13;
+			else
+				al = 1;
+			playchannel1();
+		}
+		if (sprite->frame != 0)
+			--sprite->frame;
+
+		sprite->b15 = objData->index = objData->b18[sprite->frame];
+		if (sprite->frame == 5) // nearly
+			data.byte(kThroughdoor) = 0;
 	}
-	sprite->b15 = objData->index = objData->b18[sprite->frame];
-	if (sprite->frame == 5) //nearly
-		data.byte(kThroughdoor) = 0;
 }
 
 void DreamGenContext::steady(Sprite *sprite, SetObject *objData) {
diff --git a/engines/dreamweb/structs.h b/engines/dreamweb/structs.h
index ceb30e3..2775cf4 100644
--- a/engines/dreamweb/structs.h
+++ b/engines/dreamweb/structs.h
@@ -21,6 +21,7 @@
  */
 
 #include "common/endian.h"
+#include "common/rect.h"
 
 struct Sprite {
 	uint16 _updateCallback;
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 3fa764f..405ae1f 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -90,8 +90,7 @@
 	void constant(Sprite *sprite, SetObject *objData);
 	void steady(Sprite *sprite, SetObject *objData);
 	void random(Sprite *sprite, SetObject *objData);
-	void dodoor();
-	void dodoor(Sprite *sprite, SetObject *objData);
+	void dodoor(Sprite *sprite, SetObject *objData, Common::Rect check);
 	void doorway(Sprite *sprite, SetObject *objData);
 	void widedoor(Sprite *sprite, SetObject *objData);
 	void lockeddoorway(Sprite *sprite, SetObject *objData);






More information about the Scummvm-git-logs mailing list