[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