DREAMWEB: Port 'diarykeyp', 'diarykeyn' to C++

This commit is contained in:
Filippos Karapetis 2011-12-09 18:55:02 +02:00
parent 6c5f424540
commit e2a92bff29
5 changed files with 39 additions and 62 deletions

View File

@ -266,6 +266,8 @@ generator = cpp(context, "DreamGen", blacklist = [
'deltextline',
'delthisone',
'destselect',
'diarykeyp',
'diarykeyn',
'disablepath',
'disablesoundint',
'discops',

View File

@ -5465,66 +5465,6 @@ notdumpdiary:
multiDump();
}
void DreamGenContext::diaryKeyP() {
STACK_CHECK;
_cmp(data.byte(kCommandtype), 214);
if (flags.z())
goto alreadykeyp;
data.byte(kCommandtype) = 214;
al = 23;
commandOnly();
alreadykeyp:
_cmp(data.word(kMousebutton), 0);
if (flags.z())
return /* (notkeyp) */;
ax = data.word(kOldbutton);
_cmp(ax, data.word(kMousebutton));
if (flags.z())
return /* (notkeyp) */;
_cmp(data.byte(kPresscount), 0);
if (!flags.z())
return /* (notkeyp) */;
al = 16;
playChannel1();
data.byte(kPresscount) = 12;
data.byte(kPressed) = 'P';
_dec(data.byte(kDiarypage));
_cmp(data.byte(kDiarypage), -1);
if (!flags.z())
return /* (notkeyp) */;
data.byte(kDiarypage) = 11;
}
void DreamGenContext::diaryKeyN() {
STACK_CHECK;
_cmp(data.byte(kCommandtype), 213);
if (flags.z())
goto alreadykeyn;
data.byte(kCommandtype) = 213;
al = 23;
commandOnly();
alreadykeyn:
_cmp(data.word(kMousebutton), 0);
if (flags.z())
return /* (notkeyn) */;
ax = data.word(kOldbutton);
_cmp(ax, data.word(kMousebutton));
if (flags.z())
return /* (notkeyn) */;
_cmp(data.byte(kPresscount), 0);
if (!flags.z())
return /* (notkeyn) */;
al = 16;
playChannel1();
data.byte(kPresscount) = 12;
data.byte(kPressed) = 'N';
_inc(data.byte(kDiarypage));
_cmp(data.byte(kDiarypage), 12);
if (!flags.z())
return /* (notkeyn) */;
data.byte(kDiarypage) = 0;
}
void DreamGenContext::showDiaryPage() {
STACK_CHECK;
al = 0;

View File

@ -591,9 +591,7 @@ public:
void reExFromInv();
void businessMan();
void outOfInv();
void diaryKeyP();
void transferMap();
void diaryKeyN();
void purgeAnItem();
void purgeALocation();
void notHeldError();

View File

@ -4164,4 +4164,39 @@ void DreamGenContext::showGun() {
getRidOfTempText();
}
void DreamGenContext::diaryKeyP() {
if (data.byte(kCommandtype) != 214) {
data.byte(kCommandtype) = 214;
commandOnly(23);
}
if (!data.word(kMousebutton) ||
data.word(kOldbutton) == data.word(kMousebutton) ||
data.byte(kPresscount))
return; // notkeyp
playChannel1(16);
data.byte(kPresscount) = 12;
data.byte(kPressed) = 'P';
data.byte(kDiarypage)--;
if (data.byte(kDiarypage) == 0xFF)
data.byte(kDiarypage) = 11;
}
void DreamGenContext::diaryKeyN() {
if (data.byte(kCommandtype) != 213) {
data.byte(kCommandtype) = 213;
commandOnly(23);
}
playChannel1(16);
data.byte(kPresscount) = 12;
data.byte(kPressed) = 'N';
data.byte(kDiarypage)++;
if (data.byte(kDiarypage) == 12)
data.byte(kDiarypage) = 0;
}
} // End of namespace DreamGen

View File

@ -564,5 +564,7 @@
void endGame();
void monitorLogo();
void quitSymbol();
void diaryKeyP();
void diaryKeyN();
#endif