diff options
| author | Vladimir Menshakov | 2011-06-25 17:28:51 +0400 | 
|---|---|---|
| committer | Vladimir Menshakov | 2011-06-25 18:21:37 +0400 | 
| commit | 375298f69a69e478447feab360fa9296b53e2698 (patch) | |
| tree | 837dbab3eeeb6f94800ead9b91b3972eea294f37 | |
| parent | 3f2b5b9e8b9196c9d0e573abf8f8350ec4034b1d (diff) | |
| download | scummvm-rg350-375298f69a69e478447feab360fa9296b53e2698.tar.gz scummvm-rg350-375298f69a69e478447feab360fa9296b53e2698.tar.bz2 scummvm-rg350-375298f69a69e478447feab360fa9296b53e2698.zip | |
DREAMWEB: Replaced foreign-guarded code with "foreignrelease" variable, added modifychar stub
| -rw-r--r-- | devtools/tasmrecover/dreamweb/dreamweb.asm | 18 | ||||
| -rw-r--r-- | devtools/tasmrecover/dreamweb/monitor.asm | 18 | ||||
| -rw-r--r-- | devtools/tasmrecover/dreamweb/newplace.asm | 13 | ||||
| -rw-r--r-- | devtools/tasmrecover/dreamweb/object.asm | 11 | ||||
| -rw-r--r-- | devtools/tasmrecover/dreamweb/print.asm | 5 | ||||
| -rw-r--r-- | devtools/tasmrecover/dreamweb/sprite.asm | 4 | ||||
| -rw-r--r-- | devtools/tasmrecover/dreamweb/use.asm | 23 | ||||
| -rwxr-xr-x | devtools/tasmrecover/tasm-recover | 3 | ||||
| -rw-r--r-- | engines/dreamweb/dreamgen.cpp | 307 | ||||
| -rw-r--r-- | engines/dreamweb/dreamgen.h | 52 | ||||
| -rw-r--r-- | engines/dreamweb/dreamweb.cpp | 3 | ||||
| -rw-r--r-- | engines/dreamweb/dreamweb.h | 2 | ||||
| -rw-r--r-- | engines/dreamweb/stubs.cpp | 4 | 
13 files changed, 295 insertions, 168 deletions
| diff --git a/devtools/tasmrecover/dreamweb/dreamweb.asm b/devtools/tasmrecover/dreamweb/dreamweb.asm index edecad783e..c222a63178 100644 --- a/devtools/tasmrecover/dreamweb/dreamweb.asm +++ b/devtools/tasmrecover/dreamweb/dreamweb.asm @@ -50,7 +50,7 @@ debuglevel1	equ	0	;memory debug on  debuglevel2	equ	0	;debug keys on+shouts  demo	equ	0  CD	equ	1 -Foreign	equ	0 +Foreign	equ	1  Spanish	equ	0  German	equ	0 @@ -4225,9 +4225,10 @@ Undertextline	proc	near  	mov	di,textaddressx  	mov	bx,textaddressy -	if	foreign +	cmp	foreignrelease, 0 +	jz $1  	sub	bx,3 -	endif +$1:  	mov	ds,buffers  	mov	si,textunder  	mov	cl,undertextsizex @@ -4248,9 +4249,10 @@ Deltextline	proc	near  	mov	di,textaddressx  	mov	bx,textaddressy -	if	foreign +	cmp	foreignrelease, 0 +	jz $1  	sub	bx,3 -	endif +$1:  	mov	ds,buffers  	mov	si,textunder  	mov	cl,undertextsizex @@ -4271,9 +4273,10 @@ Dumptextline	proc	near  	mov	newtextline,0  	mov	di,textaddressx  	mov	bx,textaddressy -	if	foreign +	cmp	foreignrelease, 0 +	jz $1  	sub	bx,3 -	endif +$1:  	mov	cl,undertextsizex  	mov	ch,undertextsizey  	call	multidump @@ -6238,6 +6241,7 @@ Recname	db	"DREAMWEB.DEM",0  Quitrequested	db 0  Subtitles		db 0 +ForeignRelease	db 0  ;-------------------------------------------------------End of code segment---- diff --git a/devtools/tasmrecover/dreamweb/monitor.asm b/devtools/tasmrecover/dreamweb/monitor.asm index 247ba10f2b..7f3979c2b3 100644 --- a/devtools/tasmrecover/dreamweb/monitor.asm +++ b/devtools/tasmrecover/dreamweb/monitor.asm @@ -1425,10 +1425,11 @@ Printcurs	proc	near  	mov	bx,curslocy  	mov	cl,6  	mov	ch,8 -	if	foreign +	cmp	foreignrelease, 0 +	jz $1  	sub	bx,3  	mov	ch,11 -	endif +$1:  	mov	ds,buffers  	mov	si,textunder  	push	di bx @@ -1449,11 +1450,11 @@ Printcurs	proc	near  flashcurs:	pop	di bx  	sub	di,6  	mov	cl,12 -	if	foreign -	mov	ch,11 -	else  	mov	ch,8 -	endif +	cmp	foreignrelease, 0 +	jz $2 +	mov	ch,11 +$2:  	call	multidump  	pop	es bx dx ds di si @@ -1473,10 +1474,11 @@ Delcurs 	proc	near  	mov	bx,curslocy  	mov	cl,6  	mov	ch,8 -	if	foreign +	cmp	foreignrelease, 0 +	jz $1  	sub	bx,3  	mov	ch,11 -	endif +$1:  	push	di bx cx  	mov	ds,buffers  	mov	si,textunder diff --git a/devtools/tasmrecover/dreamweb/newplace.asm b/devtools/tasmrecover/dreamweb/newplace.asm index ac703f6b11..2bbf4fe498 100644 --- a/devtools/tasmrecover/dreamweb/newplace.asm +++ b/devtools/tasmrecover/dreamweb/newplace.asm @@ -158,13 +158,14 @@ alreadyinfo:	mov	ax,mousebutton  	mov	di,60  	mov	bx,72+55  	call	showframe -	if	foreign +	cmp	foreignrelease, 0 +	jz $1  	mov	al,4  	mov	ah,0  	mov	di,60  	mov	bx,72+55+21  	call	showframe -	endif +$1:  	pop	bx  	mov	bh,0 @@ -175,11 +176,11 @@ alreadyinfo:	mov	ax,mousebutton  	call	findnextcolon  	mov	di,63 -	if	foreign -	mov	bx,84+4 -	else  	mov	bx,84 -	endif +	cmp	foreignrelease, 0 +	jz $2 +	mov	bx,84+4 +$2:  	mov	dl,191  	mov	al,0  	mov	ah,0 diff --git a/devtools/tasmrecover/dreamweb/object.asm b/devtools/tasmrecover/dreamweb/object.asm index bdd043d588..bc73ef5679 100644 --- a/devtools/tasmrecover/dreamweb/object.asm +++ b/devtools/tasmrecover/dreamweb/object.asm @@ -670,11 +670,13 @@ Describeob	proc	near  	mov	di,33  	mov	bx,92 -	if	foreign + +	cmp	foreignrelease, 0 +	jz notsetd  	cmp	objecttype,1  	jnz	notsetd  	mov	bx,82 -notsetd:	endif +notsetd:  	mov	dl,241  	mov	ah,16  	mov	charshift,91+91 @@ -682,11 +684,12 @@ notsetd:	endif  	mov	charshift,0  	mov	di,36  	mov	bx,104 -	if	foreign +	cmp	foreignrelease, 0 +	jz notsetd2  	cmp	objecttype,1  	jnz	notsetd2  	mov	bx,94 -notsetd2:	endif +notsetd2:  	mov	dl,241  	mov	ah,0  	call	printdirect diff --git a/devtools/tasmrecover/dreamweb/print.asm b/devtools/tasmrecover/dreamweb/print.asm index a2052285f0..7cbb45c08b 100644 --- a/devtools/tasmrecover/dreamweb/print.asm +++ b/devtools/tasmrecover/dreamweb/print.asm @@ -6,9 +6,10 @@ Printchar	proc	near  	cmp	al,255  	jz	ignoreit  	push	si bx di -	if	foreign +	cmp	foreignrelease, 0 +	jz $1  	sub	bx,3 -	endif +$1:  	push	ax  	sub	al,32 ;"A"  	mov	ah,0 diff --git a/devtools/tasmrecover/dreamweb/sprite.asm b/devtools/tasmrecover/dreamweb/sprite.asm index fadea3b790..45f807da3f 100644 --- a/devtools/tasmrecover/dreamweb/sprite.asm +++ b/devtools/tasmrecover/dreamweb/sprite.asm @@ -4785,12 +4785,12 @@ Reconstruct	proc	near  	call	drawfloor  	call	spriteupdate  	call	printsprites -	if	foreign +	cmp	foreignrelease, 0 +	jz notfudge  	cmp	reallocation,20  	jnz	notfudge  	call	undertextline  notfudge: -	endif  	mov	havedoneobs,0  noneedtorecon:	ret diff --git a/devtools/tasmrecover/dreamweb/use.asm b/devtools/tasmrecover/dreamweb/use.asm index 08debfca56..fbbd9c99db 100644 --- a/devtools/tasmrecover/dreamweb/use.asm +++ b/devtools/tasmrecover/dreamweb/use.asm @@ -1879,11 +1879,11 @@ Usecashcard	proc	near  	call	showman  	mov	di,114 -	if	foreign -	mov	bx,120-3 -	else  	mov	bx,120 -	endif +	cmp	foreignrelease, 0 +	jz $1 +	mov	bx,120-3 +$1:  	mov	ds,tempgraphics  	mov	al,39  	mov	ah,0 @@ -3189,9 +3189,10 @@ notinlouiss:	ret  Getundertimed	proc	near  	mov	al,timedy -	if	foreign +	cmp	foreignrelease, 0 +	jz $1  	sub	al,3 -	endif +$1:  	mov	ah,0  	mov	bx,ax  	mov	al,timedx @@ -3212,9 +3213,10 @@ Getundertimed	proc	near  Putundertimed	proc	near  	mov	al,timedy -	if	foreign +	cmp	foreignrelease, 0 +	jz $1  	sub	al,3 -	endif +$1:  	mov	ah,0  	mov	bx,ax  	mov	al,timedx @@ -3239,9 +3241,10 @@ Dumptimedtext	proc	near  	cmp	needtodumptimed,1  	jnz	nodumptimed  	mov	al,timedy -	if	foreign +	cmp	foreignrelease, 0 +	jz $1  	sub	al,3 -	endif +$1:  	mov	ah,0  	mov	bx,ax  	mov	al,timedx diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover index d6c6a2523f..5f7a528a5b 100755 --- a/devtools/tasmrecover/tasm-recover +++ b/devtools/tasmrecover/tasm-recover @@ -23,6 +23,7 @@ generator = cpp(context, "DreamGen", blacklist = [  	'convertkey',  	'readabyte',  	'readoneblock', -	'frameoutv' +	'frameoutv', +	'modifychar'  	])  generator.generate('dreamweb') #start routine diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index 253b49a8c9..2afd1bc357 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -2173,7 +2173,7 @@ forcenext:  void DreamGenContext::clearsprites() {  	STACK_CHECK;  	es = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768);  	al = 255;  	cx = (32)*16;  	_stosb(cx, true); @@ -2182,7 +2182,7 @@ void DreamGenContext::clearsprites() {  void DreamGenContext::makesprite() {  	STACK_CHECK;  	es = data.word(kBuffers); -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768);  _tmp17:  	_cmp(es.byte(bx+15), 255);  	if (flags.z()) @@ -2210,11 +2210,11 @@ void DreamGenContext::delsprite() {  void DreamGenContext::spriteupdate() {  	STACK_CHECK;  	es = data.word(kBuffers); -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768);  	al = data.byte(kRyanon);  	es.byte(bx+31) = al;  	es = data.word(kBuffers); -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768);  	cx = 16;  _tmp18:  	push(cx); @@ -2248,7 +2248,7 @@ void DreamGenContext::printsprites() {  priorityloop:  	push(cx);  	data.byte(kPriority) = cl; -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768);  	cx = 16;  prtspriteloop:  	push(cx); @@ -2346,7 +2346,7 @@ void DreamGenContext::checkone() {  	_mul(cx);  	si = ax;  	ds = data.word(kBuffers); -	_add(si, (0+(180*10)+32+60+(32*32))); +	_add(si, (0+(228*13)+32+60+(32*32)));  	_lodsw();  	cx = ax;  	_lodsb(); @@ -2810,7 +2810,7 @@ forgotone:  void DreamGenContext::initrain() {  	STACK_CHECK;  	es = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*24)); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30));  	bx = 1113;  checkmorerain:  	al = cs.byte(bx); @@ -2961,7 +2961,7 @@ void DreamGenContext::showrain() {  	ax = ds.word(si+2);  	si = ax;  	_add(si, 2080); -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*24)); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30));  	es = data.word(kBuffers);  	_cmp(es.byte(bx), 255);  	if (flags.z()) @@ -3519,7 +3519,7 @@ atlast2:  void DreamGenContext::updatepeople() {  	STACK_CHECK;  	es = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5));  	data.word(kListpos) = di;  	cx = 12*5;  	al = 255; @@ -3674,6 +3674,14 @@ void DreamGenContext::reconstruct() {  	drawfloor();  	spriteupdate();  	printsprites(); +	_cmp(data.byte(kForeignrelease),  0); +	if (flags.z()) +		goto notfudge; +	_cmp(data.byte(kReallocation), 20); +	if (!flags.z()) +		goto notfudge; +	undertextline(); +notfudge:  	data.byte(kHavedoneobs) = 0;  } @@ -3816,7 +3824,7 @@ bigroom:  void DreamGenContext::dumpeverything() {  	STACK_CHECK;  	es = data.word(kBuffers); -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40));  dumpevery1:  	ax = es.word(bx);  	cx = es.word(bx+2); @@ -3847,7 +3855,7 @@ skip1:  	_add(bx, 5);  	goto dumpevery1;  finishevery1: -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40))+(40*5); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40))+(40*5);  dumpevery2:  	ax = es.word(bx);  	cx = es.word(bx+2); @@ -3888,7 +3896,7 @@ void DreamGenContext::loadpalfromiff() {  	readfromfile();  	closefile();  	es = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768);  	ds = data.word(kMapstore);  	si = 0x30;  	cx = 768; @@ -4520,7 +4528,7 @@ void DreamGenContext::dofade() {  	al = data.byte(kColourpos);  	ah = 0;  	ds = data.word(kBuffers); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3));  	_add(si, ax);  	_add(si, ax);  	_add(si, ax); @@ -4537,7 +4545,7 @@ void DreamGenContext::dofade() {  void DreamGenContext::clearendpal() {  	STACK_CHECK;  	es = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768);  	cx = 768;  	al = 0;  	_stosb(cx, true); @@ -4563,11 +4571,11 @@ void DreamGenContext::fadescreenup() {  void DreamGenContext::fadetowhite() {  	STACK_CHECK;  	es = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768);  	cx = 768;  	al = 63;  	_stosb(cx, true); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768);  	al = 0;  	_stosb(3);  	paltostartpal(); @@ -4580,11 +4588,11 @@ void DreamGenContext::fadetowhite() {  void DreamGenContext::fadefromwhite() {  	STACK_CHECK;  	es = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3));  	cx = 768;  	al = 63;  	_stosb(cx, true); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3));  	al = 0;  	_stosb(3);  	paltoendpal(); @@ -4610,7 +4618,7 @@ void DreamGenContext::fadescreendownhalf() {  	paltoendpal();  	cx = 768;  	es = data.word(kBuffers); -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768);  halfend:  	al = es.byte(bx);  	_shr(al, 1); @@ -4620,12 +4628,12 @@ halfend:  		goto halfend;  	ds = data.word(kBuffers);  	es = data.word(kBuffers); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3))+(56*3); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768)+(56*3); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3))+(56*3); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768)+(56*3);  	cx = 3*5;  	_movsb(cx, true); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3))+(77*3); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768)+(77*3); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3))+(77*3); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768)+(77*3);  	cx = 3*2;  	_movsb(cx, true);  	data.byte(kFadedirection) = 1; @@ -4667,7 +4675,7 @@ void DreamGenContext::fadescreendowns() {  void DreamGenContext::clearstartpal() {  	STACK_CHECK;  	es = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3));  	cx = 256;  wholeloop1:  	ax = 0; @@ -4838,8 +4846,8 @@ void DreamGenContext::fadecalculation() {  		goto nomorefading;  	bl = data.byte(kFadecount);  	es = data.word(kBuffers); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3)); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768);  	cx = 768;  fadecolloop:  	al = es.byte(si); @@ -4873,8 +4881,8 @@ nomorefading:  void DreamGenContext::greyscalesum() {  	STACK_CHECK;  	es = data.word(kBuffers); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768);  	cx = 256;  greysumloop1:  	push(cx); @@ -4932,8 +4940,8 @@ void DreamGenContext::paltostartpal() {  	STACK_CHECK;  	es = data.word(kBuffers);  	ds = data.word(kBuffers); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3));  	cx = 768/2;  	_movsw(cx, true);  } @@ -4942,8 +4950,8 @@ void DreamGenContext::endpaltostart() {  	STACK_CHECK;  	es = data.word(kBuffers);  	ds = data.word(kBuffers); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)+768); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3)+768); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3));  	cx = 768/2;  	_movsw(cx, true);  } @@ -4952,8 +4960,8 @@ void DreamGenContext::startpaltoend() {  	STACK_CHECK;  	es = data.word(kBuffers);  	ds = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3));  	cx = 768/2;  	_movsw(cx, true);  } @@ -4962,8 +4970,8 @@ void DreamGenContext::paltoendpal() {  	STACK_CHECK;  	es = data.word(kBuffers);  	ds = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768);  	cx = 768/2;  	_movsw(cx, true);  } @@ -4972,8 +4980,8 @@ void DreamGenContext::allpalette() {  	STACK_CHECK;  	es = data.word(kBuffers);  	ds = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768);  	cx = 768/2;  	_movsw(cx, true);  	dumpcurrent(); @@ -4981,7 +4989,7 @@ void DreamGenContext::allpalette() {  void DreamGenContext::dumpcurrent() {  	STACK_CHECK; -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3));  	ds = data.word(kBuffers);  	vsync();  	al = 0; @@ -4998,11 +5006,11 @@ void DreamGenContext::fadedownmon() {  	paltostartpal();  	paltoendpal();  	es = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768)+(231*3); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768)+(231*3);  	cx = 3*8;  	ax = 0;  	_stosb(cx, true); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768)+(246*3); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768)+(246*3);  	_stosb();  	_stosw();  	data.byte(kFadedirection) = 1; @@ -5018,11 +5026,11 @@ void DreamGenContext::fadeupmon() {  	paltostartpal();  	paltoendpal();  	es = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3))+(231*3); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3))+(231*3);  	cx = 3*8;  	ax = 0;  	_stosb(cx, true); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3))+(246*3); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3))+(246*3);  	_stosb();  	_stosw();  	data.byte(kFadedirection) = 1; @@ -5038,11 +5046,11 @@ void DreamGenContext::fadeupmonfirst() {  	paltostartpal();  	paltoendpal();  	es = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3))+(231*3); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3))+(231*3);  	cx = 3*8;  	ax = 0;  	_stosb(cx, true); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3))+(246*3); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3))+(246*3);  	_stosb();  	_stosw();  	data.byte(kFadedirection) = 1; @@ -5061,11 +5069,11 @@ void DreamGenContext::fadeupyellows() {  	STACK_CHECK;  	paltoendpal();  	es = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768)+(231*3); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768)+(231*3);  	cx = 3*8;  	ax = 0;  	_stosb(cx, true); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768)+(246*3); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768)+(246*3);  	_stosb();  	_stosw();  	data.byte(kFadedirection) = 1; @@ -5080,15 +5088,15 @@ void DreamGenContext::initialmoncols() {  	STACK_CHECK;  	paltostartpal();  	es = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3))+(230*3); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3))+(230*3);  	cx = 3*9;  	ax = 0;  	_stosb(cx, true); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3))+(246*3); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3))+(246*3);  	_stosb();  	_stosw();  	ds = data.word(kBuffers); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3))+(230*3); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3))+(230*3);  	al = 230;  	cx = 18;  	showgroup(); @@ -5507,6 +5515,11 @@ void DreamGenContext::printchar() {  	push(si);  	push(bx);  	push(di); +	_cmp(data.byte(kForeignrelease),  0); +	if (flags.z()) +		goto _tmp1; +	_sub(bx, 3); +_tmp1:  	push(ax);  	_sub(al, 32);  	ah = 0; @@ -5578,6 +5591,7 @@ printloopslow5:  	push(es);  	push(si);  	push(ds); +	modifychar();  	printboth();  	ds = pop();  	si = pop(); @@ -5601,6 +5615,7 @@ printloopslow5:  	push(cx);  	push(es);  	push(si); +	modifychar();  	data.word(kCharshift) = 91;  	printboth();  	data.word(kCharshift) = 0; @@ -5714,6 +5729,7 @@ printloop5:  		goto finishdirct;  	push(cx);  	push(es); +	modifychar();  	printchar();  	data.word(kLastxpos) = di;  	es = pop(); @@ -5770,6 +5786,7 @@ printloop7:  nottrigger:  	push(cx);  	push(es); +	modifychar();  	printchar();  	data.word(kCurslocx) = di;  	data.word(kCurslocy) = bx; @@ -5940,6 +5957,7 @@ getloop:  	_cmp(al, 32);  	if (flags.z())  		goto endword; +	modifychar();  	_cmp(al, 255);  	if (flags.z())  		goto getloop; @@ -5968,9 +5986,9 @@ endall:  void DreamGenContext::fillryan() {  	STACK_CHECK;  	es = data.word(kBuffers); -	di = (0+(180*10)+32); +	di = (0+(228*13)+32);  	findallryan(); -	si = (0+(180*10)+32); +	si = (0+(228*13)+32);  	al = data.byte(kRyanpage);  	ah = 0;  	cx = 20; @@ -6022,9 +6040,9 @@ lessthanapage:  	al = 1;  	push(ax);  	es = data.word(kBuffers); -	di = (0+(180*10)); +	di = (0+(228*13));  	findallopen(); -	si = (0+(180*10)); +	si = (0+(228*13));  	di = (80);  	bx = (58)+96;  	cx = pop(); @@ -6508,6 +6526,14 @@ void DreamGenContext::describeob() {  	getobtextstart();  	di = 33;  	bx = 92; +	_cmp(data.byte(kForeignrelease),  0); +	if (flags.z()) +		goto notsetd; +	_cmp(data.byte(kObjecttype), 1); +	if (!flags.z()) +		goto notsetd; +	bx = 82; +notsetd:  	dl = 241;  	ah = 16;  	data.word(kCharshift) = 91+91; @@ -6515,6 +6541,14 @@ void DreamGenContext::describeob() {  	data.word(kCharshift) = 0;  	di = 36;  	bx = 104; +	_cmp(data.byte(kForeignrelease),  0); +	if (flags.z()) +		goto notsetd2; +	_cmp(data.byte(kObjecttype), 1); +	if (!flags.z()) +		goto notsetd2; +	bx = 94; +notsetd2:  	dl = 241;  	ah = 0;  	printdirect(); @@ -7349,7 +7383,7 @@ findinv2:  	data.byte(kLastinvpos) = al;  	_add(bx, bx);  	es = data.word(kBuffers); -	_add(bx, (0+(180*10)+32)); +	_add(bx, (0+(228*13)+32));  }  void DreamGenContext::findopenpos() { @@ -7366,7 +7400,7 @@ findopenp1:  	data.byte(kLastinvpos) = al;  	_add(bx, bx);  	es = data.word(kBuffers); -	_add(bx, (0+(180*10))); +	_add(bx, (0+(228*13)));  }  void DreamGenContext::dropobject() { @@ -8317,7 +8351,7 @@ void DreamGenContext::calcmapad() {  void DreamGenContext::getdimension() {  	STACK_CHECK;  	es = data.word(kBuffers); -	bx = (0+(180*10)+32+60+(32*32)); +	bx = (0+(228*13)+32+60+(32*32));  	ch = 0;  dimloop1:  	addalong(); @@ -8327,7 +8361,7 @@ dimloop1:  	_inc(ch);  	goto dimloop1;  finishdim1: -	bx = (0+(180*10)+32+60+(32*32)); +	bx = (0+(228*13)+32+60+(32*32));  	cl = 0;  dimloop2:  	push(bx); @@ -8340,7 +8374,7 @@ dimloop2:  	_add(bx, 3);  	goto dimloop2;  finishdim2: -	bx = (0+(180*10)+32+60+(32*32))+(11*3*9); +	bx = (0+(228*13)+32+60+(32*32))+(11*3*9);  	dh = 10;  dimloop3:  	push(bx); @@ -8353,7 +8387,7 @@ dimloop3:  	_sub(bx, 11*3);  	goto dimloop3;  finishdim3: -	bx = (0+(180*10)+32+60+(32*32))+(3*10); +	bx = (0+(228*13)+32+60+(32*32))+(3*10);  	dl = 11;  dimloop4:  	push(bx); @@ -8435,7 +8469,7 @@ gotlength:  void DreamGenContext::drawflags() {  	STACK_CHECK;  	es = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)); +	di = (0+(228*13)+32+60+(32*32));  	al = data.byte(kMapy);  	ah = 0;  	cx = (66); @@ -8477,7 +8511,7 @@ void DreamGenContext::eraseoldobs() {  	if (flags.z())  		return /* (donterase) */;  	es = data.word(kBuffers); -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768);  	cx = 16;  oberase:  	push(cx); @@ -8501,7 +8535,7 @@ notthisob:  void DreamGenContext::showallobs() {  	STACK_CHECK;  	es = data.word(kBuffers); -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32));  	data.word(kListpos) = bx;  	di = bx;  	cx = 128*5; @@ -8622,9 +8656,9 @@ usedpriority:  void DreamGenContext::showallfree() {  	STACK_CHECK;  	es = data.word(kBuffers); -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5));  	data.word(kListpos) = bx; -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5));  	cx = 80*5;  	al = 255;  	_stosb(cx, true); @@ -8703,9 +8737,9 @@ over138:  void DreamGenContext::showallex() {  	STACK_CHECK;  	es = data.word(kBuffers); -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5));  	data.word(kListpos) = bx; -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5));  	cx = 100*5;  	al = 255;  	_stosb(cx, true); @@ -9572,6 +9606,15 @@ alreadyinfo:  	di = 60;  	bx = 72+55;  	showframe(); +	_cmp(data.byte(kForeignrelease),  0); +	if (flags.z()) +		goto _tmp1; +	al = 4; +	ah = 0; +	di = 60; +	bx = 72+55+21; +	showframe(); +_tmp1:  	bx = pop();  	bh = 0;  	_add(bx, bx); @@ -9581,6 +9624,11 @@ alreadyinfo:  	findnextcolon();  	di = 63;  	bx = 84; +	_cmp(data.byte(kForeignrelease),  0); +	if (flags.z()) +		goto _tmp2; +	bx = 84+4; +_tmp2:  	dl = 191;  	al = 0;  	ah = 0; @@ -11052,6 +11100,7 @@ curfileloop:  		return /* (finishfile) */;  	_inc(si);  	push(si); +	modifychar();  	ds = data.word(kTempcharset);  	ah = 0;  	printchar(); @@ -11150,6 +11199,12 @@ void DreamGenContext::printcurs() {  	bx = data.word(kCurslocy);  	cl = 6;  	ch = 8; +	_cmp(data.byte(kForeignrelease),  0); +	if (flags.z()) +		goto _tmp1; +	_sub(bx, 3); +	ch = 11; +_tmp1:  	ds = data.word(kBuffers);  	si = (0);  	push(di); @@ -11175,6 +11230,11 @@ flashcurs:  	_sub(di, 6);  	cl = 12;  	ch = 8; +	_cmp(data.byte(kForeignrelease),  0); +	if (flags.z()) +		goto _tmp2; +	ch = 11; +_tmp2:  	multidump();  	es = pop();  	bx = pop(); @@ -11196,6 +11256,12 @@ void DreamGenContext::delcurs() {  	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); @@ -12654,6 +12720,11 @@ void DreamGenContext::usecashcard() {  	showman();  	di = 114;  	bx = 120; +	_cmp(data.byte(kForeignrelease),  0); +	if (flags.z()) +		goto _tmp1; +	bx = 120-3; +_tmp1:  	ds = data.word(kTempgraphics);  	al = 39;  	ah = 0; @@ -13595,7 +13666,7 @@ void DreamGenContext::removefreeobject() {  void DreamGenContext::findormake() {  	STACK_CHECK; -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80));  	push(ax);  	es = data.word(kBuffers);  	ah = data.byte(kReallocation); @@ -13635,7 +13706,7 @@ void DreamGenContext::switchryanoff() {  void DreamGenContext::setallchanges() {  	STACK_CHECK;  	es = data.word(kBuffers); -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80));  setallloop:  	ax = es.word(bx);  	_cmp(al, 255); @@ -13769,30 +13840,40 @@ notonsartroof:  void DreamGenContext::getundertimed() {  	STACK_CHECK;  	al = data.byte(kTimedy); +	_cmp(data.byte(kForeignrelease),  0); +	if (flags.z()) +		goto _tmp1; +	_sub(al, 3); +_tmp1:  	ah = 0;  	bx = ax;  	al = data.byte(kTimedx);  	ah = 0;  	di = ax; -	ch = (24); +	ch = (30);  	cl = 240;  	ds = data.word(kBuffers); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4));  	multiget();  }  void DreamGenContext::putundertimed() {  	STACK_CHECK;  	al = data.byte(kTimedy); +	_cmp(data.byte(kForeignrelease),  0); +	if (flags.z()) +		goto _tmp1; +	_sub(al, 3); +_tmp1:  	ah = 0;  	bx = ax;  	al = data.byte(kTimedx);  	ah = 0;  	di = ax; -	ch = (24); +	ch = (30);  	cl = 240;  	ds = data.word(kBuffers); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4));  	multiput();  } @@ -13802,13 +13883,18 @@ void DreamGenContext::dumptimedtext() {  	if (!flags.z())  		return /* (nodumptimed) */;  	al = data.byte(kTimedy); +	_cmp(data.byte(kForeignrelease),  0); +	if (flags.z()) +		goto _tmp1; +	_sub(al, 3); +_tmp1:  	ah = 0;  	bx = ax;  	al = data.byte(kTimedx);  	ah = 0;  	di = ax;  	cl = 240; -	ch = (24); +	ch = (30);  	multidump();  	data.byte(kNeedtodumptimed) = 0;  } @@ -14750,7 +14836,7 @@ void DreamGenContext::getundermenu() {  	cl = 48;  	ch = 48;  	ds = data.word(kBuffers); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4));  	multiget();  } @@ -14761,7 +14847,7 @@ void DreamGenContext::putundermenu() {  	cl = 48;  	ch = 48;  	ds = data.word(kBuffers); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4));  	multiput();  } @@ -16586,7 +16672,7 @@ void DreamGenContext::namestoold() {  	STACK_CHECK;  	ds = cs;  	si = 8579; -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5));  	es = data.word(kBuffers);  	cx = 17*4;  	_movsb(cx, true); @@ -16596,7 +16682,7 @@ void DreamGenContext::oldtonames() {  	STACK_CHECK;  	es = cs;  	di = 8579; -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5));  	ds = data.word(kBuffers);  	cx = 17*4;  	_movsb(cx, true); @@ -16639,7 +16725,7 @@ void DreamGenContext::saveposition() {  	dx = (0);  	saveseg();  	ds = data.word(kBuffers); -	dx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)); +	dx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80));  	saveseg();  	dx = data;  	ds = dx; @@ -16688,7 +16774,7 @@ void DreamGenContext::loadposition() {  	dx = (0);  	loadseg();  	ds = data.word(kBuffers); -	dx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)); +	dx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80));  	loadseg();  	dx = data;  	ds = dx; @@ -17625,7 +17711,7 @@ void DreamGenContext::allocatebuffers() {  	allocatemem();  	data.word(kMapdata) = ax;  	trysoundalloc(); -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*24)+(6*64)+991-534+68-0)/16; +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64)+991-534+68-0)/16;  	allocatemem();  	data.word(kBuffers) = ax;  	trysoundalloc(); @@ -17652,7 +17738,7 @@ void DreamGenContext::allocatebuffers() {  void DreamGenContext::clearbuffers() {  	STACK_CHECK;  	es = data.word(kBuffers); -	cx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*24)+(6*64)+991-534+68-0)/2; +	cx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64)+991-534+68-0)/2;  	ax = 0;  	di = 0;  	_stosw(cx, true); @@ -17662,13 +17748,13 @@ void DreamGenContext::clearbuffers() {  	di = 0;  	_stosw(cx, true);  	es = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*24)+(6*64)); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64));  	ds = cs;  	si = 534;  	cx = (991-534);  	_movsb(cx, true);  	es = data.word(kBuffers); -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*24)+(6*64)+991-534); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64)+991-534);  	ds = cs;  	si = 0;  	cx = (68-0); @@ -17681,16 +17767,16 @@ void DreamGenContext::clearchanges() {  	es = data.word(kBuffers);  	cx = (250)*2;  	ax = 0x0ffff; -	di = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)); +	di = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80));  	_stosw(cx, true);  	ds = data.word(kBuffers); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*24)+(6*64)); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64));  	es = cs;  	di = 534;  	cx = (991-534);  	_movsb(cx, true);  	ds = data.word(kBuffers); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*24)+(6*64)+991-534); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64)+991-534);  	es = cs;  	di = 0;  	cx = (68-0); @@ -18478,7 +18564,7 @@ nothingund:  void DreamGenContext::checkifperson() {  	STACK_CHECK;  	es = data.word(kBuffers); -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5));  	cx = 12;  identifyreel:  	push(cx); @@ -18541,7 +18627,7 @@ notareelid:  void DreamGenContext::checkifset() {  	STACK_CHECK;  	es = data.word(kBuffers); -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32))+(127*5); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32))+(127*5);  	cx = 127;  identifyset:  	_cmp(es.byte(bx+4), 255); @@ -18582,7 +18668,7 @@ notasetid:  void DreamGenContext::checkifex() {  	STACK_CHECK;  	es = data.word(kBuffers); -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5))+(99*5); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5))+(99*5);  	cx = 99;  identifyex:  	_cmp(es.byte(bx+4), 255); @@ -18617,7 +18703,7 @@ notanexid:  void DreamGenContext::checkiffree() {  	STACK_CHECK;  	es = data.word(kBuffers); -	bx = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5))+(79*5); +	bx = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5))+(79*5);  	cx = 79;  identifyfree:  	_cmp(es.byte(bx+4), 255); @@ -20206,7 +20292,7 @@ void DreamGenContext::getunderzoom() {  	di = (8)+5;  	bx = (132)+4;  	ds = data.word(kBuffers); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5));  	cl = 46;  	ch = 40;  	multiget(); @@ -20229,7 +20315,7 @@ void DreamGenContext::putunderzoom() {  	di = (8)+5;  	bx = (132)+4;  	ds = data.word(kBuffers); -	si = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)); +	si = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5));  	cl = 46;  	ch = 40;  	multiput(); @@ -20296,7 +20382,7 @@ notsmally:  	data.byte(kPointerys) = ch;  	push(ds);  	ds = data.word(kBuffers); -	si = (0+(180*10)+32+60); +	si = (0+(228*13)+32+60);  	multiget();  	ds = pop();  	di = pop(); @@ -20359,7 +20445,7 @@ notsmally2:  	_sub(data.word(kOldpointery), ax);  	_sub(bx, ax);  	ds = data.word(kBuffers); -	si = (0+(180*10)+32+60); +	si = (0+(228*13)+32+60);  	multiget();  	ds = pop();  	di = pop(); @@ -20389,7 +20475,7 @@ void DreamGenContext::delpointer() {  	ch = data.byte(kPointerys);  	data.byte(kDelys) = ch;  	ds = data.word(kBuffers); -	si = (0+(180*10)+32+60); +	si = (0+(228*13)+32+60);  	di = data.word(kDelherex);  	bx = data.word(kDelherey);  	multiput(); @@ -20421,10 +20507,15 @@ void DreamGenContext::undertextline() {  	STACK_CHECK;  	di = data.word(kTextaddressx);  	bx = data.word(kTextaddressy); +	_cmp(data.byte(kForeignrelease),  0); +	if (flags.z()) +		goto _tmp1; +	_sub(bx, 3); +_tmp1:  	ds = data.word(kBuffers);  	si = (0); -	cl = (180); -	ch = (10); +	cl = (228); +	ch = (13);  	multiget();  } @@ -20432,10 +20523,15 @@ void DreamGenContext::deltextline() {  	STACK_CHECK;  	di = data.word(kTextaddressx);  	bx = data.word(kTextaddressy); +	_cmp(data.byte(kForeignrelease),  0); +	if (flags.z()) +		goto _tmp1; +	_sub(bx, 3); +_tmp1:  	ds = data.word(kBuffers);  	si = (0); -	cl = (180); -	ch = (10); +	cl = (228); +	ch = (13);  	multiput();  } @@ -20447,8 +20543,13 @@ void DreamGenContext::dumptextline() {  	data.byte(kNewtextline) = 0;  	di = data.word(kTextaddressx);  	bx = data.word(kTextaddressy); -	cl = (180); -	ch = (10); +	_cmp(data.byte(kForeignrelease),  0); +	if (flags.z()) +		goto _tmp1; +	_sub(bx, 3); +_tmp1: +	cl = (228); +	ch = (13);  	multidump();  } @@ -21971,7 +22072,7 @@ void DreamGenContext::__start() {  		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  -		0x00, 0x00, 0x00, 0x00, }; +		0x00, 0x00, 0x00, 0x00, 0x00, };  	ds.assign(src, src + sizeof(src));  dreamweb();   } diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index 5a60327a43..71c466da24 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -488,7 +488,8 @@ public:  	const static uint16 kRecname = 8789;  	const static uint16 kQuitrequested = 8802;  	const static uint16 kSubtitles = 8803; -	const static uint16 kStak = 8804; +	const static uint16 kForeignrelease = 8804; +	const static uint16 kStak = 8805;  	const static uint16 kBlocktextdat = (0);  	const static uint16 kPersonframes = (0);  	const static uint16 kDebuglevel1 = (0); @@ -502,7 +503,6 @@ public:  	const static uint16 kFlags = (0);  	const static uint16 kGerman = (0);  	const static uint16 kTextunder = (0); -	const static uint16 kForeign = (0);  	const static uint16 kPathdata = (0);  	const static uint16 kDemo = (0);  	const static uint16 kExframedata = (0); @@ -510,26 +510,26 @@ public:  	const static uint16 kFreetextdat = (0);  	const static uint16 kFrframedata = (0);  	const static uint16 kSettext = (0+(130*2)); -	const static uint16 kOpeninvlist = (0+(180*10)); -	const static uint16 kRyaninvlist = (0+(180*10)+32); -	const static uint16 kPointerback = (0+(180*10)+32+60); -	const static uint16 kMapflags = (0+(180*10)+32+60+(32*32)); -	const static uint16 kStartpal = (0+(180*10)+32+60+(32*32)+(11*10*3)); -	const static uint16 kEndpal = (0+(180*10)+32+60+(32*32)+(11*10*3)+768); -	const static uint16 kMaingamepal = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768); -	const static uint16 kSpritetable = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768); -	const static uint16 kSetlist = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)); -	const static uint16 kFreelist = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)); -	const static uint16 kExlist = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)); -	const static uint16 kPeoplelist = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)); -	const static uint16 kZoomspace = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)); -	const static uint16 kPrintedlist = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)); -	const static uint16 kListofchanges = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)); -	const static uint16 kUndertimedtext = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)); -	const static uint16 kRainlist = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*24)); -	const static uint16 kInitialreelrouts = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*24)+(6*64)); -	const static uint16 kInitialvars = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*24)+(6*64)+991-534); -	const static uint16 kLengthofbuffer = (0+(180*10)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*24)+(6*64)+991-534+68-0); +	const static uint16 kOpeninvlist = (0+(228*13)); +	const static uint16 kRyaninvlist = (0+(228*13)+32); +	const static uint16 kPointerback = (0+(228*13)+32+60); +	const static uint16 kMapflags = (0+(228*13)+32+60+(32*32)); +	const static uint16 kStartpal = (0+(228*13)+32+60+(32*32)+(11*10*3)); +	const static uint16 kEndpal = (0+(228*13)+32+60+(32*32)+(11*10*3)+768); +	const static uint16 kMaingamepal = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768); +	const static uint16 kSpritetable = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768); +	const static uint16 kSetlist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)); +	const static uint16 kFreelist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)); +	const static uint16 kExlist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)); +	const static uint16 kPeoplelist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)); +	const static uint16 kZoomspace = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)); +	const static uint16 kPrintedlist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)); +	const static uint16 kListofchanges = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)); +	const static uint16 kUndertimedtext = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)); +	const static uint16 kRainlist = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)); +	const static uint16 kInitialreelrouts = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64)); +	const static uint16 kInitialvars = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64)+991-534); +	const static uint16 kLengthofbuffer = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768+768+(32*32)+(128*5)+(80*5)+(100*5)+(12*5)+(46*40)+(5*80)+(250*4)+(256*30)+(6*64)+991-534+68-0);  	const static uint16 kReellist = (0+(36*144));  	const static uint16 kIntext = (0+(38*2));  	const static uint16 kLengthofmap = (0+(66*60)); @@ -546,16 +546,17 @@ public:  	const static uint16 kPersontxtdat = (0+24);  	const static uint16 kPersontext = (0+24+(1026*2));  	const static uint16 kInputport = (0x63); +	const static uint16 kForeign = (1);  	const static uint16 kCd = (1); -	const static uint16 kUndertextsizey = (10);  	const static uint16 kNumexobjects = (114); +	const static uint16 kUndertextsizey = (13);  	const static uint16 kZoomy = (132);  	const static uint16 kFreedatlen = (16*80); -	const static uint16 kUndertextsizex = (180);  	const static uint16 kExtextlen = (18000);  	const static uint16 kLenofmapstore = (22*8*20*8); -	const static uint16 kUndertimedysize = (24); +	const static uint16 kUndertextsizex = (228);  	const static uint16 kNumchanges = (250); +	const static uint16 kUndertimedysize = (30);  	const static uint16 kExframeslen = (30000);  	const static uint16 kTablesize = (32);  	const static uint16 kScreenwidth = (320); @@ -718,6 +719,7 @@ public:  	void addtopeoplelist();  	void hangoncurs();  	void sparkydrip(); +	void modifychar();  	void compare();  	void printcurs();  	void convertkey(); diff --git a/engines/dreamweb/dreamweb.cpp b/engines/dreamweb/dreamweb.cpp index 590f071b6b..e8152e9963 100644 --- a/engines/dreamweb/dreamweb.cpp +++ b/engines/dreamweb/dreamweb.cpp @@ -568,6 +568,9 @@ void DreamWebEngine::loadSounds(uint bank, const Common::String &filename) {  	file.close();  } +uint8 DreamWebEngine::modifyChar(uint8 c) const { +	return c; +}  } // End of namespace DreamWeb diff --git a/engines/dreamweb/dreamweb.h b/engines/dreamweb/dreamweb.h index e0797bc96b..b1a68dbc20 100644 --- a/engines/dreamweb/dreamweb.h +++ b/engines/dreamweb/dreamweb.h @@ -107,6 +107,8 @@ public:  	void enableSavingOrLoading(bool enable = true) { _enableSavingOrLoading = enable; } +	uint8 modifyChar(uint8 c) const; +  private:  	void keyPressed(uint16 ascii);  	void setSpeed(uint speed); diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index 1869f1b109..55e5fba2ac 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -525,4 +525,8 @@ void DreamGenContext::frameoutv() {  	}  } +void DreamGenContext::modifychar() { +	al = engine->modifyChar(al); +} +  } /*namespace dreamgen */ | 
