aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorBertrand Augereau2011-09-04 16:39:38 +0200
committerBertrand Augereau2011-09-04 16:42:43 +0200
commita2a873b94dd5f8a203d940a7c4ff38b06e127437 (patch)
treed036bc33c204ecf4581c35ef814f6665312ff5dc /engines
parent8f263ab5e6647d7267cdbf15bf4450b311286f9a (diff)
downloadscummvm-rg350-a2a873b94dd5f8a203d940a7c4ff38b06e127437.tar.gz
scummvm-rg350-a2a873b94dd5f8a203d940a7c4ff38b06e127437.tar.bz2
scummvm-rg350-a2a873b94dd5f8a203d940a7c4ff38b06e127437.zip
Internal: 'findsource' is pure C++
Diffstat (limited to 'engines')
-rw-r--r--engines/dreamweb/sprite.cpp20
-rw-r--r--engines/dreamweb/stubs.h3
-rw-r--r--engines/dreamweb/talk.cpp2
3 files changed, 8 insertions, 17 deletions
diff --git a/engines/dreamweb/sprite.cpp b/engines/dreamweb/sprite.cpp
index 4ec900ca85..3c3d148214 100644
--- a/engines/dreamweb/sprite.cpp
+++ b/engines/dreamweb/sprite.cpp
@@ -494,28 +494,20 @@ void DreamGenContext::facerightway() {
data.byte(kLeavedirection) = dir;
}
-void DreamGenContext::findsource() {
+Frame *DreamGenContext::findsource() {
uint16 currentFrame = data.word(kCurrentframe);
if (currentFrame < 160) {
- ds = data.word(kReel1);
data.word(kTakeoff) = 0;
+ return (Frame *)segRef(data.word(kReel1)).ptr(0, 0);
} else if (currentFrame < 320) {
- ds = data.word(kReel2);
data.word(kTakeoff) = 160;
+ return (Frame *)segRef(data.word(kReel2)).ptr(0, 0);
} else {
- ds = data.word(kReel3);
data.word(kTakeoff) = 320;
+ return (Frame *)segRef(data.word(kReel3)).ptr(0, 0);
}
}
-Frame *DreamGenContext::findsourceCPP() {
- push(ds);
- findsource();
- Frame *result = (Frame *)ds.ptr(0, 0);
- ds = pop();
- return result;
-}
-
Reel *DreamGenContext::getreelstart() {
Reel *reel = (Reel *)segRef(data.word(kReels)).ptr(kReellist + data.word(kReelpointer) * sizeof(Reel) * 8, sizeof(Reel));
return reel;
@@ -525,7 +517,7 @@ void DreamGenContext::showreelframe(Reel *reel) {
uint16 x = reel->x + data.word(kMapadx);
uint16 y = reel->y + data.word(kMapady);
data.word(kCurrentframe) = reel->frame();
- Frame *source = findsourceCPP();
+ Frame *source = findsource();
uint16 frame = data.word(kCurrentframe) - data.word(kTakeoff);
showframe(source, x, y, frame, 8);
}
@@ -545,7 +537,7 @@ void DreamGenContext::showgamereel(ReelRoutine *routine) {
const Frame *DreamGenContext::getreelframeax(uint16 frame) {
data.word(kCurrentframe) = frame;
- Frame *source = findsourceCPP();
+ Frame *source = findsource();
uint16 offset = data.word(kCurrentframe) - data.word(kTakeoff);
return source + offset;
}
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 7057c478bf..8fd15989c9 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -96,8 +96,7 @@
void widedoor(Sprite *sprite, SetObject *objData);
void lockeddoorway(Sprite *sprite, SetObject *objData);
void liftsprite(Sprite *sprite, SetObject *objData);
- void findsource();
- Frame *findsourceCPP();
+ Frame *findsource();
void showgamereel();
void showgamereel(ReelRoutine *routine);
void showreelframe(Reel *reel);
diff --git a/engines/dreamweb/talk.cpp b/engines/dreamweb/talk.cpp
index 91291e024a..78b296afe6 100644
--- a/engines/dreamweb/talk.cpp
+++ b/engines/dreamweb/talk.cpp
@@ -31,7 +31,7 @@ uint16 DreamGenContext::getpersframe(uint8 index) {
void DreamGenContext::convicons() {
uint8 index = data.byte(kCharacter) & 127;
data.word(kCurrentframe) = getpersframe(index);
- Frame *frame = findsourceCPP();
+ Frame *frame = findsource();
uint16 frameNumber = (data.word(kCurrentframe) - data.word(kTakeoff)) & 0xff;
showframe(frame, 234, 2, frameNumber, 0);
}