# DO NOT EDIT THIS SECTION #####################################################
[Global]
FallbackTheme=_fallback

# Now you can edit or add things. ##############################################
[Common]
AutoSetStyle=UsingAutoSetStyle()

;DefaultModifiers="1x,70% passmark,failatend"
;DefaultNoteSkinName="default"

# oy vey
;DifficultiesToShow="beginner,easy"
DifficultiesToShow=GetAvailableDifficulties()
# Just enough to cover every (non-Another) freestyle difficulty
CourseDifficultiesToShow="easy,medium,hard"

# Is this new? I think this is new.
# Predefined Images include: Banner,Background,CDTitle,Jacket,CDImage,Disc
ImageCache="Banner,Background,Jacket"

# Oh no.
UseAdvancedJudgments=true
# Custom judgment graphic handling doesn't properly handle timing window modes
# with 5 windows (including Miss) or less. So I don't wanna use it right now.
DefaultJudgment="Fallback"
DefaultToasty="None"

[SongManager]
# todo: ?????????
ExtraStagePlayerModifiers="1x"
ExtraStageStageModifiers="0% passmark, failimmediate"
OMESPlayerModifiers="1x"
OMESStageModifiers="0% passmark, failimmediate"

# "Legacy-but-still-works". q: cut ExtraColorMeter?
ExtraColorMeter=GetExtraColorThreshold()
ExtraColor=NeonColor.Red
ExtraStage2DifficultyMax=GetEncoreMaxDifficulty()

# What group colors?
NumSongGroupColors=1
SongGroupColor1=LocalGoldColor(1)

[CustomDifficulty]
# Even if I wanted to rename the difficulties just for para mode,
# CustomDifficulty is still clunky... and the naming would be ignored for ParaPara(+) charts anyway
Names=""

[BitmapText]
# Wait, will this ever be seen?
NumRainbowColors=8
RainbowColor1=NeonColor.Red	-- red
RainbowColor2=NeonColor.Gold	-- orange
RainbowColor3=NeonColor.Yellow	-- yellow
RainbowColor4=NeonColor.Green	-- green
RainbowColor5=NeonColor.Cyan	-- cyan
RainbowColor6=NeonColor.Blue	-- blue
RainbowColor7=NeonColor.Purple	-- purple
RainbowColor8=NeonColor.Pink	-- magneta

[Combo]
# Things the combo does when you bang on it, and what the text does
PulseCommand=%function(self,param) self:stoptweening():y(-5):linear(0.05):y(0):zoom(param.Zoom) end
PulseLabelCommand=%function(self,param) self:stoptweening():zoom(param.LabelZoom):y(18):linear(0.05):y(20) end
NumberOnCommand=strokecolor,Color.Black;shadowlengthy,2
LabelOnCommand=y,20;zoom,0.75;strokecolor,Color.Black;shadowlengthy,2

[FadingBanner]
# GO AWAY
BannerOnCommand=pause;visible,false

[Gameplay]
UseInternalJudgment=false

[GameState]
;DefaultSong="EKS-D ParaPara/Bang Bang [156.10 BPM]"

AllowLateJoin=AllowLateJoin()

[GraphDisplay]
BodyWidth=(_screen.w-145)/2
BodyHeight=145

[GraphDisplayP1]
Fallback="GraphDisplay"

[GraphDisplayP2]
Fallback="GraphDisplay"

[HelpDisplay]
# The help display on the menus, and what it does.
# How fast it changes between texts (seconds)
TipShowTime=4
# How long each switch takes (seconds)
TipSwitchTime=2
TipOnCommand=diffuseblink;strokecolor,Color.Black;zoom,0.5;maxwidth,_screen.w/0.5

[HoldJudgment]
HoldJudgmentMissedHoldCommand=finishtweening;diffusealpha,1;zoom,1;vibrate;effectmagnitude,1,4,4;y,-2;linear,0.1;y,0;sleep,0.8;linear,0.01;diffusealpha,0
HoldJudgmentLetGoCommand=finishtweening;diffusealpha,1;zoom,1;y,-2;linear,0.1;y,0;sleep,0.6;linear,0.01;diffusealpha,0
HoldJudgmentHeldCommand=finishtweening;diffusealpha,1;zoom,1.2;linear,0.05;zoom,1;sleep,0.5;linear,0.01;diffusealpha,0
#Extra stuff for custom... stuff
HoldJudgmentCheckHitCommand=finishtweening;diffusealpha,0
HoldJudgmentCheckMissCommand=finishtweening;zoom,1;diffuse,Color.White;strokecolor,Color.Black;linear,0.06;diffuse,MESColor[22];sleep,0.8;linear,0.01;diffusealpha,0

[Judgment]
JudgmentOnCommand=
# Just one command for everything, we don't need to go too crazy this time
;JudgmentProW1Command=finishtweening;diffusealpha,1;zoom,1;linear,0.05;zoom,0.8;sleep,0.8;linear,0.01;diffusealpha,0
;JudgmentProW2Command=finishtweening;diffusealpha,1;zoom,1;linear,0.05;zoom,0.8;sleep,0.8;linear,0.01;diffusealpha,0
;JudgmentProW3Command=finishtweening;diffusealpha,1;zoom,1;linear,0.05;zoom,0.8;sleep,0.8;linear,0.01;diffusealpha,0
;JudgmentProW4Command=finishtweening;diffusealpha,1;zoom,1;linear,0.05;zoom,0.8;sleep,0.8;linear,0.01;diffusealpha,0
;JudgmentProW5Command=finishtweening;diffusealpha,1;zoom,1;linear,0.05;zoom,0.8;sleep,0.8;linear,0.01;diffusealpha,0
JudgmentW1Command=finishtweening;diffusealpha,1;zoom,0.7;linear,0.05;zoom,0.5;sleep,0.5;linear,0.01;diffusealpha,0
;JudgmentW2Command=finishtweening;diffusealpha,1;zoom,1;linear,0.05;zoom,0.8;sleep,0.8;linear,0.01;diffusealpha,0
;JudgmentW3Command=finishtweening;diffusealpha,1;zoom,1;linear,0.05;zoom,0.8;sleep,0.8;linear,0.01;diffusealpha,0
;JudgmentW4Command=finishtweening;diffusealpha,1;zoom,1;linear,0.05;zoom,0.8;sleep,0.8;linear,0.01;diffusealpha,0
;JudgmentW5Command=finishtweening;diffusealpha,1;zoom,1;linear,0.05;zoom,0.8;sleep,0.8;linear,0.01;diffusealpha,0
;JudgmentMissCommand=finishtweening;diffusealpha,1;zoom,1;linear,0.05;zoom,0.8;sleep,0.8;linear,0.01;diffusealpha,0

[LifeMeterBar]
# Percentage in which the game starts yelling at you to stop sucking
DangerThreshold=0.15
# And how much it starts up at.
InitialValue=LoadModule("Gameplay.Life.lua")("init")
StreamX=-120
# Uh oh.
LifePercentChangeW1=LoadModule("Gameplay.Life.lua")("W1")
LifePercentChangeW2=LoadModule("Gameplay.Life.lua")("W2")
LifePercentChangeW3=LoadModule("Gameplay.Life.lua")("W3")
LifePercentChangeW4=LoadModule("Gameplay.Life.lua")("W4")
LifePercentChangeW5=LoadModule("Gameplay.Life.lua")("W5")
LifePercentChangeMiss=LoadModule("Gameplay.Life.lua")("Miss")
# keep the pump overrides the way they are lmao
LifePercentChangeHeld=IsGame("pump") and 0.000 or LoadModule("Gameplay.Life.lua")("W1")
LifePercentChangeLetGo=IsGame("pump") and 0.000 or LoadModule("Gameplay.Life.lua")("Miss")

[MenuTimer]
Text1OnCommand=stopeffect;stoptweening;strokecolor,LocalGoldColor(0);zoom,0.9

[MusicWheel]
HideActiveSectionTitle=false
UseSectionsWithPreferredGroup=true
;OnlyShowActiveSection=true

FadeSeconds=0.2
SwitchSeconds=0.2
# Very basic wheel, except for a gap between the focused item and the rest of the wheel
# to make decent space for the previewvid area.
ItemTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \
	local dirAdd = math.abs(offsetFromCenter) < 1 and 0 or (offsetFromCenter < 0 and -0.75 or 0.75) \
	self:x((offsetFromCenter+dirAdd)*90) \
	if math.abs(offsetFromCenter) < 1 then \
		self:x(offsetFromCenter*157.5) \
	end \
end
NumWheelItems=11

NumSectionColors=1
SectionColor1=LocalBlueColor(1)
#
EmptyColor=color("#222222")
#
SortBPMDivision=10
#
MostPlayedSongsToShow=50

ShowRoulette=false
ShowRandom=false
ShowPortal=true

ModeMenuChoiceNames="Preferred,Group,Title,Artist,Genre,Bpm,Length,Popularity,Recent"

[MusicWheelItem]
WheelNotifyIconX=34
WheelNotifyIconY=-34
WheelNotifyIconOnCommand=zoom,0.75;horizalign,right;vertalign,top;shadowlength,1;shadowcolor,color("0.1,0.1,0.1,0.5")
#GO AWAY
SongNameX=-9999
SongNameY=0
SongNameOnCommand=visible,false
#
CourseX=-9999
CourseY=0
CourseOnCommand=visible,false
#
SectionExpandedX=-9999
SectionExpandedY=
SectionExpandedOnCommand=visible,false
#
SectionCollapsedX=-9999
SectionCollapsedY=
SectionCollapsedOnCommand=visible,false
#
SectionCountX=34
SectionCountY=-37
SectionCountOnCommand=zoom,0.25;horizalign,right;shadowlength,1;strokecolor,LocalGoldColor(0)
#
SortX=-9999
SortY=0
SortOnCommand=visible,false
#
ModeX=-9999
ModeY=0
ModeOnCommand=visible,false
#
PortalX=-999
PortalY=0
PortalOnCommand=visible,false
#
GradeP1X=-38
GradeP1Y=0
GradeP2X=38
GradeP2Y=0
GradesShowMachine=false

[NoteField]
#...?
ShowBoard=true

[OptionRow]
;ShowModIcons=true
#
FrameX=0
FrameY=0
FrameOnCommand=
#
TitleX=4
TitleY=0
TitleOnCommand=shadowlength,0;uppercase,true;zoom,0.5;maxwidth,160/0.5;horizalign,left
TitleGainFocusCommand=diffuse,Color.White;strokecolor,Color("Black")
TitleLoseFocusCommand=diffuse,LocalGoldColor(1);strokecolor,Color("Black")
#
ItemsStartX=(_screen.w/4)-16
ItemsEndX=(_screen.w - 10) * 0.65
ItemsGapX=14
ItemsMinBaseZoom=0.4
ItemsLongRowP1X=SCREEN_CENTER_X-60
ItemsLongRowP2X=SCREEN_CENTER_X+100
ItemsLongRowSharedX=SCREEN_CENTER_X
ItemOnCommand=shadowlength,0;zoom,0.4;strokecolor,Color("Outline")
ItemGainFocusCommand=
ItemLoseFocusCommand=
#
ColorSelected=Color.White
ColorNotSelected=ColorBlend(LocalGoldColor(1),Color.White)
ColorDisabled=color("0.25,0.25,0.25,1")
#
TweenSeconds=0.1

[OptionRowService]
#
TitleX=_screen.cx
TitleY=
TitleOnCommand=shadowlength,0;uppercase,true;maxwidth,600;zoom,0.75
TitleGainFocusCommand=diffuse,color("1,1,1,1");strokecolor,color("0,0,0,1")
TitleLoseFocusCommand=diffuse,color("0.5,0.5,0.5,1");strokecolor,color("0,0,0,1")

[OptionRowMiniMenu]
Fallback="OptionRow"
#
FrameOnCommand=visible,false
#
TitleX=_screen.cx - 10
TitleOnCommand=uppercase,true;wrapwidthpixels,_screen.w - 10;zoom,0.6;horizalign,right;maxwidth,_screen.w - 10;strokecolor,Color.Black
TitleGainFocusCommand=diffuse,Color.White
TitleLoseFocusCommand=diffuse,LocalGoldColor(1)
#
ItemsStartX=_screen.cx
ItemsEndX=_screen.w
ItemsLongRowP1X=SCREEN_CENTER_X-60
ItemsLongRowP2X=SCREEN_CENTER_X+100
ItemsLongRowSharedX=_screen.cx + 10
ItemOnCommand=horizalign,left;shadowlength,0;zoom,0.5;wrapwidthpixels,_screen.w - 10;maxwidth,_screen.w - 10;strokecolor,Color.Black
#
TweenSeconds=0.1
ColorSelected=LocalBlueColor(1)
ColorNotSelected=ColorDarkTone(LocalBlueColor(1))
ColorDisabled=color("0.5,0.5,0.5,1")

[OptionRowMiniMenuContext]
Fallback="OptionRow"
#
FrameOnCommand=visible,false
#
TitleX=
TitleOnCommand=shadowlength,0;uppercase,true;wrapwidthpixels,_screen.w;zoom,0.6;horizalign,left;maxwidth,_screen.w

[OptionRowToggleSongs]
Fallback="OptionRow"

[OptionsUnderlineP1]
LeftOnCommand=rotationz,2;halign,1;blend,Blend.Add
MiddleOnCommand=rotationz,2;blend,Blend.Add
RightOnCommand=rotationz,2;halign,0;blend,Blend.Add

[OptionsUnderlineP2]
LeftOnCommand=rotationz,-2;halign,1;blend,Blend.Add
MiddleOnCommand=rotationz,-2;blend,Blend.Add
RightOnCommand=rotationz,-2;halign,0;blend,Blend.Add
LeftY=10
MiddleY=10
RightY=10

[Player]
ReceptorArrowsYStandard=-144
ReceptorArrowsYReverse=170
TapJudgmentsUnderField=ThemePrefs.Get("JudgmentsUnderField")
HoldJudgmentsUnderField=ThemePrefs.Get("JudgmentsUnderField")
ComboUnderField=ThemePrefs.Get("ComboUnderField")

RollBodyIncrementsCombo=ThemePrefs.Get("ComboOnRolls")
# is this a thing at all ever?
ScoreMissedHoldsAndRolls=false
# So this is kind of a minefield.
# Disabled, it may make some charts impossible to FC.
# Enabled, it's too easy for someone to hold down all the columns and get a MFC.
HoldTriggersTapNotes=IsGame("para")
# Nah...
ContinueHold=false

PercentUntilColorCombo=0.00001

[PlayerStageStats]
# We can't escape the fiddly parts of the ITG percent scoring
NumGradeTiersUsed=8
# SSS
GradePercentTier01=1.000000
# SS
GradePercentTier02=0.900000
# S
GradePercentTier03=0.800000
# A
GradePercentTier04=0.700000
#B
GradePercentTier05=0.600000
#C
GradePercentTier06=0.500000
#D
GradePercentTier07=0.400000
#E
GradePercentTier08=-99999.000000

[RollingNumbers]
TextFormat="%05.0f"
ApproachSeconds=0.2
Commify=true
LeadingZeroMultiplyColor=LocalBlueColor(0.25)

[ScoreKeeperNormal]
# Uh oh (part 2)
PercentScoreWeightCheckpointHit=LoadModule("Gameplay.Score.lua")("W1")
PercentScoreWeightCheckpointMiss=LoadModule("Gameplay.Score.lua")("Miss")
PercentScoreWeightHeld=IsGame("pump") and 0 or LoadModule("Gameplay.Score.lua")("W1")
PercentScoreWeightHitMine=LoadModule("Gameplay.Score.lua")("Ouch")
PercentScoreWeightMissedHold=LoadModule("Gameplay.Score.lua")("Miss")
PercentScoreWeightLetGo=LoadModule("Gameplay.Score.lua")("Miss")
PercentScoreWeightMiss=LoadModule("Gameplay.Score.lua")("Miss")
PercentScoreWeightW1=LoadModule("Gameplay.Score.lua")("W1")
PercentScoreWeightW2=LoadModule("Gameplay.Score.lua")("W2")
PercentScoreWeightW3=LoadModule("Gameplay.Score.lua")("W3")
PercentScoreWeightW4=LoadModule("Gameplay.Score.lua")("W4")
PercentScoreWeightW5=LoadModule("Gameplay.Score.lua")("W5")

GradeWeightCheckpointHit=LoadModule("Gameplay.Score.lua")("W1")
GradeWeightCheckpointMiss=LoadModule("Gameplay.Score.lua")("Miss")
GradeWeightHeld=IsGame("pump") and 0 or LoadModule("Gameplay.Score.lua")("W1")
GradeWeightHitMine=LoadModule("Gameplay.Score.lua")("Ouch")
GradeWeightMissedHold=LoadModule("Gameplay.Score.lua")("Miss")
GradeWeightLetGo=LoadModule("Gameplay.Score.lua")("Miss")
GradeWeightMiss=LoadModule("Gameplay.Score.lua")("Miss")
GradeWeightW1=LoadModule("Gameplay.Score.lua")("W1")
GradeWeightW2=LoadModule("Gameplay.Score.lua")("W2")
GradeWeightW3=LoadModule("Gameplay.Score.lua")("W3")
GradeWeightW4=LoadModule("Gameplay.Score.lua")("W4")
GradeWeightW5=LoadModule("Gameplay.Score.lua")("W5")

[StreamDisplay]
# already replaced, doesn't matter <_<
PillTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) \
	self:zoomto(3,15):x(5*itemIndex) \
	self:glowramp() \
	self:effectcolor1(color("1,1,1,0.3")) \
	self:effectcolor2(color("1,1,1,0")) \
	self:effecttiming(0,0,0,0.8,0.2):effectclock('beat') \
end
;NumPills=39
NumPills=1

[StepsDisplayListRow]
CapitalizeDifficultyNames=false
NumShownItems=5
ItemsSpacingY=20
MoveCommand=decelerate,0.05

# Sketchy, but move *EVERYTHING* to the Frame.
# I believe that all the coloring work/etc in the separate parts as seen in the metrics
# adds a lot of slowdown to SelectMusic.
FrameX=
FrameOnCommand=
FrameSetCommand=%function(self,param) \
	if param.Steps then \
		local colr = CustomDifficultyToColor(param.CustomDifficulty, param.Steps:GetChartName()) \
		local meterColor = (param.Meter and param.Meter >= GetExtraColorThreshold() ) and NeonColor.Red or Color.White \
		local isAutogen = (param.Steps and param.Steps:IsAutogen()) \
		\
		self:GetChild("FrameSide1"):diffuse(colr) \
		self:GetChild("FrameSide2"):diffuse(colr) \
		self:GetChild("Meter"):settext(param.Meter):DifficultyColoring(meterColor, isAutogen) \
		StepsDispRowDesc(self:GetChild("Description"), param) \
		if ShowStepsTypeOnStepsList() then \
			local sString = THEME:GetString("StepsListDisplayRow StepsType",ToEnumShortString(param.StepsType)) \
			self:GetChild("StepsType"):settext( sString ):DifficultyColoring(ColorBlend(colr, Color.White), isAutogen) \
		end	\
	end \
	for ip, pn in ipairs(GAMESTATE:GetEnabledPlayers()) do \
		if GAMESTATE:IsHumanPlayer(pn) and param.Steps then \
			local gradeObject = self:GetChild("Grade" .. ToEnumShortString(pn)) \
			local pProfile = PROFILEMAN:GetProfile(pn) \
			local hiScoreList = pProfile:GetHighScoreListIfExists(SONGMAN:GetSongFromSteps(param.Steps), param.Steps) \
			local scoreFocus = hiScoreList and hiScoreList:GetHighScores()[1] \
			gradeObject:settext(scoreFocus and THEME:GetString("Grade", ToEnumShortString(scoreFocus:GetGrade())) or "") \
		end \
	end \
end
#
ShowMeter=false
MeterX=86
MeterOnCommand=zoom,0.6;maxwidth,26/0.6
MeterSetCommand=%function(self,param) \
	local theColor = (param.Meter and param.Meter >= GetExtraColorThreshold() ) and NeonColor.Red or Color.White \
	local isAutogen = (param.Steps and param.Steps:IsAutogen()) \
	self:DifficultyColoring(theColor, isAutogen)\
end
#
ShowDescription=false
DescriptionX=-94
DescriptionY=ShowStepsTypeOnStepsList() and 4 or 0
DescriptionOnCommand=horizalign,left;zoom,ShowStepsTypeOnStepsList() and 0.4 or 0.5;maxwidth,156/0.5;uppercase,true;
DescriptionSetCommand=%StepsDispRowDesc
#
ShowStepsType=false
StepsTypeX=-94
StepsTypeY=-6
StepsTypeOnCommand=horizalign,left;zoom,0.25;maxwidth,130;uppercase,true;
StepsTypeSetCommand=%function(self,param) \
	if not param.Steps then return end \
	local theColor = param.CustomDifficulty and CustomDifficultyToLightColor(param.CustomDifficulty, param.Steps:GetChartName()) or Color.Black \
	local isAutogen = (param.Steps and param.Steps:IsAutogen()) and true or false \
	self:DifficultyColoring(theColor, isAutogen)\
	local sString = THEME:GetString("StepsListDisplayRow StepsType",ToEnumShortString(param.StepsType)) \
	self:settext( sString ) \
end

[ScreenSystemLayer]
CreditsP1X=8
CreditsP1Y=_screen.h-8
CreditsP1OnCommand=horizalign,left;vertalign,bottom;strokecolor,Color.Black;maxwidth,(_screen.w/3)/0.6;zoom,0.6
#
CreditsP2X=_screen.w-8
CreditsP2Y=_screen.h-8
CreditsP2OnCommand=horizalign,right;vertalign,bottom;strokecolor,Color.Black;maxwidth,(_screen.w/3)/0.6;zoom,0.6
#
CreditsGlobalX=_screen.cx
CreditsGlobalY=_screen.h-4
CreditsGlobalOnCommand=vertalign,bottom;strokecolor,Color.Black;shadowlength,1;maxwidth,_screen.w/3;zoom,0.75

[ScreenSyncOverlay]
StatusOnCommand=x,_screen.cx;y,_screen.h * 0.7;shadowlength,2;strokecolor,Color.Black;zoom,0.5
AdjustmentsOnCommand=x,_screen.cx+160;y,_screen.cy;zoom,0.5

[ScreenWithMenuElements]
StopMusicOnBack=true

ShowHeader=true
HeaderX=0
HeaderY=0
HeaderOnCommand=draworder,1;
HeaderOffCommand=

ShowFooter=true
FooterX=0
FooterY=0
FooterOnCommand=draworder,1;
FooterOffCommand=

#dealing with this every screen is annoying, so here
HelpText=ScreenString("HelpTextNormal")

TimerX=30
TimerY=30
TimerOnCommand=shadowlength,1;draworder,2;visible,not Screen.Metric("ForceTimer") and (Screen.Metric("ForceTimer") or PREFSMAN:GetPreference("MenuTimer"))
;TimerOnCommand=shadowlength,1;draworder,2;visible,not Screen.Metric("ForceTimer")
TimerOffCommand=
# is this necessary?
;TimerOffCommand=stop

[ScreenWithMenuElementsBlank]
ShowHeader=false
ShowFooter=false

[ScreenInit]
ScreenOnCommand=%function(self) InitUserPrefs() SONGMAN:SetPreferredSongs("PreferredSongs.txt") end;
# Prevent common menu music from bleeding in from other sources
PlayMusic=true

ForceTimer=true
TimerSeconds=10

[ScreenTitleMenu]
ScreenOnCommand=%function(self) InitUserPrefs() SONGMAN:SetPreferredSongs("PreferredSongs.txt") end;

TimerStealth=true

LightsMode="LightsMode_MenuStartAndDirections"

ChoiceNames="GameStart,Options,Edit,Jukebox,GameSelect,Exit"

WrapScroller=true
LoopScroller=true
ScrollerSecondsPerItem=0.25
ScrollerX=_screen.cx
ScrollerY=_screen.h-100
;ScrollerOnCommand=SetFastCatchup,true
ScrollerTransform=function(self,offset,itemIndex,numItems) self:x(offset*(234)):zoom(0.7) end

[ScreenCaution]
WaitForChildrenBeforeTweeningOut=true

[ScreenSelectPlayMode]
ShowIcon=true

ScrollerX=_screen.cx
ScrollerY=_screen.cy/1.33
ScrollerTransform=function(self,offset,itemIndex,numItems) self:xy(itemIndex % 2 == 0 and -130 or 130, 40*itemIndex) end
#
;DefaultChoice="Parapara"
DefaultChoice="Normal"
NumChoicesOnPage1=3
ScrollerSubdivisions=2
#
ChoiceNames=LoadModule("Gameplay.AvailablePlayModes.lua")()
ChoiceParapara="applydefaultoptions;name,Parapara;text,"..GCString("Parapara")..";playmode,regular;difficulty,beginner;setenv,sMode,Normal;lua,SwitchToParapara;screen,"..Branch.InformationOrSelectMusic()
ChoiceFreestyle="applydefaultoptions;name,Freestyle;text,"..GCString("Freestyle")..";playmode,regular;difficulty,medium;setenv,sMode,Normal;lua,SwitchToFreestyle;screen,"..Branch.InformationOrSelectMusic()
ChoiceNormal="applydefaultoptions;name,Normal;text,"..GCString("Normal")..";playmode,regular;difficulty,beginner;setenv,sMode,Normal;lua,SwitchToFreestyle;screen,"..Branch.InformationOrSelectMusic()
ChoiceNonstop="applydefaultoptions;name,Nonstop;text,"..GCString("Nonstop")..";playmode,nonstop;setenv,sMode,Nonstop;sort,AllCourses;lua,SwitchToFreestyle;screen,"..Branch.InformationOrSelectMusic()

[ScreenGameInformation]
NextScreen=
TimerSeconds=20
ShowHeader=false
ShowFooter=false
#
DefaultChoice="Delay"
ChoiceNames="Delay"
#
ChoiceDelay="screen,"..SelectMusicOrCourse()
#
PerChoiceScrollElement=false
PerChoiceIconElement=false
#
ShowScroller=true
ShowIcon=false
#
ScrollerX=_screen.cx
ScrollerY=_screen.cy

[ScreenSelectMusic]
HeaderOnCommand=draworder,1;rotationz,3
#
HelpText=ScreenString("HelpTextSelectMusic" .. ThreeOrFive())

SampleMusicPreviewMode='SampleMusicPreviewMode_Normal'
SampleMusicLoops=true
SampleMusicFallbackFadeInSeconds=1
SampleMusicFadeOutSeconds=0.5
SampleMusicDelay=0

MusicWheelX=_screen.cx
MusicWheelY=_screen.cy-10
MusicWheelOnCommand=zoom,1.25
MusicWheelOffCommand=
# So it seems that both ScreenPlayerOptions and PlayerSongOptions mess up the life bar settings
# as set by certain functions on this screen. Not my preferred solution, but I'll just
# have to disable access to both for now.
;OptionsMenuAvailable=AllowOptionsMenu()
OptionsMenuAvailable=false
SelectMenuAvailable=false
ModeMenuAvailable=true

WrapChangeSteps=true

CodeNames="OpenOptionsList"
CodeOpenOptionsList=GetCodeForGame("OpenOptionsList")

[ScreenSelectCourse]
# Nah.
ScreenModsCommand=setupmusicstagemods

#
[ScreenPlayerOptions]
# At least make the options shared with the music select options menu consistent.
Line1="list,OpLSpeed"

[ScreenSongOptions]
Fallback="ScreenPlayerOptions"
StopMusicOnBack=false
# Remove any lines that affect the fail mode or the life bar.
# todo: restore for game types that don't need such strict life bar control?
LineNames="5,6,Haste,8,9,10"

Line6="lua,LoadModule('Options.RowSongRate.lua')()"
LineHaste="list,Haste"

[ScreenGameplay]
MinSecondsToStep=6
MinSecondsToMusic=0.5

AllowCenter1Player=Center1Player()

PlayerP1OnePlayerOneSideX=NotefieldPositioningHelper()
PlayerP2OnePlayerOneSideX=_screen.w - NotefieldPositioningHelper()
PlayerP1TwoPlayersTwoSidesX=NotefieldPositioningHelper()
PlayerP2TwoPlayersTwoSidesX=_screen.w - NotefieldPositioningHelper()

# Hide the default metrics-bound life bars 'cause we're doing something custom.
# Also, make the X values constant because superwidescreen is misbehaving.
LifeP1X=_screen.cx-214
LifeP1Y=36
LifeP1OnCommand=draworder,DrawOrder.Screen;visible,false
LifeP2X=_screen.cx+214
LifeP2Y=36
LifeP2OnCommand=draworder,DrawOrder.Screen;visible,false

# Score is handled by a lua ...thingy in the overlay, so these are redundant
ScoreP1OnCommand=visible,false
ScoreP2OnCommand=visible,false

# Say it with me now! One, two, three...
# GO AWAY
StepsDisplayP1X=9999
StepsDisplayP1Y=9999
StepsDisplayP1OnCommand=visible,false
StepsDisplayP1OffCommand=
#
StepsDisplayP2X=9999
StepsDisplayP2Y=9999
StepsDisplayP2OnCommand=visible,false
StepsDisplayP2OffCommand=

LyricDisplaySetNoReverseCommand=x,_screen.cx;y,_screen.h-54
LyricDisplaySetReverseCommand=x,_screen.cx;y,_screen.cy-140
# This is used if one player is in reverse and the other isn't.
LyricDisplaySetOneReverseCommand=x,_screen.cx;y,_screen.cy+40
LyricDisplayDefaultColor=Color.White

[ScreenEvaluation]
HelpText=ScreenString("HelpTextEvaluation" .. ThreeOrFive())

[ScreenProfileLoad]
PlayMusic=false
ShowHeader=true
ShowFooter=true
HandleBackButton=false

[ScreenProfileSave]
PlayMusic=false
HandleBackButton=false

[ScreenOptions]
ExplanationP1X=20
ExplanationP1Y=_screen.h-56
ExplanationP1OnCommand=stoptweening;shadowlength,1;zoom,0.4;maxwidth,_screen.cx / 0.44;wrapwidthpixels,_screen.cx / 0.45;halign,0;cropright,1;linear,0.5;cropright,0
ExplanationP1OffCommand=stoptweening
ExplanationP2X=_screen.w-20
ExplanationP2Y=_screen.h-56
ExplanationP2OnCommand=stoptweening;shadowlength,1;zoom,0.4;maxwidth,_screen.cx / 0.44;wrapwidthpixels,_screen.cx / 0.45;halign,1;cropright,1;linear,0.5;cropright,0
ExplanationP2OffCommand=stoptweening
ExplanationTogetherX=_screen.cx
ExplanationTogetherY=_screen.h-56
ExplanationTogetherOnCommand=stoptweening;zoom,0.4;shadowlength,0;wrapwidthpixels,_screen.w/0.44;cropright,1;linear,0.5;cropright,0
ExplanationTogetherOffCommand=stoptweening

NumRowsShown=12
RowPositionTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) self:y(48+(28*offsetFromCenter)) end

[ScreenOptionsMaster]
Haste="3;together"
HasteDefault="mod,no haste"
Haste,1="mod,no haste;name,Off"
Haste,2="mod,100% haste;name,On"
Haste,3="mod,-100% haste;name,Inverse"

EZRate="9;together"
EZRateDefault="mod,1.0xmusic;mod,no haste"
EZRate,1="mod,0.5xmusic;name,spd1"
EZRate,2="mod,0.63xmusic;name,spd2"
EZRate,3="mod,0.75xmusic;name,spd3"
EZRate,4="mod,0.88xmusic;name,spd4"
EZRate,5="mod,1xmusic;name,spd5"
EZRate,6="mod,1.13xmusic;name,spd6"
EZRate,7="mod,1.25xmusic;name,spd7"
EZRate,8="mod,1.38xmusic;name,spd8"
EZRate,9="mod,1.5xmusic;name,spd9"

# OptionsList! ...:(
#speed, random, mirror, hidden, sudden
SSMOpts="5;"
SSMOptsDefault=""
SSMOpts,1="name,NoteSkins;screen,NoteSkins"
SSMOpts,2="screen,OpLSpeed;name,Speed"
SSMOpts,3="screen,OpLTurn;name,Turn"
SSMOpts,4="screen,OpLVisib;name,Appearance"
SSMOpts,5="screen,EZRate;name,EZRate"

OpLSpeed="9;"
OpLSpeedDefault="mod,1x,no randomspeed"
OpLSpeed,1="mod,1x;name,x1"
OpLSpeed,2="mod,1.25x;name,x1.25"
OpLSpeed,3="mod,1.5x;name,x1.5"
OpLSpeed,4="mod,1.75x;name,x1.75"
OpLSpeed,5="mod,2x;name,x2"
OpLSpeed,6="mod,2.25x;name,x2.25"
OpLSpeed,7="mod,2.5x;name,x2.5"
OpLSpeed,8="mod,2.75x;name,x2.75"
OpLSpeed,9="mod,3x;name,x3"

OpLTurn="4;"
OpLTurnDefault="mod,no turn"
OpLTurn,1="mod,no turn;name,Default"
OpLTurn,2="mod,mirror;name,Mirror"
OpLTurn,3="mod,shuffle;name,Shuffle"
OpLTurn,4="mod,supershuffle;name,SuperShuffle"

# :((((
;OpLVisib="3;selectmultiple"
OpLVisib="4;"
OpLVisibDefault="mod,no hidden,no sudden,no stealth"
OpLVisib,1="mod,no hidden,no sudden,no stealth;name,Visible"
OpLVisib,2="mod,hidden,no sudden,no stealth;name,Hidden"
OpLVisib,3="mod,no hidden,sudden,no stealth;name,Sudden"
OpLVisib,4="mod,no hidden,no sudden,stealth;name,Stealth"

[ScreenOptionsService]
NextScreen=Branch.TitleMenu()
PrevScreen=Branch.TitleMenu()

# Make sure to save the theme prefs, and reload metrics so YOU don't have to!
# also, hax in case someone hits Service while the options menu in music select is open
ScreenOnCommand=%function(self) ThemePrefs.Save() THEME:ReloadMetrics() SCREENMAN:set_input_redirected(PLAYER_1, false) SCREENMAN:set_input_redirected(PLAYER_2, false) InitUserPrefs() end;

NumRowsShown=12
RowPositionTransformFunction=function(self,offsetFromCenter,itemIndex,numItems) self:y(48+(28*offsetFromCenter)) end

LineNames="SysDir,GameType,GraphicSound,Arcade,InputOptions,SoundGraphics,Theme,Profiles,ToggleSongs,Network,Advanced,Reload,Credits"
LineSysDir="gamecommand;screen,ScreenOptionsSystemDirection;name,System Direction"
LineTheme="gamecommand;screen,ScreenOptionsTheme;name,Theme Options"
LineToggleSongs="gamecommand;screen,ScreenOptionsToggleSongs;name,ToggleSongs"
[ScreenOptionsSimple]
ExplanationTogetherX=_screen.cx
ExplanationTogetherY=_screen.h-56
ExplanationTogetherOnCommand=stoptweening;zoom,0.4;shadowlength,0;wrapwidthpixels,_screen.w/0.44;cropright,1;linear,0.5;cropright,0
ExplanationTogetherOffCommand=stoptweening

[ScreenOptionsServiceChild]
ExplanationTogetherX=_screen.cx
ExplanationTogetherY=_screen.h-56
ExplanationTogetherOnCommand=stoptweening;zoom,0.4;shadowlength,0;wrapwidthpixels,_screen.w/0.44;cropright,1;linear,0.5;cropright,0
ExplanationTogetherOffCommand=stoptweening

[ScreenOptionsSystemDirection]
;LineNames="1,2,3,4,5,FNR,6,7,8,9,FA,10,11,12,13,14,15,16,17,18,19,20,21,22"
LineNames="Window,Res,AspectR,HD,Vsync,Theme,Noteskin,Percentage,C1P,DMB,AON,TKN,TL,Event,TD,LD,W1,JI,HHLP,Autogen"
LineWindow="lua,ConfDisplayMode()"
LineAspectR="lua,ConfAspectRatio()"
LineRes="lua,ConfDisplayResolution()"
LineRefreshRate="lua,ConfRefreshRate()"
LineFSType="lua,ConfFullscreenType()"
LineHD="conf,HighResolutionTextures"
LineVsync="conf,Vsync"
LineTheme="conf,Theme"
LineNoteskin="conf,DefaultNoteskin"
LinePercentage="conf,PercentageScoring"
LineC1P="conf,Center1Player"
LineDMB="conf,OnlyDedicatedMenuButtons"
LineAON="conf,ArcadeOptionsNavigation"
LineTKN="conf,ThreeKeyNavigation"
LineTL="conf,ShowNativeLanguage"
LineEvent="conf,EventMode"
LineTD="conf,TimingWindowScale"
LineLD="conf,LifeDifficulty"
LineW1="conf,AllowW1"
LineAutogen="conf,AutogenSteps"
LineJI="conf,UseOldJoystickMapping"
LineHHLP="conf,HarshHotLifePenalty"

[ScreenOptionsInputSub]
LineNames="KeyConfig,Mapping,TestInput,Input,Sync"
LineKeyConfig="gamecommand;screen,ScreenMapControllers;name,Key Joy Mappings"

[ScreenOptionsInput]
NextScreen="ScreenOptionsInputSub"
PrevScreen="ScreenOptionsInputSub"
LineNames="1,2,3,AH,4,5,6,7,JI"
LineJI="conf,UseOldJoystickMapping"

[ScreenOptionsTheme]
Fallback="ScreenOptionsServiceChild"
NextScreen="ScreenOptionsService"
PrevScreen="ScreenOptionsService"
LineNames="gAuto,gOpts,gComboUnderField,FlashyCombo,FancyUIBG"
LinegAuto="lua,ThemePrefRow('AutoSetStyle')"
LinegOpts="lua,ThemePrefRow('ShowLotsaOptions')"
LinegComboUnderField="lua,ThemePrefRow('ComboUnderField')"
LineFlashyCombo="lua,ThemePrefRow('FlashyCombo')"
LineFancyUIBG="lua,ThemePrefRow('FancyUIBG')"

[ScreenOptionsAdvanced]
Fallback="ScreenOptionsServiceChild"
NextScreen="ScreenOptionsService"
PrevScreen="ScreenOptionsService"
LineNames="3,4,8,SI,SM,HN,11,13,14,15,16,28,29,30,31,32,ECPT"

[ScreenOptionsCustomizeProfile]
Fallback="ScreenOptionsServiceChild"
;Class="ScreenOptionsEditProfile"
Class="ScreenWithMenuElements"
PlayMusic=false
ShowHeader=true
ShowFooter=true
;ShowCreditDisplay=false
TimerSeconds=-1
TimerOnCommand=visible,false

# Okay, okay. These screen name lengths are getting out of hand.
[ScreenOptionsCustomizeProfileOutFoxAvatar]
Fallback="ScreenOptionsServiceChild"
NextScreen="ScreenOptionsCustomizeProfile"
PrevScreen="ScreenOptionsCustomizeProfile"
Class="ScreenWithMenuElements"
PlayMusic=false
ShowHeader=true
ShowFooter=true
;ShowCreditDisplay=false
TimerSeconds=-1
TimerOnCommand=visible,false

[ScreenOptionsToggleSongs]
Class="ScreenOptionsToggleSongs"
Fallback="ScreenOptionsServiceChild"
NextScreen="ScreenOptionsService"
PrevScreen="ScreenOptionsService"

OptionRowNormalMetricsGroup="OptionRowToggleSongs"
SeparateExitRow=false

[ScreenOptionsToggleSongsSubPage]
Class="ScreenOptionsToggleSongsSubPage"
Fallback="ScreenOptionsToggleSongs"
PrevScreen="ScreenOptionsToggleSongs"
NextScreen="ScreenOptionsToggleSongs"

[ScreenOptionsEdit]
LineNames="1,2"
# bad:
;Line3="gamecommand;screen,ScreenOptionsManageCourses;name,Edit Courses/Mods"
# doesn't work:
;Line3="gamecommand;screen,ScreenOptionsExportPackage;name,Export Packages"

[ScreenOptionsManageCourses]
NextScreen="ScreenOptionsCourseOverview"

[ScreenTestInput]
Fallback="ScreenWithMenuElements"
HelpText=ScreenString("HelpTextTestInput")

[ScreenMiniMenu]
HeaderX=0
HeaderY=0

[EditMenu]
# Sigh, I hate this screen.
Arrows1X=15
Arrows2X=_screen.w - 15
ArrowsEnabledCommand=diffuse,Color.White
ArrowsDisabledCommand=diffuse,Color.Black

#Group+song banners seem to ignore horizalign amongst many other things
GroupBannerX=_screen.w - 112
GroupBannerY=(_screen.cy * 0.4) - 15
GroupBannerOnCommand=scaletoclipped,153.6,48

SongBannerX=_screen.w - 112
SongBannerY=(_screen.cy * 0.6) - 15
SongBannerOnCommand=scaletoclipped,153.6,48

;TextBannerType="TextBannerEditMode"
SongTextBannerX=_screen.cx
SongTextBannerY=(_screen.cy * 0.6) - 15

StepsDisplayX=_screen.cx
StepsDisplayY=_screen.cy - 15
StepsDisplaySourceX=_screen.cx
StepsDisplaySourceY=(_screen.cy * 1.4) - 15

Row1Y=(_screen.cy * 0.4) - 15
Row2Y=(_screen.cy * 0.6) - 15
Row3Y=(_screen.cy * 0.8) - 15
Row4Y=_screen.cy - 15
Row5Y=(_screen.cy * 1.2) - 15
Row6Y=(_screen.cy * 1.4) - 15
Row7Y=(_screen.cy * 1.6) - 15

Label1X=_screen.w * 0.04
Label1Y=THEME:GetMetric("EditMenu","Row1Y")
Label1OnCommand=shadowlength,1;zoom,0.75;horizalign,left;strokecolor,Color.Black;wrapwidthpixels,70
Label1OffCommand=
Label2X=THEME:GetMetric("EditMenu","Label1X")
Label2Y=THEME:GetMetric("EditMenu","Row2Y")
Label2OnCommand=shadowlength,1;zoom,0.75;horizalign,left;strokecolor,Color.Black;wrapwidthpixels,70
Label2OffCommand=
Label3X=THEME:GetMetric("EditMenu","Label1X")
Label3Y=THEME:GetMetric("EditMenu","Row3Y")
Label3OnCommand=shadowlength,1;zoom,0.75;horizalign,left;strokecolor,Color.Black;wrapwidthpixels,70
Label3OffCommand=
Label4X=THEME:GetMetric("EditMenu","Label1X")
Label4Y=THEME:GetMetric("EditMenu","Row4Y")
Label4OnCommand=shadowlength,1;zoom,0.75;horizalign,left;strokecolor,Color.Black;wrapwidthpixels,70
Label4OffCommand=
Label5X=THEME:GetMetric("EditMenu","Label1X")
Label5Y=THEME:GetMetric("EditMenu","Row5Y")
Label5OnCommand=shadowlength,1;zoom,0.75;horizalign,left;strokecolor,Color.Black;wrapwidthpixels,70
Label5OffCommand=
Label6X=THEME:GetMetric("EditMenu","Label1X")
Label6Y=THEME:GetMetric("EditMenu","Row6Y")
Label6OnCommand=shadowlength,1;zoom,0.75;horizalign,left;strokecolor,Color.Black;wrapwidthpixels,70
Label6OffCommand=
Label7X=THEME:GetMetric("EditMenu","Label1X")
Label7Y=THEME:GetMetric("EditMenu","Row7Y")
Label7OnCommand=shadowlength,1;zoom,0.75;horizalign,left;strokecolor,Color.Black;wrapwidthpixels,70
Label7OffCommand=

Value1X=_screen.cx
Value1Y=THEME:GetMetric("EditMenu","Row1Y")
Value1OnCommand=zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65;strokecolor,Color.Black
Value1OffCommand=
Value2X=THEME:GetMetric("EditMenu","Value1X")
Value2Y=THEME:GetMetric("EditMenu","Row2Y")
Value2OnCommand=zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65;strokecolor,Color.Black
Value2OffCommand=
Value3X=THEME:GetMetric("EditMenu","Value1X")
Value3Y=THEME:GetMetric("EditMenu","Row3Y")
Value3OnCommand=zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65;strokecolor,Color.Black
Value3OffCommand=
Value4X=THEME:GetMetric("EditMenu","Value1X")
Value4Y=THEME:GetMetric("EditMenu","Row4Y")
Value4OnCommand=visible,false
Value4OffCommand=
Value5X=THEME:GetMetric("EditMenu","Value1X")
Value5Y=THEME:GetMetric("EditMenu","Row5Y")
Value5OnCommand=zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65;strokecolor,Color.Black
Value5OffCommand=
Value6X=THEME:GetMetric("EditMenu","Value1X")
Value6Y=THEME:GetMetric("EditMenu","Row6Y")
Value6OnCommand=zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65;strokecolor,Color.Black
Value6OffCommand=
Value7X=THEME:GetMetric("EditMenu","Value1X")
Value7Y=THEME:GetMetric("EditMenu","Row7Y")
Value7OnCommand=zoom,0.75;maxwidth,SCREEN_CENTER_X*0.65;strokecolor,Color.Black
Value7OffCommand=

[ScreenEditMenu]
#ScreenOptionsEdit is more or less useless.
PrevScreen=Branch.TitleMenu()

[ScreenEdit]
EditHelpX=4
EditHelpY=4
EditHelpOnCommand=halign,0;valign,0;zoom,0.4;shadowlength,1;maxheight,(SCREEN_HEIGHT-4)/0.4;wrapwidthpixels,_screen.w/3
InfoX=_screen.w-4
InfoY=4
InfoOnCommand=halign,1;valign,0;zoom,0.4;shadowlength,1;maxheight,(SCREEN_HEIGHT-4)/0.4;wrapwidthpixels,_screen.w/3
PlayRecordHelpX=20
PlayRecordHelpY=20
PlayRecordHelpOnCommand=halign,0;valign,0;zoom,0.5

CurrentBeatFormat="%s:\n  %.3f\n\n"
CurrentSecondFormat="%s:\n  %.3f\n\n"
SnapToFormat="%s:\n %s\n\n"
SelectionBeatBeginFormat="%s:\n  %.3f"
SelectionBeatUnfinishedFormat=" ...\n\n"
SelectionBeatEndFormat="-%.3f\n\n"
DifficultyFormat="%s:\n  %s\n\n"
RoutinePlayerFormat="%s: %d\n\n"
DescriptionFormat="%s:\n  %s\n\n"
StepAuthorFormat="%s:\n  %s\n\n"
ChartNameFormat="%s:\n  %s\n\n"
ChartStyleFormat="%s:\n  %s\n\n"
;MainTitleFormat="%s:\n  %s\n\n"
#lol bye
MainTitleFormat=""
SubtitleFormat=""
TapNoteTypeFormat="%s: %s\n\n"
SegmentTypeFormat="%s: %s\n\n"
NumStepsFormat="%s: %d\n\n"
NumJumpsFormat="%s: %d\n\n"
NumHoldsFormat="%s: %d\n\n"
NumMinesFormat="%s: %d\n\n"
NumHandsFormat="%s: %d\n\n"
NumRollsFormat="%s: %d\n\n"
NumLiftsFormat="%s: %d\n\n"
NumFakesFormat="%s: %d\n\n"
NumStepsFormatTwoPlayer="%s: %d/%d\n\n"
NumJumpsFormatTwoPlayer="%s: %d/%d\n\n"
NumHoldsFormatTwoPlayer="%s: %d/%d\n\n"
NumMinesFormatTwoPlayer="%s: %d/%d\n\n"
NumHandsFormatTwoPlayer="%s: %d/%d\n\n"
NumRollsFormatTwoPlayer="%s: %d/%d\n\n"
NumLiftsFormatTwoPlayer="%s: %d/%d\n\n"
NumFakesFormatTwoPlayer="%s: %d/%d\n\n"
TimingModeFormat="%s:\n  %s\n\n"
Beat0OffsetFormat="%s:\n  %.3f secs\n\n"
PreviewStartFormat="%s:\n  %.3f secs\n\n"
PreviewLengthFormat="%s:\n  %.3f secs\n\n"
RecordHoldTimeFormat="%s:\n  %.2f secs\n\n"

[ScreenLogo]
# todo: erm...
#ScreenOnCommand=%function(self) SetLifeBarTypeSettings(PLAYER_1) SetLifeBarTypeSettings(PLAYER_2) end;
NextScreen=Branch.AfterAttractLogo()
#TimerSeconds=27
TimerSeconds=54
PlayMusic=true
ShowHeader=false
ShowFooter=false

[ScreenDemonstration]
SecondsToShow=45
DifficultiesToShow="beginner,medium"
ShowCourseModifiersProbability=0
AllowAdvancedModifiers=false
;AllowStyleTypes="OnePlayerOneSide,TwoPlayersTwoSides"
AllowStyleTypes="OnePlayerOneSide"

MinSecondsToStep=0
MinSecondsToMusic=0

LyricDisplaySetNoReverseCommand=x,_screen.cx;y,_screen.cy+66
LyricDisplaySetReverseCommand=x,_screen.cx;y,_screen.cy+66
LyricDisplaySetOneReverseCommand=x,_screen.cx;y,_screen.cy+66

[ScreenJukeboxMenu]
# hacky-wacky to make the life bars look right
ScreenInitCommand=%function(self) SetLifeBarTypeSettings(PLAYER_1) SetLifeBarTypeSettings(PLAYER_2) end;

[ScreenJukebox]
LyricDisplaySetNoReverseCommand=x,_screen.cx;y,_screen.cy+66
LyricDisplaySetReverseCommand=x,_screen.cx;y,_screen.cy+66
LyricDisplaySetOneReverseCommand=x,_screen.cx;y,_screen.cy+66
