function SongMeterDisplayX(pn)
	if Center1Player() then
		return SCREEN_CENTER_X
	else
		return pn == PLAYER_1 and SCREEN_LEFT+16 or SCREEN_RIGHT-16
	end
end

function SongMeterDisplayY(pn)
	return Center1Player() and SCREEN_TOP+50 or SCREEN_CENTER_Y
end

function SongMeterDisplayCommand(pn)
	if Center1Player() then
		return function(self) self:draworder(50):zoom(0):y(SCREEN_TOP-24):sleep(1.5):decelerate(0.5):zoom(1):y(SCREEN_TOP+50) end
	else
		local xAdd = (pn == PLAYER_1) and -24 or 24
		return function(self) self:draworder(5):rotationz(-90):zoom(0):addx(xAdd):sleep(1.5):decelerate(0.5):zoom(1):addx(xAdd*-1) end
	end
end

local numbered_stages= {
	Stage_1st= true,
	Stage_2nd= true,
	Stage_3rd= true,
	Stage_4th= true,
	Stage_5th= true,
	Stage_6th= true,
	Stage_Next= true,
}

function thified_curstage_index(on_eval)
	local cur_stage= GAMESTATE:GetCurrentStage()
	local adjust= 1
	-- hack: ScreenEvaluation shows the current stage, but it needs to show
	-- the last stage instead.  Adjust the amount.
	if on_eval then
		adjust= 0
	end
	if numbered_stages[cur_stage] then
		return FormatNumberAndSuffix(GAMESTATE:GetCurrentStageIndex() + adjust)
	else
		return ToEnumShortString(cur_stage)
	end
end

function check_stop_course_early()
	return course_stopped_by_pause_menu
end
