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

//-------Aliases-------//
private alias 4 : TYPE_KLOGO
reserve function KLogo_DrawAbsolute

// Tables

function KLogo_DrawAbsolute
	if object.value31 < 34
		object.value31 = 34
	else
		if object.value31 < 55
			object.value30++
			object.value30 %= 2
		else
			object.value30++
			object.value30 %= 6
		end if
		
		if object.value30 == 0
			object.value31++
		end if
	end if
	
	if object.value31 >= 90
		object.value31 = 55
	end if
	temp0 = object.value31

	if temp0 > 66
		temp0 = 66
	end if
	temp0 -= 17
	
	temp1 = screen.ycenter
	temp1 += 85
	
	DrawSpriteScreenXY(temp0, screen.xcenter, temp1)
end function

event ObjectMain
	if inputPress.start == 1
		if object.state < 11
			object.state += 20
			temp1 = object.entityPos
			temp1++
			ResetObjectEntity(temp1, TypeName[Blank Object], 0, 0, 0)
		end if
	end if


	if options.gameMode == 0
		if object.state > 2
			CallFunction(Sega_CheckButtonCheat)
		end if
	end if
	switch object.state
	case 0
		if object.value0 == 30
			object[+1].type = TypeName[Twinkle Stars]
			object[+1].priority = PRIORITY_ACTIVE
		end if
		if object.value0 < 60
			object.value0++
		else
			object.value0 = 0
			object.alpha = 256
			stage.player2Enabled = 0
			object.state++
		end if
		break
	case 1
		if object.alpha > 0
			object.alpha -= 8
		else
			object.state++
		end if
		break
	case 2
		if object.value0 < 32
			object.value0++
		else
			object.value0 = 0
			object.value1 = -0x2C0000
			object.value1 += object.xpos
			object.value2 = -0x160000
			object.value2 += object.ypos
			object.frame = 2
			PlayMusic(0)
			object.state++
		end if
		break
	case 3
		object.value2 -= 0x80000
		if object.value2 <= 0x1A0000
			object.state++
		end if
		if object.value2 == 0x3A0000
			object.frame++
			object.value5 = 8
			object.value6 = -0x2C0000
			object.value6 += object.xpos
			object.value7 = -0x2E0000
			object.value7 += object.ypos
		end if
		break
	case 4
		object.value0++
		if object.value0 == 8
			object.frame++
			if object.frame >= 7
				object.frame = 7
				object.state++
			end if
			object.value0 = 0
		end if
		break
	case 5
		object.value7 -= 0x10000
		object.value0++
		if object.value0 == 4
			object.value0 = 0
			object.state++
		end if
		break
	case 6
		object.value0++
		if object.value0 == 4
			object.value0 = 0
			object.value5++
			if object.value5 == 13
				object.value5 = 8
				object.state++
			end if
		end if
		break
	case 7
		object.value7 += 0x10000
		object.value0++
		if object.value0 == 4
			object.value0 = 0
			object.state++
		end if
		break
	case 8
		object.yvel += 0x4000
		object.ypos += object.yvel
		object.value2 += object.yvel
		object.value7 += object.yvel
		if object.yvel > 0
			if object.ypos >= 0x900000
				object.yvel >>= 1
				temp0 = object.yvel
				temp0 >>= 1
				object.yvel += temp0
				object.value0++
				if object.value0 != 3
					FlipSign(object.yvel)
				else
					object.value0 = 0
					object.yvel = 0
					stage[0].activeLayer = 2
					object.alpha = 256
					object.state++
				end if
			end if
		end if
		break
	case 9
		object.value7 -= 0x10000
		object.value0++
		if object.value0 == 4
			object.value0 = 0
			object.state++
		end if
		if object.alpha > 0
			object.alpha -= 12
		end if
		break
	case 10
		object.value0++
		if object.value0 == 4
			object.value0 = 0
			object.value5++
			if object.value5 == 13
				object.value5 = 8
				object.state++
			end if
		end if
		if object.alpha > 0
			object.alpha -= 12
		end if
		break
	case 11
		if object.value0 < 4
			object.value7 += 0x10000
			object.value0++
			if object.alpha > 0
				object.alpha -= 12
			end if
		else
			if object.alpha > 0
				object.alpha -= 12
			else
				object.value0 = 0
				object.state++
				object[+1].type = TypeName[Start Message]
				object[+1].priority = PRIORITY_ACTIVE
				object[+1].xpos = screen.xcenter
				object[+1].ypos = 200
				CreateTempObject(TypeName[Shooting Star], 0, object.xpos, object.ypos)
				object[tempObjectPos].drawOrder = 2
				object[tempObjectPos].xpos += 0x1600000
				object[tempObjectPos].ypos -= 0x1000000
				object[tempObjectPos].value0 = 150
			end if
		end if
		break
	case 12
		object.yvel += 0x4000
		object.value8 += object.yvel
		if object.yvel > 0
			if object.value8 >= 0x5A0000
				object.yvel >>= 2
				temp0 = object.yvel
				temp0 >>= 1
				object.yvel += temp0
				object.value0++
				if object.value0 != 2
					FlipSign(object.yvel)
				else
					object.value0 = 0
					object.yvel = 0
					object.state++
				end if
			end if
		end if
		object.animationTimer++
		if object.animationTimer > 7
			tileLayer[2].deformationOffset++
			object.animationTimer = 0
		end if
		break
	case 13
		object.animationTimer++
		if object.animationTimer > 7
			tileLayer[2].deformationOffset++
			object.animationTimer = 0
		end if
		break
		
	
	
	case 20
		stage.player2Enabled = 0
	case 21
	case 22
		object.value1 = -0x2C0000
		object.value1 += object.xpos
		object.value2 = -0x160000
		object.value2 += object.ypos
		PlayMusic(0)
	case 23
		while object.value2 > 0x1A0000
			object.value2 -= 0x80000
		loop
		object.value6 = -0x2C0000
		object.value6 += object.xpos
		object.value7 = -0x2E0000
		object.value7 += object.ypos
	case 24
		object.frame = 7
	case 25
		object.value7 -= 0x40000
	case 26
	case 27
		object.value7 += 0x40000
	case 28
		while object.ypos <= 0x900000
			object.yvel += 0x4000
			object.ypos += object.yvel
			object.value2 += object.yvel
			object.value7 += object.yvel
		loop
		
		object.yvel = 0
		stage[0].activeLayer = 2
		object.alpha = 256
	case 29
		object.value7 -= 0x40000
	case 30
		object.value0 = 0
		object.value5 = 8
		object.state = 11
		break
	end switch
	temp0 = screen.xcenter
	FlipSign(temp0)
	temp0 += 256
	screen.xoffset = temp0
end event

event ObjectDraw
	switch object.state
	case 0
	case 20
		ClearScreen(1)
		break
	case 1
	case 21
		ClearScreen(1)
		DrawSprite(0)
		DrawSprite(1)
		DrawRect(0, 0, screen.xsize, screen.ysize, 0, 0, 0, object.alpha)
		break
	case 2
	case 22
		ClearScreen(1)
		DrawSprite(0)
		DrawSprite(1)
		break
	case 3
	case 23
		ClearScreen(1)
		DrawSprite(0)
		DrawSpriteXY(object.frame, object.value1, object.value2)
		DrawSprite(1)
		break
	case 4
	case 24
		ClearScreen(1)
		DrawSprite(0)
		DrawSpriteXY(object.frame, object.value1, object.value2)
		if object.frame >= 7
			DrawSpriteXY(object.value5, object.value6, object.value7)
		end if
		DrawSprite(1)
		break
	case 5
	case 25
	case 6
	case 26
	case 7
	case 27
	case 8
	case 28
		ClearScreen(1)
		DrawSprite(0)
		DrawSpriteXY(object.frame, object.value1, object.value2)
		DrawSpriteXY(object.value5, object.value6, object.value7)
		DrawSprite(1)
		break
	case 9
	case 29
	case 10
	case 30
	case 11
		DrawRect(0, 0, screen.xsize, screen.ysize, 224, 224, 224, object.alpha)
		DrawSprite(0)
		DrawSpriteXY(object.frame, object.value1, object.value2)
		DrawSpriteXY(object.value5, object.value6, object.value7)
		DrawSprite(1)
		CallFunction(KLogo_DrawAbsolute)
		temp0 = screen.xsize
		temp0 -= 88
		DrawSpriteScreenXY(15, temp0, 216)
		DrawSpriteScreenXY(16, 8, 216)
		break
	case 12
	case 13
		DrawSprite(0)
		DrawSpriteXY(object.frame, object.value1, object.value2)
		DrawSpriteXY(object.value5, object.value6, object.value7)
		DrawSprite(1)
		CallFunction(KLogo_DrawAbsolute)
		DrawSpriteXY(14, object.xpos, object.value8)
		temp0 = screen.xsize
		temp0 -= 88
		DrawSpriteScreenXY(15, temp0, 216)
		DrawSpriteScreenXY(16, 8, 216)
		break
	end switch
end event


event ObjectStartup
	LoadSpriteSheet("Title/Title.gif")
	SpriteFrame(-128, -78, 256, 82, 255, 67)
	SpriteFrame(-128, -8, 256, 87, 255, 150)
	SpriteFrame(3, 15, 101, 47, 1, 438)
	SpriteFrame(3, 15, 101, 73, 1, 438)
	SpriteFrame(0, 9, 95, 79, 103, 432)
	SpriteFrame(1, 6, 105, 82, 199, 429)
	SpriteFrame(1, 4, 102, 84, 305, 427)
	SpriteFrame(5, 2, 91, 86, 408, 425)
	SpriteFrame(8, 5, 42, 43, 180, 138)
	SpriteFrame(8, 3, 40, 53, 465, 1)
	SpriteFrame(8, 8, 40, 39, 149, 182)
	SpriteFrame(8, 8, 40, 39, 149, 182)
	SpriteFrame(8, 3, 40, 53, 465, 1)
	SpriteFrame(8, 5, 42, 43, 180, 138)
	SpriteFrame(-124, -66, 248, 65, 263, 359)
	SpriteFrame(0, -8, 80, 24, 1, 389) //15 Copyrights
	SpriteFrame(0, 8, 126, 8, 92, 380) //16 Team Forever
	
	//Absolute
	SpriteFrame(-28, -4, 0, 0, 512, 58) //17 //Blank
	SpriteFrame(-28, -4, 56, 8, 512, 67) //18 //Drawing in
	SpriteFrame(-28, -4, 56, 8, 512, 76) //19
	SpriteFrame(-28, -4, 56, 8, 512, 85) //20
	SpriteFrame(-28, -4, 56, 8, 512, 94) //21
	SpriteFrame(-28, -4, 56, 8, 512, 103) //22
	SpriteFrame(-28, -4, 56, 8, 512, 112) //23
	SpriteFrame(-28, -4, 56, 8, 512, 121) //24
	SpriteFrame(-28, -4, 56, 8, 512, 130) //25
	SpriteFrame(-28, -4, 56, 8, 512, 139) //26
	SpriteFrame(-28, -4, 56, 8, 512, 148) //27
	SpriteFrame(-28, -4, 56, 8, 512, 157) //28
	SpriteFrame(-28, -4, 56, 8, 512, 166) //29
	SpriteFrame(-28, -4, 56, 8, 512, 175) //30
	SpriteFrame(-28, -4, 56, 8, 512, 184) //31
	SpriteFrame(-28, -4, 56, 8, 512, 193) //32
	
	SpriteFrame(-28, -4, 56, 8, 569, 58) //33
	SpriteFrame(-28, -4, 56, 8, 569, 67) //34
	SpriteFrame(-28, -4, 56, 8, 569, 76) //35
	SpriteFrame(-28, -4, 56, 8, 569, 85) //36
	SpriteFrame(-28, -4, 56, 8, 569, 94) //37
	SpriteFrame(-28, -4, 56, 8, 569, 103) //38 //In
	SpriteFrame(-28, -4, 56, 8, 569, 112) //39
	SpriteFrame(-28, -4, 56, 8, 569, 121) //40
	SpriteFrame(-28, -4, 56, 8, 569, 130) //41
	SpriteFrame(-28, -4, 56, 8, 569, 139) //42
	SpriteFrame(-28, -4, 56, 8, 569, 148) //43
	SpriteFrame(-28, -4, 56, 8, 569, 157) //44
	SpriteFrame(-28, -4, 56, 8, 569, 166) //45
	SpriteFrame(-28, -4, 56, 8, 569, 175) //46
	SpriteFrame(-28, -4, 56, 8, 569, 184) //47
	SpriteFrame(-28, -4, 56, 8, 569, 193) //48
	SpriteFrame(-28, -4, 56, 8, 512, 58) //49
end event

event RSDKDraw
	DrawSprite(0)
end event

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