diff options
| author | Max Horn | 2002-12-23 18:56:43 +0000 | 
|---|---|---|
| committer | Max Horn | 2002-12-23 18:56:43 +0000 | 
| commit | 897fc9a91b48c2533ad2121415528a4ee802b653 (patch) | |
| tree | 1490bdd7ae9562e083ed1037a895e37e5a2a9ff7 | |
| parent | 6f5a18228dd9024ee13645710222abdebcc61325 (diff) | |
| download | scummvm-rg350-897fc9a91b48c2533ad2121415528a4ee802b653.tar.gz scummvm-rg350-897fc9a91b48c2533ad2121415528a4ee802b653.tar.bz2 scummvm-rg350-897fc9a91b48c2533ad2121415528a4ee802b653.zip | |
and more V8. Now we again hit the charset limit, but this time caused by the script itself :-)
svn-id: r6077
| -rw-r--r-- | scumm/script.cpp | 11 | ||||
| -rw-r--r-- | scumm/script_v6.cpp | 11 | ||||
| -rw-r--r-- | scumm/script_v8.cpp | 42 | 
3 files changed, 50 insertions, 14 deletions
| diff --git a/scumm/script.cpp b/scumm/script.cpp index a70a5b81c7..d21b0b8797 100644 --- a/scumm/script.cpp +++ b/scumm/script.cpp @@ -1063,17 +1063,6 @@ int Scumm::getArrayId()  	return -1;  } -void Scumm::arrayop_1(int a, byte *ptr) -{ -	ArrayHeader *ah; -	int r; -	int len = getStringLen(ptr); - -	r = defineArray(a, 4, 0, len); -	ah = (ArrayHeader *)getResourceAddress(rtString, r); -	copyString(ah->data, ptr, len); -} -  void Scumm::copyString(byte *dst, byte *src, int len)  {  	if (!src) { diff --git a/scumm/script_v6.cpp b/scumm/script_v6.cpp index 60e05252e4..6cd1f16df1 100644 --- a/scumm/script_v6.cpp +++ b/scumm/script_v6.cpp @@ -1924,6 +1924,17 @@ void Scumm_v6::o6_getVerbEntrypoint()  	push(getVerbEntrypoint(v, e));  } +void Scumm::arrayop_1(int a, byte *ptr) +{ +	ArrayHeader *ah; +	int r; +	int len = getStringLen(ptr); + +	r = defineArray(a, 4, 0, len); +	ah = (ArrayHeader *)getResourceAddress(rtString, r); +	copyString(ah->data, ptr, len); +} +  void Scumm_v6::o6_arrayOps()  {  	int a, b, c, d, num; diff --git a/scumm/script_v8.cpp b/scumm/script_v8.cpp index 36b28a6cac..d98c639ea6 100644 --- a/scumm/script_v8.cpp +++ b/scumm/script_v8.cpp @@ -598,8 +598,21 @@ void Scumm_v8::o8_arrayOps()  	switch (subOp) {  	case 0x14:		// SO_ASSIGN_STRING +		{ +		int idx = pop(); +		ArrayHeader *ah; +		int r; +		int len = getStringLen(NULL); +	 +		r = defineArray(array, 4, 0, len); +		ah = (ArrayHeader *)getResourceAddress(rtString, r); +		copyString(ah->data + idx, NULL, len); +		} +		break;  	case 0x15:		// SO_ASSIGN_SCUMMVAR_LIST +		// TODO  	case 0x16:		// SO_ASSIGN_2DIM_LIST +		// TODO  	default:  		error("o8_arrayOps: default case %d (array %d)", subOp, array);  	} @@ -764,13 +777,22 @@ void Scumm_v8::o8_roomOps()  {  	// TODO  	byte subOp = fetchScriptByte(); +	int a; +	  	switch (subOp) {  	case 0x52:		// SO_ROOM_PALETTE Set room palette -//	case 0x53:		// SO_339 -//	case 0x54:		// SO_340  	case 0x55:		// SO_ROOM_INTENSITY Set room intensity -//	case 0x56:		// SO_342 +		error("o8_roomOps: default case %d", subOp); +		break;  	case 0x57:		// SO_ROOM_FADE Fade room +		a = pop(); +		if (a) { +			_switchRoomEffect = (byte)(a); +			_switchRoomEffect2 = (byte)(a >> 8); +		} else { +			fadeIn(_newEffect); +		} +		break;  	case 0x58:		// SO_ROOM_RGB_INTENSITY Set room color intensity  	case 0x59:		// SO_ROOM_TRANSFORM Transform room  	case 0x5A:		// SO_ROOM_CYCLE_SPEED Set palette cycling speed @@ -881,10 +903,24 @@ void Scumm_v8::o8_verbOps()  void Scumm_v8::o8_system()  { +	// TODO +	byte subOp = fetchScriptByte(); +	switch (subOp) { +	default: +		error("o8_system: default case %d", subOp); +	}  }  void Scumm_v8::o8_kludge()  { +	// TODO +	int16 args[30]; +	getStackList(args, sizeof(args) / sizeof(args[0])); + +	switch (args[0]) { +	default: +		warning("o8_kludge: default case %d", args[0]); +	}  }  /* | 
