DREAMWEB: 'delcurs' ported to C++

This commit is contained in:
Bertrand Augereau 2011-11-18 06:17:23 +01:00
parent cfac223cee
commit 5461b03983
5 changed files with 17 additions and 39 deletions

View File

@ -239,6 +239,7 @@ generator = cpp(context, "DreamGen", blacklist = [
'loadintotemp3',
'loadtempcharset',
'printcurs',
'delcurs',
'loadroomssample',
], skip_output = [
# These functions are processed but not output

View File

@ -7294,42 +7294,6 @@ void DreamGenContext::triggermessage() {
data.byte(kLasttrigger) = 0;
}
void DreamGenContext::delcurs() {
STACK_CHECK;
push(es);
push(bx);
push(di);
push(ds);
push(dx);
push(si);
di = data.word(kCurslocx);
bx = data.word(kCurslocy);
cl = 6;
ch = 8;
_cmp(data.byte(kForeignrelease), 0);
if (flags.z())
goto _tmp1;
_sub(bx, 3);
ch = 11;
_tmp1:
push(di);
push(bx);
push(cx);
ds = data.word(kBuffers);
si = (0);
multiput();
cx = pop();
bx = pop();
di = pop();
multidump();
si = pop();
dx = pop();
ds = pop();
di = pop();
bx = pop();
es = pop();
}
void DreamGenContext::useobject() {
STACK_CHECK;
data.byte(kWithobject) = 255;
@ -15685,7 +15649,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {
case addr_monmessage: monmessage(); break;
case addr_processtrigger: processtrigger(); break;
case addr_triggermessage: triggermessage(); break;
case addr_delcurs: delcurs(); break;
case addr_useobject: useobject(); break;
case addr_wheelsound: wheelsound(); break;
case addr_runtap: runtap(); break;

View File

@ -342,7 +342,6 @@ public:
static const uint16 addr_runtap = 0xc58c;
static const uint16 addr_wheelsound = 0xc588;
static const uint16 addr_useobject = 0xc580;
static const uint16 addr_delcurs = 0xc57c;
static const uint16 addr_triggermessage = 0xc574;
static const uint16 addr_processtrigger = 0xc570;
static const uint16 addr_monmessage = 0xc56c;
@ -1848,7 +1847,7 @@ public:
void getexad();
void openforsave();
void closefile();
void delcurs();
//void delcurs();
void randomaccess();
//void calcfrframe();
//void checkifex();

View File

@ -270,6 +270,20 @@ void DreamGenContext::printcurs() {
multidump(x - 6, y, 12, height);
}
void DreamGenContext::delcurs() {
uint16 x = data.word(kCurslocx);
uint16 y = data.word(kCurslocy);
uint16 width = 6;
uint16 height;
if (data.byte(kForeignrelease)) {
y -= 3;
height = 11;
} else
height = 8;
multiput(segRef(data.word(kBuffers)).ptr(kTextunder, 0), x, y, width, height);
multidump(x, y, width, height);
}
void DreamGenContext::seecommandtail() {
data.word(kSoundbaseadd) = 0x220;
data.byte(kSoundint) = 5;

View File

@ -34,6 +34,7 @@
void loadtempcharset();
void loadtempcharset(const char *fileName);
void printcurs();
void delcurs();
void multidump();
void multidump(uint16 x, uint16 y, uint8 width, uint8 height);
void frameoutv(uint8 *dst, const uint8 *src, uint16 pitch, uint16 width, uint16 height, int16 x, int16 y);