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

reserve function VersionNumber

//-------Aliases-------//
private value draw.new.save = 0;
private value draw.character = 0;
private value draw.lives = 0;
private value draw.zone = 0;
private value draw.act = 0;
private value draw.emeralds = 0;
private value draw.continues = 0;

private value math.red = 0;
private value math.green = 0;
private value math.blue = 0;
private value math.grey = 1;

private alias 299 : weight.red
private alias 587 : weight.green
private alias 114 : weight.blue


private alias object.value0 : menu.mainsel
private alias object.value1 : menu.page
private alias object.value2 : menu.page1.xoffset
private alias object.value3 : menu.page1.xtarget
private alias object.value4 : menu.fade
private alias object.value5 : menu.loadcall
private alias object.value6 : menu.zigzagscroll
private alias object.value7 : menu.options.highlight
private alias object.value8 : menu.zigzag.yoffset
private alias object.value9 : menu.zigzag.ytarget
private alias object.value10 : menu.drawMode

private alias object.value11 : menu.sub.ymin
private alias object.value12 : menu.sub.ymax
private alias object.value13 : menu.sub.yoffset
private alias object.value14 : menu.sub.ytarget

private alias object.value15 : save.slot
private alias object.value16 : save.substate
private alias object.value17 : save.charselect
private alias object.value18 : save.complete.stage

private alias object.value19 : achieve.highlight
private alias object.value20 : achieve.compcount

private alias object.value21 : menu.modes.highlight
private alias object.value22 : menu.extras.highlight

private alias object.value23 : menu.timer

private alias object.value24 : slots.milliseconds
private alias object.value25 : slots.seconds
private alias object.value26 : slots.minutes

private alias object.value27 : hold.time

private alias 10 : menu.zigzag.yspeed
private alias 10 : menu.sub.yspeed
private alias 15 : options.gap
private alias 50 : save.gap
private alias 66 : achieve.gap
private alias 50 : save.opacity

private alias 11 : achieve.count
private alias 2 : modes.count
private alias 2 : extras.count

public alias saveRAM[257] : saved.spindash


public alias saveRAM[260] : saved.spikeBehavior
public alias saveRAM[261] : saved.shieldType
public alias saveRAM[262] : saved.Title
public alias saveRAM[263] : saved.Jumplock
public alias saveRAM[264] : saved.Supermusic
public alias saveRAM[265] : saved.Dropdash
public alias saveRAM[266] : saved.Instashield
public alias saveRAM[267] : saved.Peelout
public alias saveRAM[268] : saved.FlightCancel
public alias saveRAM[269] : saved.SonicMaxDash
public alias saveRAM[270] : saved.Speen
public alias saveRAM[271] : saved.Supercancel
public alias saveRAM[272] : saved.Drowning
public alias saveRAM[273] : saved.Timer
public alias saveRAM[274] : saved.region
public alias saveRAM[275] : saved.elemental
public alias saveRAM[276] : saved.rotate
public alias saveRAM[277] : saved.invincibilityType
public alias saveRAM[278] : saved.speedCap
public alias saveRAM[279] : saved.airSpeedCap
public alias saveRAM[280] : saved.GoGoPlus
public alias saveRAM[281] : saved.lives
public alias saveRAM[282] : saved.bubble
public alias saveRAM[283] : saved.timeLimit
public alias saveRAM[285] : saved.randomMonitor
public alias saveRAM[286] : saved.language

public alias saveRAM[294] : saved.graphics
public alias saveRAM[295] : saved.mobile
public alias saveRAM[296] : saved.transmobile
public alias saveRAM[297] : saved.TailsMaxDash
public alias saveRAM[298] : saved.KnuxMaxDash
public alias saveRAM[300] : saved.SuperMaxDash



reserve function Menu.LoadOut
reserve function Menu.firstcontrol
reserve function Menu.LoadIn
reserve function Plane.Snapback
reserve function CloudDebug
reserve function ModesControl
reserve function ExtrasControl
reserve function SaveControl
reserve function AchieveControl
reserve function LoadforDraw
reserve function YOffsetControl
reserve function ModesDraw
reserve function ExtrasDraw
reserve function OptionsDraw
reserve function OptionsDrawSetup
reserve function SaveDraw
reserve function SaveEmeralds
reserve function AchieveDraw
reserve function AchieveDescribe
reserve function ResetPal

reserve function display.menu
reserve function gameplay.menu
reserve function abilities.menu
reserve function visuals.menu
reserve function sound.menu
reserve function datamang.menu

reserve function display.draw
reserve function gameplay.draw
reserve function abilities.draw
reserve function visuals.draw
reserve function sound.draw
reserve function datamang.draw

reserve function menu.holdmovement
reserve function PlayRingSound
reserve function BlackandWhite

//Static Values
private value saved.fullscreen = 0;
private value saved.scale = 0;
private value saved.vsync = 0;
private value saved.scalemode = 0;
private value saved.fps = 0;


//-------Tables--------//
private table ZoneCompleteLoad
	0, 2, 4, 6, 8, 10, 12, 14, 17, 18, 19, 20
end table

private table ZoneCompleteDraw
	0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
end table

private table Cloud_Type
	0, 1, 2, 0, 2, 1, 0, 1
end table

private table AchieveOrder
	0, 2, 9, 1, 4, 5, 8, 3, 6, 10, 11, 7, 2
	12, 13, 14, 15, 16, 17, 18, 19
	20, 21, 22, 23, 24, 25, 26, 27, 29, 29
end table

private table Cloud_X
620, 504, 428, 2984, 2784, 3124, 1076, 1012
end table

private table Cloud_Y
140, 68, 108, 80, 164, 128, 76, 96
end table

private table Palette_Reset
	0x2020A0, 0x2040C0, 0x4040E0, 0x6060E0
	0x800000, 0xE08000, 0xE0A000, 0xA06040
	0x600020, 0xC00020, 0xE04060
end table

function BlackandWhite
	temp0 = 0
	while temp0 < 256
		GetPaletteEntry(2, temp0, temp1)
		
		math.red = temp1
		math.red &= 0xFF0000
		math.red >>= 16
		
		math.green = temp1
		math.green &= 0x00FF00
		math.green >>= 8
		
		math.blue = temp1
		math.blue &= 0x0000FF
		
		if math.grey == 1
			math.red *= weight.red
			math.green *= weight.green
			math.blue *= weight.blue
			
			temp1 = math.blue
			temp1 += math.green
			temp1 += math.red
			temp2 = weight.red
			temp2 += weight.green
			temp2 += weight.blue
			temp1 /= temp2
			
		else
			temp1 = math.blue
			temp1 += math.green
			temp1 += math.red
			temp1 /= 3
		
		end if
		
		temp1 &= 0xFF
		temp2 = temp1
		temp2 <<= 8
		temp2 += temp1
		temp2 <<= 8
		temp2 += temp1
		
		SetPaletteEntry(3, temp0, temp2)
		temp0++
	loop
end function

function PlayRingSound
	if ringPan == 0
		PlaySfx(SfxName[Ring L], 0)
		SetSfxAttributes(SfxName[Ring L], -1, -100)
		ringPan = 1
	else
		PlaySfx(SfxName[Ring R], 0)
		SetSfxAttributes(SfxName[Ring R], -1, 100)
		ringPan = 0
	end if
end function

function menu.holdmovement
		if inputDown.up == 1
			hold.time++
			if hold.time >= 20
				inputPress.up = 1
				hold.time = 12
			end if
		else	
			if inputDown.down == 1
				hold.time++
				if hold.time >= 20
					inputPress.down = 1
					hold.time = 12
				end if
			else
				if inputDown.right == 1
					hold.time++
					if hold.time >= 20
						inputPress.right = 1
						hold.time = 12
					end if		
				else
					if inputDown.left == 1
						hold.time++
						if hold.time >= 20
							inputPress.left = 1
							hold.time = 12
						end if		
					else
						hold.time = 0
					end if
				end if
			end if
		end if
end function 


function main.sound	
	temp0 = inputPress.left
	temp0 |= inputPress.right
	temp0 |= inputPress.up
	temp0 |= inputPress.down
	temp0 |= inputPress.buttonL
	temp0 |= inputPress.buttonR
	if temp0 == 1
		PlaySfx(SfxName[Score Add], 0)
	end if
end function

function main.soundconf
	temp0 = inputPress.buttonA
	temp0 |= inputPress.start
	if temp0 == 1
		PlaySfx(SfxName[Star Post], 0)
	end if
end function


function YOffsetControl
	if menu.zigzag.yoffset == menu.zigzag.ytarget
	else
		temp0 = menu.zigzag.yoffset
		temp0 -= menu.zigzag.ytarget
		Abs(temp0)
		if temp0 <= menu.zigzag.yspeed
			menu.zigzag.yoffset = menu.zigzag.ytarget
		else
			if menu.zigzag.yoffset < menu.zigzag.ytarget
				menu.zigzag.yoffset += menu.zigzag.yspeed
			else
				menu.zigzag.yoffset -= menu.zigzag.yspeed
			end if
		end if
	end if
		
	if menu.sub.yoffset == menu.sub.ytarget
	else
		temp0 = menu.sub.yoffset
		temp0 -= menu.sub.ytarget
		Abs(temp0)
		if temp0 <= menu.sub.yspeed
			menu.sub.yoffset = menu.sub.ytarget
		else
			if menu.sub.yoffset < menu.sub.ytarget
				menu.sub.yoffset += menu.sub.yspeed
			else
				menu.sub.yoffset -= menu.sub.yspeed
			end if
		end if
	end if
end function

function CloudDebug
	temp0 = 20
	temp1 = screen.xcenter
	temp2 = screen.xsize
	temp2 -= 20
	temp3 = 45
	temp5 = 60
	foreach (TypeName[Menu Cloud], arrayPos0, ALL_ENTITIES)
		DrawNumbers(332, temp0, temp3, arrayPos0, 8, 8, 0)
		DrawNumbers(332, temp5, temp3, object[arrayPos0].propertyValue, 8, 8, 0)
		temp4 = object[arrayPos0].xpos
		temp4 >>= 16
		DrawNumbers(332, temp1, temp3, temp4, 8, 8, 0)
		DrawNumbers(332, temp2, temp3, object[arrayPos0].value1, 8, 8, 0)
		temp3 += 16
	next
	DrawNumbers(332, screen.xcenter, 20, screen.xoffset, 8, 8, 0)
end function

function Plane.Snapback
	foreach (TypeName[Menu Cloud], arrayPos0, ALL_ENTITIES)
		temp0 = object[arrayPos0].xpos
		temp0 >>= 16
		if temp0 != object[arrayPos0].value1 //cloud is active
			temp0 = screen.xoffset
			temp0 <<= 16
			object[arrayPos0].xpos -= temp0			
		end if	
	next
	
	screen.xoffset = 0
end function


function Menu.LoadIn
	if menu.fade == 0
		//One time setups for menu
		temp0 = 0
		achieve.compcount = 0
		while temp0 < achieve.count
			GetTableValue(temp1, temp0, AchieveOrder)
			arrayPos0 = 400
			arrayPos0 += temp1
			achieve.compcount += saveRAM[arrayPos0]
			temp0++
		loop
	end if
	
	if menu.fade < 320
		menu.fade += 16
		temp0 = 320
		temp0 -= menu.fade
		SetScreenFade(0, 0, 0, temp0)
	else
		object.state = Menu.firstcontrol
		PlayMusic(0)
		menu.fade = 0
		
	end if
end function


function Menu.LoadOut
	if menu.fade < 320
		menu.fade += 16
		music.volume -= 2
	else
		StopMusic()
		switch menu.loadcall
			case 1
				CallNativeFunction(OpenModMenu)
				break
			case 2
				CallNativeFunction(ExitGame)
				break
			default
				LoadStage()
				break
		end switch
	end if
	SetScreenFade(0, 0, 0, menu.fade)
end function


function Menu.firstcontrol
	if inputPress.right == 1
		menu.mainsel++
		CallFunction(main.sound)
		menu.mainsel %= 7
	end if
	if inputPress.left == 1				
		menu.mainsel--
		CallFunction(main.sound)
		while menu.mainsel < 0
			menu.mainsel += 7
		loop
	end if
	CheckEqual(inputPress.start, 1)
	temp0 = checkResult
	CheckEqual(inputPress.buttonA, 1)
	temp0 |= checkResult
	if temp0 == 1
		switch menu.mainsel
			case 0 //Save Select
				CallFunction(main.soundconf)
				object.state = SaveControl				
				menu.zigzag.ytarget = 240
				menu.drawMode = 0
				break
			case 1 //Game Modes
				CallFunction(main.soundconf)				
				object.state = ModesControl				
				menu.zigzag.ytarget = 240
				menu.drawMode = 1
				//PlaySfx(SfxName[Fail], 0)
				break
			case 2 //Options
				CallFunction(main.soundconf)
				object.state = display.menu
				menu.zigzag.ytarget = 240
				menu.drawMode = 2
				break
			case 3 //extras
				CallFunction(main.soundconf)
				object.state = ExtrasControl
				menu.zigzag.ytarget = 240
				menu.drawMode = 3
				break
			case 4 //Achievements
				CallFunction(main.soundconf)
				object.state = AchieveControl
				menu.zigzag.ytarget = 240
				menu.drawMode = 4
				break
			case 5 //Mods
				//PlaySfx(SfxName[Fail], 0)
				//break
				CallFunction(main.soundconf)
				menu.loadcall = 1
				object.state = Menu.LoadOut
				break
			case 6 //Exit
				CallFunction(main.soundconf)
				menu.loadcall = 2
				object.state = Menu.LoadOut
				break
		end switch
	end if
	if inputPress.buttonB == 1
		stage.activeList = PRESENTATION_STAGE
		stage.listPos = 0
		object.state = Menu.LoadOut
	end if
end function

function ModesControl
	temp0 = menu.modes.highlight
	temp0 *= save.gap
	menu.sub.ymax = temp0
	temp0 -= 150
	menu.sub.ymin = temp0
	
	if inputPress.up == 1
		menu.modes.highlight--
		PlaySfx(SfxName[Score Add], 0)
		while menu.modes.highlight < 0
			menu.modes.highlight += modes.count
		loop
	else
		if inputPress.down == 1
			menu.modes.highlight++
			PlaySfx(SfxName[Score Add], 0)
			menu.modes.highlight %= modes.count
		end if
	end if
	
	temp0 = inputPress.start
	temp0 |= inputPress.buttonA
	if temp0 == 1
		PlaySfx(SfxName[Star Post], 0)
		switch menu.modes.highlight
			case 0 //Time Attack
				stage.activeList = PRESENTATION_STAGE
				stage.listPos = 7				
				menu.loadcall = 0
				object.state = Menu.LoadOut
				break
			case 1 //Arcade
				stage.activeList = PRESENTATION_STAGE
				stage.listPos = 8				
				menu.loadcall = 0
				object.state = Menu.LoadOut
				break
		end switch
	end if
	
	
	if menu.sub.ytarget < menu.sub.ymin
		menu.sub.ytarget = menu.sub.ymin
	else
		if menu.sub.ytarget > menu.sub.ymax
			menu.sub.ytarget = menu.sub.ymax
		end if
	end if
	
	if inputPress.buttonB == 1
		object.state = Menu.firstcontrol
		menu.sub.ytarget = 0
		menu.zigzag.ytarget = 0
	end if
end function


function display.menu
	if inputPress.buttonL == 1
		object.state = sound.menu
		menu.options.highlight = 0
	end if
	if inputPress.buttonR == 1
		object.state = gameplay.menu
		menu.options.highlight = 0
	end if
	switch menu.options.highlight
		case 0 //Display Highlighted
			if inputPress.left == 1
				object.state = sound.menu
				//object.state = datamang.menu
			end if
			if inputPress.right == 1
				object.state = gameplay.menu
			end if
			break
			case 1 // Fullscreen
				temp0 = inputPress.left
				temp0 |= inputPress.right
				if temp0 == 1
					saved.fullscreen ^= 1
					CallNativeFunction2(SetWindowFullScreen, saved.fullscreen, 0)
				end if
				break
			case 2 // Screen Width		
				if inputPress.left == 1
					switch screen.xsize
						case 320
							CallNativeFunction2(SetScreenWidth, 384, 0)
							break
						case 384
							CallNativeFunction2(SetScreenWidth, 426, 0)
							break
						case 426
							CallNativeFunction2(SetScreenWidth, 320, 0)
							break
						default
							CallNativeFunction2(SetScreenWidth, 426, 0)
							break
					end switch
				end if
				if inputPress.right == 1
					switch screen.xsize
						case 320
							CallNativeFunction2(SetScreenWidth, 426, 0)
							break
						case 384
							CallNativeFunction2(SetScreenWidth, 320, 0)
							break
						case 426
							CallNativeFunction2(SetScreenWidth, 384, 0)
							break
						default
							CallNativeFunction2(SetScreenWidth, 426, 0)
							break
					end switch
				end if
				break
			case 3 // Window Scale		
				if inputPress.left == 1					
					saved.scale--
					if saved.scale < 1
						saved.scale = 4
					end if
					CallNativeFunction2(SetWindowScale, saved.scale, 0)
				end if
				if inputPress.right == 1
					saved.scale++
					if saved.scale > 4
						saved.scale = 1
					end if
					CallNativeFunction2(SetWindowScale, saved.scale, 0)
				end if
				break
			case 4 // Graphics Mode
				temp0 = 0
				if inputPress.left == 1
					temp0 = 1
					saved.graphics--
					if saved.graphics < 0
						saved.graphics = 2
					end if
				end if
				if inputPress.right == 1
					temp0 = 1
					saved.graphics++
					if saved.graphics > 2
						saved.graphics = 0
					end if
				end if
				if temp0 == 1
					CallFunction(ResetPal)
					LoadPalette("MainMenu.act", 0, 0, 0, 256)
					LoadPalette("SaveSlot.act", 1, 0, 0, 256)
					LoadPalette("AchieveIcon.act", 2, 0, 0, 256)
					CallFunction(BlackandWhite)
					CreateTempObject(TypeName[Palette Police], saved.graphics, 0, 0)
				end if				
				break
			case 5 // VSync
				temp0 = inputPress.left
				temp0 |= inputPress.right
				if temp0 == 1
					saved.vsync ^= 1
					CallNativeFunction2(SetWindowVSync, saved.vsync, 0)
				end if
				break
			case 6 // Scaling Mode
				if inputPress.left == 1					
					saved.scalemode--
					if saved.scalemode < 0
						saved.scalemode = 3
					end if
					CallNativeFunction2(SetWindowScaleMode, saved.scalemode, 0)
				end if
				if inputPress.right == 1
					saved.scalemode++
					if saved.scalemode > 3
						saved.scalemode = 0
					end if
					CallNativeFunction2(SetWindowScaleMode, saved.scalemode, 0)
				end if
				break
			case 7 // Refresh Rate
				temp0 = inputPress.left
				temp0 |= inputPress.right
				if temp0 == 1
					if saved.fps == 60
						saved.fps = 50
					else
						saved.fps = 60
					end if
					CallNativeFunction2(SetFrameRate, saved.fps, 0)
				end if
				break
		//none of the display options seem to work, does the exe not have those yet?
	end switch
	
	CheckEqual(inputPress.left, 1)
	temp0 = checkResult
	CheckEqual(inputPress.right, 1)
	temp0 |= checkResult
	CheckEqual(inputPress.buttonL, 1)
	temp0 |= checkResult
	CheckEqual(inputPress.buttonR, 1)
	temp0 |= checkResult
	if temp0 == 1
		CallFunction(main.sound)
		WriteSaveRAM()
	end if
	
	if inputPress.down == 1
		CallFunction(main.sound)
		menu.options.highlight++
		menu.options.highlight %= 8
	end if
	if inputPress.up == 1
		CallFunction(main.sound)
		menu.options.highlight--
		while menu.options.highlight < 0
			menu.options.highlight += 8
		loop
	end if
	
	temp0 = menu.options.highlight
	temp0 *= options.gap
	menu.sub.ymax = temp0
	temp0 -= 180
	menu.sub.ymin = temp0
	
	if menu.sub.ytarget < menu.sub.ymin
		menu.sub.ytarget = menu.sub.ymin
	else
		if menu.sub.ytarget > menu.sub.ymax
			menu.sub.ytarget = menu.sub.ymax
		end if
	end if
	
	if inputPress.buttonB == 1
		object.state = Menu.firstcontrol
		menu.sub.ytarget = 0
		menu.zigzag.ytarget = 0
	end if
end function

function gameplay.menu
	if inputPress.buttonL == 1
		object.state = display.menu
		menu.options.highlight = 0
	end if
	if inputPress.buttonR == 1
		object.state = abilities.menu
		menu.options.highlight = 0
	end if
	switch menu.options.highlight
		case 0 // Gameplay Highlighted
			if inputPress.left == 1
				object.state = display.menu	
			end if
			if inputPress.right == 1
				object.state = abilities.menu	
			end if
			break
		case 1 // Random Monitors
			temp0 = inputPress.left
			temp0 |= inputPress.right
			if temp0 == 1
				saved.randomMonitor ^= 1
			end if
			break
		case 2 // Infinite Lives
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.lives ^= 1
			end if
			break
		case 3 // Time Limit
			if inputPress.right == 1
				saved.timeLimit++
				saved.timeLimit %= 3
			end if
			if inputPress.left == 1
				saved.timeLimit--
				while saved.timeLimit < 0
					saved.timeLimit += 3
				loop
			end if
			break
		case 4 // Ground Speed Cap
			temp0 = inputPress.left
			temp0 |= inputPress.right
			if temp0 == 1
				saved.speedCap ^= 1
			end if
			break
		case 5 // Air Speed Cap
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.airSpeedCap ^= 1
			end if
			break
		case 6 // Rolljump Lock
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.Jumplock ^= 1
			end if
			break
		case 7 // Spike Bug
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.spikeBehavior ^= 1
			end if
			break
	end switch
	
	CheckEqual(inputPress.left, 1)
	temp0 = checkResult
	CheckEqual(inputPress.right, 1)
	temp0 |= checkResult
	CheckEqual(inputPress.buttonL, 1)
	temp0 |= checkResult
	CheckEqual(inputPress.buttonR, 1)
	temp0 |= checkResult
	if temp0 == 1
		CallFunction(main.sound)
		WriteSaveRAM()
	end if
	
	if inputPress.down == 1
		CallFunction(main.sound)
		menu.options.highlight++
		menu.options.highlight %= 8
	end if
	if inputPress.up == 1
		CallFunction(main.sound)
		menu.options.highlight--
		while menu.options.highlight < 0
			menu.options.highlight += 8
		loop
	end if
	
	temp0 = menu.options.highlight
	temp0 *= options.gap
	menu.sub.ymax = temp0
	temp0 -= 180
	menu.sub.ymin = temp0
	
	if menu.sub.ytarget < menu.sub.ymin
		menu.sub.ytarget = menu.sub.ymin
	else
		if menu.sub.ytarget > menu.sub.ymax
			menu.sub.ytarget = menu.sub.ymax
		end if
	end if
	
	if inputPress.buttonB == 1
		object.state = Menu.firstcontrol
		menu.sub.ytarget = 0
		menu.zigzag.ytarget = 0
	end if
end function

function abilities.menu
	if inputPress.buttonL == 1
		object.state = gameplay.menu
		menu.options.highlight = 0
	end if
	if inputPress.buttonR == 1
		object.state = visuals.menu
		menu.options.highlight = 0
	end if
	switch menu.options.highlight
		case 0 //Abilities Highlighted
			if inputPress.left == 1
				object.state = gameplay.menu
			end if
			if inputPress.right == 1
				object.state = visuals.menu
			end if
			break
		case 1 // Elemental
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.elemental ^= 1
			end if
			break
		case 2 // Spindash
			if inputPress.right == 1
				saved.spindash++
				saved.spindash %= 3
			end if
			if inputPress.left == 1
				saved.spindash--
				while saved.spindash < 0
					saved.spindash += 3
				loop
			end if
			break
		case 3 // Insta-Shield
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.Instashield ^= 1
			end if
			break
		case 4 // Peelout
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.Peelout ^= 1
			end if
			break
		case 5 // Drop Dash
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.Dropdash ^= 1
			end if
			break
		case 6 // Bubble Shield
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.bubble ^= 1
			end if
			break
		case 7 // Flight Cancel
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.FlightCancel ^= 1
			end if
			break
		case 8 // Super Cancel
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.Supercancel ^= 1
			end if
			break
	end switch
	
	CheckEqual(inputPress.left, 1)
	temp0 = checkResult
	CheckEqual(inputPress.right, 1)
	temp0 |= checkResult
	CheckEqual(inputPress.buttonL, 1)
	temp0 |= checkResult
	CheckEqual(inputPress.buttonR, 1)
	temp0 |= checkResult
	if temp0 == 1
		CallFunction(main.sound)
		WriteSaveRAM()
	end if
	
	if inputPress.down == 1
		CallFunction(main.sound)
		menu.options.highlight++
		menu.options.highlight %= 9
	end if
	if inputPress.up == 1
		CallFunction(main.sound)
		menu.options.highlight--
		while menu.options.highlight < 0
			menu.options.highlight += 9
		loop
	end if
	
	temp0 = menu.options.highlight
	temp0 *= options.gap
	menu.sub.ymax = temp0
	temp0 -= 180
	menu.sub.ymin = temp0
	
	if menu.sub.ytarget < menu.sub.ymin
		menu.sub.ytarget = menu.sub.ymin
	else
		if menu.sub.ytarget > menu.sub.ymax
			menu.sub.ytarget = menu.sub.ymax
		end if
	end if
	
	if inputPress.buttonB == 1
		object.state = Menu.firstcontrol
		menu.sub.ytarget = 0
		menu.zigzag.ytarget = 0
	end if
end function

function visuals.menu
	if inputPress.buttonL == 1
		object.state = abilities.menu
		menu.options.highlight = 0
	end if
	if inputPress.buttonR == 1
		object.state = sound.menu
		menu.options.highlight = 0
	end if
	switch menu.options.highlight
		case 0 //Visuals Highlighted
			if inputPress.left == 1
				object.state = abilities.menu
			end if
			if inputPress.right == 1
				object.state = sound.menu
			end if
			break
		case 1 // Spring Twirl
			if inputPress.right == 1
				saved.speen++
				saved.speen %= 3
			end if
			if inputPress.left == 1
				saved.speen--
				while saved.Speen < 0
					saved.speen += 3
				loop
			end if
			break
		case 2 // Mania Rotation
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.rotate ^= 1
			end if
			break
		case 3 // Shield Type
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.shieldType ^= 1
			end if
			break
		case 4 // Invincibility Type
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.invincibilityType ^= 1
			end if
			break
		case 5 // Extended Timer
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.Timer ^= 1
			end if
			break
		case 6 // Region
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.region ^= 1
			end if
			break
		case 7 // Title Screen
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.Title ^= 1
			end if
			break
		case 8 // Sonic Max Dash
			if inputPress.right == 1
				saved.SonicMaxDash++
				saved.SonicMaxDash %= 4
			end if
			if inputPress.left == 1
				saved.SonicMaxDash--
				while saved.SonicMaxDash < 0
					saved.SonicMaxDash += 4
				loop
			end if
			break
		case 9 // Tails Max Dash
			if inputPress.left == 1
				saved.TailsMaxDash--
				if saved.TailsMaxDash < 0
					saved.TailsMaxDash  = 3
				end if
			end if
			if inputPress.right == 1
				saved.TailsMaxDash++
				if saved.TailsMaxDash > 3
					saved.TailsMaxDash = 0
				end if
			end if
			break		
		case 10 // Knux Max Dash
			if inputPress.left == 1
				saved.KnuxMaxDash--
				if saved.KnuxMaxDash < 0
					saved.KnuxMaxDash  = 2
				end if
			end if
			if inputPress.right == 1
				saved.KnuxMaxDash++
				if saved.KnuxMaxDash > 2
					saved.KnuxMaxDash = 0
				end if
			end if
			break
		case 11 // Super Max Dash
			if inputPress.left == 1
				saved.SuperMaxDash--
				if saved.SuperMaxDash < 0
					saved.SuperMaxDash  = 2
				end if
			end if
			if inputPress.right == 1
				saved.SuperMaxDash++
				if saved.SuperMaxDash > 2
					saved.SuperMaxDash = 0
				end if
			end if
			break	
	end switch
	
	CheckEqual(inputPress.left, 1)
	temp0 = checkResult
	CheckEqual(inputPress.right, 1)
	temp0 |= checkResult
	CheckEqual(inputPress.buttonL, 1)
	temp0 |= checkResult
	CheckEqual(inputPress.buttonR, 1)
	temp0 |= checkResult
	if temp0 == 1
		CallFunction(main.sound)
		WriteSaveRAM()
	end if
	
	if inputPress.down == 1
		CallFunction(main.sound)
		menu.options.highlight++
		menu.options.highlight %= 12
	end if
	if inputPress.up == 1
		CallFunction(main.sound)
		menu.options.highlight--
		while menu.options.highlight < 0
			menu.options.highlight += 12
		loop
	end if
	
	temp0 = menu.options.highlight
	temp0 *= options.gap
	menu.sub.ymax = temp0
	temp0 -= 180
	menu.sub.ymin = temp0
	
	if menu.sub.ytarget < menu.sub.ymin
		menu.sub.ytarget = menu.sub.ymin
	else
		if menu.sub.ytarget > menu.sub.ymax
			menu.sub.ytarget = menu.sub.ymax
		end if
	end if
	
	if inputPress.buttonB == 1
		object.state = Menu.firstcontrol
		menu.sub.ytarget = 0
		menu.zigzag.ytarget = 0
	end if
end function

function sound.menu
	if inputPress.buttonL == 1
		object.state = visuals.menu
		menu.options.highlight = 0
	end if
	if inputPress.buttonR == 1
		object.state = display.menu
		menu.options.highlight = 0
	end if
	switch menu.options.highlight
		case 0 //Sound Highlighted
			if inputPress.left == 1
				object.state = visuals.menu
			end if
			if inputPress.right == 1
				object.state = display.menu
				//object.state = datamang.menu
			end if
			break
		case 1 // Music Volume
			if inputPress.left == 1
				temp0 = Engine.BGMVolume
				temp0 -= 10
				if temp0 < 0
					temp0 = 0
				end if
				Engine.BGMVolume = temp0
			end if
			if inputPress.right == 1
				temp0 = Engine.BGMVolume
				temp0 += 10
				if temp0 > 100
					temp0 = 100
				end if
				Engine.BGMVolume = temp0
			end if
			break
		case 2 // SFX Volume
			if inputPress.left == 1
				temp0 = Engine.SFXVolume
				temp0 -= 10
				if temp0 < 0
					temp0 = 0
				end if
				Engine.SFXVolume = temp0
			end if
			if inputPress.right == 1
				temp0 = Engine.SFXVolume
				temp0 += 10
				if temp0 > 100
					temp0 = 100
				end if
				Engine.SFXVolume = temp0
			end if
			break
		case 3 //CD Drowning
			CheckEqual(inputPress.left, 1)
			temp0 = checkResult
			CheckEqual(inputPress.right, 1)
			temp0 |= checkResult
			if temp0 == 1
				saved.Drowning ^= 1
			end if
			break
		case 4 // Super Music
			if inputPress.right == 1
				saved.Supermusic++
				saved.Supermusic %= 7
			end if
			if inputPress.left == 1
				saved.Supermusic--
				while saved.Supermusic < 0
					saved.Supermusic += 7
				loop
			end if
			break
	end switch
	
	CheckEqual(inputPress.left, 1)
	temp0 = checkResult
	CheckEqual(inputPress.right, 1)
	temp0 |= checkResult
	CheckEqual(inputPress.buttonL, 1)
	temp0 |= checkResult
	CheckEqual(inputPress.buttonR, 1)
	temp0 |= checkResult
	if temp0 == 1
		CallFunction(main.sound)
		WriteSaveRAM()
	end if
	
	if inputPress.down == 1
		CallFunction(main.sound)
		menu.options.highlight++
		menu.options.highlight %= 5
	end if
	if inputPress.up == 1
		CallFunction(main.sound)
		menu.options.highlight--
		while menu.options.highlight < 0
			menu.options.highlight += 5
		loop
	end if
	
	temp0 = menu.options.highlight
	temp0 *= options.gap
	menu.sub.ymax = temp0
	temp0 -= 180
	menu.sub.ymin = temp0
	
	if menu.sub.ytarget < menu.sub.ymin
		menu.sub.ytarget = menu.sub.ymin
	else
		if menu.sub.ytarget > menu.sub.ymax
			menu.sub.ytarget = menu.sub.ymax
		end if
	end if
	
	if inputPress.buttonB == 1
		object.state = Menu.firstcontrol
		menu.sub.ytarget = 0
		menu.zigzag.ytarget = 0
	end if
end function

function datamang.menu
	switch menu.options.highlight
		case 0 // Gameplay Highlighted
			if inputPress.left == 1
				object.state = sound.menu		
			end if
			if inputPress.right == 1
				object.state = display.menu
			end if
			break
	end switch
	
	CheckEqual(inputPress.left, 1)
	temp0 = checkResult
	CheckEqual(inputPress.right, 1)
	temp0 |= checkResult
	if temp0 == 1
		CallFunction(main.sound)
		WriteSaveRAM()
	end if
	
	if inputPress.down == 1
		CallFunction(main.sound)
		menu.options.highlight++
		menu.options.highlight %= 1
	end if
	if inputPress.up == 1
		CallFunction(main.sound)
		menu.options.highlight--
		while menu.options.highlight < 0
			menu.options.highlight += 1
		loop
	end if
	
	temp0 = menu.options.highlight
	temp0 *= options.gap
	menu.sub.ymax = temp0
	temp0 -= 180
	menu.sub.ymin = temp0
	
	if menu.sub.ytarget < menu.sub.ymin
		menu.sub.ytarget = menu.sub.ymin
	else
		if menu.sub.ytarget > menu.sub.ymax
			menu.sub.ytarget = menu.sub.ymax
		end if
	end if
	
	if inputPress.buttonB == 1
		object.state = Menu.firstcontrol
		menu.sub.ytarget = 0
		menu.zigzag.ytarget = 0
	end if
end function


function ExtrasControl	
	if inputPress.left == 1
		menu.extras.highlight--
		PlaySfx(SfxName[Score Add], 0)
		while menu.extras.highlight < 0
			menu.extras.highlight += extras.count
		loop
	else
		if inputPress.right == 1
			menu.extras.highlight++
			PlaySfx(SfxName[Score Add], 0)
			menu.extras.highlight %= extras.count
		end if
	end if
	
	temp0 = inputPress.start
	temp0 |= inputPress.buttonA
	if temp0 == 1
		PlaySfx(SfxName[Star Post], 0)
		switch menu.extras.highlight
			case 0 //Nick Arcade
				options.gameMode = 10
				options.attractMode = 0
				starPostID = 0

				stage.playerListPos = 0
				player.lives = 3
				player.score = 0
				player.scoreBonus = 50000
				stage.listPos = 1

				stage.activeList = BONUS_STAGE
				specialStage.emeralds = 0
				specialStage.listPos = 0
				player.continues = 0
				
				stage.player2Enabled = 0
				menu.loadcall = 0
				object.state = Menu.LoadOut
				break
				PlaySfx(SfxName[Fail], 0)
				break
			case 1 //Gamble Scramble
				stage.debugMode = 0
				stage.playerListPos = 0
				stage.player2Enabled = 0

				specialStage.emeralds = 0
				specialStage.listPos = 0
				player.continues = 0

				stage.activeList = REGULAR_STAGE
				stage.listPos = 7				
				menu.loadcall = 0
				options.gameMode = 5
				object.state = Menu.LoadOut
				break
				PlaySfx(SfxName[Fail], 0)
				break
		end switch
	end if
	
	
	if menu.sub.ytarget < menu.sub.ymin
		menu.sub.ytarget = menu.sub.ymin
	else
		if menu.sub.ytarget > menu.sub.ymax
			menu.sub.ytarget = menu.sub.ymax
		end if
	end if
	
	if inputPress.buttonB == 1
		object.state = Menu.firstcontrol
		menu.sub.ytarget = 0
		menu.zigzag.ytarget = 0
	end if
end function

function SaveControl	
	if menu.sub.ytarget < menu.sub.ymin
		menu.sub.ytarget = menu.sub.ymin
	else
		if menu.sub.ytarget > menu.sub.ymax
			menu.sub.ytarget = menu.sub.ymax
		end if
	end if
	
	switch save.substate
		case 0 //Normal Save Control
			CheckEqual(inputPress.buttonA, 1)
			temp0 = checkResult
			CheckEqual(inputPress.start, 1)
			temp0 |= checkResult
			if temp0 == 1
				CallFunction(PlayRingSound)
					if save.slot == 0
						save.substate = 4
					else
						arrayPos2 = save.slot
						arrayPos2--
						arrayPos2 <<= 3
						arrayPos2 += 1000
						CallFunction(LoadforDraw)
						if draw.new.save == 1
							save.substate = 5
						else
							if draw.zone == 12
								save.substate = 6
							else
								save.substate = 7
							end if
						end if
						
					end if
			end if
			if inputPress.up == 1
				PlaySfx(SfxName[Score Add], 0)
				save.slot--
				while save.slot < 0
					save.slot += 11
				loop
			end if
			
			if inputPress.down == 1
				PlaySfx(SfxName[Score Add], 0)
				save.slot++
				save.slot %= 11
			end if
			
			if inputPress.buttonB == 1
				object.state = Menu.firstcontrol
				menu.sub.ytarget = 0
				menu.zigzag.ytarget = 0
			end if
			
			if inputPress.buttonY == 1				
					arrayPos2 = save.slot
					arrayPos2--
					arrayPos2 <<= 3
					arrayPos2 += 1000
					CallFunction(LoadforDraw)
					
				CheckEqual(save.slot, 0)
				temp2 = checkResult
				CheckEqual(draw.new.save, 1)
				temp2 |= checkResult
				if temp2 == 1
					PlaySfx(SfxName[Fail], 0)
				else
					PlaySfx(SfxName[Skidding], 0)
					save.substate = 2
				end if
			end if			
			if inputPress.right == 1
					arrayPos2 = save.slot
					arrayPos2--
					arrayPos2 <<= 3
					arrayPos2 += 1000
					CallFunction(LoadforDraw)
					
				CheckEqual(save.slot, 0)
				temp2 = checkResult
				CheckEqual(draw.new.save, 1)
				temp2 |= checkResult
				if temp2 == 1
					PlaySfx(SfxName[Fail], 0)
				else
					PlaySfx(SfxName[Score Add], 0)
					save.substate = 1
				end if
			end if
			break
		case 1 //Delete Highlighted
			CheckEqual(inputPress.buttonB, 1)
			temp0 = checkResult
			CheckEqual(inputPress.left, 1)
			temp0 |= checkResult
			if temp0 == 1
				PlaySfx(SfxName[Score Add], 0)
				save.substate = 0
			else
				CheckEqual(inputPress.buttonA, 1)
				temp0 = checkResult
				CheckEqual(inputPress.start, 1)
				temp0 |= checkResult
				if temp0 == 1
					PlaySfx(SfxName[Skidding], 0)
					save.substate = 2
				end if				
			end if
			break
		case 2 //Deleted Confirm No
			CheckEqual(inputPress.right, 1)
			temp0 = checkResult
			CheckEqual(inputPress.left, 1)
			temp0 |= checkResult
			if temp0 == 1
				PlaySfx(SfxName[Score Add], 0)
				save.substate = 3
			else				
				CheckEqual(inputPress.buttonA, 1)
				temp0 = checkResult
				CheckEqual(inputPress.start, 1)
				temp0 |= checkResult
				CheckEqual(inputPress.buttonB, 1)
				temp0 |= checkResult
				if temp0 == 1
					PlaySfx(SfxName[Star Post], 0)
					save.substate = 0
				end if
			end if
			break			
		case 3 //Deleted Confirm Yes
			CheckEqual(inputPress.right, 1)
			temp0 = checkResult
			CheckEqual(inputPress.left, 1)
			temp0 |= checkResult
			if temp0 == 1
				PlaySfx(SfxName[Score Add], 0)
				save.substate = 2
			else				
				if inputPress.buttonB == 1
					PlaySfx(SfxName[Star Post], 0)
					save.substate = 0				
				else
					CheckEqual(inputPress.buttonA, 1)
					temp0 = checkResult
					CheckEqual(inputPress.start, 1)
					temp0 |= checkResult
					if temp0 == 1
						PlaySfx(SfxName[Lose Rings], 0)
						save.substate = 0						
							arrayPos1 = save.Slot
							arrayPos1--
							arrayPos1 <<= 3
							arrayPos1 += 1000
							saveRAM[arrayPos1] = 0			//Character
							arrayPos1++
							saveRAM[arrayPos1] = 0			//Lives
							arrayPos1++
							saveRAM[arrayPos1] = 0			//Score
							arrayPos1++
							saveRAM[arrayPos1] = 0			//Score Extra Life
							arrayPos1++
							saveRAM[arrayPos1] = 0			//ZoneID
							arrayPos1++
							saveRAM[arrayPos1] = 0			//Emeralds
							arrayPos1++
							saveRAM[arrayPos1] = 0			//SpecialZoneID
							arrayPos1++
							saveRAM[arrayPos1] = 0			//Continue
							WriteSaveRAM()						
					end if
				end if
			end if
			break
		case 4 //No save Character
			if inputPress.buttonB == 1
				save.substate = 0				
			else
				CheckEqual(inputPress.left, 1)
				temp0 = checkResult
				CheckEqual(inputPress.up, 1)
				temp0 |= checkResult
				if temp0 == 1
					PlaySfx(SfxName[Score Add], 0)
					save.charselect--
					while save.charselect < 0
						save.charselect += 5
					loop
				end if
				
				CheckEqual(inputPress.right, 1)
				temp0 = checkResult
				CheckEqual(inputPress.down, 1)
				temp0 |= checkResult
				if temp0 == 1
					PlaySfx(SfxName[Score Add], 0)
					save.charselect++
					save.charselect %= 5
				end if
				
				CheckEqual(inputPress.buttonA, 1)
				temp0 = checkResult
				CheckEqual(inputPress.start, 1)
				temp0 |= checkResult
				if temp0 == 1
					options.gameMode = 0
					options.attractMode = 0
					starPostID = 0

					stage.playerListPos = save.charselect
					player.lives = 3
					player.continues = 0
					player.score = 0
					player.scoreBonus = 50000
					stage.activeList = REGULAR_STAGE
					stage.listPos = 0
					specialStage.emeralds = 0
					specialStage.listPos = 0
					
					if stage.playerListPos < 3
						stage.player2Enabled = 0
					end if				
					menu.loadcall = 0
					object.state = Menu.LoadOut
				end if
			end if
			break
		case 5 // New Save Character
			if inputPress.buttonB == 1
				save.substate = 0				
			else
				CheckEqual(inputPress.left, 1)
				temp0 = checkResult
				CheckEqual(inputPress.up, 1)
				temp0 |= checkResult
				if temp0 == 1
					PlaySfx(SfxName[Score Add], 0)
					save.charselect--
					while save.charselect < 0
						save.charselect += 5
					loop
				end if
				
				CheckEqual(inputPress.right, 1)
				temp0 = checkResult
				CheckEqual(inputPress.down, 1)
				temp0 |= checkResult
				if temp0 == 1
					PlaySfx(SfxName[Score Add], 0)
					save.charselect++
					save.charselect %= 5
				end if
				
				CheckEqual(inputPress.buttonA, 1)
				temp0 = checkResult
				CheckEqual(inputPress.start, 1)
				temp0 |= checkResult
				if temp0 == 1
					arrayPos1 = save.Slot
					arrayPos1--
					arrayPos1 <<= 3
					arrayPos1 += 1000
					saveRAM[arrayPos1] = save.charselect	//Character
					arrayPos1++
					saveRAM[arrayPos1] = 3			//Lives
					arrayPos1++
					saveRAM[arrayPos1] = 0			//Score
					arrayPos1++
					saveRAM[arrayPos1] = 50000		//Score Extra Life
					arrayPos1++
					saveRAM[arrayPos1] = 1			//ZoneID
					arrayPos1++
					saveRAM[arrayPos1] = 0			//Emeralds
					arrayPos1++
					saveRAM[arrayPos1] = 0			//SpecialZoneID
					arrayPos1++
					saveRAM[arrayPos1] = 0			//Continues
					WriteSaveRAM()
					save.substate = 7
				end if
			end if
			break
		case 6 // Complete Save Stage
			temp0 = inputPress.left
			temp0 |= inputPress.up
			if temp0 == 1
				PlaySfx(SfxName[Score Add], 0)
				save.complete.stage--
				if save.complete.stage == 6
				end if
				while save.complete.stage < 0
					save.complete.stage += 11
				loop
			end if
			temp0 = inputPress.right
			temp0 |= inputPress.down
			if temp0 == 1
				PlaySfx(SfxName[Score Add], 0)
				save.complete.stage++
				if save.complete.stage == 6
				end if
				save.complete.stage %= 11
			end if
			if inputPress.buttonB == 1
				save.substate = 0
				save.complete.stage = 0
			end if
			temp0 = inputPress.buttonA
			temp0 |= inputPress.start
			if temp0 == 1
				CallFunction(PlayRingSound)
				options.gameMode = 1
				options.saveSlot = save.slot
				options.saveSlot--
				options.attractMode = 0
				starPostID = 0

				arrayPos1 = options.saveSlot
				arrayPos1 <<= 3
				arrayPos1 += 1000
				stage.playerListPos = saveRAM[arrayPos1]
				arrayPos1++
				player.lives = saveRAM[arrayPos1]
				arrayPos1++
				player.score = 0
				arrayPos1++
				player.scoreBonus = 50000
				arrayPos1++

				stage.activeList = REGULAR_STAGE
				GetTableValue(stage.listPos, save.complete.stage, ZoneCompleteLoad)
					
				arrayPos1++
				specialStage.emeralds = saveRAM[arrayPos1]
				arrayPos1++
				specialStage.listPos = saveRAM[arrayPos1]
				arrayPos1++
				player.continues = saveRAM[arrayPos1]
				
				if stage.playerListPos < 3
					stage.player2Enabled = 0
				end if				
				menu.loadcall = 0
				object.state = Menu.LoadOut
			end if
			break
		case 7 //Load Game
				CallFunction(PlayRingSound)
				options.gameMode = 1
				options.saveSlot = save.slot
				options.saveSlot--
				options.attractMode = 0
				starPostID = 0

				arrayPos1 = options.saveSlot
				arrayPos1 <<= 3
				arrayPos1 += 1000
				stage.playerListPos = saveRAM[arrayPos1]
				arrayPos1++
				player.lives = saveRAM[arrayPos1]
				arrayPos1++
				player.score = saveRAM[arrayPos1]
				arrayPos1++
				player.scoreBonus = saveRAM[arrayPos1]
				arrayPos1++

				temp0 = saveRAM[arrayPos1]
					stage.activeList = REGULAR_STAGE
					temp0 -= 1
					stage.listPos = temp0
					
				arrayPos1++
				specialStage.emeralds = saveRAM[arrayPos1]
				arrayPos1++
				specialStage.listPos = saveRAM[arrayPos1]
				arrayPos1++
				player.continues = saveRAM[arrayPos1]
				
				if stage.playerListPos < 3
					stage.player2Enabled = 0
				end if				
				menu.loadcall = 0
				object.state = Menu.LoadOut
			break
	end switch
	
	temp0 = save.slot
	temp0 *= save.gap
	menu.sub.ymax = temp0
	temp0 -= 150
	menu.sub.ymin = temp0
end function

function AchieveControl
	if menu.sub.ytarget < menu.sub.ymin
		menu.sub.ytarget = menu.sub.ymin
	else
		if menu.sub.ytarget > menu.sub.ymax
			menu.sub.ytarget = menu.sub.ymax
		end if
	end if
	
	if inputPress.up == 1
		PlaySfx(SfxName[Score Add], 0)
		achieve.highlight--
		while achieve.highlight < 0
			achieve.highlight += achieve.count
		loop
	else
		if inputPress.down == 1
			PlaySfx(SfxName[Score Add], 0)
			achieve.highlight++
			achieve.highlight %= achieve.count
		end if
	end if
	
	if inputPress.buttonB == 1
		object.state = Menu.firstcontrol
		menu.sub.ytarget = 0
		menu.zigzag.ytarget = 0
	end if
	
	temp0 = achieve.highlight
	temp0 *= achieve.gap
	menu.sub.ymax = temp0
	temp0 -= 130
	menu.sub.ymin = temp0
end function


event ObjectMain
	CallFunction(menu.holdmovement)
	CallFunction(object.state)
	screen.xoffset++
	if screen.xoffset >= 3970
		CallFunction(Plane.Snapback)
	end if
	CallFunction(YOffsetControl)
	menu.timer++
	menu.timer %= 60

		//Slots Time
		if saveRAM[800] < 100
			saveRAM[800] = 59999
			WriteSaveRam()
		end if
		
		slots.milliseconds = saveRAM[800]
		slots.seconds = 0
		slots.minutes = 0
		while slots.milliseconds >= 6000
			slots.minutes++
			slots.milliseconds -= 6000
		loop
		
		while slots.milliseconds >= 100
			slots.seconds++
			slots.milliseconds -= 100
		loop
end event










//Drawing

function AchieveDraw
	temp0 = screen.ycenter
	temp0 += 125
	temp0 -= menu.zigzag.yoffset
	temp0 <<= 1
	
	temp0 -= menu.sub.yoffset
	
	DrawSpriteScreenXY(4, screen.xcenter, temp0)
	temp0 += 12
	DrawSpriteScreenXY(195, screen.xcenter, temp0)
	temp1 = screen.xcenter
	temp1 += 32
	DrawNumbers(69, temp1, temp0, achieve.compcount, 2, 10, 0)	
	temp1 += 30
	DrawNumbers(69, temp1, temp0, achieve.count, 2, 10, 0)	
	temp0 += options.gap
	
	temp5 = 0
	while temp5 < achieve.count
			GetTableValue(temp1, temp5, AchieveOrder)
			arrayPos1 = 400
			arrayPos1 += temp1			
			if temp5 == achieve.highlight
				//Draw Highlight
				SetActivePalette(1, 0, screen.ysize)
				DrawSpriteScreenXY(196, screen.xcenter, temp0)
				SetActivePalette(0, 0, screen.ysize)
				
				temp2 = temp1
				temp2 += 237
				DrawSpriteScreenXY(temp2, screen.xcenter, temp0)
			else
				//Draw Unhighlight
				temp2 = temp1
				temp2 += 197
				DrawSpriteScreenXY(temp2, screen.xcenter, temp0)
			end if
			DrawSpriteScreenXY(194, screen.xcenter, temp0)
			CallFunction(AchieveDescribe)
			temp2 = temp1
			temp2 += 277
			if saveRAM[arrayPos1] == 1
				SetActivePalette(2, 0, screen.ysize)
			else
				SetActivePalette(3, 0, screen.ysize)
			end if
			DrawSpriteScreenXY(temp2, screen.xcenter, temp0)
			SetActivePalette(0, 0, screen.ysize)
			

			
	temp0 += achieve.gap
	temp5++
	loop
end function

function SaveEmeralds
	SetActivePalette(1, 0, screen.ysize)
	temp4 = 0
	while temp4 < 7
		if draw.new.save == 0
			GetBit(temp5, draw.emeralds, temp4)
		else
			temp5 = 0
		end if
		temp6 = 147
		temp6 += temp4
		if temp5 == 0
			temp6 += 7
		end if
		DrawSpriteScreenXY(temp6, screen.xcenter, temp0)	
	temp4++
	loop	
	SetActivePalette(0, 0, screen.ysize)
end function

function LoadforDraw
	draw.new.save = 0
	arrayPos3 = arrayPos2
	draw.character = saveRAM[arrayPos3]
	arrayPos3++
	draw.lives = saveRAM[arrayPos3]
	arrayPos3 += 3
	switch saveRAM[arrayPos3]
		case 1
		case 2
			draw.zone = 0
			break
		case 3
		case 4
			draw.zone = 1
			break
		case 5
		case 6
			draw.zone = 2
			break
		case 7
		case 8
			draw.zone = 3
			break
		case 9
		case 10
			draw.zone = 4
			break
		case 11
		case 12
			draw.zone = 5
			break
		case 13
		case 14
			draw.zone = 6
			break
		case 15
		case 16
		case 17
			draw.zone = 7
			break
		case 18
			draw.zone = 8
			break
		case 19
			draw.zone = 9
			break
		case 20
			draw.zone = 10
			break
		case 21
			draw.zone = 11
			break
		case 22
			draw.zone = 12
			break
	end switch	
	
	switch saveRAM[arrayPos3]
		case 1
		case 3
		case 5
		case 7
		case 9
		case 11
		case 13
		case 15
			draw.act = 0
			break
		case 2
		case 4
		case 6
		case 8
		case 10
		case 12
		case 14
		case 16
			draw.act = 1
			break
		case 17
			draw.act = 2
			break
		case 18
		case 19
		case 20
		case 21
		case 22
			draw.act = 3
			break
	end switch	
	
	arrayPos3++
	draw.emeralds = saveRAM[arrayPos3]
	arrayPos3++
	arrayPos3++
	draw.continues = saveRAM[arrayPos3]

	
	if draw.lives == 0
		draw.new.save = 1
	end if
end function

function SaveDraw
	temp0 = screen.ycenter
	temp0 += 125
	temp0 -= menu.zigzag.yoffset
	temp0 <<= 1
	
	temp0 -= menu.sub.yoffset
	
	DrawSpriteScreenXY(0, screen.xcenter, temp0)
	temp0 += options.gap
	temp0 += options.gap
	
	temp1 = 0
		while temp1 < 11 //(draw 11 slots) 
		if temp1 == 0 //no save
			if temp1 == save.slot
				SetActivePalette(1, 0, screen.ysize)
				DrawSpriteScreenXY(85, screen.xcenter, temp0)				
				SetActivePalette(0, 0, screen.ysize)
				temp2 = screen.xcenter
				temp2 -= 140
				DrawRect(temp2, temp0, 280, 42, 0, 0, 0, save.opacity)
				switch save.substate
					case 4
						temp2 = save.charselect
						temp2 += 125
						DrawSpriteScreenXY(temp2, screen.xcenter, temp0)
						break
					default
						DrawSpriteScreenXY(130, screen.xcenter, temp0)
						break
				end switch
				DrawSpriteScreenXY(191, screen.xcenter, temp0)
			else			
				DrawSpriteScreenXY(130, screen.xcenter, temp0)
				DrawSpriteScreenXY(100, screen.xcenter, temp0)
			end if
			DrawSpriteScreenXY(83, screen.xcenter, temp0)
		else
			arrayPos2 = temp1
			arrayPos2--
			arrayPos2 <<= 3
			arrayPos2 += 1000
			CallFunction(LoadforDraw)
			if draw.new.save == 0
				if temp1 == save.slot
					if save.substate == 6
						if menu.timer < 30
							DrawSpriteScreenXY(14, screen.xcenter, temp0)
							DrawSpriteScreenXY(15, screen.xcenter, temp0)
						end if
						GetTableValue(draw.zone,save.complete.stage,ZoneCompleteDraw)
						//draw.zone = save.complete.stage
						draw.act = 3
					end if
					temp2 = draw.zone
					temp2 += 86
					SetActivePalette(1, 0, screen.ysize)
					DrawSpriteScreenXY(temp2, screen.xcenter, temp0)						
					SetActivePalette(0, 0, screen.ysize)
					temp2 = screen.xcenter
					temp2 -= 140
					DrawRect(temp2, temp0, 280, 42, 0, 0, 0, save.opacity)
					switch save.substate
						case 2
						case 3
							DrawSpriteScreenXY(102, screen.xcenter, temp0)
							DrawSpriteScreenXY(103, screen.xcenter, temp0)
							DrawSpriteScreenXY(104, screen.xcenter, temp0)
							temp2 = 108
							temp2 -= save.substate							
							DrawSpriteScreenXY(temp2, screen.xcenter, temp0)
							break
						default
							temp2 = draw.zone
							temp2 += 174
							DrawSpriteScreenXY(temp2, screen.xcenter, temp0)		
							if draw.zone != 12
								DrawSpriteScreenXY(193, screen.xcenter, temp0)
								temp2 = draw.act
								temp2 += 187
								DrawSpriteScreenXY(temp2, screen.xcenter, temp0)							
							end if
							if saved.lives == 0
								DrawNumbers(164, screen.xcenter, temp0, draw.lives, 2, 10, 0)
								temp2 = temp0
								temp2 += 20
								DrawNumbers(164, screen.xcenter, temp2, draw.continues, 2, 10, 0)
							end if
							break
					end switch
				else
					temp2 = draw.zone
					temp2 += 108
					DrawSpriteScreenXY(temp2, screen.xcenter, temp0)		
					if draw.zone != 12
						DrawSpriteScreenXY(107, screen.xcenter, temp0)
						temp2 = draw.act
						temp2 += 121
						DrawSpriteScreenXY(temp2, screen.xcenter, temp0)							
					end if
					if saved.lives == 0
						DrawNumbers(137, screen.xcenter, temp0, draw.lives, 2, 10, 0)
						temp2 = temp0
						temp2 += 20
						DrawNumbers(137, screen.xcenter, temp2, draw.continues, 2, 10, 0)
					end if
				end if
				temp2 = draw.character
				temp2 += 125
				DrawSpriteScreenXY(temp2, screen.xcenter, temp0)
				if saved.lives == 0
					temp2 += 6				
					DrawSpriteScreenXY(temp2, screen.xcenter, temp0)
				end if
				DrawSpriteScreenXY(84, screen.xcenter, temp0)
			else
				if temp1 == save.slot					
					SetActivePalette(1, 0, screen.ysize)
					DrawSpriteScreenXY(99, screen.xcenter, temp0)					
					SetActivePalette(0, 0, screen.ysize)
					temp2 = screen.xcenter
					temp2 -= 140
					DrawRect(temp2, temp0, 280, 42, 0, 0, 0, save.opacity)
					switch save.substate
						case 5
							temp2 = save.charselect
							temp2 += 125
							DrawSpriteScreenXY(temp2, screen.xcenter, temp0)
							break
						default
							DrawSpriteScreenXY(130, screen.xcenter, temp0)
							break
					end switch					
					DrawSpriteScreenXY(192, screen.xcenter, temp0)
				else
					DrawSpriteScreenXY(130, screen.xcenter, temp0)
					DrawSpriteScreenXY(101, screen.xcenter, temp0)
				end if		
				if saved.lives == 0
					DrawSpriteScreenXY(136, screen.xcenter, temp0)
				end if
				DrawSpriteScreenXY(84, screen.xcenter, temp0)
			end if
			CallFunction(SaveEmeralds)
		end if	
	temp0 += save.gap
	temp1++
	loop
	
	temp0 = screen.ycenter
	temp0 *= 3
	temp0 -= menu.zigzag.yoffset
	switch save.substate
		case 1
		case 2
		case 3
			DrawSpriteScreenXY(162, screen.xcenter, temp0)
			break
		case 0		
			DrawSpriteScreenXY(161, screen.xcenter, temp0)
			break
	end switch
end function

function ModesDraw	
	temp0 = screen.ycenter
	temp0 += 125
	temp0 -= menu.zigzag.yoffset
	temp0 <<= 1
	
	temp0 -= menu.sub.yoffset
	
	DrawSpriteScreenXY(1, screen.xcenter, temp0)
	temp0 += options.gap
	temp0 += options.gap
	
	temp1 = 0
	while temp1 < modes.count
		if temp1 == menu.modes.highlight
			SetActivePalette(1, 0, screen.ysize)
			temp2 = 347
		else
			temp2 = 342
		end if
		temp2 += temp1
		DrawSpriteScreenXY(temp2, screen.xcenter, temp0)
		DrawSpriteScreenXY(temp2, screen.xcenter, temp0)
		SetActivePalette(0, 0, screen.ysize)
	temp0 += save.gap
	temp1++
	loop
end function

function ExtrasDraw	
	temp0 = screen.ycenter
	temp0 += 125
	temp0 -= menu.zigzag.yoffset
	temp0 <<= 1
	if screen.xsize == 320	
		DrawSpriteScreenXY(3, 50, temp0)
	else
		DrawSpriteScreenXY(3, screen.xcenter, temp0)
	end if
	temp0 += options.gap
	temp0 += options.gap
	
	
	//Draw First Extra
	temp7 = 0
	temp1 = 0
	temp6 = screen.ysize
	temp6 -= temp0
	
	while temp1 < screen.xsize
		if temp7 < extras.count
			if temp7 == menu.extras.highlight			
				SetActivePalette(1, 0, screen.ysize)
				temp2 = temp7
				temp2 += 358
				DrawSpriteScreenXY(temp2, temp1, temp0)
				SetActivePalette(0, 0, screen.ysize)			
			end if
				temp2 = temp7
				temp2 += 352
				DrawSpriteScreenXY(temp2, temp1, temp0)
		else
			DrawSpriteScreenXY(364, temp1, temp0)			
		end if		
		switch temp7
			case 0
				temp0 -= 15
				DrawSpriteScreenXY(365, temp1, temp0)
				temp3 = temp1
				temp3 += 80
				temp4 = temp0
				temp4 += 30
				DrawNumbers(69, temp3, temp4, saveRAM[620], 3, 10, 0)
				temp0 += 15
				break
			case 1
				temp0 -= 15
				DrawSpriteScreenXY(372, temp1, temp0)
				temp3 = temp1
				temp3 += 80
				temp4 = temp0
				temp4 += 30
				
				temp3 += 10
				DrawNumbers(69, temp3, temp4, slots.milliseconds, 2, 10, 1)
				temp3 -= 16
				DrawSpriteScreenXY(373, temp3, temp4)
				temp3 -= 9
				DrawNumbers(69, temp3, temp4, slots.seconds, 2, 10, 1)
				temp3 -= 14
				DrawSpriteScreenXY(374, temp3, temp4)
				temp3 -= 10
				DrawNumbers(69, temp3, temp4, slots.minutes, 2, 10, 0)

				temp4 += 175
				temp3 += 30

				if saveRAM[801] >= 0
					DrawNumbers(69, temp3, temp4, saveRAM[801], 6, 10, 0)
				else
					saveRAM[802] = saveRAM[801]
					FlipSign(saveRAM[802])
					temp3 += 10
					DrawNumbers(69, temp3, temp4, saveRAM[802], 6, 10, 0)
					temp3 -= 10
					while saveRAM[802] >= 10
						temp3 -= 10
						saveRAM[802] /= 10
					loop
					DrawSpriteScreenXY(375, temp3, temp4) //minus sign
				end if

				temp4 -= 175

				temp0 += 15
				temp4 += 15
				break
		end switch
		DrawRect(temp1, temp0, 100, 1, color7, color7, color7, 255)
		DrawRect(temp1, temp0, 1, temp6, color7, color7, color7, 255)
	temp7++
	temp1 += 100
	loop
	if screen.xsize <= 320
		temp4 -= 80
		DrawSpriteScreenXY(370, 195,temp4)			
		temp4 += 30
		DrawNumbers(69, 305, temp4, saveRAM[997], 3, 10, 0)
		temp4 += 10
		DrawNumbers(69, 305, temp4, saveRAM[998], 3, 10, 0)
	else
		if screen.xsize == 384
			temp4 -= 80
			DrawSpriteScreenXY(370, 260,temp4)			
			temp4 += 30
			DrawNumbers(69, 370, temp4, saveRAM[997], 3, 10, 0)
			temp4 += 10
			DrawNumbers(69, 370, temp4, saveRAM[998], 3, 10, 0)
		else
			temp4 -= 80
			DrawSpriteScreenXY(370, 300,temp4)			
			temp4 += 30
			DrawNumbers(69, 410, temp4, saveRAM[997], 3, 10, 0)
			temp4 += 10
			DrawNumbers(69, 410, temp4, saveRAM[998], 3, 10, 0)
		end if
	end if
end function

function OptionsDrawSetup
	if temp4 == menu.options.highlight
		SetPaletteEntry(0, 6, 0xE0E000)
		temp3 -= 10
	end if
	temp4++
end function

function display.draw
	temp0 = screen.ycenter
	temp0 += 125
	temp0 -= menu.zigzag.yoffset
	temp0 <<= 1
	
	temp0 -= menu.sub.yoffset
	
	DrawSpriteScreenXY(2, screen.xcenter, temp0)
	temp0 += options.gap
	temp0 += options.gap
	
	temp1 = 20
	temp2 = screen.xsize
	temp2 -= 60
	temp4 = 0

	//Option Subheader
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(391, screen.xcenter, temp0)
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Full Screen
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(405, temp3, temp0)
	
	temp3 = temp2
	switch saved.fullscreen
		case 1
			temp3 -= 11
			DrawSpriteScreenXY(67, temp3, temp0)
			break
		default
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Screen Width
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(406, temp3, temp0)
	temp3 += 73
	DrawSpriteScreenXY(407, temp3, temp0)
	
	temp3 = temp2
	switch screen.xsize
		case 320
			temp3 -= 11
			DrawSpriteScreenXY(414, temp3, temp0)
			break
		case 384
			temp3 -= 11
			DrawSpriteScreenXY(421, temp3, temp0)
			break
		case 426
			temp3 -= 15
			DrawSpriteScreenXY(413, temp3, temp0)
			break
		default
			temp3 -= 31
			DrawSpriteScreenXY(57, temp3, temp0)
			break	
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Window Scale
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(408, temp3, temp0)
	temp3 += 69
	DrawSpriteScreenXY(409, temp3, temp0)
	
	temp3 = temp2
	switch saved.scale
		case 1
			temp3 -= 4
			DrawSpriteScreenXY(70, temp3, temp0)
			break
		case 2
			temp3 -= 4
			DrawSpriteScreenXY(71, temp3, temp0)
			break		
		case 3
			temp3 -= 4
			DrawSpriteScreenXY(72, temp3, temp0)
			break
		case 4
			temp3 -= 4
			DrawSpriteScreenXY(73, temp3, temp0)
			break				
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Graphics Mode
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(424, temp3, temp0)
	temp3 += 89
	DrawSpriteScreenXY(412, temp3, temp0)
	
	temp3 = temp2
	switch saved.graphics
		case 0 //Mobile
			temp3 -= 28
			DrawSpriteScreenXY(426, temp3, temp0)
			break
		case 1 //Emu
			temp3 -= 42
			DrawSpriteScreenXY(427, temp3, temp0)
			break		
		case 2 //Hard
			temp3 -= 44
			DrawSpriteScreenXY(425, temp3, temp0)
			break				
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//VSync
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(410, temp3, temp0)
	
	temp3 = temp2
	switch saved.Vsync
		case 1
			temp3 -= 11
			DrawSpriteScreenXY(67, temp3, temp0)
			break
		default
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Scaling Mode
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(411, temp3, temp0)
	temp3 += 78
	DrawSpriteScreenXY(412, temp3, temp0)
	
	temp3 = temp2
	switch saved.scalemode
		case 0
			temp3 -= 38
			DrawSpriteScreenXY(415, temp3, temp0)
			break
		case 1
			temp3 -= 35
			DrawSpriteScreenXY(416, temp3, temp0)
			break		
		case 2
			temp3 -= 80
			DrawSpriteScreenXY(417, temp3, temp0)
			temp3 += 60
			DrawSpriteScreenXY(418, temp3, temp0)
			break		
		case 3
			temp3 -= 37
			DrawSpriteScreenXY(418, temp3, temp0)
			break				
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Frame Rate
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(422, temp3, temp0)
	temp3 += 62
	DrawSpriteScreenXY(423, temp3, temp0)
	
	temp3 = temp2
	DrawNumbers(69, temp3, temp0, saved.fps, 3, 10, 0)
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)
end function

function gameplay.draw
	temp0 = screen.ycenter
	temp0 += 125
	temp0 -= menu.zigzag.yoffset
	temp0 <<= 1
	
	temp0 -= menu.sub.yoffset
	
	DrawSpriteScreenXY(2, screen.xcenter, temp0)
	temp0 += options.gap
	temp0 += options.gap
	
	temp1 = 20
	temp2 = screen.xsize
	temp2 -= 60
	temp4 = 0

	//Option Subheader
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(392, screen.xcenter, temp0)
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Random Monitor
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(397, temp3, temp0)
	temp3 += 77
	DrawSpriteScreenXY(398, temp3, temp0)
	
	temp3 = temp2
		switch saved.randomMonitor
		case 1
			temp3 -= 11
			DrawSpriteScreenXY(67, temp3, temp0)
			break
		default
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)	


	//Infinite Lives
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(49, temp3, temp0)
	temp3 += 77
	DrawSpriteScreenXY(63, temp3, temp0)
	
	temp3 = temp2
	switch saved.lives
		case 1
			temp3 -= 11
			DrawSpriteScreenXY(67, temp3, temp0)
			break
		default
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Time Limit
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(366, temp3, temp0)
	temp3 += 45
	DrawSpriteScreenXY(367, temp3, temp0)
	
	temp3 = temp2
	switch saved.timeLimit
		case 0					
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break
		case 1
			temp3 -= 45
			DrawSpriteScreenXY(72, temp3, temp0)
			temp3 += 20
			DrawSpriteScreenXY(368, temp3, temp0)
			break
		case 2
			temp3 -= 51
			DrawSpriteScreenXY(70, temp3, temp0)
			temp3 += 9
			DrawSpriteScreenXY(69, temp3, temp0)
			temp3 += 20
			DrawSpriteScreenXY(368, temp3, temp0)
			break		
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Ground Speed Cap
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(25, temp3, temp0)
	temp3 += 74
	DrawSpriteScreenXY(22, temp3, temp0)
	temp3 += 62
	DrawSpriteScreenXY(23, temp3, temp0)
	
	temp3 = temp2
	switch saved.speedCap
		case 1
			temp3 -= 11
			DrawSpriteScreenXY(67, temp3, temp0)
			break
		default
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)
	
	//Air Speed Cap
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(24, temp3, temp0)
	temp3 += 36
	DrawSpriteScreenXY(22, temp3, temp0)
	temp3 += 62
	DrawSpriteScreenXY(23, temp3, temp0)
	
	temp3 = temp2
	switch saved.airSpeedCap
		case 1
			temp3 -= 11
			DrawSpriteScreenXY(67, temp3, temp0)
			break
		default
			temp3 -= 15
		DrawSpriteScreenXY(68, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Rolljump Lock
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(26, temp3, temp0)
	temp3 += 94
	DrawSpriteScreenXY(27, temp3, temp0)
	
	temp3 = temp2
	switch saved.Jumplock
		case 1
			temp3 -= 11
			DrawSpriteScreenXY(67, temp3, temp0)
			break
		default
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Spike Bug
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(64, temp3, temp0)
	temp3 += 57
	DrawSpriteScreenXY(65, temp3, temp0)
	
	temp3 = temp2
	switch saved.spikeBehavior
		case 1
			temp3 -= 11
			DrawSpriteScreenXY(67, temp3, temp0)
			break
		default
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)
end function

function abilities.draw
	temp0 = screen.ycenter
	temp0 += 125
	temp0 -= menu.zigzag.yoffset
	temp0 <<= 1
	
	temp0 -= menu.sub.yoffset
	
	DrawSpriteScreenXY(2, screen.xcenter, temp0)
	temp0 += options.gap
	temp0 += options.gap
	
	temp1 = 20
	temp2 = screen.xsize
	temp2 -= 60
	temp4 = 0

	//Option Subheader
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(393, screen.xcenter, temp0)
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Elemental
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(51, temp3, temp0)
	temp3 += 104
	DrawSpriteScreenXY(29, temp3, temp0)
	
	temp3 = temp2
	switch saved.elemental
		case 1
			temp3 -= 11
			DrawSpriteScreenXY(67, temp3, temp0)
			break
		default
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break				
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Spindash
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(32, temp3, temp0)
	temp3 += 38
	DrawSpriteScreenXY(34, temp3, temp0)
	
	temp3 = temp2
	switch saved.spindash
		case 0
			temp3 -= 34
			DrawSpriteScreenXY(50, temp3, temp0)
			temp3 += 58
			DrawSpriteScreenXY(71, temp3, temp0)
			break
		case 1
			temp3 -= 40
			DrawSpriteScreenXY(50, temp3, temp0)
			temp3 += 58
			DrawSpriteScreenXY(54, temp3, temp0)
			break
		case 2
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Insta-shield
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(35, temp3, temp0)
	temp3 += 49
	DrawSpriteScreenXY(29, temp3, temp0)
	
	temp3 = temp2
	switch saved.Instashield
		case 1
			temp3 -= 11
			DrawSpriteScreenXY(67, temp3, temp0)
			break
		default
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Peelout
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(36, temp3, temp0)
	temp3 += 41
	DrawSpriteScreenXY(37, temp3, temp0)
	
	temp3 = temp2
	switch saved.Peelout
		case 1
			temp3 -= 11
			DrawSpriteScreenXY(67, temp3, temp0)
			break
		default
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Dropdash
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(33, temp3, temp0)
	temp3 += 53
	DrawSpriteScreenXY(34, temp3, temp0)
	
	temp3 = temp2
	switch saved.Dropdash
		case 1
			temp3 -= 11
			DrawSpriteScreenXY(67, temp3, temp0)
			break
		default
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)	
	
	//Bubble Shield
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(62, temp3, temp0)
	temp3 += 72
	DrawSpriteScreenXY(29, temp3, temp0)
	
	temp3 = temp2
	switch saved.bubble
		case 0
			temp3 -= 34
			DrawSpriteScreenXY(50, temp3, temp0)
			temp3 += 58
			DrawSpriteScreenXY(72, temp3, temp0)
			break
		case 1
			temp3 -= 25
			DrawSpriteScreenXY(59, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Flight Cancel
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(38, temp3, temp0)
	temp3 += 67
	DrawSpriteScreenXY(40, temp3, temp0)
	
	temp3 = temp2
	switch saved.FlightCancel
		case 1
			temp3 -= 11
			DrawSpriteScreenXY(67, temp3, temp0)
			break
		default
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Super Cancel
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(39, temp3, temp0)
	temp3 += 62
	DrawSpriteScreenXY(40, temp3, temp0)
	
	temp3 = temp2
	switch saved.Supercancel
		case 1
			temp3 -= 11
			DrawSpriteScreenXY(67, temp3, temp0)
			break
		default
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)
end function

function visuals.draw
	temp0 = screen.ycenter
	temp0 += 125
	temp0 -= menu.zigzag.yoffset
	temp0 <<= 1
	
	temp0 -= menu.sub.yoffset
	
	DrawSpriteScreenXY(2, screen.xcenter, temp0)
	temp0 += options.gap
	temp0 += options.gap
	
	temp1 = 20
	temp2 = screen.xsize
	temp2 -= 60
	temp4 = 0

	//Option Subheader
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(394, screen.xcenter, temp0)
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Spring Twirl
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(45, temp3, temp0)
	temp3 += 69 //Nice
	DrawSpriteScreenXY(47, temp3, temp0)
	
	temp3 = temp2
	switch saved.Speen
		case 0
			//Sonic 1
			temp3 -= 34
			DrawSpriteScreenXY(50, temp3, temp0)
			temp3 += 58
			DrawSpriteScreenXY(70, temp3, temp0)
			break
		case 1
			//Sonic CD
			temp3 -= 41
			DrawSpriteScreenXY(50, temp3, temp0)
			temp3 += 58
			DrawSpriteScreenXY(54, temp3, temp0)
			break	
		case 2
			//Sonic 2
			temp3 -= 34
			DrawSpriteScreenXY(50, temp3, temp0)
			temp3 += 58
			DrawSpriteScreenXY(71, temp3, temp0)
			break			
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Mania Rotation
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(59, temp3, temp0)
	temp3 += 59
	DrawSpriteScreenXY(66, temp3, temp0)
	
	temp3 = temp2
	switch saved.rotate
		case 1
			temp3 -= 11
			DrawSpriteScreenXY(67, temp3, temp0)
			break
		default
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Shield Type
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(29, temp3, temp0)
	temp3 += 67
	DrawSpriteScreenXY(30, temp3, temp0)
	
	temp3 = temp2
	switch saved.shieldType
		case 0				
			temp3 -= 34
			DrawSpriteScreenXY(50, temp3, temp0)
			temp3 += 58
			DrawSpriteScreenXY(71, temp3, temp0)
			break
		case 1
			temp3 -= 33
			DrawSpriteScreenXY(50, temp3, temp0)
			temp3 += 58
			DrawSpriteScreenXY(70, temp3, temp0)
			break			
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Invincibility Type
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(28, temp3, temp0)
	temp3 += 121
	DrawSpriteScreenXY(30, temp3, temp0)
	
	temp3 = temp2
	switch saved.invincibilityType
		case 1
			temp3 -= 33
			DrawSpriteScreenXY(50, temp3, temp0)
			temp3 += 58
			DrawSpriteScreenXY(70, temp3, temp0)
			break
		case 0				
			temp3 -= 34
			DrawSpriteScreenXY(50, temp3, temp0)
			temp3 += 58
			DrawSpriteScreenXY(71, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Extended Timer
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	//DrawSpriteScreenXY(43, temp3, temp0)
	//temp3 += 94
	DrawSpriteScreenXY(44, temp3, temp0)
	
	temp3 = temp2
	switch saved.Timer
		case 1
			temp3 -= 33
			DrawSpriteScreenXY(21, temp3, temp0)
			break
		default
			temp3 -= 18
			DrawSpriteScreenXY(20, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Region
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(48, temp3, temp0)
	
	temp3 = temp2
	switch saved.region
		case 1
			temp3 -= 24
			DrawSpriteScreenXY(60, temp3, temp0)
			break
		default
			temp3 -= 24
			DrawSpriteScreenXY(61, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Title Screen
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(80, temp3, temp0)
	temp3 += 56
	DrawSpriteScreenXY(81, temp3, temp0)
	
	temp3 = temp2
	switch saved.Title
		case 1
			temp3 -= 42
			DrawSpriteScreenXY(82, temp3, temp0)
			break
		default
			temp3 -= 24
			DrawSpriteScreenXY(50, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Max Dash Sonic
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(50, temp3, temp0)
	temp3 += 57
	DrawSpriteScreenXY(419, temp3, temp0)
	temp3 += 42
	DrawSpriteScreenXY(420, temp3, temp0)
	
	temp3 = temp2
	switch saved.SonicMaxDash
		case 0					
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break
		case 1
			temp3 -= 52
			DrawSpriteScreenXY(54, temp3, temp0)
			temp3 += 31
			DrawSpriteScreenXY(36, temp3, temp0)
			temp3 += 41
			DrawSpriteScreenXY(37, temp3, temp0)
			break
		case 2
			temp3 -= 36
			DrawSpriteScreenXY(53, temp3, temp0)
			temp3 += 30
			DrawSpriteScreenXY(58, temp3, temp0)
			break
		case 3
			temp3 -= 25
			DrawSpriteScreenXY(59, temp3, temp0)
			break			
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Max Dash Tails
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	switch saved.region
		case 1
			DrawSpriteScreenXY(60, temp3, temp0)
			break
		default
			DrawSpriteScreenXY(61, temp3, temp0)
			break					
	end switch
	temp3 += 57
	DrawSpriteScreenXY(419, temp3, temp0)
	temp3 += 42
	DrawSpriteScreenXY(420, temp3, temp0)
	
	temp3 = temp2
	switch saved.TailsMaxDash
		case 0					
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break
		case 1
			temp3 -= 34
			DrawSpriteScreenXY(50, temp3, temp0)
			temp3 += 58
			DrawSpriteScreenXY(71, temp3, temp0)
			break	
		case 2
			temp3 -= 25
			DrawSpriteScreenXY(59, temp3, temp0)
			break
		case 3
			temp3 -= 43
			DrawSpriteScreenXY(404, temp3, temp0)
			break			
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Max Dash Knuckles
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(82, temp3, temp0)
	temp3 += 95
	DrawSpriteScreenXY(419, temp3, temp0)
	temp3 += 42
	DrawSpriteScreenXY(420, temp3, temp0)
	
	temp3 = temp2
	switch saved.KnuxMaxDash
		case 0					
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break
		case 1
			temp3 -= 36
			DrawSpriteScreenXY(403, temp3, temp0)
			break	
		case 2
			temp3 -= 25
			DrawSpriteScreenXY(59, temp3, temp0)
			break	
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Max Dash Super
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(39, temp3, temp0)
	temp3 += 61
	DrawSpriteScreenXY(50, temp3, temp0)
	temp3 += 57
	DrawSpriteScreenXY(419, temp3, temp0)
	temp3 += 42
	DrawSpriteScreenXY(420, temp3, temp0)
	
	temp3 = temp2
	switch saved.SuperMaxDash
		case 0					
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break
		case 1
			temp3 -= 36
			DrawSpriteScreenXY(403, temp3, temp0)
			break	
		case 2
			temp3 -= 25
			DrawSpriteScreenXY(59, temp3, temp0)
			break	
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)
end function

function sound.draw
	temp0 = screen.ycenter
	temp0 += 125
	temp0 -= menu.zigzag.yoffset
	temp0 <<= 1
	
	temp0 -= menu.sub.yoffset
	
	DrawSpriteScreenXY(2, screen.xcenter, temp0)
	temp0 += options.gap
	temp0 += options.gap
	
	temp1 = 20
	temp2 = screen.xsize
	temp2 -= 60
	temp4 = 0

	//Option Subheader
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(395, screen.xcenter, temp0)
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Music Volume
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(42, temp3, temp0)
	temp3 += 58
	DrawSpriteScreenXY(399, temp3, temp0)

	temp3 = temp2
	if Engine.BGMVolume == 100
		temp3 += 4
	end if
	DrawNumbers(69, temp3, temp0, Engine.BGMVolume, 3, 10, 0)
	
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)	

	//SFX Volume
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(400, temp3, temp0)
	temp3 += 83
	DrawSpriteScreenXY(399, temp3, temp0)

	temp3 = temp2
	if Engine.SFXVolume == 100
		temp3 += 4
	end if
	DrawNumbers(69, temp3, temp0, Engine.SFXVolume, 3, 10, 0)
	
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)	


	//CD Drowning
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(54, temp3, temp0)
	temp3 += 31
	DrawSpriteScreenXY(41, temp3, temp0)
	
	temp3 = temp2
	switch saved.Drowning
		case 1
			temp3 -= 11
			DrawSpriteScreenXY(67, temp3, temp0)
			break
		default
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break					
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)

	//Super Music
	temp3 = temp1
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(39, temp3, temp0)
	temp3 += 62
	DrawSpriteScreenXY(42, temp3, temp0)
	
	temp3 = temp2
	switch saved.Supermusic
		case 0
			//Sonic 2
			temp3 -= 34
			DrawSpriteScreenXY(50, temp3, temp0)
			temp3 += 58
			DrawSpriteScreenXY(71, temp3, temp0)
			break
		case 1
			//Sonic 3
			temp3 -= 34
			DrawSpriteScreenXY(50, temp3, temp0)
			temp3 += 58
			DrawSpriteScreenXY(72, temp3, temp0)
			break
		case 2
			//S3K
			temp3 -= 16
			DrawSpriteScreenXY(55, temp3, temp0)
			temp3 += 21
			DrawSpriteScreenXY(371, temp3, temp0)
			break		
		case 3
			//S3 Unused
			temp3 -= 46
			DrawSpriteScreenXY(55, temp3, temp0)
			temp3 += 30
			DrawSpriteScreenXY(57, temp3, temp0)
			break
		case 4
			//Mania
			temp3 -= 25
			DrawSpriteScreenXY(59, temp3, temp0)
			break
		case 5
			//Speed Up
			temp3 -= 41
			DrawSpriteScreenXY(22, temp3, temp0)
			temp3 += 62
			DrawSpriteScreenXY(79, temp3, temp0)
			break
		case 6	
			//OFF	
			temp3 -= 15
			DrawSpriteScreenXY(68, temp3, temp0)
			break		
	end switch
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)
end function

function datamang.draw
	temp0 = screen.ycenter
	temp0 += 125
	temp0 -= menu.zigzag.yoffset
	temp0 <<= 1
	
	temp0 -= menu.sub.yoffset
	
	DrawSpriteScreenXY(2, screen.xcenter, temp0)
	temp0 += options.gap
	temp0 += options.gap
	
	temp1 = 20
	temp2 = screen.xsize
	temp2 -= 60
	temp4 = 0

	//Option Subheader
	CallFunction(OptionsDrawSetup)
	DrawSpriteScreenXY(396, screen.xcenter, temp0)
	temp0 += options.gap
	SetPaletteEntry(0, 6, 0xE0E0E0)
end function


function VersionNumber		
	temp0 = screen.xsize
	temp0 -= 140	
	temp1 = 13
	temp1 -= menu.zigzag.yoffset
	temp2 = temp0
	
	if versionone > 9
		temp0 += 10	
	end if	
	DrawNumbers(69, temp0, temp1, versionone, 2, 10, 0)
	temp0 += 10
	DrawSpriteScreenXY(163, temp0, temp1)
	
	temp0 += 4
	
	if versiontwo > 9
		temp0 += 10
	end if		
	DrawNumbers(69, temp0, temp1, versiontwo, 2, 10, 0)
	temp0 += 10
	DrawSpriteScreenXY(163, temp0, temp1)
	
	temp0 += 4
	
	if versionthree > 9
		temp0 += 10
	end if	
	DrawNumbers(69, temp0, temp1, versionthree, 2, 10, 0)
	temp0 += 10
	DrawSpriteScreenXY(163, temp0, temp1)
	
	temp0 += 84
	
	DrawNumbers(69, temp0, temp1, versionsub, 9, 10, 1)
end function



event ObjectDraw

//Main Menu

	//Semi Transparent Background

	menu.zigzagscroll++
	menu.zigzagscroll %= 20
	temp0 = menu.zigzagscroll
	temp0 >>= 1
	temp0 += screen.xsize
	temp1 = screen.ysize
	temp1 -= 50
	temp1 -= menu.zigzag.yoffset
	temp2 = 1
	temp4 = screen.ysize
	temp4 <<= 1
	temp5 = 0
	while temp0 >= 0
		DrawRect(temp0, temp1, 1, temp4, 0, 0, 0, 150)
		DrawRect(temp0, temp1, 1, 1, color7, color7, color7, 255)
		temp0--
		temp5++
		temp1 += temp2
		temp3 = temp5
		temp3 %= 5
		if temp3 == 0
			FlipSign(temp2)
		end if
	loop
	
	//Main Menu Entries
	menu.page1.xtarget = menu.mainsel
	menu.page1.xtarget *= 200
	
	temp0 = menu.page1.xtarget
	temp0 -= menu.page1.xoffset
	Abs(temp0)		
	
	if temp0 <= 20
		menu.page1.xoffset = menu.page1.xtarget
	else
		if menu.page1.xoffset < menu.page1.xtarget
			if temp0 > 600
				menu.page1.xtarget -= 1200
				menu.page1.xoffset -= 20	
			else
				menu.page1.xoffset += 20
			end if
		else
			if temp0 > 600
				menu.page1.xtarget += 1200
				menu.page1.xoffset += 20	
			else
				menu.page1.xoffset -= 20
			end if		
		end if		
	end if
	
	if menu.page1.xoffset <= -150
		menu.page1.xtarget += 1400
		menu.page1.xoffset += 1400
	end if
	
	if menu.page1.xoffset >= 1350
		menu.page1.xtarget -= 1400
		menu.page1.xoffset -= 1400
	end if
	
	temp0 = screen.xcenter
	temp0 -= menu.page1.xoffset
	temp1 = 200
	temp1 -= menu.zigzag.yoffset
	
	temp0 -= 200
	DrawSpriteScreenXY(6, temp0, temp1)
	temp0 += 200
	DrawSpriteScreenXY(0, temp0, temp1)
	temp0 += 200
	DrawSpriteScreenXY(1, temp0, temp1)
	temp0 += 200
	DrawSpriteScreenXY(2, temp0, temp1)
	temp0 += 200
	DrawSpriteScreenXY(3, temp0, temp1)
	temp0 += 200
	DrawSpriteScreenXY(4, temp0, temp1)
	temp0 += 200
	DrawSpriteScreenXY(5, temp0, temp1)
	temp0 += 200
	DrawSpriteScreenXY(6, temp0, temp1)
	temp0 += 200
	DrawSpriteScreenXY(0, temp0, temp1)
		
	//Highlighter
	if menu.page1.xtarget == menu.page1.xoffset
		temp0 = menu.mainsel
		temp0 += 7
		DrawSpriteScreenXY(temp0, screen.xcenter, temp1)
	end if	
	
	//Selector bars
	temp0 = 0
	temp1 += 30
	while temp0	< 7
		temp2 = temp0
		temp2 -= 3
		temp2 *= 16
		temp2 += screen.xcenter
		temp2 -= 4
		
		if temp0 == menu.mainsel
			temp1 -= 4
			switch temp0
			case 0
				DrawSpriteScreenXY(376, temp2, temp1)
				break
			case 1
				DrawSpriteScreenXY(377, temp2, temp1)
				break
			case 2
				DrawSpriteScreenXY(378, temp2, temp1)
				break
			case 3
				DrawSpriteScreenXY(379, temp2, temp1)
				break
			case 4
				DrawSpriteScreenXY(380, temp2, temp1)
				break
			case 5
				DrawSpriteScreenXY(381, temp2, temp1)
				break
			case 6
				DrawSpriteScreenXY(382, temp2, temp1)
				break
			end switch
			temp1 += 4
		else
			switch temp0
			case 0
				DrawSpriteScreenXY(383, temp2, temp1)
				break
			case 1
				DrawSpriteScreenXY(384, temp2, temp1)
				break
			case 2
				DrawSpriteScreenXY(385, temp2, temp1)
				break
			case 3
				DrawSpriteScreenXY(386, temp2, temp1)
				break
			case 4
				DrawSpriteScreenXY(387, temp2, temp1)
				break
			case 5
				DrawSpriteScreenXY(388, temp2, temp1)
				break
			case 6
				DrawSpriteScreenXY(389, temp2, temp1)
				break
			end switch
		end if
		temp0++
	loop	
	
	switch menu.drawMode
		case 0 // Save Select			
			CallFunction(SaveDraw)			
			break
		case 1 // Game Modes
			CallFunction(ModesDraw)
			break
		case 2 // Options Menu
			if object.state == display.menu
				CallFunction(display.draw)
			else
				if object.state == gameplay.menu
					CallFunction(gameplay.draw)
				else
					if object.state == abilities.menu
						CallFunction(abilities.draw)
					else
						if object.state == visuals.menu
							CallFunction(visuals.draw)
						else
							if object.state == sound.menu
								CallFunction(sound.draw)
							else
								if object.state == datamang.menu
									CallFunction(datamang.draw)
								else
								end if
							end if
						end if
					end if
				end if
			end if
			break
		case 3 // Extras Menu
			CallFunction(ExtrasDraw)			
			break
		case 4 // Achievement Menu
			CallFunction(AchieveDraw)			
			break
	end switch
	
	//CallFunction(CloudDebug)

	CallFunction(VersionNumber)
	
	//DrawNumbers(69, 100, 40, menu.sub.yoffset, 5, 10, 0)
	//DrawNumbers(69, 100, 80, menu.sub.ytarget, 5, 10, 0)

	temp0 -= screen.xsize
	temp0 += 25
	temp1 -= 10
	DrawSpriteScreenXY(390, temp0, temp1)
end event









//Startup

function ResetPal
	temp1 = 0
	GetTableValue(temp0, temp1, Palette_Reset)
	SetPaletteEntry(0, 2, temp0)
	temp1++
	GetTableValue(temp0, temp1, Palette_Reset)
	SetPaletteEntry(0, 3, temp0)
	temp1++
	GetTableValue(temp0, temp1, Palette_Reset)
	SetPaletteEntry(0, 4, temp0)
	temp1++
	GetTableValue(temp0, temp1, Palette_Reset)
	SetPaletteEntry(0, 5, temp0)
	temp1++
	GetTableValue(temp0, temp1, Palette_Reset)
	SetPaletteEntry(0, 13, temp0)
	temp1++
	GetTableValue(temp0, temp1, Palette_Reset)
	SetPaletteEntry(0, 17, temp0)
	temp1++
	GetTableValue(temp0, temp1, Palette_Reset)
	SetPaletteEntry(0, 18, temp0)
	temp1++
	GetTableValue(temp0, temp1, Palette_Reset)
	SetPaletteEntry(0, 16, temp0)
	temp1++
	GetTableValue(temp0, temp1, Palette_Reset)
	SetPaletteEntry(0, 26, temp0)
	temp1++
	GetTableValue(temp0, temp1, Palette_Reset)
	SetPaletteEntry(0, 27, temp0)
	temp1++
	GetTableValue(temp0, temp1, Palette_Reset)
	SetPaletteEntry(0, 28, temp0)
end function


event ObjectStartup
	//ReadSaveRAM()
	CallNativeFunction(GetWindowScale)
	saved.scale = checkResult
	CallNativeFunction(GetWindowFullScreen)
	saved.fullscreen = checkResult
	CallNativeFunction(GetWindowVSync)
	saved.vsync = checkResult
	CallNativeFunction(GetWindowScaleMode)
	saved.scalemode = checkResult
	CallNativeFunction(GetFrameRate)
	saved.fps = checkResult
	
	recRings = 0
	recShield = 0
	recRingBonus = 0
	recGoggles = 0
						
	stage.debugMode = 0
	LoadSpriteSheet("Menus/MainMenuNewCore.gif")
	
	//Main Menu
	SpriteFrame(-77, 0, 153, 8, 165, 10) //0 Save Select Unhighlighted
	SpriteFrame(-70, 0, 139, 8, 165, 19) //1 Game Modes Unhighlighted
	SpriteFrame(-46, 0, 91, 8, 215, 1) //2 Options Unhighlighted
	SpriteFrame(-42, 0, 84, 8, 165, 28) //3 Extras Unhighlighted
	SpriteFrame(-80, 0, 160, 8, 37, 161) //4 Achievements Unhighlighted
	SpriteFrame(-28, 0, 55, 8, 250, 28) //5 Mods Unhighlighted
	SpriteFrame(-25, 0, 49, 8, 165, 1) //6 Exit Unhighlighted
	
	
	SpriteFrame(-92, 0, 183, 8, 165, 46) //7 Save Select Highlighted
	SpriteFrame(-85, 0, 169, 8, 165, 55) //8 Game Modes Highlighted
	SpriteFrame(-61, 0, 121, 8, 245, 37) //9 Options Highlighted
	SpriteFrame(-57, 0, 114, 8, 165, 64) //10 Extras Highlighted
	SpriteFrame(-95, 0, 190, 8, 37, 170) //11 Achievements Highlighted	
	SpriteFrame(-43, 0, 85, 8, 280, 64) //12 Mods Highlighted
	SpriteFrame(-40, 0, 79, 8, 165, 37) //13 Exit Highlighted
	
	SpriteFrame(-175, 8, 23, 23, 651, 248) //14 Arrow Left
	SpriteFrame(152, 8, 23, 23, 675, 248) //15 Arrow Right
	
	//Abandoned
	SpriteFrame(0, 0, 8, 11, 1, 69) //16 4
	SpriteFrame(0, 0, 8, 11, 10, 69) //17 5
	SpriteFrame(0, 0, 8, 11, 19, 69) //18 6
	SpriteFrame(0, 0, 8, 11, 28, 69) //19 7
	
	//Options
	SpriteFrame(0, 0, 36, 7, 271, 145) //20 Short Timer
	SpriteFrame(0, 0, 66, 7, 238, 153) //21 Long Timer
	SpriteFrame(0, 0, 52, 7, 37, 73) //22 Speed
	SpriteFrame(0, 0, 32, 7, 90, 73) //23 Cap
	SpriteFrame(0, 0, 26, 7, 123, 73) //24 Air
	SpriteFrame(0, 0, 64, 7, 150, 73) //25 Ground
	SpriteFrame(0, 0, 84, 7, 215, 73) //26 Rolljump
	
	SpriteFrame(0, 0, 42, 7, 37, 81) //27 Lock
	SpriteFrame(0, 0, 111, 7, 80, 81) //28 Invinciblity
	SpriteFrame(0, 0, 57, 7, 192, 81) //29 Shield
	SpriteFrame(0, 0, 42, 7, 250, 81) //30 Type
	
	SpriteFrame(0, 0, 85, 7, 37, 89) //31 Emeralds
	SpriteFrame(0, 0, 37, 7, 123, 89) //32 Spin
	SpriteFrame(0, 0, 43, 7, 161, 89) //33 Drop
	SpriteFrame(0, 0, 43, 7, 205, 89) //34 Dash
	SpriteFrame(0, 0, 48, 7, 249, 89) //35 Insta
	
	SpriteFrame(0, 0, 40, 7, 37, 97) //36 Peel
	SpriteFrame(0, 0, 31, 7, 78, 97) //37 Out
	SpriteFrame(0, 0, 57, 7, 110, 97) //38 Flight
	SpriteFrame(0, 0, 52, 7, 168, 97) //39 Super
	SpriteFrame(0, 0, 63, 7, 221, 97) //40 Cancel
	
	SpriteFrame(0, 0, 82, 7, 37, 105) //41 Drowning
	SpriteFrame(0, 0, 48, 7, 120, 105) //42 Music
	SpriteFrame(0, 0, 84, 7, 169, 105) //43 Extended
	SpriteFrame(0, 0, 48, 7, 254, 105) //44 Timer
	
	SpriteFrame(0, 0, 59, 7, 37, 113) //45 Spring
	SpriteFrame(0, 0, 48, 7, 97, 113) //46 Twirl
	SpriteFrame(0, 0, 87, 7, 146, 113) //47 Animation
	SpriteFrame(0, 0, 58, 7, 234, 113) //48 Region
	
	SpriteFrame(0, 0, 67, 7, 37, 121) //49 Infinite
	SpriteFrame(0, 0, 48, 7, 105, 121) //50 Sonic
	SpriteFrame(0, 0, 94, 7, 154, 121) //51 Elemental
	SpriteFrame(0, 0, 94, 7, 154, 121) //52 (Abandoned)
	SpriteFrame(0, 0, 20, 7, 249, 121) //53 S2
	SpriteFrame(0, 0, 21, 7, 270, 121) //54 CD
	SpriteFrame(0, 0, 20, 7, 292, 121) //55 S3
	
	SpriteFrame(0, 0, 74, 7, 37, 129) //56 Original
	SpriteFrame(0, 0, 62, 7, 112, 129) //57 Unused
	SpriteFrame(0, 0, 42, 7, 175, 129) //58 Beta
	SpriteFrame(0, 0, 49, 7, 218, 129) //59 Mania
	SpriteFrame(0, 0, 47, 7, 268, 129) //60 Miles
	
	SpriteFrame(0, 0, 47, 7, 37, 137) //61 Tails
	SpriteFrame(0, 0, 62, 7, 85, 137) //62 Bubble
	SpriteFrame(0, 0, 46, 7, 148, 137) //63 Lives
	SpriteFrame(0, 0, 47, 7, 195, 137) //64 Spike
	SpriteFrame(0, 0, 31, 7, 243, 137) //65 Bug
	
	SpriteFrame(0, 0, 81, 7, 37, 145) //66 Rotation
	SpriteFrame(0, 0, 21, 7, 119, 145) //67 On
	SpriteFrame(0, 0, 30, 7, 141, 145) //68 Off	
	
	SpriteFrame(0, 0, 9, 7, 172, 145) //69 0
	SpriteFrame(0, 0, 8, 7, 182, 145) //70 1
	SpriteFrame(0, 0, 9, 7, 191, 145) //71 2
	SpriteFrame(0, 0, 9, 7, 201, 145) //72 3
	SpriteFrame(0, 0, 9, 7, 211, 145) //73 4
	SpriteFrame(0, 0, 9, 7, 221, 145) //74 5
	SpriteFrame(0, 0, 9, 7, 231, 145) //75 6
	SpriteFrame(0, 0, 9, 7, 241, 145) //76 7
	SpriteFrame(0, 0, 9, 7, 251, 145) //77 8
	SpriteFrame(0, 0, 9, 7, 261, 145) //78 9
		
	SpriteFrame(0, 0, 20, 7, 179, 97) //79 Up
	SpriteFrame(0, 0, 46, 7, 37, 153) //80 Title
	SpriteFrame(0, 0, 63, 7, 84, 153) //81 Screen
	SpriteFrame(0, 0, 84, 7, 148, 153) //82 Knuckles
	
	//Save Select	
	SpriteFrame(-141, -1, 282, 44, 741, 646) //83 No Save Outline
	SpriteFrame(-141, -1, 282, 44, 741, 691) //84 Save Outline
	
	SpriteFrame(-140, 0, 280, 42, 742, 603) //85 No Save BG
	SpriteFrame(-140, 0, 280, 42, 742, 1)  //86 Emerald Hill BG
	SpriteFrame(-140, 0, 280, 42, 742, 44) //87 Chemical Plant BG
	SpriteFrame(-140, 0, 280, 42, 742, 87) //88 Aquatic Ruin BG
	SpriteFrame(-140, 0, 280, 42, 742, 130) //89 Casino Night BG
	SpriteFrame(-140, 0, 280, 42, 742, 173) //90 Hill Top BG
	SpriteFrame(-140, 0, 280, 42, 742, 216) //91 Mystic Cave BG
	SpriteFrame(-140, 0, 280, 42, 742, 259) //92 Oil Ocean BG
	SpriteFrame(-140, 0, 280, 42, 742, 302) //93 Metropolis BG
	SpriteFrame(-140, 0, 280, 42, 742, 345) //94 Sky Chase BG
	SpriteFrame(-140, 0, 280, 42, 742, 388) //95 Wing Fortress BG
	SpriteFrame(-140, 0, 280, 42, 742, 431) //96 Death Egg BG
	SpriteFrame(-140, 0, 280, 42, 742, 517) //97 Hidden Palace BG
	SpriteFrame(-140, 0, 280, 42, 742, 560) //98 Complete BG	
	SpriteFrame(-140, 0, 280, 42, 742, 474) //99 New Save BG
	
	SpriteFrame(-99, 17, 73, 7, 668, 1)  //100 No Save Text
	SpriteFrame(-99, 17, 84, 7, 657, 9)  //101 New Save Text
	SpriteFrame(-99, 12, 70, 7, 671, 25) //102 Delete Text
	SpriteFrame(-99, 23, 31, 7, 688, 33) //103 Yes Text White
	SpriteFrame(-50, 23, 21, 7, 720, 33) //104 No Text White
	SpriteFrame(-99, 23, 31, 7, 688, 41) //105 Yes Text Yellow
	SpriteFrame(-50, 23, 21, 7, 720, 41) //106 No Text Yellow
	SpriteFrame(-99, 23, 41, 7, 700, 73) //107 Zone Text
	
	SpriteFrame(-99, 12, 143, 7, 598, 81)  //108 Emerald Hill
	SpriteFrame(-99, 12, 143, 7, 598, 89)  //109 Chemical Plant
	SpriteFrame(-99, 12, 143, 7, 598, 97)  //110 Aquatic Ruin
	SpriteFrame(-99, 12, 143, 7, 598, 105)  //111 Casino Night
	SpriteFrame(-99, 12, 143, 7, 598, 113)  //112 Hill Top
	SpriteFrame(-99, 12, 143, 7, 598, 121)  //113 Mystic Cave
	SpriteFrame(-99, 12, 143, 7, 598, 129)  //114 Oil Ocean
	SpriteFrame(-99, 12, 143, 7, 598, 137)  //115 Metropolis
	SpriteFrame(-99, 12, 143, 7, 598, 145)  //116 Sky Chase
	SpriteFrame(-99, 12, 143, 7, 598, 153)  //117 Wing Fortress
	SpriteFrame(-99, 12, 143, 7, 598, 161)  //118 Death Egg
	SpriteFrame(-99, 12, 143, 7, 598, 169)  //119 Hidden Palace	
	SpriteFrame(-99, 17, 85, 7, 656, 17)   //120 Complete Text
	
	SpriteFrame(-48, 23, 51, 7, 690, 49)   //121 Act 1
	SpriteFrame(-48, 23, 51, 7, 690, 57)   //122 Act 2
	SpriteFrame(-48, 23, 51, 7, 690, 65)   //123 Act 3
	SpriteFrame(0, 0, 0, 0, 723, 82)   //124 Blank	
	
	SpriteFrame(-134, 6, 30, 30, 600, 177)   //125 Sonic Portrait	
	SpriteFrame(-134, 6, 30, 30, 631, 177)   //126 Tails Portrait
	SpriteFrame(-134, 6, 30, 30, 662, 177)   //127 Knuckles Portrait
	//SpriteFrame(-143, 6, 48, 30, 693, 177)   //128 Sonic&Tails Portrait
	SpriteFrame(-139, 6, 40, 30, 699, 241)   //128 Sonic&Tails Portrait
	SpriteFrame(-139, 6, 40, 30, 590, 239)   //129 Knuckles&Tails Portrait
	SpriteFrame(-134, 6, 30, 30, 600, 208)   //130 Blank Portrait
	
	SpriteFrame(58, 2, 16, 39, 631, 208)   //131 Sonic Icon
	SpriteFrame(58, 2, 16, 39, 648, 208)   //132 Tails Icon
	SpriteFrame(58, 2, 16, 39, 665, 208)   //133 Knuckles Icon
	SpriteFrame(58, 2, 16, 39, 631, 208)   //134 Sonic&Tails Icon
	SpriteFrame(58, 2, 16, 39, 665, 208)   //136 Knuckles&Tails Icon
	SpriteFrame(58, 2, 16, 39, 682, 208)   //136 Blank Icon
//SpriteFrame(58, 2, 25, 24, 574, 214)   //134 Sonic&Tails Icon
	
	SpriteFrame(85, 6, 9, 7, 172, 145) //137 0
	SpriteFrame(85, 6, 8, 7, 182, 145) //138 1
	SpriteFrame(85, 6, 9, 7, 191, 145) //139 2
	SpriteFrame(85, 6, 9, 7, 201, 145) //140 3
	SpriteFrame(85, 6, 9, 7, 211, 145) //141 4
	SpriteFrame(85, 6, 9, 7, 221, 145) //142 5
	SpriteFrame(85, 6, 9, 7, 231, 145) //143 6
	SpriteFrame(85, 6, 9, 7, 241, 145) //144 7
	SpriteFrame(85, 6, 9, 7, 251, 145) //145 8
	SpriteFrame(85, 6, 9, 7, 261, 145) //146 9
	
	SpriteFrame(116, 2, 10, 10, 699, 208) //147 Emerald 1
	SpriteFrame(128, 9, 10, 10, 710, 208) //148 Emerald 2
	SpriteFrame(128, 22, 10, 10, 721, 208) //149 Emerald 3
	SpriteFrame(116, 30, 10, 10, 699, 219) //150 Emerald 4
	SpriteFrame(104, 22, 10, 10, 710, 219) //151 Emerald 5
	SpriteFrame(104, 9, 10, 10, 721, 219) //152 Emerald 6
	SpriteFrame(116, 16, 10, 10, 699, 230) //153 Emerald 7
	
	SpriteFrame(116, 2, 10, 10, 710, 230) //154 Emerald 1 Blank
	SpriteFrame(128, 9, 10, 10, 710, 230) //155 Emerald 2 Blank
	SpriteFrame(128, 22, 10, 10, 710, 230) //156 Emerald 3 Blank
	SpriteFrame(116, 30, 10, 10, 710, 230) //157 Emerald 4 Blank
	SpriteFrame(104, 22, 10, 10, 710, 230) //158 Emerald 5 Blank
	SpriteFrame(104, 9, 10, 10, 710, 230) //159 Emerald 6 Blank
	SpriteFrame(116, 16, 10, 10, 710, 230) //160 Emerald 7 Blank
	
	SpriteFrame(161, -50, 43, 99, 696, 272) //161 Delete Unhighlight
	SpriteFrame(161, -50, 43, 99, 696, 372) //162 Delete Highlight
	SpriteFrame(0, 0, 4, 7, 233, 153) //163 dot
	
	//Numbers Save Highlight
	SpriteFrame(85, 6, 9, 7, 498, 177) //164 0
	SpriteFrame(85, 6, 8, 7, 508, 177) //165 1
	SpriteFrame(85, 6, 9, 7, 518, 177) //166 2
	SpriteFrame(85, 6, 9, 7, 528, 177) //167 3
	SpriteFrame(85, 6, 9, 7, 538, 177) //168 4
	SpriteFrame(85, 6, 9, 7, 548, 177) //169 5
	SpriteFrame(85, 6, 9, 7, 558, 177) //170 6
	SpriteFrame(85, 6, 9, 7, 568, 177) //171 7
	SpriteFrame(85, 6, 9, 7, 578, 177) //172 8
	SpriteFrame(85, 6, 9, 7, 588, 177) //173 9
	
	SpriteFrame(-99, 12, 143, 7, 454, 81)  //174 Emerald Hill
	SpriteFrame(-99, 12, 143, 7, 454, 89)  //175 Chemical Plant
	SpriteFrame(-99, 12, 143, 7, 454, 97)  //176 Aquatic Ruin
	SpriteFrame(-99, 12, 143, 7, 454, 105)  //177 Casino Night
	SpriteFrame(-99, 12, 143, 7, 454, 113)  //178 Hill Top
	SpriteFrame(-99, 12, 143, 7, 454, 121)  //179 Mystic Cave
	SpriteFrame(-99, 12, 143, 7, 454, 129)  //180 Oil Ocean
	SpriteFrame(-99, 12, 143, 7, 454, 137)  //181 Metropolis
	SpriteFrame(-99, 12, 143, 7, 454, 145)  //182 Sky Chase
	SpriteFrame(-99, 12, 143, 7, 454, 153)  //183 Wing Fortress
	SpriteFrame(-99, 12, 143, 7, 454, 161)  //182 Death Egg
	SpriteFrame(-99, 12, 143, 7, 454, 169)  //185 Hidden Palace	
	SpriteFrame(-99, 17, 85, 7, 512, 17)   //186 Complete Text	
	
	SpriteFrame(-48, 23, 51, 7, 546, 49)   //187 Act 1
	SpriteFrame(-48, 23, 51, 7, 546, 57)   //188 Act 2
	SpriteFrame(-48, 23, 51, 7, 546, 65)   //189 Act 3
	SpriteFrame(0, 0, 0, 0, 723, 82)   //190 Blank	
	
	SpriteFrame(-99, 17, 73, 7, 524, 1)  //191 No Save Text
	SpriteFrame(-99, 17, 84, 7, 513, 9)  //192 New Save Text
	SpriteFrame(-99, 23, 41, 7, 556, 73) //193 Zone Text
	
	//Achievements
	
	SpriteFrame(-153, -1, 306, 60, 1, 275) //194 Achievement Frame
	SpriteFrame(-71, 0, 122, 7, 1, 267) //195 Unlocked Count
	SpriteFrame(-152, 0, 304, 58, 1, 336) //196 Achievement Highlight
	
	
	//Name
	SpriteFrame(-84, 6, 88, 7, 1, 179) //197 Quick Run
	SpriteFrame(-84, 6, 184, 7, 1, 187) //198 Chemical Free
	SpriteFrame(-84, 6, 177, 7, 1, 195) //199 Early Bird Special
	SpriteFrame(-84, 6, 96, 7, 1, 203) //200 Superstar
	SpriteFrame(-84, 6, 166, 7, 1, 211) //201 Gambling Problem
	SpriteFrame(-84, 6, 127, 7, 1, 219) //202 Bop Non-Stop
	SpriteFrame(-84, 6, 127, 7, 1, 227) //203 Perfectionist
	SpriteFrame(-84, 6, 176, 7, 1, 235) //204 A Secret Revealed
	SpriteFrame(-84, 6, 177, 7, 1, 243) //205 Metropolis Master
	SpriteFrame(-84, 6, 176, 7, 124, 267) //206 Tour of the Plant
	SpriteFrame(-84, 6, 228, 7, 1, 251) //207 Beat the Clock
	SpriteFrame(-84, 6, 182, 7, 308, 275) //208 Expert's Challenge
	SpriteFrame(-84, 6, 138, 7, 1, 259) //209 Scrambled Egg
	SpriteFrame(-84, 6, 0, 0, 1, 259) //210 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //211 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //212 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //213 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //214 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //215 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //216 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //217 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //218 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //219 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //220 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //221 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //222 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //223 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //224 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //225 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //226 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //227 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //228 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //229 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //230 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //231 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //232 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //233 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //234 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //235 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //236 Blank

	//Highlighted Names
	SpriteFrame(-84, 6, 88, 7, 230, 179) //237 Quick Run
	SpriteFrame(-84, 6, 184, 7, 230, 187) //238 Chemical Free
	SpriteFrame(-84, 6, 177, 7, 230, 195) //239 Early Bird Special
	SpriteFrame(-84, 6, 96, 7, 230, 203) //240 Superstar
	SpriteFrame(-84, 6, 166, 7, 230, 211) //241 Gambling Problem
	SpriteFrame(-84, 6, 127, 7, 230, 219) //242 Bop Non-Stop
	SpriteFrame(-84, 6, 127, 7, 230, 227) //243 Perfectionist
	SpriteFrame(-84, 6, 176, 7, 230, 235) //244 A Secret Revealed
	SpriteFrame(-84, 6, 177, 7, 230, 243) //245 Metropolis Master
	SpriteFrame(-84, 6, 176, 7, 301, 267) //246 Tour of the Plant
	SpriteFrame(-84, 6, 228, 7, 230, 251) //247 Beat the Clock
	SpriteFrame(-84, 6, 182, 7, 308, 283) //248 Expert's Challenge
	SpriteFrame(-84, 6, 138, 7, 230, 259) //249 Scrambled Egg
	SpriteFrame(-84, 6, 0, 0, 1, 259) //250 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //251 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //252 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //253 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //254 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //255 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //256 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //257 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //258 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //259 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //260 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //261 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //262 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //263 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //264 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //265 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //266 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //267 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //268 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //269 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //270 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //271 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //272 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //273 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //274 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //275 Blank
	SpriteFrame(-84, 6, 0, 0, 1, 259) //276 Blank
	
	//Icons
	SpriteFrame(-148, 4, 50, 50, 1, 512) //277 Quick Run
	SpriteFrame(-148, 4, 50, 50, 52, 512) //278 Chemical Free
	SpriteFrame(-148, 4, 50, 50, 103, 512) //279 Early Bird Special
	SpriteFrame(-148, 4, 50, 50, 154, 512) //280 Superstar
	SpriteFrame(-148, 4, 50, 50, 205, 512) //281 Gambling Problem
	SpriteFrame(-148, 4, 50, 50, 1, 563) //282 Bop Non-Stop
	SpriteFrame(-148, 4, 50, 50, 52, 563) //283 Perfectionist
	SpriteFrame(-148, 4, 50, 50, 103, 563) //284 A Secret Revealed
	SpriteFrame(-148, 4, 50, 50, 154, 563) //285 Metropolis Master
	SpriteFrame(-148, 4, 50, 50, 205, 563) //286 Tour of the Plant
	SpriteFrame(-148, 4, 50, 50, 123, 614) //287 Beat the Clock
	SpriteFrame(-148, 4, 50, 50, 174, 614) //288 Expert's Challenge
	SpriteFrame(-148, 4, 0, 0, 1, 259) //289 Scrabled Egg
	SpriteFrame(-148, 4, 0, 0, 1, 259) //290 Blank
	SpriteFrame(-148, 4, 0, 0, 1, 259) //291 Blank
	SpriteFrame(-148, 4, 0, 0, 1, 259) //292 Blank
	SpriteFrame(-148, 4, 0, 0, 1, 259) //293 Blank
	SpriteFrame(-148, 4, 0, 0, 1, 259) //294 Blank
	SpriteFrame(-148, 4, 0, 0, 1, 259) //295 Blank
	SpriteFrame(-148, 4, 0, 0, 1, 259) //296 Blank
	SpriteFrame(-148, 4, 0, 0, 1, 259) //297 Blank
	SpriteFrame(-148, 4, 0, 0, 1, 259) //298 Blank
	SpriteFrame(-148, 4, 0, 0, 1, 259) //299 Blank
	SpriteFrame(-148, 4, 0, 0, 1, 259) //300 Blank
	SpriteFrame(-148, 4, 0, 0, 1, 259) //301 Blank
	SpriteFrame(-148, 4, 0, 0, 1, 259) //302 Blank
	SpriteFrame(-148, 4, 0, 0, 1, 259) //303 Blank
	SpriteFrame(-148, 4, 0, 0, 1, 259) //304 Blank
	SpriteFrame(-148, 4, 0, 0, 1, 259) //305 Blank
	
	//Description Letters
	Spriteframe(0, 0, 8, 7, 1, 617) //306 A
	Spriteframe(0, 0, 8, 7, 9, 617) //307 B
	Spriteframe(0, 0, 8, 7, 17, 617) //308 C
	Spriteframe(0, 0, 8, 7, 25, 617) //309 D
	Spriteframe(0, 0, 8, 7, 33, 617) //310 E
	Spriteframe(0, 0, 8, 7, 41, 617) //311 F
	Spriteframe(0, 0, 8, 7, 49, 617) //312 G
	Spriteframe(0, 0, 8, 7, 57, 617) //313 H
	Spriteframe(0, 0, 8, 7, 65, 617) //314 I
	Spriteframe(0, 0, 8, 7, 73, 617) //315 J
	Spriteframe(0, 0, 8, 7, 81, 617) //316 K
	Spriteframe(0, 0, 8, 7, 89, 617) //317 L
	Spriteframe(0, 0, 8, 7, 97, 617) //318 M
	Spriteframe(0, 0, 8, 7, 105, 617) //319 N
	Spriteframe(0, 0, 8, 7, 113, 617) //320 O
	Spriteframe(0, 0, 8, 7, 1, 625) //321 P
	Spriteframe(0, 0, 8, 7, 9, 625) //322 Q
	Spriteframe(0, 0, 8, 7, 17, 625) //323 R
	Spriteframe(0, 0, 8, 7, 25, 625) //324 S
	Spriteframe(0, 0, 8, 7, 33, 625) //325 T
	Spriteframe(0, 0, 8, 7, 41, 625) //326 U
	Spriteframe(0, 0, 8, 7, 49, 625) //327 V
	Spriteframe(0, 0, 8, 7, 57, 625) //328 W
	Spriteframe(0, 0, 8, 7, 65, 625) //329 X
	Spriteframe(0, 0, 8, 7, 73, 625) //330 Y
	Spriteframe(0, 0, 8, 7, 81, 625) //331 Z
	Spriteframe(0, 0, 8, 7, 1, 633) //332 0
	Spriteframe(0, 0, 8, 7, 9, 633) //333 1
	Spriteframe(0, 0, 8, 7, 17, 633) //334 2
	Spriteframe(0, 0, 8, 7, 25, 633) //335 3
	Spriteframe(0, 0, 8, 7, 33, 633) //336 4
	Spriteframe(0, 0, 8, 7, 41, 633) //337 5
	Spriteframe(0, 0, 8, 7, 49, 633) //338 6
	Spriteframe(0, 0, 8, 7, 57, 633) //339 7
	Spriteframe(0, 0, 8, 7, 65, 633) //340 8
	Spriteframe(0, 0, 8, 7, 73, 633) //341 9
	
	//Game Modes (not highlighted)	
	Spriteframe(-141, -1, 282, 44, 741, 979) //342 Time Attack
	Spriteframe(-141, -1, 282, 44, 741, 934) //343 Arcade Mode
	Spriteframe(-141, -1, 0, 0, 741, 979) //345 Blank
	Spriteframe(-141, -1, 0, 0, 741, 979) //345 Blank
	Spriteframe(-141, -1, 0, 0, 741, 979) //346 Blank
	
	//Game Modes (highlighted)
	Spriteframe(-141, -1, 282, 44, 458, 979) //347 Time Attack
	Spriteframe(-141, -1, 282, 44, 458, 934) //348 Arcade Mode
	Spriteframe(-141, -1, 0, 0, 458, 979) //349 Blank
	Spriteframe(-141, -1, 0, 0, 458, 979) //350 Blank
	Spriteframe(-141, -1, 0, 0, 458, 979) //351 Blank
	
	//Extras
	//Names
	Spriteframe(9, 138, 73, 42, 667, 713) //352 Nick Arcade
	Spriteframe(8, 164, 86, 15, 741, 756) //353 Gamble Scramble
	Spriteframe(-141, -1, 0, 0, 458, 979) //354 Blank
	Spriteframe(-141, -1, 0, 0, 458, 979) //355 Blank
	Spriteframe(-141, -1, 0, 0, 458, 979) //356 Blank
	Spriteframe(-141, -1, 0, 0, 458, 979) //357 Blank

	//Highlight Art
	Spriteframe(0, 0, 100, 200, 641, 512) //358 Nick Arcade
	Spriteframe(0, 0, 100, 200, 540, 512) //359 Gamble Scramble
	Spriteframe(-141, -1, 0, 0, 458, 979) //360 Blank
	Spriteframe(-141, -1, 0, 0, 458, 979) //361 Blank
	Spriteframe(-141, -1, 0, 0, 458, 979) //362 Blank
	Spriteframe(-141, -1, 0, 0, 458, 979) //363 Blank
	
	Spriteframe(20, 164, 60, 16, 680, 756) //364 Extra Coming Soon
	Spriteframe(5, 20, 48, 7, 692, 773) //365 Nick Arcade Rings
	SpriteFrame(0, 0, 38, 7, 254, 105) //366 Time
	SpriteFrame(0, 0, 42, 7, 275, 137) //367 Limit
	SpriteFrame(0, 0, 70, 7, 315, 129) //368 Minutes
	SpriteFrame(0, 0, 46, 7, 305, 153) //369 Glide
	
	//Ring Chain
	Spriteframe(5, 20, 94, 27, 692, 781) //370 Ring Chain
	
	SpriteFrame(0, 0, 10, 7, 148, 153) //371 K (for S3K)

	Spriteframe(5, 20, 83, 7, 741, 773) //372 Gamble Scramble Time
	Spriteframe(0, 0, 5, 4, 829, 776) //373 "
	Spriteframe(0, 0, 3, 4, 825, 776) //374 '
	Spriteframe(0, 0, 8, 7, 109, 972) //375 '

	//Highlight Icons
	SpriteFrame(-5, -10, 16, 15, 631, 208)   //376 Sonic Icon
	SpriteFrame(-5, -10, 16, 14, 590, 271)   //377 Shoo
	SpriteFrame(-5, -10, 16, 14, 607, 271)   //378 Sprong
	SpriteFrame(-5, -10, 16, 14, 624, 271)   //379 Emerld
	SpriteFrame(-5, -10, 16, 14, 641, 271)   //380 Sparkles
	SpriteFrame(-5, -10, 16, 14, 675, 271)   //381 mod
	SpriteFrame(-5, -10, 16, 14, 658, 271)   //382 egg

	//Highlight Icons (greyed)
	SpriteFrame(-5, -10, 16, 14, 573, 286)   //383 Sonic Icon
	SpriteFrame(-5, -7, 16, 14, 590, 286)   //384 Shoo
	SpriteFrame(-5, -7, 16, 14, 607, 286)   //385 Sprong
	SpriteFrame(-5, -7, 16, 14, 624, 286)   //386 Emerld
	SpriteFrame(-5, -7, 16, 14, 641, 286)   //387 Sparkles
	SpriteFrame(-5, -7, 16, 14, 675, 286)   //388 le mod
	SpriteFrame(-5, -9, 16, 14, 658, 286)   //389 egg

	Spriteframe(0, 0, 87, 27, 604, 301) //390 Logo

	SpriteFrame(-73, 0, 144, 8, 319, 10) //391 Display
	SpriteFrame(-73, 0, 144, 8, 307, 1) //392 Gameplay
	SpriteFrame(-73, 0, 144, 8, 305, 19) //393 Abilities
	SpriteFrame(-73, 0, 144, 8, 306, 28) //394 Visuals
	SpriteFrame(-73, 0, 144, 8, 367, 37) //395 Sound
	SpriteFrame(-73, 0, 144, 8, 349, 46) //396 Data

	SpriteFrame(0, 0, 66, 7, 300, 73) //397 Random
	SpriteFrame(0, 0, 82, 7, 293, 81) //398 Monitors
	SpriteFrame(0, 0, 63, 7, 298, 89) //399 Volume
	SpriteFrame(0, 0, 74, 7, 285, 97) //400 SoundFX
	SpriteFrame(0, 0, 53, 7, 303, 105) //401 Blank
	SpriteFrame(0, 0, 54, 7, 293, 113) //402 Blank
	SpriteFrame(0, 0, 70, 7, 313, 121) //403 Chaotix
	SpriteFrame(0, 0, 84, 7, 318, 137) //404 Absolute

	SpriteFrame(0, 0, 103, 7, 308, 145) //405 Fullscreen
	SpriteFrame(0, 0, 64, 7, 305, 153) //406 Aspect
	SpriteFrame(0, 0, 48, 7, 370, 153) //407 Ratio
	SpriteFrame(0, 0, 61, 7, 367, 73) //408 Window
	SpriteFrame(0, 0, 52, 7, 376, 81) //409 Scale
	SpriteFrame(0, 0, 54, 7, 362, 89) //410 VSync
	SpriteFrame(0, 0, 69, 7, 360, 97) //411 Scaling
	SpriteFrame(0, 0, 43, 7, 357, 105) //412 Mode
	SpriteFrame(-1, 0, 32, 7, 198, 161) //413 16:9
	SpriteFrame(0, 0, 23, 7, 231, 161) //414 4:3

	SpriteFrame(0, 0, 74, 7, 255, 161) //415 Nearest
	SpriteFrame(0, 0, 68, 7, 330, 161) //416 Integer
	SpriteFrame(0, 0, 54, 7, 399, 161) //417 Sharp
	SpriteFrame(0, 0, 73, 7, 348, 113) //418 Bilinear

	SpriteFrame(0, 0, 33, 7, 228, 169) //419 Max
	SpriteFrame(0, 0, 43, 7, 262, 169) //420 Dash
	SpriteFrame(-10, 0, 42, 7, 306, 169) //421 16:10
	SpriteFrame(0, 0, 53, 7, 349, 169) //422 Frame
	SpriteFrame(0, 0, 42, 7, 403, 169) //423 Rate

	SpriteFrame(0, 0, 81, 7, 319, 177) //424 Graphics
	SpriteFrame(0, 0, 87, 7, 401, 177) //425 Hardware
	SpriteFrame(0, 0, 58, 7, 415, 185) //426 Mobile
	SpriteFrame(0, 0, 84, 7, 474, 185) //427 Emulated
	
	CallFunction(ResetPal)
	
	SetMusicTrack("SweetDream.ogg", 0, 1)
	LoadPalette("SaveSlot.act", 1, 0, 0, 256)
	LoadPalette("AchieveIcon.act", 2, 0, 0, 256)
	
	CallFunction(BlackandWhite)

	object[9].type = TypeName[Main Menu]
	object[9].priority = PRIORITY_ACTIVE
	object[9].drawOrder = 6
	object[9].state = Menu.LoadIn
	object[9].priority = PRIORITY_ACTIVE
	object[9].value17 = 3
	
	object[50].type = TypeName[Menu Tornado]
	object[50].value3 = screen.xsize 
	object[50].value3 /= 3 
	object[50].value3 <<= 16
	object[50].value4 = screen.ycenter
	object[50].value4 <<= 16
	object[50].drawOrder = 2
	object[50].priority = PRIORITY_ACTIVE
	object[50].value7 = saved.Title 
	
	//Clouds
	
	temp0 = 0
	arrayPos0 = 32
	while temp0 < 8
		GetTableValue(temp1, temp0, Cloud_Type)
		ResetObjectEntity(arrayPos0, TypeName[Menu Cloud], temp1, 0, 0)
		
		GetTableValue(object[arrayPos0].xpos, temp0, Cloud_X)
		object[arrayPos0].value1 = object[arrayPos0].xpos
		GetTableValue(object[arrayPos0].ypos, temp0, Cloud_Y)
		object[arrayPos0].xpos <<= 16
		object[arrayPos0].ypos <<= 16
		object[arrayPos0].drawOrder = 2
		switch temp1
		case 0
			object[arrayPos0].xvel = -0xC000
			break
		case 1
			object[arrayPos0].xvel = -0x8000
			break
		case 2
			object[arrayPos0].xvel = -0x4000
			break
		end switch
		
		arrayPos0++
		temp0++	
	loop
	
	stage[0].activeLayer = 1
end event




function AchieveDescribe
	temp6 = screen.xcenter
	temp6 -= 84
	temp7 = temp0
	temp7 += 20
	
	switch temp1
		case 0 //Quick Run
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(318, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(321, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(318, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(323, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(309, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(313, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(331, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7
					temp6 = screen.xcenter
					temp6 -= 84
					temp7 += 10
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)	
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(333, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(314, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(326, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(309, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(323, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(335, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(337, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(324, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(309, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(324, temp6, temp7)
			break
		case 1 //Chemical Free
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(318, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(321, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(313, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(318, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(321, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(331, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
					temp6 = screen.xcenter
					temp6 -= 84
					temp7 += 10
			DrawSpriteScreenXY(328, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(313, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(326, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(312, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(312, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(326, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(309, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(323, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(328, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(323, temp6, temp7)
			break
		case 2 //Early Bird Special
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(339, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(313, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(324, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(318, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(323, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(309, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(324, temp6, temp7)
				temp6 = screen.xcenter
				temp6 -= 84
				temp7 += 10
			DrawSpriteScreenXY(307, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(311, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(323, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(313, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(318, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(321, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(331, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			break
		case 3 //Superstar
			DrawSpriteScreenXY(311, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(324, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(313, temp6, temp7)	
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(306, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(330, temp6, temp7)	
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(306, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)	
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(314, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)	
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(306, temp6, temp7)	
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(324, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(326, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(321, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(323, temp6, temp7)

					temp6 = screen.xcenter
					temp6 -= 84
					temp7 += 10
			DrawSpriteScreenXY(311, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(323, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(318, temp6, temp7)
			break
		case 4 // Gambling Problem
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(316, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(324, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(321, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(327, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(323, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(330, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(324, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
					temp6 = screen.xcenter
					temp6 -= 84
					temp7 += 10
			DrawSpriteScreenXY(318, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(313, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(324, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(312, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(313, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(331, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
					temp6 = screen.xcenter
					temp6 -= 84
					temp7 += 10
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(334, temp6, temp7)
			break
		case 5 //Bop Non-Stop
			DrawSpriteScreenXY(309, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(311, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(330, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(307, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(324, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(324, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(340, temp6, temp7)
			temp6 += 8
					temp6 = screen.xcenter
					temp6 -= 84
					temp7 += 10
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(324, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(326, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(327, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(313, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(324, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(328, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(313, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(326, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
					temp6 = screen.xcenter
					temp6 -= 84
					temp7 += 10
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(326, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(313, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(312, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(313, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(312, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(323, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(326, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(309, temp6, temp7)
			temp6 += 8
			break
		case 6 //Perfectionist
			DrawSpriteScreenXY(312, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(306, temp6, temp7)	
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(321, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(323, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(311, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)	
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(307, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(326, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(324, temp6, temp7)	
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(307, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(330, temp6, temp7)
			temp6 += 8
						temp6 = screen.xcenter
						temp6 -= 84
						temp7 += 10
			DrawSpriteScreenXY(308, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(312, temp6, temp7)	
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(310, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(327, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(323, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(330, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(323, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(312, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
						temp6 = screen.xcenter
						temp6 -= 84
						temp7 += 10
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			break
		case 7 //A Secret Revealed
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(318, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(312, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(324, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			break
			
			
			DrawSpriteScreenXY(311, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(309, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(309, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(318, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(321, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(313, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(309, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(309, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
						temp6 = screen.xcenter
						temp6 -= 84
						temp7 += 10
			DrawSpriteScreenXY(321, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(331, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)	
			temp6 += 8
			break
		case 8 // Metropolis Master
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(318, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(321, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(330, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(318, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(323, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(321, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(324, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(331, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)	
			temp6 += 8
						temp6 = screen.xcenter
						temp6 -= 84
						temp7 += 10
			DrawSpriteScreenXY(306, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)	
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(328, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(313, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(326, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(312, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(312, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(313, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(326, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(323, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			break
		case 9 //Tour of the Plant
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(329, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(321, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(323, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(313, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(311, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(323, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(312, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(326, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(307, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
						temp6 = screen.xcenter
						temp6 -= 84
						temp7 += 10
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(313, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(318, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(321, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(331, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(333, temp6, temp7)

			break
		case 10 // Beat the Clock
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(318, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(321, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(313, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)	
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(325, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(318, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(306, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(316, temp6, temp7)	
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(318, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)	
			temp6 += 8
			DrawSpriteScreenXY(309, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
						temp6 = screen.xcenter
						temp6 -= 84
						temp7 += 10
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(324, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(324, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(313, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(335, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(332, temp6, temp7)
			temp6 += 8

				temp6 += 7
			DrawSpriteScreenXY(318, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(326, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(324, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(324, temp6, temp7)
			temp6 += 8
						temp6 = screen.xcenter
						temp6 -= 84
						temp7 += 10
			DrawSpriteScreenXY(324, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)
			break
		case 11 //Expeert's Challenge
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(317, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(325, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(334, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(337, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(323, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(312, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(324, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(319, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(314, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(316, temp6, temp7)
						temp6 = screen.xcenter
						temp6 -= 84
						temp7 += 10
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(323, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(308, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(306, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(309, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			temp6 += 8
				temp6 += 7
			DrawSpriteScreenXY(318, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(320, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(309, temp6, temp7)
			temp6 += 8
			DrawSpriteScreenXY(310, temp6, temp7)
			break
		case 12 // Scrambled Egg
	end switch

end function