// ----------------------------------
// RSDK Project: Sonic 1/Sonic 2
// Script Description: Special BG Object
// Script Author: Christan Whitehead/Simon Thomley
// Unpacked by Rubberduckycooly's script unpacker
// ----------------------------------

//-------Aliases-------//
private alias 3 : TYPE_SPECIALBG


// Static Values

// Tables

event ObjectDraw
	temp2 = object[0].value8
	temp2 += 64
	temp2 &= 511
	temp2 >>= 7
	switch temp2
	case 0
		temp0 = object[0].value8
		temp1 = object[0].value7
		FlipSign(temp1)
		object.rotation = object[0].value9
		break
	case 1
		temp0 = object[0].value8
		temp1 = object[0].value9
		FlipSign(temp1)
		object.rotation = object[0].value7
		FlipSign(object.rotation)
		break
	case 2
		temp0 = object[0].value8
		temp1 = object[0].value7
		object.rotation = object[0].value9
		FlipSign(object.rotation)
		break
	case 3
		temp0 = object[0].value8
		temp1 = object[0].value9
		object.rotation = object[0].value7
		FlipSign(object.rotation)
		break
	end switch
	temp0 <<= 1
	temp0 &= 255
	temp1 <<= 1
	temp1 &= 255
	object.rotation &= 511
	temp2 = object[0].value7
	temp2 += object[0].value8
	temp2 += object[0].value9
	temp2 &= 127
	if temp2 == 0
		Sin256(object.value1, object.angle)
		if stage.state == STAGE_RUNNING
			object.angle += 8
			object.angle &= 255
		end if
	else
		object.angle = 0
		object.value1 >>= 1
	end if
	temp2 = object.value1
	temp2 *= 3
	temp2 >>= 9
	temp1 += temp2
	if object.rotation == 0
		temp0 += screen.xcenter
		temp1 += screen.ycenter
		DrawSpriteScreenXY(0, temp0, temp1)
		DrawSpriteScreenXY(1, temp0, temp1)
		DrawSpriteScreenXY(2, temp0, temp1)
		DrawSpriteScreenXY(3, temp0, temp1)
		DrawSpriteScreenXY(4, temp0, temp1)
		DrawSpriteScreenXY(5, temp0, temp1)
		DrawSpriteScreenXY(6, temp0, temp1)
		DrawSpriteScreenXY(7, temp0, temp1)
		DrawSpriteScreenXY(8, temp0, temp1)
		DrawSpriteScreenXY(9, temp0, temp1)
		DrawSpriteScreenXY(10, temp0, temp1)
		DrawSpriteScreenXY(11, temp0, temp1)
	else
		temp0 += screen.xcenter
		temp1 += screen.ycenter
		DrawSpriteScreenFX(1, FX_ROTATE, temp0, temp1)
		DrawSpriteScreenFX(2, FX_ROTATE, temp0, temp1)
		DrawSpriteScreenFX(3, FX_ROTATE, temp0, temp1)
		DrawSpriteScreenFX(5, FX_ROTATE, temp0, temp1)
		DrawSpriteScreenFX(6, FX_ROTATE, temp0, temp1)
		DrawSpriteScreenFX(7, FX_ROTATE, temp0, temp1)
		DrawSpriteScreenFX(8, FX_ROTATE, temp0, temp1)
		DrawSpriteScreenFX(9, FX_ROTATE, temp0, temp1)
		DrawSpriteScreenFX(10, FX_ROTATE, temp0, temp1)
	end if
end event


event ObjectStartup
	LoadSpriteSheet("Special/Background.gif")
	SpriteFrame(-640, -128, 256, 256, 0, 0)
	SpriteFrame(-128, -128, 256, 256, 0, 0)
	SpriteFrame(-384, -128, 256, 256, 0, 0)
	SpriteFrame(128, -128, 256, 256, 0, 0)
	SpriteFrame(-640, -384, 256, 256, 0, 0)
	SpriteFrame(-128, -384, 256, 256, 0, 0)
	SpriteFrame(-384, -384, 256, 256, 0, 0)
	SpriteFrame(128, -384, 256, 256, 0, 0)
	SpriteFrame(-128, -128, 256, 256, 0, 0)
	SpriteFrame(-128, 128, 256, 256, 0, 0)
	SpriteFrame(-384, 128, 256, 256, 0, 0)
	SpriteFrame(128, 128, 256, 256, 0, 0)
	object[1].type = TypeName[Special BG]
	object[1].priority = PRIORITY_ACTIVE
	object[1].drawOrder = 0
end event

event RSDKDraw
	DrawSprite(0)
end event

event RSDKLoad
	LoadSpriteSheet("Global/Display.gif")
	SpriteFrame(-16, -16, 32, 32, 1, 143)
end event
