diff options
| author | Bertrand Augereau | 2011-08-15 15:42:09 +0200 | 
|---|---|---|
| committer | Bertrand Augereau | 2011-08-15 22:30:16 +0200 | 
| commit | 03e222f37f917d8491e96bbbc17a73151ee11478 (patch) | |
| tree | 4ef1e005056231fcfe1d0e518cf284acb30cfac4 | |
| parent | b0f5e4dfb07062002a52ded364eb02d8fc7f1dc6 (diff) | |
| download | scummvm-rg350-03e222f37f917d8491e96bbbc17a73151ee11478.tar.gz scummvm-rg350-03e222f37f917d8491e96bbbc17a73151ee11478.tar.bz2 scummvm-rg350-03e222f37f917d8491e96bbbc17a73151ee11478.zip | |
DREAMWEB: 'commandwithob' ported to C++
| -rwxr-xr-x | devtools/tasmrecover/tasm-recover | 1 | ||||
| -rw-r--r-- | engines/dreamweb/dreamgen.cpp | 55 | ||||
| -rw-r--r-- | engines/dreamweb/dreamgen.h | 3 | ||||
| -rw-r--r-- | engines/dreamweb/stubs.cpp | 27 | ||||
| -rw-r--r-- | engines/dreamweb/stubs.h | 2 | 
5 files changed, 31 insertions, 57 deletions
| diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover index f75a4aa82b..2763ec5e9f 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -109,6 +109,7 @@ generator = cpp(context, "DreamGen", blacklist = [  	'getreelstart',  	'findobname',  	'copyname', +	'commandwithob',  	], skip_output = [  	# These functions are processed but not output  	'dreamweb', diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index 42a6a64fa0..4dfdb7fbfd 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -16962,60 +16962,6 @@ void DreamGenContext::examineobtext() {  	commandwithob();  } -void DreamGenContext::commandwithob() { -	STACK_CHECK; -	push(ax); -	push(ax); -	push(bx); -	push(cx); -	push(dx); -	push(es); -	push(ds); -	push(si); -	push(di); -	deltextline(); -	di = pop(); -	si = pop(); -	ds = pop(); -	es = pop(); -	dx = pop(); -	cx = pop(); -	bx = pop(); -	ax = pop(); -	push(bx); -	ah = 0; -	_add(ax, ax); -	bx = ax; -	es = data.word(kCommandtext); -	ax = es.word(bx); -	_add(ax, (66*2)); -	si = ax; -	di = data.word(kTextaddressx); -	bx = data.word(kTextaddressy); -	dl = data.byte(kTextlen); -	al = 0; -	ah = 0; -	printdirect(); -	ax = pop(); -	di = 5847; -	copyname(); -	ax = pop(); -	di = data.word(kLastxpos); -	_cmp(al, 0); -	if (flags.z()) -		goto noadd; -	_add(di, 5); -noadd: -	bx = data.word(kTextaddressy); -	es = cs; -	si = 5847; -	dl = data.byte(kTextlen); -	al = 0; -	ah = 0; -	printdirect(); -	data.byte(kNewtextline) = 1; -} -  void DreamGenContext::commandonly() {  	STACK_CHECK;  	push(ax); @@ -19804,7 +19750,6 @@ void DreamGenContext::__dispatch_call(uint16 addr) {  		case addr_obname: obname(); break;  		case addr_finishedwalking: finishedwalking(); break;  		case addr_examineobtext: examineobtext(); break; -		case addr_commandwithob: commandwithob(); break;  		case addr_commandonly: commandonly(); break;  		case addr_printmessage: printmessage(); break;  		case addr_printmessage2: printmessage2(); break; diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index 9c08a335c9..85802243d2 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -125,7 +125,6 @@ public:  	static const uint16 addr_printmessage2 = 0xca30;  	static const uint16 addr_printmessage = 0xca2c;  	static const uint16 addr_commandonly = 0xca28; -	static const uint16 addr_commandwithob = 0xca24;  	static const uint16 addr_examineobtext = 0xca20;  	static const uint16 addr_finishedwalking = 0xca1c;  	static const uint16 addr_obname = 0xca18; @@ -2028,7 +2027,7 @@ public:  	void isitright();  	void businessman();  	void switchryanoff(); -	void commandwithob(); +	//void commandwithob();  	void panelicons1();  	void adjustdown();  	void withwhat(); diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index e15bc2aab9..a605bbda91 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -1038,4 +1038,31 @@ void DreamGenContext::copyname(uint8 type, uint8 index, uint8 *dst) {  	dst[i] = 0;  } +void DreamGenContext::commandwithob() { +	commandwithob(al, bh, bl);  +} + +void DreamGenContext::commandwithob(uint8 command, uint8 type, uint8 index) { +	uint8 commandLine[64] = "OBJECT NAME ONE                         "; +	deltextline(); +	uint16 commandText = kTextstart + segRef(data.word(kCommandtext)).word(command * 2); +	uint8 textLen = data.byte(kTextlen); +	{ +		uint16 y = data.word(kTextaddressy); +		const uint8 *string = segRef(data.word(kCommandtext)).ptr(commandText, 0); +		printdirect(&string, data.word(kTextaddressx), &y, textLen, (bool)(textLen & 1)); +	} +	copyname(type, index, commandLine); +	uint16 x = data.word(kLastxpos); +	if (command != 0) +		x += 5; +	{ +		uint16 y = data.word(kTextaddressy); +		const uint8 *string = commandLine; +		printdirect(&string, x, &y, textLen, (bool)(textLen & 1)); +	} +	data.byte(kNewtextline) = 1; +} +  } /*namespace dreamgen */ + diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h index 27250b7451..a6cf2c0563 100644 --- a/engines/dreamweb/stubs.h +++ b/engines/dreamweb/stubs.h @@ -124,4 +124,6 @@  	const uint8 *findobname(uint8 type, uint8 index);  	void copyname();  	void copyname(uint8 type, uint8 index, uint8 *dst); +	void commandwithob(); +	void commandwithob(uint8 command, uint8 type, uint8 index); | 
