diff options
Diffstat (limited to 'scumm')
| -rw-r--r-- | scumm/intern.h | 2 | ||||
| -rw-r--r-- | scumm/script_v72he.cpp | 38 | ||||
| -rw-r--r-- | scumm/script_v80he.cpp | 2 | ||||
| -rw-r--r-- | scumm/script_v90he.cpp | 2 | 
4 files changed, 36 insertions, 8 deletions
| diff --git a/scumm/intern.h b/scumm/intern.h index d22af623f6..292f03e403 100644 --- a/scumm/intern.h +++ b/scumm/intern.h @@ -773,7 +773,7 @@ protected:  	void o72_unknownF4();  	void o72_unknownF5();  	void o72_unknownF6(); -	void o72_unknownF8(); +	void o72_getResourceSize();  	void o72_setFilePath();  	void o72_unknownFA();  }; diff --git a/scumm/script_v72he.cpp b/scumm/script_v72he.cpp index 7f6c4df301..a31c8ae089 100644 --- a/scumm/script_v72he.cpp +++ b/scumm/script_v72he.cpp @@ -355,7 +355,7 @@ void ScummEngine_v72he::setupOpcodes() {  		OPCODE(o72_unknownF6),  		OPCODE(o6_invalid),  		/* F8 */ -		OPCODE(o72_unknownF8), +		OPCODE(o72_getResourceSize),  		OPCODE(o72_setFilePath),  		OPCODE(o72_unknownFA),  		OPCODE(o70_polygonOps), @@ -2411,12 +2411,40 @@ void ScummEngine_v72he::o72_unknownF6() {  	debug(1,"stub o72_unknownF6");  } -void ScummEngine_v72he::o72_unknownF8() { -	int id = pop(); +void ScummEngine_v72he::o72_getResourceSize() { +	int size, type; + +	int idx = pop();  	byte subOp = fetchScriptByte(); -	push(10); -	debug(1,"stub o72_unknownF8: subOp %d, id %d", subOp, id); +	switch (subOp) { +	case 13: +		if (idx > _numSounds) { +			// TODO Music resource size +			push(100); +			return; +		} +		type = rtSound; +		break; +	case 14: +		type = rtRoomImage; +		break; +	case 15: +		type = rtImage; +		break; +	case 16: +		type = rtCostume; +		break; +	case 17: +		type = rtScript; +		break; +	default: +		error("o72_getResourceSize: default type %d", subOp); +	} + +	const byte *ptr = getResourceAddress(type, idx); +	size = READ_BE_UINT32(ptr + 4) - 8;	 +	push(size);  }  void ScummEngine_v72he::o72_setFilePath() { diff --git a/scumm/script_v80he.cpp b/scumm/script_v80he.cpp index 11ad121930..6c83c124b5 100644 --- a/scumm/script_v80he.cpp +++ b/scumm/script_v80he.cpp @@ -354,7 +354,7 @@ void ScummEngine_v80he::setupOpcodes() {  		OPCODE(o72_unknownF6),  		OPCODE(o6_invalid),  		/* F8 */ -		OPCODE(o72_unknownF8), +		OPCODE(o72_getResourceSize),  		OPCODE(o72_setFilePath),  		OPCODE(o72_unknownFA),  		OPCODE(o70_polygonOps), diff --git a/scumm/script_v90he.cpp b/scumm/script_v90he.cpp index 9fdba4b9f2..6557a04897 100644 --- a/scumm/script_v90he.cpp +++ b/scumm/script_v90he.cpp @@ -354,7 +354,7 @@ void ScummEngine_v90he::setupOpcodes() {  		OPCODE(o72_unknownF6),  		OPCODE(o6_invalid),  		/* F8 */ -		OPCODE(o72_unknownF8), +		OPCODE(o72_getResourceSize),  		OPCODE(o72_setFilePath),  		OPCODE(o72_unknownFA),  		OPCODE(o70_polygonOps), | 
