DREAMWEB: Port 'emergencypurge' to C++

This commit is contained in:
Filippos Karapetis 2011-12-25 18:42:13 +02:00
parent 21a278bb63
commit eaf87bdfa7
5 changed files with 14 additions and 21 deletions
devtools/tasmrecover
engines/dreamweb

@ -406,6 +406,7 @@ generator = cpp(context, "DreamGen", blacklist = [
'eden',
'edeninbath',
'edenscdplayer',
'emergencypurge',
'enablesoundint',
'endgame',
'endgameseq',

@ -475,26 +475,6 @@ void DreamGenContext::transferConToEx() {
ds.byte(si+2) = 255;
}
void DreamGenContext::emergencyPurge() {
STACK_CHECK;
checkpurgeagain:
ax = data.word(kExframepos);
_add(ax, 4000);
_cmp(ax, (30000));
if (flags.c())
goto notnearframeend;
purgeAnItem();
goto checkpurgeagain;
notnearframeend:
ax = data.word(kExtextpos);
_add(ax, 400);
_cmp(ax, (18000));
if (flags.c())
return /* (notneartextend) */;
purgeAnItem();
goto checkpurgeagain;
}
void DreamGenContext::purgeAnItem() {
STACK_CHECK;
es = data.word(kExtras);

@ -477,7 +477,6 @@ public:
void getExAd();
void transferToEx();
void parser();
void emergencyPurge();
void transferConToEx();
};

@ -3701,4 +3701,16 @@ void DreamBase::incRyanPage() {
}
void DreamGenContext::emergencyPurge() {
while (true) {
if (data.word(kExframepos) + 4000 < kExframeslen) {
// Not near frame end
if (data.word(kExtextpos) + 400 < kExtextlen)
return; // notneartextend
}
purgeAnItem();
}
}
} // End of namespace DreamGen

@ -199,5 +199,6 @@
void outOfOpen();
void swapWithOpen();
void swapWithInv();
void emergencyPurge();
#endif