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

//-------Aliases-------//
private alias 5 : TYPE_HUD
//object.value2 reserved for display of game mode info
private alias object.value7 : TimeOverFlag
private alias object.value8 : time.fadeout
private alias object.value15 : hud.yoffset
private alias object.value10 : debug.toggle
private alias object.value30 : display.milliSeconds
private alias object.value31 : display.seconds
private alias object.value32 : display.minutes
private alias object.value33 : slots.count
private alias object.value34 : buttonoffset


// Function declarations
reserve function HUD_DrawMainGame
reserve function HUD_DrawTimeAttack
reserve function HUD_DrawArcadeMode
reserve function HUD_DrawNickArcadeMode
reserve function HUD_DrawSlots
reserve function DebugExtra
reserve function DebugDisplays
reserve function TileFind
reserve function PerfectCount
reserve function SpeedRead
reserve function CharColl
reserve function SuperButton
reserve function LivesHud

// Static Values

// Tables
private value HUD_X = 0;

function DebugExtra
	//Extra Numbers below rings, useful for debugging+
	if inputPress.buttonX == 1
		debug.toggle ^= 1
	end if
	
	if debug.toggle == 1
		CallFunction(SpeedRead)		
		CallFunction(PerfectCount)
		CallFunction(CharColl)
		CallFunction(TileFind)
	end if
end function

function DebugDisplays
	temp1 = screen.xsize
	temp1 -= 80
	DrawSpriteScreenXY(59, temp1, 9)
	temp0 = object[0].xpos
	temp0 >>= 16
	Abs(temp0)
	temp1 = screen.xsize
	temp1 -= 24
	DrawNumbers(0, temp1, 25, temp0, 5, 8, 1)
	temp0 = object[0].ypos
	temp0 >>= 16
	Abs(temp0)
	DrawNumbers(0, temp1, 41, temp0, 5, 8, 1)

	temp1 -= 56
	if object[0].xpos >= 0
		DrawSpriteScreenXY(18, temp1, 25)
	else
		DrawSpriteScreenXY(36, temp1, 25)
	end if
	if object[0].ypos >= 0
		DrawSpriteScreenXY(19, temp1, 41)
	else
		DrawSpriteScreenXY(37, temp1, 41)
	end if
end function

function SpeedRead
	temp0 = screen.xsize
	temp0 -= 80
	temp1 = 60
	DrawSpriteScreenXY(57, temp0, temp1)
	
	temp1 += 15
	DrawSpriteScreenXY(18, temp0, temp1)
	temp0 += 24
	if object[0].xvel < 0
		DrawSpriteScreenXY(34, temp0, temp1)
	end if
	temp2 = object[0].xvel
	Abs(temp2)
	temp2 >>= 16
	DrawNumbers(0, temp0, temp1, temp2, 2, 8, 1)
	temp2 = object[0].xvel
	Abs(temp2)
	temp2 &= 0xFFFF
	temp2 *= 10000
	temp2 >>= 16
	temp0 += 8
	DrawSpriteScreenXY(58, temp0, temp1)
	temp0 += 32
	DrawNumbers(0, temp0, temp1, temp2, 4, 8, 1)
	
	temp0 = screen.xsize
	temp0 -= 80
	
	temp1 += 15
	DrawSpriteScreenXY(19, temp0, temp1)
	temp0 += 24
	if object[0].yvel < 0
		DrawSpriteScreenXY(34, temp0, temp1)
	end if
	temp2 = object[0].yvel
	Abs(temp2)
	temp2 >>= 16
	DrawNumbers(0, temp0, temp1, temp2, 2, 8, 1)
	temp2 = object[0].yvel
	Abs(temp2)
	temp2 &= 0xFFFF
	temp2 *= 10000
	temp2 >>= 16
	temp0 += 8
	DrawSpriteScreenXY(58, temp0, temp1)
	temp0 += 32
	DrawNumbers(0, temp0, temp1, temp2, 4, 8, 1)
	
	temp0 = screen.xsize
	temp0 -= 80
	
	temp1 += 15
	DrawSpriteScreenXY(56, temp0, temp1)
	temp0 += 24
	if object[0].speed < 0
		DrawSpriteScreenXY(34, temp0, temp1)
	end if
	temp2 = object[0].speed
	Abs(temp2)
	temp2 >>= 16
	DrawNumbers(0, temp0, temp1, temp2, 2, 8, 1)
	temp2 = object[0].speed
	Abs(temp2)
	temp2 &= 0xFFFF
	temp2 *= 10000
	temp2 >>= 16
	temp0 += 8
	DrawSpriteScreenXY(58, temp0, temp1)
	temp0 += 32
	DrawNumbers(0, temp0, temp1, temp2, 4, 8, 1)
end function

function PerfectCount
	switch stage.playerListPos
		case 0
		case 3
			temp0 = 0
			foreach (TypeName[Ring], arrayPos0, ALL_ENTITIES)
				if object[arrayPos0].propertyValue <= 1
					temp0++
				end if
			next
			break
		case 1
		case 2
			temp0 = 0
			foreach (TypeName[Ring], arrayPos0, ALL_ENTITIES)
				if object[arrayPos0].propertyValue != 2
					temp0++
				end if
			next
			break
	end switch
	DrawSpriteScreenXY(45, 115, 41)
	DrawNumbers(0, 140, 41, temp0, 7, 8, 0)
end function

function CharColl
	temp0 = screen.xsize
	temp0 -= 100
	temp1 = 128
	DrawSpriteScreenXY(60, temp0, temp1)
	temp0 += 72
	temp2 = object[0].collisionPlane
	temp2 += 61
	DrawSpriteScreenXY(temp2, temp0, temp1)
	temp0 -= 72
	temp1 += 15
	DrawSpriteScreenXY(63, temp0, temp1)
	temp0 += 72
	DrawNumbers(0, temp0, temp1, object[0].value18, 7, 8, 0)		
end function

function TileFind	
	temp6 = screen.xsize
	temp6 -= 80
	DrawSpriteScreenXY(18, temp6, 180)
	DrawSpriteScreenXY(19, temp6, 195)
	temp6 -= 10
	DrawSpriteScreenXY(54, temp6, 210)
	DrawSpriteScreenXY(55, temp6, 225)
	
	temp1 = object[0].xpos
	temp1 >>= 16
	temp1 /= 128
	
	temp2 = object[0].ypos
	temp2 >>= 16
	temp2 /= 128	
	GetTileLayerEntry(temp3, 0, temp1, temp2)
	
	temp6 = screen.xsize
	temp6 -= 28
	DrawNumbers(0, temp6, 180, temp1, 7, 8, 0)
	DrawNumbers(0, temp6, 195, temp2, 7, 8, 0)
	DrawNumbers(0, temp6, 210, temp3, 7, 8, 0)
	
	temp1 = object[0].xpos
	temp1 >>= 16
	temp2 = object[0].ypos
	temp2 >>= 16
	Get16x16TileInfo(temp0, temp1, temp2, TILEINFO_INDEX)	
	DrawNumbers(0, temp6, 225, temp0, 7, 8, 0)
end function

function SuperButton
		object.inkEffect = INK_ALPHA
		temp0 = stage.timeEnabled
		CheckEqual(specialStage.emeralds, 127)
		temp0 &= checkResult
		CheckGreater(object[0].value0, 49)
		temp0 &= checkResult
		CheckNotEqual(PlayerObject_SuperState, 1)
		temp0 &= checkResult
		CheckNotEqual(object[30].type, TypeName[Act Finish])
		temp0 &= checkResult
		if temp0 == 1
			if buttonoffset < 52
				buttonoffset += 8
			end if
			if buttonoffset >= 52
				buttonoffset = 52
			end if
		else
			if buttonoffset > 0
				buttonoffset -= 8
			end if
			if buttonoffset <= 0
				buttonoffset = 0
			end if
		end if
		temp0 = screen.xsize
		temp0 -= buttonoffset		
		CheckEqual (object[0].value35, 1)
		temp1 = checkResult
		CheckEqual (object[0].value8, 0)
		temp1 &= checkResult
		if temp1 == 1
			object.alpha = 255
		else
			object.alpha = 155
		end if
		DrawSpriteScreenFX(48, FX_INK,temp0, 9)
		DrawSpriteScreenXY(49, temp0, 9)
end function

function LivesHud
	CheckEqual(saved.lives, 0)
	temp1 = checkResult
	CheckEqual(options.gameMode, 3)
	temp1 |= checkResult
	if temp1 == 1	
		temp0 = stage.playerListPos
		temp0 += 15
		temp1 = 216
		temp1 -= achieve.yoffset
		
		CheckEqual(stage.playerListPos, 0)
		temp2 = checkResult
		checkEqual(PlayerObject_SuperState, 1)
		temp2 &= checkResult
		if temp2 == 1
			DrawSpriteScreenXY(42, 16, temp1)
		else
			DrawSpriteScreenXY(temp0, 16, temp1)
		end if
		
		temp0 += 6
		temp1 += 1
		DrawSpriteScreenXY(temp0, 33, temp1)
		temp1 += 9
		DrawSpriteScreenXY(20, 38, temp1)
		temp1 -= 2
		if saved.lives == 1
			DrawSpriteScreenXY(38, 54, temp1)
		else
			DrawNumbers(24, 56, temp1, player.lives, 2, 8, 0)
		end if
	end if
end function

function HUD_DrawMainGame
	CallFunction(SuperButton)

	DrawSpriteScreenXY(10, 17, 9)
	temp5 = 0
	temp1 = display.minutes
	while temp1 >= 10
		temp5 += 8
		temp1 /= 10
	loop
	if player.score >= 1000000
		if temp5 < 8
			temp5 += 8
		end if
	end if
	
	//Red Time
	if object.value1 > 7
		switch saved.timeLimit
		case 1 // 3 minutes
			temp1 = 2
			break
		case 2 //10 minutes
			temp1 = 9
			break
		default
			temp1 = 0
			break
		end switch
		if temp1 > 0
			if stage.minutes >= temp1
				DrawSpriteScreenXY(11, 17, 25)
			end if
		end if			
	end if
	
	if object[0].value0 == 0
		if object.value1 > 7
			DrawSpriteScreenXY(12, 17, 41)
		end if
	end if
	temp2 = 104
	temp2 += temp5
	DrawNumbers(0, temp2, 9, player.score, 7, 8, 0)

	if saved.Timer == 0
		temp2 = 67
		temp2 += temp5
		DrawSpriteScreenXY(14, temp2, 25)
		temp2 += 13
	else
		temp2 = 67
		temp2 += temp5
		DrawSpriteScreenXY(13, temp2, 25)
		temp2 += 37
		DrawNumbers(0, temp2, 25, display.milliSeconds, 2, 8, 1)
	end if

	DrawNumbers(0, temp2, 41, object[0].value0, 3, 8, 0)
	
	temp2 = 80
	temp2 += temp5
	DrawNumbers(0, temp2, 25, display.seconds, 2, 8, 1)
	temp2 -= 24
	DrawNumbers(0, temp2, 25, display.minutes, 10, 8, 0)
	
	if stage.debugMode == 1
		CallFunction(DebugDisplays)
		CallFunction(DebugExtra)
	end if
	
	CallFunction(LivesHud)
end function

function HUD_DrawTimeAttack
	//Time
	temp0 = screen.xcenter
	temp0 -= 47
	DrawSpriteScreenXY(39, temp0, 9)
	temp0 += 49	

	temp1 = stage.minutes
	while temp1 >= 10
		temp0 += 8
		temp1 /= 10
	loop
	
	DrawSpriteScreenXY(13, temp0, 9)
	temp0 += 37
	DrawNumbers(0, temp0, 9, stage.milliSeconds, 2, 8, 1)
	temp0 -= 24
	DrawNumbers(0, temp0, 9, stage.seconds, 2, 8, 1)
	temp5 = temp0
	temp0 -= 24
	DrawNumbers(0, temp0, 9, stage.minutes, 10, 8, 0)
	
	//Rings
	temp1 = screen.xcenter
	temp1 -= 34
	DrawSpriteScreenXY(40, temp1, 25)
	if object[0].value0 == 0
		if object.value1 > 7
			DrawSpriteScreenXY(12, temp1, 25)
		end if
	end if
	temp1 += 60
	DrawNumbers(0, temp1, 25, object[0].value0, 3, 8, 0)
	
	//Best
	temp1 = screen.ysize
	temp1 -= 19
	temp1 -= achieve.yoffset
	temp0 = screen.xcenter
	temp0 -= 47
	DrawSpriteScreenXY(41, temp0, temp1)
	temp0 += 49
	
	object.value3 = object.value2
	object.value4 = 0
	object.value5 = 0
	while object.value3 >= 6000
		object.value5++
		object.value3 -= 6000
	loop
	
	while object.value3 >= 100
		object.value4++
		object.value3 -= 100
	loop
	
	if object.value5 > 9
		temp0 += 8
	end if	
		
	DrawSpriteScreenXY(13, temp0, temp1)
	temp0 += 37
		
	DrawNumbers(0, temp0, temp1, object.value3, 2, 8, 1)
	temp0 -= 24
	DrawNumbers(0, temp0, temp1, object.value4, 2, 8, 1)
	temp0 -= 24
	DrawNumbers(0, temp0, temp1, object.value5, 2, 8, 0)
end function

function HUD_DrawArcadeMode
	CallFunction(SuperButton)

	DrawSpriteScreenXY(10, 17, 9)
	temp5 = 0
	temp1 = display.minutes
	while temp1 >= 10
		temp5 += 8
		temp1 /= 10
	loop
	if player.score >= 1000000
		if temp5 < 8
			temp5 += 8
		end if
	end if
	
	//Red Time
	if object.value1 > 7
		if stage.minutes >= 9
			DrawSpriteScreenXY(11, temp0, 9)
		end if		
	end if	
	
	if object[0].value0 == 0
		if object.value1 > 7
			DrawSpriteScreenXY(12, 17, 41)
		end if
	end if
	temp2 = 104
	temp2 += temp5
	DrawNumbers(0, temp2, 9, player.score, 7, 8, 0)

	if saved.Timer == 0
		temp2 = 67
		temp2 += temp5
		DrawSpriteScreenXY(14, temp2, 25)
		temp2 += 13
	else
		temp2 = 67
		temp2 += temp5
		DrawSpriteScreenXY(13, temp2, 25)
		temp2 += 37
		DrawNumbers(0, temp2, 25, display.milliSeconds, 2, 8, 1)
	end if

	DrawNumbers(0, temp2, 41, object[0].value0, 3, 8, 0)
	
	temp2 = 80
	temp2 += temp5
	DrawNumbers(0, temp2, 25, display.seconds, 2, 8, 1)
	temp2 -= 24
	DrawNumbers(0, temp2, 25, display.minutes, 10, 8, 0)
	
	if stage.debugMode == 1
		CallFunction(DebugDisplays)
		CallFunction(DebugExtra)
	end if
	
	CallFunction(LivesHud)
end function

function HUD_DrawNickArcadeMode
	DrawSpriteScreenXY(10, 17, 9)
	
	if object[0].value0 == 0
		if object.value1 > 7
			DrawSpriteScreenXY(12, 17, 41)
		end if
	end if
	DrawNumbers(0, 104, 9, player.score, 7, 8, 0)
	
	temp0 = 30
	temp0 -= stage.seconds
	
	temp1 = 0
	temp1 -= stage.milliseconds
	
	while temp1 < 0
		temp0--
		temp1 += 100
	loop

	if saved.Timer == 0
		DrawSpriteScreenXY(14, 67, 25)
		DrawNumbers(0, 80, 41, object[0].value0, 3, 8, 0)
	else
		DrawSpriteScreenXY(13, 67, 25)
		DrawNumbers(0, 104, 25, temp1, 2, 8, 1)
		DrawNumbers(0, 104, 41, object[0].value0, 3, 8, 0)
	end if
	
	DrawNumbers(0, 80, 25, temp0, 2, 8, 1)
	DrawNumbers(0, 56, 25, 0, 10, 8, 0)
		
	if stage.debugMode == 1
		CallFunction(DebugDisplays)
		CallFunction(DebugExtra)
	end if
		
	object.inkEffect = INK_ALPHA
	object.alpha = 192
	temp0 = screen.ysize
	temp0 += 2
	temp0 -= achieve.yoffset
	DrawSpriteScreenFX(43, FX_INK, 7, temp0)	
	DrawSpriteScreenFX(44, FX_INK, 7, temp0)
end function

function HUD_DrawSlots
	//Offsetting
	temp3 = hud.yoffset
	temp3 += 9
	//Time
	temp0 = 64
	temp0 -= 47

	DrawSpriteScreenXY(39, temp0, temp3)

	temp0 -= 1

	//Red Time
	if object.value1 > 7
		if stage.minutes >= 9
			DrawSpriteScreenXY(11, temp0, temp3)
		end if		
	end if

	temp0 += 50	

	temp1 = stage.minutes
	while temp1 >= 10
		temp0 += 8
		temp1 /= 10
	loop
	temp3--
	DrawSpriteScreenXY(13, temp0, temp3)
	temp3++
	temp0 += 37
	DrawNumbers(0, temp0, temp3, stage.milliSeconds, 2, 8, 1)
	temp0 -= 24
	DrawNumbers(0, temp0, temp3, stage.seconds, 2, 8, 1)
	temp5 = temp0
	temp0 -= 24
	DrawNumbers(0, temp0, temp3, stage.minutes, 10, 8, 0)
	
	temp3 += 14
	//Rings
	temp1 = 51
	temp1 -= 34
	DrawSpriteScreenXY(40, temp1, temp3)
	if object[0].value0 <= 0
		if object.value1 > 7
			DrawSpriteScreenXY(12, temp1, temp3)
		end if
	end if
	temp1 += 84
	if object[0].value0 >= 0
		DrawNumbers(0, temp1, temp3, object[0].value0, 4, 8, 0)
	else
		temp0 = object[0].value0
		FlipSign(temp0)
		DrawNumbers(0, temp1, temp3, temp0, 4, 8, 0)
		temp1 -= 8
		while temp0 >= 10
			temp1 -= 8
			temp0 /= 10
		loop
		DrawSpriteScreenXY(46, temp1, temp3)
	end if
	temp3 += 14
	
	//Enforcement
	if object[15].value2 > 0
		temp0 = 1
		temp1 = 20
		while temp0 <= 10
			if temp0 > object[15].value2
				DrawSpriteScreenXY(52, temp1, temp3)
			else
				DrawSpriteScreenXY(50, temp1, temp3)
			end if
			temp0++		
			if temp0 > object[15].value2
				DrawSpriteScreenXY(53, temp1, temp3)
			else
				DrawSpriteScreenXY(51, temp1, temp3)
			end if
			temp0++
			temp1 += 20		
		loop
	end if
	
	//DrawNumbers(0, 310, 50, object.value35, 4, 8, 0)
	
	temp3 -= 28
	//Best
	temp0 = screen.xsize
	temp0 -= 115
	DrawSpriteScreenXY(41, temp0, temp3)
	temp0 += 49
	object.value3 = object.value2
	object.value4 = 0
	object.value5 = 0
	while object.value3 >= 6000
		object.value5++
		object.value3 -= 6000
	loop
	
	while object.value3 >= 100
		object.value4++
		object.value3 -= 100
	loop
			
	DrawSpriteScreenXY(13, temp0, temp3)
	temp0 += 37
		
	DrawNumbers(0, temp0, temp3, object.value3, 2, 8, 1)
	temp0 -= 24
	DrawNumbers(0, temp0, temp3, object.value4, 2, 8, 1)
	temp0 -= 24
	DrawNumbers(0, temp0, temp3, object.value5, 2, 8, 0)

	//Slots
	temp3 += 14
	temp0 = screen.xsize
	temp0 -= 115
	DrawSpriteScreenXY(47, temp0, temp3)
	temp0 += 49
	temp0 += 37
	DrawNumbers(0, temp0, temp3, object.value33, 4, 8, 0)
end function

event ObjectMain
	//Massive simplification - always tick the value
	object.value1++
	object.value1 &= 15
	
	if options.gameMode == 3
			display.milliSeconds = stage.milliSeconds
			display.seconds = stage.seconds
			display.minutes = stage.minutes
	else
		switch saved.timeLimit
			case 1
				display.milliSeconds = 0
				display.seconds = 0
				display.minutes = 3
				
				display.milliSeconds -= stage.milliSeconds
				display.seconds -= stage.seconds
				display.minutes -= stage.minutes
				
				while display.milliSeconds < 0
					display.milliseconds += 100
					display.seconds--
				loop
				
				while display.seconds < 0
					display.seconds += 60
					display.minutes--
				loop
				break
			default
				display.milliSeconds = stage.milliSeconds
				display.seconds = stage.seconds
				display.minutes = stage.minutes
				break
		end switch
	end if
end event

event ObjectDraw
	if player.lives > 99
		player.lives = 99
	end if
	if player.continues > 99
		player.continues = 99
	end if
	
	CallFunction(object.value0)
end event


event ObjectStartup
	LoadSpriteSheet("Global/Display.gif")
	
	//Numbers
	SpriteFrame(0, 0, 8, 11, 1, 50) // 0  - Number 0
	SpriteFrame(0, 0, 8, 11, 10, 50) // 1  - Number 1
	SpriteFrame(0, 0, 8, 11, 19, 50) // 2  - Number 2
	SpriteFrame(0, 0, 8, 11, 28, 50) // 3  - Number 3
	SpriteFrame(0, 0, 8, 11, 1, 62) // 4  - Number 4
	SpriteFrame(0, 0, 8, 11, 10, 62) // 5  - Number 5
	SpriteFrame(0, 0, 8, 11, 19, 62) // 6  - Number 6
	SpriteFrame(0, 0, 8, 11, 28, 62) // 7  - Number 7
	SpriteFrame(0, 0, 8, 11, 1, 74) // 8  - Number 8
	SpriteFrame(0, 0, 8, 11, 10, 74) // 9  - Number 9
	SpriteFrame(0, 0, 40, 43, 1, 1) // 10 - Score, Times, Ring text
	SpriteFrame(0, 0, 31, 11, 1, 119) // 11 - Red Time text
	SpriteFrame(0, 0, 39, 11, 1, 131) // 12 - Red Rings text
	SpriteFrame(0, 0, 29, 4, 1, 45) //13 ' "
	SpriteFrame(0, 0, 3, 11, 37, 50) //14 :
	SpriteFrame(0, 0, 16, 16, 83, 18) //15 Sonic Icon
	SpriteFrame(0, 0, 16, 16, 100, 18) //16 Tails Icon
	SpriteFrame(0, 0, 16, 16, 117, 18) //17 Knuckles Icon
	SpriteFrame(0, 0, 8, 8, 1, 98) //18 X
	SpriteFrame(0, 0, 8, 8, 10, 98) //19 Y
	SpriteFrame(0, 0, 6, 6, 19, 98) //20 //Lives X
	SpriteFrame(0, 0, 31, 7, 185, 18) //21 Sonic Name
	if saved.region == 0
		SpriteFrame(0, 0, 31, 7, 217, 18) //22 Tails Name
	else
		SpriteFrame(0, 0, 31, 7, 185, 26) //22 Miles Name
	end if
	SpriteFrame(0, 0, 31, 7, 217, 26) //23 Knuckles Name
	
	//Lives Numbers
	SpriteFrame(0, 0, 8, 8, 37, 64) // 24 - Small number 0
	SpriteFrame(0, 0, 8, 8, 46, 64) // 25 - Small number 1
	SpriteFrame(0, 0, 8, 8, 55, 64) // 26 - Small number 2
	SpriteFrame(0, 0, 8, 8, 64, 64) // 27 - Small number 3
	SpriteFrame(0, 0, 8, 8, 73, 64) // 28 - Small number 4
	SpriteFrame(0, 0, 8, 8, 82, 64) // 29 - Small number 5
	SpriteFrame(0, 0, 8, 8, 91, 64) // 30 - Small number 6
	SpriteFrame(0, 0, 8, 8, 100, 64) // 31 - Small number 7
	SpriteFrame(0, 0, 8, 8, 109, 64) // 32 - Small number 8
	SpriteFrame(0, 0, 8, 8, 118, 64) // 33 - Small number 9
	SpriteFrame(-16, 0, 8, 8, 127, 64) //34 Minus
	SpriteFrame(8, 0, 8, 8, 136, 64) //35 Plus
	SpriteFrame(0, 0, 8, 8, 25, 98) //36 Red X
	SpriteFrame(0, 0, 8, 8, 34, 98) //37 Red Y
	
	//Etc.
	SpriteFrame(0, 0, 10, 8, 178, 70) //38 Infinite Lives
	SpriteFrame(0, 0, 31, 11, 160, 46) //39 Time
	SpriteFrame(0, 0, 40, 11, 1, 33) //40 Rings
	SpriteFrame(0, 0, 32, 11, 120, 46) //41 Best Time
	SpriteFrame(0, 0, 16, 16, 192, 41) //42 Super Icon
	
	//Nick Arcade
	SpriteFrame(10, -46, 52, 20, 163, 184) //43 GaS top
	SpriteFrame(10, -26, 52, 16, 188, 239) //44 GaS bottom
	
	//Gamble Scramble
	SpriteFrame(0, 0, 7, 11, 157, 35) //45 Slash
	SpriteFrame(0, 0, 8, 11, 34, 119) //46 Minus
	SpriteFrame(0, 0, 40, 11, 1, 107) //47 Slots

	//Super Button
	SpriteFrame(0, 0, 16, 16, 215, 191) //48 Y button
	SpriteFrame(20, 0, 16, 16, 232, 191) //49 Super Button - Main
		
	//Gamba Scramba
	SpriteFrame(-9, 0, 9, 14, 210, 208) //50 Eggman Left
	SpriteFrame(0, 0, 9, 14, 219, 208) //51 Eggman Right
	SpriteFrame(-9, 0, 9, 14, 229, 208) //52 Eggman Left Dim
	SpriteFrame(0, 0, 9, 14, 238, 208) //53 Eggman Right Dim
	
	//Expanded Debug Display
	SpriteFrame(0, 0, 43, 11, 260, 182) //54 Chunk
	SpriteFrame(0, 0, 28, 11, 260, 194) //55 Tile
	SpriteFrame(-16, 2, 24, 8, 260, 173) //56 GND
	SpriteFrame(0, 0, 40, 11, 260, 206) //57 Speed
	SpriteFrame(0, 6, 3, 5, 37, 56) //58 .
	SpriteFrame(0, 0, 24, 11, 260, 218) //59 Pos	
	SpriteFrame(0, 0, 68, 11, 260, 161) //60 Collision
	SpriteFrame(0, 0, 8, 11, 19, 74) //61 A
	SpriteFrame(0, 0, 8, 11, 28, 74) //62 B
	SpriteFrame(0, 0, 40, 11, 260, 149) //63 Layer
	
	
	
	foreach (TypeName[HUD], arrayPos0, ALL_ENTITIES)
		switch options.gameMode
		case 10
			object[arrayPos0].value0 = HUD_DrawNickArcadeMode
			break
		case 2
			arrayPos1 = 30
			if SuperTimeAttack == 0
				arrayPos1 *= stage.playerListPos
			else
				arrayPos1 *= 3
			end if
			arrayPos1 += stage.listPos
			if stage.listPos > 16
				arrayPos1--
			end if
			arrayPos1 += 500
			

			object[arrayPos0].value0 = HUD_DrawTimeAttack
			object[arrayPos0].value2 = saveRAM[arrayPos1]
			break
		case 3
			object[arrayPos0].value0 = HUD_DrawArcadeMode
			break
		case 5
			object[arrayPos0].value0 = HUD_DrawSlots
			object[arrayPos0].value2 = saveRAM[800]
			break
		default
			object[arrayPos0].value0 = HUD_DrawMainGame
			break
		end switch
	next
end event

event RSDKDraw
	DrawSprite(0)
end event

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