aboutsummaryrefslogtreecommitdiff
path: root/engines/dreamweb
diff options
context:
space:
mode:
authorBertrand Augereau2011-07-26 00:56:24 +0200
committerBertrand Augereau2011-07-28 17:26:47 +0200
commitdfec38c615279dad5f6bc41ad7843e20bcd27d22 (patch)
treeba33b053c8df76f4b7c755841d436197c3851520 /engines/dreamweb
parent521ffc5b5627fd3894c4088c0a69cae8c56784cf (diff)
downloadscummvm-rg350-dfec38c615279dad5f6bc41ad7843e20bcd27d22.tar.gz
scummvm-rg350-dfec38c615279dad5f6bc41ad7843e20bcd27d22.tar.bz2
scummvm-rg350-dfec38c615279dad5f6bc41ad7843e20bcd27d22.zip
DREAMWEB: Misc. register usage cleaning
Diffstat (limited to 'engines/dreamweb')
-rw-r--r--engines/dreamweb/sprite.cpp48
-rw-r--r--engines/dreamweb/stubs.h3
2 files changed, 17 insertions, 34 deletions
diff --git a/engines/dreamweb/sprite.cpp b/engines/dreamweb/sprite.cpp
index 5b0449f5b2..6ed0421a93 100644
--- a/engines/dreamweb/sprite.cpp
+++ b/engines/dreamweb/sprite.cpp
@@ -28,19 +28,17 @@ namespace DreamGen {
Sprite *DreamGenContext::spritetable() {
push(es);
- push(bx);
-
es = data.word(kBuffers);
- bx = kSpritetable;
- Sprite *sprite = (Sprite *)es.ptr(bx, 16 * sizeof(Sprite));
-
- bx = pop();
+ Sprite *sprite = (Sprite *)es.ptr(kSpritetable, 16 * sizeof(Sprite));
es = pop();
-
return sprite;
}
void DreamGenContext::printsprites() {
+ printsprites(es);
+}
+
+void DreamGenContext::printsprites(uint16 dst) {
for (size_t priority = 0; priority < 7; ++priority) {
Sprite *sprites = spritetable();
for (size_t j = 0; j < 16; ++j) {
@@ -51,27 +49,23 @@ void DreamGenContext::printsprites() {
continue;
if (sprite.hidden == 1)
continue;
- printasprite(&sprite);
+ printasprite(dst, &sprite);
}
}
}
-void DreamGenContext::printasprite(const Sprite *sprite) {
- push(es);
- push(bx);
- ds = READ_LE_UINT16(&sprite->w6);
- ax = sprite->y;
- if (al >= 220) {
- bx = data.word(kMapady) - (256 - al);
+void DreamGenContext::printasprite(uint16 dst, const Sprite *sprite) {
+ uint16 x, y;
+ if (sprite->y >= 220) {
+ y = data.word(kMapady) - (256 - sprite->y);
} else {
- bx = ax + data.word(kMapady);
+ y = sprite->y + data.word(kMapady);
}
- ax = sprite->x;
- if (al >= 220) {
- di = data.word(kMapadx) - (256 - al);
+ if (sprite->x >= 220) {
+ x = data.word(kMapadx) - (256 - sprite->x);
} else {
- di = ax + data.word(kMapadx);
+ x = sprite->x + data.word(kMapadx);
}
uint8 c;
@@ -80,12 +74,7 @@ void DreamGenContext::printasprite(const Sprite *sprite) {
else
c = 0;
uint8 width, height;
- showframe(es, ds, di, bx, sprite->b15, c, &width, &height);
- cl = width;
- ch = height;
-
- bx = pop();
- es = pop();
+ showframe(es, READ_LE_UINT16(&sprite->w6), x, y, sprite->b15, c, &width, &height);
}
void DreamGenContext::clearsprites() {
@@ -148,13 +137,6 @@ void DreamGenContext::initman() {
sprite->priority = 4;
sprite->b22 = 0;
sprite->b29 = 0;
-
- // Recover es:bx from sprite
- es = data.word(kBuffers);
- bx = kSpritetable;
- Sprite *sprites = (Sprite *)es.ptr(bx, sizeof(Sprite) * 16);
- bx += 32 * (sprite - sprites);
- //
}
void DreamGenContext::mainmanCPP(Sprite *sprite) {
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index fcf72e0727..b1e4be5f06 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -32,6 +32,7 @@
void convertkey();
void cls();
void printsprites();
+ void printsprites(uint16 dst);
void quickquit();
void readoneblock();
void printundermon();
@@ -59,7 +60,7 @@
Sprite *spritetable();
void showframe();
void showframe(uint16 dst, uint16 src, uint16 x, uint16 y, uint8 frameNumber, uint8 effectsFlag, uint8 *width, uint8 *height);
- void printasprite(const Sprite *sprite);
+ void printasprite(uint16 dst, const Sprite *sprite);
void width160();
void multiput(uint16 x, uint16 y, uint8 width, uint8 height);
void multiput();