--=============================HUD systems=================================================
--All of Samus' HUD-related code is here, arm cannon also being part of the HUD.
--The save menu, ship menu, dialogue, first-time menu, and clear game HUD are all included.
--Note that actual navigation and dialogue behaviour are sometimes set in SAMUS_MAIN
--=========================================================================================
local SAM = MetroidVanguard
local HOST = SAM.HOST

local function signed(varl) --Prevents issues simply using FixedInt would have.
	if (varl<32768) return varl end
	return varl-FRACUNIT
end

local SAMUShud
local Xo,Yo,DOo --Xoffset,Yoffset,Default Offset
local beamXO, beamYO
local T10,T20,T30,T40,T50,T60,T70,T80,T90 =
65536,131072,196608,262144,327680,393216,458752,524288,589824

local vLe,vRi,vTo,vBo = V_SNAPTOLEFT,V_SNAPTORIGHT,V_SNAPTOTOP,V_SNAPTOBOTTOM

--Shortcut to the Arm Cannon HUD.
local function ArmCannonHUD(v,p,s,WFLAGS,RFLAGS,vHEIGHT)
	local cm = v.getColormap(nil, s.color)
	local cmB = v.getColormap(nil, SKINCOLOR_BLACK)
	local BeamFrame = A
	local BeamLights = p.sam_beamcolor
	local beamroll,beamrollzx,beamrollz = 0,0,0 --Beam tilting. Beam rollangle, basically.
	
	if s.sam_beamroll
		beamrollzx = (s.sam_beamroll<<16)/-9
		if s.sam_beamroll < 0 --Right!
			beamroll = (s.sam_beamroll*ANG1)/8
			beamrollzx = (s.sam_beamroll<<16)/-7
		else --Left!
			beamroll = (s.sam_beamroll*ANG1)/16
			beamrollz = (s.sam_beamroll<<16)/4
		end
		if p.samspbschargefull and (p.speed > 40<<16) and beamrollzx
			beamrollzx = $*4/3
		end
	end	
	--Set beamoffset here because I'm too lazy to copy-paste all this crap into EVERY single beam script line.
	local beamYO2 = max(0, (p.aiming or 1)/1000)
	local beamYO3 = (p.beamswaydisty or 1)/2
	
	beamYO = p.samybeam+(p.visorclosein*2<<16)-p.samvisordropdist+beamYO2-(p.sambeamdrop*2)+beamYO3+beamrollz
	
	if p.samvisoraimxtrue != nil and p.samxbeam != nil
		local beamXO3 = p.beamswaydistx or 0 
		beamXO = (p.samvisoraimxtrue/2)+p.samxbeam+beamXO3+beamrollzx
	else
		beamXO = 0+beamrollzx
	end

	--Finally, set limits or the beam might go off-screen. 
	beamYO = max($, 0)
	local beamCM = v.getColormap("SKINCOLOR_VARIASUIT", p.sam_beamcolor)
	local ANIM = (p.sams_beamanim) or 0
	
	if vHEIGHT == 900 or vHEIGHT == 768 or vHEIGHT == 720 or vHEIGHT == 600 or vHEIGHT == 864 //x difference is -64 for changing snaptoleft to snaptoright
		if p.sams_beamcombocharge
		
			local ComboColor = p.sam_beamcolor
			local ComboFrame = I
			local blend = 0
			local BC = p.sams_beamcombocharge
			
			if (BC < 21)
				if BC == 4 or BC == 8 or BC == 12 or BC == 16
					ComboFrame,ComboColor = J,SKINCOLOR_WHITE
				elseif BC == 3 or BC == 7 or BC == 11 or BC == 15
					ComboFrame = K
				elseif BC == 2 or BC == 6 or BC == 10 or BC == 14
					ComboFrame,ComboColor = L, SKINCOLOR_WHITE
				end
				if ComboColor != p.sam_beamcolor blend = V_ADD|T10 end
				
				v.drawScaled(111<<16+beamXO +(DOo<<16), 93<<16+beamYO, 5<<16, 
				v.getSprite2Patch("basesamus", SPR2_TWIN, false, ComboFrame, 0, beamroll),
				RFLAGS, v.getColormap(nil, ComboColor))
				
			elseif BC < 33
			
				if BC == 22 or BC == 26 or BC == 30
					ComboFrame = J ComboColor = SKINCOLOR_CLOUDY
				elseif BC == 23 or BC == 27 or BC == 31
					ComboFrame = K
				elseif BC == 24 or BC == 28 or BC == 32
					ComboFrame = L ComboColor = SKINCOLOR_CLOUDY
				end
				if ComboColor != p.sam_beamcolor blend = V_ADD|T10 end
				
				v.drawScaled(118<<16+beamXO , 103<<16+beamYO, 4<<16, 
				v.getSprite2Patch("basesamus", SPR2_TWIN, false, ComboFrame, 0, beamroll),
				RFLAGS, v.getColormap(nil, ComboColor))					
			end		
		end
		
		--Charging up the arm cannon
		if p.sams_chargetime
			local CHT = p.sams_chargetime
			if (CHT % 2 == 0)
				if CHT == 42
					v.drawScaled(111<<16 + beamXO, 93<<16 + beamYO, 3<<16, v.getSprite2Patch("basesamus", SPR2_TWIN, false, I, 0, beamroll), RFLAGS, beamCM)
				elseif CHT == 44
					v.drawScaled(111<<16 + beamXO, 93<<16 + beamYO, 3<<16, v.getSprite2Patch("basesamus", SPR2_TWIN, false, K, 0, beamroll), RFLAGS, beamCM)
				end
				v.drawScaled(116<<16 + beamXO, 100<<16 + beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, G, 0, beamroll), RFLAGS, beamCM)
				if (s.eflags & MFE_UNDERWATER) and p.sambeamlightcolor
					v.drawScaled(116<<16 + beamXO, 100<<16 + beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, G, 0, beamroll), RFLAGS|(p.sambeamlight2), v.getColormap(nil, p.sambeamlightcolor))
				end
				if p.sambeamlight
					v.drawScaled(116<<16 + beamXO, 100<<16 + beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, G, 0, beamroll), RFLAGS|(p.sambeamlight), cmB)
				end
				if p.sam_shinespark
					v.drawScaled(116<<16 + beamXO, 100<<16 + beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, G, 0, beamroll), RFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				end
			else
				if CHT == 43
					v.drawScaled(111<<16 + beamXO, 93<<16 + beamYO, 3<<16, v.getSprite2Patch("basesamus", SPR2_TWIN, false, J, 0, beamroll), RFLAGS, beamCM)
				elseif CHT == 45
					v.drawScaled(111<<16 + beamXO, 93<<16 + beamYO, 3<<16, v.getSprite2Patch("basesamus", SPR2_TWIN, false, L, 0, beamroll), RFLAGS, beamCM)
				end
				v.drawScaled(116<<16 + beamXO, 100<<16 + beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, H, 0, beamroll), RFLAGS, beamCM)
				if (s.eflags & MFE_UNDERWATER) and p.sambeamlightcolor
					v.drawScaled(116<<16 + beamXO, 100<<16 + beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, H, 0, beamroll), RFLAGS|(p.sambeamlight2), v.getColormap(nil, p.sambeamlightcolor))
				end
				if p.sambeamlight
					v.drawScaled(116<<16 + beamXO, 100<<16 + beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, H, 0, beamroll), RFLAGS|(p.sambeamlight), cmB)
				end
				if p.sam_shinespark
					v.drawScaled(116<<16 + beamXO, 100<<16 + beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, H, 0, beamroll), RFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				end
			end
		elseif (ANIM < 2)
			v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, A, 0, beamroll), RFLAGS, beamCM)
			if (s.eflags & MFE_UNDERWATER) and p.sambeamlightcolor
				v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), RFLAGS|(p.sambeamlight2), v.getColormap(nil, p.sambeamlightcolor))
			end
			if p.sambeamlight
				v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), RFLAGS|(p.sambeamlight), cmB)
			end
			if p.beampain
				v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), RFLAGS|T20, v.getColormap(nil, SKINCOLOR_SUPERSILVER5))
			end
			if p.beampulse and not (p.sam_beamcolor and p.sam_beamcolor == SKINCOLOR_BLACK)
				if (p.beampulse > 44)
					--
				elseif (p.beampulse > 36)
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_BNCE, false, A, 0, beamroll), RFLAGS|T90, cmB)
				elseif (p.beampulse > 28)
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_BNCE, false, A, 0, beamroll), RFLAGS|T80, cmB)
				elseif (p.beampulse > 16)
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_BNCE, false, A, 0, beamroll), RFLAGS|T70, cmB)
				elseif (p.beampulse > 8)
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_BNCE, false, A, 0, beamroll), RFLAGS|T80, cmB)
				else
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_BNCE, false, A, 0, beamroll), RFLAGS|T90, cmB)
				end
			end
			if p.sam_screwattacking
				if (p.sam_screwattacking % 3 == 0)
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), RFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERPERIDOT3))
				else
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), RFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
				end		
			elseif p.sam_shinespark
				if (p.sam_shinespark % 2 == 0)
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), RFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				else
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), RFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				end
			elseif p.sam_shinesparkfly and (p.sam_shinesparkfly > 17)
				if (p.sam_shinesparkfly % 2 == 0)
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), RFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				else
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), RFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				end
			end
		elseif (ANIM >= 14)
			v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, B, 0, beamroll), RFLAGS, beamCM)
			v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, N, 0, beamroll), RFLAGS|V_ADD|T10, beamCM)
			if (s.eflags & MFE_UNDERWATER) and p.sambeamlightcolor
				v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, B, 0, beamroll), RFLAGS|(p.sambeamlight2), v.getColormap(nil, p.sambeamlightcolor))
			end
			if p.sambeamlight
				v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, B, 0, beamroll), RFLAGS|(p.sambeamlight), cmB)
			end
			if p.sam_shinespark
				if p.sam_shinespark % 2 == 0
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, B, 0, beamroll), RFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				else
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, B, 0, beamroll), RFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				end
			end
		elseif (ANIM >= 12)
			v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, C, 0, beamroll), RFLAGS, beamCM)
			v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, O, 0, beamroll), RFLAGS|V_ADD|T10, beamCM)
			if (s.eflags & MFE_UNDERWATER) and p.sambeamlightcolor
				v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, C, 0, beamroll), RFLAGS|(p.sambeamlight2), v.getColormap(nil, p.sambeamlightcolor))
			end
			if p.sambeamlight
				v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, C, 0, beamroll), RFLAGS|(p.sambeamlight), cmB)
			end
			if p.sam_shinespark
				if p.sam_shinespark % 2 == 0
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, C, 0, beamroll), RFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				else
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, C, 0, beamroll), RFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				end
			end
		elseif (ANIM >= 9)
			v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, D, 0, beamroll), RFLAGS, beamCM)
			v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, P, 0, beamroll), RFLAGS|V_ADD|T10, beamCM)		
			if (s.eflags & MFE_UNDERWATER) and p.sambeamlightcolor
				v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, D, 0, beamroll), RFLAGS|(p.sambeamlight2), v.getColormap(nil, p.sambeamlightcolor))
			end
				if p.sambeamlight
			v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, D, 0, beamroll), RFLAGS|(p.sambeamlight), cmB)
			end
			if p.sam_shinespark
				if p.sam_shinespark % 2 == 0
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, D, 0, beamroll), RFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				else
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, D, 0, beamroll), RFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				end
			end
		elseif (ANIM >= 5)
			v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, E, 0, beamroll), RFLAGS, beamCM)
			if (s.eflags & MFE_UNDERWATER) and p.sambeamlightcolor
				v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, E, 0, beamroll), RFLAGS|(p.sambeamlight2), v.getColormap(nil, p.sambeamlightcolor))
			end
			if p.sambeamlight
				v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, E, 0, beamroll), RFLAGS|(p.sambeamlight), cmB)
			end
			if p.sam_shinespark
				if p.sam_shinespark % 2 == 0
				v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, E, 0, beamroll), RFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				else
				v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, E, 0, beamroll), RFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				end
			end
		elseif (ANIM >= 2)
			v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, F, 0, beamroll), RFLAGS, beamCM)
			if (s.eflags & MFE_UNDERWATER) and p.sambeamlightcolor
				v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, F, 0, beamroll), RFLAGS|(p.sambeamlight2), v.getColormap(nil, p.sambeamlightcolor))
			end
			if p.sambeamlight
				v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, F, 0, beamroll), RFLAGS|(p.sambeamlight), cmB)
			end
			if p.sam_shinespark
				if p.sam_shinespark % 2 == 0
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, F, 0, beamroll), RFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				else
					v.drawScaled(116<<16+beamXO , 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, F, 0, beamroll), RFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				end
			end
		end
	else --Now do it all again....
		if p.sams_beamcombocharge
			local BC =  p.sams_beamcombocharge
			if BC == 5 or BC == 9 or BC == 13 or BC == 17
				v.drawScaled(175<<16+beamXO +(DOo<<16), 93<<16+beamYO, 5<<16, v.getSprite2Patch("basesamus", SPR2_TWIN, false, I, 0, beamroll), WFLAGS|T10, beamCM)
			elseif BC == 4 or BC == 8 or BC == 12 or BC == 16
				v.drawScaled(175<<16+beamXO +(DOo<<16), 93<<16+beamYO, 5<<16, v.getSprite2Patch("basesamus", SPR2_TWIN, false, J, 0, beamroll), WFLAGS|T10, v.getColormap(nil, SKINCOLOR_WHITE))
			elseif BC == 3 or BC == 7 or BC == 11 or BC == 15
				v.drawScaled(175<<16+beamXO +(DOo<<16), 93<<16+beamYO, 5<<16, v.getSprite2Patch("basesamus", SPR2_TWIN, false, K, 0, beamroll), WFLAGS|T10, beamCM)
			elseif BC == 2 or BC == 6 or BC == 10 or BC == 14
				v.drawScaled(175<<16+beamXO +(DOo<<16), 93<<16+beamYO, 5<<16, v.getSprite2Patch("basesamus", SPR2_TWIN, false, L, 0, beamroll), WFLAGS|T10, v.getColormap(nil, SKINCOLOR_WHITE))
			else
				if BC == 21 or BC == 25 or BC == 29
					v.drawScaled(182<<16+beamXO +(DOo<<16), 103<<16+beamYO, 4<<16, v.getSprite2Patch("basesamus", SPR2_TWIN, false, I, 0, beamroll), WFLAGS|T10, beamCM)
				elseif BC == 22 or BC == 26 or BC == 30
					v.drawScaled(182<<16+beamXO +(DOo<<16), 103<<16+beamYO, 4<<16, v.getSprite2Patch("basesamus", SPR2_TWIN, false, J, 0, beamroll), WFLAGS|T10, v.getColormap(nil, SKINCOLOR_CLOUDY))
				elseif BC == 23 or BC == 27 or BC == 31
					v.drawScaled(182<<16+beamXO +(DOo<<16), 103<<16+beamYO, 4<<16, v.getSprite2Patch("basesamus", SPR2_TWIN, false, K, 0, beamroll), WFLAGS|T10, beamCM)
				elseif BC == 24 or BC == 28 or BC == 32
					v.drawScaled(182<<16+beamXO +(DOo<<16), 103<<16+beamYO, 4<<16, v.getSprite2Patch("basesamus", SPR2_TWIN, false, L, 0, beamroll), WFLAGS|T10, v.getColormap(nil, SKINCOLOR_CLOUDY))
				end
			end
		end
		if p.sams_chargetime
			local CHT = p.sams_chargetime
			if (CHT%2==0)
				if CHT == 42
					v.drawScaled(175<<16+beamXO +(DOo<<16), 93<<16+beamYO, 3<<16, v.getSprite2Patch("basesamus", SPR2_TWIN, false, I, 0, beamroll), WFLAGS|T10, beamCM)
				elseif CHT == 44
					v.drawScaled(175<<16+beamXO +(DOo<<16), 93<<16+beamYO, 3<<16, v.getSprite2Patch("basesamus", SPR2_TWIN, false, K, 0, beamroll), WFLAGS|T10, beamCM)
				end
				
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, G, 0, beamroll), WFLAGS, beamCM)
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, Q, 0, beamroll), WFLAGS|V_ADD|T10, beamCM)
				if (s.eflags & MFE_UNDERWATER) and p.sambeamlightcolor
					v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, G, 0, beamroll), WFLAGS|(p.sambeamlight2), v.getColormap(nil, p.sambeamlightcolor))				
				end

				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, G, 0, beamroll), WFLAGS|T90, v.getColormap(nil, SKINCOLOR_CLOUDY))

				if p.sambeamlight
					v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, G, 0, beamroll), WFLAGS|(p.sambeamlight), cmB)
				end

				if p.beampain
					v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, G, 0, beamroll), WFLAGS|T20, v.getColormap(nil, SKINCOLOR_WHITE))
				end

				if p.sam_shinespark
					v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, G, 0, beamroll), WFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				end
			else
				if CHT == 43
					v.drawScaled(175<<16+beamXO +(DOo<<16), 93<<16+beamYO, 3<<16, v.getSprite2Patch("basesamus", SPR2_TWIN, false, J, 0, beamroll), WFLAGS|T10, beamCM)
				elseif CHT == 45
					v.drawScaled(175<<16+beamXO +(DOo<<16), 93<<16+beamYO, 3<<16, v.getSprite2Patch("basesamus", SPR2_TWIN, false, L, 0, beamroll), WFLAGS|T10, beamCM)
				end
				
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, H, 0, beamroll), WFLAGS, beamCM)
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, R, 0, beamroll), WFLAGS|V_ADD|T10, beamCM)
				if (s.eflags & MFE_UNDERWATER) and p.sambeamlightcolor
					v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, H, 0, beamroll), WFLAGS|(p.sambeamlight2), v.getColormap(nil, p.sambeamlightcolor))				
				end
				if p.sambeamlight
					v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, H, 0, beamroll), WFLAGS|(p.sambeamlight), cmB)
				end
				if p.beampain
					v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, H, 0, beamroll), WFLAGS|T20, v.getColormap(nil, SKINCOLOR_WHITE))
				end
				if p.sam_shinespark
					v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, G, 0, beamroll), WFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				end
			end
			
		elseif (ANIM < 2)
			v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, A, 0, beamroll), WFLAGS, beamCM)
			if (s.eflags & MFE_UNDERWATER) and p.sambeamlightcolor
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), WFLAGS|(p.sambeamlight2), v.getColormap(nil, p.sambeamlightcolor))
			end
			if p.sambeamlight
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), WFLAGS|(p.sambeamlight), cmB)
			end
			if p.beampain
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), WFLAGS|T20, v.getColormap(nil, SKINCOLOR_WHITE))
			end
			if p.beampulse and not (p.sam_beamcolor and p.sam_beamcolor == SKINCOLOR_BLACK)
				if (p.beampulse > 44)
				--
				elseif (p.beampulse > 36)
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_BNCE, false, A, 0, beamroll), WFLAGS|T90)
				elseif (p.beampulse > 28)
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_BNCE, false, A, 0, beamroll), WFLAGS|T80)
				elseif (p.beampulse > 16)
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_BNCE, false, A, 0, beamroll), WFLAGS|T70)
				elseif (p.beampulse > 8)
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_BNCE, false, A, 0, beamroll), WFLAGS|T80)
				else
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_BNCE, false, A, 0, beamroll), WFLAGS|T90)
				end
			end
			if p.sam_screwattacking
				if (p.sam_screwattacking % 3 == 0)
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), WFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERPERIDOT3))
				else
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), WFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERGOLD2))
				end
			elseif p.sam_shinespark
				if (p.sam_shinespark % 2 == 0)
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), WFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				else
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), WFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				end
			elseif p.sam_shinesparkfly and (p.sam_shinesparkfly > 17)
				if (p.sam_shinesparkfly % 2 == 0)
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), WFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERRED5))
				else
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, A, 0, beamroll), WFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERRED5))
				end	
			end
		elseif (ANIM >= 14)
			v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, B, 0, beamroll), WFLAGS, beamCM)
			if (s.eflags & MFE_UNDERWATER) and p.sambeamlightcolor
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, B, 0, beamroll), WFLAGS|(p.sambeamlight2), v.getColormap(nil, p.sambeamlightcolor))
			end
			if p.sam_powerbeamequip or p.sam_icebeamequip
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, B, 0, beamroll), WFLAGS|T90, v.getColormap(nil, p.sam_beamcolor))
			elseif p.sam_spazerbeamequip or p.sam_hyperbeamequip
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, B, 0, beamroll), WFLAGS|T50, v.getColormap(nil, p.sam_beamcolor))
			else
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, B, 0, beamroll), WFLAGS|T70, v.getColormap(nil, p.sam_beamcolor))
			end
		//	if p.sambeamlight
		//	v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, B, 0, beamroll), WFLAGS|(p.sambeamlight), cmB)
		//	end
			if p.sam_shinespark
				if p.sam_shinespark % 2 == 0
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, B, 0, beamroll), WFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				else
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, B, 0, beamroll), WFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				end
			end
		elseif (ANIM >= 12)
		v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, C, 0, beamroll), WFLAGS, beamCM)
		v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, O, 0, beamroll), WFLAGS|V_ADD|T10, beamCM)
			if (s.eflags & MFE_UNDERWATER) and p.sambeamlightcolor
			v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, C, 0, beamroll), WFLAGS|(p.sambeamlight2), v.getColormap(nil, p.sambeamlightcolor))
			end
			if p.sambeamlight
			v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, C, 0, beamroll), WFLAGS|(p.sambeamlight), cmB)
			end
			if p.sam_shinespark
				if p.sam_shinespark % 2 == 0
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, C, 0, beamroll), WFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				else
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, C, 0, beamroll), WFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				end
			end
		elseif (ANIM >= 9)
		v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, D, 0, beamroll), WFLAGS, beamCM)
		v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, P, 0, beamroll), WFLAGS|V_ADD|T10, beamCM)
			if (s.eflags & MFE_UNDERWATER) and p.sambeamlightcolor
			v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, D, 0, beamroll), WFLAGS|(p.sambeamlight2), v.getColormap(nil, p.sambeamlightcolor))
			end
			if p.sambeamlight
			v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, D, 0, beamroll), WFLAGS|(p.sambeamlight), cmB)
			end
			if p.sam_shinespark
				if p.sam_shinespark % 2 == 0
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, D, 0, beamroll), WFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				else
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, D, 0, beamroll), WFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				end
			end
		elseif (ANIM >= 5)
		v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, E, 0, beamroll), WFLAGS, beamCM)
			if (s.eflags & MFE_UNDERWATER) and p.sambeamlightcolor
			v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, E, 0, beamroll), WFLAGS|(p.sambeamlight2), v.getColormap(nil, p.sambeamlightcolor))
			end
			if p.sambeamlight
			v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, E, 0, beamroll), WFLAGS|(p.sambeamlight), cmB)
			end
			if p.sam_shinespark
				if p.sam_shinespark % 2 == 0
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, E, 0, beamroll), WFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				else
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_FIRE, false, E, 0, beamroll), WFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				end
			end
		elseif (ANIM >= 2)
			v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_TWIN, false, F, 0, beamroll), WFLAGS, beamCM)
			local PATCH = v.getSprite2Patch("basesamus", SPR2_FIRE, false, F, 0, beamroll)
			if (s.eflags & MFE_UNDERWATER) and p.sambeamlightcolor
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, PATCH, WFLAGS|(p.sambeamlight2), v.getColormap(nil, p.sambeamlightcolor))
			end
			if p.sambeamlight
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, PATCH, WFLAGS|(p.sambeamlight), cmB)
			end
			if p.sam_shinespark
				if p.sam_shinespark % 2 == 0
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, PATCH, WFLAGS|T50, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				else
				v.drawScaled(180<<16+beamXO +(DOo<<16), 100<<16+beamYO, FRACUNIT, PATCH, WFLAGS|T30, v.getColormap(nil, SKINCOLOR_SUPERSKY2))
				end
			end
		end
		if s.sam_ldclmb --Samus' hand reaching out to grab a ledge.
			local cd = 30-s.sam_ldclmb  --Turns it into a forward counting timer.
			local Yo = (100+(cd*5))<<16
			if cd < 4
				v.drawScaled(5+(cd*20)<<16, (140-(cd*40))<<16, FRACUNIT+(92500-cd*250), v.getSprite2Patch("basesamus", SPR2_TWIN, false, M, 0, -ANG2*cd), WFLAGS, cm)		
			elseif cd < 6
				v.drawScaled((48+cd)<<16, (100+(cd*4))<<16, FRACUNIT+(32500-cd*30), v.getSprite2Patch("basesamus", SPR2_TWIN, false, M, 0, 0), WFLAGS, cm)
			elseif cd < 9
				v.drawScaled((56+cd)<<16, (150+(cd*3))<<16, FRACUNIT+(23000-cd*25), v.getSprite2Patch("basesamus", SPR2_TWIN, false, M, 0, 0), WFLAGS, cm)
			else
				v.drawScaled((60-cd*2)<<16, (180+cd*2)<<16, FRACUNIT+(5000-cd*5), v.getSprite2Patch("basesamus", SPR2_TWIN, false, M, 0, ANG1*cd), WFLAGS, cm)
			end
		end
	end
end

--First, the gameplay HUD. Beam, score/time HUD, visor, all that stuff.
hud.add(function(v, p, cam)
	if p.sam_saveselect or not p.mo or p.mo.samhudgimmick
		return --
	else
		if gamemap==100 
		and (p.disablevote != nil or p.ui)
			if string.find(mapheaderinfo[gamemap].lvlttl, "HUB") or string.find(mapheaderinfo[gamemap].subttl, "HUB")
				if (p.pflags & PF_FULLSTASIS) 
				or p.mo and p.mo.floorz == 480<<16 and (p.pflags & PF_FORCESTRAFE)
					return --
				end
			end
		end
		if (p.powers[pw_carry] == CR_NIGHTSMODE)
		or p.heysamusstopyourhudforthismanytics
			return --
		end
	end
	
	--Some adjustments depending on render and screen size.
	local vHEIGHT = v.height() or 0
	if vHEIGHT == 1080 --1080p, the main renderer.
		Xo,Yo = -14,40
		DOo = 0 --Default Offsets.
	else
		Xo = 17
		if vHEIGHT == 1024 --720p.
			Yo = 17
			DOo = -33
		else --Assuming you're using the green renders.
			Xo,Yo = 17,45
			DOo = -38
		end
	end
	local s = p.mo
	local RX,RY = hudinfo[HUD_RINGS].x, hudinfo[HUD_RINGS].y
	local HX,HY = hudinfo[HUD_LIVES].x, hudinfo[HUD_LIVES].y
	local cm = v.getColormap(nil, s.color)
	local cmB = v.getColormap(nil, SKINCOLOR_BLACK)
	--Minor splitscreen adjustments to make it at least...playable.
	if splitscreen and p == players[1]
		Yo = $+100
	end
	
	
	--Don't have to be alive to get these HUD elements.
	if s.omegarushpanic
	or s.gattlingvortex and s.gattlingtime
		local ORFLAGS,OFFLAGS = T40|vLe|vTo, T90|vRi|vTo|V_FLIP
		if (vHEIGHT == 1200) or (vHEIGHT == 800) or (vHEIGHT == 400) or (vHEIGHT == 200)
			if (leveltime % 2 == 0)
				v.drawScaled(0, 0, 65356, v.cachePatch("SAMZOOM1"), ORFLAGS, v.getColormap(nil, SKINCOLOR_CRIMSON))
			else
				v.drawScaled(320<<16, 0, 65356, v.cachePatch("SAMZOOM1"), OFFLAGS, v.getColormap(nil, SKINCOLOR_CLOUDY))
			end
		elseif (vHEIGHT == 1080)
			if (leveltime % 2 == 0)
				v.drawScaled(0, -40<<16, 82033, v.cachePatch("SAMZOOM1"), ORFLAGS, v.getColormap(nil, SKINCOLOR_CRIMSON))
			else
				v.drawScaled(320<<16, -40<<16, 82033, v.cachePatch("SAMZOOM1"), OFFLAGS, v.getColormap(nil, SKINCOLOR_CLOUDY))
			end
		end
	end
	if not p.lives 
		if (gametype == GT_COOP) and netgame
		and not (p.samnetcon and (p.samnetcon>2))
		and YouAreSamus(s)
			local HX,HY = hudinfo[HUD_LIVES].x, hudinfo[HUD_LIVES].y
			if not p.samnetcon
				v.drawString(HX+137, HY-120, "Use 1 of your\x83 3\x80 stage revives? :\x82 Custom 3", T10|V_ALLOWLOWERCASE, "center")
			elseif p.samnetcon == 1
				v.drawString(HX+137, HY-120, "Use 1 of your\x87 2\x80 stage revives? :\x82 Custom 3", T10|V_ALLOWLOWERCASE, "center")
			else--if (p.samnetcon >= 2)
				v.drawString(HX+135, HY-120, "Use your\x85 last\x80 stage revive? :\x82 Custom 3", T10|V_ALLOWLOWERCASE, "center")
			end
		end
	end
	
	if not s.health
		return --Gotta be alive from now on.
	end
	local WFLAGS = vLe|vBo --Some common HUD flags.
	local RFLAGS = vRi|vBo
	local TWINPLAYER = (p == players[1] and splitscreen)

	--Now for the visor HUD and Arm Cannon HUD!
	if YouAreSamus(s)	

		--Arm Cannon HUD code. Beam HUD.
		local FirstPerson = false
		if not cam.chase and not p.sammorphed
		and not p.sam_intoship and not splitscreen
		and not (p.awayviewmobj and p.awayviewtics)
			FirstPerson = true
		end
		
		if FirstPerson
			if not ((s.flags2 & MF2_DONTDRAW) and not p.sam_shinespark)
			and p.sam_beamcolor != nil
				ArmCannonHUD(v,p,s,WFLAGS,RFLAGS,vHEIGHT) --The order of this HUD stuff is VERY important!
			end
		end	
		local CLOSEIN = (p.visorclosein) or 0
		local AIMYTRUE1,AIMYTRUE2,AIMXTRUE = (p.samvisoraimytrue1) or 0,(p.samvisoraimytrue2) or 0,(p.samvisoraimxtrue) or 0
		local upvis = ((CLOSEIN<<16)+AIMYTRUE1)*-1 --lazy
			
		--RADAR SCAN VISOR FUNCTION. Look for monitors, tokens, and players!
		--The actual radar graphic first at the bottom. 
		if s.sam_scanpowerup and not (s.sam_scanpowerup < 140 and s.sam_scanpowerup % 2 == 0)
		or s.samradaranim
			if s.samradaranim
				if s.samradaranimd
					v.drawScaled(143<<16-32000+(FRACUNIT*30/s.samradaranim), 28<<16, 7500*s.samradaranim, v.cachePatch("SAMVISU7"), (T90-(s.samradaranim<<16))|vTo)
				else
					v.drawScaled(143<<16-32000, 12<<16+(s.samradaranim*2<<16), FRACUNIT, v.cachePatch("SAMVISU7"), (T90-(s.samradaranim<<16))|vTo)
				end
			else
				v.drawScaled(143<<16-32000, 28<<16, FRACUNIT, v.cachePatch("SAMVISU7"), T20|vTo)
			end
		end				
		--Only do this with a scan power up!
		if s.sam_scanpowerup 
		and not ((s.sam_scanpowerup<140) and s.sam_scanpowerup%2==0) --This allows it to flicker near the end.
			local bwidth = 34 --HUDSIZE!
			local bstx = 178-bwidth
			local bsty = 28

			local bcenterx = bstx+bwidth/2
			local bcentery = bsty+bwidth/2
			local bscale = 4000<<16/(bwidth/2) --Search Radius
			local pwidth = 2
			local turnangle = (p.cmd.angleturn<<16)-ANGLE_90
			
			--Monitor finding code!
			if p.scannedmons and not p.sam_hyperbeampanic
				 for i,m in pairs(p.scannedmons)
					if m.valid and m.health and not (m.flags2 & MF2_DONTDRAW)
					and not (FixedHypot(s.x-m.x, s.y-m.y) > 9999<<16)
						local ang = R_PointToAngle2(s.x,s.y, m.x, m.y)-turnangle
						local dist = R_PointToDist2(s.x,s.y, m.x, m.y)
						local dcolor = SKINCOLOR_ORANGE
						local calctrns = abs(s.z-m.z)
						local dtrns = T10
						local distx = signed(FixedDiv(FixedMul(cos(ang), dist), bscale) >> FRACBITS)
						local disty = signed(FixedDiv(FixedMul(sin(ang), dist), bscale) >> FRACBITS)	
						distx = min(bwidth/2, max(-bwidth/2, $))
						disty = min(bwidth/2, max(-bwidth/2, $))
						
						--Set colors?
						if not (m.flags & MF_MONITOR) // (m.type == MT_TOKEN)
							dcolor = SKINCOLOR_SUPERGOLD5
						elseif (m.type == MT_1UP_BOX)
							dcolor = SKINCOLOR_SUPERSILVER5
						elseif not (m.type == MT_RING_BOX or m.type == MT_SCORE10K_BOX  or m.type == MT_SCORE1K_BOX)
							dcolor = SKINCOLOR_CORNFLOWER
						end 
		
						--Set Trans the further your vertical distance??
						calctrns = ($/FRACUNIT)/150 		
						dtrns = min(T70, calctrns<<16)
						
						v.drawScaled((bcenterx+distx)<<16, ((bcentery-disty-pwidth/2)<<16)+2<<16, 8000, v.cachePatch("PBSHG0"), vTo|dtrns, v.getColormap(nil, dcolor))
						
					else --Less to run through
						table.remove(p.scannedmons, i)
					end					
				end
			end
				
			--Player finding code
			if p.sam_hyperbeampanic	
				if p.scannedplays and not p.sam_hyperbeam		
					local PANIC = p.sam_hyperbeampanic
					local PANICc = v.getColormap(nil, PANIC)
					local PANICp = v.cachePatch("PBSHG0")	
					for i,m in pairs(p.scannedplays)
						if not (m.valid and m.player and m.player.sam_hyperbeam) continue end --
						
						local ang = R_PointToAngle2(s.x,s.y, m.x, m.y)-turnangle
						local dist = R_PointToDist2(s.x,s.y, m.x, m.y)
						local distx = signed(FixedDiv(FixedMul(cos(ang), dist), bscale) >> FRACBITS)
						local disty = signed(FixedDiv(FixedMul(sin(ang), dist), bscale) >> FRACBITS)
						distx = min(bwidth/2, max(-bwidth/2, $))
						disty = min(bwidth/2, max(-bwidth/2, $))
							
						v.drawScaled((bcenterx+distx)<<16, ((bcentery-disty-pwidth/2)<<16)+2<<16, 10000+(PANIC*70), PANICp, vTo, PANICc) 
						
						local z = m.player
						local AMMO,ENERGY = z.sam_hyperbeamammo*4/3, z.sam_energy
						local TXT = z.beampain and "health:\x85 " or "health:\x80 "
						local PFLAGS  = z.beampain and vLe or T20|vLe 
						if (PANIC == SKINCOLOR_SUPERRED1)
							v.drawFill(20, 73, AMMO, 3, 73|vLe)
							v.drawString(20, 60, "\x82"+z.name+"'s Ammo",T30|vLe, "left")
							v.drawString(20, 82, "\x82"+z.name+"'s", T30|vLe, "left")
							v.drawString(20, 94, "\x82"+TXT+ENERGY, PFLAGS, "left")
						elseif (PANIC == SKINCOLOR_SUPERSKY5) --white
							v.drawFill(20, 73, AMMO, 3, 200|vLe)
							v.drawString(20, 60, z.name+"'s Ammo",T30|vLe, "left")
							v.drawString(20, 82, z.name+"'s", T30|vLe, "left")
							v.drawString(20, 94, TXT+ENERGY, PFLAGS, "left")
						else -- blue
							v.drawFill(20, 73, AMMO, 3, 120|vLe)
							v.drawString(20, 60, "\x84"+z.name+"'s Ammo",T20|vLe, "left")
							v.drawString(20, 82, "\x84"+z.name+"'s", T30|vLe, "left")
							v.drawString(20, 94, "\x84"+TXT+ENERGY, PFLAGS, "left")
						end
					end
				end
			elseif (gametype == GT_COOP)
				for z in players.iterate
					if p == z or not z.mo continue end --
					local ang = R_PointToAngle2(s.x,s.y, z.mo.x, z.mo.y)-turnangle
					local dist = R_PointToDist2(s.x,s.y, z.mo.x, z.mo.y)
					local distx = signed(FixedDiv(FixedMul(cos(ang), dist), bscale) >> FRACBITS)
					local disty = signed(FixedDiv(FixedMul(sin(ang), dist), bscale) >> FRACBITS)
					distx = min(bwidth/2, max(-bwidth/2, $))
					disty = min(bwidth/2, max(-bwidth/2, $))
					
					--Draw the dots!
					if z.mo.crystalflashtime or z.powers[pw_super] or z.hypermysticsonic --Big threats.
						v.drawScaled((bcenterx+distx)<<16, ((bcentery-disty-pwidth/2)<<16)+2<<16, 14000, v.cachePatch("PBSHH0"), vTo, v.getColormap(nil, SKINCOLOR_SUPERPURPLE3))
					else
						v.drawScaled((bcenterx+distx)<<16, ((bcentery-disty-pwidth/2)<<16)+2<<16, 8000, v.cachePatch("PBSHH0"), vTo|T10, v.getColormap(nil, z.mo.color))
					end
				end
			elseif p.scannedplays
				local TOPSCORE = 0
				local SCORE = p.score or 0
				local TOPPLAYER = p
				if G_GametypeHasSpectators() and HOST and HOST.valid	
					TOPSCORE = HOST.sam_topscore or 0
					SCORE = p.score or 0
					TOPPLAYER = (HOST.sam_topscoreman) or HOST
				end
			
				for i,m in pairs(p.scannedplays)
					if not (m and m.valid and m.player) --Don't add yourself or people using the Wave Beam Combo jamming your radar.
					or p == m.player or m.wavebuffering
						continue --
					end
					local ang = R_PointToAngle2(s.x,s.y, m.x, m.y)-turnangle
					local dist = R_PointToDist2(s.x,s.y, m.x, m.y)
					local distx = signed(FixedDiv(FixedMul(cos(ang), dist), bscale) >> FRACBITS)
					local disty = signed(FixedDiv(FixedMul(sin(ang), dist), bscale) >> FRACBITS)
					distx = min(bwidth/2, max(-bwidth/2, $))
					disty = min(bwidth/2, max(-bwidth/2, $))
					
					local z = m.player
					local sX,sY,sPATCH = (bcenterx+distx)<<16, ((bcentery-disty-pwidth/2)<<16)+2<<16, v.cachePatch("PBSHH0") 
					--Big threats.
					if m.crystalflashtime or (z==TOPPLAYER) or z.powers[pw_super] or z.hypermysticsonic
					or z == p.SAM_RevengeBounty or z.samchallenger
						v.drawScaled(sX,sY,14000,sPATCH, vTo, v.getColormap(nil, SKINCOLOR_SUPERPURPLE3))
						if z == TOPPLAYER or z == p.SAM_RevengeBounty or z.samchallenger
							local spPATCH = (leveltime%2) and v.cachePatch("MPR1A0") or v.cachePatch("MPR1C0")
							if (leveltime%3==0)	
								v.drawScaled(sX+2<<16,sY-2<<16, 7500, spPATCH, T30|vTo, v.getColormap(nil, SKINCOLOR_SUPERSKY5))
							elseif (leveltime%2==0)	
								v.drawScaled(sX,sY+99950,8000,spPATCH, T30|vTo, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
							else
								v.drawScaled(sX-2<<16,sY-2<<16,7500,spPATCH, T30|vTo, v.getColormap(nil, SKINCOLOR_FLAME))
							end
						end						
					else
						v.drawScaled(sX,sY,8000, sPATCH, vTo|T10, v.getColormap(nil, m.color))
					end
				end					
			end	
		elseif s.sam_scansymbol and (s.sam_scansymbol > 15)
			local trns = T90-(((s.sam_scansymbol/6))<<16)
			trns = max(T40, min(T90,$))
			local color = (p.sam_gravitysuit and p.sam_gravitysuit!=1 and p.samvisorcolor != nil) and p.samvisorcolor or 0
			v.drawScaled(192<<16, 44<<16, 9362, v.cachePatch("MXP4X0"), trns|vTo|vLe|V_ADD, v.getColormap(nil, color))
		end
		if FirstPerson
			local DRIP = s.VisorDrip --Visor dripping. Now done a TAD more efficiently.
			if DRIP and (DRIP.timer or 0)>5 and not (s.eflags & MFE_UNDERWATER) and s.VisorDrips
				local PATCH1,PATCH2,COLORMAP = v.cachePatch("SAMVDRI1"), v.cachePatch("SAMVDRI2"), v.getColormap(nil, DRIP.COLOR or SKINCOLOR_AZURE)
				for i = 1,14 local drip = s.VisorDrips[i] 
					if drip and drip.timer 
						local TRANS = max(drip.STARTTRANS, drip.TRANS)<<16
						v.drawScaled(drip.Xc<<16, drip.Yc<<16, drip.SCALE, 
						(drip.GRAPHIC) and PATCH1 or PATCH2, TRANS|(drip.BLEND), COLORMAP)
					end
				end
			end
			
			--Scanning Lights
			if s.sam_scanning
				local PATCH = v.cachePatch("SAMTRANS") 
				v.drawScaled(-100<<16, -100<<16, 7<<16, PATCH, T80, v.getColormap(nil, SKINCOLOR_COBALT))
				local cmSKY = v.getColormap(nil, SKINCOLOR_SUPERSKY1) --Cover the visor in blue
				for d = 1,7
					v.drawScaled(-(800*d)<<16+(s.sam_scanning*30<<16), -100<<16, 7<<16, PATCH, T90, cmSKY)
				end
				
				if s.sam_scanang != nil --Fancy graphics, edited from SporeSpawn's cursor graphics for Metroid Dreadnought Overhaul!
					v.drawScaled(160<<16, 130<<16, 85356, v.getSprite2Patch("basesamus", SPR2_STUN, false, A, 0, s.sam_scanang), T30, cm)
					v.drawScaled(160<<16, 141<<16, 140000, v.getSprite2Patch("basesamus", SPR2_STUN, false, A, 0, s.sam_scanang), T50, v.getColormap(nil, p.samvisorcolor))
				end
				
				local PATCH = v.getSprite2Patch("basesamus", SPR2_STUN, false, B, 0, 0)
				local XOFF = (s.sam_scanning<<16)
				v.drawScaled(268<<16-XOFF,112<<16, FRACUNIT, PATCH, T60|vRi|V_FLIP, cm)
				v.drawScaled(52<<16+XOFF, 112<<16, FRACUNIT, PATCH, T60|vLe, cm)
				v.drawFill(121, 92, s.sam_scanning, 4, 0|V_PERPLAYER)
				v.drawString(163, 80, "\x84"+"Scanning...", T30, "center")
				v.drawString(163, 112, (s.sam_scanning*90)/71+"%", T20, "center")
			end
			
			--Now to render the inside of Samus' helmet, assuming the player didn't disable it!
			if not p.sam_visorhidden and not G_IsSpecialStage(gamemap)
			
				--Symbols on sides of visor
				v.drawScaled(4<<16-(CLOSEIN<<16)+AIMXTRUE, 21<<16-AIMYTRUE1, FRACUNIT, v.cachePatch("SAMVISLS"), vLe|T90)
				v.drawScaled(316<<16+(CLOSEIN<<16)+AIMXTRUE, 21<<16-AIMYTRUE1, FRACUNIT, v.cachePatch("SAMVISLS"), vRi|T90|V_FLIP)
	
				--Upper part of visor
				v.drawScaled(FRACUNIT+AIMXTRUE, -5<<16+upvis, FRACUNIT, v.cachePatch("SAMVISU2"), vTo|T70)
				v.drawScaled(10<<16+AIMXTRUE, -4<<16+upvis, FRACUNIT, v.cachePatch("SAMVISUP"), vTo)
				
				--Draw some powerup symbols on the top too for progression!
				if p.sam_screwattack
					v.drawScaled(160<<16+AIMXTRUE, 7<<16+upvis, 40000, v.cachePatch("SAMVISU6"), vTo|T90)
				end
				if p.sam_gravitysuit
					v.drawScaled(FRACUNIT*146+45655+AIMXTRUE, 5<<16-38355+upvis, 22000, v.cachePatch("SAMVISU4"), vTo|T70)
					if p.sam_gravitysuit != 1 --Render the suits obtained too!
						v.drawScaled(FRACUNIT*173+AIMXTRUE, 9<<16-35355+upvis, 22000, v.cachePatch("SAMVISU5"), vTo|T70)
					end
				end
				
				--CrystalFlash lights
				if p.crystalflashchance and (gametype == GT_COOP) and p.crystalflashchance >= 150
				or (p.buffbottomtier and gametype != GT_COOP)
				or s.crystalflashtime
					local PATCH = v.cachePatch("SAMVISU3")
					if s.crystalflashtime
						local CRcm = v.getColormap(nil, SKINCOLOR_SUPERPURPLE1)
						local FLAGS = vTo|(s.crystalflashsymtrns or 0)
						v.drawScaled(127<<16+AIMXTRUE, 13<<16+upvis, FRACUNIT, PATCH, FLAGS, CRcm)
						v.drawScaled(145<<16+AIMXTRUE, 13<<16+upvis, FRACUNIT, PATCH, FLAGS, CRcm)
						v.drawScaled(163<<16+AIMXTRUE, 13<<16+upvis, FRACUNIT, PATCH, FLAGS, CRcm)
						v.drawScaled(181<<16+AIMXTRUE, 13<<16+upvis, FRACUNIT, PATCH, FLAGS, CRcm)							
					elseif p.buffbottomtier
						local CRcm = v.getColormap(nil, SKINCOLOR_GOLDENROD)
						v.drawScaled(127<<16+AIMXTRUE, 13<<16+upvis, FRACUNIT, PATCH, vTo|T50, CRcm)
						v.drawScaled(145<<16+AIMXTRUE, 13<<16+upvis, FRACUNIT, PATCH, vTo|T50, CRcm)
						v.drawScaled(163<<16+AIMXTRUE, 13<<16+upvis, FRACUNIT, PATCH, vTo|T50, CRcm)
						v.drawScaled(181<<16+AIMXTRUE, 13<<16+upvis, FRACUNIT, PATCH, vTo|T50, CRcm)						
					else--if p.crystalflashchance >= 150
						local CRcm = v.getColormap(nil, SKINCOLOR_SKY)
						v.drawScaled(FRACUNIT*127+AIMXTRUE, 13<<16+upvis, FRACUNIT, PATCH, vTo|T30, CRcm)
						if p.crystalflashchance >= 300
							v.drawScaled(FRACUNIT*145+AIMXTRUE, 13<<16+upvis, FRACUNIT, PATCH, vTo|T30, CRcm)
							if p.crystalflashchance >= 450
								v.drawScaled(FRACUNIT*163+AIMXTRUE, 13<<16+upvis, FRACUNIT, PATCH, vTo|T30, CRcm)
								if p.crystalflashchance >= 600
									v.drawScaled(FRACUNIT*181+AIMXTRUE, 13<<16+upvis, FRACUNIT, PATCH, vTo|T30, CRcm)
								end
							end
						end
					end
				end
				
				--Bottom-left-right part of visor
				v.drawScaled(-30<<16-30355-(CLOSEIN<<16)+AIMXTRUE, 179<<16+(CLOSEIN<<16*2)-AIMYTRUE2, FRACUNIT, v.cachePatch("SAMVISD2"), vBo|vLe|T80)		
				v.drawScaled(5<<16-(CLOSEIN<<16)+AIMXTRUE, 187<<16+(CLOSEIN<<16*2)-AIMYTRUE2, FRACUNIT, v.cachePatch("SAMVISDL"), vBo|vLe)
			
				v.drawScaled(350<<16+30355+(CLOSEIN<<16)+AIMXTRUE, 179<<16+(CLOSEIN<<16*2)-AIMYTRUE2, FRACUNIT, v.cachePatch("SAMVISD2"), vBo|vRi|V_FLIP|T80)			
				v.drawScaled(315<<16+(CLOSEIN<<16)+AIMXTRUE, 187<<16+(CLOSEIN<<16*2)-AIMYTRUE2, FRACUNIT, v.cachePatch("SAMVISDL"), vBo|vRi|V_FLIP)
			end
			--Samus' reflection face when there's a big flashy boom in front of her.
			if s.sam_reflectface and not cam.chase
				local TRANS = FF_TRANS90 - (s.sam_reflectface/(s.sam_reflectfacebig and 3 or 2))<<16
				TRANS = max(FF_TRANS30, min(FF_TRANS90,$)) 
				v.drawScaled(66<<16, 7<<16, FRACUNIT, v.getSprite2Patch("basesamus", SPR2_STUN, false, G, 0, 0), vLe|vTo|V_ADD|TRANS)
			end
			local CHARGE = p.sams_chargetime or 0
			if (CHARGE > 5) and p.sam_chargebeam and not p.sam_visorhidden and (CV_FindVar("crosshair").value != 2)
				local CTRANS = (CHARGE>27) and T80 or T90
				local CCOLOR = (CHARGE>40) and v.getColormap(nil, SKINCOLOR_SUPERGOLD5) or v.getColormap(nil, SKINCOLOR_SILVER)	
				local xO,yO = 0,0
				if  (CHARGE > 40)
					if (CHARGE%5==0)
						CTRANS = $-FF_TRANS20
					end
				else
					xO,yO = max(0, 60000-CHARGE*3000),xO
				end
				v.drawScaled(160<<16+xO+25000, 100<<16+yO+112500, min(32000, 800*CHARGE),
				v.getSprite2Patch("basesamus", SPR2_STUN, false, H, 0, leveltime*ANG20), V_ADD|CTRANS, CCOLOR)
			end
		end
		if s.sam_automobed --Rotating "locked on" thingy.		
			v.drawScaled(16<<16, 16<<16, 13000, v.getSprite2Patch("basesamus", SPR2_STUN, false, A, 0, leveltime*(-ANG20)), vLe|vTo, v.getColormap(nil, SKINCOLOR_RED))
		end
		if not TWINPLAYER
			if p.sam_specialstage --Unless you're in a special stage, don't display ring count, Samus only uses them to heal.
				if not hud.enabled("rings")
					hud.enable("rings")
				end
			elseif hud.enabled("rings") 
				hud.disable("rings")
			end
			if hud.enabled("weaponrings") --We have no access to weapon rings.
				hud.disable("weaponrings")
			end
			if hud.enabled("powerstones") --Use a custom HUD for Match's "power stones" instead.
				hud.disable("powerstones")
			end
			if hud.enabled("lives") --Render your own.
				hud.disable("lives")
			end
			if hud.enabled("score") --We render our own.
				hud.disable("score")
			end
			if cam.chase
				if not hud.enabled("teamscores")
					hud.enable("teamscores")
				end
			elseif hud.enabled("teamscores")
				hud.disable("teamscores")
			end
			if G_GametypeUsesLives() //Assuming we have lives.
			and not ((p.lives > 98) and p.obituaries)
				v.drawScaled(HX<<16, HY<<16+1<<16, 1<<15, v.cachePatch("SAMSFACE"), vLe|vBo|V_PERPLAYER, cm)
			end	
			--Score HUD!	
			local SCX,SCY = hudinfo[HUD_SCORE].x,hudinfo[HUD_SCORE].y
			v.drawScaled(SCX<<16 + 248<<16, SCY<<16, FRACUNIT, v.cachePatch("SBOSSAM1"), vRi|vTo)
			if p.plushudscoretime and G_GametypeHasSpectators()
				v.drawNum(SCX+232, SCY, p.score, vRi|vTo|V_GREENMAP)
			else
				v.drawNum(SCX+232, SCY, p.score, vRi|vTo)
			end				
			SAMUShud = true	
		end
	else --if you're NOT Samus!
		if SAMUShud and not TWINPLAYER --Re-enable only once to better support custom HUD stuff.
			if not hud.enabled("rings")
				hud.enable("rings")
			end
			if not hud.enabled("weaponrings")
				hud.enable("weaponrings")
			end
			if not hud.enabled("powerstones")
				hud.enable("powerstones")
			end
			if not hud.enabled("lives")
				hud.enable("lives")
			end
			if not hud.enabled("score")
				hud.enable("score")
			end
			if not hud.enabled("teamscores")
				hud.enable("teamscores")
			end
			SAMUShud = false
		end
		return --End of HUD code if you're not Samus check!
	end

	--There's a lot of first person exclusive things to be rendered.
	if not cam.chase
		if s.sam_hitwarn and s.sam_hitwarnang != nil --You've been hit, flash the beam!
			local TRNS = max(T60, T90-(s.sam_hitwarn<<16) )
			local TRANS = (s.sam_hitwarn<9) and T90 or (s.sam_hitwarn/2)<<16
			v.drawScaled(132<<16, 11<<16, 55355,(v.getSprite2Patch("basesamus", SPR2_STUN, false, D, 0, s.sam_hitwarnang)), TRANS)
			v.drawScaled(132<<16, 11<<16, 55355, (v.getSprite2Patch("basesamus", SPR2_STUN, false, E, 0, s.sam_hitwarnang)), TRNS)							
		end
		if s.sam_flashfade
			local TRANS = FF_TRANS90 - ( max(FF_TRANS80, (s.sam_flashfade/2) )<<16 )
			v.drawScaled(-100<<16, -100<<16, 7<<16, v.cachePatch("SAMTRANS"), TRANS, v.getColormap(nil, s.sam_flashfadecolor))
		end
		if s.crystalflashtime 		
		
			--This was all a bit much, tbh....
		/*	if (s.crystalflashsymtrns != nil)
				local crFLAGS = (s.crystalflashsymtrns<<16)|vLe|V_ALLOWLOWERCASE
				local TIME = s.crystalflashtime/2
				v.drawString(9, -875+TIME, "Health Regen", crFLAGS, "left")
				v.drawString(9, -850+TIME, "Regain Ammo", crFLAGS, "left")			
				v.drawString(9, -825+TIME, "Increased Jumpheight", crFLAGS, "left")	
				v.drawString(9, -800+TIME, "All shots are charged", crFLAGS, "left")	
				v.drawString(9, -775+TIME, "Increased Missile Firerate", crFLAGS, "left")	
				v.drawString(9, -750+TIME, "Permanent Shinespark state", crFLAGS, "left")
				v.drawString(9, -725+TIME, "Infinite Death Ball", crFLAGS, "left")
				v.drawString(9, -700+TIME, "No bomb cooldown", crFLAGS, "left")
				v.drawString(9, -675+TIME, "No beam cooldown", crFLAGS, "left")
				v.drawString(9, -650+TIME, "Increased enemy drops", crFLAGS, "left")
				v.drawString(9, -625+TIME, "Faster speedbooster", crFLAGS, "left")
				v.drawString(9, -600+TIME, "Healing Shockwaves", crFLAGS, "left")
			end */
			
			if v.renderer() != "software"
				if s.crystalflashsymtrns and not s.sam_flashfade --Software hates this.
					local flstrns = (s.crystalflashsymtrns) or 0
					if s.crystalflashsymtrns == T70
						flstrns = s.crystalflashsymtrns+T10
					elseif (s.crystalflashsymtrns < T70)
						flstrns = s.crystalflashsymtrns+(2<<16)
					end
					v.drawScaled(-100<<16, -100<<16, 7<<16, v.cachePatch("SAMTRANS"), flstrns, v.getColormap(nil, SKINCOLOR_RED))
				end
			end
			if s.crystalflashsym != nil
				local CRFLAGSL = (s.crystalflashsymtrns)|vLe|vTo
				local CRFLAGSR = (s.crystalflashsymtrns)|vRi|vTo
				local CRFLAGSB = (s.crystalflashsymtrns)|vRi|vBo
				local CRFOFF = s.crystalflashsym<<16
				local PATCH = v.cachePatch("SAMCRYST")
				local CRCM = v.getColormap(nil, s.crystalflashsymcolor+s.crystalflashftimec)
				for d = 1,14
					local DOFF = d*32<<16
					v.drawScaled(0, DOFF - 60<<16 + CRFOFF, 65536, PATCH, CRFLAGSL , CRCM) --left
					v.drawScaled(290<<16, DOFF - 30<<16 - CRFOFF, 65536, PATCH, CRFLAGSR, CRCM) --right
					v.drawScaled(-60<<16 +DOFF-CRFOFF, 0, 65536, PATCH, CRFLAGSL , CRCM) --Top
				end
				for d = -1,13 --Bottom row needs to be a BIT different...
					local DOFF = d*32<<16				
					v.drawScaled(-60<<16 +DOFF+CRFOFF, 171<<16, 65536, PATCH, CRFLAGSB, CRCM) --Bottom
				end
			end
		end
		if not splitscreen
		and (vHEIGHT%200==0 or (vHEIGHT == 1080))
			if (p.samspbscharge and (p.samspbscharge > 140) or s.sam_spbsstart) 
			and not p.sammorphed and (p.speed > 25*s.scale)
			
			or p.sam_shinesparkfly and (p.sam_shinesparkfly > 18)
			or p.sam_screwattacking and (p.sam_screwattacking > 26)
				local Yoffs,ResSCALE = nil,82033
				if (vHEIGHT == 1080)
					Yoffs = -40<<16
				elseif (vHEIGHT % 200)
					ResSCALE,Yoffs = 65536,0
				end
				if Yoffs != nil
					local SFLAGS = (p.sam_shinesparkfly or p.sam_screwattacking) and T60 or T80
					local CsM = v.getColormap(nil, (SFLAGS==T60) and SKINCOLOR_GOLD or SKINCOLOR_CLOUDY)
					SFLAGS = $|vTo| ((leveltime%2==0) and vRi or vLe)
					local Xoffs = (leveltime%2==0) and 320<<16 or 0				
					v.drawScaled(Xoffs, Yoffs, ResSCALE, v.cachePatch("SAMZOOM1"), SFLAGS, CsM)
				end
			end		
		end
	end
	if s.sam_combowarn and s.sam_combowarnang != nil --You got attacked, but from where?!
		v.drawScaled(158<<16, 15<<16, 55355, 
		(v.getSprite2Patch("basesamus", SPR2_STUN, false, C, 0, s.sam_combowarnang)), nil,
		v.getColormap(nil, (s.sam_combowarn%2) and SKINCOLOR_SUPERGOLD5 or SKINCOLOR_SUPERPURPLE5))
	end	
	if p.sam_fpsmsg and (p.sam_fpsmsg < 290)
		local TRANS = T10
		if (p.sam_fpsmsg > 280) or (p.sam_fpsmsg < 10)
			TRANS = T80
		elseif (p.sam_fpsmsg > 270) or (p.sam_fpsmsg < 20)
			TRANS = T60
		elseif (p.sam_fpsmsg > 260) or (p.sam_fpsmsg < 30)
			TRANS = T40
		end
		v.drawString(HX+129, HY-72, "You got your\x82 Fully Powered Suit", TRANS|V_ALLOWLOWERCASE, "center")
	end

	//Got an item? Display it on-screen in all it's glory!
	if p.samitemgettimer and not p.sam_intoship and not p.samustimeshow
	
		local iCM = v.getColormap("SKINCOLOR_VARIASUIT", p.samitemcolor)
		local XOFF = 9476475-(p.samitemscale-FRACUNIT-45)*45
		local YOFF = 5230000-(p.samitemscale-FRACUNIT-8)*8
		local PATCH = v.cachePatch("SAMIGET")
		local iFLAGS = vLe|vBo
		
		if (p.samitemgettimer > 64)
			XOFF = $+ ((p.samitemgettimer-63)*180000)
			YOFF = $+ ((p.samitemgettimer-63)*52000)
			local iSCALE = p.samitemscale-(p.samitemgettimer-63)*4000
			v.drawScaled(XOFF, YOFF, max(1,iSCALE), PATCH, T50|iFLAGS, iCM)
		else
			iFLAGS = $ | (
			(p.samitemgettimer > 24) and T10
			or max(T10, min(T80, (12-p.samitemgettimer)*T10 ) )
			)
			if (p.samitemgettimer > 24)
				v.drawScaled(XOFF, YOFF, p.samitemscale, PATCH, iFLAGS, iCM)
				v.drawString(194, 87, p.samitemgetname, iFLAGS, "center")
			end
		end
		if p.samitemgetname == "True Hyper Beam" --Add a small tutorial below the item!
			v.drawString(160, 125, "\x85"+"Missile Button: Hyper Beam Combo", T20, "center")
		end
	end
	
	if splitscreen and (p == server)
	
		local POWER = (not p.sam_powerbeamequip) and T50 or 0 --Weapon Icons for splitscreen!
		local SPAZER = p.sam_spazerbeam and v.cachePatch("WEAPSPBM")
		local WAVE = p.sam_wavebeam and v.cachePatch("WEAPWVBM")
		local ICE = p.sam_icebeam and v.cachePatch("WEAPICBM")
		local PLASMA =  p.sam_plasmabeam and v.cachePatch("WEAPPLBM")
		local HYPER = p.sam_hyperbeam and v.cachePatch("WEAPHYBM")
		
		v.drawScaled(3<<16, 170<<16, 1<<15, v.cachePatch("WEAPPWBM"), POWER|WFLAGS|V_PERPLAYER)
		if SPAZER 
			v.drawScaled(3<<16, 145<<16, 1<<15, SPAZER, (p.sam_spazerbeamequip and 0 or T50)|WFLAGS|V_PERPLAYER)
		end
		if WAVE
			v.drawScaled(3<<16, 145<<16, 1<<15, WAVE, (p.sam_wavebeamequip and 0 or T50)|WFLAGS|V_PERPLAYER)
		end
		if ICE
			v.drawScaled(3<<16, 95<<16, 1<<15, ICE, (p.sam_icebeamequip and 0 or T50)|WFLAGS|V_PERPLAYER)
		end
		if PLASMA
			v.drawScaled(3<<16, 70<<16, 1<<15, PLASMA, (p.sam_plasmabeamequip and 0 or T50)|WFLAGS|V_PERPLAYER)
		end
		if HYPER
			v.drawScaled(3<<16, 45<<16, 1<<15, HYPER, (p.sam_hyperbeamequip and 0 or T50)|WFLAGS|V_PERPLAYER)
		end
		local MFLAGS = vLe|V_PERPLAYER

		v.drawScaled(HX<<16, HY<<16-51<<16, FRACUNIT, v.cachePatch("0000MI"), MFLAGS) --Ammo icons.
		v.drawScaled(HX<<16, HY<<16-91<<16, FRACUNIT, v.cachePatch("0000SM"), MFLAGS)
		v.drawScaled(HX<<16, HY<<16-131<<16, FRACUNIT, v.cachePatch("0000PW"), MFLAGS)
		
		local CT = (p.sammissilesmax and p.sammissiles >= p.sammissilesmax) and "\x82" or ""
		v.drawString(HX+8, HY-47, CT+p.sammissiles, T20|MFLAGS, "center")
		
		CT = (p.samsupermissilesmax and p.samsupermissiles >= p.samsupermissilesmax) and "\x82" or ""
		v.drawString(HX+8, HY-87, CT+p.samsupermissiles, T20|MFLAGS, "center")
		
		CT = (p.sampwmax and p.sampw >= p.sampwmax) and "\x82" or ""
		v.drawString(HX+8, HY-127, CT+p.sampw, T20|MFLAGS, "center")

	else --Actual regular HUD for non-splitscreen.
	
		if not splitscreen and hud.enabled("time") --Render Samus' font over the regular font!
			local HTX,HTY = hudinfo[HUD_TIME].x, hudinfo[HUD_TIME].y
			v.drawScaled(HTX<<16, HTY<<16, FRACUNIT, v.cachePatch("SBOSSAM2"), vLe|vTo)
		end

		//Beam icons HUD on left side.
	/*	local POWER = (not p.sam_powerbeamequip) and T50 or 0 --Weapon Icons!
		local SPAZER = p.sam_spazerbeam and v.cachePatch("WEAPSPBM")
		local WAVE = p.sam_wavebeam and v.cachePatch("WEAPWVBM")
		local ICE = p.sam_icebeam and v.cachePatch("WEAPICBM")
		local PLASMA =  p.sam_plasmabeam and v.cachePatch("WEAPPLBM")
		local HYPER = p.sam_hyperbeam and v.cachePatch("WEAPHYBM")
		
		v.drawScaled(3<<16, 181<<16, 1<<15, v.cachePatch("WEAPPWBM"), POWER|WFLAGS)
		if SPAZER 
			v.drawScaled(3<<16, 145<<16, 1<<15, v.cachePatch("WEAPSPBM"), (p.sam_spazerbeamequip and 0 or T50)|WFLAGS)
		end
		if WAVE
			v.drawScaled(3<<16, 145<<16, 1<<15, v.cachePatch("WEAPSPBM"), (p.sam_wavebeamequip and 0 or T50)|WFLAGS)
		end
		if ICE
			v.drawScaled(3<<16, 95<<16, 1<<15, v.cachePatch("WEAPICBM"), (p.sam_icebeamequip and 0 or T50)|WFLAGS)
		end
		if PLASMA
			v.drawScaled(3<<16, 70<<16, 1<<15, v.cachePatch("WEAPPLBM"), (p.sam_plasmabeamequip and 0 or T50)|WFLAGS)
		end
		if HYPER
			v.drawScaled(3<<16, 45<<16, 1<<15, v.cachePatch("WEAPHYBM"), (p.sam_hyperbeamequip and 0 or T50)|WFLAGS)
		end */
		
		if p.sam_beamswitch
			local SWTRANS = 0
			if (p.sam_beamswitch > 5)
				SWTRANS = min(FF_TRANS90, max(FF_TRANS10, (p.sam_beamswitch-2)*FF_TRANS10))
			else
				SWTRANS = FF_TRANS90-(p.sam_beamswitch*FF_TRANS10)
			end
			if p.sam_spazerbeamequip
				v.drawScaled(155<<16, 100<<16, 1<<15, (p.sam_spazerbeamcombo) and v.cachePatch("WEAPSPBC") or v.cachePatch("WEAPSPBM"), SWTRANS, v.getColormap(nil, SKINCOLOR_GREEN))
			elseif p.sam_wavebeamequip
				v.drawScaled(155<<16, 100<<16, 1<<15, (p.sam_wavebeamcombo) and v.cachePatch("WEAPWVBC") or v.cachePatch("WEAPWVBM"), SWTRANS, v.getColormap(nil, p.sam_beamcolor))
			elseif p.sam_icebeamequip
				v.drawScaled(155<<16, 100<<16, 1<<15, (p.sam_icebeamcombo) and v.cachePatch("WEAPICBC") or v.cachePatch("WEAPICBM"), SWTRANS, v.getColormap(nil, p.sam_beamcolor))
			elseif p.sam_plasmabeamequip
				v.drawScaled(155<<16, 100<<16, 1<<15, (p.sam_plasmabeamcombo) and v.cachePatch("WEAPPLBC") or v.cachePatch("WEAPPLBM"), SWTRANS, v.getColormap(nil, p.sam_beamcolor))
			elseif p.sam_hyperbeamequip
				local PATCH = (p.sam_fullypoweredsuit or (p.samchallenger and (p.samchallenger > 3))) and v.cachePatch("WEAPHYBC") or v.cachePatch("WEAPHYBM")
				v.drawScaled(155<<16, 100<<16, 1<<15, PATCH, SWTRANS, v.getColormap(nil, p.sam_beamcolor))
			else--if p.sam_powerbeamequip
				v.drawScaled(155<<16, 100<<16, 1<<15, (p.sam_powerbeamcombo) and v.cachePatch("WEAPPWBC") or v.cachePatch("WEAPPWBM"), SWTRANS, v.getColormap(nil, SKINCOLOR_VARIASUIT))
			end
		end		
		-------------------------------------------------------------------------------------
		if p.sam_powerbeamequip
			v.drawScaled(3<<16, 181<<16, 1<<15, (p.sam_powerbeamcombo) and v.cachePatch("WEAPPWBC") or v.cachePatch("WEAPPWBM"), WFLAGS, v.getColormap(nil, (p.sam_powerbeammeltdown) and SKINCOLOR_RED or p.sam_beamcolor))
		elseif p.sam_powerbeamcombo
			v.drawScaled(3<<16, 181<<16, 1<<15, v.cachePatch("WEAPPWBC"), T50|WFLAGS, v.getColormap(nil, (p.sam_powerbeammeltdown) and SKINCOLOR_RED or SKINCOLOR_GREY))
		else
			v.drawScaled(3<<16, 181<<16, 1<<15, v.cachePatch("WEAPPWBM"), T50|WFLAGS)
		end
		if p.sam_spazerbeam and not p.sam_spazerbeamequip
			if p.sam_spazerbeamcombo
				if p.sam_spazerbeammeltdown
					v.drawScaled(3<<16, 168<<16, 1<<15, v.cachePatch("WEAPSPBC"), T50|WFLAGS, v.getColormap(nil, SKINCOLOR_RED))
				else
					v.drawScaled(3<<16, 168<<16, 1<<15, v.cachePatch("WEAPSPBC"), T50|WFLAGS, v.getColormap(nil, SKINCOLOR_GREY))
				end
			else
				v.drawScaled(3<<16, 168<<16, 1<<15, v.cachePatch("WEAPSPBM"), T50|WFLAGS)
			end
		elseif p.sam_spazerbeamequip
			if p.sam_spazerbeamcombo
				if p.sam_spazerbeammeltdown
					v.drawScaled(3<<16, 168<<16, 1<<15, v.cachePatch("WEAPSPBC"), WFLAGS, v.getColormap(nil, SKINCOLOR_RED))
				else
					v.drawScaled(3<<16, 168<<16, 1<<15, v.cachePatch("WEAPSPBC"), WFLAGS, v.getColormap(nil, p.sam_beamcolor))
				end
			else
				v.drawScaled(3<<16, 168<<16, 1<<15, v.cachePatch("WEAPSPBM"), WFLAGS)
			end
		end
		if p.sam_wavebeam and not p.sam_wavebeamequip
			if p.sam_wavebeamcombo
				if p.sam_wavebeammeltdown
					v.drawScaled(3<<16, 155<<16, 1<<15, v.cachePatch("WEAPWVBC"), T50|WFLAGS, v.getColormap(nil, SKINCOLOR_RED))
				else
					v.drawScaled(3<<16, 155<<16, 1<<15, v.cachePatch("WEAPWVBC"), T50|WFLAGS, v.getColormap(nil, SKINCOLOR_GREY))
				end
			else
				v.drawScaled(3<<16, 155<<16, 1<<15, v.cachePatch("WEAPWVBM"), T50|WFLAGS)
			end
		elseif p.sam_wavebeamequip
			if p.sam_wavebeamcombo
				if p.sam_wavebeammeltdown
					v.drawScaled(3<<16, 155<<16, 1<<15, v.cachePatch("WEAPWVBC"), WFLAGS, v.getColormap(nil, SKINCOLOR_RED))
				else
					v.drawScaled(3<<16, 155<<16, 1<<15, v.cachePatch("WEAPWVBC"), WFLAGS, v.getColormap(nil, p.sam_beamcolor))
				end
			else
				v.drawScaled(3<<16, 155<<16, 1<<15, v.cachePatch("WEAPWVBM"), WFLAGS)
			end
		end
		if p.sam_icebeam and not p.sam_icebeamequip
			if p.sam_icebeamcombo
				if p.sam_icebeammeltdown
					v.drawScaled(3<<16, 142<<16, 1<<15, v.cachePatch("WEAPICBC"), T50|WFLAGS, v.getColormap(nil, SKINCOLOR_RED))
				else
					v.drawScaled(3<<16, 142<<16, 1<<15, v.cachePatch("WEAPICBC"), T50|WFLAGS, v.getColormap(nil, SKINCOLOR_GREY))
				end
			else
				v.drawScaled(3<<16, 142<<16, 1<<15, v.cachePatch("WEAPICBM"), T50|WFLAGS)
			end
		elseif p.sam_icebeamequip
			if p.sam_icebeamcombo
				if p.sam_icebeammeltdown
					v.drawScaled(3<<16, 142<<16, 1<<15, v.cachePatch("WEAPICBC"), WFLAGS, v.getColormap(nil, SKINCOLOR_RED))
				else
					v.drawScaled(3<<16, 142<<16, 1<<15, v.cachePatch("WEAPICBC"), WFLAGS, v.getColormap(nil, p.sam_beamcolor))
				end
			else
				v.drawScaled(3<<16, 142<<16, 1<<15, v.cachePatch("WEAPICBM"), WFLAGS)
			end
		end
		if p.sam_plasmabeam and not p.sam_plasmabeamequip
			if p.sam_plasmabeamcombo
				if p.sam_plasmabeammeltdown
					v.drawScaled(3<<16, 129<<16, 1<<15, v.cachePatch("WEAPPLBC"), T50|WFLAGS, v.getColormap(nil, SKINCOLOR_RED))
				else
					v.drawScaled(3<<16, 129<<16, 1<<15, v.cachePatch("WEAPPLBC"), T50|WFLAGS, v.getColormap(nil, SKINCOLOR_GREY))
				end
			else
				v.drawScaled(3<<16, 129<<16, 1<<15, v.cachePatch("WEAPPLBM"), T50|WFLAGS)
			end
		elseif p.sam_plasmabeamequip
			if p.sam_plasmabeamcombo
				if p.sam_plasmabeammeltdown
					v.drawScaled(3<<16, 129<<16, 1<<15, v.cachePatch("WEAPPLBC"), WFLAGS, v.getColormap(nil, SKINCOLOR_RED))
				elseif p.sam_beamswitch
					v.drawScaled(3<<16, 129<<16, 1<<15, v.cachePatch("WEAPPLBC"), WFLAGS, v.getColormap(nil, p.sam_beamcolor))
				else
					v.drawScaled(3<<16, 129<<16, 1<<15, v.cachePatch("WEAPPLBC"), WFLAGS, v.getColormap(nil, SKINCOLOR_PINK))
				end
			else
				v.drawScaled(3<<16, 129<<16, 1<<15, v.cachePatch("WEAPPLBM"), WFLAGS)
			end
		end
		if p.sam_hyperbeam
			if (p.sam_hyperbeamammo != nil)
				if not p.sams_hbdenid
					v.drawString(HX-7, HY-70, p.sam_hyperbeamammo, T20|WFLAGS, "center")
				elseif p.sams_hbdenid and (p.sams_hbdenid > 22)
					v.drawString(HX-7, HY-70, "\x83"+p.sam_hyperbeamammo, T20|WFLAGS, "center")
				elseif p.sams_hbdenid and (p.sams_hbdenid > 10 or p.sams_hbdenid < 4)
					v.drawString(HX-7, HY-70, "\x87"+p.sam_hyperbeamammo, T20|WFLAGS, "center")
				elseif p.sams_hbdenid
					v.drawString(HX-7, HY-70, "\x85"+p.sam_hyperbeamammo, T20|WFLAGS, "center")
				end
			end
			if not p.sam_hyperbeamequip
				if p.sam_fullypoweredsuit or (p.samchallenger and (p.samchallenger > 3))
				v.drawScaled(3<<16, 116<<16, 1<<15, v.cachePatch("WEAPHYBC"), T50|WFLAGS, v.getColormap(nil, SKINCOLOR_GREY))
				else
				v.drawScaled(3<<16, 116<<16, 1<<15, v.cachePatch("WEAPHYBM"), T50|WFLAGS)
				end
			elseif p.sam_hyperbeamequip
				if p.sam_fullypoweredsuit or (p.samchallenger and (p.samchallenger > 3))
				v.drawScaled(3<<16, 116<<16, 1<<15, v.cachePatch("WEAPHYBC"), WFLAGS, v.getColormap(nil, p.sam_beamcolor))
				else
				v.drawScaled(3<<16, 116<<16, 1<<15, v.cachePatch("WEAPHYBM"), WFLAGS)
				end
			end
		end
		if (gametyperules & GTR_RINGSLINGER) and (leveltime < 3150)
		and not p.sam_powerbeamcombo and G_GametypeHasSpectators() and leveltime
			local tFLAGS = (p.sam_powerbeamequip) and vLe|vBo|V_ALLOWLOWERCASE|T20 or vLe|vBo|V_ALLOWLOWERCASE|T80 
			v.drawString(18, 182, "Booting up", tFLAGS, "small")
			v.drawString(18, 188, "Long Beam: \x82"+((leveltime/32)+1)+"%", tFLAGS, "small")
		end		
		if p.sammissilesmax and not (s.missiletrns == nil)
			if p.micatchupflash and (p.micatchupflash > 15)
				v.drawScaled(HX<<16, HY<<16-20<<16, FRACUNIT, v.cachePatch("0000MIB"), (s.missiletrns)|WFLAGS)
				v.drawString(HX+27, HY-16, "+"+p.micatchupnum, T60|WFLAGS, "center")
			else
				v.drawScaled(HX<<16, HY<<16-20<<16, FRACUNIT, v.cachePatch("0000MI"), (s.missiletrns)|WFLAGS)
			end
			if p.micatchupflash and (p.micatchupflash < 5)
				v.drawString(HX+27, HY-16, "+"+p.micatchupnum, T60|WFLAGS, "center")
			elseif p.micatchupflash and (p.micatchupflash < 17)
				v.drawString(HX+27, HY-16, "+"+p.micatchupnum, T20|WFLAGS, "center")
			end
			if p.sammissiles >= p.sammissilesmax
				v.drawString(HX+8, HY-16, "\x82"+p.sammissiles, T20|WFLAGS, "center")
			elseif not p.sammissiles 
			or ((p.samdoubleammo or SAMUSDIFFICULTY==2) and p.sammissiles == 1)
				v.drawString(HX+8, HY-16, "\x87"+p.sammissiles, T20|WFLAGS, "center")
			else
				local CT = s.MissileAmmoDrain and "\x85" or "\x80"
				v.drawString(HX+8, HY-16, CT+p.sammissiles, T20|WFLAGS, "center")
			end
		end

		if p.samsupermissilesmax and s.supermissiletrns != nil
			if p.smcatchupflash and (p.smcatchupflash > 15)
				v.drawScaled(HX<<16, HY<<16-40<<16, FRACUNIT, v.cachePatch("0000SMB"), (s.supermissiletrns)|WFLAGS)
				v.drawString(HX+27, HY-36, "+"+p.smcatchupnum, T60|WFLAGS, "center")
			else
				v.drawScaled(HX<<16, HY<<16-40<<16, FRACUNIT, v.cachePatch("0000SM"), (s.supermissiletrns)|WFLAGS)
			end
			if p.smcatchupflash and (p.smcatchupflash < 5)
				v.drawString(HX+27, HY-36, "+"+p.smcatchupnum, T60|WFLAGS, "center")
			elseif p.smcatchupflash and (p.smcatchupflash < 17)
				v.drawString(HX+27, HY-36, "+"+p.smcatchupnum, T20|WFLAGS, "center")
			end
			if p.samsupermissiles >= p.samsupermissilesmax
				v.drawString(HX+8, HY-36, "\x82"+p.samsupermissiles, T20|WFLAGS, "center")
			elseif not p.samsupermissiles or (p.samdoubleammo or SAMUSDIFFICULTY==2) and p.samsupermissiles == 1
				v.drawString(HX+8, HY-36, "\x87"+p.samsupermissiles, T30|WFLAGS, "center")
			else
				local CT = (s.SuperAmmoDrain) and "\x85" or "\x80"
				v.drawString(HX+8, HY-36, CT+p.samsupermissiles, T20|WFLAGS, "center")
			end			
		end
		if p.sampwmax and s.pwbtrns != nil
			if p.pbcatchupflash and (p.pbcatchupflash > 15)
				v.drawScaled(HX<<16, HY<<16-60<<16, FRACUNIT, v.cachePatch("0000PWB"), (s.pwbtrns)|WFLAGS)
				v.drawString(HX+27, HY-56, "+1", T60|WFLAGS, "center")
			else
				v.drawScaled(HX<<16, HY<<16-60<<16, FRACUNIT, v.cachePatch("0000PW"), (s.pwbtrns)|WFLAGS)
			end
			if p.pbcatchupflash and (p.pbcatchupflash < 5)
				v.drawString(HX+27, HY-56, "+1", T60|WFLAGS, "center")
			elseif p.pbcatchupflash and (p.pbcatchupflash < 17)
				v.drawString(HX+27, HY-56, "+1", T20|WFLAGS, "center")
			end
			if not p.sampw or (p.samdoubleammo or SAMUSDIFFICULTY==2) and p.sampw == 1
				v.drawString(HX+8, HY-56, "\x87"+p.sampw, T30|WFLAGS, "center")
			elseif p.sampw >= p.sampwmax
				v.drawString(HX+8, HY-56, "\x82"+p.sampw, T20|WFLAGS, "center")
			else
				local CT = (s.PWBOMBDrain) and "\x85" or "\x80"
				v.drawString(HX+8, HY-56, CT+p.sampw, T20|WFLAGS, "center")
			end
		end
	end
	
//Little reminder on-screen to show you what you just picked up.
	if s.sampickuptime
 		v.drawScaled(HX<<16+50<<16,
		HY<<16-7<<16-s.sampickupoffset,
		s.sampickupscale/2, v.cachePatch(s.sampickupname), WFLAGS|(s.sampickuptrns), v.getColormap(nil, s.sampickupcolor))
	end
	if s.sampickuptime2
 		v.drawScaled(HX<<16+50<<16,
		HY<<16-26<<16-s.sampickupoffset2,
		s.sampickupscale2/2, v.cachePatch(s.sampickupname2), WFLAGS|(s.sampickuptrns2), v.getColormap(nil, s.sampickupcolor2))
	end
	if s.sampickuptime3
 		v.drawScaled(HX<<16+50<<16,
		HY<<16-45<<16-s.sampickupoffset3,
		s.sampickupscale3/2, v.cachePatch(s.sampickupname3), WFLAGS|(s.sampickuptrns2), v.getColormap(nil, s.sampickupcolor2))
	end
--Beam reflected warning!
	if s.bmreflwarning
		if s.bmreflwarning % 2 == 0
		v.drawScaled(160<<16, 50<<16, FRACUNIT, v.cachePatch("WHATD0"), T40)
		else
		v.drawScaled(160<<16, 50<<16, FRACUNIT, v.cachePatch("WHATC0"), T70)
		end
	end
	
//Replacing match-Emerald HUD for Samus.

	if p.powers[pw_emeralds]
		if (p.powers[pw_emeralds] & EMERALD1)
			v.drawScaled(HX<<16+35<<16, HY<<16-20<<16, 20300, v.cachePatch("CEMGA0"), WFLAGS)
		end
		if (p.powers[pw_emeralds] & EMERALD2)
			v.drawScaled(HX<<16+47<<16, HY<<16-20<<16, 20300, v.cachePatch("CEMGB0"), WFLAGS)
		end
		if (p.powers[pw_emeralds] & EMERALD3)
			v.drawScaled(HX<<16+58<<16, HY<<16-20<<16, 20300, v.cachePatch("CEMGC0"), WFLAGS)
		end
		if (p.powers[pw_emeralds] & EMERALD4)
			v.drawScaled(HX<<16+32<<16, HY<<16-9<<16, 20300, v.cachePatch("CEMGD0"), WFLAGS)
		end
		if (p.powers[pw_emeralds] & EMERALD5)
			v.drawScaled(HX<<16+42<<16, HY<<16-9<<16, 20300, v.cachePatch("CEMGE0"), WFLAGS)
		end
		if (p.powers[pw_emeralds] & EMERALD6)
			v.drawScaled(HX<<16+52<<16, HY<<16-9<<16, 20300, v.cachePatch("CEMGF0"), WFLAGS)
		end
		if (p.powers[pw_emeralds] & EMERALD7)
			v.drawScaled(HX<<16+62<<16, HY<<16-9<<16, 20300, v.cachePatch("CEMGG0"), WFLAGS)
		end
	end

	if (gametype == GT_CTF) and not p.sammorphed and not cam.chase
	
		local SOUND = (S_IdPlaying(sfx_flgcap)) and true or false --Should be okay to desync this in the HUD...?
		
		if p.samgotrflaghud and (p.samgotrflaghud > 1)
			v.drawScaled(256<<16, HY<<16, 1<<15, v.cachePatch("RFLAGICO"))
			v.drawScaled(256<<16, HY<<16-(FRACUNIT*2), FRACUNIT, v.cachePatch("NONICON"))
		else
			v.drawScaled(256<<16, HY<<16, 1<<15, v.cachePatch("RFLAGICO"))
			if (p.samgotrflaghud == 1) and SOUND == true
				v.drawString(283, HY+10, "\x82"+"Dropped", T10, "small-right")
			end			
		end
		if p.samgotbflaghud and (p.samgotbflaghud > 1)
			v.drawScaled(288<<16, HY<<16, 1<<15, v.cachePatch("BFLAGICO"))
			v.drawScaled(288<<16, HY<<16-(FRACUNIT*2), FRACUNIT, v.cachePatch("NONICON"))
		else
			v.drawScaled(288<<16, HY<<16, 1<<15, v.cachePatch("BFLAGICO"))
			if (p.samgotbflaghud == 1) and SOUND == true
				v.drawString(314, HY+10, "\x82"+"Dropped", T10, "small-right")
			end
		end
		if p.ctfteam == 2
			v.drawString(282, HY+16, "Blue Team", T50, "center")
		elseif p.ctfteam == 1
			v.drawString(286, HY+16, "Red Team", T50, "center")
		end
	end
	if s.sam_difficultymsg --Briefly show the difficulty. Don't be too intrusive, though.
		if s.sam_difficultymsgtype == 1
			v.drawString(260, 180, "\x89"+"Hyper Mode", s.sam_difficultytrns|vBo|vRi, "small")
		elseif s.sam_difficultymsgtype == 3
			if not ((s.sam_difficultymsg > 220) and (s.sam_difficultymsg % 2 == 0))
				v.drawString(156, 160, "\x85"+"Achievements are now locked on this save.", s.sam_difficultytrns|vBo|vRi, "small")
				v.drawString(156, 168, "\x85"+"You keep your current achievements and", s.sam_difficultytrns|vBo|vRi, "small")
				v.drawString(156, 176, "\x85"+"can reset to unlock them again later.", s.sam_difficultytrns|vBo|vRi, "small")
			end
		else
			v.drawString(260, 180, "\x89"+"Fusion Mode", s.sam_difficultytrns|vBo|vRi, "small")
		end
	end	

	if p.sam_energytanksmax
		local TANKS = (p.sam_energytanks) or 0
		local MAXTANKS = (p.sam_energytanksmax) or 0
		local EFLAGS = vLe|vTo|V_PERPLAYER
		local PATCH = v.cachePatch("ETNF")
		local eY = RY<<16 + ( (splitscreen) and -10<<16 or 14<<16 )
		v.drawScaled(RX<<16+4<<16, eY, FRACUNIT, PATCH, ((TANKS<1) and T80 or 0)|EFLAGS)
		if (MAXTANKS > 2)
			v.drawScaled(RX<<16+21<<16, eY, FRACUNIT, PATCH, ((TANKS<3) and T80 or 0)|EFLAGS)
			if (MAXTANKS > 4)
				v.drawScaled(RX<<16+38<<16, eY, FRACUNIT, PATCH,((TANKS<5) and T80 or 0)|EFLAGS)
				if (MAXTANKS > 6)
					v.drawScaled(RX<<16+55<<16, eY, FRACUNIT, PATCH,((TANKS<7) and T80 or 0)|EFLAGS)
					if (MAXTANKS > 8)
						v.drawScaled(RX<<16+72<<16, eY, FRACUNIT, PATCH,((TANKS<9) and T80 or 0)|EFLAGS)
						if (MAXTANKS > 10)
							v.drawScaled(RX<<16+89<<16, eY, FRACUNIT, PATCH, ((TANKS<11) and T80 or 0)|EFLAGS)
						end
					end
				end
			end
		end
	end

	if G_GametypeHasSpectators()
		local HFLAGS = vLe|vTo|V_PERPLAYER
		if p.sam_resisthud
			if (p.sam_resisthud % 2 == 0)
				v.drawScaled(RX<<16+5<<16, RY<<16+23<<16, 40000, v.cachePatch("WEAPRESI"), T10|HFLAGS)
			end	
		elseif p.sam_crithud
			if (p.sam_crithud % 2 == 0)
				v.drawScaled(RX<<16+5<<16, RY<<16+23<<16, 40000, v.cachePatch("WEAPCRIT"), T10|HFLAGS)
			end
		elseif p.sam_hithud
			if (p.sam_hithud % 2 == 0)
				local PATCH = v.cachePatch("WEAPHIT")
				if (p.sam_hithud > 15)
					v.drawScaled(RX<<16, RY<<16+22<<16, 50000, PATCH, HFLAGS)
				elseif (p.sam_hithud > 15)
					v.drawScaled(RX<<16+5<<16, RY<<16+23<<16, 40000, PATCH, T10|HFLAGS)
				elseif (p.sam_hithud > 8)
					v.drawScaled(RX<<16+8<<16, RY<<16+24<<16, 1<<15, PATCH, T20|HFLAGS)
				elseif (p.sam_hithud > 6)
					v.drawScaled(RX<<16+9<<16, RY<<16+25<<16, 30000, PATCH, T30|HFLAGS)
				elseif (p.sam_hithud > 4)
					v.drawScaled(RX<<16+11<<16, RY<<16+26<<16, 27000, PATCH, T40|HFLAGS)
				elseif (p.sam_hithud > 2)
					v.drawScaled(RX<<16+14<<16, RY<<16+27<<16, 22000, PATCH, T50|HFLAGS)
				else
					v.drawScaled(RX<<16+17<<16, RY<<16+29<<16, 14000, PATCH, T70|HFLAGS)
				end
			end
		end
	else
		local HFLAGS = RFLAGS|V_PERPLAYER
		if p.sam_resisthud
			if (p.sam_resisthud % 2 == 0)
				v.drawScaled(229<<16, 146<<16, 40000, v.cachePatch("WEAPRESI"), T10|HFLAGS)
			end	
		elseif p.sam_crithud
			if (p.sam_crithud % 2 == 0)
				v.drawScaled(229<<16, 146<<16, 40000, v.cachePatch("WEAPCRIT"), T10|HFLAGS)
			end
		elseif p.sam_hithud
			if (p.sam_hithud % 2 == 0)
				local PATCH = v.cachePatch("WEAPHIT")
				if (p.sam_hithud > 15)
					v.drawScaled(228<<16, 126<<16+22<<16, 50000, PATCH, HFLAGS)
				elseif (p.sam_hithud > 13)
					v.drawScaled(229<<16, 126<<16+23<<16, 40000, PATCH, T10|HFLAGS)
				elseif (p.sam_hithud > 8)
					v.drawScaled(230<<16, 126<<16+24<<16, 1<<15, PATCH, T20|HFLAGS)
				elseif (p.sam_hithud > 6)
					v.drawScaled(231<<16, 126<<16+25<<16, 30000, PATCH, T30|HFLAGS)
				elseif (p.sam_hithud > 4)
					v.drawScaled(232<<16, 126<<16+26<<16, 27000, PATCH, T40|HFLAGS)
				elseif (p.sam_hithud > 2)
					v.drawScaled(233<<16, 126<<16+27<<16, 22000, PATCH, T50|HFLAGS)
				else
					v.drawScaled(234<<16, 126<<16+29<<16, 14000, PATCH, T70|HFLAGS)
				end
			end	
		end
	end

	if G_GametypeHasSpectators() and p.plushudscoretime and p.plushudscore and p.plushudscoreflags
		if p.plushudscore >= 100
			v.drawString(RX+146, RY+57-(p.plushudscoretime/2), "\x81"+"+"+p.plushudscore, (p.plushudscoreflags)|vTo)
		elseif p.plushudscore > 45
			v.drawString(RX+146, RY+57-(p.plushudscoretime/2), "\x82"+"+"+p.plushudscore, (p.plushudscoreflags)|vTo)
		else
			v.drawString(RX+146, RY+57-(p.plushudscoretime/2), "+"+p.plushudscore, (p.plushudscoreflags)|vTo)
		end
	elseif (gametype == GT_COOP) and p.sam_hitmult and p.sam_hithud
		if (p.sam_hithud > 14)
			v.drawString(RX+259, RY+110, "X "+p.sam_hitmult, T20|RFLAGS, "small")
		elseif (p.sam_hithud > 10)
			v.drawString(RX+259, RY+110, "X "+p.sam_hitmult, T40|RFLAGS)
		elseif 
			v.drawString(RX+259, RY+110, "X "+p.sam_hitmult, T80|RFLAGS)
		end
	end

	//Final Collection Screen

	if p.samustimeshow and ((p.samustimeshow % 2 == 0) or (p.samustimeshow  < 175)) and p.sams_completiontime and p.sams_itemcompletion != nil and (gametype == GT_COOP)
		if not (p.samustimeshow < 26)
			if p.sam_gameover
				v.drawString(241, HY+12, "\x84"+"DEATHS THIS SESSION: \x87"+p.sam_gameover, T10, "center")	
			else
				v.drawString(241, HY+12, "\x84"+"DEATHS THIS SESSION: \x82"+"0", T10, "center")
			end
	  	end
		if (p.samustimeshow > 25)
		v.drawString(163, HY-107, "\x87"+"Completion Time:", T10, "center")

			if (p.sams_completiontimehours < 10)
			v.drawString(140, HY-87, "\x83"+"0"+p.sams_completiontimehours+":", T10, "center")
			else
			v.drawString(140, HY-87, "\x83"+p.sams_completiontimehours+":", T10, "center")
			end
			if (p.sams_completiontimeminutes < 10)
			v.drawString(161, HY-87, "\x83"+"0"+p.sams_completiontimeminutes+":", T10, "center")
			else
			v.drawString(161, HY-87, "\x83"+p.sams_completiontimeminutes+":", T10, "center")
			end
			if (p.sams_completiontimeseconds < 10)
			v.drawString(181, HY-87, "\x83"+"0"+p.sams_completiontimeseconds, T10, "center")
			else
			v.drawString(181, HY-87, "\x83"+p.sams_completiontimeseconds, T10, "center")
			end

		v.drawString(161, HY-67, "\x82"+"   YOUR RATE FOR:", T10, "center")
		v.drawString(161, HY-55, "\x82"+"COLLECTING ITEMS IS:", T10, "center")
		v.drawString(160, HY-37, "\x83"+p.sams_itemcompletion+"%", T10, "center")

		elseif (p.samustimeshow > 17)

			if (p.sams_completiontimehours < 10)
			v.drawString(140, HY-87, "\x83"+"0"+p.sams_completiontimehours+":", T30, "center")
			else
			v.drawString(140, HY-87, "\x83"+p.sams_completiontimehours+":", T30, "center")
			end
			if (p.sams_completiontimeminutes < 10)
			v.drawString(161, HY-87, "\x83"+"0"+p.sams_completiontimeminutes+":", T30, "center")
			else
			v.drawString(161, HY-87, "\x83"+p.sams_completiontimeminutes+":", T30, "center")
			end
			if (p.sams_completiontimeseconds < 10)
			v.drawString(181, HY-87, "\x83"+"0"+p.sams_completiontimeseconds, T30, "center")
			else
			v.drawString(181, HY-87, "\x83"+p.sams_completiontimeseconds, T30, "center")
			end

		v.drawString(161, HY-67, "\x82"+"   YOUR RATE FOR:", T30, "center")
		v.drawString(161, HY-55, "\x82"+"COLLECTING ITEMS IS:", T30, "center")
		v.drawString(160, HY-37, "\x83"+p.sams_itemcompletion+"%", T30, "center")
		elseif (p.samustimeshow > 9)
			if (p.sams_completiontimehours < 10)
			v.drawString(140, HY-87, "\x83"+"0"+p.sams_completiontimehours+":", T50, "center")
			else
			v.drawString(140, HY-87, "\x83"+p.sams_completiontimehours+":", T50, "center")
			end
			if (p.sams_completiontimeminutes < 10)
			v.drawString(161, HY-87, "\x83"+"0"+p.sams_completiontimeminutes+":", T50, "center")
			else
			v.drawString(161, HY-87, "\x83"+p.sams_completiontimeminutes+":", T50, "center")
			end
			if (p.sams_completiontimeseconds < 10)
			v.drawString(181, HY-87, "\x83"+"0"+p.sams_completiontimeseconds, T50, "center")
			else
			v.drawString(181, HY-87, "\x83"+p.sams_completiontimeseconds, T50, "center")
			end

		v.drawString(161, HY-67, "\x82"+"   YOUR RATE FOR:", T50, "center")
		v.drawString(161, HY-55, "\x82"+"COLLECTING ITEMS IS:", T50, "center")
		v.drawString(160, HY-37, "\x83"+p.sams_itemcompletion+"%", T50, "center")
		else
			if (p.sams_completiontimehours < 10)
				v.drawString(140, HY-87, "\x83"+"0"+p.sams_completiontimehours+":", T70, "center")
			else --Took your sweet time! Hope you had fun!
				v.drawString(140, HY-87, "\x83"+p.sams_completiontimehours+":", T70, "center")
			end
			if (p.sams_completiontimeminutes < 10)
				v.drawString(161, HY-87, "\x83"+"0"+p.sams_completiontimeminutes+":", T70, "center")
			else
				v.drawString(161, HY-87, "\x83"+p.sams_completiontimeminutes+":", T70, "center")
			end
			if (p.sams_completiontimeseconds < 10)
				v.drawString(181, HY-87, "\x83"+"0"+p.sams_completiontimeseconds, T70, "center")
			else
				v.drawString(181, HY-87, "\x83"+p.sams_completiontimeseconds, T70, "center")
			end

		v.drawString(161, HY-67, "\x82"+"   YOUR RATE FOR:", T70, "center")
		v.drawString(161, HY-55, "\x82"+"COLLECTING ITEMS IS:", T70, "center")
		v.drawString(160, HY-37, "\x83"+p.sams_itemcompletion+"%", T70, "center")
		end
	end
	
	--Edit displayed visor on life icon

	if not multiplayer and not netgame and (p.sam_gravitysuit == 2) and p.samvisorcolor and G_GametypeUsesLives() and hud.enabled("lives")
		if p.samvisorcolor == 5
		v.drawScaled(HX<<16, HY<<16, 1<<15, v.cachePatch("SAMSFACL"), vBo|vLe|T60, v.getColormap(nil, SKINCOLOR_BLUE))
		else
		v.drawScaled(HX<<16, HY<<16, 1<<15, v.cachePatch("SAMSFACL"), vBo|vLe|T10, v.getColormap(nil, p.samvisorcolor))
		end
	end
	if s.sam_systemreboot and not p.sam_sensitive
		local rebootcolor = SKINCOLOR_WHITE
		if s.metroidsnack
			rebootcolor = SKINCOLOR_RED
		end
		if (vHEIGHT == 1200) or (vHEIGHT == 800) or (vHEIGHT == 400) or (vHEIGHT == 200)
			if (leveltime % 2 == 0)
				v.drawScaled(0, 0, FRACUNIT, v.cachePatch("SAMBOOT1"), T90|vLe|vTo, v.getColormap(nil, rebootcolor))
			else
				v.drawScaled(320<<16, 0, FRACUNIT, v.cachePatch("SAMBOOT1"), T90|vRi|vTo|V_FLIP, v.getColormap(nil, rebootcolor))
			end
		elseif (vHEIGHT == 1080)
			if (leveltime % 2 == 0)
				v.drawScaled(0, -40<<16, 82033, v.cachePatch("SAMBOOT1"), T90|vLe|vTo, v.getColormap(nil, rebootcolor))
			else
				v.drawScaled(320<<16, -40<<16, 82033, v.cachePatch("SAMBOOT1"), T90|vRi|vTo|V_FLIP, v.getColormap(nil, rebootcolor))
			end
		end
	end
	if s.metroidsnack 	
		if not p.sammorphed
			v.drawString(160, 93, ((leveltime%2) and "\x85" or "\x81")+"ROLL AWAY OR BOMB TO BREAK FREE!", nil, "center")
		end
	elseif p.hyperbrakmsg
		if p.hyperbrakmsg % 2 == 0
			v.drawString(160, 93, "\x82"+"DETECTING LEAKS OF STOLEN \x80 HYPER ENERGY\x82 !", nil, "center")
		end		
	elseif (p.powers[pw_carry] == CR_BRAKGOOP) and p.sambsbl
		v.drawString(160, 93, ((leveltime%2) and "\x85" or "\x81")+"USE THE \x82 BOOSTBALL\x85 TO BREAK FREE!", nil, "center")
	end

	if not p.sam_specialstage
		local HFLAGS = vTo|vLe|V_PERPLAYER
		if p.sam_gravitysuit
			if (p.sam_gravitysuit == 1)
				v.drawFill(RX+1, RY+6, 101, 5, 48|HFLAGS)
				v.drawFill(RX+2, RY+7, 99, 3, 47|HFLAGS)			
			else
				v.drawFill(RX+1, RY+6, 101, 5, 148|HFLAGS)
				v.drawFill(RX+1, RY+6, 101, 4, 147|HFLAGS)
				v.drawFill(RX+1, RY+6, 101, 3, 146|HFLAGS)
				v.drawFill(RX+1, RY+6, 101, 2, 145|HFLAGS)
				v.drawFill(RX+1, RY+6, 101, 1, 144|HFLAGS)
				v.drawFill(RX+2, RY+7, 99, 3, 199|HFLAGS)
			end
		else
			v.drawFill(RX+1, RY+6, 101, 5, 28|HFLAGS)
			v.drawFill(RX+2, RY+7, 99, 3, 31|HFLAGS)
		end
		if p.encatchupflash or (( (p.sam_energy or 50) < 30) and not p.sam_energyflash)
			v.drawFill(RX+2, RY+7, p.sam_hudenergy, 1, 37|HFLAGS)
			v.drawFill(RX+2, RY+8, p.sam_hudenergy, 2, 46|HFLAGS)
		elseif p.sam_energyflash
			v.drawFill(RX+2, RY+7, p.sam_hudenergy, 1, 4|HFLAGS)
			v.drawFill(RX+2, RY+8, p.sam_hudenergy, 2, 9|HFLAGS)
		else
			if p.sam_gravitysuit
				if (p.sam_gravitysuit != 1)
					v.drawFill(RX+2, RY+7, p.sam_hudenergy, 1, 192|HFLAGS)
					v.drawFill(RX+2, RY+8, p.sam_hudenergy, 2, 194|HFLAGS)
				else
					v.drawFill(RX+2, RY+7, p.sam_hudenergy, 1, 147|HFLAGS)
					v.drawFill(RX+2, RY+8, p.sam_hudenergy, 2, 149|HFLAGS)
				end
			else
				v.drawFill(RX+2, RY+7, p.sam_hudenergy, 1, 146|HFLAGS)
				v.drawFill(RX+2, RY+8, p.sam_hudenergy, 2, 148|HFLAGS)
			end
		end
		if p.sam_energytanksmax != nil
			if not (p.sam_energytanksmax%2==0)
				if p.sam_energytanks and (p.sam_energytanks >= p.sam_energytanksmax)
					v.drawFill(RX+50, RY+7, 5, 3, 65|vLe|vTo|V_PERPLAYER)
					v.drawFill(RX+50, RY+10, 5, 1, 69|vLe|vTo|V_PERPLAYER)
					v.drawFill(RX+50, RY+6, 5, 1, 73|vLe|vTo|V_PERPLAYER)
				end
			end
		end
		
		if p.sam_screwattack and (p.pflags & PF_JUMPED) and not p.sams_screwattackcd and not p.sammorphed
		and not p.sams_morphcd and not p.powers[pw_nocontrol] and not p.gotflag
		and not ((s.eflags & MFE_UNDERWATER) and not (p.sam_gravitysuit == 2))
			v.drawFill(RX+2, RY+6, 99, 1, 72|HFLAGS)
			v.drawFill(RX+2, RY+10, 99, 1, 65|HFLAGS)
		end
		
		if p.sammorphed and p.sam_spiderball and s.spiderbcharge != nil
		
			local CHARGE = min(99,s.spiderbcharge)
			
			if s.spiderballing or (p.powers[pw_flashing] and s.spiderballCD) or s.spiderbanim
				if not (p.powers[pw_flashing] and s.spiderballCD)
					if (s.spiderbcharge > 104) --Shitton of charge!
						v.drawFill(RX+2, RY+6, 99, 1, 64|HFLAGS)
						v.drawFill(RX+2, RY+10, 99, 1, 69|HFLAGS)
					else
						v.drawFill(RX+2, RY+6, CHARGE, 1, ((CHARGE<35) and 210 or 90)|HFLAGS)
						v.drawFill(RX+2, RY+10, CHARGE, 1, ((CHARGE<35) and 37 or 94)|HFLAGS)
					end
					--Second meter, the one most people will pay attention to.
					if (s.spiderbcharge > 103) --Supercharged
						v.drawFill(182, 124-(103/3), 5, 103/3, (leveltime%2==0) and 87 or 80)
					else
						v.drawFill(182, 124-(CHARGE/3), 5, CHARGE/3, (CHARGE < 35) and 41 or 75) --41 is red, 75 is gold.
						v.drawFill(184, 124-(CHARGE/3), 1, CHARGE/3, 1)
					end
					v.drawScaled(180<<16, 90<<16, FRACUNIT, v.cachePatch("SAMSPDCH"), T20)
				else
					if (leveltime % 2 == 0)
						v.drawFill(RX+2, RY+6, CHARGE, 1, 184|HFLAGS)
						v.drawFill(RX+2, RY+10, CHARGE, 1, 187|HFLAGS)				
						v.drawFill(182, 124-(CHARGE/3), 5, CHARGE/3, 184)
						v.drawFill(184, 124-(CHARGE/3), 1, CHARGE/3, 33)
						
						v.drawScaled(180<<16, 90<<16, FRACUNIT, v.cachePatch("SAMSPDCH"), T20)
					end
				end
				if s.spiderbanim and (s.spiderbanim < 8)
					local COLORmap = v.getColormap(nil, SKINCOLOR_SUPERGOLD5-(s.spiderbanim/2))
					local SBscale = FRACUNIT-(s.spiderbanim*8100)
					v.drawScaled(172<<16, 131<<16, SBscale, v.cachePatch("MPR9H0"), T70-(s.spiderbanim<<16), COLORmap)
					v.drawScaled(195<<16, 123<<16, SBscale, v.cachePatch("MPR9J0"), T70-(s.spiderbanim<<16), COLORmap)
				end
				
			else --if NOT spiderballing!
			
				v.drawFill(RX+2, RY+6, 99/2, 1, 90|HFLAGS|T30)
				v.drawFill(RX+2, RY+10, 99/2, 1, 94|HFLAGS|T30)
				
				local COLORF = (s.spiderbcharge > 103) and ((leveltime%2==0) and 87 or 80) or (CHARGE<35) and 41 or 78-(CHARGE/15)
				v.drawFill(182, 124-(CHARGE/6), 3, CHARGE/6, COLORF)
				v.drawScaled(181<<16, 106<<16, 1<<15, v.cachePatch("SAMSPDCH"), T30)
			end
			if s.spiderballrecharged and s.spiderballrecharged != true
				local SBTRANS = min(9<<16, max(0, (s.spiderballrecharged/2)<<16) )
				v.drawString(190, 73-s.spiderballrecharged, "Spiderball "+((s.spiderballrecharged%2) and "\x87" or "\x80")+"Recharged", vBo|V_ALLOWLOWERCASE|SBTRANS, "small-center")
			elseif (s.spiderbcharge > 103)
				if (leveltime%2)
					v.drawString(190, 75, "Spiderball SuperCharge", vBo|V_ALLOWLOWERCASE|T60, "small-center")
				else
					v.drawString(190, 75, "Spiderball \x82"+"SuperCharge", vBo|V_ALLOWLOWERCASE|T30, "small-center")
				end
			end
		end
		if (gametype == GT_COOP) and SAMUSDIFFICULTY == 2 --Fusion Mode screw attack symbol on your lifebar.
			v.drawScaled(RX<<16+52<<16, RY<<16+15<<16, 85535, v.cachePatch("GVSTD0"), T40|HFLAGS)
		end
		v.drawNum(RX+60, RY+3, (p.sam_hudenergy) or 0, T30|vLe|vTo|V_PERPLAYER)		
	end
	
	--Extra
	if p.samhudmessagetime and p.samhudmessage1 and p.samhudmessageflags and leveltime 
	and not (p.samhudmessagetime < 200 and p.samhudmessagetime > 179 and p.samhudmessagetime % 2 == 0) 
	and p.samhudmessageoffset != nil and not (splitscreen and (p == players[1]))
			v.drawString(78, 167-p.samhudmessageoffset, "\x82"+p.samhudmessage1, (p.samhudmessageflags)|V_ALLOWLOWERCASE, "small")
		if p.samhudmessage2
			v.drawString(78, 175-p.samhudmessageoffset, "\x87"+p.samhudmessage2, (p.samhudmessageflags)|V_ALLOWLOWERCASE, "small")
		end
	end
	
	if not s --Must have s!
		return --
	end	
	
	if p.samescapehud and p.samescapeseconds != nil and p.samescapemseconds != nil
		for ns in players.iterate
			v.drawString(152, 69, "\x80"+p.samescapeseconds+":", T10, "center")
			v.drawString(172, 69, "\x80"+p.samescapemseconds, T10, "center")
			if (p.samescapehud > 3067) and (p.samescapehud % 2 == 0)
				v.drawString(158, 125, "\x82"+"The Black Rock is losing stability!", T10, "center")
				v.drawString(158, 145, "\x82"+"    Evacuate immediately!!", T10, "center")
			end
	    end
	end
	
	--Lock on Health-Bars
	
	if s.sam_automob and s.sam_automob.valid and not s.sam_automob.player --Automob is an automatically targeted mobj.
		local t = s.sam_automob
		local BRFLAGS = vBo|vRi
		if t.sprite and t.frame != nil and not t.frozencage
			v.drawScaled(269<<16, 170<<16, FRACUNIT/6, v.getSpritePatch(t.sprite, t.frame, 1, 0), T40|BRFLAGS)
		end
		if t.plasmaweak
			v.drawScaled(223<<16, 160<<16, 1<<15, v.cachePatch("WEAPPLBC"), T40|BRFLAGS)
		elseif t.spazweak
			v.drawScaled(223<<16, 160<<16, 1<<15, v.cachePatch("WEAPSPBC"), T40|BRFLAGS)
		elseif t.iceweak
			v.drawScaled(223<<16, 160<<16, 1<<15, v.cachePatch("WEAPICBC"), T40|BRFLAGS)
		elseif t.waveweak
			v.drawScaled(223<<16, 160<<16, 1<<15, v.cachePatch("WEAPWVBC"), T40|BRFLAGS)
		end
		if (t.type == MT_PZBOSS) and not t.pzclone
			v.drawString(268, 164, "\x84"+"Dark Samus", T10|V_ALLOWLOWERCASE|BRFLAGS, "small-right")
			if t.samusHP != nil
				v.drawFill(227, 172, 5*t.samusHP, 1, 64|BRFLAGS)
			end
			v.drawFill(220, 174, 4*t.health, 4, 127|BRFLAGS)
			v.drawFill(220, 174, 4*t.health, 3, 121|BRFLAGS)
			v.drawFill(220, 174, 4*t.health, 1, 1|BRFLAGS)	
			
		elseif (t.type == MT_METROIDPART)
		
			v.drawString(275, 164, "\x89"+"Omega Metroid", T10|V_ALLOWLOWERCASE|BRFLAGS, "small-right")
			if t.samusHP != nil
				v.drawFill(230, 172, 2*t.samusHP, 1, 104|BRFLAGS)
			end
			v.drawFill(220, 174, 5*t.health, 4, 127|BRFLAGS)
			v.drawFill(220, 174, 5*t.health, 3, 121|BRFLAGS)
			v.drawFill(220, 174, 5*t.health, 1, 1|BRFLAGS)	
			
		elseif t.superbrak
			if t.samusHP != nil
				v.drawFill(84, 172, 8*t.samusHP, 1, 73|BRFLAGS)
			end
			if t.hyperbeampanic
				v.drawString(145, 164, "\x82"+"Super Brak", T10|V_ALLOWLOWERCASE|BRFLAGS, "small-right")				
				v.drawFill(80, 174, t.health*3, 4, 77|BRFLAGS)
				v.drawFill(80, 174, t.health*3, 3, 74|BRFLAGS)
				v.drawFill(80, 174, t.health*3, 1, 72|BRFLAGS)				
			else
				v.drawString(145, 164, "\x88"+"Hyper Brak", T10|V_ALLOWLOWERCASE|BRFLAGS, "small-right")
				v.drawFill(80, 174, t.health*20/9, 4, 127|BRFLAGS)
				v.drawFill(80, 174, t.health*20/9, 3, 121|BRFLAGS)
				v.drawFill(80, 174, t.health*20/9, 1, 1|BRFLAGS)
			end
			
		elseif (t.info.spawnhealth and t.info.spawnhealth != 1000) and (t.flags & MF_SHOOTABLE)
		and not ((t.type == MT_METROID) or (t.type == MT_METROIDLARVA) or (t.type == MT_SUPERMETROID))
		and not (t.type == MT_POPUPTURRET)
		
			v.drawString(261, 164, "Target", T10|V_ALLOWLOWERCASE|BRFLAGS, "small-right")

			if t.info.spawnhealth == 1
				if t.samusHP != nil
					if t.samusHPmax != nil
						v.drawFill(220, 174, (t.samusHP)*(63/t.samusHPmax), 4, 173|BRFLAGS)
						v.drawFill(220, 174, (t.samusHP)*(63/t.samusHPmax), 3, 148|BRFLAGS)						
						v.drawFill(220, 174, (t.samusHP)*(63/t.samusHPmax), 2, 146|BRFLAGS)
						v.drawFill(220, 174, (t.samusHP)*(63/t.samusHPmax), 1, 144|BRFLAGS)
					else
					
						v.drawFill(220, 174,  7*t.samusHP, 4, 173|BRFLAGS)
						v.drawFill(220, 174,  7*t.samusHP, 3, 148|BRFLAGS)
						v.drawFill(220, 174,  7*t.samusHP, 2, 146|BRFLAGS)						
						v.drawFill(220, 174,  7*t.samusHP, 1, 144|BRFLAGS)
					end
				end				
			else
				if t.samusHP != nil
					if t.samusHPmax != nil
						v.drawFill(229, 172, (t.samusHP)*(42/t.samusHPmax), 1, 5|BRFLAGS)
					else
						v.drawFill(229, 172, 7*t.samusHP, 1, 5|BRFLAGS)
					end
				end			
				v.drawFill(220, 174, t.health*(63/t.info.spawnhealth), 4, 173|BRFLAGS)
				v.drawFill(220, 174, t.health*(63/t.info.spawnhealth), 3, 148|BRFLAGS)					
				v.drawFill(220, 174, t.health*(63/t.info.spawnhealth), 2, 146|BRFLAGS)
				v.drawFill(220, 174, t.health*(63/t.info.spawnhealth), 1, 144|BRFLAGS)
			end
		end
	end
	if p.shipMSG and not ((splitscreen) and p==players[1]) 
		local TIME = p.shipMSG
		if (TIME > 40) and (TIME < 260) or (TIME%2)
			v.drawString(160, 158, "Use the\x82 SpawnGunShip\x80 command to", vBo|V_ALLOWLOWERCASE|T10, "small-center")
			v.drawString(160, 165, "summon the gunship and tune Samus-related options.", vBo|V_ALLOWLOWERCASE|T10, "small-center")
		end		
	elseif p.SAM_warps and p.SAM_warps.HUD
		v.drawString(160, 158, "WARP TO LAST CHECKPOINT:", vBo|V_ALLOWLOWERCASE|T40, "small-center")
		v.drawString(160, 165, "\x82"+"HOLD CUSTOM3 & STAND STILL", vBo|V_ALLOWLOWERCASE|T40, "small-center")
	end
	--START OF DEBUG HUD.
/*	local ZSPACE,FONT = 7, "small"
	local FLAGS = vBo|vLe|V_ALLOWLOWERCASE
	if players[0] and players[0].name == "Golden Shine"
		local CAMERACHASE = camera and "\x82"+camera.chase
		local FIRSTPERSON = p.sam_firstperson and "\x82"+"TRUE" or "FALSE"
		local WARPNUM = p.SAM_warps and p.SAM_warps.num
		local STARPOSTNUM = p.starpostnum
		local PREVCAM = p.sam_prevcam
		
		--Everything is setup. Now make a table and flags, and use a for-loop.
		local Xo,Yo = 34,55 --X offset, and Y offset. Yo!
		local CT = "\x8a" --Text Color
		
		local TEXT = { --Gonna make a table(array?) here for quick adjustments later.
		[1] = "s.sam_ldclmb: "+"\x80"+s.sam_ldclmb,
		[2] = "Camera Chase: "+"\x80"+camera.chase,
		[3] = "p.sam_firstperson: "+"\x80"+FIRSTPERSON,	
		[4] = "WARPNUM: "+"\x80"+WARPNUM,
		[5] = "p.starpostnum: "+"\x80"+STARPOSTNUM,
		[6] = "p.sam_prevcam: "+"\x80"+PREVCAM,
		[7] = "p.sam_walljumpsound: "+"\x80"+p.sam_walljumpsound,
		[8] = "s.sam_scanpowerup: "+"\x80 "+s.sam_scanpowerup,
		[9] = "p.sams_itemcompletion:"+"\x80 "+p.sams_itemcompletion
		}
		for i = 1,#TEXT
			v.drawString(Xo, Yo, CT+TEXT[i], FLAGS, FONT)
			Yo = $+ZSPACE
		end	
	end
	v.drawString(170, 172, "DEBUG VERSION", FLAGS, FONT) */
	--END OF DEBUG HUG
end)

local LARROW,RARROW,DARROW = "SSMENULA", "SSMENURA", "SSMENUDA"
local SWAPARROW = false

//Ship HUD start!
local sam_titlehud = nil
hud.add(function(v, p)
	if p.sam_saveselect
		if sam_titlehud == nil
			hud.disable("stagetitle")
			sam_titlehud = true
		end
		return --
	elseif sam_titlehud
		hud.disable("stagetitle")
		sam_titlehud = false
	end
	
	if not (p.sam_intoship == 33 and p.mo)
		return --
	end
	local s = p.mo
	local RX,RY = hudinfo[HUD_RINGS].x, hudinfo[HUD_RINGS].y
	local HX,HY = hudinfo[HUD_LIVES].x, hudinfo[HUD_LIVES].y
	local cmv = v.getColormap(nil, SKINCOLOR_VARIASUIT)
	local cmB = v.getColormap(nil, SKINCOLOR_BLACK)
	local ADMIN = (IsPlayerAdmin(p) or (p == server))
	if (isdedicatedserver) and not (ADMIN)
		local TOTAL = 0
		for z in players.iterate
			if z.valid TOTAL = $+1
				if (z == server) or (IsPlayerAdmin(z))
					TOTAL = 99 break --
				end 
			end
		end if (TOTAL<2) ADMIN = true end
	end		
	if (leveltime%12==0)
		SWAPARROW = not SWAPARROW
	end
	if SWAPARROW==true
		LARROW = "SSMENUL2"
		RARROW = "SSMENUR2"
		DARROW = "SSMENUD2"	
	else
		LARROW = "SSMENULA"
		RARROW = "SSMENURA"
		DARROW = "SSMENUDA"
	end
	//Higher Y number is lower position. Higher X number moves it to the right.
	v.drawFill(20, 5, 280, 185, 30|T10)
	
	//Moving 90s screensaver
	if s and s.starSAM and s.starSAM[1] != nil
		local STAR = s.starSAM
		v.drawFill(STAR[1].x, STAR[1].y, 1, 1, 112)
		v.drawFill(STAR[2].x, STAR[2].y, 1, 1, 80)
		v.drawFill(STAR[3].x, STAR[3].y, 1, 1, 128)
		v.drawFill(STAR[4].x, STAR[4].y, 1, 1, 200)
		v.drawFill(STAR[5].x, STAR[5].y, 1, 1, 145)
		v.drawFill(STAR[6].x, STAR[6].y, 1, 1, 32)
		v.drawFill(STAR[7].x, STAR[7].y, 1, 1, 96)
		v.drawFill(STAR[8].x, STAR[8].y, 1, 1, 72)
		v.drawFill(STAR[9].x, STAR[9].y, 1, 1, 81) 
	end

	v.drawFill(23, 7, 2, 181, 128)
	v.drawFill(296, 7, 2, 181, 128)
	
	if p.ssmenusub == 1
		if p.ssmenu1
			if (p.sam_gravitysuit == 2) and s and YouAreSamus(s)
				v.drawScaled(138<<16, 24<<16, FRACUNIT, v.cachePatch("SAMSCHAG"), T50)
			else
				v.drawScaled(138<<16, 24<<16, FRACUNIT, v.cachePatch("SAMSCHAR"), T50)
			end
			v.drawScaled(92<<16, 34<<16, FRACUNIT, v.cachePatch("SSMENU1A"), nil, cmv)
			v.drawScaled(92<<16, 66<<16, FRACUNIT, v.cachePatch("SSMENU1B"), nil, cmv)
			local SP = ADMIN
			v.drawScaled(92<<16, 98<<16, FRACUNIT, v.cachePatch("SSMENU1C"), nil, SP and cmv or v.getColormap(nil, SKINCOLOR_RED))
			v.drawScaled(92<<16, 130<<16, FRACUNIT, v.cachePatch("SSMENU1D"), nil, cmv)
			v.drawScaled(92<<16, 162<<16, FRACUNIT, v.cachePatch("SSMENU1E"), nil, cmv)
			if p.ssmenu1 <= 5
				local FRAME = R_Frame2Char(p.ssmenu1-1) --SSMENU1A up to SSMENU1E.
				local EY = 34+(32*(p.ssmenu1-1))
				v.drawScaled(92<<16, EY<<16, FRACUNIT, v.cachePatch("SSMENU1"+FRAME), nil, v.getColormap(nil, SKINCOLOR_GREEN))
			end
		end
	
		
	//You're now rendering the Equipment Screen! x-32, y-8 if top, +8 if bottom.

	elseif p.ssmenusub == 2
	
		--Menu Header
		v.drawScaled(162<<16, 26<<16, 80355, v.cachePatch("SSMENU1A"), nil, v.getColormap(nil, SKINCOLOR_BEIGE))
	    if not (p.ssmenusubpage >= 26) and not p.ssmenudrop//Arrow doesn't exist at these points.
			v.drawScaled(280<<16, 20<<16, FRACUNIT, v.cachePatch(RARROW), T20) --Right Arrow
			v.drawString(278, 9, p.ssmenusubpage+1, T20, "left")
	    end
	    if not (p.ssmenusubpage <= 1)
			v.drawScaled(18<<16, 20<<16, FRACUNIT, v.cachePatch(LARROW), T20) --Left Arrow
			v.drawString(28, 9, p.ssmenusubpage-1, T20, "left")
	    end
	    if (p.ssmenusubpage == 1) --Samus Equipment page, ala Super Metroid
		
			if not p.ssmenudrop
				v.drawScaled(150<<16, 169<<16, FRACUNIT, v.cachePatch(DARROW), T20)
				v.drawScaled(164<<16, 178<<16, FRACUNIT, (p.sam_gravitysuit) and v.cachePatch("SAMEQUIP") or v.cachePatch("SAMEQUPP"))
				if p.sams_itemcompletion != nil
					v.drawString(HX+56, HY-160, p.sams_itemcompletion+"% ITEMS", T20, "center")
				end
				if p.sams_completiontimehours != nil and p.sams_completiontimeminutes != nil
					if (p.sams_completiontimehours < 10) and (p.sams_completiontimeminutes < 10)		
						v.drawString(HX+233, HY-160, "TIME 0"+p.sams_completiontimehours+":0"+p.sams_completiontimeminutes, T20, "center")
					elseif (p.sams_completiontimehours > 9) and (p.sams_completiontimeminutes < 10)
						v.drawString(HX+233, HY-160, "TIME "+p.sams_completiontimehours+":0"+p.sams_completiontimeminutes, T20, "center")
					elseif (p.sams_completiontimehours > 9) and (p.sams_completiontimeminutes > 9)
						v.drawString(HX+233, HY-160, "TIME "+p.sams_completiontimehours+":"+p.sams_completiontimeminutes, T20, "center")
					elseif (p.sams_completiontimehours < 10) and (p.sams_completiontimeminutes > 9)	
						v.drawString(HX+233, HY-160, "TIME 0"+p.sams_completiontimehours+":"+p.sams_completiontimeminutes, T20, "center")
					end
				end
		
				v.drawString(HX+90, HY-84, p.sammissiles+" / "+p.sammissilesmax, T20, "center")
				v.drawString(HX+88, HY-108, p.samsupermissiles+" / "+p.samsupermissilesmax, T20, "center")
				v.drawString(HX+88, HY-130, p.sampw+" / "+p.sampwmax, T20, "center")
				if p.sam_gravitysuit
					if p.sam_gravitysuit!=1
						v.drawScaled(200<<16+14100, 64<<16, FRACUNIT, v.cachePatch("EQGRAVIT"))
					end
					v.drawScaled(200<<16+14100, 56<<16, FRACUNIT, v.cachePatch("EQVARIAS"))
				end
				if p.sam_power_grip
					v.drawScaled(200<<16+14100, 88<<16, FRACUNIT, v.cachePatch("EQPWGRP"))
				end
				if p.sam_bombs
					v.drawScaled(200<<16+14100, 95<<16, FRACUNIT, v.cachePatch("EQBOMBS"))
				end
				if p.sam_highjump
					v.drawScaled(200<<16+14100, 150<<16, FRACUNIT, v.cachePatch("EQHIGHJ"))
					v.drawScaled(200<<16+14100, 118<<16, FRACUNIT, v.cachePatch("EQSPRING"))
				end
				if p.sambsbl
					v.drawScaled(200<<16+14100, 103<<16, FRACUNIT, v.cachePatch("EQBOOST"))
				end
				if p.sam_spiderball
					v.drawScaled(200<<16+14100, 110<<16, FRACUNIT, v.cachePatch("EQSPIDR"))
				end
				if p.sam_screwattack
					v.drawScaled(200<<16+14100, 127<<16, FRACUNIT, v.cachePatch("EQSCREW"))
				end
				if p.sam_spacejump
					v.drawScaled(200<<16+14100, 159<<16, FRACUNIT, v.cachePatch("EQSPACEJ"))
				end
				if p.samspbs
					v.drawScaled(200<<16+14100, 167<<16, FRACUNIT, v.cachePatch("EQSPEEDB"))
				end
				if p.sam_chargebeam
					v.drawScaled(64<<16, 119<<16, FRACUNIT, v.cachePatch("EQCHARGE"))
				end
				if p.sam_spazerbeam
					v.drawScaled(64<<16, 127<<16, FRACUNIT, v.cachePatch("EQSPAZER"))
				end
				if p.sam_wavebeam
					v.drawScaled(64<<16, 135<<16, FRACUNIT, v.cachePatch("EQWAVE"))
				end
				if p.sam_icebeam
					v.drawScaled(64<<16, 142<<16, FRACUNIT, v.cachePatch("EQICE"))
				end
				if p.sam_plasmabeam
					v.drawScaled(64<<16, 151<<16, FRACUNIT, v.cachePatch("EQPLASMA"))
				end
				if p.sam_hyperbeam 
					v.drawScaled(84<<16, 173<<16, FRACUNIT, v.cachePatch("EQHYPER"), nil, v.getColormap(nil, (p.hyperbeamco) or SKINCOLOR_WHITE))
				end

			else -- if p.ssmenudrop
				v.drawScaled(97<<16, 47<<16, FRACUNIT, v.cachePatch("THNEV2"))
				v.drawScaled(97<<16, 124<<16, FRACUNIT, v.cachePatch("THNEV2"))
		
				v.drawScaled(25<<16, 7<<16, FRACUNIT, v.cachePatch("REDCAUTN"))
				v.drawScaled(232<<16, 7<<16, FRACUNIT, v.cachePatch("REDCAUTN"))
				v.drawScaled(25<<16, 124<<16, FRACUNIT, v.cachePatch("YELCAUTN"))
				v.drawScaled(232<<16, 124<<16, FRACUNIT, v.cachePatch("YELCAUTN"))
		
				v.drawString(160, 93, "\x85"+"PRESS\x82 JUMP\x85 TO DELETE EQUIPMENT", nil, "center")
				v.drawString(50, 193, "\x85"+"Warning:"+"\x81"+"Achievements will lock until you refresh the save!", nil, "small")	
			end

	    elseif (p.ssmenusubpage == 2) // Missile page

			v.drawString(193, 33, "Most commonly found in:", T20, "small")
			v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVRIA0"))
			v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVATA0"))
			if p.sammissilesmax
				v.drawScaled(58<<16, 78<<16, FRACUNIT, v.cachePatch("MTNKA0"))
				v.drawScaled(93<<16, 76<<16, FRACUNIT, v.cachePatch("MPKUA0"))
				v.drawFill(24, 130, 272, 2, 128, T20)
				v.drawFill(24, 90, 272, 2, 128)
				v.drawString(77, 24, "Missiles", T20, "center")
				v.drawString(30, 143, "Powerful explosives that can destroy some weakened structures.", T20, "small")
				v.drawString(30, 153, "Replenish ammo from monitors and enemy drops. Shoot missiles", T20, "small")
				v.drawString(30, 163, "with the FIRE key.(or NORMALFIRE if beamswap is set to on)", T20, "small")
		
				v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
				v.drawString(30, 96, "\x82"+"DAMAGE: 20", T20, "left")
				v.drawString(30, 106, "\x86"+"EFFECTS: 6+ PUSHBACK", T20, "left")
				v.drawString(30, 116, "\x87"+"EXPLOSIVE RADIUS: 268", T20, "left")
			else
				v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
			end

	    elseif (p.ssmenusubpage == 3) // Super Missile page

			v.drawString(193, 33, "Most commonly found in:", T20, "small")
			v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVARA0"))
			v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVIVA0"))
			if p.samsupermissilesmax
				v.drawScaled(58<<16, 78<<16, FRACUNIT, v.cachePatch("STNKA0"))
				v.drawScaled(93<<16, 76<<16, FRACUNIT, v.cachePatch("SPKUA0"))
				v.drawFill(24, 130, 272, 2, 128)
				v.drawFill(24, 90, 272, 2, 128)
				v.drawString(77, 18, " Super", T20, "center")
				v.drawString(77, 28, "Missiles", T20, "center")
				v.drawString(30, 143, "Devastating explosives that decimate all breakable structures.", T20, "small")
				v.drawString(30, 153, "Ammo from monitors and enemy drops are scarce. Shoot Super Missiles by", T20, "small")
				v.drawString(30, 163, "holding FIRE and releasing after the click.(NORMALFIRE with beamswap)", T20, "small")
		
				v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
				v.drawString(30, 96, "\x82"+"DAMAGE: 46", T20, "left")
				v.drawString(30, 106, "\x86"+"EFFECTS: 30+ KNOCKBACK", T20, "left")
				v.drawString(30, 116, "\x87"+"EXPLOSIVE RADIUS: 520", T20, "left")
			else
				v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
			end

	    elseif (p.ssmenusubpage == 4) // Powerbomb page

			v.drawString(193, 33, "Most commonly found in:", T20, "small")
			v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVIVA0"))
			v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVELA0"))
			if p.sampwmax
				v.drawScaled(58<<16, 78<<16, FRACUNIT, v.cachePatch("PTNKA0"))
				v.drawScaled(93<<16, 70<<16, FRACUNIT, v.cachePatch("PBOMA0"))
				v.drawFill(24, 130, 272, 2, 128, T20)
				v.drawFill(24, 90, 272, 2, 128)
				v.drawString(77, 18, "Power", T20, "center")
				v.drawString(77, 28, "Bombs", T20, "center")
				v.drawString(30, 143, "Catastrophic bomb that nukes the area, smashing all breakable walls.", T20, "small")
				v.drawString(30, 153, "Ammo is incredibly rare. To lay Power Bombs, hold NORMALFIRE in morph", T20, "small")
				v.drawString(30, 163, "morph ball mode and release after the click.(FIRE with beamswap)", T20, "small")
		
				v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
				v.drawString(30, 96, "\x82"+"DAMAGE: 160 ~ 75 ~ 45", T20, "left")
				v.drawString(30, 106, "\x86"+"EFFECTS: 100+ KNOCKBACK", T20, "left")
				v.drawString(30, 116, "\x87"+"EXPLOSIVE RADIUS: 1830", T20, "left")
			else
				v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
			end

	    elseif (p.ssmenusubpage == 5) // bombs page

			v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVFOA0"))
			v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVRIA0"))
			v.drawString(193, 33, "Most commonly found in:", T20, "small")
			if p.sam_bombs
				v.drawScaled(78<<16, 75<<16, 120000, v.cachePatch("GVSTI0"))
				v.drawFill(24, 130, 272, 2, 128)
				v.drawFill(24, 90, 272, 2, 128)
				v.drawString(77, 24, "Bombs", T20, "center")
				v.drawString(30, 143, "Bombs designed for Morph Ball mode, shattering weakened breakable walls.", T20, "small")
				v.drawString(30, 153, "Though infinite in supply, rapid overuse will increase cooldown.", T20, "small")
				v.drawString(30, 163, "Press normalfire in morph ball to use bombs.(FIRE with beamswap)", T20, "small")
		
				v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
				v.drawString(30, 96, "\x82"+"DAMAGE: 11", T20, "left")
				v.drawString(30, 106, "\x86"+"EFFECTS: 11+ PUSHBACK", T20, "left")
				v.drawString(30, 116, "\x87"+"EXPLOSIVE RADIUS: 250", T20, "left")
			else
				v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
			end

	    elseif (p.ssmenusubpage == 6) // Boost-Ball Page

			v.drawString(193, 33, "Most commonly found in:", T20, "small")
			v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVSSA0"))
			v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVFOA0"))
			if p.sambsbl
				v.drawScaled(76<<16, 75<<16, FRACUNIT, v.cachePatch("BSBLA0"))
				v.drawFill(24, 130, 272, 2, 128)
				v.drawFill(24, 90, 272, 2, 128)
				v.drawString(77, 18, "Boost", T20, "center")
				v.drawString(77, 28, "Ball", T20, "center")
				v.drawString(30, 143, "Charge energy and release for a burst of speed. The morph ball", T20, "small")
				v.drawString(30, 153, "smashes enemies or bounces off during the boost. Hold FIRE and", T20, "small")
				v.drawString(30, 163, "release to boost.(NORMALFIRE with beamswap on, or CUSTOM 1)", T20, "small")
		
				v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
				v.drawString(30, 96, "\x82"+"DAMAGE: 36", T20, "left")
				v.drawString(30, 106, "\x86"+"EFFECTS: 11+ KNOCKBACK", T20, "left")
			else
				v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
			end

	    elseif (p.ssmenusubpage == 7) // Spider-Ball Page

			v.drawString(193, 33, "Most commonly found in:", T20, "small")
			v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVATA0"))
			v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVIVA0"))
			if p.sam_spiderball
				v.drawScaled(76<<16, 72<<16, 130000, v.cachePatch("MPR9X0"))
				v.drawFill(24, 130, 272, 2, 128)
				v.drawFill(24, 90, 272, 2, 128)
				v.drawString(77, 18, "Spider", T20, "center")
				v.drawString(78, 28, "Ball", T20, "center")
				v.drawString(30, 143, "Tap Jump when near a wall to attach so long as the Spider Ball retains", T20, "small")
				v.drawString(30, 153, "charge. Moving consumes extra charge. Touch the ground for a recharge.", T20, "small")
				v.drawString(30, 163, "The boost ball can also propel you off the wall instantly recharged.", T20, "small")
		
				v.drawString(30, 96, "\x87"+"CHARGE DURATION: 3 seconds", T20, "left")
				v.drawString(30, 106, "\x86"+"CHARGE(STATIONARY): 18 seconds", T20, "left")
				v.drawString(30, 116, "\x86"+"REDUCES: NEGATIVE SLOPE MOMENTUM", T20, "left")
			else
				v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
			end

	    elseif (p.ssmenusubpage == 8) // Hi-Jump Page

			v.drawString(193, 33, "Most commonly found in:", T20, "small")
			v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVWWA0"))
			v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVSSA0"))
			if p.sam_highjump
				v.drawScaled(75<<16, 77<<16, 120000, v.cachePatch("SPBLA0"))
				v.drawFill(24, 130, 272, 2, 128)
				v.drawFill(24, 90, 272, 2, 128)
				v.drawString(78, 18, "High Jump+", T20, "center")
				v.drawString(77, 28, "Spring Ball", T20, "center")
				v.drawString(30, 143, "Your jumps reach new heights, and the morph ball can hop", T20, "small")
				v.drawString(30, 153, "with the spring ball. You can also shinespark in Morph Ball", T20, "small")
				v.drawString(30, 163, "if the speedbooster is obtained.(More info in Secret Data.)", T20, "small")
		
				v.drawString(30, 96, "\x87"+"JUMPHEIGHT INCREASE: +40%", T20, "left")
			else
				v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
			end

	    elseif (p.ssmenusubpage == 9) // Speedbooster Page

			v.drawString(193, 33, "Most commonly found in:", T20, "small")
			v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVSSA0"))
			v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVRIA0"))			
			if p.samspbs
				v.drawScaled(76<<16, 75<<16, FRACUNIT, v.cachePatch("SPBSA0"))
				v.drawFill(24, 130, 272, 2, 128)
				v.drawFill(24, 90, 272, 2, 128)
				v.drawString(78, 18, "Speed", T20, "center")
				v.drawString(77, 28, "Booster", T20, "center")
				v.drawString(30, 143, "Hold CUSTOM1 to sprint. Keep up your momentum uninterrupted", T20, "small")
				v.drawString(30, 153, "to activate the speedbooster and crash through enemies at", T20, "small")
				v.drawString(30, 163, "high speeds.(Can be made automatic in the Controls Menu.)", T20, "small")
		
				v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
				v.drawString(30, 96, "\x82"+"SHINESPARK DAMAGE: 95", T20, "left")
				v.drawString(30, 106, "\x86"+"SHINESPARK EFFECTS: 44+ KNOCKBACK", T20, "left")
			else
				v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
			end

	    elseif (p.ssmenusubpage == 10) // Space-Jump Page

			v.drawString(193, 33, "Most commonly found in:", T20, "small")
			v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVWWA0"))
			v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVARA0"))
			if p.sam_spacejump
			v.drawScaled(78<<16, 76<<16, 40355, v.cachePatch("SJMPA0"))
			v.drawFill(24, 130, 272, 2, 128)
			v.drawFill(24, 90, 272, 2, 128)
			v.drawString(78, 18, "Space", T20, "center")
			v.drawString(79, 28, "Jump", T20, "center")
			v.drawString(30, 143, "The Space Jump grants an extra jump in midair, boosting", T20, "small")
			v.drawString(30, 153, "aerial acceleration briefly while doing so. It also allows", T20, "small")
			v.drawString(30, 163, "instant recovery from flinching by pressing JUMP.", T20, "small")
	
			v.drawString(30, 96, "\x87"+"ACCELERATION BOOST: +250%", T20, "left")
			v.drawString(30, 106, "\x86"+"BOOST DURATION: 0.3 seconds", T20, "left")
			else
			v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
			end

	    elseif (p.ssmenusubpage == 11) // Charge Beam Page

			v.drawString(193, 33, "Most commonly found in:", T20, "small")
			v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVFOA0"))
			v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVPIA0"))
			if p.sam_chargebeam
			v.drawScaled(78<<16, 73<<16, 130000, v.cachePatch("CHBMA0"))
			v.drawFill(24, 130, 272, 2, 128)
			v.drawFill(24, 90, 272, 2, 128)
			v.drawString(78, 18, "Charge", T20, "center")
			v.drawString(79, 28, "Beam", T20, "center")
			v.drawString(30, 143, "Holding NORMALFIRE(or FIRE with beamswap) allows for charging", T20, "small")
			v.drawString(30, 153, "a superpowered shot with unique properties depending on your", T20, "small")
			v.drawString(30, 163, "currently equipped beam. Charging  draws in nearby pickups.", T20, "small")
	
			v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
			v.drawString(30, 96, "\x82"+"DAMAGE: 30", T20, "left")
			v.drawString(30, 106, "\x86"+"EFFECTS: 8+ PUSHBACK", T20, "left")
			v.drawString(30, 116, "\x87"+"EXPLOSIVE RADIUS: 275", T20, "left")
			else
			v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
			end

	    elseif (p.ssmenusubpage == 12) // Super Missile Combo

			v.drawString(193, 33, "Most commonly found in:", T20, "small")
			v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVFOA0"))
			v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVPIA0"))
			if p.sam_powerbeamcombo
			v.drawScaled(88<<16, 52<<16, FRACUNIT, v.cachePatch("WEAPPWBC"), nil, v.getColormap(nil, SKINCOLOR_POWERBEAM))
			v.drawScaled(78<<16, 73<<16, 130000, v.cachePatch("CHBMA0"))
			v.drawFill(24, 130, 272, 2, 128)
			v.drawFill(24, 90, 272, 2, 128)
			v.drawString(79, 18, "Super", T20, "center")
			v.drawString(78, 28, "Missile", T20, "center")
			v.drawString(30, 143, "Uses 10 missiles; 20 seconds beam cooldown.", T20, "small")
			v.drawString(30, 153, "Fires a Super Missile. To use beam combos, charge your beam,", T20, "small")
			v.drawString(30, 163, "then press FIRE.(or NORMALFIRE with swapfire enabled)", T20, "small")
	
			v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
			v.drawString(30, 96, "\x82"+"DAMAGE: 46", T20, "left")
			v.drawString(30, 106, "\x86"+"EFFECTS: 30+ KNOCKBACK", T20, "left")
			v.drawString(30, 116, "\x87"+"EXPLOSIVE RADIUS: 520", T20, "left")
			else
			v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
			end

	    elseif (p.ssmenusubpage == 13) // Spazer Beam Page

			v.drawString(193, 33, "Most commonly found in:", T20, "small")
			v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVELA0"))
			v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVPIA0"))
			if p.sam_spazerbeam
			v.drawScaled(78<<16, 78<<16, FRACUNIT, v.cachePatch("SPBMA0"))
			v.drawFill(24, 130, 272, 2, 128)
			v.drawFill(24, 90, 272, 2, 128)
			v.drawString(78, 18, "Spazer", T20, "center")
			v.drawString(79, 28, "Beam", T20, "center")
			v.drawString(30, 143, "The Spazer Beam has a wide spread, making it easier to hit foes.", T20, "small")
			v.drawString(30, 153, "It's  shots have a high pushback, and the charge shot explodes", T20, "small")
			v.drawString(30, 163, "into a deadly shockwave if interrupted before it can spread.", T20, "small")
	
			v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
			v.drawString(30, 96, "\x82"+"DAMAGE: 9 | CHRG: 40~20", T20, "left")
			v.drawString(30, 106, "\x86"+"FX: 5+ PUSHBACK | CHRG: 12+ PUSHBACK", T20, "left")
			v.drawString(30, 116, "\x87"+"SHOCKWAVE DAMAGE: "+"\x82"+"58", T20, "left")
			else
			v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
			end

	    elseif (p.ssmenusubpage == 14) // Force Crasher Combo

			v.drawString(193, 33, "Most commonly found in:", T20, "small")
			v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVELA0"))
			v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVPIA0"))
			if p.sam_spazerbeamcombo
				v.drawScaled(88<<16, 53<<16, FRACUNIT, v.cachePatch("WEAPSPBC"))
				v.drawScaled(78<<16, 78<<16, FRACUNIT, v.cachePatch("SPBMA0"))
				v.drawFill(24, 130, 272, 2, 128)
				v.drawFill(24, 90, 272, 2, 128)
				v.drawString(87, 18, "Force", T20, "center")
				v.drawString(86, 28, "Crasher", T20, "center")
				v.drawString(30, 143, "Uses 15 missiles; 25 seconds cooldown.", T20, "small")
				v.drawString(30, 153, "Fires a massive soundwave powerful enough to stop hurricanes, sending", T20, "small")
				v.drawString(30, 163, "nearby foes spinning wildly. Most effective in wide open areas.", T20, "small")
		
				v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
				v.drawString(30, 96, "\x82"+"DAMAGE: 64", T20, "left")
				v.drawString(30, 106, "\x86"+"EFFECT: CONSTANT KNOCKBACK", T20, "left")
			else
				v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
			end

	    elseif (p.ssmenusubpage == 15) // Wave Beam Page

			v.drawString(193, 33, "Most commonly found in:", T20, "small")
			v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVATA0"))
			v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVPIA0"))
			if p.sam_wavebeam
				v.drawScaled(78<<16, 78<<16, FRACUNIT, v.cachePatch("WVBMA0"))
				v.drawFill(24, 130, 272, 2, 128)
				v.drawFill(24, 90, 272, 2, 128)
				v.drawString(78, 18, "Wave", T20, "center")
				v.drawString(78, 28, "Beam", T20, "center")
				v.drawString(30, 143, "The Wave Beam stuns enemies and slows enemies it cannot stun.", T20, "small")
				v.drawString(30, 153, "Each duplex blast rebounds once, and while the sluggish charge shot", T20, "small")
				v.drawString(30, 163, "diffuses into weaker blasts on impact, it is powerful on a direct hit.", T20, "small")
		
				v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
				v.drawString(30, 96, "\x82"+"DAMAGE: 12 | CHRG: 46", T20, "left")
				v.drawString(30, 106, "\x86"+"EFFECTS: SLOW 40% | CHRG: SLOW 90%", T20, "left")
				v.drawString(30, 116, "\x87"+"DIFFUSED CHARGE SHOT DMG: "+"\x82"+"12", T20, "left")
			else
				v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
			end

	    elseif (p.ssmenusubpage == 16) // Waveguard Buffer

			v.drawString(193, 33, "Most commonly found in:", T20, "small")
			v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVATA0"))
			v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVPIA0"))
			if p.sam_wavebeamcombo
			v.drawScaled(88<<16, 53<<16, FRACUNIT, v.cachePatch("WEAPWVBC"), nil, v.getColormap(nil, SKINCOLOR_MAGENTA))
			v.drawScaled(78<<16, 78<<16, FRACUNIT, v.cachePatch("WVBMA0"))
			v.drawFill(24, 130, 272, 2, 128)
			v.drawFill(24, 90, 272, 2, 128)
			v.drawString(78, 18, "Waveguard", T20, "center")
			v.drawString(78, 28, " Buffer", T20, "center")
			v.drawString(30, 143, "Uses 15 missiles; 30 seconds cooldown after beam combo runs out.", T20, "small")
			v.drawString(30, 153, "Summons 4 charged Wave shots to circle around you. Can be fired off ", T20, "small")
			v.drawString(30, 163, "individually(NORMALFIRE) or used to fuel the devastating Death Ball.", T20, "small")
	
			v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
			v.drawString(30, 96, "\x82"+"DAMAGE: 50 | DEATHBALL 120", T20, "left")
			v.drawString(30, 106, "\x86"+"EFFECTS: 22+ PUSHBACK", T20, "left")
			v.drawString(30, 116, "\x87"+"DEATHBALL SHINESPARK DMG: "+"\x82"+"200", T20, "left")
			else
			v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
			end

	    elseif (p.ssmenusubpage == 17) // Ice Beam Page

			v.drawString(193, 33, "Most commonly found in:", T20, "small")
			v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVWWA0"))
			v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVPIA0"))
			if p.sam_icebeam
			v.drawScaled(78<<16, 78<<16, FRACUNIT, v.cachePatch("ICBMA0"))
			v.drawFill(24, 130, 272, 2, 128)
			v.drawFill(24, 90, 272, 2, 128)
			v.drawString(79, 18, "Ice", T20, "center")
			v.drawString(78, 28, "Beam", T20, "center")
			v.drawString(30, 143, "Whilst slow, the ice beam deals impressive damage in an explosive", T20, "small")
			v.drawString(30, 153, "radius. It can freeze foes into ice platforms on it's killing blow.", T20, "small")
			v.drawString(30, 163, "It's charge shot is affected by gravity and has heavy recoil.", T20, "small")
	
			v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
			v.drawString(30, 96, "\x82"+"DAMAGE: 11 | CHRG: 38", T20, "left")
			v.drawString(30, 106, "\x86"+"FX:5% SLOW&+2 PUSH|CHRG:+5 KNOCKBACK", T20, "left")
			v.drawString(30, 116, "\x87"+"EXPLOSION RADIUS: 138 | CHRG: 305", T20, "left")
			else
			v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
			end

	    elseif (p.ssmenusubpage == 18) // Blizzard Burst

			v.drawString(193, 33, "Most commonly found in:", T20, "small")
			v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVWWA0"))
			v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVPIA0"))
			if p.sam_icebeamcombo
				v.drawScaled(88<<16, 53<<16, FRACUNIT, v.cachePatch("WEAPICBC"), nil, v.getColormap(nil, SKINCOLOR_SKY))
				v.drawScaled(78<<16, 78<<16, FRACUNIT, v.cachePatch("ICBMA0"))
				v.drawFill(24, 130, 272, 2, 128)
				v.drawFill(24, 90, 272, 2, 128)
				v.drawString(78, 18, "Blizzard", T20, "center")
				v.drawString(79, 28, " Burst", T20, "center")
				v.drawString(30, 143, "Uses 15 missiles; 40 seconds cooldown.", T20, "small")
				v.drawString(30, 153, "Effective trapping blast that sticks around impact area, shredding all", T20, "small")
				v.drawString(30, 163, "who remain to pieces. Fire up into the sky to rain down cataclysmic hail.", T20, "small")
		
				v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
				v.drawString(30, 96, "\x82"+"DAMAGE: 49 | DIRECT: 56", T20, "left")
				v.drawString(30, 106, "\x86"+"EFFECTS: 6+ KNOCKBACK", T20, "left")
				v.drawString(30, 116, "\x87"+"EXPLOSION RADIUS: CONSTANT 370", T20, "left")
			else
				v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
			end

	    elseif (p.ssmenusubpage == 19) // Plasma Beam Page

		v.drawString(193, 33, "Most commonly found in:", T20, "small")
		v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVARA0"))
		v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVPIA0"))
		if p.sam_plasmabeam
		v.drawScaled(78<<16, 78<<16, 63355, v.cachePatch("PLBMA0"))
		v.drawFill(24, 130, 272, 2, 128)
		v.drawFill(24, 90, 272, 2, 128)
		v.drawString(78, 18, "Plasma", T20, "center")
		v.drawString(79, 28, "Beam", T20, "center")
		v.drawString(30, 143, "The most destructive beam of all, the Plasma Beam pierces through", T20, "small")
		v.drawString(30, 153, "enemies unopposed. What it lacks in explosive radius' and range", T20, "small")
		v.drawString(30, 163, "has to be compensated for with proper aim and positioning.", T20, "small")

		v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
		v.drawString(30, 96, "\x82"+"DAMAGE: 14 | CHRG: 54", T20, "left")
		v.drawString(30, 106, "\x86"+"FX:+9 PUSHBACK | CHRG:+20 KNOCKBACK ", T20, "left")
		v.drawString(30, 116, "\x87"+"DMG AFTER PIERCING: Halved", T20, "left")
		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 20) // Gattling Vortex

		v.drawString(193, 33, "Most commonly found in:", T20, "small")
		v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVARA0"))
		v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVPIA0"))
		if p.sam_plasmabeamcombo
		v.drawScaled(88<<16, 53<<16, FRACUNIT, v.cachePatch("WEAPPLBC"), nil, v.getColormap(nil, SKINCOLOR_PINK))
		v.drawScaled(78<<16, 78<<16, 63355, v.cachePatch("PLBMA0"))
		v.drawFill(24, 130, 272, 2, 128)
		v.drawFill(24, 90, 272, 2, 128)
		v.drawString(78, 18, "Gattling", T20, "center")
		v.drawString(79, 28, "Vortex", T20, "center")
		v.drawString(30, 143, "Uses 5 missiles per second; 5 to 50 seconds cooldown.", T20, "small")
		v.drawString(30, 153, "Rapidly fires superheated plasma, leaving flames hot enough to", T20, "small")
		v.drawString(30, 163, "melt the most resilient armor. Tap FIRE to cancel it early.", T20, "small")

		v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
		v.drawString(30, 96, "\x82"+"DAMAGE: 16", T20, "left")
		v.drawString(30, 106, "\x86"+"EFFECTS:+10 PUSHBACK", T20, "left")
		v.drawString(30, 116, "\x87"+"FLAME DAMAGE: "+"\x82"+"4(CONSTANT)", T20, "left")
		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 21) // Varia Suit Page

		v.drawString(193, 33, "Most commonly found in:", T20, "small")
		v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVFOA0"))
		v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVELA0"))
		if p.sam_gravitysuit
		v.drawScaled(78<<16, 68<<16, 160000, v.cachePatch("GVSTG0"))
		v.drawFill(24, 130, 272, 2, 128)
		v.drawFill(24, 90, 272, 2, 128)
		v.drawString(78, 18, "Varia", T20, "center")
		v.drawString(78, 28, "Suit", T20, "center")
		v.drawString(30, 143, "Originally shown on SR388, the Varia Suit increases defense", T20, "small")
		v.drawString(30, 153, "against all attacks, grants immunity to freezing temperatures", T20, "small")
		v.drawString(30, 163, "and toxic sludge, as well as halves the damage taken from lava.", T20, "small")

		v.drawString(30, 106, "\x82"+"DEFENSE: +12%", T20, "left")
		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 22) // Gravity Suit Page

		v.drawString(193, 33, "Most commonly found in:", T20, "small")
		v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVELA0"))
		v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVIVA0"))
		if p.sam_gravitysuit and (p.sam_gravitysuit == 2)
		v.drawScaled(78<<16, 76<<16, 150000, v.cachePatch("GVSTA0"))
		v.drawFill(24, 130, 272, 2, 128)
		v.drawFill(24, 90, 272, 2, 128)
		v.drawString(78, 18, "Gravity", T20, "center")
		v.drawString(78, 28, " Suit", T20, "center")
		v.drawString(30, 143, "The Gravity Suit is unchallenged by liquids or lava, allowing", T20, "small")
		v.drawString(30, 153, "use of all abilities while submerged. Defense is boosted,", T20, "small")
		v.drawString(30, 163, "and you are immune to auto-flamethrowers and rampant fire.", T20, "small")

		v.drawString(30, 106, "\x82"+"DEFENSE: +30%", T20, "left")
		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 23) // Screw Attack Page

		v.drawString(193, 33, "Most commonly found in:", T20, "small")
		v.drawScaled(218<<16, 78<<16, FRACUNIT, v.cachePatch("TVARA0"))
		v.drawScaled(258<<16, 78<<16, FRACUNIT, v.cachePatch("TVIVA0"))
		if p.sam_screwattack
		v.drawScaled(78<<16, 76<<16, 150000, v.cachePatch("GVSTD0"))
		v.drawFill(24, 130, 272, 2, 128)
		v.drawFill(24, 90, 272, 2, 128)
		v.drawString(79, 18, "Screw", T20, "center")
		v.drawString(78, 28, "Attack", T20, "center")
		v.drawString(30, 143, "Double tap CUSTOM 1 or JUMP in midair to launch a Screw Attack.", T20, "small")
		v.drawString(30, 153, "Can be aimed up or down with jump and spin. Walljumping", T20, "small")
		v.drawString(30, 163, "in this state is unwieldy but incredibly powerful.", T20, "small")

		v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
		v.drawString(30, 96, "\x82"+"DAMAGE: 45 | DIRECT: 75", T20, "left")
		v.drawString(30, 106, "\x86"+"EFFECTS: Invincibility&Reflect", T20, "left")
		v.drawString(30, 116, "\x87"+"IMPACT RADIUS: 265", T20, "left")
		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 24) // Energy Tank Page

		v.drawString(193, 33, "Exclusively found in:", T20, "small")
		v.drawScaled(235<<16, 78<<16, FRACUNIT, v.cachePatch("TV1UA0"))
		if p.sam_energytanksmax

		v.drawString(30, 106, "\x86"+"EFFECTS: Max Energy +50", T20, "left")

		v.drawScaled(78<<16, 76<<16, 55355, v.cachePatch("ETNKA0"))
		v.drawFill(24, 130, 272, 2, 128)
		v.drawFill(24, 90, 272, 2, 128)
		v.drawString(78, 18, "Energy", T20, "center")
		v.drawString(79, 28, "Tank", T20, "center")
		v.drawString(30, 143, "Permanently increases maximum energy capacity by 50 units.", T20, "small")
		v.drawString(30, 153, "You can hold up to 12 extra energy tanks at a time.", T20, "small")
		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 25) // Hyper Beam Page

		if p.sam_hyperbeam
		v.drawScaled(138<<16, 68<<16, FRACUNIT, v.cachePatch("CEMGA0"))
		v.drawScaled(158<<16, 68<<16, FRACUNIT, v.cachePatch("CEMGB0"))
		v.drawScaled(178<<16, 68<<16, FRACUNIT, v.cachePatch("CEMGC0"))
		v.drawScaled(198<<16, 68<<16, FRACUNIT, v.cachePatch("CEMGD0"))
		v.drawScaled(218<<16, 68<<16, FRACUNIT, v.cachePatch("CEMGE0"))
		v.drawScaled(238<<16, 68<<16, FRACUNIT, v.cachePatch("CEMGF0"))
		v.drawScaled(258<<16, 68<<16, FRACUNIT, v.cachePatch("CEMGG0"))
		v.drawScaled(53<<16, 51<<16, FRACUNIT, v.cachePatch("WEAPHYBM"), nil, v.getColormap(nil, SKINCOLOR_CLOUDY))

		v.drawScaled(93<<16+30000, 50<<16, FRACUNIT, v.cachePatch("NRGAB0"), nil, v.getColormap(nil, SKINCOLOR_YELLOW))
		v.drawScaled(93<<16, 63<<16, FRACUNIT, v.cachePatch("NRGBC0"), nil, v.getColormap(nil, SKINCOLOR_YELLOW))
		v.drawScaled(93<<16, 78<<16, FRACUNIT, v.cachePatch("NRGDB0"), nil, v.getColormap(nil, SKINCOLOR_YELLOW))
		v.drawFill(24, 130, 272, 2, 128)
		v.drawFill(24, 90, 272, 2, 128)
		v.drawString(79, 18, "Hyper", T20, "center")
		v.drawString(78, 28, "Beam", T20, "center")
		v.drawString(30, 143, "The Ultimate Weapon. Overcharge energy past it's maximum limit", T20, "small")
		v.drawString(30, 153, "to use it as ammo for the Hyper Beam. Firing without overcharge", T20, "small")
		v.drawString(30, 163, "is possible in Match/CTF, but will damage your Power Suit.", T20, "small")

		v.drawString(255, 94, "\x85"+"Match Info", T20, "small")
		v.drawString(30, 96, "\x82"+"DAMAGE: 80", T20, "left")
		v.drawString(30, 106, "\x86"+"EFFECTS: CHAINBOMB +50 KNOCKBACK", T20, "left")
		v.drawString(30, 116, "\x87"+"EXPLOSION RADIUS: 550", T20, "left")
		else
		v.drawScaled(100<<16, 68<<16, FRACUNIT, v.cachePatch("CEMGA0"))
		v.drawScaled(120<<16, 68<<16, FRACUNIT, v.cachePatch("CEMGB0"))
		v.drawScaled(140<<16, 68<<16, FRACUNIT, v.cachePatch("CEMGC0"))
		v.drawScaled(160<<16, 68<<16, FRACUNIT, v.cachePatch("CEMGD0"))
		v.drawScaled(180<<16, 68<<16, FRACUNIT, v.cachePatch("CEMGE0"))
		v.drawScaled(200<<16, 68<<16, FRACUNIT, v.cachePatch("CEMGF0"))
		v.drawScaled(220<<16, 68<<16, FRACUNIT, v.cachePatch("CEMGG0"))
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 26) // Fully Powered Suit Page

		if p.sam_fullypoweredsuit
		v.drawScaled(65<<16, 46<<16, FRACUNIT, v.cachePatch("SAMSFACE"), nil, v.getColormap(nil, SKINCOLOR_GRAVITYSUIT))
		v.drawFill(24, 130, 272, 2, 128)
		v.drawFill(24, 90, 272, 2, 128)
		v.drawString(78, 18, "Full Power", T20, "center")
		v.drawString(78, 28, "  Suit", T20, "center")
		v.drawString(30, 143, "Attained by 100% item collection. The Fully Powered Suit halves", T20, "small")
		v.drawString(30, 153, "ammo cost for the Hyper Beam, negates Beam Combo cooldown,", T20, "small")
		v.drawString(30, 163, "and increases the ship's emergency refill capacity.", T20, "small")
		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end
	    end

		//MENU 3 CONTROLS HUD DISPLAY!

		elseif (p.ssmenusub == 3)
			v.drawScaled(162<<16, 26<<16, 80355, v.cachePatch("SSMENU1B"), nil, v.getColormap(nil, SKINCOLOR_AZURE))
			v.drawFill(24, 164, 272, 1, 128)
			v.drawFill(24, 186, 272, 1, 128)
			v.drawFill(225, 35, 2, 130, 128)
			v.drawFill(24, 35, 272, 2, 128)

		    	if (p.ssmenusubpage >= 500)

			v.drawFill(49, 45, 75, 11, 174)
			v.drawFill(53, 53, 66, 1, 172)
			v.drawString(53, 48, "Power Suit: ", T50, "small")
			v.drawScaled(142<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(161<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(133<<16, 45<<16, 35355, v.cachePatch(LARROW))
			v.drawScaled(179<<16, 45<<16, 35355, v.cachePatch(RARROW))
				if p.customsuitc1
					if p.customsuitc1 < 10
					v.drawString(158, 46, p.customsuitc1, T20, "left")
					elseif p.customsuitc1 < 100
					v.drawString(154, 46, p.customsuitc1, T20, "left")
					else
					v.drawString(151, 46, p.customsuitc1, T20, "left")
					end
				end

			v.drawFill(49, 75, 75, 11, 174)
			v.drawFill(53, 83, 66, 1, 172)
			v.drawString(53, 78, "Varia Suit: ", T50, "small")
			v.drawScaled(142<<16, 75<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(161<<16, 75<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(133<<16, 75<<16, 35355, v.cachePatch(LARROW))
			v.drawScaled(179<<16, 75<<16, 35355, v.cachePatch(RARROW))
				if p.customsuitc2
					if p.customsuitc2 < 10
					v.drawString(158, 76, p.customsuitc2, T20, "left")
					else
					v.drawString(154, 76, p.customsuitc2, T20, "left")
					end
				end

			v.drawFill(49, 105, 75, 11, 174)
			v.drawFill(53, 113, 66, 1, 172)
			v.drawString(53, 108, "Gravity Suit: ", T50, "small")
			v.drawScaled(142<<16, 105<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(161<<16, 105<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(133<<16, 105<<16, 35355, v.cachePatch(LARROW))
			v.drawScaled(179<<16, 105<<16, 35355, v.cachePatch(RARROW))
				if p.customsuitc3
					if p.customsuitc3 < 10
					v.drawString(158, 106, p.customsuitc3, T20, "left")
					else
					v.drawString(154, 106, p.customsuitc3, T20, "left")
					end
				end

			v.drawFill(85, 145, 75, 11, 63)
			v.drawFill(89, 153, 66, 1, 57)
			v.drawString(90, 148, "Done! ", T50, "small")

			v.drawFill(242, 45, 40, 11, 15)
			if p.customsuitc1
			v.drawScaled(202<<16, 63<<16, 22355, v.getSprite2Patch("basesamus", SPR2_FALL, false, A, ANGLE_180), nil, v.getColormap(nil, p.customsuitc1))
			v.drawString(259, 48, p.customsuitc1, T20, "small")
			end
			v.drawFill(242, 75, 40, 11, 15)
			if p.customsuitc2
			
			v.drawScaled(202<<16, 90<<16, 22355, (v.getSprite2Patch("samus", SPR2_STND, false, A, ANGLE_180)), nil, v.getColormap(nil, p.customsuitc2))
			v.drawScaled(202<<16, 90<<16, 22355, (v.getSprite2Patch("samus", SPR2_STND, true, A, ANGLE_180)), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(259, 78, p.customsuitc2, T20, "small")
			end
			v.drawFill(242, 105, 40, 11, 15)
			if p.customsuitc3
			v.drawScaled(202<<16, 121<<16, 24055, v.cachePatch("SAMUA1"), nil, v.getColormap(nil, p.customsuitc3))
			if p.samvisorcolor
			v.drawScaled(202<<16, 121<<16, 24055, v.cachePatch("YGTMA1"), nil, v.getColormap(nil, p.samvisorcolor))
			else
			v.drawScaled(202<<16, 121<<16, 24055, v.cachePatch("YGTMA1"), nil, v.getColormap(nil, SKINCOLOR_SKY))
			end
			v.drawString(259, 108, p.customsuitc3, T20, "small")
			end

				if (p.ssmenusubpage == 500) //Power Suit
				v.drawFill(49, 45, 75, 11, 106)
				v.drawFill(53, 53, 66, 1, 0)
				v.drawString(53, 48, "Power Suit: ", T10, "small")
				v.drawString(30, 170, "Set a personal custom color for the Power Suit.", T20, "small")
				v.drawString(30, 178, "Keep in mind it will only change colors once per switch.", T20, "small")
				elseif (p.ssmenusubpage == 501) //Varia Suit
				v.drawFill(49, 75, 75, 11, 106)
				v.drawFill(53, 83, 66, 1, 0)
				v.drawString(53, 78, "Varia Suit: ", T10, "small")
				v.drawString(30, 170, "Set a personal custom color for the Varia Suit.", T20, "small")
				v.drawString(30, 178, "Keep in mind it will only change colors once per switch.", T20, "small")
				elseif (p.ssmenusubpage == 502) //Gravity Suit
				v.drawFill(49, 105, 75, 11, 106)
				v.drawFill(53, 113, 66, 1, 0)
				v.drawString(53, 108, "Gravity Suit: ", T10, "small")
				v.drawString(30, 170, "Set a personal custom color for the Gravity Suit.", T20, "small")
				v.drawString(30, 178, "Keep in mind it will only change colors once per switch.", T20, "small")
				elseif (p.ssmenusubpage == 503) //Done!
				v.drawFill(85, 145, 75, 11, 60)
				v.drawFill(89, 153, 66, 1, 52)
				v.drawString(90, 148, "Done! ", T10, "small")
				end

		//My god, there's a page 5.

		    elseif (p.ssmenusubpage > 20)	
			v.drawString(30, 40, "5", T20, "left")	
			
			v.drawFill(59, 45, 75, 11, 174)
			v.drawFill(63, 53, 66, 1, 172)
			v.drawString(63, 48, "Screen Tilt: ", T50, "small")
			v.drawScaled(152<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(171<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(143<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
			v.drawScaled(166<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)			
			v.drawScaled(189<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
			
			v.drawFill(59, 70, 75, 11, 174)
			v.drawFill(63, 78, 66, 1, 172)
			v.drawString(63, 73, "\x82"+"Initial Setup: ", T50, "small")
			v.drawScaled(166<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)			
			
			
		//On page 4 now.				
		    elseif (p.ssmenusubpage > 15)
			v.drawString(30, 40, "4", T20, "left")
			v.drawScaled(27<<16, 145<<16, 45355, v.cachePatch(DARROW), T20)
			
			v.drawFill(59, 45, 75, 11, 174)
			v.drawFill(63, 53, 66, 1, 172)
			v.drawString(63, 48, "Visor Edges: ", T50, "small")
			v.drawScaled(152<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(171<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(143<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
			v.drawScaled(189<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

			v.drawFill(59, 70, 75, 11, 174)
			v.drawFill(63, 78, 66, 1, 172)
			v.drawString(63, 73, "Lock-On: ", T50, "small")
			v.drawScaled(152<<16, 70<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(171<<16, 70<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(143<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
			v.drawScaled(166<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)			
			v.drawScaled(189<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

			v.drawFill(59, 95, 75, 11, 174)
			v.drawFill(63, 103, 66, 1, 172)
			v.drawString(63, 98, "Lock-On Toggle: ", T50, "small")			
			v.drawScaled(152<<16, 95<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(171<<16, 95<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(143<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
			v.drawScaled(189<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

			v.drawFill(59, 120, 75, 11, 174)
			v.drawFill(63, 128, 66, 1, 172)
			v.drawString(63, 123, "Monitor Lock: ", T50, "small")
			v.drawScaled(152<<16, 120<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(171<<16, 120<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(143<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
			v.drawScaled(189<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

			v.drawFill(59, 145, 75, 11, 174)
			v.drawFill(63, 153, 66, 1, 172)
			v.drawString(63, 148, "Auto-Scan: ", T50, "small")
			v.drawScaled(152<<16, 145<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(171<<16, 145<<16, 80355, v.cachePatch("SAMOPBR"))
			v.drawScaled(143<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
			v.drawScaled(166<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)				
			v.drawScaled(189<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

			v.drawFill(242, 45, 40, 11, 15)
			if p.sam_visorhidden
			v.drawString(256, 48, "OFF", T20, "small")
			else
			v.drawString(258, 48, "ON", T20, "small")
			end
			
			v.drawFill(242, 70, 40, 11, 15)
			if p.sam_lockonpower
				if p.sam_lockonpower == 2
				v.drawString(257, 73, "\x84"+"C3", T20, "small")
				else
				v.drawString(252, 73, "\x82"+"C1+"+"\x84"+"C3", T20, "small")
				end
			else
			v.drawString(256, 73, "OFF", T20, "small")
			end
			
			v.drawFill(242, 95, 40, 11, 15)
			if p.sam_lockontoggle
			v.drawString(249, 98, "TOGGLE", T20, "small")
			else
			v.drawString(254, 98, "HOLD", T20, "small")
			end	
			
			v.drawFill(242, 120, 40, 11, 15)			
			if p.sam_lockonnomon
			v.drawString(256, 123, "OFF", T20, "small")
			else
			v.drawString(258, 123, "ON", T20, "small")
			end
			
			v.drawFill(242, 145, 40, 11, 15)									
			if p.sam_noautoscan
				if p.sam_noautoscan == 1
				v.drawString(256, 148, "\x82"+"OFF", T20, "small")
				else
				v.drawString(256, 148, "\x87"+"OFF", T20, "small")
				end
			else
			v.drawString(258, 148, "\x83"+"ON", T20, "small")
			end

		//On page 3 now.

	    elseif (p.ssmenusubpage > 10)
		v.drawString(30, 40, "3", T20, "left")
		v.drawScaled(27<<16, 145<<16, 45355, v.cachePatch(DARROW), T20)			

		v.drawFill(59, 45, 75, 11, 174)
		v.drawFill(63, 53, 66, 1, 172)
		v.drawString(63, 48, "Morph Interaction: ", T50, "small")
		v.drawScaled(152<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(59, 70, 75, 11, 174)
		v.drawFill(63, 78, 66, 1, 172)
		v.drawString(63, 73, "Object Skins: ", T50, "small")
		v.drawScaled(152<<16, 70<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 70<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(59, 95, 75, 11, 174)
		v.drawFill(63, 103, 66, 1, 172)
		v.drawString(63, 98, "Token Style: ", T50, "small")
		v.drawScaled(152<<16, 95<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 95<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(166<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(59, 120, 75, 11, 174)
		v.drawFill(63, 128, 66, 1, 172)
		v.drawString(63, 123, "Coop Monitors: ", T50, "small")
		v.drawScaled(152<<16, 120<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 120<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(166<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		
		v.drawFill(59, 145, 75, 11, 174)
		v.drawFill(63, 153, 66, 1, 172)
		v.drawString(63, 148, "World Events: ", T50, "small")
		v.drawScaled(152<<16, 145<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 145<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(242, 45, 40, 11, 15)
		if p.morphcoop
		v.drawString(256, 48, "OFF", T20, "small")
		else
		v.drawString(258, 48, "ON", T20, "small")
		end

		v.drawFill(242, 70, 40, 11, 15)
		if METROIDSKINS == true
			v.drawString(249, 73, "METROID", T20, "small")
		else
			v.drawString(254, 73, "SRB2", T20, "small")
		end

		v.drawFill(242, 95, 40, 11, 15)
		if not p.tokensrb2style
		v.drawString(244, 98, "No-Damage", T20, "small")
		elseif p.tokensrb2style and p.tokensrb2style == 1
		v.drawString(249, 98, "ND-All", T20, "small")
		else
		v.drawString(246, 98, "Original", T20, "small")
		end

		v.drawFill(242, 120, 40, 11, 15)
		if p.coopboxrespawn and (p.coopboxrespawn > 1)
		v.drawString(257, 123, "RPP", T20, "small")
		elseif p.coopboxrespawn
		v.drawString(247, 123, "Respawn", T20, "small")
		else
		v.drawString(243, 123, "No Respawn", T20, "small")
		end
		
		v.drawFill(242, 145, 40, 11, 15)
		if SAMUSCAMPAIGN == false
			v.drawString(256, 148, "OFF", T20, "small")
		else
			v.drawString(258, 148, "ON", T20, "small")
		end


	//Page 2

	    elseif (p.ssmenusubpage > 5)
		v.drawString(30, 40, "2", T20, "left")
		v.drawScaled(27<<16, 145<<16, 45355, v.cachePatch(DARROW), T20)

		v.drawFill(59, 45, 75, 11, 174)
		v.drawFill(63, 53, 66, 1, 172)
		v.drawString(63, 48, "Spawn Gunship: ", T50, "small")
		v.drawScaled(152<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(59, 70, 75, 11, 174)
		v.drawFill(63, 78, 66, 1, 172)
		v.drawString(63, 73, "Netgame Saves: ", T50, "small")
		v.drawScaled(152<<16, 70<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 70<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(59, 95, 75, 11, 174)
		v.drawFill(63, 103, 66, 1, 172)
		v.drawString(63, 98, "Weapon Scroll Swap: ", T50, "small")			
		v.drawScaled(152<<16, 95<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 95<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(59, 120, 75, 11, 174)
		v.drawFill(63, 128, 66, 1, 172)
		v.drawString(63, 123, "Tutorials: ", T50, "small")
		v.drawScaled(152<<16, 120<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 120<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(59, 145, 75, 11, 174)
		v.drawFill(63, 153, 66, 1, 172)
		v.drawString(63, 148, "Boss netweapon: ", T50, "small")
		v.drawScaled(152<<16, 145<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 145<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)



	//Still on page 2

		v.drawFill(242, 45, 40, 11, 15)
		if p.nogunshipspawn
		v.drawString(256, 48, "OFF", T20, "small")
		else
		v.drawString(258, 48, "ON", T20, "small")
		end

		v.drawFill(242, 70, 40, 11, 15)
		if SAMUSNETSAVES == false
			v.drawString(252, 73, "FRESH", T20, "small")
		else
			v.drawString(255, 73, "ALL", T20, "small")
		end

		v.drawFill(242, 95, 40, 11, 15)
		if not p.sam_scrollswap
			v.drawString(256, 98, "OFF", T20, "small")
		else
			v.drawString(258, 98, "ON", T20, "small")
		end

		v.drawFill(242, 120, 40, 11, 15)
		if p.nosamustutorials
			v.drawString(256, 123, "OFF", T20, "small")
		else
			v.drawString(258, 123, "ON", T20, "small")
		end

		v.drawFill(242, 145, 40, 11, 15)
		if not p.hypernetgo
			v.drawString(256, 148, "OFF", T20, "small")
		else
			v.drawString(258, 148, "ON", T20, "small")
		end

	   else

	//And on page 1...

		v.drawFill(242, 45, 40, 11, 15)
		if p.autospeedbooster
		v.drawString(258, 48, "ON", T20, "small")
		else
		v.drawString(256, 48, "OFF", T20, "small")
		end

		v.drawFill(242, 70, 40, 11, 15)
		if p.swapfire
		v.drawString(258, 73, "ON", T20, "small")
		else
		v.drawString(256, 73, "OFF", T20, "small")
		end

		v.drawFill(242, 95, 40, 11, 15)
		if p.customsuitc1 and p.customsuitc2 and p.customsuitc3
			v.drawString(250, 98, "Custom", T20, "small")
		else
			v.drawString(250, 98, "Steady", T20, "small")
		end

		v.drawFill(242, 120, 40, 11, 15)
		if SAMUSDIFFICULTY != 0
			if SAMUSDIFFICULTY == 2
				v.drawString(249, 123, "\x89"+"Fusion", T20, "small")
			else
				v.drawString(243, 123, "\x88"+"Hyper Mode", T20, "small")
			end
		else 
			v.drawString(244, 123, "Zero Mode", T20, "small")
		end

		v.drawFill(242, 145, 40, 11, 15)
		if p.samvisorcolor
			local NUMLENGTH = (p.samvisorcolor<10) and -1 or (p.samvisorcolor > 99) and 1 or 0
			local COLORNAME = R_GetNameByColor(p.samvisorcolor)
			if type(COLORNAME) == "string"
				local LENGTH = string.len(COLORNAME)
				v.drawString(257-LENGTH, 146, COLORNAME, T30, "small")
				v.drawString(259-NUMLENGTH, 150, p.samvisorcolor, T20, "small")
			else
				v.drawString(259-NUMLENGTH, 148, p.samvisorcolor, T20, "small")
			end
		end

		v.drawFill(59, 45, 75, 11, 174)
		v.drawFill(63, 53, 66, 1, 172)
		v.drawString(63, 48, "AutoSpeedBooster: ", T50, "small")
		v.drawScaled(152<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(59, 70, 75, 11, 174)
		v.drawFill(63, 78, 66, 1, 172)
		v.drawString(63, 73, "BeamSwap: ", T50, "small")
		v.drawScaled(152<<16, 70<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 70<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(59, 95, 75, 11, 174)
		v.drawFill(63, 103, 66, 1, 172)
		v.drawString(63, 98, "Suit Colors: ", T50, "small")
		v.drawScaled(152<<16, 95<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 95<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(59, 120, 75, 11, 69)
		v.drawFill(63, 128, 66, 1, 67)
		v.drawString(63, 123, "Difficulty: ", T50, "small")
		v.drawScaled(152<<16, 120<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 120<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(166<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(59, 145, 75, 11, 174)
		v.drawFill(63, 153, 66, 1, 172)
		v.drawString(63, 148, "Gravity Lights: ", T50, "small")
		v.drawScaled(152<<16, 145<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 145<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 145<<16, 35355, v.cachePatch(LARROW))
		v.drawScaled(189<<16, 145<<16, 35355, v.cachePatch(RARROW))

		if p.samvisorcolor
			local NUMLENGTH = (p.samvisorcolor<10) and 3 or (p.samvisorcolor > 99) and -3 or 0
			v.drawString(165+NUMLENGTH, 146, p.samvisorcolor, T20, "left") --number of color.
			v.drawScaled(208<<16, 146<<16, 61355, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, p.samvisorcolor)) --color preview
		end


		v.drawString(30, 40, "1", T20, "left")
		v.drawScaled(27<<16, 145<<16, 45355, v.cachePatch(DARROW), T20)
	    end

	//horizontal x, vertical y, length, height, color

    	if (p.ssmenusubpage == 1) //AutoSpeedBooster
			v.drawFill(59, 45, 75, 11, 106)
			v.drawFill(63, 53, 66, 1, 0)
			v.drawString(63, 48, "AutoSpeedBooster: ", T10, "small")
	
			if not p.ssmenudrop
				v.drawScaled(143<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
				v.drawString(30, 170, "\x83"+"ON:"+"\x80"+" The SpeedBooster will be active at all times if obtained,", T20, "small")
				v.drawString(30, 178, "regardless of CUSTOM 1 input.", T20, "small")
			else
				v.drawString(30, 170, "\x85"+"OFF(Default):"+"\x80"+" Hold CUSTOM1 to activate the speedbooster when obtained.", T20, "small")
				v.drawString(30, 178, "Letting go off CUSTOM1 will revert you back to your original speed.", T20, "small")
				v.drawScaled(189<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			end

    	elseif (p.ssmenusubpage == 2) //BeamSwap
			v.drawFill(59, 70, 75, 11, 106)
			v.drawFill(63, 78, 66, 1, 0)
			v.drawString(63, 73, "BeamSwap: ", T10, "small")

			if not p.ssmenudrop
				v.drawScaled(143<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
				v.drawString(30, 170, "\x83"+"ON:"+"\x80"+" FIRE and NORMALFIRE button functions will be swapped.", T20, "small")
				v.drawString(30, 178, "Shoot missiles with NORMALFIRE, and beams with FIRE!", T20, "small")
			else
				v.drawString(30, 170, "\x85"+"OFF(Default):"+"\x80"+" FIRE and NORMALFIRE button functions won't be swapped.", T20, "small")
				v.drawString(30, 178, "Shoot beams with NORMALFIRE, and missiles with FIRE!", T20, "small")
				v.drawScaled(189<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			end

    	elseif (p.ssmenusubpage == 3) //Suit Colors
			v.drawFill(59, 95, 75, 11, 106)
			v.drawFill(63, 103, 66, 1, 0)
			v.drawString(63, 98, "Suit Colors: ", T10, "small")
	
			if not p.ssmenudrop
			v.drawScaled(143<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmv)
			v.drawString(30, 170, "\x83"+"Custom:"+"\x80"+" Select this to pick custom colors for each suit upgrade. Your", T20, "small")
			v.drawString(30, 178, "color will change to these upon powering up. Default in single player. ", T20, "small")
			else
			v.drawScaled(189<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x82"+"Steady:"+"\x80"+" Whatever color you pick you will stay at regardless", T20, "small")
			v.drawString(30, 178, "of which suit upgrade is obtained. Default setting in netgames.", T20, "small")
			end

    	elseif (p.ssmenusubpage == 4) //Difficulty
			v.drawFill(59, 120, 75, 11, 65)
			v.drawFill(63, 128, 66, 1, 0)
			
			v.drawString(63, 123, "Difficulty: ", T10, "small")
			v.drawString(50, 193, "\x85"+"Warning:"+"\x81"+" Stage will restart! Achievements will lock for this run!", nil, "small")	
			if not p.ssmenudrop
			v.drawScaled(143<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x83"+"Zero Mission:"+"\x80"+" Bosses are faster and gain countermeasures.", T20, "small")
			v.drawString(30, 178, "Normal enemies have weaknesses/resistances relevant only to Samus.", T20, "small")
			elseif p.ssmenudrop == 1
			v.drawScaled(166<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x88"+"Hyper Mode:"+"\x80"+" Enemies are faster, tougher and gain unique extra", T20, "small")
			v.drawString(30, 178, "abilities. Custom bosses are tougher. For experienced hunters!", T20, "small")
			else
			v.drawScaled(189<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x89"+"Fusion:"+"\x82"+" The ultimate challenge!\x80 Use 2x ammo. Tanks grant no ammo/health.", T20, "small")
			v.drawString(30, 178, "Decreased defense and recovery potential. Foes are even more resistant.", T20, "small")
			end

    	elseif (p.ssmenusubpage == 5) //Gravity Lights

			v.drawFill(59, 145, 75, 11, 106)
			v.drawFill(63, 153, 66, 1, 0)
			v.drawString(63, 148, "Gravity Lights: ", T10, "small")
			v.drawString(30, 170, "Set a personal custom color for the Gravity Suit's lights.", T20, "small")
			v.drawString(30, 178, "Default is SKY. You can pick any color but emerald.", T20, "small")

    	elseif (p.ssmenusubpage == 6) //Gunship Spawn
			v.drawFill(59, 45, 75, 11, 106)
			v.drawFill(63, 53, 66, 1, 0)
			v.drawString(63, 48, "Spawn Gunship: ", T10, "small")

			if not p.ssmenudrop
			v.drawScaled(143<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x83"+"ON(Default):"+"\x80"+" Samus' gunship spawns along with the players,", T20, "small")
			v.drawString(30, 178, "allowing access to information and various options for players.", T20, "small")
			else
			v.drawScaled(189<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x85"+"OFF:"+"\x80"+" Samus' gunship won't spawn at all.\x81 Highly discouraged!", T20, "small")
			v.drawString(30, 178, "To turn this back on, use the console command: \x82SPAWNGUNSHIP", T20, "small")
			end

    	elseif (p.ssmenusubpage == 7) //Starter Kit
		v.drawFill(59, 70, 75, 11, 106)
		v.drawFill(63, 78, 66, 1, 0)
		v.drawString(63, 73, "Netgame Saves: ", T10, "small")

		if not p.ssmenudrop
		v.drawScaled(143<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x82"+"Fresh(Default):"+"\x80"+" Joiners must play with either no save files", T20, "small")
		v.drawString(30, 178, "or start a fresh one upon joining this server. ", T20, "small")
		else
		v.drawScaled(189<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x83"+"All saves:"+"\x80"+" Joiners can use any of their pre-existing", T20, "small")
		v.drawString(30, 178, "saves files in netgames, even if they were made elsewhere.", T20, "small")
		end

    	elseif (p.ssmenusubpage == 8) //Weapon Scrollswap
		v.drawFill(59, 95, 75, 11, 106)
		v.drawFill(63, 103, 66, 1, 0)
		v.drawString(63, 98, "Weapon Scroll Swap: ", T10, "small")

		if not p.ssmenudrop
		v.drawScaled(143<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x83"+"ON:"+"\x80"+" Weapon Previous and Weapon Next buttons", T20, "small")
		v.drawString(30, 178, "are reversed for switching beams. ", T20, "small")
		elseif p.ssmenudrop 
		v.drawScaled(189<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x84"+"OFF:"+"\x80"+" Weapon Previous and Weapon Next buttons", T20, "small")
		v.drawString(30, 178, "work exactly as advertised.", T20, "small")
		end

    	elseif (p.ssmenusubpage == 9) //Turn off Tutorials

		v.drawFill(59, 120, 75, 11, 106)
		v.drawFill(63, 128, 66, 1, 0)
		v.drawString(63, 123, "Tutorials: ", T10, "small")

		if not p.ssmenudrop
		v.drawScaled(143<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x83"+"ON(Default):"+"\x80"+" Prompts will appear when you've obtained new", T20, "small")
		v.drawString(30, 178, "abilities, aiding the learning process. ", T20, "small")
		else
		v.drawScaled(189<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x85"+"OFF(Default):"+"\x80"+" Most tutorials are turned off.", T20, "small")
		v.drawString(30, 178, "Set this once you've gotten used to your abilities. ", T20, "small")
		end

    	elseif (p.ssmenusubpage == 10) //Boss netweapon Hyperbeam unrestricted
		v.drawFill(59, 145, 75, 11, 106)
		v.drawFill(63, 153, 66, 1, 0)
		v.drawString(63, 148, "Boss netweapon: ", T10, "small")

		if not p.ssmenudrop
		v.drawScaled(143<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x82"+"ON:"+"\x80"+" Allows the use of Samus' ultimate weapon in boss", T20, "small")
		v.drawString(30, 178, "acts while playing netgames.", T20, "small")
		else
		v.drawScaled(189<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x85"+"OFF:"+"\x80"+" Samus' ultimate weapon will be restricted in boss", T20, "small")
		v.drawString(30, 178, "acts while playing netgames. (Default Setting)", T20, "small")
		end

    	elseif (p.ssmenusubpage == 11) //Morph Interaction
		v.drawFill(59, 45, 75, 11, 106)
		v.drawFill(63, 53, 66, 1, 0)
		v.drawString(63, 48, "Morph Interaction: ", T10, "small")

		if not p.ssmenudrop
		v.drawScaled(143<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x83"+"ON(Default):"+"\x80"+" The Morph Ball can throw players by rolling in place,", T20, "small")
		v.drawString(30, 178, "and push them by using the boost ball.", T20, "small")
		else
		v.drawScaled(189<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x85"+"OFF:"+"\x80"+" Samus' Morph Ball can no longer interact with others players,", T20, "small")
		v.drawString(30, 178, "in the coop and race gametypes.", T20, "small")
		end

    	elseif (p.ssmenusubpage == 12) //Metroid Visuals

		v.drawFill(59, 70, 75, 11, 106)
		v.drawFill(63, 78, 66, 1, 0)
		v.drawString(63, 73, "Object Skins: ", T10, "small")

		if not p.ssmenudrop
		v.drawScaled(143<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x83"+"METROID:"+"\x80"+" Common objects like monitors, starposts and rings get", T20, "small")
		v.drawString(30, 178, "a Metroid-styled skin when this is turned on. Purely a visual change. ", T20, "small")
		else
		v.drawScaled(189<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x84"+"SRB2(default):"+"\x80"+" Objects will use the game's default sprites,", T20, "small")
		v.drawString(30, 178, "without changes. ", T20, "small")
		end

    	elseif (p.ssmenusubpage == 13) //Token Style
		v.drawFill(59, 95, 75, 11, 106)
		v.drawFill(63, 103, 66, 1, 0)
		v.drawString(63, 98, "Token Style: ", T10, "small")

		if not p.ssmenudrop
		v.drawScaled(143<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x83"+"No-Damage(Default):"+"\x80"+" Samus players picking up tokens start a no-damage", T20, "small")
		v.drawString(30, 178, "challenge. Reach the end unharmed to get awarded a Chaos Emerald.", T20, "small")
		elseif p.ssmenudrop and p.ssmenudrop == 1
		v.drawScaled(166<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x83"+"No-Damage(FORCE):"+"\x80"+" Any players picking up tokens start a no-damage", T20, "small")
		v.drawString(30, 178, "challenge. Useful if you want no special stages to appear.", T20, "small")
		else
		v.drawScaled(189<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x85"+"SRB2:"+"\x80"+" Picking up tokens as Samus will exhibit the game's", T20, "small")
		v.drawString(30, 178, "originally intended behaviour.", T20, "small")
		end
    	elseif (p.ssmenusubpage == 14) //Coop Monitors
		v.drawFill(59, 120, 75, 11, 106)
		v.drawFill(63, 128, 66, 1, 0)
		v.drawString(63, 123, "Coop Monitors: ", T10, "small")

		if not p.ssmenudrop
		v.drawScaled(143<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x83"+"Respawn Per Player:"+"\x80"+" Samus players can open each monitor once,", T20, "small")
		v.drawString(30, 178, "in coop. It'll respawn as soon as it's contents are picked up.", T20, "small")
		elseif p.ssmenudrop and p.ssmenudrop == 1
		v.drawScaled(166<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x82"+"Respawn:"+"\x80"+" Monitors will respawn in coop games after roughly 30", T20, "small")
		v.drawString(30, 178, "seconds with no further limitations.", T20, "small")
		else
		v.drawScaled(189<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x85"+"No respawn:"+"\x80"+" Monitors opened will not respawn, mimmicking", T20, "small")
		v.drawString(30, 178, "SRB2's original behaviour.", T20, "small")
		end				
		
		elseif (p.ssmenusubpage == 15) //World Events
		v.drawFill(59, 145, 75, 11, 106)
		v.drawFill(63, 153, 66, 1, 0)
		v.drawString(63, 148, "World Events: ", T10, "small")

		if not p.ssmenudrop
		v.drawScaled(143<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x83"+"World Events:"+"\x80"+" World Events to suit Samus' adventure", T20, "small")
		v.drawString(30, 178, "will appear, making the game feel more Metroid-styled.", T20, "small")
		else
		v.drawScaled(189<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawString(30, 170, "\x85"+"No World Events:"+"\x80"+" Stages and events from Samus", T20, "small")
		v.drawString(30, 178, "won't appear. The game will feel like vanilla SRB2.", T20, "small")				
		end
		
		elseif (p.ssmenusubpage == 16) //Visor Edges
		
			if not p.ssmenudrop	
			v.drawScaled(143<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x83"+"On:"+"\x80"+" Show the edges of your visor while in first person.", T20, "small")
			else
			v.drawScaled(189<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x85"+"Off:"+"\x80"+" Don't show the visor on the edges of the screen when in first person.", T20, "small")
			end

		elseif (p.ssmenusubpage == 17) //Lock-On button
			if not p.ssmenudrop				
			v.drawScaled(143<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x82"+"C1+"+"\x84"+"C3"+"\x80"+" Allow Lock-On with\x82 Custom1\x80 or\x84 Custom3", T20, "small")
			v.drawString(30, 178, "Useful for third-person, aim assist, and controllers.", T20, "small")
			elseif p.ssmenudrop and p.ssmenudrop == 1
			v.drawScaled(166<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x84"+"C3:"+"\x80"+" Allow Lock-On with \x84 Custom3\x80 exclusively.", T20, "small")
			v.drawString(30, 178, "Useful for third-person, aim assist, and controllers.", T20, "small")
			else					
			v.drawScaled(189<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x85"+"Off:"+"\x80"+" Lock-On is turned off. If you're good at", T20, "small")
			v.drawString(30, 178, "aiming with a mouse this can be recommended.", T20, "small")					
			end

		elseif (p.ssmenusubpage == 18) //Lock-On Toggle
			if not p.ssmenudrop				
			v.drawScaled(143<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x84"+"Hold(default):"+"\x80"+" You will remain locked on", T20, "small")
			v.drawString(30, 178, "only for as long as you hold the lock-on button.", T20, "small")
			else
			v.drawScaled(189<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x88"+"Toggle:"+"\x80"+" Tap the Lock-On button to engage and", T20, "small")
			v.drawString(30, 178, "disengage the lockon each time.", T20, "small")
			end
		elseif (p.ssmenusubpage == 19) //Monitor Lock On
			if not p.ssmenudrop				
			v.drawScaled(143<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x83"+"On(default):"+"\x80"+" You can lock onto monitors once you approach", T20, "small")
			v.drawString(30, 178, "closely enough. Enemies and players will still take priority.", T20, "small")
			else
			v.drawScaled(189<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x88"+"Off:"+"\x80"+" Monitors are taken off the list ", T20, "small")
			v.drawString(30, 178, "of Lock-On targetable objects.", T20, "small")
			end
		elseif (p.ssmenusubpage == 20) //AutoScan auto scan
			if not p.ssmenudrop				
			v.drawScaled(143<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x83"+"On(default):"+"\x80"+" Standing still activates the Scan", T20, "small")
			v.drawString(30, 178, "Visor when obtained. TossFlag and C1 activate it manually.", T20, "small")
			elseif p.ssmenudrop and p.ssmenudrop == 1
			v.drawScaled(166<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x84"+"TossFlag or C1:"+"\x80"+" The Scan Visor can only be", T20, "small")
			v.drawString(30, 178, "activated with a press of\x82 Custom1\x80 or\x87 Toss Flag.", T20, "small")					
			else
			v.drawScaled(189<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x87"+"Tossflag:"+"\x80"+" Only\x87 Toss Flag\x80 will activate the Scan", T20, "small")
			v.drawString(30, 178, "Visor after it has been obtained.", T20, "small")
			end
		elseif (p.ssmenusubpage == 21) //No Screen Tilt
			if not p.ssmenudrop
				v.drawScaled(143<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
				v.drawString(30, 170, "\x83"+"On(default):"+"\x80"+" The camera and your arm cannon will", T20, "small")
				v.drawString(30, 178, "react and rotate according to your movement", T20, "small")
			elseif p.ssmenudrop and p.ssmenudrop == 1
				v.drawScaled(166<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
				v.drawString(30, 170, "\x84"+"Arm Cannon Only:"+"\x80"+" The arm cannon tilts", T20, "small")
				v.drawString(30, 178, "according to your movement, but the camera stays still.", T20, "small")					
			else
				v.drawScaled(189<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
				v.drawString(30, 170, "\x85"+"No tilt:"+"\x80"+" There is no camera or arm cannon tilt.", T20, "small")
				v.drawString(30, 178, "Try this if it makes you feel nauseous.", T20, "small")
			end
		elseif (p.ssmenusubpage == 22) //First Time Menu Setup
			v.drawScaled(166<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_SUPERGOLD5))
			v.drawString(30, 170, "\x82"+"Select this option to have Samus' initial setup menu", T20, "small")
			v.drawString(30, 178, "\x82"+"appear once more next time you restart the campaign.", T20, "small")										
    	end

	//Match

	elseif (p.ssmenusub == 4)

		v.drawScaled(162<<16, 26<<16, 80355, v.cachePatch("SSMENU1C"), nil, v.getColormap(nil, SKINCOLOR_MAGENTA))
		v.drawFill(24, 164, 272, 1, 128)
		v.drawFill(24, 186, 272, 1, 128)
		v.drawFill(225, 35, 2, 130, 128)
		v.drawFill(24, 35, 272, 2, 128)

	    	if (p.ssmenusubpage > 10)

		v.drawFill(242, 45, 40, 11, 15)
		if p.sam_respawnboxer and p.sam_respawnboxer >= 30
			v.drawString(253, 48, "Auto", T20, "small")
		elseif p.sam_respawnboxer and p.sam_respawnboxer < 10
			v.drawString(260, 48, p.sam_respawnboxer, T20, "small")
		elseif p.sam_respawnboxer and p.sam_respawnboxer >= 10
			v.drawString(258, 48, p.sam_respawnboxer, T20, "small")
		end

		v.drawFill(59, 45, 75, 11, 195)
		v.drawFill(63, 53, 66, 1, 192)
		v.drawString(63, 48, "Respawn Timer: ", T50, "small")
		v.drawScaled(152<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 45<<16, 35355, v.cachePatch(LARROW))
		v.drawScaled(189<<16, 45<<16, 35355, v.cachePatch(RARROW))

		if p.sam_respawnboxer != nil //Between the arrows
			if p.sam_respawnboxer >= 10
				if p.sam_respawnboxer >= 30
					v.drawString(157, 46, "auto", T20, "left")
				else
					v.drawString(164, 46, p.sam_respawnboxer, T20, "left")
				end
			else
				v.drawString(168, 46, p.sam_respawnboxer, T20, "left")
			end
		end

		v.drawString(30, 40, "3", T20, "left")

	    	elseif (p.ssmenusubpage > 5)

		v.drawFill(242, 45, 40, 11, 15)
		if p.sammatchchars and p.sammatchchars == 1
		v.drawString(249, 48, "Hunters", T20, "small")
		elseif p.sammatchchars and p.sammatchchars == 2
		v.drawString(242, 48, "Sonic Chars", T20, "small")
		else
		v.drawString(245, 48, "Crossplay", T20, "small")
		end

		v.drawFill(242, 70, 40, 11, 15)
		if not p.sammatchmonitors
		v.drawString(253, 73, "Samus", T20, "small")
		else
		v.drawString(255, 73, "SRB2", T20, "small")
		end

		v.drawFill(242, 95, 40, 11, 15)
		if not p.nosammusic
		v.drawString(256, 98, "Yes", T20, "small")
		else
		v.drawString(258, 98, "No", T20, "small")
		end

		v.drawFill(242, 120, 40, 11, 15)
		if not p.nosuperpowert
		v.drawString(249, 123, "Default", T20, "small")
		else
		v.drawString(257, 123, "Off", T20, "small")
		end

		v.drawFill(242, 145, 40, 11, 15)
		if not p.boxammospawns
		v.drawString(246, 148, "Monitors", T20, "small")
		else
		v.drawString(255, 148, "Ammo", T20, "small")
		end


		v.drawFill(59, 45, 75, 11, 195)
		v.drawFill(63, 53, 66, 1, 192)
		v.drawString(63, 48, "Match Chars: ", T50, "small")
		v.drawScaled(152<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(166<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(59, 70, 75, 11, 195)
		v.drawFill(63, 78, 66, 1, 192)
		v.drawString(63, 73, "Monitor Spawns: ", T50, "small")
		v.drawScaled(152<<16, 70<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 70<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)


		v.drawFill(59, 95, 75, 11, 195)
		v.drawFill(63, 103, 66, 1, 192)
		v.drawString(63, 98, "Event Music: ", T50, "small")
		v.drawScaled(152<<16, 95<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 95<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(59, 120, 75, 11, 195)
		v.drawFill(63, 128, 66, 1, 192)
		v.drawString(63, 123, "Super/Power Tanks: ", T50, "small")
		v.drawScaled(152<<16, 120<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 120<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(59, 145, 75, 11, 195)
		v.drawFill(63, 153, 66, 1, 192)
		v.drawString(63, 148, "Boxes as ammo: ", T50, "small")
		v.drawScaled(152<<16, 145<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 145<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawString(30, 40, "2", T20, "left")
		v.drawScaled(27<<16, 145<<16, 45355, v.cachePatch(DARROW), T20)

	    	else

		v.drawFill(242, 45, 40, 11, 15)
		if p.samchallenger
			v.drawString(258, 48, "ON", T20, "small")
		else
			v.drawString(256, 48, "OFF", T20, "small")
		end

		v.drawFill(242, 70, 40, 11, 15)

		if p.samusmatch
			if p.samusmatch == 5
				v.drawString(250, 73, "BASICS", T20, "small")
			elseif p.samusmatch == 4
				v.drawString(245, 73, "MORPH KIT", T20, "small")
			elseif p.samusmatch == 1
				v.drawString(243, 73, "Continuous", T20, "small")
			elseif p.samusmatch == 2
				v.drawString(245, 73, "All Items", T20, "small")
			elseif p.samusmatch == 9
				v.drawString(256, 73, "FPS", T20, "small")
			end
		else
			v.drawString(248, 73, "DEFAULT", T20, "small")
		end

		v.drawFill(242, 95, 40, 11, 15)
		if not p.sam_beamcombosrestrict
		v.drawString(258, 98, "ON", T20, "small")
		else
		v.drawString(256, 98, "OFF", T20, "small")
		end

		v.drawFill(242, 145, 40, 11, 15)
		if p.samdoubleammo
		v.drawString(258, 148, "ON", T20, "small")
		else
		v.drawString(256, 148, "OFF", T20, "small")
		end


		v.drawFill(59, 45, 75, 11, 195)
		v.drawFill(63, 53, 66, 1, 192)
		v.drawString(63, 48, "Challenger: ", T50, "small")
		v.drawScaled(152<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 45<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(59, 70, 75, 11, 195)
		v.drawFill(63, 78, 66, 1, 192)
		v.drawString(63, 73, "Starting Kit: ", T50, "small")
		v.drawScaled(152<<16, 70<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 70<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(154<<16-20355, 72<<16-20355, 45355, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(163<<16-20355, 72<<16-20355, 45355, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(172<<16-20355, 72<<16-20355, 45355, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(181<<16-20355, 72<<16-20355, 45355, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(59, 95, 75, 11, 195)
		v.drawFill(63, 103, 66, 1, 192)
		v.drawString(63, 98, "Beam Combos: ", T50, "small")
		v.drawScaled(152<<16, 95<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 95<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(59, 120, 75, 11, 195)
		v.drawFill(63, 128, 66, 1, 192)
		v.drawString(63, 123, "Energy Tanks: ", T50, "small")
		v.drawScaled(152<<16, 120<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 120<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 120<<16, 35355, v.cachePatch(LARROW))
		v.drawScaled(189<<16, 120<<16, 35355, v.cachePatch(RARROW))

		v.drawFill(59, 145, 75, 11, 195)
		v.drawFill(63, 153, 66, 1, 192)
		v.drawString(63, 148, "Double Ammo: ", T50, "small")
		v.drawScaled(152<<16, 145<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(171<<16, 145<<16, 80355, v.cachePatch("SAMOPBR"))
		v.drawScaled(143<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)
		v.drawScaled(189<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, cmB)

		v.drawFill(242, 120, 40, 11, 15)
		if p.sam_energytanksstart != nil
			if p.sam_energytanksstart < 10
			v.drawString(260, 123, p.sam_energytanksstart, T20, "small")
			v.drawString(168, 121, p.sam_energytanksstart, T20, "left")
			else
			v.drawString(258, 123, p.sam_energytanksstart, T20, "small")
			v.drawString(164, 121, p.sam_energytanksstart, T20, "left")
			end
		end



		v.drawString(30, 40, "1", T20, "left")
		v.drawScaled(27<<16, 145<<16, 45355, v.cachePatch(DARROW), T20)

	    	end

	    	if (p.ssmenusubpage == 1) //Challenger Mode
			v.drawFill(59, 45, 75, 11, 106)
			v.drawFill(63, 53, 66, 1, 0)
			v.drawString(63, 48, "Challenger: ", T10, "small")

			if not p.ssmenudrop
			v.drawScaled(143<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x83"+"ON:"+"\x80"+" Puts a 30% handicap on your damage to players. Consecutive wins as", T20, "small")
			v.drawString(30, 178, "a challenger gains you commendations and eventually a special reward.", T20, "small")
			else
			v.drawString(30, 170, "\x85"+"OFF(Default):"+"\x80"+" No handicap is placed on your damage.", T20, "small")
			v.drawString(30, 178, "CAUTION: Potential Challenger rewards will be withdrawn.", T20, "small")
			v.drawScaled(189<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			end

	    	elseif (p.ssmenusubpage == 2) //Starting Kit
			v.drawFill(59, 70, 75, 11, 106)
			v.drawFill(63, 78, 66, 1, 0)
			v.drawString(63, 73, "Starting Kit: ", T10, "small")


			if not p.ssmenudrop
			v.drawScaled(143<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x83"+"DEFAULT:"+"\x80"+" Start matches with only the Charge Beam and,", T20, "small")
			v.drawString(30, 178, "missiles. All other settings also grant these items.", T20, "small")
			elseif p.ssmenudrop == 1
			v.drawString(30, 170, "\x86"+"Basics:"+"\x80"+" Start matches with the Varia Suit, Super Missiles,", T20, "small")
			v.drawString(30, 178, "Speed Booster, Boost Ball, Space Jump, and a random beam.", T20, "small")
			v.drawScaled(154<<16-20355, 72<<16-20355, 45355, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			elseif p.ssmenudrop == 2
			v.drawString(30, 170, "\x84"+"Morph Kit:"+"\x80"+" Start matches with all Morph Ball items,", T20, "small")
			v.drawString(30, 178, "and none of the other suit upgrades.", T20, "small")
			v.drawScaled(163<<16-20355, 72<<16-20355, 45355, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			elseif p.ssmenudrop == 3
			v.drawString(30, 170, "\x82"+"FPS:"+"\x80"+" Start matches with all beams and the", T20, "small")
			v.drawString(30, 178, "space jump. Perfect to replicate typical FPS games.", T20, "small")
			v.drawScaled(172<<16-20355, 72<<16-20355, 45355, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			elseif p.ssmenudrop == 4
			v.drawString(30, 170, "\x87"+"Continuous:"+"\x80"+" Any items players obtain are kept between", T20, "small")
			v.drawString(30, 178, "matches. Recommended to start a game fresh first.", T20, "small")
			v.drawScaled(181<<16-20355, 72<<16-20355, 45355, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			elseif p.ssmenudrop >= 5
			v.drawString(30, 170, "\x81"+"Everything:"+"\x80"+" Start matches with every powerup except", T20, "small")
			v.drawString(30, 178, "for beam combos and the ultimate weapon. Crossplay discouraged.", T20, "small")
			v.drawScaled(189<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			end

	    	elseif (p.ssmenusubpage == 3) //Beam Combos
			v.drawFill(59, 95, 75, 11, 106)
			v.drawFill(63, 103, 66, 1, 0)
			v.drawString(63, 98, "Beam Combos: ", T10, "small")

			if not p.ssmenudrop
			v.drawScaled(143<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x83"+"On(Default):"+"\x80"+" Samus players picking up the same beam twice", T20, "small")
			v.drawString(30, 178, "receive the ability to use it's devastating beam combo!", T20, "small")
			else
			v.drawScaled(189<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x85"+"OFF:"+"\x80"+" Picking up the same beam item twice no longer grants", T20, "small")
			v.drawString(30, 178, "you a beam combo in Match gametypes.", T20, "small")
			end

	    	elseif (p.ssmenusubpage == 4) //Energy Tanks
			v.drawFill(59, 120, 75, 11, 106)
			v.drawFill(63, 128, 66, 1, 0)
			v.drawString(63, 123, "Energy Tanks: ", T10, "small")

			v.drawString(30, 170, "\x84"+"Energy Tanks:"+"\x80"+" Select the amount of energy tanks players", T20, "small")
			v.drawString(30, 178, "start with in matches. Default is 2. One tank gives 50 max energy.", T20, "small")

	    	elseif (p.ssmenusubpage == 5) //Double Ammo

			v.drawFill(59, 145, 75, 11, 106)
			v.drawFill(63, 153, 66, 1, 0)
			v.drawString(63, 148, "Double Ammo: ", T10, "small")

			if not p.ssmenudrop
			v.drawScaled(143<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x83"+"On:"+"\x80"+" Missiles and powerbombs require twice the usual", T20, "small")
			v.drawString(30, 178, "ammo to deploy! Useful for more down-to-earth matches.", T20, "small")
			else
			v.drawScaled(189<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x85"+"OFF(Default):"+"\x80"+" Missile and powerbomb ammunitions require", T20, "small")
			v.drawString(30, 178, "the usual amount to use.", T20, "small")
			end

	    	elseif (p.ssmenusubpage == 6) //Hunters
			v.drawFill(59, 45, 75, 11, 106)
			v.drawFill(63, 53, 66, 1, 0)
			v.drawString(63, 48, "Match Chars: ", T10, "small")

			if not p.ssmenudrop
			v.drawScaled(143<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x83"+"CrossPlay(Default):"+"\x80"+" Both Samus and other characters can battle at", T20, "small")
			v.drawString(30, 178, "the same time. Not recommended for balance, but the default nontheless.", T20, "small")
			elseif p.ssmenudrop and p.ssmenudrop == 1
			v.drawScaled(166<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x82"+"Hunters:"+"\x80"+" The battlefield is reserved for Samus. Optimal", T20, "small")
			v.drawString(30, 178, "for true balance. Other characters cannot move.", T20, "small")
			elseif p.ssmenudrop and p.ssmenudrop >= 2
			v.drawScaled(189<<16, 45<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x84"+"Sonic Chars:"+"\x80"+" Samus is prohibited from infiltrating the", T20, "small")
			v.drawString(30, 178, "battlefield. Optimal for non-Hunter battles.", T20, "small")
			end

	    	elseif (p.ssmenusubpage == 7) //Monitor Spawns
			v.drawFill(59, 70, 75, 11, 106)
			v.drawFill(63, 78, 66, 1, 0)
			v.drawString(63, 73, "Monitor Spawns: ", T10, "small")

			if not p.ssmenudrop
			v.drawScaled(143<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x83"+"Samus(Default):"+"\x80"+" Monitors spawn using Samus' algorithm for", T20, "small")
			v.drawString(30, 178, "optimal balance. ", T20, "small")
			else
			v.drawScaled(189<<16, 70<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x82"+"SRB2:"+"\x80"+" Monitors spawn using SRB2' default algorithm. Highly", T20, "small")
			v.drawString(30, 178, "discouraged if Samus is intended to battle. ", T20, "small")
			end

	    	elseif (p.ssmenusubpage == 8) //Event Music(Hyperbeam music)
			v.drawFill(59, 95, 75, 11, 106)
			v.drawFill(63, 103, 66, 1, 0)
			v.drawString(63, 98, "Event Music: ", T10, "small")

			if not p.ssmenudrop
			v.drawScaled(143<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x83"+"Yes(Default):"+"\x80"+" Big Samus-exclusive events change the in-game", T20, "small")
			v.drawString(30, 178, "music. Be prepared to exercise caution. ", T20, "small")
			else
			v.drawScaled(189<<16, 95<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x85"+"No:"+"\x80"+" Big Samus-exclusive Events will not change the in-game", T20, "small")
			v.drawString(30, 178, "music for you and any other player with this turned off.", T20, "small")
			end

	    	elseif (p.ssmenusubpage == 9) //Super/Power Tanks.
			v.drawFill(59, 120, 75, 11, 106)
			v.drawFill(63, 128, 66, 1, 0)
			v.drawString(63, 123, "Super/Power Tanks: ", T10, "small")

			if not p.ssmenudrop
			v.drawScaled(143<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x83"+"Default:"+"\x80"+" Super Missile tanks and Power Bomb tanks increase", T20, "small")
			v.drawString(30, 178, "max ammo and grant you their respective weapons.", T20, "small")
			else
			v.drawScaled(189<<16, 120<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x85"+"Off:"+"\x80"+" Super Missile tanks and Power Bomb tanks give only", T20, "small")
			v.drawString(30, 178, "missile ammo and energy ammo. Makes for more down-to-earth battles.", T20, "small")
			end
	    	elseif (p.ssmenusubpage == 10) //Boxes to Ammo
			v.drawFill(59, 145, 75, 11, 106)
			v.drawFill(63, 153, 66, 1, 0)
			v.drawString(63, 148, "Boxes as Ammo: ", T10, "small")

			if not p.ssmenudrop
			v.drawScaled(143<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x83"+"Monitors(Default):"+"\x80"+" Monitors simply spawn as monitors,", T20, "small")
			v.drawString(30, 178, "used to power up through battles as you fight.", T20, "small")
			else
			v.drawScaled(189<<16, 145<<16, 65356, v.cachePatch("SAMOPBT"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
			v.drawString(30, 170, "\x85"+"Ammo:"+"\x80"+" Monitors spawn as ammo instead. There will be little", T20, "small")
			v.drawString(30, 178, "progression in powerups. Not recommended for crossplay.", T20, "small")
			end
	    	elseif (p.ssmenusubpage == 11) //Respawn Timer
			v.drawFill(59, 45, 75, 11, 106)
			v.drawFill(63, 53, 66, 1, 0)
			v.drawString(63, 48, "Respawn Timer: ", T10, "small")

			v.drawString(30, 170, "\x84"+"Respawn Timer:"+"\x80"+" Sets time monitors will respawn after Samus opens", T20, "small")
			v.drawString(30, 178, "them. Is usually set automatically depending on player count.", T20, "small")
	    	end

	//MENU 5

	elseif (p.ssmenusub == 5)
		v.drawScaled(162<<16, 26<<16, 80355, v.cachePatch("SSMENU1D"), nil, v.getColormap(nil, SKINCOLOR_RUST))
	    if not (p.ssmenusubpage >= 20) //Arrow doesn't exist at these points.
		v.drawScaled(280<<16, 20<<16, FRACUNIT, v.cachePatch(RARROW), T20)
		v.drawString(278, 9, p.ssmenusubpage+1, T20, "left")
	    end
	    if not (p.ssmenusubpage <= 1)
		v.drawScaled(18<<16, 20<<16, FRACUNIT, v.cachePatch(LARROW), T20)
		v.drawString(28, 9, p.ssmenusubpage-1, T20, "left")
	    end
	    if (p.ssmenusubpage == 1) //Enemy Weakness page!

	//What I did originally when p.mobjscan recorded mobj types instead: sprnames[states[mobjinfo[p.mobjscan1].spawnstate].sprite]


		v.drawFill(24, 35, 272, 2, 128)


		v.drawString(51, 89, "\x85"+"resists", T20, "left")
		v.drawString(48, 137, "\x83"+"weakness", T20, "left")
		v.drawFill(120, 35, 2, 150, 128)

		v.drawString(131, 89, "\x85"+"resists", T20, "left")
		v.drawString(128, 137, "\x83"+"weakness", T20, "left")
		v.drawFill(202, 35, 2, 150, 128)

		v.drawString(213, 89, "\x85"+"resists", T20, "left")
		v.drawString(210, 137, "\x83"+"weakness", T20, "left")


		if p.mobjscan1resist
		v.drawScaled(65<<16, 106<<16, FRACUNIT, v.cachePatch(p.mobjscan1resist))
		end
		if p.mobjscan1missileresist
		v.drawScaled(60<<16, 123<<16, 1<<15, v.cachePatch(p.mobjscan1missileresist))
		end
		if p.mobjscan1weak
		v.drawScaled(65<<16, 153<<16, FRACUNIT, v.cachePatch(p.mobjscan1weak))
		end

		if p.mobjscan2resist
		v.drawScaled(145<<16, 106<<16, FRACUNIT, v.cachePatch(p.mobjscan2resist))
		end
		if p.mobjscan2missileresist
		v.drawScaled(140<<16, 123<<16, 1<<15, v.cachePatch(p.mobjscan2missileresist))
		end
		if p.mobjscan2weak
		v.drawScaled(145<<16, 153<<16, FRACUNIT, v.cachePatch(p.mobjscan2weak))
		end

		if p.mobjscan3resist
		v.drawScaled(227<<16, 106<<16, FRACUNIT, v.cachePatch(p.mobjscan3resist))
		end
		if p.mobjscan3missileresist
		v.drawScaled(222<<16, 123<<16, 1<<15, v.cachePatch(p.mobjscan3missileresist))
		end
		if p.mobjscan3weak
		v.drawScaled(227<<16, 153<<16, FRACUNIT, v.cachePatch(p.mobjscan3weak))
		end

		if p.mobjscan1 and v.patchExists(sprnames[p.mobjscan1]+"A1")
		v.drawScaled(76<<16, 78<<16, 1<<15, v.cachePatch(sprnames[p.mobjscan1]+"A1"))
		elseif p.mobjscan1 and v.patchExists(sprnames[p.mobjscan1]+"A0")
		v.drawScaled(76<<16, 78<<16, 1<<15, v.cachePatch(sprnames[p.mobjscan1]+"A0"))
		end
		if p.mobjscan2 and v.patchExists(sprnames[p.mobjscan2]+"A1")
		v.drawScaled(158<<16, 78<<16, 1<<15, v.cachePatch(sprnames[p.mobjscan2]+"A1"))
		elseif p.mobjscan2 and v.patchExists(sprnames[p.mobjscan2]+"A0")
		v.drawScaled(158<<16, 78<<16, 1<<15, v.cachePatch(sprnames[p.mobjscan2]+"A0"))
		end
		if p.mobjscan3 and v.patchExists(sprnames[p.mobjscan3]+"A1")
		v.drawScaled(240<<16, 78<<16, 1<<15, v.cachePatch(sprnames[p.mobjscan3]+"A1"))
		elseif p.mobjscan3 and v.patchExists(sprnames[p.mobjscan3]+"A0")
		v.drawScaled(240<<16, 78<<16, 1<<15, v.cachePatch(sprnames[p.mobjscan3]+"A0"))
		end
	    elseif (p.ssmenusubpage == 2) //Wall-Jump Page!		

		v.drawFill(24, 120, 272, 2, 128)
		v.drawString(163, 35, "\x82"+"Wall-Jump", T20, "center")
		v.drawString(30, 133, "When jumping up to a wall, direct Samus away from the wall and jump to perform", T20, "small")
		v.drawString(30, 143, "a "+"\x82"+"walljump"+"\x80"+"! If you are in third person and using Automatic Mode,", T20, "small")
		v.drawString(30, 153, "hold towards the wall or let go off all directions instead.", T20, "small")
		v.drawString(30, 163, "Backwards walljumps will travel higher, sideways jumps travel further.", T20, "small")

		v.drawScaled(161<<16, 96<<16, 30355, v.getSprite2Patch("basesamus", SPR2_FALL, false, A, 3), nil, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(170<<16, 50<<16, 17355, v.cachePatch("ERZWAL02"))

		v.drawScaled(130<<16, 75<<16, 30355, v.getSprite2Patch("basesamus", SPR2_ROLL, false, B, 7), V_FLIP, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(137<<16, 77<<16, 30355, v.getSprite2Patch("basesamus", SPR2_ROLL, false, B, 7), V_FLIP|T60, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(142<<16, 82<<16, 30355, v.getSprite2Patch("basesamus", SPR2_ROLL, false, A, 7), V_FLIP|T80, v.getColormap(nil, SKINCOLOR_POWERSUIT))


	    elseif (p.ssmenusubpage == 3) //Bomb-Jump Page!		

		if p.sam_bombs
		v.drawFill(24, 120, 272, 2, 128)
		v.drawString(163, 35, "\x82"+"Bomb-Jump", T20, "center")
		v.drawString(30, 133, "Allign yourself with your own bombs while morphed to "+"\x82"+"bomb-jump.", T20, "small")
		v.drawString(30, 143, "Precise and consistent timing can even allow for consecutive jumps.", T20, "small")
		v.drawString(30, 153, "Misalligning propels the morph ball diagonally, making consecutive", T20, "small")
		v.drawString(30, 163, "jumps much harder, but does introduce possible diagonal travel.", T20, "small")

		v.drawScaled(160<<16, 68<<16, 20355, v.cachePatch("SAMUD1"), nil, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(160<<16, 68<<16, 20355, v.cachePatch("YGTMD1"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawScaled(160<<16, 80<<16, 20355, v.cachePatch("SAMUC1"), T60, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(160<<16, 80<<16, 20355, v.cachePatch("YGTMC1"), T60, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawScaled(160<<16, 104<<16, 20355, v.cachePatch("SAMUB1"), T80, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(160<<16, 104<<16, 20355, v.cachePatch("YGTMB1"), T80, v.getColormap(nil, SKINCOLOR_EMERALD))

		v.drawScaled(160<<16, 74<<16, 55355, v.cachePatch("MBOMB0"), nil)
		v.drawScaled(160<<16, 100<<16, 75355, v.cachePatch("MBOMH0"), T70)

		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 4) //Charge-Beam Page!

		if p.sam_chargebeam
		v.drawFill(24, 120, 272, 2, 128)
		v.drawString(161, 35, "\x82"+"Charging shots", T20, "center")
		v.drawString(30, 133, "\x82"+"Charging"+"\x80"+" your beam will magnetize nearby energy and ammo pickups", T20, "small")
		v.drawString(30, 143, "towards you. "+"\x82"+"Charged shots"+"\x80"+" also completely pierce enemy resistances,", T20, "small")
		v.drawString(30, 153, "allowing the use of beams that would otherwise be ineffective.", T20, "small")

		v.drawScaled(118<<16, 113<<16, 55355, v.cachePatch("SAMUF6F4"), nil, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(135<<16, 77<<16, 6000, v.cachePatch("PBCHA0"), T40, v.getColormap(nil, SKINCOLOR_MAGENTA))

		v.drawScaled(205<<16, 50<<16, 12000, v.cachePatch("NRGBC0"))
		v.drawScaled(220<<16, 70<<16, 24000, v.cachePatch("MPKUA0"))
		v.drawScaled(160<<16, 66<<16, 36000, v.cachePatch("PBOMA0"))

		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 5) //Diffusion Bombs Page!		

		if p.sam_bombs and p.sam_chargebeam

		v.drawScaled(115<<16, 110<<16, 55355, v.cachePatch("SAMUF8F2"), nil, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(127<<16, 75<<16, 8000, v.cachePatch("PBCHA0"), T20, cmv)

		v.drawScaled(160<<16, 105<<16, 55355, v.getSprite2Patch("basesamus", SPR2_ROLL, false, C, 3), T70, v.getColormap(nil, SKINCOLOR_POWERSUIT))

		v.drawScaled(190<<16, 110<<16, 22055, v.cachePatch("SAMUB4B6"), nil, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(190<<16, 110<<16, 22055, v.cachePatch("YGTMB4B6"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawScaled(220<<16, 110<<16, 58000, v.cachePatch("MBOMC0"))
		v.drawScaled(205<<16, 110<<16, 58000, v.cachePatch("MBOMC0"))
		v.drawScaled(190<<16, 110<<16, 58000, v.cachePatch("MBOMC0"))
		v.drawScaled(175<<16, 110<<16, 58000, v.cachePatch("MBOMC0"))
		v.drawScaled(160<<16, 110<<16, 58000, v.cachePatch("MBOMC0"))

		v.drawFill(24, 120, 272, 2, 128)
		v.drawString(161, 35, "\x82"+"Diffusion Bombs", T20, "center")
		v.drawString(30, 133, "With a fully "+"\x82"+"charged beam"+"\x80"+" and "+"\x82"+"bombs"+"\x80"+" obtained, morph into a ball to", T20, "small")
		v.drawString(30, 143, "instantly drop 8 bombs all around yourself. Catching players in", T20, "small")
		v.drawString(30, 153, "the center of this is devastating, albeit a bit risky to pull off", T20, "small")
		v.drawString(30, 163, "correctly.", T20, "small")
		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 6) //Ice Beam benefits

		if p.sam_icebeam
		v.drawFill(24, 120, 272, 2, 128)
		v.drawString(160, 35, "\x82"+"Ice Beam benefits", T20, "center")
		v.drawString(30, 133, "Frozen foes have an extra chance to drop pickups upon being shattered.", T20, "small")
		v.drawString(30, 143, "Missiles can be rapidly alternated with "+"\x82"+"ice beam"+"\x80"+" shots for critically", T20, "small")
		v.drawString(30, 153, "high DPS, and a charged ice shot's intense recoil can be turned into", T20, "small")
		v.drawString(30, 163, "an advantageous property if aimed opposite of your desired direction.", T20, "small")

		v.drawScaled(100<<16, 110<<16, 55355, v.cachePatch("SAMUA7A3"), nil, cmv)
		v.drawScaled(100<<16, 110<<16, 55355, v.cachePatch("YGTMA7A3"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawScaled(170<<16, 78<<16, 38355, v.cachePatch("PMSLA3A7"), V_FLIP)
		v.drawScaled(150<<16, 78<<16, 21355, v.cachePatch("MSMKA0"), T70)
		v.drawScaled(160<<16, 78<<16, 21355, v.cachePatch("MSMKA0"), T40)
		v.drawScaled(215<<16, 95<<16, 90355, v.cachePatch("ICXPF0"), T50)
		v.drawScaled(215<<16, 95<<16, 35355, v.cachePatch("MNUSA0"), T50)

		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 7) //Boost Ball tricks

		if p.sambsbl
		v.drawFill(24, 120, 272, 2, 128)
		v.drawString(159, 35, "\x82"+"Boost Ball manoeuvres", T20, "center")
		v.drawString(30, 133, "The "+"\x82"+"boost ball"+"\x80"+" can smash enemies and spikes on contact, and will", T20, "small")
		v.drawString(30, 143, "stabilize the morph ball if it rolls out control. Boosting into", T20, "small")
		v.drawString(30, 153, "foes from above will result in a bounce, and the speed burst can", T20, "small")
		v.drawString(30, 163, "even temporarily skip the morph ball over water surfaces.", T20, "small")

		v.drawScaled(189<<16, 75<<16, 12355, v.cachePatch("SAMUB3B7"), T80, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(197<<16, 68<<16, 12355, v.cachePatch("SAMUC3C7"), T40, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(205<<16, 65<<16, 12355, v.cachePatch("SAMUC3C7"), nil, v.getColormap(nil, SKINCOLOR_POWERSUIT))

		v.drawScaled(160<<16, 110<<16, 22000, v.cachePatch("CBFSH2H8"))

		v.drawScaled(120<<16, 79<<16, 12355, v.cachePatch("SAMUC3C7"), nil, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(108<<16, 82<<16, 13355, v.cachePatch("BBTRA3A7"), T80|V_FLIP, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawScaled(115<<16, 83<<16, 13355, v.cachePatch("BBTRA3A7"), T60|V_FLIP, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawScaled(122<<16, 85<<16, 13355, v.cachePatch("BBTRA3A7"), T40|V_FLIP, v.getColormap(nil, SKINCOLOR_EMERALD))


		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 8) //Shine-Spark p.1

		if p.samspbs
		v.drawFill(24, 120, 272, 2, 128)
		v.drawString(30, 133, "With 30+ energy whilst fully speed boosting, suddenly brake to store", T20, "small")
		v.drawString(30, 143, "your kinetic energy for a charged shinespark state. While in this ", T20, "small")
		v.drawString(30, 153, "short-lasted state, let go of all directional controls and press", T20, "small")
		v.drawString(30, 163, "jump to perform a "+"\x82"+"shinespark"+"\x80"+"! Be wary of it's energy consumption.", T20, "small")

		v.drawScaled(110<<16, 115<<16, 25355, v.getSprite2Patch("basesamus", SPR2_RUN_, false, C, 3), T80, v.getColormap(nil, SKINCOLOR_SKY))
		v.drawScaled(125<<16, 115<<16, 25355, v.getSprite2Patch("basesamus", SPR2_RUN_, false, C, 3), T60, v.getColormap(nil, SKINCOLOR_AZURE))
		v.drawScaled(140<<16, 115<<16, 25355, v.getSprite2Patch("basesamus", SPR2_RUN_, false, A, 3), T40, v.getColormap(nil, SKINCOLOR_SKY))
		v.drawScaled(155<<16, 115<<16, 25355, v.getSprite2Patch("basesamus", SPR2_RUN_, false, A, 3), nil, v.getColormap(nil, SKINCOLOR_POWERSUIT))

		v.drawScaled(195<<16, 55<<16, 25355, v.getSprite2Patch("basesamus", SPR2_FALL, false, A, 3), nil, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(195<<16, 65<<16, 25355, v.getSprite2Patch("basesamus", SPR2_FALL, false, A, 3), T40, cmv)
		v.drawScaled(195<<16, 75<<16, 25355, v.getSprite2Patch("basesamus", SPR2_FALL, false, A, 3), T80, v.getColormap(nil, SKINCOLOR_RED))

		v.drawScaled(195<<16, 76<<16, 55355, v.cachePatch("PBCHE0"), T60)

		v.drawScaled(195<<16, 105<<16, 25355, v.getSprite2Patch("basesamus", SPR2_FALL, false, A, 3), T80, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(195<<16, 115<<16, 25355, v.getSprite2Patch("basesamus", SPR2_STND, false, A, 3), nil, v.getColormap(nil, SKINCOLOR_POWERSUIT))

		v.drawString(163, 35, "\x82"+"ShineSpark", T20, "center")

		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 9) //Shine-Spark p.2

		if p.samspbs

		v.drawScaled(140<<16, 115<<16, 25355, v.getSprite2Patch("samus", SPR2_STND, false, A, 3), T80, cmv)
		v.drawScaled(140<<16, 105<<16, 25355, v.getSprite2Patch("samus", SPR2_FALL, false, A, 3), nil, cmv)
		v.drawScaled(140<<16, 115<<16, 25355, v.getSprite2Patch("samus", SPR2_STND, true, A, 3), T80, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawScaled(140<<16, 105<<16, 25355, v.getSprite2Patch("samus", SPR2_FALL, true, A, 3), nil, v.getColormap(nil, SKINCOLOR_EMERALD))

		v.drawScaled(170<<16, 84<<16, 55355, v.cachePatch("PBCHE0"), T50)

		v.drawScaled(170<<16, 89<<16, 25355, v.getSprite2Patch("samus", SPR2_FLT_, false, A, 3), T80, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(180<<16, 83<<16, 25355, v.getSprite2Patch("samus", SPR2_FLT_, false, A, 3), T60, v.getColormap(nil, SKINCOLOR_RED))
		v.drawScaled(190<<16, 77<<16, 25355, v.getSprite2Patch("samus", SPR2_FLT_, false, A, 3), T40, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(200<<16, 71<<16, 25355, v.getSprite2Patch("samus", SPR2_FLT_, false, A, 3), nil, cmv)

		v.drawScaled(170<<16, 89<<16, 25355, v.getSprite2Patch("samus", SPR2_FLT_, true, A, 3), T80, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawScaled(180<<16, 83<<16, 25355, v.getSprite2Patch("samus", SPR2_FLT_, true, A, 3), T60, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawScaled(190<<16, 77<<16, 25355, v.getSprite2Patch("samus", SPR2_FLT_, true, A, 3), T40, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawScaled(200<<16, 71<<16, 25355, v.getSprite2Patch("samus", SPR2_FLT_, true, A, 3), nil, v.getColormap(nil, SKINCOLOR_EMERALD))

		v.drawFill(24, 120, 272, 2, 128)
		v.drawString(158, 35, "\x82"+"Controlling the ShineSpark", T20, "center")
		v.drawString(30, 133, "Shortly before taking off you will perform a slow rise. You can decide", T20, "small")
		v.drawString(30, 143, "your "+"\x82"+"flight direction"+"\x80"+" during this moment. Hold no direction to fly", T20, "small")
		v.drawString(30, 153, "directly upwards. Hold forward(or any direction in analog mode)", T20, "small")
		v.drawString(30, 163, "to fly straight. Hold back or spin to fly diagonally up.", T20, "small")
		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 10) //Shine-Spark p.3

		if p.samspbs and p.sam_highjump and p.sam_wavebeamcombo
		v.drawFill(24, 120, 272, 2, 128)
		v.drawString(161, 35, "\x82"+"Morphed Shinespark", T20, "center")
		v.drawString(30, 133, "With Spring Ball obtained, you can perform a shinespark even in", T20, "small")
		v.drawString(30, 143, "Morph Ball mode. This also includes when the Death Ball is active.", T20, "small")
		v.drawString(30, 153, "Landing a "+"\x82"+"Death Ball Shinespark"+"\x80"+" deals the highest possible damage.", T20, "small")
		v.drawString(30, 173, "Those who survive a direct hit are banned from lottery admission.", T20, "small")

		v.drawScaled(120<<16, 79<<16, 25355, v.cachePatch("SAMUC3C7"), nil, cmv)
		v.drawScaled(120<<16, 90<<16, 25355, v.cachePatch("SAMUC3C7"), T70, cmv)
		v.drawScaled(120<<16, 99<<16, 28355, v.cachePatch("MPR9P0"), T40, v.getColormap(nil, SKINCOLOR_SKY))

		v.drawScaled(142<<16, 70<<16, 55355, v.cachePatch("PBCHE0"), T50)

		v.drawScaled(155<<16, 79<<16, 25355, v.cachePatch("SAMUC3C7"), T80, v.getColormap(nil, SKINCOLOR_RED))
		v.drawScaled(165<<16, 79<<16, 25355, v.cachePatch("SAMUC3C7"), T60, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(175<<16, 79<<16, 25355, v.cachePatch("SAMUC3C7"), T40, cmv)
		v.drawScaled(185<<16, 79<<16, 25355, v.cachePatch("SAMUC3C7"), T20, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(195<<16, 79<<16, 25355, v.cachePatch("SAMUC3C7"), nil, cmv)

		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 11) //Quick-Charge

		if p.samspbs and p.sambsbl

		v.drawScaled(128<<16, 99<<16, 25355, v.cachePatch("SAMUC3C7"), T70, cmv)
		v.drawScaled(140<<16, 99<<16, 25355, v.cachePatch("SAMUC3C7"), nil, cmv)
		v.drawScaled(118<<16, 110<<16, 27355, v.cachePatch("BBTRA3A7"), T70|V_FLIP)
		v.drawScaled(135<<16, 110<<16, 27355, v.cachePatch("BBTRA3A7"), T40|V_FLIP)			

		v.drawScaled(175<<16, 99<<16, 49355, v.getSprite2Patch("samus", SPR2_WALK, false, E, 3), T70, v.getColormap(nil, SKINCOLOR_AZURE))
		v.drawScaled(188<<16, 99<<16, 49355, v.getSprite2Patch("samus", SPR2_WALK, false, E, 3), T40, v.getColormap(nil, SKINCOLOR_SKY))
		v.drawScaled(200<<16, 99<<16, 49355, v.getSprite2Patch("samus", SPR2_WALK, false, E, 3), nil, cmv)

		v.drawScaled(175<<16, 99<<16, 49355, v.getSprite2Patch("samus", SPR2_WALK, true, E, 3), T70, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawScaled(188<<16, 99<<16, 49355, v.getSprite2Patch("samus", SPR2_WALK, true, E, 3), T40, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawScaled(200<<16, 99<<16, 49355, v.getSprite2Patch("samus", SPR2_WALK, true, E, 3), nil, v.getColormap(nil, SKINCOLOR_EMERALD))

		v.drawFill(24, 120, 272, 2, 128)
		v.drawString(162, 35, "\x82"+"Quick Charge", T20, "center")
		v.drawString(30, 133, "In the middle of a Morph Ball boost, if you uncurl with CUSTOM1", T20, "small")
		v.drawString(30, 143, "held(or have autospeedbooster on), you'll need to "+"\x82"+"spend less", T20, "small")
		v.drawString(30, 153, "\x82"+"time building momentum"+"\x80"+" to enter the speed boosting state.", T20, "small")
		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 12) //Spider Ball tricks

		if p.sam_spiderball

		v.drawScaled(157<<16, 84<<16, 40355, v.cachePatch("YGTLA0"), T20, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawScaled(157<<16, 77<<16, 32355, v.cachePatch("SAMUC5"), nil, cmv)
		v.drawScaled(157<<16, 77<<16, 32355, v.cachePatch("YGTMC5"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawScaled(157<<16, 79<<16, 30355, v.cachePatch("MPR9H0"), nil, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
		v.drawScaled(160<<16, 80<<16, 30355, v.cachePatch("MPR9I0"), nil, v.getColormap(nil, SKINCOLOR_GOLD))

		v.drawFill(24, 90, 272, 2, 128)
		v.drawString(159, 35, "\x82"+"Spider Ball manoeuvres", T20, "center")
		v.drawString(30, 103, "Touching electrical sectors in morph ball form allows the "+"\x82"+"Spider", T20, "small")
		v.drawString(30, 113, "\x82"+"Ball"+"\x80"+" to drain energy for infinite charge and negated damage. Using", T20, "small")
		v.drawString(30, 123, "the Boost Ball to propel yourself from wall to wall is also an", T20, "small")
		v.drawString(30, 133, "efficient way keep charged.", T20, "small")
		v.drawString(30, 153, "Turning into a Morph Ball in mid-air and immediately magnetizing", T20, "small")
		v.drawString(30, 163, "to a wall before you can touch the ground will result in less", T20, "small")
		v.drawString(30, 173, "initial charge, however.", T20, "small")
		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 13) //Varia Suit details

		if p.sam_gravitysuit

		v.drawScaled(160<<16, 105<<16, 55355, v.getSprite2Patch("samus", SPR2_STND, false, A, 1), nil, cmv)
		v.drawScaled(160<<16, 105<<16, 55355, v.getSprite2Patch("samus", SPR2_STND, true, A, 1), nil, v.getColormap(nil, SKINCOLOR_EMERALD))

		v.drawFill(24, 120, 272, 2, 128)
		v.drawString(160, 35, "\x82"+"Varia Suit details", T20, "center")
		v.drawString(30, 133, "The "+"\x82"+"Varia Suit"+"\x80"+" reduces all incoming damage by 12%, not counting", T20, "small")
		v.drawString(30, 143, "death pits and crushers. All Match damage values given assume", T20, "small")
		v.drawString(30, 153, "the Varia Suit is equipped. Damaging players without the Varia", T20, "small")
		v.drawString(30, 163, "Suit will not grant 12% extra score, only 12% extra damage.", T20, "small")
		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 14) //Gravity Suit details

		if p.sam_gravitysuit and (p.sam_gravitysuit >= 2)

		v.drawScaled(160<<16, 105<<16, 55355, v.getSprite2Patch("samus", SPR2_STND, false, A, 1), nil, v.getColormap(nil, SKINCOLOR_GRAVITYSUIT))
		v.drawScaled(160<<16, 105<<16, 55355, v.getSprite2Patch("samus", SPR2_STND, true, A, 1), nil, v.getColormap(nil, SKINCOLOR_SKY))

		v.drawFill(24, 120, 272, 2, 128)
		v.drawString(159, 35, "\x82"+"Gravity Suit details", T20, "center")
		v.drawString(30, 133, "The "+"\x82"+"Gravity Suit"+"\x80"+" reduces all incoming damage by 30% compared to your", T20, "small")
		v.drawString(30, 143, "base Power Suit, not including death pits and crushers. Damaging", T20, "small")
		v.drawString(30, 153, "players with the Gravity Suit equipped will not diminish score", T20, "small")
		v.drawString(30, 163, "given, only damage.", T20, "small")
		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 15) //Screw Attack reflection

		if p.sam_screwattack

		v.drawScaled(120<<16, 109<<16, 65356, v.getSprite2Patch("samus", SPR2_ROLL, false, B, 3), nil, v.getColormap(nil, SKINCOLOR_POWERSUIT))
		v.drawScaled(120<<16, 109<<16, 65356, v.getSprite2Patch("samus", SPR2_ROLL, true, B, 3), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawScaled(120<<16, 105<<16, 46355, v.cachePatch("MPR9J0"), nil, v.getColormap(nil, SKINCOLOR_EMERALD))
		v.drawScaled(120<<16, 94<<16, 36355, v.cachePatch("MPR9H0"), nil, v.getColormap(nil, SKINCOLOR_GREEN))
		v.drawScaled(160<<16, 88<<16, 21355, v.cachePatch("MSMKA0"), T70)
		v.drawScaled(170<<16, 90<<16, 21355, v.cachePatch("MSMKA0"), T40)
		v.drawScaled(180<<16, 91<<16, 31355, v.cachePatch("SMSLA3A7"), T80|V_FLIP)
		v.drawScaled(197<<16, 92<<16, 31355, v.cachePatch("SMSLA3A7"), V_FLIP)

		v.drawFill(24, 120, 272, 2, 128)
		v.drawString(159, 35, "\x82"+"Screw Attack reflection", T20, "center")
		v.drawString(30, 133, "With the "+"\x82"+"Screw Attack"+"\x80"+"'s attack dash, most projectiles", T20, "small")
		v.drawString(30, 143, "will be reflected upon contact. You'll negate explosions and most", T20, "small")
		v.drawString(30, 153, "damage, creating deadly shockwaves upon crashing. It can even", T20, "small")
		v.drawString(30, 163, "cut through Power Bomb blast waves with adequate timing.", T20, "small")
		else
		v.drawString(78, 93, "DATA NOT YET UNLOCKED", nil, "left")
		end

	    elseif (p.ssmenusubpage == 16) // Fully Powered Suit hint

		v.drawScaled(140<<16, 58<<16, 85355, v.cachePatch("SAMSFACE"), nil, v.getColormap(nil, SKINCOLOR_GRAVITYSUIT))

		v.drawFill(24, 120, 272, 2, 128)
		v.drawString(162, 35, "\x83"+"Obtaining 100%", T20, "center")
		v.drawString(30, 133, "In order to obtain the "+"\x83"+"Fully Powered Suit"+"\x80"+", you must collect all energy", T20, "small")
		v.drawString(30, 143, "tanks and upgrades, and a minimum ammo capacity for each of these:", T20, "small")
		v.drawString(30, 153, "\x82"+"100 Missiles | 10 Super Missiles | 5 Power Bombs", T20, "small")
		v.drawString(30, 163, "The Fully Powered Suit is obtainable only in Single Player/Coop.", T20, "small")
		v.drawString(30, 173, "\x85"+"Perhaps at 100% something good will happen in the vanilla campaign?", T20, "small")

	    elseif (p.ssmenusubpage == 17) // Match Hint

		v.drawFill(24, 70, 272, 2, 128)
		v.drawString(159, 40, "\x85"+"Hunters - How To Play", T20, "center")
		v.drawString(30, 83, "\x82"+"As Samus in Match:"+"\x80"+" the score you gain comes directly from", T20, "small")
		v.drawString(30, 93, "the damage you deal, with kills granting 50 extra score on top of", T20, "small")
		v.drawString(30, 103, "your damage.", T20, "small")
		v.drawString(30, 123, "You (by default) start with only the Charge Beam and 2 energy tanks. Try", T20, "small")
		v.drawString(30, 133, "to power up as much as possible from the randomized monitors all over", T20, "small")
		v.drawString(30, 143, "and dominate the other Hunters with the power you've managed to obtain!", T20, "small")
		v.drawString(30, 163, "\x87"+"Capture the Ultimate Weapon by collecting all 7 Emeralds. Other Hunters", T20, "small")
		v.drawString(30, 173, "\x87"+"are urged to take anyone out wielding that power ASAP!", T20, "small")

	    elseif (p.ssmenusubpage == 18) // CTF Hint

		v.drawScaled(100<<16, 80<<16, 25355, v.getSprite2Patch("samus", SPR2_FALL, false, A, 2), nil, v.getColormap(nil, SKINCOLOR_CRIMSON))
		v.drawScaled(100<<16, 80<<16, 25355, v.getSprite2Patch("samus", SPR2_FALL, true, A, 2), nil, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
		v.drawScaled(110<<16, 63<<16, 9355, v.cachePatch("MSMKA0"), T70)
		v.drawScaled(116<<16, 64<<16, 9355, v.cachePatch("MSMKA0"), T40)
		v.drawScaled(123<<16, 64<<16, 16355, v.cachePatch("SMSLA3A7"), T80|V_FLIP)
		v.drawScaled(131<<16, 65<<16, 16355, v.cachePatch("SMSLA3A7"), V_FLIP)

		v.drawScaled(160<<16, 80<<16, 25355, v.getSprite2Patch("basesamus", SPR2_WALK, false, D, 2), nil, v.getColormap(nil, SKINCOLOR_BLUE))
		v.drawScaled(169<<16, 70<<16, 15355, v.cachePatch("RFLGA0"))
		v.drawScaled(157<<16, 61<<16, 22355, v.cachePatch("DRIPD0"), T20)

		v.drawScaled(198<<16, 77<<16, 12355, v.cachePatch("SAMUB2B8"), nil, v.getColormap(nil, SKINCOLOR_RED))
		v.drawScaled(205<<16, 72<<16, 12355, v.cachePatch("SAMUB2B8"), T70, v.getColormap(nil, SKINCOLOR_RED))
		v.drawScaled(198<<16, 77<<16, 12355, v.cachePatch("YGTMB2B8"), nil, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
		v.drawScaled(205<<16, 72<<16, 12355, v.cachePatch("YGTMB2B8"), T70, v.getColormap(nil, SKINCOLOR_SUPERGOLD4))
		v.drawScaled(216<<16, 66<<16, 22000, v.cachePatch("PBOMA0"))

		v.drawFill(24, 90, 272, 2, 128)
		v.drawString(160, 35, "\x85"+"CTF - How To Play", T20, "center")
		v.drawString(30, 103, "\x82"+"As Samus in CTF:"+"\x80"+" Damage and Powerup rules are the same as in", T20, "small")
		v.drawString(30, 113, "Match, but your weapons cannot regenerate teammates' rings or energy.", T20, "small")
		v.drawString(30, 133, "While you're holding a flag, movement upgrades and the Ultimate Weapon", T20, "small")
		v.drawString(30, 143, "will be disabled, and the Morph Ball will roll slightly slower.", T20, "small")
		v.drawString(30, 163, "In order to make a hunter drop the flag or emeralds, you must hit them", T20, "small")
		v.drawString(30, 173, "with a charge shot or something even more powerful.", T20, "small")

	    elseif (p.ssmenusubpage == 19) // Kill Drops

		v.drawScaled(160<<16, 88<<16, 40355, v.getSprite2Patch("basesamus", SPR2_DEAD, false, A, 0), nil, v.getColormap(nil, SKINCOLOR_AQUA))
		v.drawScaled(190<<16, 70<<16, 35355, v.cachePatch("NRGBC0"))
		v.drawScaled(208<<16, 84<<16, 35355, v.cachePatch("MPKUA0"), nil, v.getColormap(nil, SKINCOLOR_YELLOW))
		v.drawScaled(128<<16, 87<<16, 35355, v.cachePatch("MPKUA0"), nil, v.getColormap(nil, SKINCOLOR_YELLOW))
		v.drawScaled(105<<16, 80<<16, 35355, v.cachePatch("NRGDC0"), nil, v.getColormap(nil, SKINCOLOR_YELLOW))

		v.drawFill(24, 110, 272, 2, 128)
		v.drawString(163, 35, "\x85"+"Kill Drops", T20, "center")
		v.drawString(30, 123, "Players killed in Hunters/CTF drop items depending on what you", T20, "small")
		v.drawString(30, 133, "defeat them with:", T20, "small")
		v.drawString(30, 153, "\x82"+"Power Beam/Bombs: 50 Energy", T20, "small")
		v.drawString(30, 163, "\x84"+"Power Bombs/Ultimate Weapon: Missiles", T20, "small")
		v.drawString(30, 173, "\x85"+"Other methods: 20 Energy", T20, "small")

	    elseif (p.ssmenusubpage == 20) // Misc

		v.drawFill(24, 60, 272, 2, 128)
		v.drawString(162, 35, "\x84"+"Miscellaneous", T20, "center")
		v.drawString(30, 73, "Hold Custom1/FIRE as a stationary Morph Ball to"+"\x82 roll in place.\x80 This", T20, "small")
		v.drawString(30, 83, "activates spindash platforms and can throw other players forward.", T20, "small")
		v.drawString(30, 103, "\x82"+"Rolling off high cliffs"+"\x80 as the morph ball can get you more distance", T20, "small")
		v.drawString(30, 113, "than a simple jogging jump.", T20, "small")
		v.drawString(30, 133, "If a level isn't offering enough monitor variety,"+"\x82"+" enemies"+"\x80 may drop", T20, "small")
		v.drawString(30, 143, "extra monitors upon being defeated.", T20, "small")
		v.drawString(30, 163, "\x82"+"Entering your ship"+"\x80 brings your ammo & health up to a minimum level.", T20, "small")
		v.drawString(30, 173, "The feature is exclusive to Single Player and Co-op.", T20, "small")
	    end
	elseif p.ssmenusub == 77 //Item Deletion Section
		v.drawScaled(97<<16, 47<<16, FRACUNIT, v.cachePatch("THNEV2"))
		v.drawScaled(97<<16, 124<<16, FRACUNIT, v.cachePatch("THNEV2"))

		v.drawScaled(25<<16, 7<<16, FRACUNIT, v.cachePatch("REDCAUTN"))
		v.drawScaled(232<<16, 7<<16, FRACUNIT, v.cachePatch("REDCAUTN"))
		v.drawScaled(25<<16, 124<<16, FRACUNIT, v.cachePatch("YELCAUTN"))
		v.drawScaled(232<<16, 124<<16, FRACUNIT, v.cachePatch("YELCAUTN"))
		if p.samitemdelete
			if p.samitemdelete == 1 //bombs
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 MORPH BALL BOMBS"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 2 //missiles
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 MISSILE TANKS"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 3 //supermissiles
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 SUPER MISSILE TANKS"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 4
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 POWER BOMB TANKS"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 5
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 CHARGE BEAM"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 6
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 SPAZER BEAM"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 7
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 WAVE BEAM"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 8
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 ICE BEAM"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 9
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 PLASMA BEAM"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 10
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 BOOST BALL"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 11
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 SPIDER BALL"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 12
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 HI-JUMP & SPRING BALL"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 13
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 SPACE JUMP"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 14
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 SCREW ATTACK"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 15
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 GRAVITY SUIT"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 16
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 VARIA SUIT"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 17
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 SPEED BOOSTER"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 18
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 ENERGY TANKS"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
			elseif p.samitemdelete == 19
				v.drawString(160, 93, "\x85"+"DELETE THE\x82 POWER GRIP"+"\x85"+"?", nil, "center")
				v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
				v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")						
			elseif p.samitemdelete >= 20
				if p.sam_hyperbeam
					v.drawString(160, 93, "\x85"+"DELETE THE\x82 HYPER BEAM"+"\x85"+"?", nil, "center")
					v.drawString(160, 108, "\x81"+"Will fail if you possess all", nil, "center")
					v.drawString(160, 121, "\x81"+"coop Emeralds", nil, "center")
					v.drawString(160, 33, "\x82 JUMP\x85 = DELETE", nil, "center")
					v.drawString(160, 153, "\x82 SPIN\x83 = SKIP", nil, "center")
				end
			end		
		end
	end
end)


--Dialogue, tutorials, and text boxes.

hud.add(function(v, p)
	if not (p and p.mo)
	or p.sam_saveselect
	or p.sam_intoship
		return --These take priority.
	end local s = p.mo

	--Samus Dialogue display!
		if s.samusdialogue and s.samusdialogue.active
		and not s.samusdialogue.dontrender
			
			local t = s.samusdialogue
			
		-- Textbox display

				if (vHEIGHT == 1200) or (vHEIGHT == 800) or (vHEIGHT == 400) or (vHEIGHT == 200)	
				--HUD resolution stuff is the worst....
					if t.textboxstyle == 1
					v.drawScaled(16<<16+t.endoffset*2, 141<<16+t.endoffset*4, t.textboxscale*40/41, v.cachePatch("SAMTEXTBC"), t.textboxtrns, v.getColormap(nil, t.textboxcolor))
					else
					v.drawScaled(16<<16+t.endoffset*2, 141<<16+t.endoffset*4, t.textboxscale*40/41, v.cachePatch("SAMTEXTBO"), t.textboxtrns, v.getColormap(nil, t.textboxcolor))
					end
				v.drawScaled(16<<16+t.endoffset*2, 141<<16+t.endoffset*4, t.textboxscale*40/41, v.cachePatch("SAMTEXTBG"), T40)
				else
					if t.textboxstyle == 1
					v.drawScaled(16<<16+t.endoffset*2, 141<<16+t.endoffset*4, t.textboxscale, v.cachePatch("SAMTEXTBC"), t.textboxtrns, v.getColormap(nil, t.textboxcolor))
					else
					v.drawScaled(16<<16+t.endoffset*2, 141<<16+t.endoffset*4, t.textboxscale, v.cachePatch("SAMTEXTBO"), t.textboxtrns, v.getColormap(nil, t.textboxcolor))
					end
				v.drawScaled(16<<16+t.endoffset*2, 141<<16+t.endoffset*4, t.textboxscale, v.cachePatch("SAMTEXTBG"), T40)				
				end	

		--Picture display
				if t.textboxstyle == 1
					v.drawScaled(12<<16+t.endoffset*2, 120<<16+20000+t.endoffset*4-2<<16, t.textboxscale, v.cachePatch("SAMNAVB1"), t.textboxtrns, v.getColormap(nil, t.tbscolor))
					v.drawScaled(297<<16-t.endoffset*18, 138<<16+30000+t.endoffset*4-2<<16, t.textboxscale, v.cachePatch("SAMNAVB2"), t.textboxtrns)
				else
					v.drawScaled(20<<16+t.endoffset*2, 70<<16+t.endoffset*4-2<<16, t.textboxscale/5, v.cachePatch(t.textboxpic), t.textboxtrns, v.getColormap(nil, t.samuscolor))
					if t.textboxpic2
					v.drawScaled(20<<16+t.endoffset*2, 70<<16+t.endoffset*4-2<<16, t.textboxscale/5, v.cachePatch(t.textboxpic2), t.textboxtrns, v.getColormap(nil, t.samuscolor2))
					end
					if t.transitflash
					v.drawScaled(20<<16+t.endoffset*2, 70<<16+t.endoffset*4-2<<16, t.textboxscale/5, v.cachePatch("SAMTRANS"), t.transitflash, v.getColormap(nil, SKINCOLOR_SUPERSILVER1))
					end
					
					v.drawScaled(18<<16+t.endoffset*2, 70<<16+t.endoffset*4-2<<16-32355, t.textboxscale/5, v.cachePatch("SAMTEXTBP"), t.textboxtrns)
				end

		-- Actual text display
		
			if not t.goodbyedialogue
			v.drawString(24, 149, "\x80"+(string.sub(t.text1, 1, t.currentchars1)), T10|V_ALLOWLOWERCASE, t.align1)
				if (t.align1 == "small") and (t.align2 == "small")
				v.drawString(24, 157, "\x80"+(string.sub(t.text2, 1, t.currentchars2)), T10|V_ALLOWLOWERCASE, t.align2)
					if t.text3
					v.drawString(24, 165, "\x80"+(string.sub(t.text3, 1, t.currentchars3)), T10|V_ALLOWLOWERCASE, "small")
					end
				else
				v.drawString(24, 164, "\x80"+(string.sub(t.text2, 1, t.currentchars2)), T10|V_ALLOWLOWERCASE, t.align2)
				end
			end
			
		-- Speedup/cancel function displays
		
			if (p.cmd.buttons & BT_CUSTOM1)
				if not (leveltime % 2 == 0)
				v.drawString(200, 133, "\x82"+">>> Speeding up >>>", T20|V_ALLOWLOWERCASE)
				else
				v.drawString(200, 133, "\x82"+">>> Speeding up >>>", T40|V_ALLOWLOWERCASE)				
				end
				if (p.cmd.buttons & BT_SPIN)
				v.drawString(222, 126, "\x8D"+"Toss Flag to skip", T20|V_ALLOWLOWERCASE, "small")
				end
			elseif (p.cmd.buttons & BT_SPIN)
			v.drawString(222, 133, "\x8D"+"Toss Flag to skip", T10|V_ALLOWLOWERCASE, "small")
			end					
		end
		
	--Samus Mission display! Lazy carbon copy
		if s.samusmission and s.samusmission.active
		local r = s.samusmission

		-- Actual text display
		
			if not r.goodbyedialogue
				if r.textboxstyle == 1
				v.drawString(160, 70, "\x80"+(string.sub(r.text1, 1, r.currentchars1)), r.textboxtrns, "center")
				v.drawString(160, 85, "\x80"+(string.sub(r.text2, 1, r.currentchars2)), r.textboxtrns, "center")
				v.drawString(160, 100, "\x80"+(string.sub(r.text3, 1, r.currentchars3)), r.textboxtrns, "center")
				
				v.drawString(160, 70, "\x80"+(string.sub(r.text1, 1, r.currentchars1)), V_AZUREMAP|T90, "center")
				v.drawString(160, 85, "\x80"+(string.sub(r.text2, 1, r.currentchars2)), V_AZUREMAP|T90, "center")
				v.drawString(160, 100, "\x80"+(string.sub(r.text3, 1, r.currentchars3)), V_AZUREMAP|T90, "center")
				//	-- Cancel function displays	
				//	v.drawString(200, 63, "\x8D"+"Toss Flag to skip", r.textboxtrns|V_ALLOWLOWERCASE, "small")
				elseif r.textboxstyle == 3 --More quiet subdued sound
				v.drawString(80, 90, (string.sub(r.text1, 1, r.currentchars1)), r.textboxtrns, "left")
				v.drawString(80, 105, (string.sub(r.text2, 1, r.currentchars2)), r.textboxtrns, "left")
				v.drawString(80, 120, (string.sub(r.text3, 1, r.currentchars3)), r.textboxtrns, "left")
				elseif r.textboxstyle == 4 --Small scanning text
				
				v.drawString(160, 55, (string.sub(r.text1, 1, r.currentchars1)), T20, "small-center")
				v.drawString(160, 70, (string.sub(r.text2, 1, r.currentchars2)), T20, "small-center")
				v.drawString(160, 85, (string.sub(r.text3, 1, r.currentchars3)), T20, "small-center")				
				end
			end
			
	--Live Tutorial Display! Metroid is a complex franchise compared to the 1-button Sonic classics, so many mechanics might go unnoticed.
	--Let's do my best here to explain things as well as I can.
	
		end
		if p.samustutorial and p.samustutorial.active and not p.nosamustutorials
		and not (p.powers[pw_carry] == CR_NIGHTSMODE)
		and not (s.samusdialogue and s.samusdialogue.active)
		and not p.samustutorial.dontrender
		local t = p.samustutorial
			v.drawScaled(364<<16-(t.textboxscale*160), 20<<16-(t.textboxscale*8), t.textboxscale, v.cachePatch("SAMSAVS6"), t.textboxtrns|vRi|vTo, cmB)		
		//	if t.transitflash --Overlayed!
		//	v.drawScaled(364<<16, 10<<16, FRACUNIT, v.cachePatch("SAMSAVS6"), t.textboxflash|vRi|vTo, v.getColormap(nil, SKINCOLOR_SUPERSILVER1))
		//	end	
			if (t.textboxscale >= FRACUNIT)
			--These go in priority.
				if t.lockon and p.sam_lockonpower
				v.drawString(260, 25, "\x84"+"Lock-On", t.textboxtrns2|vRi|vTo, "center")
				v.drawString(260, 39, "\x84 Custom3\x80 or\x82 Custom1", t.textboxtrns2|vRi|vTo, "small-center")
				v.drawString(260, 47, "Lock onto nearby targets!", t.textboxtrns2|vRi|vTo, "small-center")				
				elseif t.beams 
				v.drawString(260, 25, "\x87"+"Power Beam", t.textboxtrns2|vRi|vTo, "center")
				v.drawString(260, 39, "\x82 NormalFire\x80 or\x82 Custom2", t.textboxtrns2|vRi|vTo, "small-center")
				v.drawString(260, 47, "Fire the basic powerbeam!", t.textboxtrns2|vRi|vTo, "small-center")
				elseif t.monitorhunt
				v.drawString(260, 25, "\x82"+"Monitors", t.textboxtrns2|vRi|vTo, "center")
				v.drawString(260, 39, "Open monitors to upgrade", t.textboxtrns2|vRi|vTo, "small-center")
				v.drawString(260, 47, "your powersuit permanently.", t.textboxtrns2|vRi|vTo, "small-center")
				elseif t.chargebeam
				v.drawString(260, 25, "\x87"+"Charge Beam", t.textboxtrns2|vRi|vTo, "center")
				v.drawString(260, 39, "\x82 NormalFire\x80 or\x82 Custom2", t.textboxtrns2|vRi|vTo, "small-center")
				v.drawString(260, 47, "Hold to charge shots!", t.textboxtrns2|vRi|vTo, "small-center")						
				elseif t.missiles
				v.drawString(260, 25, "\x85"+"Missiles", t.textboxtrns2|vRi|vTo, "center")
				v.drawString(260, 39, "\x82"+"Fire", t.textboxtrns2|vRi|vTo, "small-center")
				v.drawString(260, 47, "The explosions break bustables.", t.textboxtrns2|vRi|vTo, "small-center")
				elseif t.supermissiles
				v.drawString(260, 25, "\x83"+"Super Missiles", t.textboxtrns2|vRi|vTo, "center")
				v.drawString(260, 39, "Hold\x82 Fire", t.textboxtrns2|vRi|vTo, "small-center")
				v.drawString(260, 47, "Breaks all bustable blocks.", t.textboxtrns2|vRi|vTo, "small-center")
				elseif t.beamcombo
				v.drawString(260, 23, "\x84"+"Beam Combos", t.textboxtrns2|vRi|vTo, "center")
				v.drawString(260, 34, "\x82 Fire\x80 while charging. Consume", t.textboxtrns2|vRi|vTo, "small-center")				
				v.drawString(260, 41, "missiles for mighty attacks!", t.textboxtrns2|vRi|vTo, "small-center")
				v.drawString(260, 48, "Beware of beam cooldown.", t.textboxtrns2|vRi|vTo, "small-center")						
				elseif t.gravitysuit1 
				v.drawString(260, 25, "\x87"+"Speed Booster", t.textboxtrns2|vRi|vTo, "center")
				v.drawString(260, 39, "Hold\x82 Custom1.", t.textboxtrns2|vRi|vTo, "small-center")
				v.drawString(260, 47, "Gradually increase runspeed.", t.textboxtrns2|vRi|vTo, "small-center")				
				elseif t.gravitysuit2
				v.drawString(260, 25, "\x89"+"Swap Beams", t.textboxtrns2|vRi|vTo, "center")
				v.drawString(260, 39, "\x8A"+"Next Weapon\x80 /\x8A Previous Weapon", t.textboxtrns2|vRi|vTo, "small-center")
				v.drawString(260, 47, "Numerical keys swap instantly.", t.textboxtrns2|vRi|vTo, "small-center")
				elseif t.scanvisor
				v.drawString(260, 25, "\x84"+"Scan Visor", t.textboxtrns2|vRi|vTo, "center")
				v.drawString(260, 39, "Stand still for a while, or", t.textboxtrns2|vRi|vTo, "small-center")
				v.drawString(260, 47, "tap\x82 Custom1\x80 or"+"\x8D"+" Toss Flag", t.textboxtrns2|vRi|vTo, "small-center")
				elseif t.screwattack 
				v.drawString(260, 25, "\x82"+"Screw Attack", t.textboxtrns2|vRi|vTo, "center")
				v.drawString(260, 39, "Double Tap\x83 Jump\x80/\x82 C1\x80 mid-jump.", t.textboxtrns2|vRi|vTo, "small-center")
				v.drawString(260, 47, "Aim with mouse, spin or jump.", t.textboxtrns2|vRi|vTo, "small-center")
				elseif t.bombs
				v.drawString(260, 25, "\x8D"+"Morph Bombs", t.textboxtrns2|vRi|vTo, "center")
				v.drawString(260, 39, "\x82 NormalFire\x80 while morphed.", t.textboxtrns2|vRi|vTo, "small-center")
				v.drawString(260, 47, "Breaks some bustable materials.", t.textboxtrns2|vRi|vTo, "small-center")
				elseif t.pw 
				v.drawString(260, 25, "\x8D"+"Power Bombs", t.textboxtrns2|vRi|vTo, "center")
				v.drawString(260, 39, "Hold\x82 NormalFire\x80 while morphed.", t.textboxtrns2|vRi|vTo, "small-center")
				v.drawString(260, 47, "Destroys all bustable blocks.", t.textboxtrns2|vRi|vTo, "small-center")
				elseif t.spiderball 
				v.drawString(260, 25, "\x83"+"Spider Ball", t.textboxtrns2|vRi|vTo, "center")
				v.drawString(260, 39, "Press \x82 Jump\x80 while morphed.", t.textboxtrns2|vRi|vTo, "small-center")
				v.drawString(260, 47, "Climb walls, absorb electricity.", t.textboxtrns2|vRi|vTo, "small-center")		
				elseif t.hyperbeam 
				v.drawString(260, 25, "\x88"+"Hyper Beam", t.textboxtrns2|vRi|vTo, "center")
				v.drawString(260, 39, "Overcharge your energy past its", t.textboxtrns2|vRi|vTo, "small-center")
				v.drawString(260, 47, "limit to gain Hyper Beam ammo.", t.textboxtrns2|vRi|vTo, "small-center")
				end
			end
		end
end)

--Extra hook just for the save file select.	
hud.add(function(v, p)		
	--SAVE FILE SELECT MENU. Takes priority over EVERYTHING else!
	if not (p and p.sam_saveselect)
		return --
	end 
	local t = p.sam_saveselect
	local cmv = v.getColormap(nil, SKINCOLOR_VARIASUIT)
	
	v.drawFill(-30, -30, 500, 300, 31|vLe|vTo)
	v.drawScaled(-21<<16, -10<<16, 65356, v.cachePatch("SAMSAVS9"), (t.transfadebg == T10) and T30 or T90) --Logo of the game!

	--By the power of CALCULATIONS!!! And yes, we stretch beyond the borders because resolutions are assholes.
	local SMFLAGS = ((t.transfadebg) or 0)|vTo|vLe
	
	local cmS = (t.submenu==50) and v.getColormap(nil, SKINCOLOR_SKY) 
	or (t.submenu>9) and v.getColormap(nil, SKINCOLOR_CRIMSON)
	or v.getColormap(nil, SKINCOLOR_PURPLE)
	
	local XStart,YStart = -65536-(t.backgroundx<<16/4), -65536-(t.backgroundy<<16/32)
	local PATCH = v.cachePatch("SAMSAVSA")
	for d = -15,500,8 --Render Metroid map-styled background squares.
		local XOFFs = d<<16 - XStart
		for i = -15,340,8
			v.drawScaled(XOFFs, i<<16-YStart, 65536, PATCH, SMFLAGS, cmS)
		end	
	end
	
	if (t.submenu < 10) and not (ADMIN) and SAMUSNETSAVES == false
		v.drawString(161, 18, "\x8C"+"This server only allows fresh saves.", T50, "small-center")
	end
	local FTRANS1,FTRANS2,FTRANS3 = t.firsttrans1,t.firsttrans2,t.firsttrans3 --Shortcuts!
	local TRANSF1,TRANSF2 = t.transfadebuttons,t.transfadebuttons2
	
	local VPATCH = v.cachePatch("SAMSAVS6")	--Used everywhere around here.
	
	if t.submenu == 50	
		v.drawString(160, 8, "\x89"+"DIFFICULTY SELECT", nil, "center")
		v.drawFill(-50, 163, 400, 3, 5)		
		local DASH1,DASH2,DASH3 = t.huddash1,t.huddash2,t.huddash3
		local SCALE = t.scale
		
		if t.menuvertical == 1 
			v.drawString(160, 177, "\x83"+"Zero Mission:"+"\x80 Bosses will counter Samus, but enemies are mostly unchanged.", nil, "small-center")
			v.drawString(160, 185, "Great for First-Person beginners or netgames involving vanilla SRB2 characters.", nil, "small-center")	
			
			v.drawScaled(41<<16, 33<<16, SCALE, v.cachePatch(t.cursoranim), TRANSF1)
			
			--And background boxes!
			v.drawScaled(93<<16+DASH2<<16, 64<<16, SCALE, VPATCH, T70, v.getColormap(nil, SKINCOLOR_SKY))
			v.drawScaled(93<<16+DASH3<<16, 108<<16, SCALE, VPATCH, T70, v.getColormap(nil, SKINCOLOR_GRAVITYSUIT))	
			v.drawScaled(93<<16+DASH1<<16, 19<<16, SCALE, VPATCH, TRANSF1, v.getColormap(nil, SKINCOLOR_POWERSUIT))
			
			v.drawString(160+DASH1, 41, "\x82"+"ZERO MISSION", TRANSF1, "center")
			v.drawString(161+DASH2, 87, "\x88"+"HYPER MODE", T70, "center")
			v.drawString(161+DASH3, 131, "\x89"+"FUSION MODE", T70, "center")
		elseif t.menuvertical == 2	
			v.drawString(160, 177, "\x88"+"Hyper Mode:"+"\x80"+" All enemies gain unique skills to take Samus down with.", nil, "small-center")
			v.drawString(160, 185, "They are also more aggressive and tougher than in SRB2's vanilla campaign. A balanced challenge. ", nil, "small-center")	

			v.drawScaled(41<<16, 80<<16, SCALE, v.cachePatch(t.cursoranim), TRANSF1)
			
			--And background boxes!
			v.drawScaled(93<<16+DASH1<<16, 19<<16, SCALE, VPATCH, T70, v.getColormap(nil, SKINCOLOR_POWERSUIT))
			v.drawScaled(93<<16+DASH3<<16, 108<<16, SCALE, VPATCH, T70, v.getColormap(nil, SKINCOLOR_GRAVITYSUIT))
			v.drawScaled(93<<16+DASH2<<16, 64<<16, SCALE, VPATCH, TRANSF1, v.getColormap(nil, SKINCOLOR_SKY))
			
			v.drawString(160+DASH1, 41, "\x82"+"ZERO MISSION", T70, "center")
			v.drawString(161+DASH2, 87, "\x88"+"HYPER MODE", TRANSF1, "center")
			v.drawString(161+DASH3, 131, "\x89"+"FUSION MODE", T70, "center")
		else
			v.drawString(160, 177, "\x89"+"Fusion:"+"\x80 Enemies are even more resilient, defense is lower, weapons drain 2x ammo, tanks", nil, "small-center")
			v.drawString(160, 185, "grant no health or ammo, and it's tough to recover. The ultimate survival mode!", nil, "small-center")
			
			v.drawScaled(41<<16, 122<<16, SCALE, v.cachePatch(t.cursoranim), TRANSF1)
			
			--And background boxes!
			v.drawScaled(93<<16+DASH1<<16, 19<<16, SCALE, VPATCH, T70, v.getColormap(nil, SKINCOLOR_POWERSUIT))
			v.drawScaled(93<<16+DASH2<<16, 64<<16, SCALE, VPATCH, T70, v.getColormap(nil, SKINCOLOR_SKY))
			v.drawScaled(93<<16+DASH3<<16, 108<<16, SCALE, VPATCH, TRANSF1, v.getColormap(nil, SKINCOLOR_GRAVITYSUIT))
			
			v.drawString(160+DASH1, 41, "\x82"+"ZERO MISSION", T70, "center")
			v.drawString(161+DASH2, 87, "\x88"+"HYPER MODE", T70, "center")
			v.drawString(161+DASH3, 131, "\x89"+"FUSION MODE", TRANSF1, "center")
		end	
			
	elseif t.submenu >= 10 and t.submenu <= 15
		--We're in first setup territory...
		v.drawString(160, 8, "\x87"+"FIRST TIME SETUP", nil, "center")
		
		if t.submenu == 10  --Lock On Settings
		
			v.drawString(160, 26, "Lock-On setting", V_AZUREMAP, "center")
			--Select Box graphics
			v.drawFill(25, 50, 1, 100, 1) 
			v.drawFill(95, 50, 1, 100, 1)
			v.drawFill(25, 50, 70, 1, 1)
			v.drawFill(25, 150, 71, 1, 1)					

			v.drawFill(120, 50, 1, 100, 1) 
			v.drawFill(195, 50, 1, 100, 1)
			v.drawFill(120, 50, 75, 1, 1)
			v.drawFill(120, 150, 76, 1, 1)					
			
			v.drawFill(220, 50, 1, 100, 1)
			v.drawFill(290, 50, 1, 100, 1)
			v.drawFill(220, 50, 70, 1, 1)
			v.drawFill(220, 150, 71, 1, 1)	
			
				--Samus graphics	
			
				--Left option
				v.drawScaled(39<<16, 132<<16, 38355-(FTRANS1/30), v.cachePatch("SAMUF6F4"), FTRANS1, v.getColormap(nil, SKINCOLOR_POWERSUIT))
				
				v.drawString(40, 53, "\x82"+"C1", FTRANS1, "center")
				v.drawString(40, 63, "or", FTRANS1, "small-center")
				v.drawString(40, 69, "\x84"+"C3", FTRANS1, "center")	
				
				v.drawScaled(70<<16, 85<<16, 24355-(FTRANS1/30), v.cachePatch("BUZZA2A8"), FTRANS1)
				v.drawScaled(72<<16, 85<<16, 34000-(FTRANS1/30), 
				(v.getSprite2Patch("basesamus", SPR2_STUN, false, A, 0, leveltime*(ANG2*4))),
				FTRANS1, v.getColormap(nil, SKINCOLOR_EMERALD))
			
				--Middle Option			
				v.drawScaled(134<<16, 132<<16, 38355-(FTRANS2/30), v.cachePatch("SAMUA6A4"), FTRANS2, cmv)
				v.drawScaled(134<<16, 132<<16, 38355-(FTRANS2/30), v.cachePatch("YGTMA6A4"), FTRANS2, v.getColormap(nil, SKINCOLOR_EMERALD))
				
				v.drawString(136, 54, "\x84"+"C3", FTRANS2, "center")
				
				v.drawScaled(168<<16, 85<<16, 24355-(FTRANS2/30), v.cachePatch("BUZZA2A8"), FTRANS2)
				v.drawScaled(170<<16, 85<<16, 34000-(FTRANS2/30), 
				(v.getSprite2Patch("basesamus", SPR2_STUN, false, A, 0, leveltime*(ANG2*4))),
				FTRANS2, v.getColormap(nil, SKINCOLOR_AQUA))
				
				--Right Option
				v.drawScaled(234<<16, 132<<16, 38355-(FTRANS3/30), v.cachePatch("SAMUA6A4"), FTRANS3, v.getColormap(nil, SKINCOLOR_GRAVITYSUIT))
				v.drawScaled(234<<16, 132<<16, 38355-(FTRANS3/30), v.cachePatch("YGTMA6A4"), FTRANS3, v.getColormap(nil, SKINCOLOR_SKY))					
				v.drawString(236, 53, "\x85"+"OFF", FTRANS3, "center")				
				v.drawScaled(270<<16, 85<<16, 24355-(FTRANS3/30), v.cachePatch("BUZZA2A8"), FTRANS3)
		
			if t.menuhorizontal == 1
			
				v.drawFill(24, 49, 2, 101, 72) 
				v.drawFill(94, 49, 2, 101, 72)
				v.drawFill(24, 49, 71, 2, 72)
				v.drawFill(24, 149, 72, 2, 72)				
		
				v.drawString(160, 170, "\x82"+"C1+"+"\x84"+"C3"+"\x80"+": Use Lock-On with\x82 Custom1\x80 or\x84 Custom3", nil, "small-center")
				v.drawString(160, 178, "\x83"+"HIGHLY RECOMMENDED"+"\x80, especially for 3rd Person or controller use.", nil, "small-center")
			elseif t.menuhorizontal == 2
				v.drawFill(119, 49, 2, 101, 49) 
				v.drawFill(194, 49, 2, 101, 49)
				v.drawFill(119, 49, 76, 2, 49)
				v.drawFill(119, 149, 77, 2, 49)	
				
				v.drawString(160, 170, "\x84"+"C3"+"\x80"+": Use Lock-On with\x84 Custom3\x80 exclusively.", nil, "small-center")
				v.drawString(160, 178, "\x83"+"HIGHLY RECOMMENDED"+"\x80, especially for 3rd Person or controller use.", nil, "small-center")	
				
			elseif t.menuhorizontal == 3
				v.drawFill(219, 49, 2, 101, 56)
				v.drawFill(289, 49, 2, 101, 56)
				v.drawFill(219, 49, 71, 2, 56)
				v.drawFill(219, 149, 72, 2, 56)
																
				v.drawString(160, 166, "\x85"+"OFF"+"\x80"+": The Lock-On option is completely disabled", nil, "small-center")
				v.drawString(160, 174, "\x85"+"NOT RECOMMENDED"+"\x80"+", Never pick this if you're not using 1st Person+Mouse.", nil, "small-center")
				v.drawString(160, 184, "\x82"+"Both the Campaign and Hunters are designed with Lock-On in mind.", T30, "small-center")
				v.drawString(160, 192, "\x82"+"Picking this option yields no extra rewards.", T30, "small-center")	
			end
		
		elseif t.submenu == 11 --Auto speed booster
		
			v.drawString(160, 26, "Autospeedbooster setting", V_AZUREMAP, "center")	
		
			v.drawFill(55, 50, 1, 100, 1) 
			v.drawFill(125, 50, 1, 100, 1)
			v.drawFill(55, 50, 70, 1, 1)
			v.drawFill(55, 150, 71, 1, 1)				
			
			v.drawFill(190, 50, 1, 100, 1)
			v.drawFill(260, 50, 1, 100, 1)
			v.drawFill(190, 50, 70, 1, 1)
			v.drawFill(190, 150, 71, 1, 1)	
			
			local RUNPATCH1 = v.getSprite2Patch("basesamus", SPR2_RUN_, false, t.runanim, 4, 0)
			local RUNPATCH2 = v.getSprite2Patch("basesamus", SPR2_RUN_, false, t.runanim, 3, 0)
			local Pcmap = v.getColormap(nil, SKINCOLOR_POWERSUIT)


			--Option 1
			v.drawString(90, 53, "\x83"+"AUTO", FTRANS1, "center")			
			
			v.drawScaled(105<<16,115<<16, 34000-(FTRANS1/30), RUNPATCH1, FTRANS1, Pcmap)
			v.drawScaled(99<<16, 118<<16, 34000-(FTRANS1/30), RUNPATCH1, T70, v.getColormap(nil, SKINCOLOR_SUPERSKY5))
			v.drawScaled(85<<16, 120<<16, 34000-(FTRANS1/30), RUNPATCH2, T80, v.getColormap(nil, SKINCOLOR_SUPERSILVER5))
			v.drawScaled(75<<16, 122<<16, 34000-(FTRANS1/30), RUNPATCH1, T90, v.getColormap(nil, SKINCOLOR_SUPERSKY5))				
			
			--Option 2	
			v.drawString(226, 53, "\x82"+"HOLD", FTRANS2, "center")
			v.drawString(224, 65, "\x82"+"CUSTOM1", FTRANS2, "center")				
			
			local RUNPATCH1 = v.getSprite2Patch("basesamus", SPR2_RUN_, false, t.runanim2, 4, 0)
			if not (p.cmd.buttons & BT_CUSTOM1)
				v.drawScaled(224<<16, 115<<16, 34000-(FTRANS2/30), RUNPATCH1, FTRANS2, Pcmap)
			end
			if t.menuhorizontal == 1				
				v.drawFill(54, 49, 2, 101, 72) 
				v.drawFill(124, 49, 2, 101, 72)
				v.drawFill(54, 49, 71, 2, 72)
				v.drawFill(54, 149, 72, 2, 72)	
				
				v.drawString(160, 170, "\x83"+"ON:"+"\x80"+" The SpeedBooster will be active at all times if obtained,", nil, "small-center")
				v.drawString(160, 178, "regardless of \x82 Custom1\x80 input.", nil, "small-center")
			else
				if t.menuhorizontal == 2 and (p.cmd.buttons & BT_CUSTOM1) --A cute speedbooster effect to show C1's input.
					local RUNPATCH2 = v.getSprite2Patch("basesamus", SPR2_RUN_, false, (t.runanim2), 3, 0)
					v.drawScaled(244<<16, 115<<16, 34000-(FTRANS2/30), RUNPATCH1, FTRANS2, Pcmap)	
					v.drawScaled(237<<16, 117<<16, 34000-(FTRANS2/30), RUNPATCH1, T70, v.getColormap(nil, SKINCOLOR_SUPERSKY3))
					v.drawScaled(225<<16, 119<<16, 34000-(FTRANS2/30), RUNPATCH2, T80, v.getColormap(nil, SKINCOLOR_SUPERSILVER1))
					v.drawScaled(212<<16, 121<<16, 34000-(FTRANS2/30), RUNPATCH2, T90, v.getColormap(nil, SKINCOLOR_SUPERSKY5))	
				end
				
				v.drawFill(189, 49, 2, 101, 89)
				v.drawFill(259, 49, 2, 101, 89)
				v.drawFill(189, 49, 71, 2, 89)
				v.drawFill(189, 149, 72, 2, 89)	
				
				v.drawString(160, 170, "\x85"+"OFF(Default):"+"\x80"+" Hold \x82 Custom1\x80 to activate the speedbooster when obtained.", nil, "small-center")
				v.drawString(160, 178, "Letting go off \x82 Custom1\x80 will revert you back to your original speed.", nil, "small-center")
			end
				
		elseif t.submenu == 12 --Music Auto Add
		
			v.drawFill(25, 50, 1, 100, 1) 
			v.drawFill(95, 50, 1, 100, 1)
			v.drawFill(25, 50, 70, 1, 1)
			v.drawFill(25, 150, 71, 1, 1)	

			v.drawFill(120, 50, 1, 100, 1) 
			v.drawFill(195, 50, 1, 100, 1)
			v.drawFill(120, 50, 75, 1, 1)
			v.drawFill(120, 150, 76, 1, 1)					
			
			v.drawFill(220, 50, 1, 100, 1)
			v.drawFill(290, 50, 1, 100, 1)
			v.drawFill(220, 50, 70, 1, 1)
			v.drawFill(220, 150, 71, 1, 1)
			
		
			v.drawString(160, 26, "Music Auto-Add setting", V_AZUREMAP, "center")

			--Option 1
			v.drawString(57, 55, "\x83"+"AUTO", FTRANS1, "center")
			v.drawScaled(32<<16, 80<<16, 11000, v.cachePatch("SAMPREVA"), FTRANS1, cmv)
			--Option 2
			v.drawString(159, 55, "\x84"+"DOWNLOAD", FTRANS2, "center")				
			v.drawScaled(129<<16, 80<<16, 11000, v.cachePatch("SAMDEF"), FTRANS2, v.getColormap(nil, SKINCOLOR_POWERSUIT))	
			--Option 3
			v.drawString(255, 55, "\x85"+"NEVER ADD", FTRANS3, "center")				
			v.drawScaled(227<<16, 80<<16, 11000, v.cachePatch("SAMSAD"), FTRANS3, v.getColormap(nil, SKINCOLOR_POWERSUIT))	
		
			if t.menuhorizontal == 1
				v.drawFill(24, 49, 2, 101, 72) 
				v.drawFill(94, 49, 2, 101, 72)
				v.drawFill(24, 49, 71, 2, 72)
				v.drawFill(24, 149, 72, 2, 72)
			
				v.drawString(160, 170, "\x82"+"ON(RECOMMENDED):"+"\x80"+" Metroid Vanguard music files will be auto-added.", nil, "small-center")
				v.drawString(160, 178, "Custom maps and Samus-related events need these to work properly.", nil, "small-center")
			
			elseif t.menuhorizontal == 2
				v.drawFill(119, 49, 2, 101, 89) 
				v.drawFill(194, 49, 2, 101, 89)
				v.drawFill(119, 49, 76, 2, 89)
				v.drawFill(119, 149, 77, 2, 89)	
				
				v.drawString(160, 170, "\x83"+"DOWNLOAD:"+"\x80"+" If you don't have the music files, get the link here.", nil, "small-center")
				v.drawString(160, 178, "Alternatively, look up Metroid Vanguard on the SRB2 message board and get it there.", nil, "small-center")				
			else
			
				v.drawFill(219, 49, 2, 101, 36)
				v.drawFill(289, 49, 2, 101, 36)
				v.drawFill(219, 49, 71, 2, 36)
				v.drawFill(219, 149, 72, 2, 36)	
			
				v.drawString(160, 170, "\x85"+"OFF(STRONGLY DISCOURAGED):"+"\x80"+" Music files will not be auto-added.", nil, "small-center")
				v.drawString(160, 178, "\x89"+"Warning:"+"\x80 Music can glitch or be absent in events, as well as custom maps.", nil, "small-center")
			
				if t.jump
					v.drawFill(-80, -50, 80+(t.jump*40/17), 400, 36+(t.jump/13))
					if (t.jump > 50)
						v.drawString(160, 90, "\x85"+"WARNING!!", T90-((t.jump/30)<<16), "center")
					end
				end
			end
				
		
		elseif t.submenu == 13
			v.drawString(160, 26, "Music Auto-Add setting", V_AZUREMAP, "center")			
			v.drawString(160, 80, "\x82"+"tinyurl.com/vanguardmusic", nil, "center")
			v.drawFill(45, 91, 230, 2, 1) 	
			v.drawString(160, 100, "There are no capitalized letters.", nil, "small-center")
			
			v.drawString(160, 120, "Extract the pk3 to the same folder SRB2 is in.", nil, "small-center")	
			v.drawString(160, 126, "When it's done, return to the last menu and select\x83 AUTO", nil, "small-center")				
		end
	
	elseif t.submenu != 1
		--Text background!
		v.drawScaled(-20<<16, 150<<16, 7<<16, v.cachePatch("SAMTRANS"), (t.textbgfade)|vBo|vLe, v.getColormap(nil, SKINCOLOR_PLASMABURNED))
		--And button with your savefile!
		v.drawScaled(300<<16, 74<<16, t.scale, v.cachePatch("SAMSAVS4"), TRANSF1, v.getColormap(nil, SKINCOLOR_RED))
		v.drawString(310, 80, t.tempsavenum, TRANSF2|V_INVERTMAP, "center")
	end
	
	local vHEIGHT = v.height() or 0
	--Metallic edges of the screen	
	if (vHEIGHT == 1200) or (vHEIGHT == 800) or (vHEIGHT == 400) or (vHEIGHT == 200)
		v.drawScaled(-16<<16, 10<<16-t.fadein, FRACUNIT, v.cachePatch("SAMSAVSU"), vTo)
		v.drawScaled(-16<<16, 193<<16+t.fadein, FRACUNIT, v.cachePatch("SAMSAVSB"), vBo)	
	//	v.drawScaled(-16<<16, 183<<16+t.fadein, FRACUNIT, v.cachePatch("SAMSAVSB"), vBo)		
	else
		v.drawScaled(-16<<16, 0-t.fadein, FRACUNIT, v.cachePatch("SAMSAVSU"), vTo)
		v.drawScaled(-16<<16, 193<<16+t.fadein, FRACUNIT, v.cachePatch("SAMSAVSB"), vBo)	
	end
	for d = 1,2
		v.drawScaled(0-(t.fadein), (160<<16*d)-160<<16, FRACUNIT, v.cachePatch("SAMSAVSS"), vLe|vTo)
		v.drawScaled(312<<16+(t.fadein), (160<<16*d)-160<<16, FRACUNIT, v.cachePatch("SAMSAVSZ"), vRi|vTo)	
	end
	
	if t.submenu == 1
		if t.noloadsave
			v.drawFill(80, 50, t.noloadsave*4, 11, 5) 	
		end
	
		v.drawScaled(57<<16, 88<<16, 87000, v.cachePatch("SAMSAVS7"), TRANSF1, v.getColormap(nil, SKINCOLOR_POWERSUIT))		
		
	//	v.drawString(160, 106, "\x87"+"SAMUS", TRANSF1, "center")
		v.drawScaled(137<<16, 104<<16, FRACUNIT, v.cachePatch("SAMSAVS8"), TRANSF1)
		v.drawScaled(193<<16, 100<<16, t.scale, v.cachePatch("SAMSAVS4"), TRANSF1, v.getColormap(nil, SKINCOLOR_RED))			
		v.drawScaled(110<<16, 100<<16, t.scale, v.cachePatch("SAMSAVS4"), TRANSF1, v.getColormap(nil, SKINCOLOR_RED))
		
		if p.sam_initmenu
			v.drawString(202, 106, ">", TRANSF2|V_INVERTMAP, "center")
			v.drawString(119, 106, "<", TRANSF2|V_INVERTMAP, "center")
		else
			v.drawString(202, 106, t.menuhorizontal, TRANSF2|V_INVERTMAP, "center")
			v.drawString(119, 106, t.menuhorizontal, TRANSF2|V_INVERTMAP, "center")
		end
		
	  if t.menuvertical == 1 --Cursor
			v.drawScaled(10<<16, 43<<16, t.scale, v.cachePatch(t.cursoranim), TRANSF1)
			v.drawScaled(55<<16, 63<<16, t.scale, v.cachePatch("SAMSAVS5"), TRANSF1)
	  else
		
			v.drawScaled(10<<16, 122<<16, t.scale, v.cachePatch(t.cursoranim), TRANSF1)		
			--arrows
			v.drawScaled(237<<16-t.arrowanim/2, 104<<16, t.scale/2, v.cachePatch(RARROW), T40)
			v.drawScaled(73<<16+t.arrowanim/2, 104<<16, t.scale/2, v.cachePatch(LARROW), T40)
	  end
		
	  if not t.begintrans --Wait, don't render yet!!
		if not p.newsamfile
	//	local s1 = p.samussave

				if p.sam_savedgamemap != nil and (G_BuildMapTitle(p.sam_savedgamemap)) != nil
				v.drawString(190, 129, G_BuildMapTitle(p.sam_savedgamemap), TRANSF2, "center")
					if t.menuvertical != 1
						local LVLPATCH = ( v.patchExists((G_BuildMapName(p.sam_savedgamemap)+"P")) )
						and v.cachePatch((G_BuildMapName(p.sam_savedgamemap)+"P")) or v.cachePatch("BLANKLVL")
						
						v.drawScaled(16<<16, 20<<16, 1<<15, LVLPATCH, TRANSF2|vLe|vTo)
						v.drawScaled(224<<16, 20<<16, 1<<15, LVLPATCH, TRANSF2|vRi|vTo)
					end
				else
				v.drawString(177, 129, "\x80"+"Unknown Stage", TRANSF1, "center")
				v.drawString(174, 166, "\x80"+"The mod this stage came with seems to currently not be loaded,", TRANSF1, "small-center")
				v.drawString(174, 174, "\x80"+"Alternatively, the levelheader is deleted or missing.", TRANSF1, "small-center")
				end
				if p.sam_saveddifficulty
					if p.sam_saveddifficulty == 1
						v.drawString(160, 123, "\x8A"+"Hyper Mode", TRANSF1, "small-center")
					else
						v.drawString(160, 123, "\x89"+"Fusion Mode", TRANSF1, "small-center")
					end
				else
					v.drawString(160, 123, "Normal Mode", TRANSF1, "small-center")
				end
				
				--Show achievements you've earned!
				if p.sam_achievement1
					if p.sam_achievement1 == 3
					v.drawScaled(258<<16, 100<<16, t.scale, v.cachePatch("SAMSAVSF"), TRANSF2, v.getColormap(nil, SKINCOLOR_SUPERGOLD5))
						if t.randomsparkscale
						v.drawScaled(257<<16+t.randomsparkx, 102<<16+t.randomsparky+(t.randomsparkscale*9), t.randomsparkscale, v.cachePatch("SSPKA0"), t.randomsparkt)
						end						
					elseif p.sam_achievement1 == 2
						v.drawScaled(258<<16, 100<<16, t.scale, v.cachePatch("SAMSAVSF"), TRANSF2, v.getColormap(nil, SKINCOLOR_AETHER))
					else
						v.drawScaled(258<<16, 100<<16, t.scale, v.cachePatch("SAMSAVSF"), TRANSF2, v.getColormap(nil, SKINCOLOR_BRONZE))
					end
				else
					v.drawScaled(258<<16, 100<<16, t.scale, v.cachePatch("SAMSAVSF"), T70, v.getColormap(nil, SKINCOLOR_GREY))					
				end	
				
				if p.sam_achievement2
					if p.sam_achievement2 == 3
						v.drawScaled(246<<16, 114<<16, t.scale, v.cachePatch("SAMSAVSG"), TRANSF2, v.getColormap(nil, SKINCOLOR_SUPERGOLD5))
						if t.randomsparkscale
							v.drawScaled(245<<16+t.randomsparkx, 116<<16+t.randomsparky+(t.randomsparkscale*9), t.randomsparkscale, v.cachePatch("SSPKA0"), t.randomsparkt)
						end							
					elseif p.sam_achievement2 == 2
						v.drawScaled(246<<16, 114<<16, t.scale, v.cachePatch("SAMSAVSG"), TRANSF2, v.getColormap(nil, SKINCOLOR_AETHER))
					else
						v.drawScaled(246<<16, 114<<16, t.scale, v.cachePatch("SAMSAVSG"), TRANSF2, v.getColormap(nil, SKINCOLOR_BRONZE))
					end
				else
					v.drawScaled(246<<16, 114<<16, t.scale, v.cachePatch("SAMSAVSG"), T70, v.getColormap(nil, SKINCOLOR_GREY))				
				end
				
				if p.sam_achievement3
					if p.sam_achievement3 == 3
						v.drawScaled(266<<16, 114<<16, t.scale, v.cachePatch("SAMSAVSH"), TRANSF2, v.getColormap(nil, SKINCOLOR_SUPERGOLD5))
						if t.randomsparkscale
							v.drawScaled(265<<16+t.randomsparkx, 116<<16+t.randomsparky+(t.randomsparkscale*9), t.randomsparkscale, v.cachePatch("SSPKA0"), t.randomsparkt)
						end						
					elseif p.sam_achievement3 == 2
						v.drawScaled(266<<16, 114<<16, t.scale, v.cachePatch("SAMSAVSH"), TRANSF2, v.getColormap(nil, SKINCOLOR_AETHER))
					else
						v.drawScaled(266<<16, 114<<16, t.scale, v.cachePatch("SAMSAVSH"), TRANSF2, v.getColormap(nil, SKINCOLOR_BRONZE))
					end
				else
					v.drawScaled(266<<16, 114<<16, t.scale, v.cachePatch("SAMSAVSH"), T70, v.getColormap(nil, SKINCOLOR_GREY))					
				end
				
				if p.sams_realitemcompletion
					v.drawString(58, 120, "\x80"+p.sams_realitemcompletion+"%", TRANSF1, "small-center")
				else
					v.drawString(58, 120, "\x80"+"0"+"%", TRANSF1, "small-center")
				end
				if p.sam_gravitysuit
					if (p.sam_gravitysuit != 1)
						v.drawScaled(300<<16, 153<<16, t.scale, v.getSprite2Patch("samus", SPR2_STND, false, A, 1),TRANSF2,v.getColormap(nil,(p.customsuitc3) and p.customsuitc3 or SKINCOLOR_GRAVITYSUIT))
					else
						v.drawScaled(300<<16, 153<<16, t.scale, v.getSprite2Patch("samus", SPR2_STND, false, A, 1),TRANSF2,(not p.customsuitc2) and cmv or v.getColormap(nil, p.customsuitc2))
					end
					v.drawScaled(300<<16, 153<<16, t.scale, v.getSprite2Patch("samus", SPR2_STND, true, A, 1), TRANSF2,v.getColormap(nil,(p.samvisorcolor!=nil) and p.samvisorcolor or SKINCOLOR_EMERALD))
				else
					local COLOR = v.getColormap(nil, (p.customsuitc1) and p.customsuitc1 or SKINCOLOR_POWERSUIT)
					v.drawScaled(300<<16, 153<<16, t.scale, (v.getSprite2Patch("basesamus", SPR2_STND, false, A, 1)), TRANSF2, COLOR)
				end
			
			v.drawString(58, 128, "\x82"+p.sam_energy, TRANSF2, "center")
			if p.sam_energytanksmax
				local tS,EPATCH = t.scale, v.cachePatch("ETNF")
				v.drawScaled(72<<16+4<<16, 126<<16, tS,EPATCH, TRANSF2)
				if (p.sam_energytanksmax > 2)
					v.drawScaled(72<<16+19<<16, 126<<16, tS,EPATCH, TRANSF2)
					if (p.sam_energytanksmax > 4)
						v.drawScaled(72<<16+34<<16, 126<<16, tS,EPATCH, TRANSF2)			
						if (p.sam_energytanksmax > 6)
							v.drawScaled(72<<16+4<<16, 136<<16, tS,EPATCH, TRANSF2)
							if (p.sam_energytanksmax > 8)
								v.drawScaled(72<<16+19<<16, 136<<16, tS,EPATCH, TRANSF2)
								if (p.sam_energytanksmax > 10)
									v.drawScaled(72<<16+34<<16, 136<<16, tS,EPATCH, TRANSF2)
								end
							end
						end
					end
				end
			end
		else --No save file!
			if p.sam_initmenu
				v.drawString(161, 127, "\x80"+"PICK A FILE", TRANSF2, "center")
			else
				v.drawString(161, 127, "\x80"+"NEW SAVE FILE", TRANSF2, "center")
			end
		end
	  end
	v.drawString(160, 51, "\x87"+"PLAY WITHOUT SAVING", TRANSF1, "center")		  
		
	elseif t.submenu == 2 --Continue or restart?
	
		if t.menuvertical == 1 
			v.drawScaled(30<<16, 43<<16, t.scale, v.cachePatch(t.cursoranim), TRANSF1)
			v.drawString(191, 162, " Continue with your current saved progress.", TRANSF2|vBo|vLe, "center")
			
			--And background boxes!
			v.drawScaled(93<<16, 29<<16, t.scale, VPATCH, TRANSF1, cmv)
			v.drawScaled(93<<16, 90<<16, t.scale, VPATCH, T70, cmv)
			
			if not (ADMIN) and SAMUSNETSAVES == false
				v.drawString(160, 51, "\x86"+"CONTINUE GAME", TRANSF1, "center")
			else
				v.drawString(160, 51, "\x82"+"CONTINUE GAME", TRANSF1, "center")
			end
			v.drawString(161, 113, "\x88"+"START FRESH", T70, "center")	
		else
			v.drawString(191, 162, "Start anew without your gathered equipment.", TRANSF2|vBo|vLe, "center")
			v.drawString(190, 174, "You'll retain achievements and the Scan Visor.", TRANSF2|vBo|vLe, "center")			
			v.drawScaled(30<<16, 102<<16, t.scale, v.cachePatch(t.cursoranim), TRANSF1)
			
			--And background boxes!
			v.drawScaled(93<<16, 29<<16, t.scale, VPATCH, T70, cmv)
			v.drawScaled(93<<16, 90<<16, t.scale, VPATCH, TRANSF1, cmv)
			
			if not (ADMIN) and SAMUSNETSAVES == false
				v.drawString(160, 51, "\x86"+"CONTINUE GAME", T80, "center")
			else
				v.drawString(160, 51, "\x82"+"CONTINUE GAME", T70, "center")
			end
			v.drawString(161, 113, "\x88"+"START FRESH", TRANSF1, "center")					
		end	
		
	elseif t.submenu == 3 --Continue?
		if t.menuvertical == 1
			if p.sam_savedgamemap != nil and (G_BuildMapTitle(p.sam_savedgamemap)) != nil
				v.drawString(160, 10, G_BuildMapTitle(p.sam_savedgamemap), TRANSF2, "center")
				local LVLPATCH = ( v.patchExists((G_BuildMapName(p.sam_savedgamemap)+"P")) )
				and v.cachePatch((G_BuildMapName(p.sam_savedgamemap)+"P")) or v.cachePatch("BLANKLVL")
				
				v.drawScaled(16<<16, 20<<16, 1<<15, LVLPATCH, TRANSF2|vLe|vTo)
				v.drawScaled(224<<16, 20<<16, 1<<15, LVLPATCH, TRANSF2|vRi|vTo)
			end			
		
			v.drawScaled(30<<16, 43<<16, t.scale, v.cachePatch(t.cursoranim), TRANSF1)	
			v.drawString(190, 162, "Continue from your last known level.", TRANSF2|vBo|vLe, "center")
		
			--And background boxes!
			v.drawScaled(93<<16, 29<<16, t.scale, VPATCH, TRANSF1, v.getColormap(nil, SKINCOLOR_GRAVITYSUIT))
			v.drawScaled(93<<16, 90<<16, t.scale, VPATCH, T70, v.getColormap(nil, SKINCOLOR_GRAVITYSUIT))
	
			v.drawString(163, 51, "\x82"+"LAST MAP", TRANSF1, "center")
			v.drawString(160, 113, "\x82"+"CURRENT MAP", T70, "center")			
		
		else
			local LASTLVL = gamemap
			if gamemap == 812 --Backups.
				LASTLVL = (p.sam_lastlvl) or (spstage_start) or bootmap
			end
			if LASTLVL and (G_BuildMapTitle(LASTLVL)) != nil
				v.drawString(160, 10, G_BuildMapTitle(LASTLVL), TRANSF2, "center")
				local LVLPATCH = ( v.patchExists((G_BuildMapName(LASTLVL)+"P")) )
				and v.cachePatch((G_BuildMapName(LASTLVL)+"P")) or v.cachePatch("BLANKLVL")
				
				v.drawScaled(16<<16, 20<<16, 1<<15, LVLPATCH, TRANSF2|vLe|vTo)
				v.drawScaled(224<<16, 20<<16, 1<<15, LVLPATCH, TRANSF2|vRi|vTo)
			end
		
			v.drawString(190, 162, "Continue from current level.", TRANSF2|vBo|vLe, "center")
			v.drawString(191, 174, "You'll keep all equipment.", TRANSF2|vBo|vLe, "center")			
			v.drawScaled(30<<16, 102<<16, t.scale, v.cachePatch(t.cursoranim), TRANSF1)
		
			--And background boxes!
			v.drawScaled(93<<16, 29<<16, t.scale, VPATCH, T70, v.getColormap(nil, SKINCOLOR_GRAVITYSUIT))
			v.drawScaled(93<<16, 90<<16, t.scale, VPATCH, TRANSF1, v.getColormap(nil, SKINCOLOR_GRAVITYSUIT))
	
			v.drawString(163, 51, "\x82"+"LAST MAP", T70, "center")
			v.drawString(160, 113, "\x82"+"CURRENT MAP", TRANSF1, "center")							
		
		end
	elseif t.submenu == 4 --Restart?
		local CT =  (ADMIN) and "\x86" or "\x88"
		if t.menuvertical == 1
		
			if gamemap and (G_BuildMapTitle(gamemap)) != nil
			v.drawString(160, 10, G_BuildMapTitle(gamemap), TRANSF2, "center")
				local LVLPATCH = ( v.patchExists((G_BuildMapName(gamemap)+"P")) )
				and v.cachePatch((G_BuildMapName(gamemap)+"P")) or v.cachePatch("BLANKLVL")
				
				v.drawScaled(16<<16, 20<<16, 1<<15, LVLPATCH, TRANSF2|vLe|vTo)
				v.drawScaled(224<<16, 20<<16, 1<<15, LVLPATCH, TRANSF2|vRi|vTo)
			end			
		
			v.drawScaled(30<<16, 43<<16, t.scale, v.cachePatch(t.cursoranim), TRANSF1)	
			v.drawString(190, 162, "Restarts from currently loaded stage.", TRANSF2|vBo|vLe, "center")
		
			--And background boxes!
			v.drawScaled(93<<16, 29<<16, t.scale, VPATCH, TRANSF1, v.getColormap(nil, SKINCOLOR_RED))
			v.drawScaled(93<<16, 90<<16, t.scale, VPATCH, T70, v.getColormap(nil, SKINCOLOR_RED))
		
			v.drawString(163, 51, "\x88"+"CURRENT MAP", TRANSF1, "center")
			if CT == "\x88" and SAMUSNETSAVES == false
				v.drawString(160, 113, "\x86"+"TRUE RESTART", T70, "center")
			else
				v.drawString(160, 113, "\x88"+"TRUE RESTART", T70, "center")
			end
		
		else
			if (G_BuildMapTitle(1)) != nil
				v.drawString(160, 10, G_BuildMapTitle(1), TRANSF2, "center")
				local LVLPATCH = ( v.patchExists((G_BuildMapName(1)+"P")) )
				and v.cachePatch((G_BuildMapName(1)+"P")) or v.cachePatch("BLANKLVL")
				
				v.drawScaled(16<<16, 20<<16, 1<<15, LVLPATCH, TRANSF2|vLe|vTo)
				v.drawScaled(224<<16, 20<<16, 1<<15, LVLPATCH, TRANSF2|vRi|vTo)
			end
		
		
			v.drawString(188, 162, "Attempts to restart from GFZ1.", TRANSF2|vBo|vLe, "center")
			v.drawString(190, 174, "Achievements can unlock again.", TRANSF2|vBo|vLe, "center")			
			v.drawScaled(30<<16, 102<<16, t.scale, v.cachePatch(t.cursoranim), TRANSF1)
		
			--And background boxes!
			local CMr = v.getColormap(nil, SKINCOLOR_RED)
			v.drawScaled(93<<16, 29<<16, t.scale, VPATCH, T70, CMr)
			v.drawScaled(93<<16, 90<<16, t.scale, VPATCH, TRANSF1, CMr)
		
			v.drawString(163, 51, "\x88"+"CURRENT MAP", T70, "center")
			v.drawString(160, 113, CT+"TRUE RESTART", TRANSF1, "center")
		end
	end
end)

//Ship HUD end....
//No point checking otherwise.

--The score HUD now shows you what powerups you have. Only works in COOP!
hud.add(function(v)
	if (gametype != GT_COOP) 
	or not (displayplayer and displayplayer.mo and YouAreSamus(displayplayer.mo))
		return --
	end
	local p = displayplayer
	--All of this is accounted for the single player Samus powerup tally.
	local missilecount, missilemax, smissilecount, smissilemax, pbombcount, pbombmax,
	bombs, gravitysuit, variasuit, highjump, spacejump, speedbooster, powergrip,
	boostball, spiderball, screwattack, chargebeam, spazerbeam, wavebeam,
	icebeam, plasmabeam, hyperbeam, hyperbeamco	
	if p.sam_gravitysuit
		variasuit = true
		gravitysuit = (p.sam_gravitysuit!=1) and true or false
	else 
		variasuit = false
		gravitysuit = false
	end
	if p.sam_bombs bombs = true else bombs = false end
	if p.sam_highjump highjump = true else highjump = false end
	if p.sam_spiderball spiderball = true else spiderball = false end
	if p.sam_spacejump spacejump = true else spacejump = false end
	if p.samspbs speedbooster = true else speedbooster = false end
	if p.sambsbl boostball = true else boostball = false end
	if p.sam_power_grip powergrip = true else powergrip = false end
	if p.sam_screwattack screwattack = true else screwattack = false end
	if p.sam_chargebeam chargebeam = true else chargebeam = false end
	if p.sam_spazerbeam spazerbeam = true else spazerbeam = false end
	if p.sam_wavebeam wavebeam = true else wavebeam = false end
	if p.sam_icebeam icebeam = true else icebeam = false end
	if p.sam_plasmabeam plasmabeam = true else plasmabeam = false end
	if p.sam_hyperbeam hyperbeam = true else hyperbeam = false end
	if p.sam_hyperbeamco hyperbeamco = p.sam_hyperbeamco else hyperbeamco = false end
	missilecount = p.sammissiles
	missilemax = p.sammissilesmax
	smissilecount = p.samsupermissiles
	smissilemax = p.samsupermissilesmax
	pbombcount = p.sampw
	pbombmax = p.sampwmax

	
	local HX,HY = hudinfo[HUD_LIVES].x, hudinfo[HUD_LIVES].y	
	local PATCH = (variasuit) and v.cachePatch("SAMEQUIP") or v.cachePatch("SAMEQUPP")
	v.drawScaled(164<<16, 178<<16, FRACUNIT, PATCH)
		
	v.drawString(HX+90, HY-84, missilecount+" / "+missilemax, T20, "center")
	v.drawString(HX+88, HY-108, smissilecount+" / "+smissilemax, T20, "center")
	v.drawString(HX+88, HY-130, pbombcount+" / "+pbombmax, T20, "center")
		
	if gravitysuit
		v.drawScaled(200<<16+14100, 64<<16, FRACUNIT, v.cachePatch("EQGRAVIT"))
	end
	if variasuit
		v.drawScaled(200<<16+14100, 56<<16, FRACUNIT, v.cachePatch("EQVARIAS"))
	end
	if powergrip
		v.drawScaled(200<<16+14100, 87<<16, FRACUNIT, v.cachePatch("EQPWGRP"))
	end	
	if bombs
		v.drawScaled(200<<16+14100, 95<<16-30000, FRACUNIT, v.cachePatch("EQBOMBS"))
	end
	if highjump
		v.drawScaled(200<<16+14100, 150<<16, FRACUNIT, v.cachePatch("EQHIGHJ"))
		v.drawScaled(200<<16+14100, 118<<16, FRACUNIT, v.cachePatch("EQSPRING"))
	end
	if spiderball
		v.drawScaled(200<<16+14100, 110<<16, FRACUNIT, v.cachePatch("EQSPIDR"))
	end
	if boostball
		v.drawScaled(200<<16+14100, 102<<16, FRACUNIT, v.cachePatch("EQBOOST"))
	end
	if screwattack
		v.drawScaled(200<<16+14100, 127<<16, FRACUNIT, v.cachePatch("EQSCREW"))
	end
	if spacejump
		v.drawScaled(200<<16+14100, 159<<16, FRACUNIT, v.cachePatch("EQSPACEJ"))
	end
	if speedbooster
		v.drawScaled(200<<16+14100, 167<<16, FRACUNIT, v.cachePatch("EQSPEEDB"))
	end
	if chargebeam
		v.drawScaled(64<<16, 119<<16, FRACUNIT, v.cachePatch("EQCHARGE"))
	end
	if spazerbeam
		v.drawScaled(64<<16, 127<<16, FRACUNIT, v.cachePatch("EQSPAZER"))
	end
	if wavebeam
		v.drawScaled(64<<16, 135<<16, FRACUNIT, v.cachePatch("EQWAVE"))
	end
	if icebeam
		v.drawScaled(64<<16, 142<<16, FRACUNIT, v.cachePatch("EQICE"))
	end
	if plasmabeam
		v.drawScaled(64<<16, 151<<16, FRACUNIT, v.cachePatch("EQPLASMA"))
	end
	if hyperbeam
		v.drawScaled(84<<16, 173<<16, FRACUNIT, v.cachePatch("EQHYPER"), nil, v.getColormap(nil, (hyperbeamco) and hyperbeamco or SKINCOLOR_WHITE))	
	end
end, "scores")
