[Scummvm-cvs-logs] scummvm master -> 93bf275f4c9ef168ceab23a07a1219d2c78b65ec

bluegr md5 at scummvm.org
Thu Dec 15 11:16:35 CET 2011


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
faab2d761d DREAMWEB: Remove some unused global variables from the data blob
93bf275f4c DREAMWEB: Port 'helicopter' to C++


Commit: faab2d761d103de3c019dc1c979d3940191abc96
    https://github.com/scummvm/scummvm/commit/faab2d761d103de3c019dc1c979d3940191abc96
Author: Filippos Karapetis (md5 at scummvm.org)
Date: 2011-12-15T01:30:47-08:00

Commit Message:
DREAMWEB: Remove some unused global variables from the data blob

Changed paths:
    devtools/tasmrecover/tasm-recover
    engines/dreamweb/dreamgen.cpp
    engines/dreamweb/dreamgen.h



diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index 4e2e7b0..fa480ea 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -155,6 +155,11 @@ p = parser(skip_binary_data = [
 	'increment2',
 	'keypadax',
 	'keypadcx',
+	'soundbuffer',
+	'cursloc',
+	'liftsoundcount',
+	'playblock',
+	'gotfrom',
 	# vgagrafx.asm
 	'cityname',
 	'extragraphics1',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index 6f8cff0..dfeda18 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -2651,14 +2651,14 @@ void DreamGenContext::getDestInfo() {
 	push(ax);
 	dx = data;
 	es = dx;
-	si = 1180;
+	si = 1174;
 	_add(si, ax);
 	cl = es.byte(si);
 	ax = pop();
 	push(cx);
 	dx = data;
 	es = dx;
-	si = 1196;
+	si = 1190;
 	_add(si, ax);
 	ax = pop();
 }
@@ -2710,7 +2710,7 @@ clearedlocations:
 	bx = ax;
 	dx = data;
 	es = dx;
-	_add(bx, 1180);
+	_add(bx, 1174);
 	es.byte(bx) = 0;
 }
 
@@ -2749,7 +2749,7 @@ dirroot:
 	si = offset_rootdir;
 	_inc(si);
 	es = cs;
-	di = 1056;
+	di = 1050;
 	_inc(di);
 	cx = 12;
 	_movsb(cx, true);
@@ -2851,7 +2851,7 @@ notyetassigned:
 	push(bx);
 	_add(bx, 2);
 	ds = cs;
-	si = 1214;
+	si = 1208;
 checkpass:
 	_lodsw();
 	ah = es.byte(bx);
@@ -2922,7 +2922,7 @@ void DreamGenContext::read() {
 	return;
 okcom:
 	es = cs;
-	di = 1056;
+	di = 1050;
 	ax = data.word(kTextfile1);
 	data.word(kMonsource) = ax;
 	ds = ax;
@@ -3052,7 +3052,7 @@ keyok2:
 	ds = cs;
 	si = offset_operand1+1;
 	es = cs;
-	di = 1056+1;
+	di = 1050+1;
 	cx = 12;
 	_movsb(cx, true);
 	monitorLogo();
@@ -3179,7 +3179,7 @@ void DreamGenContext::parser() {
 	al = '=';
 	_stosb();
 	ds = cs;
-	si = 1214;
+	si = 1208;
 notspace1:
 	_lodsw();
 	_cmp(al, 32);
@@ -3808,7 +3808,7 @@ nomatchslot:
 void DreamGenContext::clearBuffers() {
 	STACK_CHECK;
 	es = data.word(kBuffers);
-	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)+907-450+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)+901-444+68-0)/2;
 	ax = 0;
 	di = 0;
 	_stosw(cx, true);
@@ -3820,11 +3820,11 @@ void DreamGenContext::clearBuffers() {
 	es = data.word(kBuffers);
 	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 = 450;
-	cx = (907-450);
+	si = 444;
+	cx = (901-444);
 	_movsb(cx, true);
 	es = data.word(kBuffers);
-	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)+907-450);
+	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)+901-444);
 	ds = cs;
 	si = 0;
 	cx = (68-0);
@@ -3842,11 +3842,11 @@ void DreamGenContext::clearChanges() {
 	ds = data.word(kBuffers);
 	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 = 450;
-	cx = (907-450);
+	di = 444;
+	cx = (901-444);
 	_movsb(cx, true);
 	ds = data.word(kBuffers);
-	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)+907-450);
+	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)+901-444);
 	es = cs;
 	di = 0;
 	cx = (68-0);
@@ -3860,7 +3860,7 @@ void DreamGenContext::clearChanges() {
 	di = 0;
 	_stosw(cx, true);
 	es = cs;
-	di = 1180;
+	di = 1174;
 	al = 1;
 	_stosb(2);
 	al = 0;
@@ -4099,111 +4099,111 @@ void DreamGenContext::__start() {
 		//0x0150: .... .... .... ....
 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
 		//0x0160: .... .... .... ....
-		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+		0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
 		//0x0170: .... .... .... ....
 		0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
 		//0x0180: .... .... .... ....
-		0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+		0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x17, 0x00, 
 		//0x0190: .... .... .... ....
-		0xff, 0xff, 0xff, 0x17, 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, 
 		//0x01a0: .... .... .... ....
-		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 
-		//0x01b0: .... .... .... ....
-		0xff, 0x00, 0x01, 0x2c, 0x00, 0x14, 0x00, 0x02, 0x00, 0x01, 0x01, 0x37, 0x00, 0x00, 0x00, 0x32, 
-		//0x01c0: ..., .... ...7 ...2
-		0x14, 0x00, 0x18, 0x16, 0x00, 0x4a, 0x00, 0x01, 0x00, 0x00, 0x18, 0x21, 0x0a, 0x4b, 0x00, 0x01, 
-		//0x01d0: .... .J.. ...! .K..
-		0x00, 0x01, 0x01, 0x2c, 0x00, 0x1b, 0x00, 0x02, 0x00, 0x02, 0x01, 0x2c, 0x00, 0x60, 0x00, 0x03, 
-		//0x01e0: ..., .... ..., .`..
-		0x00, 0x04, 0x01, 0x2c, 0x00, 0x76, 0x00, 0x02, 0x00, 0x05, 0x01, 0x2c, 0x0a, 0x00, 0x00, 0x02, 
-		//0x01f0: ..., .v.. ..., ....
-		0x00, 0x00, 0x05, 0x16, 0x14, 0x35, 0x00, 0x03, 0x00, 0x00, 0x05, 0x16, 0x14, 0x28, 0x00, 0x01, 
-		//0x0200: .... .5.. .... .(..
-		0x00, 0x02, 0x05, 0x16, 0x14, 0x32, 0x00, 0x01, 0x00, 0x03, 0x02, 0x0b, 0x0a, 0xc0, 0x00, 0x01, 
-		//0x0210: .... .2.. .... ....
-		0x00, 0x00, 0x02, 0x0b, 0x0a, 0xb6, 0x00, 0x02, 0x00, 0x01, 0x08, 0x0b, 0x0a, 0x00, 0x00, 0x02, 
-		//0x0220: .... .... .... ....
-		0x00, 0x01, 0x17, 0x00, 0x32, 0x00, 0x00, 0x03, 0x00, 0x00, 0x1c, 0x0b, 0x14, 0xfa, 0x00, 0x04, 
-		//0x0230: .... 2... .... ....
-		0x00, 0x00, 0x17, 0x00, 0x32, 0x2b, 0x00, 0x02, 0x00, 0x08, 0x17, 0x0b, 0x28, 0x82, 0x00, 0x02, 
-		//0x0240: .... 2+.. .... (...
-		0x00, 0x01, 0x17, 0x16, 0x28, 0x7a, 0x00, 0x02, 0x00, 0x02, 0x17, 0x16, 0x28, 0x69, 0x00, 0x02, 
-		//0x0250: .... (z.. .... (i..
-		0x00, 0x03, 0x17, 0x16, 0x28, 0x51, 0x00, 0x02, 0x00, 0x04, 0x17, 0x0b, 0x28, 0x87, 0x00, 0x02, 
-		//0x0260: .... (Q.. .... (...
-		0x00, 0x05, 0x17, 0x16, 0x28, 0x91, 0x00, 0x02, 0x00, 0x06, 0x04, 0x16, 0x1e, 0x00, 0x00, 0x02, 
-		//0x0270: .... (... .... ....
-		0x00, 0x00, 0x2d, 0x16, 0x1e, 0xc8, 0x00, 0x00, 0x00, 0x14, 0x2d, 0x16, 0x1e, 0x27, 0x00, 0x02, 
-		//0x0280: ..-. .... ..-. .'..
-		0x00, 0x00, 0x2d, 0x16, 0x1e, 0x19, 0x00, 0x02, 0x00, 0x00, 0x08, 0x16, 0x28, 0x20, 0x00, 0x02, 
-		//0x0290: ..-. .... .... ( ..
-		0x00, 0x00, 0x07, 0x0b, 0x14, 0x40, 0x00, 0x02, 0x00, 0x00, 0x16, 0x16, 0x14, 0x52, 0x00, 0x02, 
-		//0x02a0: .... . at .. .... .R..
-		0x00, 0x00, 0x1b, 0x0b, 0x1e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x00, 0x02, 
-		//0x02b0: .... .... .... ....
-		0x00, 0x00, 0x0e, 0x21, 0x28, 0x15, 0x00, 0x01, 0x00, 0x00, 0x1d, 0x0b, 0x0a, 0x00, 0x00, 0x01, 
-		//0x02c0: ...! (... .... ....
-		0x00, 0x00, 0x02, 0x16, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x19, 0x00, 0x32, 0x04, 0x00, 0x02, 
-		//0x02d0: .... .... .... 2...
-		0x00, 0x00, 0x32, 0x16, 0x1e, 0x79, 0x00, 0x02, 0x00, 0x00, 0x32, 0x16, 0x1e, 0x00, 0x00, 0x14, 
-		//0x02e0: ..2. .y.. ..2. ....
-		0x00, 0x00, 0x34, 0x16, 0x1e, 0xc0, 0x00, 0x02, 0x00, 0x00, 0x34, 0x16, 0x1e, 0xe9, 0x00, 0x02, 
-		//0x02f0: ..4. .... ..4. ....
-		0x00, 0x00, 0x32, 0x16, 0x28, 0x68, 0x00, 0x37, 0x00, 0x00, 0x35, 0x21, 0x00, 0x63, 0x00, 0x02, 
-		//0x0300: ..2. (h.7 ..5! .c..
-		0x00, 0x00, 0x32, 0x16, 0x28, 0x00, 0x00, 0x03, 0x00, 0x00, 0x32, 0x16, 0x1e, 0xa2, 0x00, 0x02, 
-		//0x0310: ..2. (... ..2. ....
-		0x00, 0x00, 0x34, 0x16, 0x1e, 0x39, 0x00, 0x02, 0x00, 0x00, 0x34, 0x16, 0x1e, 0x00, 0x00, 0x02, 
-		//0x0320: ..4. .9.. ..4. ....
-		0x00, 0x00, 0x36, 0x00, 0x00, 0x48, 0x00, 0x03, 0x00, 0x00, 0x37, 0x2c, 0x00, 0x00, 0x00, 0x02, 
-		//0x0330: ..6. .H.. ..7, ....
-		0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x0e, 0x16, 0x00, 0x02, 0x00, 0x02, 
-		//0x0340: .... .... .... ....
-		0x00, 0x00, 0x0e, 0x16, 0x00, 0x2c, 0x01, 0x01, 0x00, 0x00, 0x0a, 0x16, 0x1e, 0xae, 0x00, 0x00, 
-		//0x0350: .... .,.. .... ....
-		0x00, 0x00, 0x0c, 0x16, 0x14, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0b, 0x0b, 0x14, 0x00, 0x00, 0x32, 
-		//0x0360: .... .... .... ...2
-		0x14, 0x00, 0x0b, 0x0b, 0x1e, 0x00, 0x00, 0x32, 0x14, 0x00, 0x0b, 0x16, 0x14, 0x00, 0x00, 0x32, 
-		//0x0370: .... ...2 .... ...2
-		0x14, 0x00, 0x0e, 0x21, 0x28, 0x00, 0x00, 0x32, 0x14, 0x00, 0xff, 0x44, 0x52, 0x45, 0x41, 0x4d, 
-		//0x0380: ...! (..2 ...D REAM
-		0x57, 0x45, 0x42, 0x2e, 0x56, 0x39, 0x39, 0x00, 0x00, 0x01, 0x01, 0x00, 0x50, 0x55, 0x42, 0x4c, 
-		//0x0390: WEB. V99. .... PUBL
-		0x49, 0x43, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x20, 
-		//0x03a0: IC        PUBL IC  
-		0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x42, 0x4c, 0x41, 0x43, 0x4b, 0x44, 0x52, 0x41, 0x47, 0x4f, 
-		//0x03b0:    . ..BL ACKD RAGO
-		0x4e, 0x20, 0x52, 0x59, 0x41, 0x4e, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 
-		//0x03c0: N RY AN         ...
-		0x48, 0x45, 0x4e, 0x44, 0x52, 0x49, 0x58, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x4f, 0x55, 0x49, 
-		//0x03d0: HEND RIX       LOUI
-		0x53, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x53, 0x45, 0x50, 0x54, 0x49, 0x4d, 
-		//0x03e0: S       . ..SE PTIM
-		0x55, 0x53, 0x20, 0x20, 0x20, 0x20, 0x42, 0x45, 0x43, 0x4b, 0x45, 0x54, 0x54, 0x20, 0x20, 0x20, 
-		//0x03f0: US     BE CKET T   
-		0x20, 0x00, 0xff, 0xff, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-		//0x0400:  ...               
-		0x20, 0x00, 0x22, 0x52, 0x4f, 0x4f, 0x54, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 
-		//0x0410:  ."R OOT          .
-		0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x30, 0x30, 
-		//0x0420: "               .00
-		0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x0d, 0x0a, 0x0d, 0x0a, 0x24, 0x4f, 0x42, 0x4a, 0x45, 0x43, 
-		//0x0430: 00.0 0... ..$O BJEC
-		0x54, 0x20, 0x4e, 0x41, 0x4d, 0x45, 0x20, 0x4f, 0x4e, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-		//0x0440: T NA ME O NE       
-		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
-		//0x0450:                    
-		0x20, 0x20, 0x20, 0x00, 0x10, 0x12, 0x12, 0x11, 0x10, 0x10, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 
-		//0x0460:    . .... .... ....
-		0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x44, 0x3a, 0x00, 0x00, 
-		//0x0470: .... .... .... D:..
+		0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x01, 0x2c, 0x00, 0x14, 
+		//0x01b0: .... .... .... .,..
+		0x00, 0x02, 0x00, 0x01, 0x01, 0x37, 0x00, 0x00, 0x00, 0x32, 0x14, 0x00, 0x18, 0x16, 0x00, 0x4a, 
+		//0x01c0: .... .7.. .2.. ...J
+		0x00, 0x01, 0x00, 0x00, 0x18, 0x21, 0x0a, 0x4b, 0x00, 0x01, 0x00, 0x01, 0x01, 0x2c, 0x00, 0x1b, 
+		//0x01d0: .... .!.K .... .,..
+		0x00, 0x02, 0x00, 0x02, 0x01, 0x2c, 0x00, 0x60, 0x00, 0x03, 0x00, 0x04, 0x01, 0x2c, 0x00, 0x76, 
+		//0x01e0: .... .,.` .... .,.v
+		0x00, 0x02, 0x00, 0x05, 0x01, 0x2c, 0x0a, 0x00, 0x00, 0x02, 0x00, 0x00, 0x05, 0x16, 0x14, 0x35, 
+		//0x01f0: .... .,.. .... ...5
+		0x00, 0x03, 0x00, 0x00, 0x05, 0x16, 0x14, 0x28, 0x00, 0x01, 0x00, 0x02, 0x05, 0x16, 0x14, 0x32, 
+		//0x0200: .... ...( .... ...2
+		0x00, 0x01, 0x00, 0x03, 0x02, 0x0b, 0x0a, 0xc0, 0x00, 0x01, 0x00, 0x00, 0x02, 0x0b, 0x0a, 0xb6, 
+		//0x0210: .... .... .... ....
+		0x00, 0x02, 0x00, 0x01, 0x08, 0x0b, 0x0a, 0x00, 0x00, 0x02, 0x00, 0x01, 0x17, 0x00, 0x32, 0x00, 
+		//0x0220: .... .... .... ..2.
+		0x00, 0x03, 0x00, 0x00, 0x1c, 0x0b, 0x14, 0xfa, 0x00, 0x04, 0x00, 0x00, 0x17, 0x00, 0x32, 0x2b, 
+		//0x0230: .... .... .... ..2+
+		0x00, 0x02, 0x00, 0x08, 0x17, 0x0b, 0x28, 0x82, 0x00, 0x02, 0x00, 0x01, 0x17, 0x16, 0x28, 0x7a, 
+		//0x0240: .... ..(. .... ..(z
+		0x00, 0x02, 0x00, 0x02, 0x17, 0x16, 0x28, 0x69, 0x00, 0x02, 0x00, 0x03, 0x17, 0x16, 0x28, 0x51, 
+		//0x0250: .... ..(i .... ..(Q
+		0x00, 0x02, 0x00, 0x04, 0x17, 0x0b, 0x28, 0x87, 0x00, 0x02, 0x00, 0x05, 0x17, 0x16, 0x28, 0x91, 
+		//0x0260: .... ..(. .... ..(.
+		0x00, 0x02, 0x00, 0x06, 0x04, 0x16, 0x1e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x2d, 0x16, 0x1e, 0xc8, 
+		//0x0270: .... .... .... -...
+		0x00, 0x00, 0x00, 0x14, 0x2d, 0x16, 0x1e, 0x27, 0x00, 0x02, 0x00, 0x00, 0x2d, 0x16, 0x1e, 0x19, 
+		//0x0280: .... -..' .... -...
+		0x00, 0x02, 0x00, 0x00, 0x08, 0x16, 0x28, 0x20, 0x00, 0x02, 0x00, 0x00, 0x07, 0x0b, 0x14, 0x40, 
+		//0x0290: .... ..(  .... ...@
+		0x00, 0x02, 0x00, 0x00, 0x16, 0x16, 0x14, 0x52, 0x00, 0x02, 0x00, 0x00, 0x1b, 0x0b, 0x1e, 0x00, 
+		//0x02a0: .... ...R .... ....
+		0x00, 0x02, 0x00, 0x00, 0x14, 0x00, 0x1e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x0e, 0x21, 0x28, 0x15, 
+		//0x02b0: .... .... .... .!(.
+		0x00, 0x01, 0x00, 0x00, 0x1d, 0x0b, 0x0a, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x16, 0x00, 0x02, 
+		//0x02c0: .... .... .... ....
+		0x00, 0x02, 0x00, 0x00, 0x19, 0x00, 0x32, 0x04, 0x00, 0x02, 0x00, 0x00, 0x32, 0x16, 0x1e, 0x79, 
+		//0x02d0: .... ..2. .... 2..y
+		0x00, 0x02, 0x00, 0x00, 0x32, 0x16, 0x1e, 0x00, 0x00, 0x14, 0x00, 0x00, 0x34, 0x16, 0x1e, 0xc0, 
+		//0x02e0: .... 2... .... 4...
+		0x00, 0x02, 0x00, 0x00, 0x34, 0x16, 0x1e, 0xe9, 0x00, 0x02, 0x00, 0x00, 0x32, 0x16, 0x28, 0x68, 
+		//0x02f0: .... 4... .... 2.(h
+		0x00, 0x37, 0x00, 0x00, 0x35, 0x21, 0x00, 0x63, 0x00, 0x02, 0x00, 0x00, 0x32, 0x16, 0x28, 0x00, 
+		//0x0300: .7.. 5!.c .... 2.(.
+		0x00, 0x03, 0x00, 0x00, 0x32, 0x16, 0x1e, 0xa2, 0x00, 0x02, 0x00, 0x00, 0x34, 0x16, 0x1e, 0x39, 
+		//0x0310: .... 2... .... 4..9
+		0x00, 0x02, 0x00, 0x00, 0x34, 0x16, 0x1e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x36, 0x00, 0x00, 0x48, 
+		//0x0320: .... 4... .... 6..H
+		0x00, 0x03, 0x00, 0x00, 0x37, 0x2c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 
+		//0x0330: .... 7,.. .... ....
+		0x00, 0x1c, 0x00, 0x00, 0x0e, 0x16, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x0e, 0x16, 0x00, 0x2c, 
+		//0x0340: .... .... .... ...,
+		0x01, 0x01, 0x00, 0x00, 0x0a, 0x16, 0x1e, 0xae, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x16, 0x14, 0x00, 
+		//0x0350: .... .... .... ....
+		0x00, 0x01, 0x00, 0x00, 0x0b, 0x0b, 0x14, 0x00, 0x00, 0x32, 0x14, 0x00, 0x0b, 0x0b, 0x1e, 0x00, 
+		//0x0360: .... .... .2.. ....
+		0x00, 0x32, 0x14, 0x00, 0x0b, 0x16, 0x14, 0x00, 0x00, 0x32, 0x14, 0x00, 0x0e, 0x21, 0x28, 0x00, 
+		//0x0370: .2.. .... .2.. .!(.
+		0x00, 0x32, 0x14, 0x00, 0xff, 0x44, 0x52, 0x45, 0x41, 0x4d, 0x57, 0x45, 0x42, 0x2e, 0x56, 0x39, 
+		//0x0380: .2.. .DRE AMWE B.V9
+		0x39, 0x00, 0x00, 0x01, 0x01, 0x00, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x20, 0x20, 0x20, 
+		//0x0390: 9... ..PU BLIC     
+		0x20, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 
+		//0x03a0:   PU BLIC       ...
+		0x42, 0x4c, 0x41, 0x43, 0x4b, 0x44, 0x52, 0x41, 0x47, 0x4f, 0x4e, 0x20, 0x52, 0x59, 0x41, 0x4e, 
+		//0x03b0: BLAC KDRA GON  RYAN
+		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x48, 0x45, 0x4e, 0x44, 0x52, 0x49, 
+		//0x03c0:         . ..HE NDRI
+		0x58, 0x20, 0x20, 0x20, 0x20, 0x20, 0x4c, 0x4f, 0x55, 0x49, 0x53, 0x20, 0x20, 0x20, 0x20, 0x20, 
+		//0x03d0: X      LO UIS      
+		0x20, 0x00, 0x00, 0x00, 0x53, 0x45, 0x50, 0x54, 0x49, 0x4d, 0x55, 0x53, 0x20, 0x20, 0x20, 0x20, 
+		//0x03e0:  ... SEPT IMUS     
+		0x42, 0x45, 0x43, 0x4b, 0x45, 0x54, 0x54, 0x20, 0x20, 0x20, 0x20, 0x00, 0xff, 0xff, 0x20, 0x20, 
+		//0x03f0: BECK ETT     . ..  
+		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x22, 0x52, 0x4f, 0x4f, 
+		//0x0400:              . "ROO
+		0x54, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 
+		//0x0410: T          ."      
+		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x30, 0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 
+		//0x0420:         . 0000 .00.
+		0x0d, 0x0a, 0x0d, 0x0a, 0x24, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x20, 0x4e, 0x41, 0x4d, 0x45, 
+		//0x0430: .... $OBJ ECT  NAME
+		0x20, 0x4f, 0x4e, 0x45, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
+		//0x0440:  ONE               
+		0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x10, 0x12, 
+		//0x0450:                 ...
+		0x12, 0x11, 0x10, 0x10, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 
+		//0x0460: .... .... .... ....
+		0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x44, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+		//0x0470: .... ..D: .... ....
 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
 		//0x0480: .... .... .... ....
-		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 
+		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
 		//0x0490: .... .... .... ....
-		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x02, 
+		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x02, 0x04, 0x01, 0x0a, 0x09, 0x08, 0x06, 
 		//0x04a0: .... .... .... ....
-		0x04, 0x01, 0x0a, 0x09, 0x08, 0x06, 0x0b, 0x04, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+		0x0b, 0x04, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
 		//0x04b0: .... .... .... ....
 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
 		//0x04c0: .... .... .... ....
@@ -4219,9 +4219,9 @@ void DreamGenContext::__start() {
 		//0x0510: .... .... .... ....
 		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
 		//0x0520: .... .... .... ....
-		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 
+		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 
 		//0x0530: .... .... .... ....
-		0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, };
+		0x00, };
 	ds.assign(src, src + sizeof(src));
 	dreamweb(); 
 }
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index b565b4e..e530a3b 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -32,13 +32,13 @@
 
 namespace DreamGen {
 
-static const uint16 offset_money1poke = 0x042e;
-static const uint16 offset_operand1 = 0x0404;
-static const uint16 offset_openchangesize = 0x0398;
-static const uint16 offset_commandline = 0x043b;
-static const uint16 offset_rootdir = 0x0412;
-static const uint16 offset_money2poke = 0x0433;
-static const uint16 offset_keys = 0x039a;
+static const uint16 offset_money2poke = 0x042d;
+static const uint16 offset_rootdir = 0x040c;
+static const uint16 offset_openchangesize = 0x0392;
+static const uint16 offset_keys = 0x0394;
+static const uint16 offset_commandline = 0x0435;
+static const uint16 offset_money1poke = 0x0428;
+static const uint16 offset_operand1 = 0x03fe;
 static const uint16 kStartvars = 0;
 static const uint16 kProgresspoints = 1;
 static const uint16 kWatchon = 2;
@@ -272,113 +272,109 @@ static const uint16 kDumpy = 291;
 static const uint16 kWalkandexam = 293;
 static const uint16 kWalkexamtype = 294;
 static const uint16 kWalkexamnum = 295;
-static const uint16 kCursloc = 296;
-static const uint16 kCurslocx = 298;
-static const uint16 kCurslocy = 300;
-static const uint16 kCurpos = 302;
-static const uint16 kMonadx = 304;
-static const uint16 kMonady = 306;
-static const uint16 kGotfrom = 308;
-static const uint16 kMonsource = 310;
-static const uint16 kNumtodo = 312;
-static const uint16 kTimecount = 314;
-static const uint16 kCounttotimed = 316;
-static const uint16 kTimedseg = 318;
-static const uint16 kTimedoffset = 320;
-static const uint16 kTimedy = 322;
-static const uint16 kTimedx = 323;
-static const uint16 kNeedtodumptimed = 324;
-static const uint16 kLoadingorsave = 325;
-static const uint16 kCurrentslot = 326;
-static const uint16 kCursorpos = 327;
-static const uint16 kColourpos = 328;
-static const uint16 kFadedirection = 329;
-static const uint16 kNumtofade = 330;
-static const uint16 kFadecount = 331;
-static const uint16 kAddtogreen = 332;
-static const uint16 kAddtored = 333;
-static const uint16 kAddtoblue = 334;
-static const uint16 kLastsoundreel = 335;
-static const uint16 kSpeechloaded = 337;
-static const uint16 kSpeechlength = 338;
-static const uint16 kVolume = 340;
-static const uint16 kVolumeto = 341;
-static const uint16 kVolumedirection = 342;
-static const uint16 kVolumecount = 343;
-static const uint16 kPlayblock = 344;
-static const uint16 kWongame = 345;
-static const uint16 kLasthardkey = 346;
-static const uint16 kBufferin = 347;
-static const uint16 kBufferout = 349;
-static const uint16 kExtras = 351;
-static const uint16 kWorkspace = 353;
-static const uint16 kMapstore = 355;
-static const uint16 kCharset1 = 357;
-static const uint16 kBuffers = 359;
-static const uint16 kMainsprites = 361;
-static const uint16 kBackdrop = 363;
-static const uint16 kMapdata = 365;
-static const uint16 kSounddata = 367;
-static const uint16 kSounddata2 = 369;
-static const uint16 kRecordspace = 371;
-static const uint16 kFreedat = 373;
-static const uint16 kSetdat = 375;
-static const uint16 kReel1 = 377;
-static const uint16 kReel2 = 379;
-static const uint16 kReel3 = 381;
-static const uint16 kRoomdesc = 383;
-static const uint16 kFreedesc = 385;
-static const uint16 kSetdesc = 387;
-static const uint16 kBlockdesc = 389;
-static const uint16 kSetframes = 391;
-static const uint16 kFreeframes = 393;
-static const uint16 kPeople = 395;
-static const uint16 kReels = 397;
-static const uint16 kCommandtext = 399;
-static const uint16 kPuzzletext = 401;
-static const uint16 kTraveltext = 403;
-static const uint16 kTempgraphics = 405;
-static const uint16 kTempgraphics2 = 407;
-static const uint16 kTempgraphics3 = 409;
-static const uint16 kTempsprites = 411;
-static const uint16 kTextfile1 = 413;
-static const uint16 kTextfile2 = 415;
-static const uint16 kTextfile3 = 417;
-static const uint16 kBlinkframe = 419;
-static const uint16 kBlinkcount = 420;
-static const uint16 kReasseschanges = 421;
-static const uint16 kPointerspath = 422;
-static const uint16 kManspath = 423;
-static const uint16 kPointerfirstpath = 424;
-static const uint16 kFinaldest = 425;
-static const uint16 kDestination = 426;
-static const uint16 kLinestartx = 427;
-static const uint16 kLinestarty = 429;
-static const uint16 kLineendx = 431;
-static const uint16 kLineendy = 433;
-static const uint16 kLinepointer = 435;
-static const uint16 kLinedirection = 436;
-static const uint16 kLinelength = 437;
-static const uint16 kLiftsoundcount = 438;
-static const uint16 kCh0blockstocopy = 439;
-static const uint16 kCh0playing = 441;
-static const uint16 kCh0repeat = 442;
-static const uint16 kCh1playing = 443;
-static const uint16 kCh1blockstocopy = 444;
-static const uint16 kSoundbufferwrite = 446;
-static const uint16 kCurrentsample = 448;
-static const uint16 kRoomssample = 449;
-static const uint16 kReelroutines = 450;
-static const uint16 kBasicsample = 907;
-static const uint16 kCurrentfile = 1056;
-static const uint16 kRoomscango = 1180;
-static const uint16 kRoompics = 1196;
-static const uint16 kOplist = 1211;
-static const uint16 kInputline = 1214;
-static const uint16 kPresslist = 1342;
-static const uint16 kQuitrequested = 1348;
-static const uint16 kSubtitles = 1349;
-static const uint16 kForeignrelease = 1350;
+static const uint16 kCurslocx = 296;
+static const uint16 kCurslocy = 298;
+static const uint16 kCurpos = 300;
+static const uint16 kMonadx = 302;
+static const uint16 kMonady = 304;
+static const uint16 kMonsource = 306;
+static const uint16 kNumtodo = 308;
+static const uint16 kTimecount = 310;
+static const uint16 kCounttotimed = 312;
+static const uint16 kTimedseg = 314;
+static const uint16 kTimedoffset = 316;
+static const uint16 kTimedy = 318;
+static const uint16 kTimedx = 319;
+static const uint16 kNeedtodumptimed = 320;
+static const uint16 kLoadingorsave = 321;
+static const uint16 kCurrentslot = 322;
+static const uint16 kCursorpos = 323;
+static const uint16 kColourpos = 324;
+static const uint16 kFadedirection = 325;
+static const uint16 kNumtofade = 326;
+static const uint16 kFadecount = 327;
+static const uint16 kAddtogreen = 328;
+static const uint16 kAddtored = 329;
+static const uint16 kAddtoblue = 330;
+static const uint16 kLastsoundreel = 331;
+static const uint16 kSpeechloaded = 333;
+static const uint16 kSpeechlength = 334;
+static const uint16 kVolume = 336;
+static const uint16 kVolumeto = 337;
+static const uint16 kVolumedirection = 338;
+static const uint16 kVolumecount = 339;
+static const uint16 kWongame = 340;
+static const uint16 kLasthardkey = 341;
+static const uint16 kBufferin = 342;
+static const uint16 kBufferout = 344;
+static const uint16 kExtras = 346;
+static const uint16 kWorkspace = 348;
+static const uint16 kMapstore = 350;
+static const uint16 kCharset1 = 352;
+static const uint16 kBuffers = 354;
+static const uint16 kMainsprites = 356;
+static const uint16 kBackdrop = 358;
+static const uint16 kMapdata = 360;
+static const uint16 kSounddata = 362;
+static const uint16 kSounddata2 = 364;
+static const uint16 kRecordspace = 366;
+static const uint16 kFreedat = 368;
+static const uint16 kSetdat = 370;
+static const uint16 kReel1 = 372;
+static const uint16 kReel2 = 374;
+static const uint16 kReel3 = 376;
+static const uint16 kRoomdesc = 378;
+static const uint16 kFreedesc = 380;
+static const uint16 kSetdesc = 382;
+static const uint16 kBlockdesc = 384;
+static const uint16 kSetframes = 386;
+static const uint16 kFreeframes = 388;
+static const uint16 kPeople = 390;
+static const uint16 kReels = 392;
+static const uint16 kCommandtext = 394;
+static const uint16 kPuzzletext = 396;
+static const uint16 kTraveltext = 398;
+static const uint16 kTempgraphics = 400;
+static const uint16 kTempgraphics2 = 402;
+static const uint16 kTempgraphics3 = 404;
+static const uint16 kTempsprites = 406;
+static const uint16 kTextfile1 = 408;
+static const uint16 kTextfile2 = 410;
+static const uint16 kTextfile3 = 412;
+static const uint16 kBlinkframe = 414;
+static const uint16 kBlinkcount = 415;
+static const uint16 kReasseschanges = 416;
+static const uint16 kPointerspath = 417;
+static const uint16 kManspath = 418;
+static const uint16 kPointerfirstpath = 419;
+static const uint16 kFinaldest = 420;
+static const uint16 kDestination = 421;
+static const uint16 kLinestartx = 422;
+static const uint16 kLinestarty = 424;
+static const uint16 kLineendx = 426;
+static const uint16 kLineendy = 428;
+static const uint16 kLinepointer = 430;
+static const uint16 kLinedirection = 431;
+static const uint16 kLinelength = 432;
+static const uint16 kCh0blockstocopy = 433;
+static const uint16 kCh0playing = 435;
+static const uint16 kCh0repeat = 436;
+static const uint16 kCh1playing = 437;
+static const uint16 kCh1blockstocopy = 438;
+static const uint16 kSoundbufferwrite = 440;
+static const uint16 kCurrentsample = 442;
+static const uint16 kRoomssample = 443;
+static const uint16 kReelroutines = 444;
+static const uint16 kBasicsample = 901;
+static const uint16 kCurrentfile = 1050;
+static const uint16 kRoomscango = 1174;
+static const uint16 kRoompics = 1190;
+static const uint16 kOplist = 1205;
+static const uint16 kInputline = 1208;
+static const uint16 kPresslist = 1336;
+static const uint16 kQuitrequested = 1342;
+static const uint16 kSubtitles = 1343;
+static const uint16 kForeignrelease = 1344;
 static const uint16 kBlocktextdat = (0);
 static const uint16 kPersonframes = (0);
 static const uint16 kDebuglevel1 = (0);
@@ -417,8 +413,8 @@ static const uint16 kListofchanges = (0+(228*13)+32+60+(32*32)+(11*10*3)+768+768
 static const 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));
 static const 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));
 static const 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));
-static const 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)+907-450);
-static const 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)+907-450+68-0);
+static const 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)+901-444);
+static const 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)+901-444+68-0);
 static const uint16 kReellist = (0+(36*144));
 static const uint16 kIntext = (0+(38*2));
 static const uint16 kLengthofmap = (0+(66*60));
@@ -469,7 +465,7 @@ static const uint16 kKeypady = (72);
 static const uint16 kZoomx = (8);
 static const uint16 kInventx = (80);
 static const uint16 kMenux = (80+40);
-static const uint16 kLenofreelrouts = (907-450);
+static const uint16 kLenofreelrouts = (901-444);
 static const uint16 kHeaderlen = (96);
 
 


Commit: 93bf275f4c9ef168ceab23a07a1219d2c78b65ec
    https://github.com/scummvm/scummvm/commit/93bf275f4c9ef168ceab23a07a1219d2c78b65ec
Author: Filippos Karapetis (md5 at scummvm.org)
Date: 2011-12-15T02:15:22-08:00

Commit Message:
DREAMWEB: Port 'helicopter' to C++

Changed paths:
    devtools/tasmrecover/tasm-recover
    engines/dreamweb/dreamgen.cpp
    engines/dreamweb/dreamgen.h
    engines/dreamweb/people.cpp
    engines/dreamweb/stubs.h



diff --git a/devtools/tasmrecover/tasm-recover b/devtools/tasmrecover/tasm-recover
index fa480ea..86414dd 100755
--- a/devtools/tasmrecover/tasm-recover
+++ b/devtools/tasmrecover/tasm-recover
@@ -470,6 +470,7 @@ generator = cpp(context, "DreamGen", blacklist = [
 	'hangonpq',
 	'hangonw',
 	'heavy',
+	'helicopter',
 	'hotelbell',
 	'hotelcontrol',
 	'initialinv',
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp
index dfeda18..2ee3d51 100644
--- a/engines/dreamweb/dreamgen.cpp
+++ b/engines/dreamweb/dreamgen.cpp
@@ -26,71 +26,6 @@
 
 namespace DreamGen {
 
-void DreamGenContext::helicopter() {
-	STACK_CHECK;
-	ax = es.word(bx+3);
-	_cmp(ax, 203);
-	if (flags.z())
-		goto heliwon;
-	checkSpeed();
-	if (!flags.z())
-		goto helispeed;
-	ax = es.word(bx+3);
-	_inc(ax);
-	_cmp(ax, 53);
-	if (!flags.z())
-		goto notbeforehdead;
-	_inc(data.byte(kCombatcount));
-	_cmp(data.byte(kCombatcount), 8);
-	if (flags.c())
-		goto waitabit;
-	data.byte(kMandead) = 2;
-waitabit:
-	ax = 49;
-	goto gotheliframe;
-notbeforehdead:
-	_cmp(ax, 9);
-	if (!flags.z())
-		goto gotheliframe;
-	_dec(ax);
-	_cmp(data.byte(kLastweapon), 1);
-	if (!flags.z())
-		goto notgunonheli;
-	data.byte(kLastweapon) = -1;
-	ax = 55;
-	goto gotheliframe;
-notgunonheli:
-	ax = 5;
-	_inc(data.byte(kCombatcount));
-	_cmp(data.byte(kCombatcount), 20);
-	if (!flags.z())
-		goto gotheliframe;
-	data.byte(kCombatcount) = 0;
-	ax = 9;
-gotheliframe:
-	es.word(bx+3) = ax;
-helispeed:
-	showGameReel();
-	al = data.byte(kMapx);
-	es.byte(bx+1) = al;
-	ax = es.word(bx+3);
-	_cmp(ax, 9);
-	if (!flags.c())
-		goto notwaitingheli;
-	_cmp(data.byte(kCombatcount), 7);
-	if (flags.c())
-		goto notwaitingheli;
-	data.byte(kPointermode) = 2;
-	data.word(kWatchingtime) = 0;
-	return;
-notwaitingheli:
-	data.byte(kPointermode) = 0;
-	data.word(kWatchingtime) = 2;
-	return;
-heliwon:
-	data.byte(kPointermode) = 0;
-}
-
 void DreamGenContext::mugger() {
 	STACK_CHECK;
 	ax = es.word(bx+3);
diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h
index e530a3b..582caa7 100644
--- a/engines/dreamweb/dreamgen.h
+++ b/engines/dreamweb/dreamgen.h
@@ -530,7 +530,6 @@ public:
 	void findAllOpen();
 	void showSlots();
 	void deleteExObject();
-	void helicopter();
 	void getEitherAd();
 	void setPickup();
 	void dropObject();
diff --git a/engines/dreamweb/people.cpp b/engines/dreamweb/people.cpp
index 99a83f4..e060df9 100644
--- a/engines/dreamweb/people.cpp
+++ b/engines/dreamweb/people.cpp
@@ -42,7 +42,7 @@ static void (DreamGenContext::*reelCallbacks[57])() = {
 	NULL, &DreamGenContext::poolGuard,
 	NULL, &DreamGenContext::businessMan,
 	NULL, NULL,
-	&DreamGenContext::mugger, &DreamGenContext::helicopter,
+	&DreamGenContext::mugger, NULL,
 	NULL, NULL,
 	NULL, NULL,
 	NULL, NULL,
@@ -74,7 +74,7 @@ static void (DreamGenContext::*reelCallbacksCPP[57])(ReelRoutine &) = {
 	&DreamGenContext::copper, /*&DreamGenContext::poolGuard*/NULL,
 	&DreamGenContext::rockstar, /*&DreamGenContext::businessMan*/NULL,
 	&DreamGenContext::train, &DreamGenContext::genericPerson /*aide*/,
-	/*&DreamGenContext::mugger*/NULL, /*&DreamGenContext::helicopter*/NULL,
+	/*&DreamGenContext::mugger*/NULL, &DreamGenContext::helicopter,
 	&DreamGenContext::introMagic1, &DreamGenContext::introMusic,
 	&DreamGenContext::introMagic2, &DreamGenContext::candles2,
 	&DreamGenContext::gates, &DreamGenContext::introMagic3,
@@ -859,4 +859,52 @@ void DreamGenContext::heavy(ReelRoutine &routine) {
 	addToPeopleList(&routine);
 }
 
+void DreamGenContext::helicopter(ReelRoutine &routine) {
+	if (routine.reelPointer() == 203) {
+		// Won helicopter
+		data.byte(kPointermode) = 0;
+		return;
+	}
+
+	if (checkSpeed(routine)) {
+		uint16 nextReelPointer = routine.reelPointer() + 1;
+		if (nextReelPointer == 53) {
+			// Before killing helicopter
+			data.byte(kCombatcount)++;
+			if (data.byte(kCombatcount) != 8)
+				data.byte(kMandead) = 2;
+			nextReelPointer = 49;
+		} else if (nextReelPointer == 9) {
+			nextReelPointer--;
+			if (data.byte(kLastweapon) == 1) {
+				data.byte(kLastweapon) = (byte)-1;
+				nextReelPointer = 55;
+			} else {
+				nextReelPointer = 5;
+				data.byte(kCombatcount)++;
+				if (data.byte(kCombatcount) == 20) {
+					data.byte(kCombatcount) = 0;
+					nextReelPointer = 9;
+				}
+			}
+		} else {
+			// Not waiting helicopter
+			data.byte(kPointermode) = 0;
+			data.word(kWatchingtime) = 2;
+		}
+
+		routine.setReelPointer(nextReelPointer);
+	}
+
+	showGameReel(&routine);
+	routine.mapX = data.byte(kMapx);
+	if (routine.reelPointer() == 9 && data.byte(kCombatcount) != 7) {
+		data.byte(kPointermode) = 2;
+		data.word(kWatchingtime) = 0;
+	} else {
+		data.byte(kPointermode) = 0;
+		data.word(kWatchingtime) = 2;
+	}
+}
+
 } // End of namespace DreamGen
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 3413c5e..8218a1a 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -418,6 +418,7 @@
 	void receptionist(ReelRoutine &routine);
 	void bartender(ReelRoutine &routine);
 	void heavy(ReelRoutine &routine);
+	void helicopter(ReelRoutine &routine);
 	void singleKey(uint8 key, uint16 x, uint16 y);
 	void loadSaveBox();
 	void loadKeypad();






More information about the Scummvm-git-logs mailing list