Skip to content

Commit

Permalink
DREAMWEB: Convert 'actualsave'
Browse files Browse the repository at this point in the history
  • Loading branch information
wjp committed Nov 26, 2011
1 parent 77cb6d1 commit 8c830ce
Showing 1 changed file with 41 additions and 75 deletions.
116 changes: 41 additions & 75 deletions engines/dreamweb/saveload.cpp
Expand Up @@ -246,32 +246,19 @@ void DreamGenContext::savegame() {
}

// TODO: The below is copied from actualsave
al = data.byte(kLocation);
ah = 0;
cx = 32;
_mul(cx);
ds = cs;
si = kRoomdata;
_add(si, ax);
di = kMadeuproomdat;
bx = di;
const Room *currentRoom = (const Room *)cs.ptr(kRoomdata + sizeof(Room)*data.byte(kLocation), sizeof(Room));
Room *madeUpRoom = (Room *)cs.ptr(kMadeuproomdat, sizeof(Room));

*madeUpRoom = *currentRoom;
bx = kMadeuproomdat;
es = cs;
cx = 16;
_movsw(cx, true);
al = data.byte(kRoomssample);
es.byte(bx+13) = al;
al = data.byte(kMapx);
es.byte(bx+15) = al;
al = data.byte(kMapy);
es.byte(bx+16) = al;
al = data.byte(kLiftflag);
es.byte(bx+20) = al;
al = data.byte(kManspath);
es.byte(bx+21) = al;
al = data.byte(kFacing);
es.byte(bx+22) = al;
al = 255;
es.byte(bx+27) = al;
madeUpRoom->roomsSample = data.byte(kRoomssample);
madeUpRoom->mapX = data.byte(kMapx);
madeUpRoom->mapY = data.byte(kMapy);
madeUpRoom->liftFlag = data.byte(kLiftflag);
madeUpRoom->b21 = data.byte(kManspath);
madeUpRoom->facing = data.byte(kFacing);
madeUpRoom->b27 = 255;

// TODO: The below is copied from saveposition
makeheader();
Expand Down Expand Up @@ -381,59 +368,38 @@ void DreamGenContext::showdiscops() {
}

void DreamGenContext::actualsave() {
STACK_CHECK;
_cmp(data.byte(kCommandtype), 222);
if (flags.z())
goto alreadyactsave;
data.byte(kCommandtype) = 222;
al = 44;
commandonly();
alreadyactsave:
ax = data.word(kMousebutton);
_and(ax, 1);
if (flags.z())
return /* (noactsave) */;
dx = data;
ds = dx;
si = 8579;
al = data.byte(kCurrentslot);
ah = 0;
cx = 17;
_mul(cx);
_add(si, ax);
_inc(si);
_cmp(ds.byte(si), 0);
if (flags.z())
return /* (noactsave) */;
al = data.byte(kLocation);
ah = 0;
cx = 32;
_mul(cx);
ds = cs;
si = 6187;
_add(si, ax);
di = 7979;
bx = di;
if (data.byte(kCommandtype) != 222) {
data.byte(kCommandtype) = 222;
commandonly(44);
}

if (!(data.word(kMousebutton) & 1))
return;

unsigned int slot = data.byte(kCurrentslot);

const char *desc = (const char *)data.ptr(kSavenames + 17*slot + 1, 16);
if (desc[0] == 0)
return;

const Room *currentRoom = (const Room *)cs.ptr(kRoomdata + sizeof(Room)*data.byte(kLocation), sizeof(Room));
Room *madeUpRoom = (Room *)cs.ptr(kMadeuproomdat, sizeof(Room));

*madeUpRoom = *currentRoom;
bx = kMadeuproomdat;
es = cs;
cx = 16;
_movsw(cx, true);
al = data.byte(kRoomssample);
es.byte(bx+13) = al;
al = data.byte(kMapx);
es.byte(bx+15) = al;
al = data.byte(kMapy);
es.byte(bx+16) = al;
al = data.byte(kLiftflag);
es.byte(bx+20) = al;
al = data.byte(kManspath);
es.byte(bx+21) = al;
al = data.byte(kFacing);
es.byte(bx+22) = al;
al = 255;
es.byte(bx+27) = al;
madeUpRoom->roomsSample = data.byte(kRoomssample);
madeUpRoom->mapX = data.byte(kMapx);
madeUpRoom->mapY = data.byte(kMapy);
madeUpRoom->liftFlag = data.byte(kLiftflag);
madeUpRoom->b21 = data.byte(kManspath);
madeUpRoom->facing = data.byte(kFacing);
madeUpRoom->b27 = 255;

saveposition();

getridoftemp();
restoreall();
restoreall(); // reels
data.word(kTextaddressx) = 13;
data.word(kTextaddressy) = 182;
data.byte(kTextlen) = 240;
Expand Down

0 comments on commit 8c830ce

Please sign in to comment.