mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-28 23:36:14 +00:00
DREAMWEB: Port 'emergencypurge' to C++
This commit is contained in:
parent
21a278bb63
commit
eaf87bdfa7
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user