SelectBoards=Boards; sn=Boards.size();
	}
	if ((Obs>=0)&&(Obs<n)) {
		int m=1, p=0;
		while (m*m<sn-1) ++m;
		Boards[Obs]->SetScale(0.0,3.0,DefaultScale);
		double GridScale = DefaultScale/double(m);
		for (int i=0; i<m; ++i) {
			for (int j=0; j<m; ++j) {
				if (p>=sn) break;
				if (SelectBoards[p]->GetBoardID()==Obs) ++p;
				if (p<sn) SelectBoards[p]->SetScale(GridScale*i,DefaultScale+GridScale*j,GridScale);
				++p;
			}
		}
	}
	else {
		int m=1, p=0;
		while (m*(m*2-1)<sn) ++m;
		double GridScale = DefaultScale/double(m);
		for (int i=0; i<m; ++i) {
			for (int j=0; j<m*2-1; ++j) {
				if (p<sn) SelectBoards[p]->SetScale(GridScale*i,GridScale*(j+1),GridScale);
				++p;
			}
		}
	}
}
int Board::V[110][110], Board::SegTreeM[20010], Board::SegTreeP[20010], Board::Dis[10010];
vector<pair<int,int> > Board::Graph[10010]; bool Board::Vis[10010];
using namespace PaintManager;
vector<string> ForceCommand;

struct Button {
	double x, y, lx, ly, tsz; int clr, selclr, tclr, tselclr;
	string Text, Result;
};
vector<Button> Buttons;
vector<ConfigContent> GlobalConfig;
int GetConfig(vector<ConfigContent> &From, string Name, int Default) {
	for (ConfigContent o : From) {
		if (ToLower(o.first)==ToLower(Name)) {
			int tmp = SToI(o.second);
			if (tmp!=SToIErr) return tmp;
		}
	}
	return Default;
}
string GetConfig(vector<ConfigContent> &From, string Name, string Default, vector<string> List) {
	for (ConfigContent o : From) {
		if (ToLower(o.first)==ToLower(Name)) {
			for (string x : List) {
				if (ToLower(x)==ToLower(o.second)) return ToLower(x);
			}
		}
	}
	return ToLower(Default);
}
bool IsHandling(string Name) {
	Name = ToLower(Name);
	if ((Name.size()>3)&&(Name.substr(0,3)=="key")) return true;
	return ((Name=="das")||(Name=="arr")||(Name=="sddas")||(Name=="sdarr")||
	(Name=="hcd")||(Name=="dcd")||(Name=="defaultrot")||(Name=="smoothlevel"));
}
vector<ConfigContent> GetHandling() {
	vector<ConfigContent> res;
	for (ConfigContent o : GlobalConfig) {
		if (IsHandling(o.first)) res.push_back(o);
	}
	return res;
}
void SetConfig(string Name, string val) {
	Name = ToLower(Name);
	for (ConfigContent &o : GlobalConfig) {
		if (ToLower(o.first)==Name) {
			o.second=ToLower(val); return;
		}
	}
	GlobalConfig.push_back(make_pair(Name,ToLower(val)));
}
bool CheckButton(Button &o) {
	return ((fabs(CurX-o.x)<=o.lx*0.5)&&(fabs(CurY-o.y)<=o.ly*0.5));
}
void AddButton(string Text, string Result, double x, double y, double lx, double ly, double tsz, int clr, int selclr, int tclr, int tselclr) {
	if (selclr<0) selclr=clr;
	Buttons.push_back((Button){x+tsz*0.5,y+tsz*0.33,lx,ly,tsz,clr,selclr,tclr,tselclr,Text,Result});
}
int AdjustDel = 100;
const vector<int> AdjustDels = {1,2,5,10,20,50,100,200,500,1000};
void PaintHome() {
	//AddButton(Str(12)+"Quit", "quit", 1, 2, 1, 3.5, 0.6, -1, -1, 0xBBBBBB, 0x66CCFF);
	AddButton((Pause)?"Resume":"Pause", "pause", 2, 2, 1.5, 3, 0.6, -1, -1, 0xBBBBBB, 0x66CCFF);
	AddButton("Retry", "retry", 3, 2, 1, 3.5, 0.6, -1, -1, 0xBBBBBB, 0x66CCFF);
	PrintStrM("Main Page", 5, 35, 1.5, 0xDDDDDD, 0.15);
	AddButton("< Start >", "select", 10, 35, 3, 15, 1, -1, -1, 0xBBBBBB, 0x66CCFF);
	AddButton("< Settings >", "settings", 13, 35, 3, 15, 1, -1, -1, 0xBBBBBB, 0x66CCFF);
	AddButton("< Quit >", "quit", 22, 35, 3, 15, 1, -1, -1, 0xBBBBBB, 0x66CCFF);
}
string SelKeyOpt;
void AddKeyOpt(string ConfigName, string Default, double x, double y) {
	bool f = (SelKeyOpt==ToLower(ConfigName));
	AddButton(KeyChar(GetConfig(GlobalConfig,ConfigName,Default,KeyList)), "selkey "+ToLower(ConfigName),
	x, y, 0.9, 0.9, 0.6,
	(f)?0xFDD000:0xBBBBBB, (f)?0xFDD000:0xCCCCCC,
	0x000000, 0x000000);
}
string KeyTab = "basic";
void PaintSettings() {
	AddButton(Str(12)+"Back", "home", 1, 2, 1, 3.5, 0.6, -1, -1, 0xBBBBBB, 0x66CCFF);
	AddButton((Pause)?"Resume":"Pause", "pause", 2, 2, 1, 3.5, 0.6, -1, -1, 0xBBBBBB, 0x66CCFF);
	AddButton("Retry", "retry", 3, 2, 1, 3.5, 0.6, -1, -1, 0xBBBBBB, 0x66CCFF);
	AddButton("Game Rule", "select", 1, 50, 2, 8, 0.6, -1, -1, 0xBBBBBB, 0x66CCFF);
	PrintStrM("Settings", 5, 35, 1.5, 0xDDDDDD, 0.15);
	PrintStrL("Key Binding", 8, 25, 0.6, 0xDDDDDD, 0.15);
	AddButton("Basic", "selkeytab basic", 8, 35, 0.8, 6, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("Advanced", "selkeytab advanced", 8, 42, 0.8, 6, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	if (KeyTab=="basic") {
		PrintStrL("Move Left", 9, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyLeft", "left", 9, 34);
		PrintStrL("Move Right", 10, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyRight", "right", 10, 34);
		PrintStrL("Soft Drop", 11, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeySoft", "down", 11, 34);
		PrintStrL("Hard Drop", 12, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyHard", "space", 12, 34);
		PrintStrL("Sonic Drop", 13, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeySonic", "s", 13, 34);
		PrintStrL("Rotate", 14, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyRotate", "up", 14, 34);
		PrintStrL("Rotate CCW", 15, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyCCW", "z", 15, 34);
		PrintStrL("Rotate CW", 16, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyCW", "x", 16, 34);
		PrintStrL("Rotate Half", 17, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyHalf", "a", 17, 34);
		PrintStrL("Hold", 18, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyHold", "c", 18, 34);
		PrintStrL("Retry", 19, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyRetry", "u", 19, 34);
	}
	if (KeyTab=="advanced") {
		PrintStrL("Pause", 9, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyPause", "o", 9, 34);
		PrintStrL("Reset", 10, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyReset", "e", 10, 34);
		PrintStrL("Up", 11, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyUp", "w", 11, 34);
		PrintStrL("Flip", 12, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyFlip", "q", 12, 34);
		PrintStrL("Waste", 13, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyWaste", "v", 13, 34);
		PrintStrL("Lock", 14, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyLock", "r", 14, 34);
		PrintStrL("CursorMode", 15, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyCursorMode", "i", 15, 34);
		PrintStrL("TargetMode", 16, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyTargetMode", "f", 16, 34);
		PrintStrL("Undo", 17, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyUndo", "t", 17, 34);
		PrintStrL("Redo", 18, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyRedo", "y", 18, 34);
		PrintStrL("Zone", 19, 25, 0.6, 0xBBBBBB);
		AddKeyOpt("KeyAction", "g", 19, 34);
	}
	vector<string> S[5] = {{"1","2","3","4","5","6","7","8","9","0"},
	{"tab","q","w","e","r","t","y","u","i","o","p"},
	{"caps","a","s","d","f","g","h","j","k","l","","enter"},
	{"shift","z","x","c","v","b","n","m","","up"},
	{"ctrl","","","space","","","none","","","left","down","right"}};
	int Offset[5] = {1,0,1,2,1};
	if (!SelKeyOpt.empty()) {
		string HoverKey = "Pick a Key";
		for (int i=0; i<5; ++i) {
			double x=10.5+1.5*i, y=37+Offset[i]*0.75;
			int j = 0;
			for (string s : S[i]) {
				if (s.empty()) {
					++j;
					if ((i==3)&&(j==S[i].size()-1)) y+=0.75;
					y+=1.5; continue;
				}
				AddButton(KeyChar(s), "choosekey "+s, x, y, 1.3, 1.3, 0.8, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
				y += 1.5;
				if (CheckButton(Buttons.back())) HoverKey=s;
				++j;
			}
		}
		PrintStrM(HoverKey, 9, 44, 0.6, (HoverKey.size()<10)?0x66CCFF:0xCCCCCC);
	}
	PrintStrL("Handling", 21, 25, 0.6, 0xDDDDDD, 0.15);
	PrintStrL("d : "+IToS(AdjustDel)+"ms", 21, 35, 0.6, 0xCCCCCC);
	AddButton("-", "adjustdel dec", 21, 41.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjustdel inc", 21, 42.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("DAS", 22, 25, 0.6, 0xBBBBBB);
	int v = max(-1,min(Max,GetConfig(GlobalConfig,"DAS",200)));
	PrintStrR(((v<0)?"Off":IToS(v)+"ms"), 22, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust das 200 dec -1", 23, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust das 200 inc -1", 23, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust das 200 def -1", 23, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("ARR", 24, 25, 0.6, 0xBBBBBB);
	v = max(-1,min(Max,GetConfig(GlobalConfig,"ARR",0)));
	PrintStrR(((v<0)?"Off":IToS(v)+"ms"), 24, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust arr 0 dec -1", 25, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust arr 0 inc -1", 25, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust arr 0 def -1", 25, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("SDDAS", 26, 25, 0.6, 0xBBBBBB);
	v = max(-1,min(Max,GetConfig(GlobalConfig,"SDDAS",200)));
	PrintStrR(((v<0)?"Off":IToS(v)+"ms"), 26, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust sddas 200 dec -1", 27, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust sddas 200 inc -1", 27, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust sddas 200 def -1", 27, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("SDARR", 28, 25, 0.6, 0xBBBBBB);
	v = max(-1,min(Max,GetConfig(GlobalConfig,"SDARR",20)));
	PrintStrR(((v<0)?"Off":IToS(v)+"ms"), 28, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust sdarr 20 dec -1", 29, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust sdarr 20 inc -1", 29, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust sdarr 20 def -1", 29, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("HCD", 22, 35, 0.6, 0xBBBBBB);
	PrintStrR(IToS(max(0,min(Max,GetConfig(GlobalConfig,"HCD",100))))+"ms", 22, 43, 0.6, 0xCCCCCC);
	AddButton("-", "adjust hcd 100 dec", 23, 40.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust hcd 100 inc", 23, 41.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust hcd 100 def", 23, 42.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("DCD", 24, 35, 0.6, 0xBBBBBB);
	PrintStrR(IToS(max(0,min(Max,GetConfig(GlobalConfig,"DCD",0))))+"ms", 24, 43, 0.6, 0xCCCCCC);
	AddButton("-", "adjust dcd 0 dec", 25, 40.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust dcd 0 inc", 25, 41.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust dcd 0 def", 25, 42.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("Rotate", 26, 35, 0.6, 0xBBBBBB);
	AddButton(Str(19), "adjustdefrot", 27, 42.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	v=GetConfig(GlobalConfig,"DefaultRot",3); if (v!=1) v=3;
	PrintStrR((v==3)?"CCW":"CW", 26, 43, 0.6, 0xCCCCCC);
	PrintStrL("SmoothEff", 28, 35, 0.6, 0xBBBBBB);
	AddButton(Str(19), "adjustsmooth", 29, 42.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	v = GetConfig(GlobalConfig,"SmoothLevel",3);
	PrintStrR(vector<string>{"None","Less","Mild","More","Full"}[v], 28, 43, 0.6, 0xCCCCCC);
}
vector<Piece> SelectPool=DefaultPool, EditPool;
#warning Settings
void OptionBasic() {
	PrintStrL("Height", 7, 20, 0.6, 0xBBBBBB);
	int v = max(2,min(100,GetConfig(GlobalConfig,"LX",40)));
	PrintStrR(IToS(v), 7, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust lx 40 dec 2 100 1", 8, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust lx 40 inc 2 100 1", 8, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust lx 40 def 2 100 1", 8, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("Width", 9, 20, 0.6, 0xBBBBBB);
	v = max(1,min(100,GetConfig(GlobalConfig,"LY",10)));
	PrintStrR(IToS(v), 9, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust ly 10 dec 1 100 1", 10, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust ly 10 inc 1 100 1", 10, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust ly 10 def 1 100 1", 10, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("SpawnHeight", 11, 20, 0.6, 0xBBBBBB);
	v = max(2,min(100,GetConfig(GlobalConfig,"SX",22)));
	PrintStrR(IToS(v), 11, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust sx 22 dec 2 100 1", 12, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust sx 22 inc 2 100 1", 12, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust sx 22 def 2 100 1", 12, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("NextLen", 13, 20, 0.6, 0xBBBBBB);
	v = max(0,min(100,GetConfig(GlobalConfig,"NextLen",5)));
	PrintStrR(IToS(v), 13, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust nextlen 5 dec 0 100 1", 14, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust nextlen 5 inc 0 100 1", 14, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust nextlen 5 def 0 100 1", 14, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("HoldLen", 15, 20, 0.6, 0xBBBBBB);
	v = max(0,min(5,GetConfig(GlobalConfig,"HoldLen",1)));
	PrintStrR(IToS(v), 15, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust holdlen 1 dec 0 5 1", 16, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust holdlen 1 inc 0 5 1", 16, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust holdlen 1 def 0 5 1", 16, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("HoldType", 17, 20, 0.6, 0xBBBBBB);
	v = max(0,min(2,GetConfig(GlobalConfig,"HoldType",1)));
	PrintStrR(vector<string>({"None","Default","Infinite"})[v], 17, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust holdtype 1 inc 0 2 -1", 18, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust holdtype 1 def 0 2 -1", 18, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("DefaultDir", 19, 20, 0.6, 0xBBBBBB);
	v = max(0,min(3,GetConfig(GlobalConfig,"DefaultDir",0)));
	PrintStrR(vector<string>({"Up","Right","Down","Left"})[v], 19, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust defaultdir 0 inc 0 3 -1", 20, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust defaultdir 0 def 0 3 -1", 20, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("ARE", 21, 20, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"ARE",0)));
	PrintStrR(IToS(v)+"ms", 21, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust are 0 dec", 22, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust are 0 inc", 22, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust are 0 def", 22, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("LCD", 23, 20, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"LCD",0)));
	PrintStrR(IToS(v)+"ms", 23, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust lcd 0 dec", 24, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust lcd 0 inc", 24, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust lcd 0 def", 24, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("DropDelay", 25, 20, 0.6, 0xBBBBBB);
	v = max(-1,min(Max,GetConfig(GlobalConfig,"DropDelay",1000)));
	PrintStrR(((v<0)?"Off":IToS(v)+"ms"), 25, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust dropdelay 1000 dec -1 9999998", 26, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust dropdelay 1000 inc -1 9999998", 26, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust dropdelay 1000 def -1 9999998", 26, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("LockDelay", 27, 20, 0.6, 0xBBBBBB);
	v = max(-1,min(Max,GetConfig(GlobalConfig,"LockDelay",500)));
	PrintStrR(((v<0)?"Off":IToS(v)+"ms"), 27, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust lockdelay 500 dec -1", 28, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust lockdelay 500 inc -1", 28, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust lockdelay 500 def -1", 28, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("ResetLim", 29, 20, 0.6, 0xBBBBBB);
	v = max(-1,min(Max,GetConfig(GlobalConfig,"ResetLim",15)));
	PrintStrR((v<0)?"Infinite":IToS(v), 29, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust resetlim 15 dec -1 max 1", 30, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust resetlim 15 inc -1 max 1", 30, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust resetlim 15 def -1 max 1", 30, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("PiecePool", 31, 20, 0.6, 0xBBBBBB);
	PrintStrR("["+IToS(SelectPool.size())+"]", 31, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "pool", 32, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "pooldefault", 32, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("RandomType", 33, 20, 0.6, 0xBBBBBB);
	v = max(0,min(2,GetConfig(GlobalConfig,"RandomType",1)));
	PrintStrR(vector<string>({"Random","Bag","Fixed"})[v], 33, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust randomtype 1 inc 0 2 -1", 34, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust randomtype 1 def 0 2 -1", 34, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("Rotation", 7, 35, 0.6, 0xBBBBBB);
	v = max(0,min(15,GetConfig(GlobalConfig,"RotateSystem",0)));
	PrintStrR(vector<string>({"Default","SRS+","StrictSRS+","ASC-DX","ASC",
	"LNRS","RNRS","ARS","C2","Sega","New","DX","Atari",
	"TetraX","ZM","None"})[v], 7, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust rotatesystem 0 inc 0 15 -1", 8, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust rotatesystem 0 def 0 15 -1", 8, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("Shadow", 9, 35, 0.6, 0xBBBBBB);
	v = max(0,min(2,GetConfig(GlobalConfig,"ShadowType",1)));
	PrintStrR(vector<string>({"Off","Default","Beam"})[v], 9, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust shadowtype 1 inc 0 2 -1", 10, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust shadowtype 1 def 0 2 -1", 10, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("RandHistory", 11, 35, 0.6, 0xBBBBBB);
	v = max(0,min(100,GetConfig(GlobalConfig,"RandHistory",1)));
	PrintStrR(IToS(v), 11, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust randhistory 1 dec 0 100 1", 12, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust randhistory 1 inc 0 100 1", 12, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust randhistory 1 def 0 100 1", 12, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("RandRoll", 13, 35, 0.6, 0xBBBBBB);
	v = max(0,min(100,GetConfig(GlobalConfig,"RandRoll",1)));
	PrintStrR(IToS(v), 13, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust randroll 1 dec 0 100 1", 14, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust randroll 1 inc 0 100 1", 14, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust randroll 1 def 0 100 1", 14, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("BagExtra", 15, 35, 0.6, 0xBBBBBB);
	v = max(0,min(100,GetConfig(GlobalConfig,"BagExtra",0)));
	PrintStrR(IToS(v), 15, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust bagextra 0 dec 0 100 1", 16, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust bagextra 0 inc 0 100 1", 16, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust bagextra 0 def 0 100 1", 16, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("GravityDelay", 17, 35, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"GravityDelay",0)));
	PrintStrR(IToS(v)+"ms", 17, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust gravitydelay 0 dec", 18, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust gravitydelay 0 inc", 18, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust gravitydelay 0 def", 18, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("GravityType", 19, 35, 0.6, 0xBBBBBB);
	v = max(0,min(7,GetConfig(GlobalConfig,"GravityType",0)));
	PrintStrR(vector<string>({"Default","Cascade","None","Sticky","Color","Separate","Avalanche","Fall"})[v], 19, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust gravitytype 0 inc 0 7 -1", 20, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust gravitytype 0 def 0 7 -1", 20, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("CascadeDelay", 21, 35, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"CCD",200)));
	PrintStrR(IToS(v)+"ms", 21, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust ccd 200 dec", 22, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust ccd 200 inc", 22, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust ccd 200 def", 22, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("StartHeight", 23, 35, 0.6, 0xBBBBBB);
	v = max(0,min(100,GetConfig(GlobalConfig,"StartHeight",0)));
	PrintStrR(IToS(v), 23, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust startheight 0 dec 0 100 1", 24, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust startheight 0 inc 0 100 1", 24, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust startheight 0 def 0 100 1", 24, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("StaticHeight", 25, 35, 0.6, 0xBBBBBB);
	v = max(0,min(100,GetConfig(GlobalConfig,"StaticHeight",0)));
	PrintStrR(IToS(v), 25, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust staticheight 0 dec 0 100 1", 26, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust staticheight 0 inc 0 100 1", 26, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust staticheight 0 def 0 100 1", 26, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("StartDelay", 27, 35, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"StartDelay",3000)));
	PrintStrR(IToS(v)+"ms", 27, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust startdelay 3000 dec", 28, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust startdelay 3000 inc", 28, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust startdelay 3000 def", 28, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("UseZone", 29, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"UseZone",0)));
	PrintStrR(vector<string>({"Off","On"})[v], 29, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust usezone 0 inc 0 1 -1", 30, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust usezone 0 def 0 1 -1", 30, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("ClutchRule", 31, 35, 0.6, 0xBBBBBB);
	v = max(0,min(2,GetConfig(GlobalConfig,"ClutchRule",0)));
	PrintStrR(vector<string>({"Default","Off","Always"})[v], 31, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust clutchrule 0 inc 0 2 -1", 32, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust clutchrule 0 def 0 2 -1", 32, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
}
void OptionBattle() {
	PrintStrL("BaseRule", 7, 20, 0.6, 0xBBBBBB);
	int v = max(0,min(5,GetConfig(GlobalConfig,"BaseRule",0)));
	PrintStrR(vector<string>({"Default","Equal","Classic","ASC","Arcade","None"})[v], 7, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust baserule 0 inc 0 5 -1", 8, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust baserule 0 def 0 5 -1", 8, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("ComboRule", 9, 20, 0.6, 0xBBBBBB);
	v = max(0,min(13,GetConfig(GlobalConfig,"ComboRule",0)));
	PrintStrR(vector<string>({"Default","Guildline","Techmino","Friends","Expert",
	"Battle","99","PPT","Effect","Zone","C2","Classic","Arcade","None"})[v], 9, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust comborule 0 inc 0 13 -1", 10, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust comborule 0 def 0 13 -1", 10, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("SpinRule", 11, 20, 0.6, 0xBBBBBB);
	v = max(0,min(7,GetConfig(GlobalConfig,"SpinRule",0)));
	PrintStrR(vector<string>({"Default","AllMini","Guildline","AllSpin","AllSemi","IO","Easy","None"})[v], 11, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust spinrule 0 inc 0 7 -1", 12, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust spinrule 0 def 0 7 -1", 12, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("B2BRule", 13, 20, 0.6, 0xBBBBBB);
	v = max(0,min(5,GetConfig(GlobalConfig,"B2BRule",2)));
	PrintStrR(vector<string>({"Guildline","Chain","Surge","QP","Techmino","None"})[v], 13, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust b2brule 2 inc 0 5 -1", 14, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust b2brule 2 def 0 5 -1", 14, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("AllClearRule", 15, 20, 0.6, 0xBBBBBB);
	v = max(0,min(6,GetConfig(GlobalConfig,"AllClearRule",0)));
	PrintStrR(vector<string>({"Default","IO","Guildline","QP","Techmino","Arcade","None"})[v], 15, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust allclearrule 0 inc 0 6 -1", 16, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust allclearrule 0 def 0 6 -1", 16, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("IntRule", 17, 20, 0.6, 0xBBBBBB);
	v = max(0,min(3,GetConfig(GlobalConfig,"IntRule",0)));
	PrintStrR(vector<string>({"Floor","Accumulate","Random","Ceil"})[v], 17, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust intrule 0 inc 0 3 -1", 18, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust intrule 0 def 0 3 -1", 18, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("BotType", 19, 20, 0.6, 0xBBBBBB);
	v = max(-1,min(9,GetConfig(GlobalConfig,"BotType",-1)));
	PrintStrR(GetBotName(v), 19, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust bottype -1 dec -1 9 1", 20, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust bottype -1 inc -1 9 1", 20, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust bottype -1 def -1 9 1", 20, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("BotSpeed", 21, 20, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"BotSpeed",1000)));
	PrintStrR(IToS(v)+"ms", 21, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust botspeed 1000 dec", 22, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust botspeed 1000 inc", 22, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust botspeed 1000 def", 22, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("GarbageDelay", 23, 20, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"GarbageDelay",500)));
	PrintStrR(IToS(v)+"ms", 23, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust garbagedelay 500 dec", 24, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust garbagedelay 500 inc", 24, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust garbagedelay 500 def", 24, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("GarbageGap", 25, 20, 0.6, 0xBBBBBB);
	v = max(-1,min(Max,GetConfig(GlobalConfig,"GarbageGap",8)));
	PrintStrR((v<0)?"Off":IToS(v), 25, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust garbagegap 8 dec -1 max 1", 26, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust garbagegap 8 inc -1 max 1", 26, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust garbagegap 8 def -1 max 1", 26, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("GarbagePush", 27, 20, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"GarbagePush",100)));
	PrintStrR(IToS(v)+"ms", 27, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust garbagepush 100 dec", 28, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust garbagepush 100 inc", 28, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust garbagepush 100 def", 28, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("GarbagePreview", 29, 20, 0.6, 0xBBBBBB);
	v = max(0,min(30,GetConfig(GlobalConfig,"GarbagePreview",10)));
	PrintStrR((v<0)?"Off":IToS(v), 29, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust garbagepreview 10 dec 0 30 1", 30, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust garbagepreview 10 inc 0 30 1", 30, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust garbagepreview 10 def 0 30 1", 30, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("GarbageActive", 31, 20, 0.6, 0xBBBBBB);
	v = max(0,min(3,GetConfig(GlobalConfig,"GarbageActive",0)));
	PrintStrR(vector<string>({"Default","Attack","None","Instant"})[v], 31, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust garbageactive 0 inc 0 3 -1", 32, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust garbageactive 0 def 0 3 -1", 32, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("GarbagePass", 33, 20, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"GarbagePass",0)));
	PrintStrR(IToS(v)+"ms", 33, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust garbagepass 0 dec", 34, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust garbagepass 0 inc", 34, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust garbagepass 0 def", 34, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("PlayerCount", 7, 35, 0.6, 0xBBBBBB);
	v = max(1,min(201,GetConfig(GlobalConfig,"Player",1)));
	PrintStrR(IToS(v), 7, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust player 1 dec 1 201 1", 8, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust player 1 inc 1 201 1", 8, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust player 1 def 1 201 1", 8, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("AllBot", 9, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"AllBot",0)));
	PrintStrR((v)?"On":"Off", 9, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust allbot 0 inc 0 1 -1", 10, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust allbot 0 def 0 1 -1", 10, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("Stock", 11, 35, 0.6, 0xBBBBBB);
	v = max(-1,min(Max,GetConfig(GlobalConfig,"Stock",0)));
	PrintStrR((v<0)?"Infinite":IToS(v), 11, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust stock 0 dec -1 max 1", 12, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust stock 0 inc -1 max 1", 12, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust stock 0 def -1 max 1", 12, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("GarbageSeg", 13, 35, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"GarbageSeg",0)));
	PrintStrR(IToS(v), 13, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust garbageseg 0 dec 0 max 1", 14, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust garbageseg 0 inc 0 max 1", 14, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust garbageseg 0 def 0 max 1", 14, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("DigBonus", 15, 35, 0.6, 0xBBBBBB);
	v = max(0,min(2,GetConfig(GlobalConfig,"DigBonus",2)));
	PrintStrR(vector<string>({"Off","Defensive","Default"})[v], 15, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust digbonus 2 inc 0 2 -1", 16, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust digbonus 2 def 0 2 -1", 16, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("OpenerProtect", 17, 35, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"OpenerProtect",14)));
	PrintStrR(IToS(v), 17, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust openerprotect 14 dec 0 max 1", 18, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust openerprotect 14 inc 0 max 1", 18, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust openerprotect 14 def 0 max 1", 18, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("0_BotType", 19, 35, 0.6, 0xBBBBBB);
	v = max(-1,min(9,GetConfig(GlobalConfig,"0BotType",-1)));
	PrintStrR(GetBotName(v), 19, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust 0bottype -1 dec -1 9 1", 20, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust 0bottype -1 inc -1 9 1", 20, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust 0bottype -1 def -1 9 1", 20, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("0_BotSpeed", 21, 35, 0.6, 0xBBBBBB);
	v = max(-1,min(Max,GetConfig(GlobalConfig,"0BotSpeed",-1)));
	PrintStrR((v<0)?"Default":IToS(v)+"ms", 21, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust 0botspeed -1 dec -1 max", 22, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust 0botspeed -1 inc -1 max", 22, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust 0botspeed -1 def -1 max", 22, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("SegMess", 23, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1000,GetConfig(GlobalConfig,"SegMess",1000)));
	PrintStrR(IToS(v), 23, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust segmess 1000 dec 0 1000", 24, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust segmess 1000 inc 0 1000", 24, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust segmess 1000 def 0 1000", 24, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("InnerMess", 25, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1000,GetConfig(GlobalConfig,"InnerMess",0)));
	PrintStrR(IToS(v), 25, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust innermess 0 dec 0 1000", 26, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust innermess 0 inc 0 1000", 26, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust innermess 0 def 0 1000", 26, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("GarbageShape", 27, 35, 0.6, 0xBBBBBB);
	v = max(0,min(7,GetConfig(GlobalConfig,"GarbageShape",0)));
	PrintStrR(vector<string>({"Default","Full","Empty","Bubble","Random","Board","Stair","Copy"})[v], 27, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust garbageshape 0 inc 0 7 -1", 28, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust garbageshape 0 def 0 7 -1", 28, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("GarbageType", 29, 35, 0.6, 0xBBBBBB);
	v = max(0,min(4,GetConfig(GlobalConfig,"GarbageType",0)));
	PrintStrR(vector<string>({"Default","Solid","Lock","Bomb","Bricks"})[v], 29, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust garbagetype 0 inc 0 4 -1", 30, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust garbagetype 0 def 0 4 -1", 30, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
}
void OptionLevel() {
	PrintStrL("LevelStart", 7, 20, 0.6, 0xBBBBBB);
	int v = max(0,min(1000,GetConfig(GlobalConfig,"LevStart",0)));
	PrintStrR(IToS(v), 7, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust levstart 0 dec 0 1000 1", 8, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust levstart 0 inc 0 1000 1", 8, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust levstart 0 def 0 1000 1", 8, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("LevelMax", 9, 20, 0.6, 0xBBBBBB);
	v = max(0,min(1000,GetConfig(GlobalConfig,"LevMax",50)));
	PrintStrR(IToS(v), 9, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust levmax 50 dec 0 1000 1", 10, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust levmax 50 inc 0 1000 1", 10, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust levmax 50 def 0 1000 1", 10, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("LevelBase", 11, 20, 0.6, 0xBBBBBB);
	v = max(0,min(1000,GetConfig(GlobalConfig,"LevBase",0)));
	PrintStrR(IToS(v), 11, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust levbase 0 dec 0 1000 1", 12, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust levbase 0 inc 0 1000 1", 12, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust levbase 0 def 0 1000 1", 12, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("LevelLine", 13, 20, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"LevLine",0)));
	PrintStrR((v)?IToS(v):"Off", 13, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust levline 0 dec 0 max", 14, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust levline 0 inc 0 max", 14, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust levline 0 def 0 max", 14, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("LevelTime", 15, 20, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"LevTime",0)));
	PrintStrR((v)?IToS(v)+"ms":"Off", 15, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust levtime 0 dec", 16, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust levtime 0 inc", 16, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust levtime 0 def", 16, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("LevelPiece", 17, 20, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"LevPiece",0)));
	PrintStrR((v)?IToS(v):"Off", 17, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust levpiece 0 dec 0 max", 18, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust levpiece 0 inc 0 max", 18, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust levpiece 0 def 0 max", 18, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("LevelAttack", 19, 20, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"LevAttack",0)));
	PrintStrR((v)?IToS(v):"Off", 19, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust levattack 0 dec 0 max", 20, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust levattack 0 inc 0 max", 20, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust levattack 0 def 0 max", 20, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("LevelLineInc", 21, 20, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"LevLineInc",0)));
	PrintStrR((v)?IToS(v):"Off", 21, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust levlineinc 0 dec 0 max", 22, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust levlineinc 0 inc 0 max", 22, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust levlineinc 0 def 0 max", 22, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("LevelTimeInc", 23, 20, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"LevTimeInc",0)));
	PrintStrR((v)?IToS(v)+"ms":"Off", 23, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust levtimeinc 0 dec", 24, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust levtimeinc 0 inc", 24, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust levtimeinc 0 def", 24, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("LevelPieceInc", 25, 20, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"LevPieceInc",0)));
	PrintStrR((v)?IToS(v):"Off", 25, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust levpieceinc 0 dec 0 max", 26, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust levpieceinc 0 inc 0 max", 26, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust levpieceinc 0 def 0 max", 26, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("LevelAttackInc", 27, 20, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"LevAttackInc",0)));
	PrintStrR((v)?IToS(v):"Off", 27, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust levattackinc 0 dec 0 max", 28, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust levattackinc 0 inc 0 max", 28, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust levattackinc 0 def 0 max", 28, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("LevelScaleType", 29, 20, 0.6, 0xBBBBBB);
	v = max(0,min(3,GetConfig(GlobalConfig,"LevScaleType",0)));
	PrintStrR(vector<string>({"Default","Div","Dec","Exp"})[v], 29, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust levscaletype 0 inc 0 3 -1", 30, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust levscaletype 0 def 0 3 -1", 30, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("LevelScaleRate", 31, 20, 0.6, 0xBBBBBB);
	v = max(0,min(1000,GetConfig(GlobalConfig,"LevScaleRate",7)));
	PrintStrR(IToS(v), 31, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust levscalerate 7 dec 0 1000", 32, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust levscalerate 7 inc 0 1000", 32, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust levscalerate 7 def 0 1000", 32, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("TargetLine", 7, 35, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"TarLine",0)));
	PrintStrR((v)?IToS(v):"Off", 7, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust tarline 0 dec 0 max", 8, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust tarline 0 inc 0 max", 8, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust tarline 0 def 0 max", 8, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("TargetLineType", 9, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"TypeLine",0)));
	PrintStrR((v)?"Limit":"Goal", 9, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust typeline 0 inc 0 1 -1", 10, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust typeline 0 def 0 1 -1", 10, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("TargetPiece", 11, 35, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"TarPiece",0)));
	PrintStrR((v)?IToS(v):"Off", 11, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust tarpiece 0 dec 0 max", 12, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust tarpiece 0 inc 0 max", 12, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust tarpiece 0 def 0 max", 12, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("TargetPieceType", 13, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"TypePiece",0)));
	PrintStrR((v)?"Limit":"Goal", 13, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust typepiece 0 inc 0 1 -1", 14, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust typepiece 0 def 0 1 -1", 14, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("TargetDig", 15, 35, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"TarDig",0)));
	PrintStrR((v)?IToS(v):"Off", 15, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust tardig 0 dec 0 max", 16, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust tardig 0 inc 0 max", 16, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust tardig 0 def 0 max", 16, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("TargetDigType", 17, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"TypeDig",0)));
	PrintStrR((v)?"Limit":"Goal", 17, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust typedig 0 inc 0 1 -1", 18, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust typedig 0 def 0 1 -1", 18, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("TargetAttack", 19, 35, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"TarAttack",0)));
	PrintStrR((v)?IToS(v):"Off", 19, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust tarattack 0 dec 0 max", 20, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust tarattack 0 inc 0 max", 20, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust tarattack 0 def 0 max", 20, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("TargetAttackType", 21, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"TypeAttack",0)));
	PrintStrR((v)?"Limit":"Goal", 21, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust typeattack 0 inc 0 1 -1", 22, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust typeattack 0 def 0 1 -1", 22, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("TargetScore", 23, 35, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"TarScore",0)));
	PrintStrR((v)?IToS(v):"Off", 23, 48, 0.6, 0xCCCCCC);
	AddButton("-", "adjust tarscore 0 dec 0 max", 24, 45.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust tarscore 0 inc 0 max", 24, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust tarscore 0 def 0 max", 24, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("TargetScoreType", 25, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"TypeScore",0)));
	PrintStrR((v)?"Limit":"Goal", 25, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust typescore 0 inc 1 -1", 26, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust typescore 0 def 0 1 -1", 26, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
}
void OptionMisc() {
	PrintStrL("VanishHeight", 7, 20, 0.6, 0xBBBBBB);
	int v = max(0,min(100,GetConfig(GlobalConfig,"VanishHeight",0)));
	PrintStrR((v)?IToS(v):"Off", 7, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust vanishheight 0 dec 0 100 1", 8, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust vanishheight 0 inc 0 100 1", 8, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust vanishheight 0 def 0 100 1", 8, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("RandomRot", 9, 20, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"RandomRot",0)));
	PrintStrR((v)?"On":"Off", 9, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust randomrot 0 inc 0 1 -1", 10, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust randomrot 0 def 0 1 -1", 10, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("ShowHint", 11, 20, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"UseTip",0)));
	PrintStrR((v)?"On":"Off", 11, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust usetip 0 inc 0 1 -1", 12, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust usetip 0 def 0 1 -1", 12, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("SpeedCap", 13, 20, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"SpeedCap",0)));
	PrintStrR(IToS(v)+"ms", 13, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust speedcap 0 dec", 14, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust speedcap 0 inc", 14, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust speedcap 0 def", 14, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("ZoneSeg", 15, 20, 0.6, 0xBBBBBB);
	v = max(1,min(Max,GetConfig(GlobalConfig,"ZoneSeg",4)));
	PrintStrR(IToS(v), 15, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust zoneseg 4 dec 1 max 1", 16, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust zoneseg 4 inc 1 max 1", 16, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust zoneseg 4 def 1 max 1", 16, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("ZoneReq", 17, 20, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"ZoneReq",8)));
	PrintStrR(IToS(v), 17, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust zonereq 8 dec 0 max 1", 18, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust zonereq 8 inc 0 max 1", 18, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust zonereq 8 def 0 max 1", 18, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("ZoneTime", 19, 20, 0.6, 0xBBBBBB);
	v = max(0,min(Max,GetConfig(GlobalConfig,"ZoneTime",5000)));
	PrintStrR(IToS(v), 19, 33, 0.6, 0xCCCCCC);
	AddButton("-", "adjust zonetime 5000 dec", 20, 30.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton("+", "adjust zonetime 5000 inc", 20, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust zonetime 5000 def", 20, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("UseMove", 21, 20, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"UseMove",1)));
	PrintStrR((v)?"On":"Off", 21, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust usemove 1 inc 0 1 -1", 22, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust usemove 1 def 0 1 -1", 22, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("UseRotate", 23, 20, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"UseRotate",1)));
	PrintStrR((v)?"On":"Off", 23, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust userotate 1 inc 0 1 -1", 24, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust userotate 1 def 0 1 -1", 24, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("Use2Rot", 25, 20, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"Use2Rot",1)));
	PrintStrR((v)?"On":"Off", 25, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust use2rot 1 inc 0 1 -1", 26, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust use2rot 1 def 0 1 -1", 26, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("UseHalf", 27, 20, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"UseHalf",1)));
	PrintStrR((v)?"On":"Off", 27, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust usehalf 1 inc 0 1 -1", 28, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust usehalf 1 def 0 1 -1", 28, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("UseSoftDrop", 29, 20, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"UseSoftDrop",1)));
	PrintStrR((v)?"On":"Off", 29, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust usesoftdrop 1 inc 0 1 -1", 30, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust usesoftdrop 1 def 0 1 -1", 30, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("UseHardDrop", 31, 20, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"UseHardDrop",1)));
	PrintStrR((v)?"On":"Off", 31, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust useharddrop 1 inc 0 1 -1", 32, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust useharddrop 1 def 0 1 -1", 32, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("UseSonicDrop", 33, 20, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"UseSonicDrop",1)));
	PrintStrR((v)?"On":"Off", 33, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust usesonicdrop 1 inc 0 1 -1", 34, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust usesonicdrop 1 def 0 1 -1", 34, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("UseFlip", 7, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"UseFlip",0)));
	PrintStrR((v)?"On":"Off", 7, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust useflip 0 inc 0 1 -1", 8, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust useflip 0 def 0 1 -1", 8, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("UseUp", 9, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"UseUp",0)));
	PrintStrR((v)?"On":"Off", 9, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust useup 0 inc 0 1 -1", 10, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust useup 0 def 0 1 -1", 10, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("UseWaste", 11, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"UseWaste",0)));
	PrintStrR((v)?"On":"Off", 11, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust usewaste 0 inc 0 1 -1", 12, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust usewaste 0 def 0 1 -1", 12, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("UseLock", 13, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"UseLock",0)));
	PrintStrR((v)?"On":"Off", 13, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust uselock 0 inc 0 1 -1", 14, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust uselock 0 def 0 1 -1", 14, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("UsePlace", 15, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"UsePlace",0)));
	PrintStrR((v)?"On":"Off", 15, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust useplace 0 inc 0 1 -1", 16, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust useplace 0 def 0 1 -1", 16, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("CursorControl", 17, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"UseClick",1)));
	PrintStrR((v)?"On":"Off", 17, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust useclick 1 inc 0 1 -1", 18, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust useclick 1 def 0 1 -1", 18, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("UseUndo", 19, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"UseUndo",0)));
	PrintStrR((v)?"On":"Off", 19, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust useundo 0 inc 0 1 -1", 20, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust useundo 0 def 0 1 -1", 20, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("UseDeep", 21, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"UseDeep",0)));
	PrintStrR((v)?"On":"Off", 21, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust usedeep 0 inc 0 1 -1", 22, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust usedeep 0 def 0 1 -1", 22, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("ZenithMode", 23, 35, 0.6, 0xBBBBBB);
	v = max(0,min(1,GetConfig(GlobalConfig,"QPMode",0)));
	PrintStrR((v)?"On":"Off", 23, 48, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust qpmode 0 inc 0 1 -1", 24, 46.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust qpmode 0 def 0 1 -1", 24, 47.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
}
void OptionQPMod() {
	int d = 6;
	PrintStrL("No Hold", ++d, 20, 0.6, 0xBBBBBB);
	int v = max(0,min(2,GetConfig(GlobalConfig,"0_Mod2",0)));
	PrintStrR(vector<string>({"Off","On","Reverse"})[v], d, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust 0_mod2 0 inc 0 2 -1", ++d, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust 0_mod2 0 def 0 2 -1", d, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("Messier", ++d, 20, 0.6, 0xBBBBBB);
	v = max(0,min(2,GetConfig(GlobalConfig,"0_Mod3",0)));
	PrintStrR(vector<string>({"Off","On","Reverse"})[v], d, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust 0_mod3 0 inc 0 2 -1", ++d, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust 0_mod3 0 def 0 2 -1", d, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("Gravity", ++d, 20, 0.6, 0xBBBBBB);
	v = max(0,min(2,GetConfig(GlobalConfig,"0_Mod4",0)));
	PrintStrR(vector<string>({"Off","On","Reverse"})[v], d, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust 0_mod4 0 inc 0 2 -1", ++d, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust 0_mod4 0 def 0 2 -1", d, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("Votality", ++d, 20, 0.6, 0xBBBBBB);
	v = max(0,min(2,GetConfig(GlobalConfig,"0_Mod5",0)));
	PrintStrR(vector<string>({"Off","On","Reverse"})[v], d, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust 0_mod5 0 inc 0 2 -1", ++d, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust 0_mod5 0 def 0 2 -1", d, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("Double Hole", ++d, 20, 0.6, 0xBBBBBB);
	v = max(0,min(2,GetConfig(GlobalConfig,"0_Mod6",0)));
	PrintStrR(vector<string>({"Off","On","Reverse"})[v], d, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust 0_mod6 0 inc 0 2 -1", ++d, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust 0_mod6 0 def 0 2 -1", d, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("Invisibility", ++d, 20, 0.6, 0xBBBBBB);
	v = max(0,min(2,GetConfig(GlobalConfig,"0_Mod7",0)));
	PrintStrR(vector<string>({"Off","On","Reverse"})[v], d, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust 0_mod7 0 inc 0 2 -1", ++d, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust 0_mod7 0 def 0 2 -1", d, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("All-Spin", ++d, 20, 0.6, 0xBBBBBB);
	v = max(0,min(2,GetConfig(GlobalConfig,"0_Mod8",0)));
	PrintStrR(vector<string>({"Off","On","Reverse"})[v], d, 33, 0.6, 0xCCCCCC);
	AddButton(Str(19), "adjust 0_mod8 0 inc 0 2 -1", ++d, 31.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	AddButton(Str(4), "adjust 0_mod8 0 def 0 2 -1", d, 32.5, 0.8, 0.8, 0.6, 0xBBBBBB, 0xCCCCCC, 0x000000, 0x000000);
	PrintStrL("Expert", ++d, 20, 0.6, 0xBBBBBB);
	v = max(0,min(2,GetConfig(GlobalConfig,"0_Mod9",0)));
	PrintStrR(vector<string>({"Off","On","Reverse"})[v], d, 33, 0.6, 0xCCCCCC);