aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/dreamweb/sprite.cpp8
-rw-r--r--engines/dreamweb/structs.h10
-rw-r--r--engines/dreamweb/stubs.cpp4
3 files changed, 14 insertions, 8 deletions
diff --git a/engines/dreamweb/sprite.cpp b/engines/dreamweb/sprite.cpp
index 76755a007e..9987224cd7 100644
--- a/engines/dreamweb/sprite.cpp
+++ b/engines/dreamweb/sprite.cpp
@@ -39,7 +39,7 @@ void DreamGenContext::printsprites() {
Sprite *sprites = spritetable();
for (size_t j = 0; j < 16; ++j) {
const Sprite &sprite = sprites[j];
- if (READ_LE_UINT16(&sprite.updateCallback) == 0x0ffff)
+ if (sprite.updateCallback() == 0x0ffff)
continue;
if (priority != sprite.priority)
continue;
@@ -83,7 +83,7 @@ Sprite *DreamGenContext::makesprite(uint8 x, uint8 y, uint16 updateCallback, uin
++sprite;
}
- WRITE_LE_UINT16(&sprite->updateCallback, updateCallback);
+ sprite->setUpdateCallback(updateCallback);
sprite->x = x;
sprite->y = y;
WRITE_LE_UINT16(&sprite->w6, somethingInDx);
@@ -111,7 +111,7 @@ void DreamGenContext::spriteupdate() {
Sprite *sprite = sprites;
for (size_t i=0; i < 16; ++i) {
- uint16 updateCallback = READ_LE_UINT16(&sprite->updateCallback);
+ uint16 updateCallback = sprite->updateCallback();
if (updateCallback != 0xffff) {
sprite->w24 = sprite->w2;
if (updateCallback == addr_mainman) // NB : Let's consider the callback as an enum while more code is not ported to C++
@@ -279,7 +279,7 @@ void DreamGenContext::backobject(Sprite *sprite) {
push(ds);
ds = data.word(kSetdat);
- di = READ_LE_UINT16(&sprite->obj_data);
+ di = sprite->objData();
ObjData *objData = (ObjData *)ds.ptr(di, 0);
if (sprite->delay != 0) {
diff --git a/engines/dreamweb/structs.h b/engines/dreamweb/structs.h
index ac304ae2c2..b4d8c7e1c9 100644
--- a/engines/dreamweb/structs.h
+++ b/engines/dreamweb/structs.h
@@ -20,8 +20,12 @@
*
*/
+#include "common/endian.h"
+
struct Sprite {
- uint16 updateCallback;
+ uint16 _updateCallback;
+ uint16 updateCallback() const { return READ_LE_UINT16(&_updateCallback); }
+ void setUpdateCallback(uint16 v) { WRITE_LE_UINT16(&_updateCallback, v); }
uint16 w2;
uint16 w4;
uint16 w6;
@@ -35,7 +39,9 @@ struct Sprite {
uint8 b17;
uint8 delay;
uint8 frame;
- uint16 obj_data;
+ uint16 _objData;
+ uint16 objData() const { return READ_LE_UINT16(&_objData); }
+ void setObjData(uint16 v) { WRITE_LE_UINT16(&_objData, v); }
uint8 b22;
uint8 priority;
uint16 w24;
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 3aebe02a43..2051b5299d 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -892,7 +892,7 @@ void DreamGenContext::eraseoldobs() {
Sprite *sprites = spritetable();
for (size_t i=0; i < 16; ++i) {
Sprite &sprite = sprites[i];
- if (READ_LE_UINT16(&sprite.obj_data) != 0xffff) {
+ if (sprite.objData() != 0xffff) {
memset(&sprite, 0xff, sizeof(Sprite));
}
}
@@ -985,7 +985,7 @@ void DreamGenContext::makebackob() {
Sprite *sprites = (Sprite *)es.ptr(bx, sizeof(Sprite) * 16);
bx += sizeof(Sprite) * (sprite - sprites);
//
- WRITE_LE_UINT16(&sprite->obj_data, si);
+ sprite->setObjData(si);
if (priority == 255)
priority = 0;
sprite->priority = priority;