diff options
| -rw-r--r-- | engines/agos/agos.h | 1 | ||||
| -rw-r--r-- | engines/agos/items.cpp | 2 | ||||
| -rw-r--r-- | engines/agos/vga.cpp | 54 | 
3 files changed, 56 insertions, 1 deletions
diff --git a/engines/agos/agos.h b/engines/agos/agos.h index 876bc5d1da..8f0aba39c2 100644 --- a/engines/agos/agos.h +++ b/engines/agos/agos.h @@ -1127,6 +1127,7 @@ protected:  	void startOverlayAnims();  	void startAnOverlayAnim(); +	void startBlock(uint windowNum, uint vga_res, uint vga_sprite_id, uint x, uint y, uint palette);  	bool itemIsSiblingOf(uint16 val);  	bool itemIsParentOf(uint16 a, uint16 b); diff --git a/engines/agos/items.cpp b/engines/agos/items.cpp index 49699d4c02..95925669c6 100644 --- a/engines/agos/items.cpp +++ b/engines/agos/items.cpp @@ -2511,7 +2511,7 @@ void AGOSEngine::o4_animate() {  	uint palette = getVarOrWord();  	if (getBitFlag(96)) { -		printf("Start Block\n"); +		startBlock(windowNum, vga_res, vgaSpriteId, x, y, palette);  	} else {  		loadSprite(windowNum, vga_res, vgaSpriteId, x, y, palette);  	} diff --git a/engines/agos/vga.cpp b/engines/agos/vga.cpp index 059228d35a..83846ef556 100644 --- a/engines/agos/vga.cpp +++ b/engines/agos/vga.cpp @@ -2927,4 +2927,58 @@ void AGOSEngine::startAnOverlayAnim() {  	_vgaCurZoneNum = file;  } +void AGOSEngine::startBlock(uint windowNum, uint zoneNum, uint vgaSpriteId, uint x, uint y, uint priority) { +	VgaSprite *vsp = _vgaSprites; +	const byte *vcPtrOrg; +	uint16 tmp; +	uint i; + +	while (vsp->id != 0) +		vsp++; + +	_variableArray[201] = vgaSpriteId; + +	if (getBitFlag(95)) { +		_droppingBlockAnim = vgaSpriteId; +		_droppingBlockX = _variableArray[202]; +		_droppingBlockY = _variableArray[203]; +		_droppingBlockZ = _variableArray[204]; +		_droppingBlockLength = windowNum; +		if (windowNum == 1) { +			priority += 9; +			y += 10; +			x += 15; +		} +		_droppingBlockCount = 4; +		_droppingBlockType = 4; +	} + +	for (i = 0; i < windowNum; i++) { +		vsp->palette = 0; +		vsp->flags = 0; +		vsp->priority = 0; +		vsp->windowNum = 4; +		vsp->zoneNum = 60; +		vsp->y = y; +		vsp->x = x; +		vsp->id = vgaSpriteId; +		vsp->image = zoneNum; + +		_vgaCurSpriteId = vgaSpriteId; +		_vgaCurZoneNum = 60; + +		tmp = to16Wrapper(priority); + +		vcPtrOrg = _vcPtr; +		_vcPtr = (byte *)&tmp; +		vc23_setSpritePriority(); +		_vcPtr = vcPtrOrg; +		 +		vgaSpriteId++; +		x += 15; +		y += 10; +		priority += 8; +	} +} +  } // End of namespace AGOS  | 
