DREAMWEB: Renamed FreeObject to DynObject and ObjData to SetObject

This commit is contained in:
Bertrand Augereau 2011-08-23 14:41:28 +02:00
parent 4d6793d882
commit e31ad4d665
5 changed files with 43 additions and 48 deletions

View file

@ -150,9 +150,9 @@ void DreamGenContext::showallobs() {
data.word(kFramesad) = kFrames; data.word(kFramesad) = kFrames;
const Frame *frames = (const Frame *)segRef(data.word(kFrsegment)).ptr(0, 0); const Frame *frames = (const Frame *)segRef(data.word(kFrsegment)).ptr(0, 0);
ObjData *setEntries = (ObjData *)segRef(data.word(kSetdat)).ptr(0, 128 * sizeof(ObjData)); SetObject *setEntries = (SetObject *)segRef(data.word(kSetdat)).ptr(0, 128 * sizeof(SetObject));
for (size_t i = 0; i < 128; ++i) { for (size_t i = 0; i < 128; ++i) {
ObjData *setEntry = setEntries + i; SetObject *setEntry = setEntries + i;
if (getmapad(setEntry->b58) == 0) if (getmapad(setEntry->b58) == 0)
continue; continue;
uint8 currentFrame = setEntry->b18[0]; uint8 currentFrame = setEntry->b18[0];

View file

@ -267,7 +267,7 @@ void DreamGenContext::backobject() {
} }
void DreamGenContext::backobject(Sprite *sprite) { void DreamGenContext::backobject(Sprite *sprite) {
ObjData *objData = (ObjData *)segRef(data.word(kSetdat)).ptr(sprite->objData(), 0); SetObject *objData = (SetObject *)segRef(data.word(kSetdat)).ptr(sprite->objData(), 0);
if (sprite->delay != 0) { if (sprite->delay != 0) {
--sprite->delay; --sprite->delay;
@ -291,7 +291,7 @@ void DreamGenContext::backobject(Sprite *sprite) {
steady(sprite, objData); steady(sprite, objData);
} }
void DreamGenContext::constant(Sprite *sprite, ObjData *objData) { void DreamGenContext::constant(Sprite *sprite, SetObject *objData) {
++sprite->frame; ++sprite->frame;
if (objData->b18[sprite->frame] == 255) { if (objData->b18[sprite->frame] == 255) {
sprite->frame = 0; sprite->frame = 0;
@ -301,13 +301,13 @@ void DreamGenContext::constant(Sprite *sprite, ObjData *objData) {
sprite->b15 = b18; sprite->b15 = b18;
} }
void DreamGenContext::random(Sprite *sprite, ObjData *objData) { void DreamGenContext::random(Sprite *sprite, SetObject *objData) {
randomnum1(); randomnum1();
uint16 r = ax; uint16 r = ax;
sprite->b15 = objData->b18[r&7]; sprite->b15 = objData->b18[r&7];
} }
void DreamGenContext::doorway(Sprite *sprite, ObjData *objData) { void DreamGenContext::doorway(Sprite *sprite, SetObject *objData) {
data.byte(kDoorcheck1) = -24; data.byte(kDoorcheck1) = -24;
data.byte(kDoorcheck2) = 10; data.byte(kDoorcheck2) = 10;
data.byte(kDoorcheck3) = -30; data.byte(kDoorcheck3) = -30;
@ -315,7 +315,7 @@ void DreamGenContext::doorway(Sprite *sprite, ObjData *objData) {
dodoor(sprite, objData); dodoor(sprite, objData);
} }
void DreamGenContext::widedoor(Sprite *sprite, ObjData *objData) { void DreamGenContext::widedoor(Sprite *sprite, SetObject *objData) {
data.byte(kDoorcheck1) = -24; data.byte(kDoorcheck1) = -24;
data.byte(kDoorcheck2) = 24; data.byte(kDoorcheck2) = 24;
data.byte(kDoorcheck3) = -30; data.byte(kDoorcheck3) = -30;
@ -325,11 +325,11 @@ void DreamGenContext::widedoor(Sprite *sprite, ObjData *objData) {
void DreamGenContext::dodoor() { void DreamGenContext::dodoor() {
Sprite *sprite = (Sprite *)es.ptr(bx, sizeof(Sprite)); Sprite *sprite = (Sprite *)es.ptr(bx, sizeof(Sprite));
ObjData *objData = (ObjData *)ds.ptr(di, 0); SetObject *objData = (SetObject *)ds.ptr(di, 0);
dodoor(sprite, objData); dodoor(sprite, objData);
} }
void DreamGenContext::dodoor(Sprite *sprite, ObjData *objData) { void DreamGenContext::dodoor(Sprite *sprite, SetObject *objData) {
uint8 ryanx = data.byte(kRyanx); uint8 ryanx = data.byte(kRyanx);
uint8 ryany = data.byte(kRyany); uint8 ryany = data.byte(kRyany);
if (ryanx < sprite->x) { if (ryanx < sprite->x) {
@ -380,13 +380,13 @@ shutdoor:
data.byte(kThroughdoor) = 0; data.byte(kThroughdoor) = 0;
} }
void DreamGenContext::steady(Sprite *sprite, ObjData *objData) { void DreamGenContext::steady(Sprite *sprite, SetObject *objData) {
uint8 b18 = objData->b18[0]; uint8 b18 = objData->b18[0];
objData->b17 = b18; objData->b17 = b18;
sprite->b15 = b18; sprite->b15 = b18;
} }
void DreamGenContext::lockeddoorway(Sprite *sprite, ObjData *objData) { void DreamGenContext::lockeddoorway(Sprite *sprite, SetObject *objData) {
if (data.byte(kRyanx) < sprite->x) { if (data.byte(kRyanx) < sprite->x) {
if (sprite->x - data.byte(kRyanx) > 24) if (sprite->x - data.byte(kRyanx) > 24)
goto shutdoor2; goto shutdoor2;
@ -450,7 +450,7 @@ shutdoor2:
} }
} }
void DreamGenContext::liftsprite(Sprite *sprite, ObjData *objData) { void DreamGenContext::liftsprite(Sprite *sprite, SetObject *objData) {
uint8 liftFlag = data.byte(kLiftflag); uint8 liftFlag = data.byte(kLiftflag);
if (liftFlag == 0) { //liftclosed if (liftFlag == 0) { //liftclosed
turnpathoffCPP(data.byte(kLiftpath)); turnpathoffCPP(data.byte(kLiftpath));

View file

@ -54,7 +54,7 @@ struct Sprite {
uint8 hidden; uint8 hidden;
}; };
struct ObjData { struct SetObject {
uint8 b0; uint8 b0;
uint8 b1; uint8 b1;
uint8 b2; uint8 b2;
@ -102,9 +102,9 @@ struct ObjData {
uint8 b63; uint8 b63;
}; };
struct FreeObject { struct DynObject {
uint8 b0; uint8 b0;
uint8 b1; uint8 index;
uint8 b2; uint8 b2;
uint8 b3; uint8 b3;
uint8 b4; uint8 b4;
@ -114,11 +114,8 @@ struct FreeObject {
uint8 b8; uint8 b8;
uint8 b9; uint8 b9;
uint8 b10; uint8 b10;
uint8 b11; uint8 location;
uint8 b12; uint8 id[4];
uint8 b13;
uint8 b14;
uint8 b15;
}; };
struct ObjPos { struct ObjPos {

View file

@ -667,7 +667,7 @@ void DreamGenContext::cancelch1() {
engine->stopSound(1); engine->stopSound(1);
} }
void DreamGenContext::makebackob(ObjData *objData) { void DreamGenContext::makebackob(SetObject *objData) {
if (data.byte(kNewobs) == 0) if (data.byte(kNewobs) == 0)
return; return;
uint8 priority = objData->priority; uint8 priority = objData->priority;
@ -675,8 +675,8 @@ void DreamGenContext::makebackob(ObjData *objData) {
Sprite *sprite = makesprite(data.word(kObjectx), data.word(kObjecty), addr_backobject, data.word(kSetframes), 0); Sprite *sprite = makesprite(data.word(kObjectx), data.word(kObjecty), addr_backobject, data.word(kSetframes), 0);
uint16 objDataOffset = (uint8 *)objData - segRef(data.word(kSetdat)).ptr(0, 0); uint16 objDataOffset = (uint8 *)objData - segRef(data.word(kSetdat)).ptr(0, 0);
assert(objDataOffset % sizeof(ObjData) == 0); assert(objDataOffset % sizeof(SetObject) == 0);
assert(objDataOffset < 128 * sizeof(ObjData)); assert(objDataOffset < 128 * sizeof(SetObject));
sprite->setObjData(objDataOffset); sprite->setObjData(objDataOffset);
if (priority == 255) if (priority == 255)
priority = 0; priority = 0;
@ -1093,16 +1093,16 @@ void DreamGenContext::setallchanges() {
} }
} }
FreeObject *DreamGenContext::getfreead(uint8 index) { DynObject *DreamGenContext::getfreead(uint8 index) {
return (FreeObject *)segRef(data.word(kFreedat)).ptr(0, 0) + index; return (DynObject *)segRef(data.word(kFreedat)).ptr(0, 0) + index;
} }
FreeObject *DreamGenContext::getexad(uint8 index) { DynObject *DreamGenContext::getexad(uint8 index) {
return (FreeObject *)segRef(data.word(kExtras)).ptr(kExdata, 0) + index; return (DynObject *)segRef(data.word(kExtras)).ptr(kExdata, 0) + index;
} }
ObjData *DreamGenContext::getsetad(uint8 index) { SetObject *DreamGenContext::getsetad(uint8 index) {
return (ObjData *)segRef(data.word(kSetdat)).ptr(0, 0) + index; return (SetObject *)segRef(data.word(kSetdat)).ptr(0, 0) + index;
} }
void DreamGenContext::dochange() { void DreamGenContext::dochange() {
@ -1113,7 +1113,7 @@ void DreamGenContext::dochange(uint8 index, uint8 value, uint8 type) {
if (type == 0) { //object if (type == 0) { //object
getsetad(index)->b58[0] = value; getsetad(index)->b58[0] = value;
} else if (type == 1) { //freeobject } else if (type == 1) { //freeobject
FreeObject *freeObject = getfreead(index); DynObject *freeObject = getfreead(index);
if (freeObject->b2 == 0xff) if (freeObject->b2 == 0xff)
freeObject->b2 = value; freeObject->b2 = value;
} else { //path } else { //path
@ -1124,16 +1124,14 @@ void DreamGenContext::dochange(uint8 index, uint8 value, uint8 type) {
} }
void DreamGenContext::deletetaken() { void DreamGenContext::deletetaken() {
ds = data.word(kExtras); const DynObject *extraObjects = (const DynObject *)segRef(data.word(kExtras)).ptr(kExdata, 0);
si = kExdata; DynObject *freeObjects = (DynObject *)segRef(data.word(kFreedat)).ptr(0, 0);
FreeObject *freeObjects = (FreeObject *)segRef(data.word(kFreedat)).ptr(0, 0);
for(size_t i = 0; i < kNumexobjects; ++i) { for(size_t i = 0; i < kNumexobjects; ++i) {
uint8 location = ds.byte(si+11); uint8 location = extraObjects[i].location;
if (location == data.byte(kReallocation)) { if (location == data.byte(kReallocation)) {
uint8 index = ds.byte(si+1); uint8 index = extraObjects[i].index;
freeObjects[index].b2 = 254; freeObjects[index].b2 = 254;
} }
si += 16;
} }
} }

View file

@ -87,15 +87,15 @@
void checkdest(const uint8 *roomsPaths); void checkdest(const uint8 *roomsPaths);
void aboutturn(Sprite *sprite); void aboutturn(Sprite *sprite);
void backobject(Sprite *sprite); void backobject(Sprite *sprite);
void constant(Sprite *sprite, ObjData *objData); void constant(Sprite *sprite, SetObject *objData);
void steady(Sprite *sprite, ObjData *objData); void steady(Sprite *sprite, SetObject *objData);
void random(Sprite *sprite, ObjData *objData); void random(Sprite *sprite, SetObject *objData);
void dodoor(); void dodoor();
void dodoor(Sprite *sprite, ObjData *objData); void dodoor(Sprite *sprite, SetObject *objData);
void doorway(Sprite *sprite, ObjData *objData); void doorway(Sprite *sprite, SetObject *objData);
void widedoor(Sprite *sprite, ObjData *objData); void widedoor(Sprite *sprite, SetObject *objData);
void lockeddoorway(Sprite *sprite, ObjData *objData); void lockeddoorway(Sprite *sprite, SetObject *objData);
void liftsprite(Sprite *sprite, ObjData *objData); void liftsprite(Sprite *sprite, SetObject *objData);
void findsource(); void findsource();
Frame *findsourceCPP(); Frame *findsourceCPP();
void showgamereel(); void showgamereel();
@ -106,7 +106,7 @@
void turnpathoffCPP(uint8 param); void turnpathoffCPP(uint8 param);
void getroomspaths(); void getroomspaths();
uint8 *getroomspathsCPP(); uint8 *getroomspathsCPP();
void makebackob(ObjData *objData); void makebackob(SetObject *objData);
void modifychar(); void modifychar();
void lockmon(); void lockmon();
void cancelch0(); void cancelch0();
@ -155,9 +155,9 @@
void findxyfrompath(); void findxyfrompath();
void findormake(); void findormake();
void findormake(uint8 index, uint8 value, uint8 type); void findormake(uint8 index, uint8 value, uint8 type);
FreeObject *getfreead(uint8 index); DynObject *getfreead(uint8 index);
FreeObject *getexad(uint8 index); DynObject *getexad(uint8 index);
ObjData *getsetad(uint8 index); SetObject *getsetad(uint8 index);
void setallchanges(); void setallchanges();
void dochange(); void dochange();
void dochange(uint8 index, uint8 value, uint8 type); void dochange(uint8 index, uint8 value, uint8 type);