DREAMWEB:'monmessage' ported to C++

This commit is contained in:
Bertrand Augereau 2011-11-20 14:53:10 +01:00
parent 428beb7f34
commit 721b828354
5 changed files with 22 additions and 29 deletions

View File

@ -250,6 +250,7 @@ generator = cpp(context, "DreamGen", blacklist = [
'showcurrentfile',
'input',
'monprint',
'monmessage',
'randomaccess',
'accesslighton',
'accesslightoff',

View File

@ -6784,23 +6784,6 @@ notnewlogo:
printlogo();
}
void DreamGenContext::monmessage() {
STACK_CHECK;
es = data.word(kTextfile1);
bx = (66*2);
cl = al;
ch = 0;
monmessageloop:
al = es.byte(bx);
_inc(bx);
_cmp(al, '+');
if (!flags.z())
goto monmessageloop;
if (--cx)
goto monmessageloop;
monprint();
}
void DreamGenContext::processtrigger() {
STACK_CHECK;
_cmp(data.byte(kLasttrigger), '1');
@ -15192,7 +15175,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {
case addr_searchforstring: searchforstring(); break;
case addr_parser: parser(); break;
case addr_monitorlogo: monitorlogo(); break;
case addr_monmessage: monmessage(); break;
case addr_processtrigger: processtrigger(); break;
case addr_triggermessage: triggermessage(); break;
case addr_useobject: useobject(); break;

View File

@ -343,7 +343,6 @@ public:
static const uint16 addr_useobject = 0xc580;
static const uint16 addr_triggermessage = 0xc574;
static const uint16 addr_processtrigger = 0xc570;
static const uint16 addr_monmessage = 0xc56c;
static const uint16 addr_monitorlogo = 0xc560;
static const uint16 addr_parser = 0xc554;
static const uint16 addr_searchforstring = 0xc550;
@ -1919,7 +1918,7 @@ public:
void intromusic();
void quitkey();
void processtrigger();
void monmessage();
//void monmessage();
void volumeadjust();
void randomnum2();
void loadsecondsample();

View File

@ -60,15 +60,11 @@ void DreamGenContext::usemon() {
fadeupmonfirst();
data.word(kMonadx) = 76;
data.word(kMonady) = 141;
al = 1;
monmessage();
monmessage(1);
hangoncurs(120);
al = 2;
monmessage();
cx = 60;
randomaccess();
al = 3;
monmessage();
monmessage(2);
randomaccess(60);
monmessage(3);
hangoncurs(100);
printlogo();
scrollmonitor();
@ -232,5 +228,19 @@ void DreamGenContext::randomaccess(uint16 count) {
accesslightoff();
}
void DreamGenContext::monmessage() {
monmessage(al);
}
void DreamGenContext::monmessage(uint8 index) {
assert(index > 0);
const char *string = (const char *)segRef(data.word(kTextfile1)).ptr(kTextstart, 0);
for (uint8 i = 0; i < index; ++i) {
while (*string++ != '+') {
}
}
monprint(string);
}
} /*namespace dreamgen */

View File

@ -312,5 +312,6 @@
void accesslightoff();
void randomaccess(uint16 count);
void randomaccess();
void monmessage(uint8 index);
void monmessage();