Try this. Im using A7.77 commercial, but if blitpart works for you, this function will do the job
Code:
BMAP*	bmap_create_blitpart(BMAP* SourceBMAP, var x_map, var y_map, var x_size, var y_size)
{	if(SourceBMAP==NULL)		return((BMAP*)NULL);
	VECTOR tmpV0, tmpV1;
	BMAP*	TargetBMAP = bmap_createblack(x_size,y_size,24);
	//bmap_fill(TargetBMAP, vector(128,128,128), 100);
	vec_set(tmpV0, vector(x_map*x_size,y_map*y_size,0));
	vec_set(tmpV1, vector(x_size,y_size,0));
	bmap_blitpart(TargetBMAP, SourceBMAP, NULL, NULL, tmpV0, tmpV1);   
	return(TargetBMAP);
}

Example:
BMAP* ThisSkin = bmap_create_blitpart(SourceBMAP, startpos_x, startpos_y, target_width, target_height);

NOTE : this only creates bmaps with "power of two" sizes. The data it retrieves is correct though.



"There is no fate but what WE make." - CEO Cyberdyne Systems Corp.
A8.30.5 Commercial