import flash.geom.Point;
public function titlerender(key:KeyPoll, dwgfx:dwgraphicsclass, map:mapclass, game:gameclass, obj:entityclass, help:helpclass):void {
  dwgfx.drawbutton(game, help);
	
	dwgfx.backbuffer.lock();
	dwgfx.backbuffer.fillRect(dwgfx.backbuffer.rect, 0x000000);
	
	if (!game.menustart) {
		tr = 164 - (help.glow / 2) - Math.random() * 4;
		tg = 164 - (help.glow / 2) - Math.random() * 4;
		tb = 164 - (help.glow / 2) - Math.random() * 4;
		
		temp = 100;
		dwgfx.drawsprite((160 - 96) + 0 * 32, temp, 23, tr, tg, tb);
		dwgfx.drawsprite((160 - 96) + 1 * 32, temp, 23, tr, tg, tb);
		dwgfx.drawsprite((160 - 96) + 2 * 32, temp, 23, tr, tg, tb);
		dwgfx.drawsprite((160 - 96) + 3 * 32, temp, 23, tr, tg, tb);
		dwgfx.drawsprite((160 - 96) + 4 * 32, temp, 23, tr, tg, tb);
		dwgfx.drawsprite((160 - 96) + 5 * 32, temp, 23, tr, tg, tb);
		
		
		dwgfx.print(5, 135, "[ tap to start ]", tr, tg, tb, true);	
		//dwgfx.print(5, 195, "ACTION = Space, Z, or V", tr*0.5, tg*0.5, tb*0.5, true);	
		
		//dwgfx.print(5, 215, "Press CTRL-F for Fullscreen", tr, tg, tb, true);	
		
		/*dwgfx.print(5, 5, "IGF WIP Build, 29th Oct '09", tr, tg, tb, true);			
		dwgfx.print(5, 200, "Game by Terry Cavanagh", tr, tg, tb, true);
		dwgfx.print(5, 210, "Music by Magnus P~lsson", tr, tg, tb, true);
		dwgfx.print(5, 220, "Roomnames by Bennett Foddy", tr, tg, tb, true);*/
	}else {
		if(!game.colourblindmode) dwgfx.drawtowerbackgroundsolo(map);
		
		tr = map.r - (help.glow / 4) - Math.random() * 4;
		tg = map.g - (help.glow / 4) - Math.random() * 4;
		tb = map.b - (help.glow / 4) - Math.random() * 4;
		if (tr < 0) tr = 0; if(tr>255) tr=255;
		if (tg < 0) tg = 0; if(tg>255) tg=255;
		if (tb < 0) tb = 0; if(tb>255) tb=255;
		
		temp = 30+20;
		
		if(game.currentmenuname=="mainmenu"){
			dwgfx.drawsprite((160 - 96) + 0 * 32, temp, 23, tr, tg, tb);
			dwgfx.drawsprite((160 - 96) + 1 * 32, temp, 23, tr, tg, tb);
			dwgfx.drawsprite((160 - 96) + 2 * 32, temp, 23, tr, tg, tb);
			dwgfx.drawsprite((160 - 96) + 3 * 32, temp, 23, tr, tg, tb);
			dwgfx.drawsprite((160 - 96) + 4 * 32, temp, 23, tr, tg, tb);
			dwgfx.drawsprite((160 - 96) + 5 * 32, temp, 23, tr, tg, tb);
			dwgfx.print( 320 - 8 * 11, 2, "more games", tr / 2, tg / 2, tb / 2);
			dwgfx.print( 320 - 8 * 8, 230, "credits", tr / 2, tg / 2, tb / 2);
			dwgfx.print( 8, 230, "options", tr / 2, tg / 2, tb / 2);
		}else if (game.currentmenuname == "options") {
			/*
			if (game.currentmenuoption == 0) {
				dwgfx.bigprint( -1, 30, "Accessibility", tr, tg, tb, true);
				dwgfx.print( -1, 65, "Disable screen effects, enable", tr, tg, tb, true);
				dwgfx.print( -1, 75, "slowdown modes or invincibility", tr, tg, tb, true);
			}else if (game.currentmenuoption == 1) {
				dwgfx.bigprint( -1, 30, "Unlock Play Modes", tr, tg, tb, true);
				dwgfx.print( -1, 65, "Unlock parts of the game normally", tr, tg, tb, true);
				dwgfx.print( -1, 75, "unlocked as you progress", tr, tg, tb, true);
			}else if (game.currentmenuoption == 2) {
				dwgfx.bigprint( -1, 30, "Clear Data", tr, tg, tb, true);
				dwgfx.print( -1, 65, "Delete your save data", tr, tg, tb, true);
				dwgfx.print( -1, 75, "and unlocked play modes", tr, tg, tb, true);
			}
			*/
		}else if (game.currentmenuname == "graphicoptions") {
			if (game.advanced_mode) {
				if (game.currentmenuoption == 0) {
					dwgfx.bigprint( -1, 30, "Screen Mode", tr, tg, tb, true);
					dwgfx.print( -1, 65, "Change between windowed", tr, tg, tb, true);
					dwgfx.print( -1, 75, "and fullscreen modes", tr, tg, tb, true);
				}else if (game.currentmenuoption == 1) {
					dwgfx.bigprint( -1, 20, "Enable Hardware", tr, tg, tb, true);
					dwgfx.bigprint( -1, 45, "Acceleration", tr, tg, tb, true);
					dwgfx.print( -1, 85, "Uses graphics hardware to manually", tr, tg, tb, true);
					dwgfx.print( -1, 95, "manage screen scaling. Can cause", tr, tg, tb, true);
					dwgfx.print( -1, 105, "slowdown on some computers.", tr, tg, tb, true);
				}else if (game.currentmenuoption == 2) {
					dwgfx.bigprint( -1, 30, "Screen Scaling", tr, tg, tb, true);
					dwgfx.print( -1, 65, "Manually adjust scaling ratio. Full", tr, tg, tb, true);
					dwgfx.print( -1, 75, "scaling can cause distortions if", tr, tg, tb, true);
					dwgfx.print( -1, 85, "screen smoothing is disabled.", tr, tg, tb, true);
					switch(game.advanced_scaling) {
						case 0: dwgfx.print( -1, 105, "[Full]   x1    x2    x3    x4 ", tr, tg, tb, true); break;
						case 1: dwgfx.print( -1, 105, " Full   [x1]   x2    x3    x4 ", tr, tg, tb, true); break;
						case 2: dwgfx.print( -1, 105, " Full    x1   [x2]   x3    x4 ", tr, tg, tb, true); break;
						case 3: dwgfx.print( -1, 105, " Full    x1    x2   [x3]   x4 ", tr, tg, tb, true); break;
						case 4: dwgfx.print( -1, 105, " Full    x1    x2    x3   [x4]", tr, tg, tb, true); break;
					}
				} else if (game.currentmenuoption == 3) {
					dwgfx.bigprint( -1, 30, "Screen Smoothing", tr, tg, tb, true);
					dwgfx.print( -1, 65, "Scales the screen evenly, but", tr, tg, tb, true);
					dwgfx.print( -1, 75, "causes a blurring effect.", tr, tg, tb, true);
				} 
			}else{
				if (game.currentmenuoption == 0) {
					dwgfx.bigprint( -1, 30, "Screen Mode", tr, tg, tb, true);
					dwgfx.print( -1, 65, "Change between windowed", tr, tg, tb, true);
					dwgfx.print( -1, 75, "and fullscreen modes", tr, tg, tb, true);
				}else if (game.currentmenuoption == 1) {
					dwgfx.bigprint( -1, 20, "Disable Hardware", tr, tg, tb, true);
					dwgfx.bigprint( -1, 45, "Acceleration", tr, tg, tb, true);
					dwgfx.print( -1, 85, "May improve fullscreen performance on", tr, tg, tb, true);
					dwgfx.print( -1, 95, "some computers. Provides additional", tr, tg, tb, true);
					dwgfx.print( -1, 105, "scaling and smoothing options.", tr, tg, tb, true);
				} 
			}
	  }else if (game.currentmenuname == "credits") {
			dwgfx.print( -1, 50, "VVVVVV is a game by", tr, tg, tb, true);
			dwgfx.bigprint( 40, 65, "Terry Cavanagh", tr, tg, tb, true, 2);
			
			dwgfx.drawimagecol(7, -1, 86, tr *0.75, tg *0.75, tb *0.75, true);
		  //dwgfx.print( 40, 85, "http://www.distractionware.com", tr, tg, tb, true);
			
			dwgfx.print( -1, 120, "and features music by", tr, tg, tb, true);
			dwgfx.bigprint( 40, 135, "Magnus P~lsson", tr, tg, tb, true, 2);
			dwgfx.drawimagecol(8, -1, 156, tr *0.75, tg *0.75, tb *0.75, true);
		  //dwgfx.print( 40, 155, "http://souleye.madtracker.net", tr, tg, tb, true);
		}else if (game.currentmenuname == "credits2") {
			dwgfx.print( -1, 30, "Roomnames are by", tr, tg, tb, true);
			dwgfx.bigprint( 40, 45, "Bennett Foddy", tr, tg, tb, true);
			dwgfx.drawimagecol(9, -1, 66, tr*0.75, tg *0.75, tb *0.75, true);
		  //dwgfx.print( 40, 80, "http://www.distractionware.com", tr, tg, tb);
			
			dwgfx.print( -1, 100, "Beta Testing by", tr, tg, tb, true);
			dwgfx.bigprint( 40, 110, "Sam Kaplan", tr, tg, tb, true);
			dwgfx.bigprint( 40, 130, "Pauli Kohberger", tr, tg, tb, true);
			dwgfx.print( -1, 160, "Ending Picture by", tr, tg, tb, true);
			dwgfx.bigprint( 40, 170, "Pauli Kohberger", tr, tg, tb, true);
		}else if (game.currentmenuname == "credits3") {
			dwgfx.print( -1, 20, "VVVVVV is supported by", tr, tg, tb, true);
			dwgfx.print( 40, 30, "the following patrons", tr, tg, tb, true);
			
			dwgfx.print( 80-16, 40+20, "Anders Ekermo", tr, tg, tb);
			dwgfx.print( 80-12, 54+20, "Andreas K|mper", tr, tg, tb);
			dwgfx.print( 80-8, 68+20, "Anthony Burch", tr, tg, tb);
			dwgfx.print( 80-4, 82+20, "Bennett Foddy", tr, tg, tb);
			dwgfx.print( 80, 96+20, "Brendan O'Sullivan", tr, tg, tb);
			dwgfx.print( 80+4, 110+20, "Christopher Armstrong", tr, tg, tb);
			dwgfx.print( 80+8, 124+20, "Daniel Benmergui", tr, tg, tb);
			dwgfx.print( 80+12, 138+20, "David Pittman", tr, tg, tb);
			dwgfx.print( 80+16, 152+20, "Ian Bogost", tr, tg, tb);
		}else if (game.currentmenuname == "credits4") {
			dwgfx.print( -1, 20, "VVVVVV is supported by", tr, tg, tb, true);
			dwgfx.print( 40, 30, "the following patrons", tr, tg, tb, true);
			dwgfx.print( 80-16, 20+40, "Ian Poma", tr, tg, tb);
			dwgfx.print( 80-12, 34+40, "Jaz McDougall", tr, tg, tb);
			dwgfx.print( 80-8, 48+40, "John Faulkenbury", tr, tg, tb);
			dwgfx.print( 80-4, 62+40, "Jonathan Whiting", tr, tg, tb);
			dwgfx.print( 80, 76+40, "Kyle Pulver", tr, tg, tb);
			dwgfx.print( 80+4, 90+40, "Markus Persson", tr, tg, tb);
			dwgfx.print( 80+8, 104+40, "Nathan Ostgard", tr, tg, tb);
			dwgfx.print( 80+12, 118+40, "Nick Easler", tr, tg, tb);
			dwgfx.print( 80+16, 132+40, "Stephen Lavelle", tr, tg, tb);
		}else if (game.currentmenuname == "credits5") {
			dwgfx.print( -1, 20, "and also by", tr, tg, tb, true);
			
			dwgfx.print( 80, 40,"Adam Wendt", tr, tg, tb);
			dwgfx.print( 80, 50,"Andreas J{rgensen", tr, tg, tb);
			dwgfx.print( 80, 60,"}ngel Louzao Penalva", tr, tg, tb);
			dwgfx.print( 80, 70,"Ashley Burton", tr, tg, tb);
			dwgfx.print( 80, 80,"Aubrey Hesselgren", tr, tg, tb);
			dwgfx.print( 80, 90,"Bradley Rose", tr, tg, tb);
			dwgfx.print( 80, 100,"Brendan Urquhart", tr, tg, tb);
			dwgfx.print( 80, 110,"Chris Ayotte", tr, tg, tb);
			dwgfx.print( 80, 120,"Christopher Zamanillo", tr, tg, tb);
			dwgfx.print( 80, 130,"Daniel Schuller", tr, tg, tb);
			dwgfx.print( 80, 140,"Hybrid Mind Studios", tr, tg, tb);
			dwgfx.print( 80, 150,"Emilie McGinley", tr, tg, tb);
			dwgfx.print( 80, 160,"Francisco Solares", tr, tg, tb);
			dwgfx.print( 80, 170,"Hal Helms", tr, tg, tb);
		}else if (game.currentmenuname == "credits6") {
			dwgfx.print( -1, 20, "and also by", tr, tg, tb, true);
			
			dwgfx.print( 80, 40,"Hayden Scott-Baron", tr, tg, tb);
			dwgfx.print( 80, 50,"Hermit Games", tr, tg, tb);
			dwgfx.print( 80, 60,"Ido Yehieli", tr, tg, tb);
			dwgfx.print( 80, 70,"Jade Vault Games", tr, tg, tb);
			dwgfx.print( 80, 80,"James Andrews", tr, tg, tb);
			dwgfx.print( 80, 90,"James Riley", tr, tg, tb);
			dwgfx.print( 80, 100,"James Hsieh", tr, tg, tb);
			dwgfx.print( 80, 110,"Jasper Byrne", tr, tg, tb);
			dwgfx.print( 80, 120,"Jedediah Baker", tr, tg, tb);
			dwgfx.print( 80, 130,"Jens Bergensten", tr, tg, tb);
			dwgfx.print( 80, 140,"Jeremy J. Penner", tr, tg, tb);
			dwgfx.print( 80, 150,"Jeremy Peterson", tr, tg, tb);
			dwgfx.print( 80, 160,"Jim McGinley", tr, tg, tb);
			dwgfx.print( 80, 170,"Jonathan Cartwright", tr, tg, tb);
		}else if (game.currentmenuname == "credits7") {
			dwgfx.print( -1, 20, "and also by", tr, tg, tb, true);
			
			dwgfx.print( 80, 40,"John Nesky", tr, tg, tb);
			dwgfx.print( 80, 50,"Jos Yule", tr, tg, tb);
			dwgfx.print( 80, 60,"Jose Flores", tr, tg, tb);
			dwgfx.print( 80, 70,"Josh Bizeau", tr, tg, tb);
			dwgfx.print( 80, 80,"Joshua Buergel", tr, tg, tb);
			dwgfx.print( 80, 90,"Joshua Hochner", tr, tg, tb);
			dwgfx.print( 80, 100,"Kurt Ostfeld", tr, tg, tb);
			dwgfx.print( 80, 110,"Magnus P~lsson", tr, tg, tb);
			dwgfx.print( 80, 120,"Mark Neschadimenko", tr, tg, tb);
			dwgfx.print( 80, 130,"Matt Antonellis", tr, tg, tb);
			dwgfx.print( 80, 140,"Matthew Reppert", tr, tg, tb);
			dwgfx.print( 80, 150,"Michael Falkensteiner", tr, tg, tb);
			dwgfx.print( 80, 160,"Michael Vendittelli", tr, tg, tb);
			dwgfx.print( 80, 170,"Mike Kasprzak", tr, tg, tb);
		}else if (game.currentmenuname == "credits8") {
			dwgfx.print( -1, 20, "and also by", tr, tg, tb, true);
			
			dwgfx.print( 80, 70,"Mitchel Stein", tr, tg, tb);
			dwgfx.print( 80, 80,"Sean Murray", tr, tg, tb);
			dwgfx.print( 80, 90,"Simon Michael", tr, tg, tb);
			dwgfx.print( 80, 100,"Simon Schmid", tr, tg, tb);
			dwgfx.print( 80, 110,"Stephen Maxwell", tr, tg, tb);
			dwgfx.print( 80, 120,"Swing Swing Submarine", tr, tg, tb);
			dwgfx.print( 80, 130,"Tam Toucan", tr, tg, tb);
			dwgfx.print( 80, 140,"Terry Dooher", tr, tg, tb);
			dwgfx.print( 80, 150,"Tim W.", tr, tg, tb);
			dwgfx.print( 80, 160,"Timothy Bragan", tr, tg, tb);
		}else if (game.currentmenuname == "credits9") {
			dwgfx.print( -1, 20, "and thanks also to:", tr, tg, tb, true);
			
			dwgfx.bigprint(80, 60, "You!", tr, tg, tb, true);
			
			dwgfx.print( 80, 100, "Your support makes it possible", tr, tg, tb,true);
			dwgfx.print( 80, 110,"for me to continue making the", tr, tg, tb,true);
			dwgfx.print( 80, 120,"games I want to make, now", tr, tg, tb,true);
			dwgfx.print( 80, 130, "and into the future.", tr, tg, tb, true);
			
			dwgfx.print( 80, 150,"Thank you!", tr, tg, tb,true);
		}else if (game.currentmenuname == "setinvincibility") {
			dwgfx.print( -1, 90, "Warning! Enabling invincibility", tr, tg, tb, true);
			dwgfx.print( -1, 100, "requires a game restart, and will", tr, tg, tb, true);
			dwgfx.print( -1, 110, "delete your current saves.", tr, tg, tb, true);
			dwgfx.print( -1, 120, "Is this ok?", tr, tg, tb, true);
		}else if (game.currentmenuname == "setslowdown1") {
			dwgfx.print( -1, 90, "Warning! Changing the game speed", tr, tg, tb, true);
			dwgfx.print( -1, 100, "requires a game restart, and will", tr, tg, tb, true);
			dwgfx.print( -1, 110, "delete your current saves.", tr, tg, tb, true);
			dwgfx.print( -1, 120, "Is this ok?", tr, tg, tb, true);
		}else if (game.currentmenuname == "setslowdown2") {
			dwgfx.bigprint( -1, 40, "Game Speed", tr, tg, tb, true);		
			dwgfx.print( -1, 75, "Select a new game speed below.", tr, tg, tb, true);
			/*
			if (stage.frameRate==30) {  dwgfx.print( -1, 105, "Game speed is normal.", tr/2, tg/2, tb/2, true);
			}else if (stage.frameRate==24){ dwgfx.print( -1, 105, "Game speed is at 80%", tr, tg, tb, true); 
			}else if (stage.frameRate==18){ dwgfx.print( -1, 105, "Game speed is at 60%", tr, tg, tb, true); 
			}else if (stage.frameRate==12){ dwgfx.print( -1, 105, "Game speed is at 40%", tr, tg, tb, true); 
			}
			*/
		}else if (game.currentmenuname == "newgamewarning") {
			dwgfx.print( -1, 100-32, "Are you sure? This will", tr, tg, tb, true);
			dwgfx.print( -1, 110-32, "delete your current saves...", tr, tg, tb, true);
		}else if (game.currentmenuname == "cleardatamenu") {
			dwgfx.print( -1, 100-32, "Are you sure you want to", tr, tg, tb, true);
			dwgfx.print( -1, 110-32, "delete all your saved data?", tr, tg, tb, true);
		}else if (game.currentmenuname == "startnodeathmode") {
			dwgfx.print( -1, 45, "Good luck!", tr, tg, tb, true);
			dwgfx.print( -1, 80, "You cannot save in this mode.", tr, tg, tb, true);
			dwgfx.print( -1, 100, "Would you like to disable the", tr, tg, tb, true);
			dwgfx.print( -1, 112, "cutscenes during the game?", tr, tg, tb, true);
		}else if (game.currentmenuname == "accessibility") {
			//if (game.currentmenuoption == 0) {
				dwgfx.bigprint( -1, 40, "Accessibility", tr, tg, tb, true);		
				if (!game.colourblindmode) {  dwgfx.print( -1, 75, "Backgrounds are ON.", tr, tg, tb, true);
				}else{ dwgfx.print( -1, 75, "Backgrounds are OFF.", tr/2, tg/2, tb/2, true); }
			//}else if (game.currentmenuoption == 1) {
				//dwgfx.bigprint( -1, 40, "Screen Effects", tr, tg, tb, true);		
			  //dwgfx.print( -1, 75, "Disables screen shakes and flashes.", tr, tg, tb, true);
				if (!game.noflashingmode) {  dwgfx.print( -1, 85, "Screen Effects are ON.", tr, tg, tb, true);
				}else{ dwgfx.print( -1, 85, "Screen Effects are OFF.", tr/2, tg/2, tb/2, true); }
			/*}else if (game.currentmenuoption == 2) {
				dwgfx.bigprint( -1, 40, "Invincibility", tr, tg, tb, true);		
			  dwgfx.print( -1, 75, "Provided to help disabled gamers", tr, tg, tb, true);
			  dwgfx.print( -1, 85, "explore the game. Can cause glitches.", tr, tg, tb, true);
				if (map.invincibility) {  dwgfx.print( -1, 105, "Invincibility is ON.", tr, tg, tb, true);
				}else{ dwgfx.print( -1, 105, "Invincibility is off.", tr/2, tg/2, tb/2, true); }
			}else if (game.currentmenuoption == 3) {
				dwgfx.bigprint( -1, 40, "Game Speed", tr, tg, tb, true);		
			  dwgfx.print( -1, 75, "May be useful for disabled gamers", tr, tg, tb, true);
			  dwgfx.print( -1, 85, "using one switch devices.", tr, tg, tb, true);
				/*
				if (stage.frameRate==30) {  dwgfx.print( -1, 105, "Game speed is normal.", tr/2, tg/2, tb/2, true);
				}else if (stage.frameRate==24){ dwgfx.print( -1, 105, "Game speed is at 80%", tr, tg, tb, true); 
				}else if (stage.frameRate==18){ dwgfx.print( -1, 105, "Game speed is at 60%", tr, tg, tb, true); 
				}else if (stage.frameRate==12){ dwgfx.print( -1, 105, "Game speed is at 40%", tr, tg, tb, true); }
				*/
			//}
		}else if (game.currentmenuname == "playint1" || game.currentmenuname == "playint2") {
				dwgfx.print( -1, 25, "Who do you want to play", tr, tg, tb, true);
				dwgfx.print( -1, 35, "the level with?", tr, tg, tb, true);
		}else if (game.currentmenuname == "playmodes") {
			if (!game.mobilemenu) {
				if (game.currentmenuoption == 0) {
					dwgfx.bigprint( -1, 30, "Time Trials", tr, tg, tb, true);
					dwgfx.print( -1, 65, "Replay any level in the game in", tr, tg, tb, true);
					dwgfx.print( -1, 75, "a competitive time trial mode.", tr, tg, tb, true);
					
					/*
					if (swfStage.frameRate < 30 || map.invincibility) {
						dwgfx.print( -1, 105, "Time Trials are not available", tr, tg, tb, true);
						dwgfx.print( -1, 115, "with slowdown or invincibility.", tr, tg, tb, true);
					}
					*/
				}else if (game.currentmenuoption == 1) {
					dwgfx.bigprint( -1, 30, "Intermissions", tr, tg, tb, true);
					dwgfx.print( -1, 65, "Replay the intermission levels.", tr, tg, tb, true);
					
					if (!game.unlock[15] && !game.unlock[16]) {
						dwgfx.print( -1, 95, "TO UNLOCK: Complete the", tr, tg, tb, true);
						dwgfx.print( -1, 105, "intermission levels in-game.", tr, tg, tb, true);
					}
				}else if (game.currentmenuoption == 2) {
					dwgfx.bigprint( -1, 30, "No Death Mode", tr, tg, tb, true);
					dwgfx.print( -1, 65, "Play the entire game", tr, tg, tb, true);
					dwgfx.print( -1, 75, "without dying once.", tr, tg, tb, true);
					
					/*
					if (swfStage.frameRate < 30 || map.invincibility) {
						dwgfx.print( -1, 105, "No death mode is not available", tr, tg, tb, true);
						dwgfx.print( -1, 115, "with slowdown or invincibility.", tr, tg, tb, true);
					}else 
					*/
					if (!game.unlock[17]) {
						dwgfx.print( -1, 105, "TO UNLOCK: Achieve an S-rank or", tr, tg, tb, true);
						dwgfx.print( -1, 115, "above in at least 4 time trials.", tr, tg, tb, true);
					}
				}else if (game.currentmenuoption == 3) {
					dwgfx.bigprint( -1, 30, "Flip Mode", tr, tg, tb, true);
					dwgfx.print( -1, 65, "Flip the entire game vertically.", tr, tg, tb, true);
					dwgfx.print( -1, 75, "Compatible with other game modes.", tr, tg, tb, true);
					
					if (game.unlock[18]) {
						if (dwgfx.setflipmode) {  dwgfx.print( -1, 105, "Currently ENABLED!", tr, tg, tb, true);
						}else{ dwgfx.print( -1, 105, "Currently Disabled.", tr/2, tg/2, tb/2, true); }
					}else{
						dwgfx.print( -1, 105, "TO UNLOCK: Complete the game.", tr, tg, tb, true);
					}
				}
			}
		}else if (game.currentmenuname == "flipmode_mobile") {
			dwgfx.bigprint( -1, 30, "Flip Mode", tr, tg, tb, true);
			dwgfx.print( -1, 65, "Flip the entire game vertically.", tr, tg, tb, true);
			dwgfx.print( -1, 75, "Compatible with other game modes.", tr, tg, tb, true);
			
			if (game.unlock[18]) {
				if (dwgfx.setflipmode) {  dwgfx.print( -1, 105, "Currently ENABLED!", tr, tg, tb, true);
				}else{ dwgfx.print( -1, 105, "Currently Disabled.", tr/2, tg/2, tb/2, true); }
			}else{
				dwgfx.print( -1, 105, "TO UNLOCK: Complete the game.", tr, tg, tb, true);
			}
		}else if (game.currentmenuname == "youwannaquit") {
			dwgfx.print( -1, 75, "Are you sure you want to quit?", tr, tg, tb, true);
		}else if (game.currentmenuname == "continue") {
			dwgfx.crewframedelay--;
			if (dwgfx.crewframedelay <= 0) {
				dwgfx.crewframedelay = 8;
				dwgfx.crewframe = (dwgfx.crewframe + 1) % 2;
			}
			if (game.currentmenuoption == 0) {
				//Show teleporter save info 
				dwgfx.drawpixeltextbox(25, 65-20, 270, 90, 34,12, 65, 185, 207,0,4);
				
				dwgfx.bigprint(-1, 20, "Tele Save", tr, tg, tb, true);
				dwgfx.print(0, 80-20, game.tele_currentarea, 25, 255 - (help.glow / 2), 255 - (help.glow / 2), true);
				for (i = 0; i < 6; i++) {
					dwgfx.drawcrewman(169-(3*42)+(i*42), 95-20, i, game.tele_crewstats[i], help, true);
				}
				dwgfx.print(160 - 84, 132-20, game.tele_gametime, 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2));
				dwgfx.print(160 + 40, 132-20, help.number(game.tele_trinkets), 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2));
						
				dwgfx.drawspritesetcol(50, 126-20, 50, 18, help);
				dwgfx.drawspritesetcol(175, 126-20, 22, 18, help);
			}else if (game.currentmenuoption == 1) {
				//Show quick save info
			  dwgfx.drawpixeltextbox(25, 65-20, 270, 90, 34,12, 65, 185, 207,0,4);
				
				dwgfx.bigprint(-1, 20, "Quick Save", tr, tg, tb, true);
				dwgfx.print(0, 80-20, game.quick_currentarea, 25, 255 - (help.glow / 2), 255 - (help.glow / 2), true);
				for (i = 0; i < 6; i++) {
					dwgfx.drawcrewman(169-(3*42)+(i*42), 95-20, i, game.quick_crewstats[i], help, true);
				}
				dwgfx.print(160 - 84, 132-20, game.quick_gametime, 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2));
				dwgfx.print(160 + 40, 132-20, help.number(game.quick_trinkets), 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2));
						
				dwgfx.drawspritesetcol(50, 126-20, 50, 18, help);
				dwgfx.drawspritesetcol(175, 126-20, 22, 18, help);
			}
		}else if (game.currentmenuname == "gameover" || game.currentmenuname == "gameover2") {
			dwgfx.bigprint( -1, 25, "GAME OVER", tr, tg, tb, true, 3);
			
			dwgfx.crewframedelay--;
			if (dwgfx.crewframedelay <= 0) {
				dwgfx.crewframedelay = 8;
				dwgfx.crewframe = (dwgfx.crewframe + 1) % 2;
			}
			for (i = 0; i < 6; i++) {
				dwgfx.drawcrewman(169-(3*42)+(i*42), 68, i, game.crewstats[i], help, true);
			}
			tempstring = "You rescued " + help.number(game.crewrescued()) + " crewmates";
			dwgfx.print(0, 100, tempstring, tr, tg, tb, true);
			
			tempstring = "and found " + help.number(game.trinkets) + " trinkets.";
			dwgfx.print(0, 110, tempstring, tr, tg, tb, true);
			
			tempstring = "You managed to reach:";
			dwgfx.print(0, 145, tempstring, tr, tg, tb, true);
			dwgfx.print(0, 155, game.hardestroom, tr, tg, tb, true);
			
			if (game.crewrescued() == 1) {        tempstring = "Keep trying! You'll get there!";	
			}else if (game.crewrescued() == 2) {  tempstring = "Nice one!";	
			}else if (game.crewrescued() == 3) {  tempstring = "Wow! Congratulations!";	
			}else if (game.crewrescued() == 4) {  tempstring = "Incredible!";	
			}else if (game.crewrescued() == 5) {  tempstring = "Unbelievable! Well done!";	
			}else if (game.crewrescued() == 6) {  tempstring = "Er, how did you do that?";	
			}
			
			dwgfx.print(0, 190, tempstring, tr, tg, tb, true);
		}else if (game.currentmenuname == "nodeathmodecomplete" || game.currentmenuname == "nodeathmodecomplete2") {
			dwgfx.bigprint( -1, 8, "WOW", tr, tg, tb, true, 4);
			
			dwgfx.crewframedelay--;
			if (dwgfx.crewframedelay <= 0) {
				dwgfx.crewframedelay = 8;
				dwgfx.crewframe = (dwgfx.crewframe + 1) % 2;
			}
			for (i = 0; i < 6; i++) {
				dwgfx.drawcrewman(169-(3*42)+(i*42), 68, i, game.crewstats[i], help, true);
			}
			tempstring = "You rescued all the crewmates!";
			dwgfx.print(0, 100, tempstring, tr, tg, tb, true);
			
			tempstring = "And you found " + help.number(game.trinkets) + " trinkets.";
			dwgfx.print(0, 110, tempstring, tr, tg, tb, true);
			
			dwgfx.print(0, 160, "A new trophy has been awarded and", tr, tg, tb, true);
			dwgfx.print(0, 170, "placed in the secret lab to", tr, tg, tb, true);
			dwgfx.print(0, 180, "acknowledge your achievement!", tr, tg, tb, true);
		}else if (game.currentmenuname == "timetrialcomplete" || game.currentmenuname == "timetrialcomplete2"
		       || game.currentmenuname == "timetrialcomplete3" || game.currentmenuname == "timetrialcomplete4") {
			dwgfx.bigprint( -1, 20, "Results", tr, tg, tb, true, 3);
			
			tempstring = game.resulttimestring(help) + " / " + game.partimestring(help);
			
			dwgfx.drawspritesetcol(30, 80-15, 50, 22, help);
			dwgfx.print(65, 80-15, "TIME TAKEN:", 255, 255, 255);
			dwgfx.print(65, 90-15, tempstring, tr, tg, tb);
			if (game.timetrialresulttime <= game.timetrialpar) {
				dwgfx.print(220, 85-15, "+1 Rank!", 255, 255, 255);
			}
			
			tempstring = String(game.deathcounts);
			dwgfx.drawspritesetcol(30-4, 80+20-4, 12, 22, help);
			dwgfx.print(65, 80+20, "NUMBER OF DEATHS:", 255, 255, 255);
			dwgfx.print(65, 90+20, tempstring, tr, tg, tb);
			if (game.deathcounts == 0) {
				dwgfx.print(220, 85+20, "+1 Rank!", 255, 255, 255);
			}
			
			tempstring = String(game.trinkets) + " of " + String(game.timetrialshinytarget);
			dwgfx.drawspritesetcol(30, 80+55, 22, 22, help);
			dwgfx.print(65, 80+55, "SHINY TRINKETS:", 255, 255, 255);
			dwgfx.print(65, 90+55, tempstring, tr, tg, tb);
			if (game.trinkets >= game.timetrialshinytarget) {
				dwgfx.print(220, 85+55, "+1 Rank!", 255, 255, 255);
			}
			
			if (game.currentmenuname == "timetrialcomplete2" || game.currentmenuname == "timetrialcomplete3") {
				dwgfx.bigprint( 100, 175, "Rank:", tr, tg, tb, false, 2);
			}
			
			if (game.currentmenuname == "timetrialcomplete3"){
			  switch(game.timetrialrank) {
					case 0:	dwgfx.bigprint( 195, 165, "B", 255, 255, 255, false, 4); break;
					case 1:	dwgfx.bigprint( 195, 165, "A", 255, 255, 255, false, 4); break;
					case 2:	dwgfx.bigprint( 195, 165, "S", 255, 255, 255, false, 4); break;
					case 3:	dwgfx.bigprint( 195, 165, "V", 255, 255, 255, false, 4); break;
				}
			}
	  }else if (game.currentmenuname == "unlockmenutrials") {
			/*
			dwgfx.bigprint( -1, 30, "Unlock Time Trials", tr, tg, tb, true);
			dwgfx.print( -1, 65, "You can unlock each time", tr, tg, tb, true);
			dwgfx.print( -1, 75, "trial separately.", tr, tg, tb, true);
			*/
	  }else if (game.currentmenuname == "timetrials") {
			/*
			if (game.currentmenuoption == 0) {
				if(game.unlock[9]){
					dwgfx.bigprint( -1, 30, "Space Station 1", tr, tg, tb, true);
					if (game.besttimes[0] == -1) {
					  dwgfx.print( -1, 75, "Not yet attempted", tr, tg, tb, true);	
					}else {
						dwgfx.print( 16, 65, "BEST TIME  ", tr, tg, tb);	
						dwgfx.print( 16, 75, "BEST SHINY ", tr, tg, tb);	
						dwgfx.print( 16, 85, "BEST LIVES ", tr, tg, tb);	
						dwgfx.print( 110, 65, game.timetstring(game.besttimes[0], help), tr, tg, tb);	
						dwgfx.print( 110, 75, String(game.besttrinkets[0])+"/2", tr, tg, tb);	
						dwgfx.print( 110, 85, String(game.bestlives[0]), tr, tg, tb);	
						
						
						dwgfx.print( 170, 65, "PAR TIME    1:15", tr, tg, tb);	
						dwgfx.print( 170, 85, "Best Rank", tr, tg, tb);	
						switch(game.bestrank[0]) {
							case 0:	dwgfx.bigprint( 275, 82, "B", 225, 225, 225); break;
							case 1:	dwgfx.bigprint( 275, 82, "A", 225, 225, 225); break;
							case 2:	dwgfx.bigprint( 275, 82, "S", 225, 225, 225); break;
							case 3:	dwgfx.bigprint( 275, 82, "V", 225, 225, 225); break;
						}
					}
					
				}else {
					dwgfx.bigprint( -1, 30, "???", tr, tg, tb, true);
					dwgfx.print( -1, 60, "TO UNLOCK:", tr, tg, tb, true);
					dwgfx.print( -1, 75, "Rescue Violet", tr, tg, tb, true);
					dwgfx.print( -1, 85, "Find three trinkets", tr, tg, tb, true);
				}
			}else if (game.currentmenuoption == 1) {
				if(game.unlock[10]){
					dwgfx.bigprint( -1, 30, "The Laboratory", tr, tg, tb, true);
					if (game.besttimes[1] == -1) {
					  dwgfx.print( -1, 75, "Not yet attempted", tr, tg, tb, true);	
					}else {
						dwgfx.print( 16, 65, "BEST TIME  ", tr, tg, tb);	
						dwgfx.print( 16, 75, "BEST SHINY ", tr, tg, tb);	
						dwgfx.print( 16, 85, "BEST LIVES ", tr, tg, tb);	
						dwgfx.print( 110, 65, game.timetstring(game.besttimes[1], help), tr, tg, tb);	
						dwgfx.print( 110, 75, String(game.besttrinkets[1])+"/4", tr, tg, tb);	
						dwgfx.print( 110, 85, String(game.bestlives[1]), tr, tg, tb);	
						
						
						dwgfx.print( 170, 65, "PAR TIME    2:45", tr, tg, tb);	
						dwgfx.print( 170, 85, "Best Rank", tr, tg, tb);	
						switch(game.bestrank[1]) {
							case 0:	dwgfx.bigprint( 275, 82, "B", 225, 225, 225); break;
							case 1:	dwgfx.bigprint( 275, 82, "A", 225, 225, 225); break;
							case 2:	dwgfx.bigprint( 275, 82, "S", 225, 225, 225); break;
							case 3:	dwgfx.bigprint( 275, 82, "V", 225, 225, 225); break;
						}
					}
					
				}else {
					dwgfx.bigprint( -1, 30, "???", tr, tg, tb, true);
					dwgfx.print( -1, 60, "TO UNLOCK:", tr, tg, tb, true);
					dwgfx.print( -1, 75, "Rescue Victoria", tr, tg, tb, true);
					dwgfx.print( -1, 85, "Find six trinkets", tr, tg, tb, true);
				}
			}else if (game.currentmenuoption == 2) {
				if(game.unlock[11]){
					dwgfx.bigprint( -1, 30, "The Tower", tr, tg, tb, true);
					if (game.besttimes[2] == -1) {
					  dwgfx.print( -1, 75, "Not yet attempted", tr, tg, tb, true);	
					}else {
						dwgfx.print( 16, 65, "BEST TIME  ", tr, tg, tb);	
						dwgfx.print( 16, 75, "BEST SHINY ", tr, tg, tb);	
						dwgfx.print( 16, 85, "BEST LIVES ", tr, tg, tb);	
						dwgfx.print( 110, 65, game.timetstring(game.besttimes[2], help), tr, tg, tb);	
						dwgfx.print( 110, 75, String(game.besttrinkets[2])+"/2", tr, tg, tb);	
						dwgfx.print( 110, 85, String(game.bestlives[2]), tr, tg, tb);	
						
						
						dwgfx.print( 170, 65, "PAR TIME    1:45", tr, tg, tb);	
						dwgfx.print( 170, 85, "Best Rank", tr, tg, tb);	
						switch(game.bestrank[2]) {
							case 0:	dwgfx.bigprint( 275, 82, "B", 225, 225, 225); break;
							case 1:	dwgfx.bigprint( 275, 82, "A", 225, 225, 225); break;
							case 2:	dwgfx.bigprint( 275, 82, "S", 225, 225, 225); break;
							case 3:	dwgfx.bigprint( 275, 82, "V", 225, 225, 225); break;
						}
					}
					
				}else {
					dwgfx.bigprint( -1, 30, "???", tr, tg, tb, true);
					dwgfx.print( -1, 60, "TO UNLOCK:", tr, tg, tb, true);
					dwgfx.print( -1, 75, "Rescue Vermilion", tr, tg, tb, true);
					dwgfx.print( -1, 85, "Find nine trinkets", tr, tg, tb, true);
				}
			}else if (game.currentmenuoption == 3) {
				if(game.unlock[12]){
					dwgfx.bigprint( -1, 30, "Space Station 2", tr, tg, tb, true);
					if (game.besttimes[3] == -1) {
					  dwgfx.print( -1, 75, "Not yet attempted", tr, tg, tb, true);	
					}else {
						dwgfx.print( 16, 65, "BEST TIME  ", tr, tg, tb);	
						dwgfx.print( 16, 75, "BEST SHINY ", tr, tg, tb);	
						dwgfx.print( 16, 85, "BEST LIVES ", tr, tg, tb);	
						dwgfx.print( 110, 65, game.timetstring(game.besttimes[3], help), tr, tg, tb);	
						dwgfx.print( 110, 75, String(game.besttrinkets[3])+"/5", tr, tg, tb);	
						dwgfx.print( 110, 85, String(game.bestlives[3]), tr, tg, tb);	
						
						
						dwgfx.print( 170, 65, "PAR TIME    3:20", tr, tg, tb);	
						dwgfx.print( 170, 85, "Best Rank", tr, tg, tb);	
						switch(game.bestrank[3]) {
							case 0:	dwgfx.bigprint( 275, 82, "B", 225, 225, 225); break;
							case 1:	dwgfx.bigprint( 275, 82, "A", 225, 225, 225); break;
							case 2:	dwgfx.bigprint( 275, 82, "S", 225, 225, 225); break;
							case 3:	dwgfx.bigprint( 275, 82, "V", 225, 225, 225); break;
						}
					}
					
				}else {
					dwgfx.bigprint( -1, 30, "???", tr, tg, tb, true);
					dwgfx.print( -1, 60, "TO UNLOCK:", tr, tg, tb, true);
					dwgfx.print( -1, 75, "Rescue Vitellary", tr, tg, tb, true);
					dwgfx.print( -1, 85, "Find twelve trinkets", tr, tg, tb, true);
				}
			}else if (game.currentmenuoption == 4) {
				if(game.unlock[13]){
					dwgfx.bigprint( -1, 30, "The Warp Zone", tr, tg, tb, true);
					if (game.besttimes[4] == -1) {
					  dwgfx.print( -1, 75, "Not yet attempted", tr, tg, tb, true);	
					}else {
						dwgfx.print( 16, 65, "BEST TIME  ", tr, tg, tb);	
						dwgfx.print( 16, 75, "BEST SHINY ", tr, tg, tb);	
						dwgfx.print( 16, 85, "BEST LIVES ", tr, tg, tb);	
						dwgfx.print( 110, 65, game.timetstring(game.besttimes[4], help), tr, tg, tb);	
						dwgfx.print( 110, 75, String(game.besttrinkets[4])+"/1", tr, tg, tb);	
						dwgfx.print( 110, 85, String(game.bestlives[4]), tr, tg, tb);	
						
						
						dwgfx.print( 170, 65, "PAR TIME    2:00", tr, tg, tb);	
						dwgfx.print( 170, 85, "Best Rank", tr, tg, tb);	
						switch(game.bestrank[4]) {
							case 0:	dwgfx.bigprint( 275, 82, "B", 225, 225, 225); break;
							case 1:	dwgfx.bigprint( 275, 82, "A", 225, 225, 225); break;
							case 2:	dwgfx.bigprint( 275, 82, "S", 225, 225, 225); break;
							case 3:	dwgfx.bigprint( 275, 82, "V", 225, 225, 225); break;
						}
					}
					
				}else {
					dwgfx.bigprint( -1, 30, "???", tr, tg, tb, true);
					dwgfx.print( -1, 60, "TO UNLOCK:", tr, tg, tb, true);
					dwgfx.print( -1, 75, "Rescue Verdigris", tr, tg, tb, true);
					dwgfx.print( -1, 85, "Find fifteen trinkets", tr, tg, tb, true);
				}
			}else if (game.currentmenuoption == 5) {
				if(game.unlock[14]){
					dwgfx.bigprint( -1, 30, "The Final Level", tr, tg, tb, true);
					if (game.besttimes[5] == -1) {
					  dwgfx.print( -1, 75, "Not yet attempted", tr, tg, tb, true);	
					}else {
						dwgfx.print( 16, 65, "BEST TIME  ", tr, tg, tb);	
						dwgfx.print( 16, 75, "BEST SHINY ", tr, tg, tb);	
						dwgfx.print( 16, 85, "BEST LIVES ", tr, tg, tb);	
						dwgfx.print( 110, 65, game.timetstring(game.besttimes[5], help), tr, tg, tb);	
						dwgfx.print( 110, 75, String(game.besttrinkets[5])+"/1", tr, tg, tb);	
						dwgfx.print( 110, 85, String(game.bestlives[5]), tr, tg, tb);	
						
						
						dwgfx.print( 170, 65, "PAR TIME    2:15", tr, tg, tb);	
						dwgfx.print( 170, 85, "Best Rank", tr, tg, tb);	
						switch(game.bestrank[5]) {
							case 0:	dwgfx.bigprint( 275, 82, "B", 225, 225, 225); break;
							case 1:	dwgfx.bigprint( 275, 82, "A", 225, 225, 225); break;
							case 2:	dwgfx.bigprint( 275, 82, "S", 225, 225, 225); break;
							case 3:	dwgfx.bigprint( 275, 82, "V", 225, 225, 225); break;
						}
					}
					
				}else {
					dwgfx.bigprint( -1, 30, "???", tr, tg, tb, true);
					dwgfx.print( -1, 60, "TO UNLOCK:", tr, tg, tb, true);
					dwgfx.print( -1, 75, "Complete the game", tr, tg, tb, true);
					dwgfx.print( -1, 85, "Find eighteen trinkets", tr, tg, tb, true);
				}
			}
			*/
		}else if (game.currentmenuname == "gamecompletecontinue") {
			dwgfx.bigprint( -1, 25, "Congratulations!", tr, tg, tb, true, 2);
			
			dwgfx.print( -1, 45, "Your save files have been updated.", tr, tg, tb, true);
			
			dwgfx.print( -1, 110, "If you want to keep exploring", tr, tg, tb, true);
			dwgfx.print( -1, 120, "the game, select CONTINUE", tr, tg, tb, true);
			dwgfx.print( -1, 130, "from the play menu.", tr, tg, tb, true);
		}else if (game.currentmenuname == "unlockmenu") {
			/*
			dwgfx.bigprint( -1, 25, "Unlock Play Modes", tr, tg, tb, true, 2);
			
			dwgfx.print( -1, 55, "From here, you may unlock parts", tr, tg, tb, true);
			dwgfx.print( -1, 65, "of the game that are normally", tr, tg, tb, true);
			dwgfx.print( -1, 75, "unlocked as you play.", tr, tg, tb, true);
			*/
		}else if (game.currentmenuname == "unlocktimetrial") {
			dwgfx.bigprint( -1, 45, "Congratulations!", tr, tg, tb, true, 2);
			
			dwgfx.print( -1, 125, "You have unlocked", tr, tg, tb, true);
			dwgfx.print( -1, 135, "a new Time Trial.", tr, tg, tb, true);
		}else if (game.currentmenuname == "unlocktimetrials") {
			dwgfx.bigprint( -1, 45, "Congratulations!", tr, tg, tb, true, 2);
			
			dwgfx.print( -1, 125, "You have unlocked some", tr, tg, tb, true);
			dwgfx.print( -1, 135, "new Time Trials.", tr, tg, tb, true);
		}else if (game.currentmenuname == "unlocknodeathmode") {
			dwgfx.bigprint( -1, 45, "Congratulations!", tr, tg, tb, true, 2);
			
			dwgfx.print( -1, 125, "You have unlocked", tr, tg, tb, true);
			dwgfx.print( -1, 135, "No Death Mode.", tr, tg, tb, true);
		}else if (game.currentmenuname == "unlockflipmode") {
			dwgfx.bigprint( -1, 45, "Congratulations!", tr, tg, tb, true, 2);
			
			dwgfx.print( -1, 125, "You have unlocked", tr, tg, tb, true);
			dwgfx.print( -1, 135, "Flip Mode.", tr, tg, tb, true);
		}else if (game.currentmenuname == "unlockintermission") {
			dwgfx.bigprint( -1, 45, "Congratulations!", tr, tg, tb, true, 2);
			
			dwgfx.print( -1, 125, "You have unlocked", tr, tg, tb, true);
			dwgfx.print( -1, 135, "the intermission levels.", tr, tg, tb, true);
		}
			
		/*
		switch(game.mainmenu) {
			case 0:
				dwgfx.print(5, 115, "[ NEW GAME ]", tr, tg, tb, true);		
			break;
			case 1:
				if (game.telesummary == "") {
					dwgfx.print(5, 115, "[ no teleporter save ]", tr/3, tg/3, tb/3, true);		
				}else {
					dwgfx.print(5, 115, "[ RESTORE FROM LAST TELEPORTER ]", tr, tg, tb, true);		
					dwgfx.print(5, 125, game.telesummary, tr, tg, tb, true);	
				}
			break;
			case 2:
				if (game.quicksummary == "") {
					dwgfx.print(5, 115, "[ no quicksave ]", tr/3, tg/3, tb/3, true);		
				}else {
					dwgfx.print(5, 115, "[ RESTORE FROM LAST QUICKSAVE ]", tr, tg, tb, true);	
					dwgfx.print(5, 125, game.quicksummary, tr, tg, tb, true);		
				}
			break;
		}
		*/
		
		tr = tr * .8;
		tg = tg * .8;
		tb = tb * .8;
		if (tr < 0) tr = 0; if(tr>255) tr=255;
		if (tg < 0) tg = 0; if(tg>255) tg=255;
		if (tb < 0) tb = 0; if(tb>255) tb=255;
		if (game.currentmenuname == "timetrials" || game.currentmenuname == "unlockmenutrials") {
			dwgfx.drawmenu(game, tr, tg, tb, help, 15);
		}else if (game.currentmenuname == "unlockmenu") {
			dwgfx.drawmenu(game, tr, tg, tb, help, 15);
		}else if (game.currentmenuname == "playmodes") {
			dwgfx.drawmenu(game, tr, tg, tb, help, 20);
		}else if (game.currentmenuname == "mainmenu") {
			dwgfx.drawmenu(game, tr, tg, tb, help, 15);
		}else if (game.currentmenuname == "playerworlds"){
      dwgfx.drawmenu(game, tr, tg, tb, help, 15);
    }else if (game.currentmenuname == "levellist"){
      //dwgfx.drawlevelmenu(game, tr, tg, tb, 5);
			dwgfx.drawmenu(game, tr, tg, tb, help, 5);
    }else if (game.currentmenuname == "fullscreenmenu"){
      dwgfx.drawmenu(game, tr, tg, tb, help, 15);
    }else{
		  dwgfx.drawmenu(game, tr, tg, tb, help);
		}
		//dwgfx.print(5, 228, "Left/Right to Choose, V to Select", tr, tg, tb, true);	
	}
	
	if (game.test) {
		dwgfx.print(5, 5, game.teststring, 196, 196, 255, false);
	}

	dwgfx.drawfade();
	
	if (game.showloadingnotice && dwgfx.fademode == 1) {
		dwgfx.print(-1, 120, "LOADING", 196, 196, 196, true);
	}
	
	if (game.flashlight > 0 && !game.noflashingmode) {
		game.flashlight--;
		dwgfx.flashlight();
	}
	
	if (game.screenshake > 0  && !game.noflashingmode) {
		game.screenshake--;
		dwgfx.screenshake();
	}else{
	  dwgfx.render();
	}
	dwgfx.backbuffer.unlock();
}

public function gamecompleterender(key:KeyPoll, dwgfx:dwgraphicsclass, game:gameclass, obj:entityclass, help:helpclass):void {
  dwgfx.drawbutton(game, help);
	
	dwgfx.backbuffer.lock();
	dwgfx.backbuffer.fillRect(dwgfx.backbuffer.rect, 0x000000);
	
	if(!game.colourblindmode) dwgfx.drawtowerbackgroundsolo(map);
	//dwgfx.drawtowermap(map);
	
	for (i = 0; i < 6; i++) {
	  //dwgfx.drawsprite((160-96)+ i * 32, 10, 23, 96+(i*10)+(Math.random()*16), 196-(help.glow)-(Math.random()*16), 255 - (help.glow*2));
	}
	
	tr = map.r - (help.glow / 4) - Math.random() * 4;
	tg = map.g - (help.glow / 4) - Math.random() * 4;
	tb = map.b - (help.glow / 4) - Math.random() * 4;
	if (tr < 0) tr = 0; if(tr>255) tr=255;
	if (tg < 0) tg = 0; if(tg>255) tg=255;
	if (tb < 0) tb = 0; if(tb>255) tb=255;
	
	
	//rendering starts... here!
	
	if (dwgfx.onscreen(220 + game.creditposition)) {
		temp = 220 + game.creditposition;
	  dwgfx.drawsprite((160 - 96) + 0 * 32, temp, 23, tr, tg, tb);
		dwgfx.drawsprite((160 - 96) + 1 * 32, temp, 23, tr, tg, tb);
		dwgfx.drawsprite((160 - 96) + 2 * 32, temp, 23, tr, tg, tb);
		dwgfx.drawsprite((160 - 96) + 3 * 32, temp, 23, tr, tg, tb);
		dwgfx.drawsprite((160 - 96) + 4 * 32, temp, 23, tr, tg, tb);
		dwgfx.drawsprite((160 - 96) + 5 * 32, temp, 23, tr, tg, tb);
	}
	
	if (dwgfx.onscreen(290 + game.creditposition)) dwgfx.bigprint( -1, 290 + game.creditposition, "Starring", tr, tg, tb, true, 2);
	
	if (dwgfx.onscreen(320 + game.creditposition)) {
		dwgfx.drawcrewman(70, 320 + game.creditposition, 0, true, help);
		dwgfx.print(100, 330 + game.creditposition, "Captain Viridian", tr, tg, tb);
	}
	if (dwgfx.onscreen(350 + game.creditposition)) {
		dwgfx.drawcrewman(70, 350 + game.creditposition, 1, true, help);
		dwgfx.print(100, 360 + game.creditposition, "Doctor Violet", tr, tg, tb);
	}
	if (dwgfx.onscreen(380 + game.creditposition)) {
		dwgfx.drawcrewman(70, 380 + game.creditposition, 2, true, help);
		dwgfx.print(100, 390 + game.creditposition, "Professor Vitellary", tr, tg, tb);
	}
	if (dwgfx.onscreen(410 + game.creditposition)) {
		dwgfx.drawcrewman(70, 410 + game.creditposition, 3, true, help);
		dwgfx.print(100, 420 + game.creditposition, "Officer Vermilion", tr, tg, tb);
	}
	if (dwgfx.onscreen(440 + game.creditposition)) {
		dwgfx.drawcrewman(70, 440 + game.creditposition, 4, true, help);
		dwgfx.print(100, 450 + game.creditposition, "Chief Verdigris", tr, tg, tb);
	}
	if (dwgfx.onscreen(470 + game.creditposition)) {
		dwgfx.drawcrewman(70, 470 + game.creditposition, 5, true, help);
		dwgfx.print(100, 480 + game.creditposition, "Doctor Victoria", tr, tg, tb);
	}
	
	if (dwgfx.onscreen(540 + game.creditposition)) dwgfx.bigprint( -1, 540 + game.creditposition, "Credits", tr, tg, tb, true, 3);
		
	if (dwgfx.onscreen(600 + game.creditposition)) {
		dwgfx.print(40, 600 + game.creditposition, "Created by", tr, tg, tb);
		dwgfx.bigprint(60, 610 + game.creditposition, "Terry Cavanagh", tr, tg, tb);
	}
	
	if (dwgfx.onscreen(640 + game.creditposition)) {
		dwgfx.print(40, 640 + game.creditposition, "With Music by", tr, tg, tb);
		dwgfx.bigprint(60, 650 + game.creditposition, "Magnus P~lsson", tr, tg, tb);
	}
	
	if (dwgfx.onscreen(680 + game.creditposition)) {
		dwgfx.print(40, 680 + game.creditposition, "Rooms Named by", tr, tg, tb);
		dwgfx.bigprint(60, 690 + game.creditposition, "Bennett Foddy", tr, tg, tb);
	}
	
		
	if (dwgfx.onscreen(720 + game.creditposition)) {
		dwgfx.print(40, 720 + game.creditposition, "Beta Testing by", tr, tg, tb);
		dwgfx.bigprint(60, 730 + game.creditposition, "Sam Kaplan", tr, tg, tb);
		dwgfx.bigprint(60, 750 + game.creditposition, "Pauli Kohberger", tr, tg, tb);
	}
	
	if (dwgfx.onscreen(780 + game.creditposition)) {
		dwgfx.print(40, 780 + game.creditposition, "Ending Picture by", tr, tg, tb);
		dwgfx.bigprint(60, 790 + game.creditposition, "Pauli Kohberger", tr, tg, tb);
	}
	
	
	if (dwgfx.onscreen(870 + game.creditposition)) dwgfx.bigprint( -1, 870 + game.creditposition, "Patrons", tr, tg, tb, true, 3);
	
	if (dwgfx.onscreen(910 + game.creditposition)) dwgfx.print(-1, 910 + game.creditposition,"Anders Ekermo", tr, tg, tb, true);
if (dwgfx.onscreen(920 + game.creditposition)) dwgfx.print(-1, 920 + game.creditposition,"Andreas K|mper", tr, tg, tb, true);
if (dwgfx.onscreen(930 + game.creditposition)) dwgfx.print(-1, 930 + game.creditposition,"Anthony Burch", tr, tg, tb, true);
if (dwgfx.onscreen(940 + game.creditposition)) dwgfx.print(-1, 940 + game.creditposition,"Bennett Foddy", tr, tg, tb, true);
if (dwgfx.onscreen(950 + game.creditposition)) dwgfx.print(-1, 950 + game.creditposition,"Brendan O'Sullivan", tr, tg, tb, true);
if (dwgfx.onscreen(960 + game.creditposition)) dwgfx.print(-1, 960 + game.creditposition,"Christopher Armstrong", tr, tg, tb, true);
if (dwgfx.onscreen(970 + game.creditposition)) dwgfx.print(-1, 970 + game.creditposition,"Daniel Benmergui", tr, tg, tb, true);
if (dwgfx.onscreen(980 + game.creditposition)) dwgfx.print(-1, 980 + game.creditposition,"David Pittman", tr, tg, tb, true);
if (dwgfx.onscreen(990 + game.creditposition)) dwgfx.print(-1, 990 + game.creditposition,"Ian Bogost", tr, tg, tb, true);
if (dwgfx.onscreen(1000 + game.creditposition)) dwgfx.print(-1, 1000 + game.creditposition,"Jaz McDougall", tr, tg, tb, true);
if (dwgfx.onscreen(1010 + game.creditposition)) dwgfx.print(-1, 1010 + game.creditposition,"John Faulkenbury", tr, tg, tb, true);
if (dwgfx.onscreen(1020 + game.creditposition)) dwgfx.print(-1, 1020 + game.creditposition,"Jonathan Whiting", tr, tg, tb, true);
if (dwgfx.onscreen(1030 + game.creditposition)) dwgfx.print(-1, 1030 + game.creditposition,"Kyle Pulver", tr, tg, tb, true);
if (dwgfx.onscreen(1040 + game.creditposition)) dwgfx.print(-1, 1040 + game.creditposition,"Markus Persson", tr, tg, tb, true);
if (dwgfx.onscreen(1050 + game.creditposition)) dwgfx.print(-1, 1050 + game.creditposition,"Nathan Ostgard", tr, tg, tb, true);
if (dwgfx.onscreen(1060 + game.creditposition)) dwgfx.print(-1, 1060 + game.creditposition,"Nick Easler", tr, tg, tb, true);
if (dwgfx.onscreen(1070 + game.creditposition)) dwgfx.print(-1, 1070 + game.creditposition,"Stephen Lavelle", tr, tg, tb, true);

if (dwgfx.onscreen(1090 + game.creditposition)) dwgfx.print( -1, 1090 + game.creditposition, "and", tr, tg, tb, true);
			
if (dwgfx.onscreen(1110 + game.creditposition)) dwgfx.print(-1, 1110 + game.creditposition,"Adam Wendt", tr, tg, tb, true);
if (dwgfx.onscreen(1110 + game.creditposition)) dwgfx.print(-1, 1120 + game.creditposition,"Andreas J{rgensen", tr, tg, tb, true);
if (dwgfx.onscreen(1120 + game.creditposition)) dwgfx.print(-1, 1130 + game.creditposition,"}ngel Louzao Penalva", tr, tg, tb, true);
if (dwgfx.onscreen(1130 + game.creditposition)) dwgfx.print(-1, 1140 + game.creditposition,"Ashley Burton", tr, tg, tb, true);
if (dwgfx.onscreen(1140 + game.creditposition)) dwgfx.print(-1, 1150 + game.creditposition,"Aubrey Hesselgren", tr, tg, tb, true);
if (dwgfx.onscreen(1150 + game.creditposition)) dwgfx.print(-1, 1160 + game.creditposition,"Bradley Rose", tr, tg, tb, true);
if (dwgfx.onscreen(1160 + game.creditposition)) dwgfx.print(-1, 1170 + game.creditposition,"Brendan Urquhart", tr, tg, tb, true);
if (dwgfx.onscreen(1170 + game.creditposition)) dwgfx.print(-1, 1180 + game.creditposition,"Chris Ayotte", tr, tg, tb, true);
if (dwgfx.onscreen(1180 + game.creditposition)) dwgfx.print(-1, 1190 + game.creditposition,"Christopher Zamanillo", tr, tg, tb, true);
if (dwgfx.onscreen(1190 + game.creditposition)) dwgfx.print(-1, 1200 + game.creditposition,"Daniel Schuller", tr, tg, tb, true);
if (dwgfx.onscreen(1200 + game.creditposition)) dwgfx.print(-1, 1210 + game.creditposition,"Hybrid Mind Studios", tr, tg, tb, true);
if (dwgfx.onscreen(1210 + game.creditposition)) dwgfx.print(-1, 1220 + game.creditposition,"Emilie McGinley", tr, tg, tb, true);
if (dwgfx.onscreen(1220 + game.creditposition)) dwgfx.print(-1, 1230 + game.creditposition,"Francisco Solares", tr, tg, tb, true);
if (dwgfx.onscreen(1230 + game.creditposition)) dwgfx.print(-1, 1240 + game.creditposition,"Hal Helms", tr, tg, tb, true);
if (dwgfx.onscreen(1240 + game.creditposition)) dwgfx.print(-1, 1250 + game.creditposition,"Hayden Scott-Baron", tr, tg, tb, true);
if (dwgfx.onscreen(1250 + game.creditposition)) dwgfx.print(-1, 1260 + game.creditposition,"Hermit Games", tr, tg, tb, true);
if (dwgfx.onscreen(1260 + game.creditposition)) dwgfx.print(-1, 1270 + game.creditposition,"Ido Yehieli", tr, tg, tb, true);
if (dwgfx.onscreen(1270 + game.creditposition)) dwgfx.print(-1, 1280 + game.creditposition,"Jade Vault Games", tr, tg, tb, true);
if (dwgfx.onscreen(1280 + game.creditposition)) dwgfx.print(-1, 1290 + game.creditposition,"James Andrews", tr, tg, tb, true);
if (dwgfx.onscreen(1290 + game.creditposition)) dwgfx.print(-1, 1300 + game.creditposition,"James Riley", tr, tg, tb, true);
if (dwgfx.onscreen(1300 + game.creditposition)) dwgfx.print(-1, 1310 + game.creditposition,"James Hsieh", tr, tg, tb, true);
if (dwgfx.onscreen(1310 + game.creditposition)) dwgfx.print(-1, 1320 + game.creditposition,"Jasper Byrne", tr, tg, tb, true);
if (dwgfx.onscreen(1320 + game.creditposition)) dwgfx.print(-1, 1330 + game.creditposition,"Jedediah Baker", tr, tg, tb, true);
if (dwgfx.onscreen(1330 + game.creditposition)) dwgfx.print(-1, 1340 + game.creditposition,"Jens Bergensten", tr, tg, tb, true);
if (dwgfx.onscreen(1340 + game.creditposition)) dwgfx.print(-1, 1350 + game.creditposition,"Jeremy J. Penner", tr, tg, tb, true);
if (dwgfx.onscreen(1350 + game.creditposition)) dwgfx.print(-1, 1360 + game.creditposition,"Jeremy Peterson", tr, tg, tb, true);
if (dwgfx.onscreen(1360 + game.creditposition)) dwgfx.print(-1, 1370 + game.creditposition,"Jim McGinley", tr, tg, tb, true);
if (dwgfx.onscreen(1370 + game.creditposition)) dwgfx.print(-1, 1380 + game.creditposition,"Jonathan Cartwright", tr, tg, tb, true);
if (dwgfx.onscreen(1380 + game.creditposition)) dwgfx.print(-1, 1390 + game.creditposition,"John Nesky", tr, tg, tb, true);
if (dwgfx.onscreen(1390 + game.creditposition)) dwgfx.print(-1, 1400 + game.creditposition,"Jos Yule", tr, tg, tb, true);
if (dwgfx.onscreen(1400 + game.creditposition)) dwgfx.print(-1, 1410 + game.creditposition,"Jose Flores", tr, tg, tb, true);
if (dwgfx.onscreen(1410 + game.creditposition)) dwgfx.print(-1, 1420 + game.creditposition,"Josh Bizeau", tr, tg, tb, true);
if (dwgfx.onscreen(1420 + game.creditposition)) dwgfx.print(-1, 1430 + game.creditposition,"Joshua Buergel", tr, tg, tb, true);
if (dwgfx.onscreen(1430 + game.creditposition)) dwgfx.print(-1, 1440 + game.creditposition,"Joshua Hochner", tr, tg, tb, true);
if (dwgfx.onscreen(1440 + game.creditposition)) dwgfx.print(-1, 1450 + game.creditposition,"Kurt Ostfeld", tr, tg, tb, true);
if (dwgfx.onscreen(1450 + game.creditposition)) dwgfx.print(-1, 1460 + game.creditposition, "Magnus P~lsson", tr, tg, tb, true);
if (dwgfx.onscreen(1460 + game.creditposition)) dwgfx.print(-1, 1470 + game.creditposition,"Mark Neschadimenko", tr, tg, tb, true);
if (dwgfx.onscreen(1470 + game.creditposition)) dwgfx.print(-1, 1480 + game.creditposition,"Matt Antonellis", tr, tg, tb, true);
if (dwgfx.onscreen(1480 + game.creditposition)) dwgfx.print(-1, 1490 + game.creditposition,"Matthew Reppert", tr, tg, tb, true);
if (dwgfx.onscreen(1490 + game.creditposition)) dwgfx.print(-1, 1500 + game.creditposition,"Michael Falkensteiner", tr, tg, tb, true);
if (dwgfx.onscreen(1500 + game.creditposition)) dwgfx.print(-1, 1510 + game.creditposition,"Michael Vendittelli", tr, tg, tb, true);
if (dwgfx.onscreen(1510 + game.creditposition)) dwgfx.print(-1, 1520 + game.creditposition,"Mike Kasprzak", tr, tg, tb, true);
if (dwgfx.onscreen(1520 + game.creditposition)) dwgfx.print(-1, 1530 + game.creditposition,"Mitchel Stein", tr, tg, tb, true);
if (dwgfx.onscreen(1530 + game.creditposition)) dwgfx.print(-1, 1540 + game.creditposition,"Sean Murray", tr, tg, tb, true);
if (dwgfx.onscreen(1540 + game.creditposition)) dwgfx.print(-1, 1550 + game.creditposition,"Simon Michael", tr, tg, tb, true);
if (dwgfx.onscreen(1550 + game.creditposition)) dwgfx.print(-1, 1560 + game.creditposition,"Simon Schmid", tr, tg, tb, true);
if (dwgfx.onscreen(1560 + game.creditposition)) dwgfx.print(-1, 1570 + game.creditposition,"Stephen Maxwell", tr, tg, tb, true);
if (dwgfx.onscreen(1570 + game.creditposition)) dwgfx.print(-1, 1580 + game.creditposition,"Swing Swing Submarine", tr, tg, tb, true);
if (dwgfx.onscreen(1580 + game.creditposition)) dwgfx.print(-1, 1590 + game.creditposition,"Tam Toucan", tr, tg, tb, true);
if (dwgfx.onscreen(1590 + game.creditposition)) dwgfx.print(-1, 1600 + game.creditposition,"Terry Dooher", tr, tg, tb, true);
if (dwgfx.onscreen(1600 + game.creditposition)) dwgfx.print(-1, 1610 + game.creditposition,"Tim W.", tr, tg, tb, true);
if (dwgfx.onscreen(1610 + game.creditposition)) dwgfx.print( -1, 1620 + game.creditposition, "Timothy Bragan", tr, tg, tb, true);

if (dwgfx.onscreen(1760 + game.creditposition)) dwgfx.bigprint( -1, 1760 + game.creditposition, "Thanks for playing!", tr, tg, tb, true, 2);

	if (game.test) {
		dwgfx.print(5, 5, game.teststring, 196, 196, 255, false);
	}

	dwgfx.drawfade();
	
	if (game.flashlight > 0 && !game.noflashingmode) {
		game.flashlight--;
		dwgfx.flashlight();
	}
	
	if (game.screenshake > 0 && !game.noflashingmode) {
		game.screenshake--;
		dwgfx.screenshake();
	}else{
	  dwgfx.render();
	}
	dwgfx.backbuffer.unlock();
}

public function gamecompleterender2(key:KeyPoll, dwgfx:dwgraphicsclass, game:gameclass, obj:entityclass, help:helpclass):void {
  dwgfx.drawbutton(game, help);
	
	dwgfx.backbuffer.lock();
	dwgfx.backbuffer.fillRect(dwgfx.backbuffer.rect, 0x000000);
	
	dwgfx.drawimage(10, 0, 0);
	
	for (j = 0; j < 30; j++) {
	  for (i = 0; i < 40; i++) {
			if (j == game.creditposy) {
			  if (i > game.creditposx) {
				  dwgfx.drawfillrect(i * 8, j * 8, 8, 8, 0, 0, 0);	
				}
			}
			
			if (j > game.creditposy) {
			  dwgfx.drawfillrect(i * 8, j * 8, 8, 8, 0, 0, 0);	
			}
		}
	}
	
	if (game.test) {
		dwgfx.print(5, 5, game.teststring, 196, 196, 255, false);
	}

	dwgfx.drawfade();
	
	if (game.flashlight > 0 && !game.noflashingmode) {
		game.flashlight--;
		dwgfx.flashlight();
	}
	
	if (game.screenshake > 0 && !game.noflashingmode) {
		game.screenshake--;
		dwgfx.screenshake();
	}else{
	  dwgfx.render();
	}
	dwgfx.backbuffer.unlock();
}

public function gamerender(key:KeyPoll, dwgfx:dwgraphicsclass, game:gameclass, map:mapclass,
													 obj:entityclass, help:helpclass):void {
  
  dwgfx.drawbutton(game, help);
	
	dwgfx.backbuffer.lock();
	
	if(!game.blackout){
		if(!game.colourblindmode) dwgfx.drawbackground(map.background, map);
		if (map.final_colormode) {
			dwgfx.drawfinalmap(map);
		}else{
			dwgfx.drawmap(map);
		}
		
		if(!game.completestop){
			for (i = 0; i < obj.nentity; i++) {
				//Is this entity on the ground? (needed for jumping)
				if (obj.entities[i].active) {
					if (obj.entities[i].rule == 0 || obj.entities[i].rule >= 6 || obj.entities[i].type == 55) {
						if (obj.entitycollidefloor(map, i)) {obj.entities[i].onground = 2;
						}else {	obj.entities[i].onground--;}
						
						if (obj.entitycollideroof(map, i)) {obj.entities[i].onroof = 2;
						}else { obj.entities[i].onroof--; }				
					}
				}
				
				//Animate the entities
				obj.animateentities(i, game, help);
			}
		}
		
		dwgfx.drawentities(map, obj, help);
	}
	
	/*for(i=0; i<obj.nblocks; i++){
    if (obj.blocks[i].active) {
			dwgfx.backbuffer.fillRect(obj.blocks[i].rect, 0xDDDDDD);
    }
  }*/
	//dwgfx.drawminimap(game, map);
	
	if (map.extrarow == 0 || (map.custommode && map.roomname != "")) {
	  dwgfx.backbuffer.fillRect(dwgfx.footerrect, 0x000000);
		if (map.finallevel) {
			map.glitchname = map.getglitchname(game.roomx, game.roomy);
	    dwgfx.print(5, 231, map.glitchname, 196, 196, 255 - help.glow, true);
		}else{
	    dwgfx.print(5, 231, map.roomname, 196, 196, 255 - help.glow, true);
		}
	}
	
	if (map.roomtexton) {
		//Draw room text!
		for (i = 0; i < map.roomtextnumlines; i++) {
			dwgfx.print(map.roomtextx[i]*8, (map.roomtexty[i]*8), map.roomtext[i], 196, 196, 255 - help.glow);
		}
	}
	
	if(map.custommode && !map.custommodeforreal){
		//Return to level editor
		dwgfx.bprint(5, 5, "[Press ENTER to return to editor]", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), false);
	}
	
	dwgfx.cutscenebars();
	dwgfx.drawfade();
	
	dwgfx.drawgui(help);
	if (dwgfx.flipmode) {
		if (game.advancetext) dwgfx.bprint(5, 228, "- Tap screen to advance text -", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true);	
	}else{
	  if (game.advancetext) dwgfx.bprint(5, 5, "- Tap screen to advance text -", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true);	
	}
	
	if(!game.mobilemenu){
		if (game.readytotele > 100 && !game.advancetext && game.hascontrol && !script.running && !game.intimetrial) {
			i = obj.getplayer();
			if(dwgfx.flipmode){
				dwgfx.bprint(5, 20, "- Press ENTER to Teleport -", game.readytotele - 20 - (help.glow / 2), game.readytotele - 20 - (help.glow / 2), game.readytotele, true);	
			}else {
				dwgfx.bprint(5, 210, "- Press ENTER to Teleport -", game.readytotele - 20 - (help.glow / 2), game.readytotele - 20 - (help.glow / 2), game.readytotele, true);	
			}
		}
	}
	
	if (game.swnmode) {
		if (game.swngame == 0) {
			tempstring = help.timestring(game.swntimer);
			dwgfx.bigprint( -1, 20, tempstring, 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true, 2);	
		}else if (game.swngame == 1) {
			if (game.swnmessage == 0) {
				tempstring = help.timestring(game.swntimer);
				dwgfx.print( 10, 10, "Current Time", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), false);	
				dwgfx.bigprint( 25, 24, tempstring, 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), false, 2);	
				tempstring = help.timestring(game.swnrecord);
				dwgfx.print( 240, 10, "Best Time", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), false);	
				dwgfx.bigrprint( 300, 24, tempstring, 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), false, 2);	
				
				switch(game.swnbestrank) {
					case 0: dwgfx.print( -1, 204, "Next Trophy at 5 seconds", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true); break;
					case 1: dwgfx.print( -1, 204, "Next Trophy at 10 seconds", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true); break;
					case 2: dwgfx.print( -1, 204, "Next Trophy at 15 seconds", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true); break;
					case 3: dwgfx.print( -1, 204, "Next Trophy at 20 seconds", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true); break;
					case 4: dwgfx.print( -1, 204, "Next Trophy at 30 seconds", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true); break;
					case 5: dwgfx.print( -1, 204, "Next Trophy at 1 minute", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true); break;
					case 6: dwgfx.print( -1, 204, "All Trophies collected!", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true); break;
				}
			}else if (game.swnmessage == 1) {
				tempstring = help.timestring(game.swntimer);
				dwgfx.print( 10, 10, "Current Time", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), false);	
				dwgfx.bigprint( 25, 24, tempstring, 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), false, 2);	
				tempstring = help.timestring(game.swnrecord);
				if (int(game.deathseq / 5) % 2 == 1) {
					dwgfx.print( 240, 10, "Best Time", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), false);	
					dwgfx.bigrprint( 300, 24, tempstring, 128 - (help.glow), 220 - (help.glow), 128 - (help.glow / 2), false, 2);	
				
					dwgfx.bigprint( -1, 200, "New Record!", 128 - (help.glow), 220 - (help.glow), 128 - (help.glow / 2), true, 2);	
				}
			}else if (game.swnmessage >= 2) {
				game.swnmessage--;
				if (game.swnmessage == 2) game.swnmessage = 0;
				tempstring = help.timestring(game.swntimer);
				dwgfx.print( 10, 10, "Current Time", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), false);	
				dwgfx.bigprint( 25, 24, tempstring, 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), false, 2);	
				tempstring = help.timestring(game.swnrecord);
				dwgfx.print( 240, 10, "Best Time", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), false);	
				dwgfx.bigrprint( 300, 24, tempstring, 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), false, 2);	
				
				if (int(game.swnmessage / 5) % 2 == 1) {
					dwgfx.bigprint( -1, 200, "New Trophy!", 220 - (help.glow), 128 - (help.glow), 128 - (help.glow / 2), true, 2);	
				}
			}
			
			if(!game.mobilemenu){
				dwgfx.print( 20, 228, "[Press ENTER to stop]", 160 - (help.glow / 2), 160 - (help.glow / 2), 160 - (help.glow / 2), true);	
			}
		}else if(game.swngame==2){
			if (int(game.swndelay / 15) % 2 == 1 || game.swndelay >= 120) {
				if (dwgfx.flipmode) {
					dwgfx.bigprint( -1, 30, "Survive for", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true, 2);	
			    dwgfx.bigprint( -1, 10, "60 seconds!", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true, 2);	
				}else {
					dwgfx.bigprint( -1, 10, "Survive for", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true, 2);	
			    dwgfx.bigprint( -1, 30, "60 seconds!", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true, 2);	
				}
			}
		}else if(game.swngame==7){
			if (game.swndelay >= 60) {
				dwgfx.bigprint( -1, 20, "SUPER GRAVITRON", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true, 2);	
				
				tempstring = help.timestring(game.swnrecord);
				dwgfx.print( 240, 190, "Best Time", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true);	
				dwgfx.bigrprint( 300, 205, tempstring, 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true, 2);	
			}else	if (int(game.swndelay / 10) % 2 == 1) {
				dwgfx.bigprint( -1, 20, "SUPER GRAVITRON", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true, 2);	
				dwgfx.bigprint( -1, 200, "GO!", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true, 3);		
			}
		}	
	}
	
	if (game.intimetrial && dwgfx.fademode==0) {
		//Draw countdown!
		if (game.timetrialcountdown > 0) {
			if (game.timetrialcountdown < 30) {
				game.resetgameclock();
				if (int(game.timetrialcountdown / 4) % 2 == 0) dwgfx.bigprint( -1, 100, "Go!", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true, 4);
			}else if (game.timetrialcountdown < 60) {
				dwgfx.bigprint( -1, 100, "1", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true, 4);
			}else if (game.timetrialcountdown < 90) {
				dwgfx.bigprint( -1, 100, "2", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true, 4);
			}else if (game.timetrialcountdown < 120) {
				dwgfx.bigprint( -1, 100, "3", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true, 4);
			}
		}else {
			//Draw OSD stuff	
			dwgfx.bprint(6, 18, "TIME :",  255,255,255);
			dwgfx.bprint(6, 30, "DEATH:",  255, 255, 255);
			dwgfx.bprint(6, 42, "SHINY:",  255,255,255);
				
			if(game.timetrialparlost){
			  dwgfx.bprint(56, 18, game.timestring(help),  196, 80, 80);
			}else {
			  dwgfx.bprint(56, 18, game.timestring(help),  196, 196, 196);
			}
			if(game.deathcounts>0){
			  dwgfx.bprint(56, 30, String(game.deathcounts),  196, 80, 80);
			}else {
			  dwgfx.bprint(56, 30, String(game.deathcounts),  196, 196, 196);
			}
			if(game.trinkets<game.timetrialshinytarget){
			  dwgfx.bprint(56, 42, String(game.trinkets) + " of " +String(game.timetrialshinytarget),  196, 80, 80);
			}else {
			  dwgfx.bprint(56, 42, String(game.trinkets) + " of " +String(game.timetrialshinytarget),  196, 196, 196);
			}
			
			if(game.timetrialparlost){
				dwgfx.bprint(195, 214, "PAR TIME:",  80, 80, 80);
				dwgfx.bprint(275, 214, game.partimestring(help),  80, 80, 80);
			}else {
				dwgfx.bprint(195, 214, "PAR TIME:",  255, 255, 255);
				dwgfx.bprint(275, 214, game.partimestring(help),  196, 196, 196);
			}
		}
	}
	
	if (game.activeactivity > -1) {
		//dwgfx.backbuffer.fillRect(new Rectangle(0, 0, 320, 18), 0x000000);
		game.activity_lastprompt = obj.blocks[game.activeactivity].prompt;
		game.activity_r = obj.blocks[game.activeactivity].r;
		game.activity_g = obj.blocks[game.activeactivity].g;
		game.activity_b = obj.blocks[game.activeactivity].b;
		if(game.act_fade<5) game.act_fade=5;
		if(game.act_fade<10){
		  game.act_fade++;
		}
		dwgfx.drawtextbox(16, 4, 36, 3, game.activity_r*(game.act_fade/10), game.activity_g*(game.act_fade/10), game.activity_b*(game.act_fade/10));
		dwgfx.print(5, 12, game.activity_lastprompt, game.activity_r*(game.act_fade/10), game.activity_g*(game.act_fade/10), game.activity_b*(game.act_fade/10), true);
	}else {
		if(game.act_fade>5){
			dwgfx.drawtextbox(16, 4, 36, 3, game.activity_r*(game.act_fade/10), game.activity_g*(game.act_fade/10), game.activity_b*(game.act_fade/10));
		dwgfx.print(5, 12, game.activity_lastprompt, game.activity_r*(game.act_fade/10), game.activity_g*(game.act_fade/10), game.activity_b*(game.act_fade/10), true);
			game.act_fade--;
		}
	}
	
	if (obj.trophytext > 0) {
		dwgfx.drawtrophytext(obj, help);
		obj.trophytext--;
	}
	
	/*
	 * For creating graphical buttons!
	dwgfx.drawmobilebutton(game, 20, 20, 8*7, dwgfx.b_size, "BACK", 65, 185, 207);
	dwgfx.drawmobilebutton(game, 20, 80, 8*7, dwgfx.b_size, "BACK", 65*1.2, 185*1.2, 207*1.2);
	 *
	 * /
	
	//dwgfx.rprint(5, 231, String(game.coins), 255 - help.glow/2, 255 - help.glow/2, 196, true);
	//dwgfx.drawhuetile(311, 230, 48, 1);
	
	//Level complete image
	//if (game.state >= 3007) {
	//	dwgfx.drawimage(0, 0, 12, true);
	//}	
	
	//state changes
	
	/*
	game.test = true;
	if (game.teststring != String(game.state)) trace(game.state);
	game.teststring = String(game.state);
	*/
	
	//Detail entity info for debuging
	/*
	for (i = 0; i < obj.nentity; i++) {
		game.tempstring = String(obj.entities[i].type) +", (" + String(obj.entities[i].xp) + "," + String(obj.entities[i].yp) + ")";
		game.tempstring += " state:" +obj.entities[i].state + ", delay:" + obj.entities[i].statedelay;
		dwgfx.print(5, 5 + i * 8, game.tempstring, 255, 255, 255);
	}
	*/
	
	/*
	game.test = true;
	game.teststring = String(int(obj.entities[obj.getplayer()].xp)) + "," + String(int(obj.entities[obj.getplayer()].yp));
	game.teststring += "   [" + String(game.roomx) + "," + String(game.roomy) + "]";
	*/
	
	//game.test = true;
	//game.teststring = "Current room deaths: " + String(game.currentroomdeaths);
	
	if (game.test) {
		dwgfx.print(5, 5, game.teststring, 196, 196, 255, false);
	}

	if (game.flashlight > 0 && !game.noflashingmode) {
		game.flashlight--;
		dwgfx.flashlight();
	}
	
	if (game.screenshake > 0 && !game.noflashingmode) {
		game.screenshake--;
		dwgfx.screenshake();
	}else{
	  dwgfx.render();
	}
	
	dwgfx.backbuffer.unlock();
}

public function maprender(key:KeyPoll, dwgfx:dwgraphicsclass, game:gameclass, map:mapclass,
													 obj:entityclass, help:helpclass):void {

  dwgfx.drawbutton(game, help);
	
	dwgfx.backbuffer.lock();
	
	
	//dwgfx.drawgui(help);
	
	//draw screen alliteration
	//Roomname:
	temp = map.area(game.roomx, game.roomy);
	if (temp < 2 && !map.custommode && dwgfx.fademode == 0) {
		if (game.roomx >= 102 && game.roomx <= 104 && game.roomy >= 110 && game.roomy <= 111) {
			dwgfx.print(5, 2, "The Ship", 196, 196, 255 - help.glow, true);
		}else{
	    dwgfx.print(5, 2, "Dimension VVVVVV", 196, 196, 255 - help.glow, true);
		}
	}else {
		if (map.finallevel) {
			map.glitchname = map.getglitchname(game.roomx, game.roomy);
	    dwgfx.print(5, 2, map.glitchname, 196, 196, 255 - help.glow, true);
		}else{
	    dwgfx.print(5, 2, map.roomname, 196, 196, 255 - help.glow, true);
		}	
	}
	
	//Background color
	dwgfx.drawfillrect(0, 12, 320, 240, 10, 24, 26);
	
	dwgfx.crewframedelay--;
	if (dwgfx.crewframedelay <= 0) {
		dwgfx.crewframedelay = 8;
		dwgfx.crewframe = (dwgfx.crewframe + 1) % 2;
	}
			
	//Menubar:
	dwgfx.drawtextbox( -10, 212, 42, 3, 65, 185, 207);
	switch(game.menupage) {
		
		case 0:
	    dwgfx.print(30 - 8, 220, "[MAP]", 196, 196, 255 - help.glow);
			if (game.insecretlab) { dwgfx.print(103, 220, "GRAV", 64, 64, 64);
			}else if (obj.flags[67] == 1 && !map.custommode) { dwgfx.print(103, 220, "SHIP", 64,64,64);
			}else{ dwgfx.print(103, 220, "CREW", 64,64,64);}
	    dwgfx.print(185-4, 220, "STATS", 64,64,64);
	    dwgfx.print(258, 220, "SAVE", 64, 64, 64);
			
			if (game.mobilemenu) {
				dwgfx.drawmobilebutton(game, 30 - 8, 220, 56, dwgfx.b_size, "MAP", 65, 185, 207);
				if (game.insecretlab) { dwgfx.drawmobilebutton(game, 103, 220, 56, dwgfx.b_size, "GRAV", 32, 92, 104);
				}else if (obj.flags[67] == 1 && !map.custommode) { dwgfx.drawmobilebutton(game, 103, 220, 56, dwgfx.b_size, "SHIP", 32, 92, 104);
				}else{ dwgfx.drawmobilebutton(game, 103, 220, 56, dwgfx.b_size, "CREW", 32, 92, 104);}
				dwgfx.drawmobilebutton(game, 185-4, 220, 56, dwgfx.b_size, "STATS", 32, 92, 104);
				dwgfx.drawmobilebutton(game, 258, 220, 56, dwgfx.b_size, "QUIT", 32, 92, 104);
			}
			
			if (map.finalmode || (map.custommode && !map.customshowmm)) {
				//draw the map image
				dwgfx.drawpixeltextbox(35, 16, 250, 190, 32,24, 65, 185, 207,4,0);
				dwgfx.drawimage(1, 40, 21, false);
				
				for (j = 0; j < 20; j++) {
					for (i = 0; i < 20; i++) {
						dwgfx.drawimage(2, 40 + (i * 12), 21 + (j * 9), false);
					}
				}
				dwgfx.print(-1, 105, "NO SIGNAL", 245, 245, 245, true);
			}else if(map.custommode){
				//draw the map image
				dwgfx.drawcustompixeltextbox(35 + map.custommmxoff, 16 + map.custommmyoff, map.custommmxsize + 10, map.custommmysize + 10, (map.custommmxsize + 10) / 8, (map.custommmysize + 10) / 8, 65, 185, 207, 4, 0);
				dwgfx.drawpartimage(12, 40 + map.custommmxoff, 21 + map.custommmyoff, map.custommmxsize, map.custommmysize);
				
				//Black out here
				if(map.customzoom==4){
					for (j = 0; j < map.customheight; j++){
						for (i = 0; i < map.customwidth; i++){
							if(map.explored[i+(j*20)]==0){
								//Draw the fog of war on the map
								dwgfx.drawimage(2, map.custommmxoff+40 + (i * 48), map.custommmyoff+21 + (j * 36), false);
								dwgfx.drawimage(2, map.custommmxoff+40 + 12 + (i * 48), map.custommmyoff+21 + (j * 36), false);
								dwgfx.drawimage(2, map.custommmxoff+40 + (i * 48), map.custommmyoff+21 + 9 + (j * 36), false);
								dwgfx.drawimage(2, map.custommmxoff + 40 + 12 + (i * 48), map.custommmyoff + 21 + 9 + (j * 36), false);
								
								dwgfx.drawimage(2, map.custommmxoff+40 + (i * 48) + 24, map.custommmyoff+21 + (j * 36), false);
								dwgfx.drawimage(2, map.custommmxoff+40 + 12 + (i * 48) + 24, map.custommmyoff+21 + (j * 36), false);
								dwgfx.drawimage(2, map.custommmxoff+40 + (i * 48) + 24, map.custommmyoff+ 21 + 9 + (j * 36), false);
								dwgfx.drawimage(2, map.custommmxoff + 40 + 12 + (i * 48) + 24, map.custommmyoff + 21 + 9 + (j * 36), false);
								
								dwgfx.drawimage(2, map.custommmxoff+40 + (i * 48), map.custommmyoff+21 + (j * 36)+18, false);
								dwgfx.drawimage(2, map.custommmxoff+40 + 12 + (i * 48), map.custommmyoff+21 + (j * 36)+18, false);
								dwgfx.drawimage(2, map.custommmxoff+40 + (i * 48), map.custommmyoff+21 + 9 + (j * 36)+18, false);
								dwgfx.drawimage(2, map.custommmxoff + 40 + 12 + (i * 48), map.custommmyoff + 21 + 9 + (j * 36) + 18, false);
								
								dwgfx.drawimage(2, map.custommmxoff+40 + (i * 48) + 24, map.custommmyoff+21 + (j * 36)+18, false);
								dwgfx.drawimage(2, map.custommmxoff+40 + 12 + (i * 48) + 24, map.custommmyoff+21 + (j * 36)+18, false);
								dwgfx.drawimage(2, map.custommmxoff+40 + (i * 48) + 24, map.custommmyoff+21 + 9 + (j * 36)+18, false);
								dwgfx.drawimage(2, map.custommmxoff+40 + 12 + (i * 48) + 24, map.custommmyoff+21 + 9+ (j * 36)+18, false);
							}
						}
					}
				}else if(map.customzoom==2){
					for (j = 0; j < map.customheight; j++){
						for (i = 0; i < map.customwidth; i++){
							if (map.explored[i + (j * 20)] == 0) {
								//Draw the fog of war on the map
								dwgfx.drawimage(2, map.custommmxoff+40 + (i * 24), map.custommmyoff+21 + (j * 18), false);
								dwgfx.drawimage(2, map.custommmxoff+40 + 12 + (i * 24), map.custommmyoff+21 + (j * 18), false);
								dwgfx.drawimage(2, map.custommmxoff+40 + (i * 24), map.custommmyoff+21 + 9 + (j * 18), false);
								dwgfx.drawimage(2, map.custommmxoff+40 + 12 + (i * 24), map.custommmyoff+21 + 9+ (j * 18), false);
							}
						}
					}
				}else{
					for (j = 0; j < map.customheight; j++){
						for (i = 0; i < map.customwidth; i++){
							if(map.explored[i+(j*20)]==0){
								//Draw the fog of war on the map
								dwgfx.drawimage(2, map.custommmxoff+40 + (i * 12), map.custommmyoff+21 + (j * 9), false);
							}
						}
					}
				}
				
				if (map.cursorstate == 0){
					map.cursordelay++;
					if (map.cursordelay > 10){
						map.cursorstate = 1;
						map.cursordelay = 0;
					}
				}else if (map.cursorstate == 1){
					map.cursordelay++;
					if (map.cursordelay > 30) map.cursorstate = 2;
				}else if (map.cursorstate == 2){
					map.cursordelay++;
				}
				
				//normal size maps
				if(map.customzoom==4){
					if(map.cursorstate==1){
						if (int(map.cursordelay / 4) % 2 == 0){
							dwgfx.drawrect(40 + ((game.roomx - 100) * 48) +map.custommmxoff, 21 + ((game.roomy - 100) * 36)+map.custommmyoff , 48 , 36 , 255,255,255);
							dwgfx.drawrect(40 + ((game.roomx - 100) * 48) + 2+map.custommmxoff, 21 + ((game.roomy - 100) * 36) + 2+map.custommmyoff, 48 - 4, 36 - 4, 255,255,255);
						}
					}else if (map.cursorstate == 2){
						if (int(map.cursordelay / 15) % 2 == 0){
							dwgfx.drawrect(40 + ((game.roomx - 100) * 48) + 2+map.custommmxoff, 21 + ((game.roomy - 100) * 36) + 2+map.custommmyoff, 48 - 4, 36 - 4, 16, 245 - (help.glow), 245 - (help.glow));
						}
					}
				}else if(map.customzoom==2){
					if(map.cursorstate==1){
						if (int(map.cursordelay / 4) % 2 == 0){
							dwgfx.drawrect(40 + ((game.roomx - 100) * 24)+map.custommmxoff , 21 + ((game.roomy - 100) * 18)+map.custommmyoff , 24 , 18 , 255,255,255);
							dwgfx.drawrect(40 + ((game.roomx - 100) * 24) + 2+map.custommmxoff, 21 + ((game.roomy - 100) * 18) + 2+map.custommmyoff, 24 - 4, 18 - 4, 255,255,255);
						}
					}else if (map.cursorstate == 2){
						if (int(map.cursordelay / 15) % 2 == 0){
							dwgfx.drawrect(40 + ((game.roomx - 100) * 24) + 2+map.custommmxoff, 21 + ((game.roomy - 100) * 18) + 2+map.custommmyoff, 24 - 4, 18 - 4, 16, 245 - (help.glow), 245 - (help.glow));
						}
					}
				}else{
					if(map.cursorstate==1){
						if (int(map.cursordelay / 4) % 2 == 0){
							dwgfx.drawrect(40 + ((game.roomx - 100) * 12)+map.custommmxoff , 21 + ((game.roomy - 100) * 9)+map.custommmyoff , 12 , 9 , 255,255,255);
							dwgfx.drawrect(40 + ((game.roomx - 100) * 12) + 2+map.custommmxoff, 21 + ((game.roomy - 100) * 9) + 2+map.custommmyoff, 12 - 4, 9 - 4, 255,255,255);
						}
					}else if (map.cursorstate == 2){
						if (int(map.cursordelay / 15) % 2 == 0){
							dwgfx.drawrect(40 + ((game.roomx - 100) * 12) + 2+map.custommmxoff, 21 + ((game.roomy - 100) * 9) + 2+map.custommmyoff, 12 - 4, 9 - 4, 16, 245 - (help.glow), 245 - (help.glow));
						}
					}
				}				
      }else {
				//draw the map image
				dwgfx.drawpixeltextbox(35, 16, 250, 190, 32,24, 65, 185, 207,4,0);
				dwgfx.drawimage(1, 40, 21, false);
				
				//black out areas we can't see yet
				for (j = 0; j < 20; j++) {
					for (i = 0; i < 20; i++) {
						if(map.explored[i+(j*20)]==0){
							//dwgfx.drawfillrect(10 + (i * 12), 21 + (j * 9), 12, 9, 16, 16, 16);
							dwgfx.drawimage(2, 40 + (i * 12), 21 + (j * 9), false);
						}
					}
				}
				//draw the coordinates
				if (game.roomx == 109) {
					//tower!instead of room y, scale map.ypos
					/*if (map.ypos > (0.57 * (680 * 8))) {
						i = int(map.ypos - (0.57 * (680 * 8)));
						i = int((i / (0.43 * (680 * 8)))*9);
						dwgfx.drawrect(40 + ((game.roomx - 100) * 12) + 2, 21 + i + 2, 12 - 4, 9 - 4, 16, 245 - (help.glow * 2), 245 - (help.glow * 2));		
					}*/
					if (map.cursorstate == 0) {
						map.cursordelay++;
						if (map.cursordelay > 10) {	map.cursorstate = 1; map.cursordelay = 0; }
					}else if (map.cursorstate == 1) {
						map.cursordelay++;
						if (int(map.cursordelay / 4) % 2 == 0) {
							dwgfx.drawrect(40 + ((game.roomx - 100) * 12) , 21 , 12, 180, 255,255,255);		
							dwgfx.drawrect(40 + ((game.roomx - 100) * 12) + 2 , 21  + 2, 12 - 4, 180 - 4, 255,255,255);		
						}
						if (map.cursordelay > 30) map.cursorstate = 2;
					}else if (map.cursorstate == 2) {
						map.cursordelay++;
						if (int(map.cursordelay / 15) % 2 == 0) {
							dwgfx.drawrect(40 + ((game.roomx - 100) * 12) + 2 , 21  + 2, 12 - 4, 180 - 4,16, 245 - (help.glow), 245 - (help.glow));				
						}
					}
				}else {
					if (map.cursorstate == 0) {
						map.cursordelay++;
						if (map.cursordelay > 10) {	map.cursorstate = 1; map.cursordelay = 0; }
					}else if (map.cursorstate == 1) {
						map.cursordelay++;
						if (int(map.cursordelay / 4) % 2 == 0) {
							dwgfx.drawrect(40 + ((game.roomx - 100) * 12) , 21 + ((game.roomy - 100) * 9) , 12 , 9 , 255,255,255);		
							dwgfx.drawrect(40 + ((game.roomx - 100) * 12) + 2, 21 + ((game.roomy - 100) * 9) + 2, 12 - 4, 9 - 4, 255,255,255);		
						}
						if (map.cursordelay > 30) map.cursorstate = 2;
					}else if (map.cursorstate == 2) {
						map.cursordelay++;
						if (int(map.cursordelay / 15) % 2 == 0) {
					    dwgfx.drawrect(40 + ((game.roomx - 100) * 12) + 2, 21 + ((game.roomy - 100) * 9) + 2, 12 - 4, 9 - 4, 16, 245 - (help.glow), 245 - (help.glow));		
						}
					}
				}
				
				//draw legend details
				for (i = 0; i < map.numteleporters; i++) {
					if (map.showteleporters && map.explored[map.teleporters[i].x + (20 * map.teleporters[i].y)] > 0) {
						temp = 1126 + map.explored[map.teleporters[i].x + (20 * map.teleporters[i].y)];
						if (dwgfx.flipmode) temp += 3;
						dwgfx.drawtile(40 + 3 + (map.teleporters[i].x * 12), 22 + (map.teleporters[i].y * 9), temp);
					}else if(map.showtargets && map.explored[map.teleporters[i].x+(20*map.teleporters[i].y)]==0){
						temp = 1126 + map.explored[map.teleporters[i].x + (20 * map.teleporters[i].y)];
						if (dwgfx.flipmode) temp += 3;
						dwgfx.drawtile(40 + 3 + (map.teleporters[i].x * 12), 22 + (map.teleporters[i].y * 9), temp);
					}
					//dwgfx.drawtile(40+3 + (map.teleporters[i].x * 12), 22 + (map.teleporters[i].y * 9), 1086); //for shiny trinkets, do later
				}
				
				if (map.showtrinkets) {
					for (i = 0; i < map.numshinytrinkets; i++) {
						if (obj.collect[i] == 0) {
							temp = 1086;
							if (dwgfx.flipmode) temp += 3;
							dwgfx.drawtile(40 + 3 + (map.shinytrinkets[i].x * 12), 22 + (map.shinytrinkets[i].y * 9),	temp);
						}
					}
				}
			}
	  break;
		case 1:		  			
			if (game.insecretlab) {
				dwgfx.print(30, 220, "MAP", 64,64,64);
				dwgfx.print(103-8, 220, "[GRAV]", 196, 196, 255 - help.glow);
				dwgfx.print(185-4, 220, "STATS", 64,64,64);
				dwgfx.print(258, 220, "SAVE", 64, 64, 64);
				
				if (game.mobilemenu) {
					dwgfx.drawmobilebutton(game, 30 - 8, 220, 56, dwgfx.b_size, "MAP", 32, 92, 104);
					dwgfx.drawmobilebutton(game, 103, 220, 56, dwgfx.b_size, "GRAV", 65, 185, 207);
					dwgfx.drawmobilebutton(game, 185-4, 220, 56, dwgfx.b_size, "STATS", 32, 92, 104);
					dwgfx.drawmobilebutton(game, 258, 220, 56, dwgfx.b_size, "QUIT", 32, 92, 104);
				}
				
				if (dwgfx.flipmode) {
					dwgfx.print(0, 174, "SUPER GRAVITRON HIGHSCORE", 196, 196, 255 - help.glow, true);
					
					tempstring = help.timestring(game.swnrecord);
					dwgfx.print( 240, 124, "Best Time", 196, 196, 255 - help.glow, true);	
					dwgfx.bigrprint( 300, 94, tempstring, 196, 196, 255 - help.glow, true, 2);	
					
					switch(game.swnbestrank) {
						case 0: dwgfx.print( -1, 40, "Next Trophy at 5 seconds", 196, 196, 255 - help.glow, true); break;
						case 1: dwgfx.print( -1, 40, "Next Trophy at 10 seconds", 196, 196, 255 - help.glow, true); break;
						case 2: dwgfx.print( -1, 40, "Next Trophy at 15 seconds", 196, 196, 255 - help.glow, true); break;
						case 3: dwgfx.print( -1, 40, "Next Trophy at 20 seconds", 196, 196, 255 - help.glow, true); break;
						case 4: dwgfx.print( -1, 40, "Next Trophy at 30 seconds", 196, 196, 255 - help.glow, true); break;
						case 5: dwgfx.print( -1, 40, "Next Trophy at 1 minute", 196, 196, 255 - help.glow, true); break;
						case 6: dwgfx.print( -1, 40, "All Trophies collected!", 196, 196, 255 - help.glow, true); break;
					}
				}else{
					dwgfx.print(0, 40, "SUPER GRAVITRON HIGHSCORE", 196, 196, 255 - help.glow, true);
					
					tempstring = help.timestring(game.swnrecord);
					dwgfx.print( 240, 90, "Best Time", 196, 196, 255 - help.glow, true);	
					dwgfx.bigrprint( 300, 104, tempstring, 196, 196, 255 - help.glow, true, 2);	
					
					switch(game.swnbestrank) {
						case 0: dwgfx.print( -1, 174, "Next Trophy at 5 seconds", 196, 196, 255 - help.glow, true); break;
						case 1: dwgfx.print( -1, 174, "Next Trophy at 10 seconds", 196, 196, 255 - help.glow, true); break;
						case 2: dwgfx.print( -1, 174, "Next Trophy at 15 seconds", 196, 196, 255 - help.glow, true); break;
						case 3: dwgfx.print( -1, 174, "Next Trophy at 20 seconds", 196, 196, 255 - help.glow, true); break;
						case 4: dwgfx.print( -1, 174, "Next Trophy at 30 seconds", 196, 196, 255 - help.glow, true); break;
						case 5: dwgfx.print( -1, 174, "Next Trophy at 1 minute", 196, 196, 255 - help.glow, true); break;
						case 6: dwgfx.print( -1, 174, "All Trophies collected!", 196, 196, 255 - help.glow, true); break;
					}
				}
			}else if (obj.flags[67] == 1 && !map.custommode) {
				dwgfx.print(30, 220, "MAP", 64,64,64);
				dwgfx.print(103-8, 220, "[SHIP]", 196, 196, 255 - help.glow);
				dwgfx.print(185-4, 220, "STATS", 64,64,64);
				dwgfx.print(258, 220, "SAVE", 64, 64, 64);
				
				if (game.mobilemenu) {
					dwgfx.drawmobilebutton(game, 30 - 8, 220, 56, dwgfx.b_size, "MAP", 32, 92, 104);
					dwgfx.drawmobilebutton(game, 103, 220, 56, dwgfx.b_size, "SHIP", 65, 185, 207);
					dwgfx.drawmobilebutton(game, 185-4, 220, 56, dwgfx.b_size, "STATS", 32, 92, 104);
					dwgfx.drawmobilebutton(game, 258, 220, 56, dwgfx.b_size, "QUIT", 32, 92, 104);
				}
				
				if (game.mobilemenu) {
					dwgfx.print(0, 80, "Warp to the ship?", 255 - (help.glow * 2), 255 - (help.glow * 2), 255 - help.glow, true);
					
					if(help.slowsine%8>4){
						dwgfx.drawmobilebutton(game, 160 + 4 - 24, 110, 8 * 6, dwgfx.b_size, "WARP", 65, 185, 207);
					}else {
						dwgfx.drawmobilebutton(game, 160 + 4 - 24, 110, 8 * 6, dwgfx.b_size, "WARP", 65*1.2, 185*1.2, 207*1.2);
					}
					
				}else{
					dwgfx.print(0, 105, "Press ACTION to warp to the ship.", 196, 196, 255 - help.glow, true);
				}
			}else if(map.custommode){
				dwgfx.print(30, 220, "MAP", 64,64,64);
				dwgfx.print(103-8, 220, "[CREW]", 196, 196, 255 - help.glow);
				dwgfx.print(185-4, 220, "STATS", 64,64,64);
				dwgfx.print(258, 220, "SAVE", 64, 64, 64);
				
				if (game.mobilemenu) {
					dwgfx.drawmobilebutton(game, 30 - 8, 220, 56, dwgfx.b_size, "MAP", 32, 92, 104);
					dwgfx.drawmobilebutton(game, 103, 220, 56, dwgfx.b_size, "CREW", 65, 185, 207);
					dwgfx.drawmobilebutton(game, 185-4, 220, 56, dwgfx.b_size, "STATS", 32, 92, 104);
					dwgfx.drawmobilebutton(game, 258, 220, 56, dwgfx.b_size, "QUIT", 32, 92, 104);
				}
				
				if (dwgfx.flipmode){
					dwgfx.bigprint( -1, 220-45, editor.ListOfMetaData[game.playcustomlevel].title, 196, 196, 255 - help.glow, true);
					dwgfx.print( -1, 220-70, "by " + editor.ListOfMetaData[game.playcustomlevel].creator, 196, 196, 255 - help.glow, true);
					dwgfx.print( -1, 220-80, editor.ListOfMetaData[game.playcustomlevel].website, 196, 196, 255 - help.glow, true);
					dwgfx.print( -1, 220-100, editor.ListOfMetaData[game.playcustomlevel].Desc1, 196, 196, 255 - help.glow, true);
					dwgfx.print( -1, 220-110, editor.ListOfMetaData[game.playcustomlevel].Desc2, 196, 196, 255 - help.glow, true);
					dwgfx.print( -1, 220 - 120, editor.ListOfMetaData[game.playcustomlevel].Desc3, 196, 196, 255 - help.glow, true);
					
					if(map.customcrewmates-game.crewmates==1){
						dwgfx.print(1,220-165, help.number(int(map.customcrewmates-game.crewmates))+ " crewmate remains", 196, 196, 255 - help.glow, true);
					}else if(map.customcrewmates-game.crewmates>0){
						dwgfx.print(1,220-165, help.number(int(map.customcrewmates-game.crewmates))+ " crewmates remain", 196, 196, 255 - help.glow, true);
					}
				}else{
					dwgfx.bigprint( -1, 45, editor.ListOfMetaData[game.playcustomlevel].title, 196, 196, 255 - help.glow, true);
					dwgfx.print( -1, 70, "by " + editor.ListOfMetaData[game.playcustomlevel].creator, 196, 196, 255 - help.glow, true);
					dwgfx.print( -1, 80, editor.ListOfMetaData[game.playcustomlevel].website, 196, 196, 255 - help.glow, true);
					dwgfx.print( -1, 100, editor.ListOfMetaData[game.playcustomlevel].Desc1, 196, 196, 255 - help.glow, true);
					dwgfx.print( -1, 110, editor.ListOfMetaData[game.playcustomlevel].Desc2, 196, 196, 255 - help.glow, true);
					dwgfx.print( -1, 120, editor.ListOfMetaData[game.playcustomlevel].Desc3, 196, 196, 255 - help.glow, true);
					
					if(map.customcrewmates-game.crewmates==1){
						dwgfx.print(1,165, help.number(int(map.customcrewmates-game.crewmates))+ " crewmate remains", 196, 196, 255 - help.glow, true);
					}else if(map.customcrewmates-game.crewmates>0){
						dwgfx.print(1,165, help.number(int(map.customcrewmates-game.crewmates))+ " crewmates remain", 196, 196, 255 - help.glow, true);
					}
				}
			}else{ 
				dwgfx.print(30, 220, "MAP", 64,64,64);
				dwgfx.print(103-8, 220, "[CREW]", 196, 196, 255 - help.glow);
				dwgfx.print(185-4, 220, "STATS", 64,64,64);
				dwgfx.print(258, 220, "SAVE", 64, 64, 64);
				
				if (game.mobilemenu) {
					dwgfx.drawmobilebutton(game, 30 - 8, 220, 56, dwgfx.b_size, "MAP", 32, 92, 104);
					dwgfx.drawmobilebutton(game, 103, 220, 56, dwgfx.b_size, "CREW", 65, 185, 207);
					dwgfx.drawmobilebutton(game, 185-4, 220, 56, dwgfx.b_size, "STATS", 32, 92, 104);
					dwgfx.drawmobilebutton(game, 258, 220, 56, dwgfx.b_size, "QUIT", 32, 92, 104);
				}
				
				if (dwgfx.flipmode) {
					for (i = 0; i < 3; i++) {
						dwgfx.drawcrewman(16, 32 + (i * 64), 2-i, game.crewstats[2-i], help);
						if (game.crewstats[(2-i)]) {
							dwgfx.printcrewname(44, 32 + (i * 64)+4+10, 2-i);
							dwgfx.printcrewnamestatus(44, 32 + (i * 64)+4, 2-i);
						}else {
							dwgfx.printcrewnamedark(44, 32 + (i * 64)+4+10, 2-i);
							dwgfx.print(44, 32 + (i * 64) + 4, "Missing...", 64,64,64);
						}
						
						dwgfx.drawcrewman(16+160, 32 + (i * 64), (2-i)+3, game.crewstats[(2-i)+3], help);
						if (game.crewstats[(2-i)+3]) {
							dwgfx.printcrewname(44+160, 32 + (i * 64)+4+10, (2-i)+3);
							dwgfx.printcrewnamestatus(44+160, 32 + (i * 64)+4, (2-i)+3);
						}else {
							dwgfx.printcrewnamedark(44+160, 32 + (i * 64)+4+10, (2-i)+3);
							dwgfx.print(44+160, 32 + (i * 64) + 4, "Missing...", 64,64,64);
						}
					}
				}else{
					for (i = 0; i < 3; i++) {
						dwgfx.drawcrewman(16, 32 + (i * 64), i, game.crewstats[i], help);
						if (game.crewstats[i]) {
							dwgfx.printcrewname(44, 32 + (i * 64)+4, i);
							dwgfx.printcrewnamestatus(44, 32 + (i * 64)+4+10, i);
						}else {
							dwgfx.printcrewnamedark(44, 32 + (i * 64)+4, i);
							dwgfx.print(44, 32 + (i * 64) + 4 + 10, "Missing...", 64,64,64);
						}
						
						dwgfx.drawcrewman(16+160, 32 + (i * 64), i+3, game.crewstats[i+3], help);
						if (game.crewstats[i+3]) {
							dwgfx.printcrewname(44+160, 32 + (i * 64)+4, i+3);
							dwgfx.printcrewnamestatus(44+160, 32 + (i * 64)+4+10, i+3);
						}else {
							dwgfx.printcrewnamedark(44+160, 32 + (i * 64)+4, i+3);
							dwgfx.print(44+160, 32 + (i * 64) + 4 + 10, "Missing...", 64,64,64);
						}
					}
				}
			}
	  break;
		case 2:
	    dwgfx.print(30, 220, "MAP", 64,64,64);
			if (game.insecretlab) { dwgfx.print(103, 220, "GRAV", 64, 64, 64);
			}else if (obj.flags[67] == 1 && !map.custommode) { dwgfx.print(103, 220, "SHIP", 64,64,64);
			}else{ dwgfx.print(103, 220, "CREW", 64,64,64);}
	    dwgfx.print(185-12, 220, "[STATS]", 196, 196, 255 - help.glow);
	    dwgfx.print(258, 220, "SAVE", 64, 64, 64);
			
			if (game.mobilemenu) {
				dwgfx.drawmobilebutton(game, 30 - 8, 220, 56, dwgfx.b_size, "MAP", 32, 92, 104);
				if (game.insecretlab) { dwgfx.drawmobilebutton(game, 103, 220, 56, dwgfx.b_size, "GRAV", 32, 92, 104);
				}else if (obj.flags[67] == 1 && !map.custommode) { dwgfx.drawmobilebutton(game, 103, 220, 56, dwgfx.b_size, "SHIP", 32, 92, 104);
				}else{ dwgfx.drawmobilebutton(game, 103, 220, 56, dwgfx.b_size, "CREW", 32, 92, 104);}
				dwgfx.drawmobilebutton(game, 185-4, 220, 56, dwgfx.b_size, "STATS", 65, 185, 207);
				dwgfx.drawmobilebutton(game, 258, 220, 56, dwgfx.b_size, "QUIT", 32, 92, 104);
			}
		
      if (map.custommode) {
			  if (dwgfx.flipmode){
					dwgfx.print(0, 164, "[Trinkets found]", 196, 196, 255 - help.glow, true);
					dwgfx.print(0, 152, help.number(game.trinkets) + " out of " + help.number(map.customtrinkets), 96, 96, 96, true);
					
					dwgfx.print(0, 114, "[Number of Deaths]", 196, 196, 255 - help.glow, true);
					dwgfx.print(0, 102, String(game.deathcounts),  96, 96, 96, true);
					
					dwgfx.print(0, 64, "[Time Taken]", 196, 196, 255 - help.glow, true);
					dwgfx.print(0, 52, game.timestring(help),  96, 96, 96, true);
				}else{
					dwgfx.print(0, 52, "[Trinkets found]", 196, 196, 255 - help.glow, true);
					dwgfx.print(0, 64, help.number(game.trinkets) + " out of " + help.number(map.customtrinkets), 96, 96, 96, true);
					
					dwgfx.print(0, 102, "[Number of Deaths]", 196, 196, 255 - help.glow, true);
					dwgfx.print(0, 114, String(game.deathcounts),  96, 96, 96, true);
					
					dwgfx.print(0, 152, "[Time Taken]", 196, 196, 255 - help.glow, true);
					dwgfx.print(0, 164, game.timestring(help),  96, 96, 96, true);
				}
			}else{
				if (dwgfx.flipmode) {
					dwgfx.print(0, 164, "[Trinkets found]", 196, 196, 255 - help.glow, true);
					dwgfx.print(0, 152, help.number(game.trinkets) + " out of Twenty", 96,96,96, true);
					
					dwgfx.print(0, 114, "[Number of Deaths]", 196, 196, 255 - help.glow, true);
					dwgfx.print(0, 102, String(game.deathcounts),  96,96,96, true);
					
					dwgfx.print(0, 64, "[Time Taken]", 196, 196, 255 - help.glow, true);
					dwgfx.print(0, 52, game.timestring(help),  96, 96, 96, true);
				}else{	
					dwgfx.print(0, 52, "[Trinkets found]", 196, 196, 255 - help.glow, true);
					dwgfx.print(0, 64, help.number(game.trinkets) + " out of Twenty", 96,96,96, true);
					
					dwgfx.print(0, 102, "[Number of Deaths]", 196, 196, 255 - help.glow, true);
					dwgfx.print(0, 114, String(game.deathcounts),  96,96,96, true);
					
					dwgfx.print(0, 152, "[Time Taken]", 196, 196, 255 - help.glow, true);
					dwgfx.print(0, 164, game.timestring(help),  96, 96, 96, true);
				}
			}
	  break;
		case 3:
	    dwgfx.print(30, 220, "MAP", 64,64,64);
			if (game.insecretlab) { dwgfx.print(103, 220, "GRAV", 64, 64, 64);
			}else if (obj.flags[67] == 1 && !map.custommode) { dwgfx.print(103, 220, "SHIP", 64,64,64);
			}else{ dwgfx.print(103, 220, "CREW", 64,64,64);}
	    dwgfx.print(185-4, 220, "STATS", 64,64,64);
	    dwgfx.print(258 - 8, 220, "[SAVE]", 196, 196, 255 - help.glow);
			
			if (game.mobilemenu) {
				dwgfx.drawmobilebutton(game, 30 - 8, 220, 56, dwgfx.b_size, "MAP", 32, 92, 104);
				if (game.insecretlab) { dwgfx.drawmobilebutton(game, 103, 220, 56, dwgfx.b_size, "GRAV", 32, 92, 104);
				}else if (obj.flags[67] == 1 && !map.custommode) { dwgfx.drawmobilebutton(game, 103, 220, 56, dwgfx.b_size, "SHIP", 32, 92, 104);
				}else{ dwgfx.drawmobilebutton(game, 103, 220, 56, dwgfx.b_size, "CREW", 32, 92, 104);}
				dwgfx.drawmobilebutton(game, 185-4, 220, 56, dwgfx.b_size, "STATS", 32, 92, 104);
				dwgfx.drawmobilebutton(game, 258, 220, 56, dwgfx.b_size, "QUIT", 65, 185, 207);
			}
			
			dwgfx.print(0, 80, "Quit to main menu?", 255 - (help.glow * 2), 255 - (help.glow * 2), 255 - help.glow, true);
			
			if(help.slowsine%8>4){
				dwgfx.drawmobilebutton(game, 160 + 4 - 24, 110, 8 * 6, dwgfx.b_size, "QUIT", 65, 185, 207);
			}else {
				dwgfx.drawmobilebutton(game, 160 + 4 - 24, 110, 8 * 6, dwgfx.b_size, "QUIT", 65*1.2, 185*1.2, 207*1.2);
			}
			
			if (dwgfx.flipmode) {
				dwgfx.print(0, 186, "(Note: The game is autosaved", 146, 146, 180, true);
				dwgfx.print(0, 174, "at every checkpoint.)", 146, 146, 180, true);
			}else{
				dwgfx.print(0, 174, "(Note: The game is autosaved", 146, 146, 180, true);
				dwgfx.print(0, 186, "at every checkpoint.)", 146, 146, 180, true);
			}
			
			/*
			if (game.inintermission) {
				dwgfx.print(0, 115, "Cannot Save in Level Replay", 146, 146, 180, true);
			}else if (game.nodeathmode) {
				dwgfx.print(0, 115, "Cannot Save in No Death Mode", 146, 146, 180, true);
			}else if (game.intimetrial) {
				dwgfx.print(0, 115, "Cannot Save in Time Trial", 146, 146, 180, true);
			}else if (game.insecretlab) {
				dwgfx.print(0, 115, "Cannot Save in Secret Lab", 146, 146, 180, true);
			}else if (map.custommode){
				if (game.gamesaved){
					dwgfx.print(0, 36, "Game saved ok!", 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2), true);
					
					dwgfx.drawpixeltextbox(25, 65, 270, 90, 34, 12, 65, 185, 207, 0, 4);
					
					if (dwgfx.flipmode){
						dwgfx.print(0, 122, game.customleveltitle, 25, 255 - (help.glow / 2), 255 - (help.glow / 2), true);
						dwgfx.print(160 - 84, 78, game.savetime, 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2));
						dwgfx.print(160 + 40, 78, help.number(game.savetrinkets), 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2));
						
						dwgfx.drawspritesetcol(50, 74, 50, 18, help);
						dwgfx.drawspritesetcol(175, 74, 22, 18, help);
					}else{
						dwgfx.print(0, 90, game.customleveltitle, 25, 255 - (help.glow / 2), 255 - (help.glow / 2), true);
						dwgfx.print(160 - 84, 132, game.savetime, 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2));
						dwgfx.print(160 + 40, 132, help.number(game.savetrinkets), 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2));
						
						dwgfx.drawspritesetcol(50, 126, 50, 18, help);
						dwgfx.drawspritesetcol(175, 126, 22, 18, help);
					}
				}else{
					dwgfx.print(0, 80, "[Press ACTION to save your game]", 255 - (help.glow * 2), 255 - (help.glow * 2), 255 - help.glow, true);
				}
			}else {
				if (dwgfx.flipmode) {
					dwgfx.print(0, 186, "(Note: The game is autosaved", 146, 146, 180, true);
					dwgfx.print(0, 174, "at every teleporter.)", 146, 146, 180, true);
				}else{
					dwgfx.print(0, 174, "(Note: The game is autosaved", 146, 146, 180, true);
					dwgfx.print(0, 186, "at every teleporter.)", 146, 146, 180, true);
				}
				
				if (game.gamesaved) {
					dwgfx.print(0, 36, "Game saved ok!", 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2), true);
					
					dwgfx.drawpixeltextbox(25, 65, 270, 90, 34,12, 65, 185, 207,0,4);
					
					if (dwgfx.flipmode) {
						dwgfx.print(0, 132, game.savearea, 25, 255 - (help.glow / 2), 255 - (help.glow / 2), true);
						for (i = 0; i < 6; i++) {
							dwgfx.drawcrewman(169-(3*42)+(i*42), 98, i, game.crewstats[i], help, true);
						}
						dwgfx.print(160 - 84, 78, game.savetime, 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2));
						dwgfx.print(160 + 40, 78, help.number(game.savetrinkets), 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2));
						
						dwgfx.drawspritesetcol(50, 74, 50, 18, help);
						dwgfx.drawspritesetcol(175, 74, 22, 18, help);	
					}else{
						dwgfx.print(0, 80, game.savearea, 25, 255 - (help.glow / 2), 255 - (help.glow / 2), true);
						for (i = 0; i < 6; i++) {
							dwgfx.drawcrewman(169-(3*42)+(i*42), 95, i, game.crewstats[i], help, true);
						}
						dwgfx.print(160 - 84, 132, game.savetime, 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2));
						dwgfx.print(160 + 40, 132, help.number(game.savetrinkets), 255 - (help.glow / 2), 255 - (help.glow / 2), 255 - (help.glow / 2));
						
						dwgfx.drawspritesetcol(50, 126, 50, 18, help);
						dwgfx.drawspritesetcol(175, 126, 22, 18, help);
					}
				}else{
					dwgfx.print(0, 80, "[Press ACTION to save your game]", 255 - (help.glow * 2), 255 - (help.glow * 2), 255 - help.glow, true);
					
					if (game.quicksummary != "") {
						if (dwgfx.flipmode) {
							dwgfx.print(0, 110, "Last Save:", 164 - (help.glow / 4), 164 - (help.glow / 4), 164, true);
							dwgfx.print(0, 100, game.quicksummary, 164  - (help.glow / 4), 164 - (help.glow / 4), 164, true);
						}else{
							dwgfx.print(0, 100, "Last Save:", 164 - (help.glow / 4), 164 - (help.glow / 4), 164, true);
							dwgfx.print(0, 110, game.quicksummary, 164  - (help.glow / 4), 164 - (help.glow / 4), 164, true);
						}
					}
				}
			}
			*/
	  break;
		case 10:
			
			if(game.mobilemenu){
				dwgfx.drawmobilebutton(game, 128, 220, 56, dwgfx.b_size, "QUIT", 65, 185, 207);
			}else {
				dwgfx.print(128, 220, "[ QUIT ]", 196, 196, 255 - help.glow);
			}
	    
			if (dwgfx.flipmode) {
				if (game.intimetrial || game.insecretlab || game.nodeathmode || game.menukludge){
				  dwgfx.print(0, 135, "Return to main menu?", 196, 196, 255 - help.glow, true);
			  }else {
				  dwgfx.print(0, 142, "Do you want to quit? You will", 196, 196, 255 - help.glow, true);
				  dwgfx.print(0, 130, "lose any unsaved progress.", 196, 196, 255 - help.glow, true);
				}
				
				if(help.slowsine%8>4){
					dwgfx.drawmobilebutton(game, 160 + 4 - 24, 110, 8 * 6, dwgfx.b_size, "QUIT", 65, 185, 207);
				}else {
					dwgfx.drawmobilebutton(game, 160 + 4 - 24, 110, 8 * 6, dwgfx.b_size, "QUIT", 65*1.2, 185*1.2, 207*1.2);
				}
				//dwgfx.print(80-16, 88, "[ NO, KEEP PLAYING ]", 196, 196, 255 - help.glow);
				//dwgfx.print(80 + 32, 76, "yes, quit to menu",  96, 96, 96);
			}else {	
				
				if (game.intimetrial || game.insecretlab || game.nodeathmode || game.menukludge) {
					dwgfx.print(0, 80, "Return to main menu?", 196, 196, 255 - help.glow, true);
				}else {
				  dwgfx.print(0, 76, "Do you want to quit? You will", 196, 196, 255 - help.glow, true);
				  dwgfx.print(0, 88, "lose any unsaved progress.", 196, 196, 255 - help.glow, true);
			  }
				
				if(help.slowsine%8>4){
					dwgfx.drawmobilebutton(game, 160 + 4 - 24, 110, 8 * 6, dwgfx.b_size, "QUIT", 65, 185, 207);
				}else {
					dwgfx.drawmobilebutton(game, 160 + 4 - 24, 110, 8 * 6, dwgfx.b_size, "QUIT", 65*1.2, 185*1.2, 207*1.2);
				}
				//dwgfx.print(80-16, 130, "[ NO, KEEP PLAYING ]", 196, 196, 255 - help.glow);
				//dwgfx.print(80 + 32, 142, "yes, quit to menu",  96, 96, 96);
			
			}
	  break;
		case 11:
			
			if(game.mobilemenu){
				dwgfx.drawmobilebutton(game, 128, 220, 56, dwgfx.b_size, "QUIT", 65, 185, 207);
			}else {
				dwgfx.print(128, 220, "[ QUIT ]", 196, 196, 255 - help.glow);
			}
	    
	    
			if (dwgfx.flipmode) {
				if (game.intimetrial || game.insecretlab || game.nodeathmode || game.menukludge){
				  dwgfx.print(0, 135, "Return to main menu?", 196, 196, 255 - help.glow, true);
			  }else {
				  dwgfx.print(0, 142, "Do you want to quit? You will", 196, 196, 255 - help.glow, true);
				  dwgfx.print(0, 130, "lose any unsaved progress.", 196, 196, 255 - help.glow, true);
				}
				
				dwgfx.print(80, 88, "no, keep playing", 96,96,96);
				dwgfx.print(80+32-16, 76, "[ YES, QUIT TO MENU ]",  196, 196, 255 - help.glow);
			}else{	
				if (game.intimetrial || game.insecretlab || game.nodeathmode || game.menukludge) {
					dwgfx.print(0, 80, "Return to main menu?", 196, 196, 255 - help.glow, true);
				}else {
				  dwgfx.print(0, 76, "Do you want to quit? You will", 196, 196, 255 - help.glow, true);
				  dwgfx.print(0, 88, "lose any unsaved progress.", 196, 196, 255 - help.glow, true);
			  }
				
				dwgfx.print(80, 130, "no, keep playing", 96,96,96);
				dwgfx.print(80+32-16, 142, "[ YES, QUIT TO MENU ]", 196, 196, 255 - help.glow);
			}
	  break;
		case 20:
			if(game.mobilemenu){
				dwgfx.drawmobilebutton(game, 128, 220, 11*8, dwgfx.b_size, "GRAVITRON", 65, 185, 207);
			}else {
				dwgfx.print(128, 220, "[ GRAVITRON ]", 196, 196, 255 - help.glow, true);
			}
	    
			if (dwgfx.flipmode) {
				dwgfx.print(0, 76, "the secret laboratory?", 196, 196, 255 - help.glow, true);			
				dwgfx.print(0, 88, "Do you want to return to", 196, 196, 255 - help.glow, true);	
				//dwgfx.print(80-16, 142, "[ NO, KEEP PLAYING ]", 196, 196, 255 - help.glow);
				//dwgfx.print(80 + 32, 130, "yes, return",  96, 96, 96);
				if(help.slowsine%8>4){
					dwgfx.drawmobilebutton(game, 160 + 4 - 24, 110, 8 * 6, dwgfx.b_size, "QUIT", 65, 185, 207);
				}else {
					dwgfx.drawmobilebutton(game, 160 + 4 - 24, 110, 8 * 6, dwgfx.b_size, "QUIT", 65*1.2, 185*1.2, 207*1.2);
				}
			}else {
				dwgfx.print(0, 76, "Do you want to return to", 196, 196, 255 - help.glow, true);
				dwgfx.print(0, 88, "the secret laboratory?", 196, 196, 255 - help.glow, true);		
				//dwgfx.print(80-16, 130, "[ NO, KEEP PLAYING ]", 196, 196, 255 - help.glow);
				//dwgfx.print(80 + 32, 142, "yes, return",  96, 96, 96);		
				if(help.slowsine%8>4){
					dwgfx.drawmobilebutton(game, 160 + 4 - 24, 110, 8 * 6, dwgfx.b_size, "QUIT", 65, 185, 207);
				}else {
					dwgfx.drawmobilebutton(game, 160 + 4 - 24, 110, 8 * 6, dwgfx.b_size, "QUIT", 65*1.2, 185*1.2, 207*1.2);
				}
			}
	  break;
		case 21:
			if(game.mobilemenu){
				dwgfx.drawmobilebutton(game, 128, 220, 11*8, dwgfx.b_size, "GRAVITRON", 65, 185, 207);
			}else {
				dwgfx.print(128, 220, "[ GRAVITRON ]", 196, 196, 255 - help.glow, true);
			}
	    
	    if (dwgfx.flipmode) {
				dwgfx.print(0, 76, "the secret laboratory?", 196, 196, 255 - help.glow, true);			
				dwgfx.print(0, 88, "Do you want to return to", 196, 196, 255 - help.glow, true);	
				dwgfx.print(80, 142, "no, keep playing", 96, 96, 96);
				dwgfx.print(80 + 32-16, 130, "[ YES, RETURN ]",  196, 196, 255 - help.glow);	
			}else {
				dwgfx.print(0, 76, "Do you want to return to", 196, 196, 255 - help.glow, true);
				dwgfx.print(0, 88, "the secret laboratory?", 196, 196, 255 - help.glow, true);			
				dwgfx.print(80, 130, "no, keep playing", 96, 96, 96);
				dwgfx.print(80 + 32-16, 142, "[ YES, RETURN ]",  196, 196, 255 - help.glow);	
			}
		break;
		case 30:
			if (game.mobilemenu) {
				dwgfx.drawmobilebutton(game, 30 - 8, 220, 56, dwgfx.b_size, "MAP", 32, 92, 104);
				if (game.insecretlab) { dwgfx.drawmobilebutton(game, 103, 220, 56, dwgfx.b_size, "GRAV", 32, 92, 104);
				}else if (obj.flags[67] == 1 && !map.custommode) { dwgfx.drawmobilebutton(game, 103, 220, 56, dwgfx.b_size, "SHIP", 32, 92, 104);
				}else{ dwgfx.drawmobilebutton(game, 103, 220, 56, dwgfx.b_size, "CREW", 32, 92, 104);}
				dwgfx.drawmobilebutton(game, 185-4, 220, 56, dwgfx.b_size, "STATS", 32, 92, 104);
				dwgfx.drawmobilebutton(game, 258, 220, 56, dwgfx.b_size, "QUIT", 32, 92, 104);
			}
			
			if (dwgfx.flipmode) {
				dwgfx.drawmobilebutton(game, 160 - (12 * 8)-20, 156, 8 * 8, dwgfx.b_size, "SWIPE", 32, 92, 104);
				dwgfx.drawmobilebutton(game, 160 - (4 * 8), 156, 8 * 8, dwgfx.b_size, "SIDES", 32, 92, 104);
				dwgfx.drawmobilebutton(game, 160 + (4 * 8)+20, 156, 8 * 8, dwgfx.b_size, "D-PAD", 32, 92, 104);
				
				switch(game.controlstyle) {
					case 0:
						dwgfx.print(0, 52, "Current mode: VVVVVV Style", 196, 196, 255 - help.glow, true);
						dwgfx.print(0, 88, "Swipe on the left side to move", 196, 196, 255 - help.glow, true);
						dwgfx.print(0, 76, "Tap on the right side to flip", 196, 196, 255 - help.glow, true);
						dwgfx.drawmobilebutton(game, 160 - (12 * 8)-20, 156, 8 * 8, dwgfx.b_size, "SWIPE", 65, 185, 207);
					break;
					case 1:
						dwgfx.print(0, 52, "Current mode: Super Gravitron Style", 196, 196, 255 - help.glow, true);
						dwgfx.print(0, 88, "Touch the left or right edges to move", 196, 196, 255 - help.glow, true);
						dwgfx.print(0, 76, "Touch both edges together to flip", 196, 196, 255 - help.glow, true);
						dwgfx.drawmobilebutton(game, 160 - (4 * 8), 156, 8 * 8, dwgfx.b_size, "SIDES", 65, 185, 207);
					break;
					case 2:
						dwgfx.print(0, 52, "Current mode: Button Style", 196, 196, 255 - help.glow, true);
						dwgfx.print(0, 88, "Use the virtual buttons to move", 196, 196, 255 - help.glow, true);
						dwgfx.print(0, 76, "Tap anywhere else to flip", 196, 196, 255 - help.glow, true);
						dwgfx.drawmobilebutton(game, 160 + (4 * 8)+20, 156, 8 * 8, dwgfx.b_size, "D-PAD", 65, 185, 207);
					break;
				}
			}else {	
				dwgfx.drawmobilebutton(game, 160 - (12 * 8)-20, 156, 8 * 8, dwgfx.b_size, "SWIPE", 32, 92, 104);
				dwgfx.drawmobilebutton(game, 160 - (4 * 8), 156, 8 * 8, dwgfx.b_size, "SIDES", 32, 92, 104);
				dwgfx.drawmobilebutton(game, 160 + (4 * 8)+20, 156, 8 * 8, dwgfx.b_size, "D-PAD", 32, 92, 104);
				/*
				dwgfx.print(25, 189, "SENSITIVITY", 196, 196, 255 - help.glow);
				dwgfx.drawfillrect(200 - 80, 190, 160, 5, 32, 92, 104);
				dwgfx.drawfillrect(200 - 80 + int((155 * 50) / 100) - 1, 190 - 4 - 1, 5 + 2, 5 + 8 + 2, 255, 255, 255);
				dwgfx.drawfillrect(200 - 80 + int((155 * game.controlsensitivity) / 100), 190 - 4, 5, 5 + 8, 65, 185, 207);
				*/
				switch(game.controlstyle) {
					case 0:
						dwgfx.print(0, 52, "Current mode: VVVVVV Style", 196, 196, 255 - help.glow, true);
						dwgfx.print(0, 76, "Swipe on the left side to move", 196, 196, 255 - help.glow, true);
						dwgfx.print(0, 88, "Tap on the right side to flip", 196, 196, 255 - help.glow, true);
						dwgfx.drawmobilebutton(game, 160 - (12 * 8)-20, 156, 8 * 8, dwgfx.b_size, "SWIPE", 65, 185, 207);
					break;
					case 1:
						dwgfx.print(0, 52, "Current mode: Super Gravitron Style", 196, 196, 255 - help.glow, true);
						dwgfx.print(0, 76, "Touch the left or right edges to move", 196, 196, 255 - help.glow, true);
						dwgfx.print(0, 88, "Touch both edges together to flip", 196, 196, 255 - help.glow, true);
						dwgfx.drawmobilebutton(game, 160 - (4 * 8), 156, 8 * 8, dwgfx.b_size, "SIDES", 65, 185, 207);
					break;
					case 2:
						dwgfx.print(0, 52, "Current mode: Button Style", 196, 196, 255 - help.glow, true);
						dwgfx.print(0, 76, "Use the virtual buttons to move", 196, 196, 255 - help.glow, true);
						dwgfx.print(0, 88, "Tap anywhere else to flip", 196, 196, 255 - help.glow, true);
						dwgfx.drawmobilebutton(game, 160 + (4 * 8)+20, 156, 8 * 8, dwgfx.b_size, "D-PAD", 65, 185, 207);
					break;
				}
				
				dwgfx.print(0, 124, "Alternate controls:", 196, 196, 255 - help.glow, true);
			}
	  break;
	}

	dwgfx.drawfade();
	
	if (game.test) {
		dwgfx.print(5, 5, game.teststring, 196, 196, 255, false);
	}

	if (game.flashlight > 0 && !game.noflashingmode) {
		game.flashlight--;
		dwgfx.flashlight();
	}
	
	if (dwgfx.resumegamemode) {
		dwgfx.menuoffset += 25;
		if (map.extrarow) {
			if (dwgfx.menuoffset >= 230) {
				dwgfx.menuoffset = 230;
				//go back to gamemode!
				game.mapheld = true;
				game.gamestate = GAMEMODE;
			}
		}else{
			if (dwgfx.menuoffset >= 240) {
				dwgfx.menuoffset = 240;
				//go back to gamemode!
				game.mapheld = true;
				game.gamestate = GAMEMODE;
			}
		}
		dwgfx.menuoffrender();
	}else if (dwgfx.menuoffset > 0) {
		dwgfx.menuoffset -= 25;
		if (dwgfx.menuoffset < 0) dwgfx.menuoffset = 0;
		dwgfx.menuoffrender();
	}else{
		if (game.screenshake > 0 && !game.noflashingmode) {
			game.screenshake--;
			dwgfx.screenshake();
		}else{
			dwgfx.render();
		}
	}
	
	dwgfx.backbuffer.unlock();
}

public function towerrender(key:KeyPoll, dwgfx:dwgraphicsclass, game:gameclass, map:mapclass,
											  		obj:entityclass, help:helpclass):void {
  
  dwgfx.drawbutton(game, help);
  //Couple of changes for the towermode
	
	dwgfx.backbuffer.lock();
	dwgfx.backbuffer.fillRect(dwgfx.backbuffer.rect, 0x000000);
	
	if (!game.colourblindmode) {
		dwgfx.drawtowerbackground(map);
	  dwgfx.drawtowermap(map);
	}else {
	  dwgfx.drawtowermap_nobackground(map);
	}
	
	if(!game.completestop){
		for (i = 0; i < obj.nentity; i++) {
			//Is this entity on the ground? (needed for jumping)
			if (obj.entities[i].active) {
				if (obj.entities[i].rule == 0 || obj.entities[i].rule >= 6 || obj.entities[i].type == 55) {
					if (obj.entitycollidefloor(map, i)) {obj.entities[i].onground = 2;
					}else {	obj.entities[i].onground--;}
					
					if (obj.entitycollideroof(map, i)) {obj.entities[i].onroof = 2;
					}else { obj.entities[i].onroof--; }				
				}
			}
			
			//Animate the entities
			obj.animateentities(i, game, help);
		}
	}
	
	dwgfx.drawtowerentities(map, obj, help);
	
	dwgfx.drawtowerspikes(map);
	
	
	/*for(i=0; i<obj.nblocks; i++){
    if (obj.blocks[i].active) {
			dwgfx.backbuffer.fillRect(obj.blocks[i].rect, 0xDDDDDD);
    }
  }*/
	dwgfx.cutscenebars();
	
	dwgfx.drawgui(help);	
	if (dwgfx.flipmode) {
		if (game.advancetext) dwgfx.bprint(5, 228, "- Tap screen to advance text -", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true);	
	}else{
	  if (game.advancetext) dwgfx.bprint(5, 5, "- Tap screen to advance text -", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true);	
	}
	
	dwgfx.backbuffer.fillRect(dwgfx.footerrect, 0x000000);
	dwgfx.print(5, 231, map.roomname, 196, 196, 255 - help.glow, true);
	
	//dwgfx.rprint(5, 231, String(game.coins), 255 - help.glow/2, 255 - help.glow/2, 196, true);
	//dwgfx.drawhuetile(311, 230, 48, 1);
	
	if (game.intimetrial && dwgfx.fademode==0) {
		//Draw countdown!
		if (game.timetrialcountdown > 0) {
			if (game.timetrialcountdown < 30) {
				game.resetgameclock();
				if (int(game.timetrialcountdown / 4) % 2 == 0) dwgfx.bigprint( -1, 100, "Go!", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true, 4);
			}else if (game.timetrialcountdown < 60) {
				dwgfx.bigprint( -1, 100, "1", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true, 4);
			}else if (game.timetrialcountdown < 90) {
				dwgfx.bigprint( -1, 100, "2", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true, 4);
			}else if (game.timetrialcountdown < 120) {
				dwgfx.bigprint( -1, 100, "3", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true, 4);
			}
		}else {
			//Draw OSD stuff	
			dwgfx.bprint(6, 18, "TIME :",  255,255,255);
			dwgfx.bprint(6, 30, "DEATH:",  255, 255, 255);
			dwgfx.bprint(6, 42, "SHINY:",  255,255,255);
				
			if(game.timetrialparlost){
			  dwgfx.bprint(56, 18, game.timestring(help),  196, 80, 80);
			}else {
			  dwgfx.bprint(56, 18, game.timestring(help),  196, 196, 196);
			}
			if(game.deathcounts>0){
			  dwgfx.bprint(56, 30, String(game.deathcounts),  196, 80, 80);
			}else {
			  dwgfx.bprint(56, 30, String(game.deathcounts),  196, 196, 196);
			}
			if(game.trinkets<game.timetrialshinytarget){
			  dwgfx.bprint(56, 42, String(game.trinkets) + " of " +String(game.timetrialshinytarget),  196, 80, 80);
			}else {
			  dwgfx.bprint(56, 42, String(game.trinkets) + " of " +String(game.timetrialshinytarget),  196, 196, 196);
			}
			
			if(game.timetrialparlost){
				dwgfx.bprint(195, 214, "PAR TIME:",  80, 80, 80);
				dwgfx.bprint(275, 214, game.partimestring(help),  80, 80, 80);
			}else {
				dwgfx.bprint(195, 214, "PAR TIME:",  255, 255, 255);
				dwgfx.bprint(275, 214, game.partimestring(help),  196, 196, 196);
			}
		}
	}
	
	dwgfx.drawfade();
	
	if (game.test) {
		dwgfx.print(5, 5, game.teststring, 196, 196, 255, false);
	}

	if (game.flashlight > 0 && !game.noflashingmode) {
		game.flashlight--;
		dwgfx.flashlight();
	}
	
	dwgfx.render();
	dwgfx.backbuffer.unlock();
}

public function teleporterrender(key:KeyPoll, dwgfx:dwgraphicsclass, game:gameclass, map:mapclass,
													       obj:entityclass, help:helpclass):void {
	
	dwgfx.drawbutton(game, help);
	dwgfx.backbuffer.lock();
	
	//draw screen alliteration
	//Roomname:
	temp = map.area(game.roomx, game.roomy);
	if (temp < 2 && !map.custommode && dwgfx.fademode==0) {
		if (game.roomx >= 102 && game.roomx <= 104 && game.roomy >= 110 && game.roomy <= 111) {
			dwgfx.print(5, 2, "The Ship", 196, 196, 255 - help.glow, true);
		}else{
	    dwgfx.print(5, 2, "Dimension VVVVVV", 196, 196, 255 - help.glow, true);
		}
	}else {
		dwgfx.print(5, 2, map.roomname, 196, 196, 255 - help.glow, true);
	}
	
	//Background color
	dwgfx.drawfillrect(0, 12, 320, 240, 10, 24, 26);
	
	//draw the map image
	dwgfx.drawpixeltextbox(35, 16, 250, 190, 32,24, 65, 185, 207,4,0);
	dwgfx.drawimage(1, 40, 21, false);
	//black out areas we can't see yet
	for (j = 0; j < 20; j++) {
		for (i = 0; i < 20; i++) {
			if(map.explored[i+(j*20)]==0){
				//dwgfx.drawfillrect(10 + (i * 12), 21 + (j * 9), 12, 9, 16, 16, 16);
				dwgfx.drawimage(2, 40 + (i * 12), 21 + (j * 9), false);
			}
		}
	}
	
	//draw the coordinates //current
	if (game.roomx == 109) {
		//tower!instead of room y, scale map.ypos
		dwgfx.drawrect(40 + ((game.roomx - 100) * 12) + 2, 21  + 2, 12 - 4, 180 - 4, 16, 245 - (help.glow * 2), 245 - (help.glow * 2));		
	}else{
		dwgfx.drawrect(40 + ((game.roomx - 100) * 12) + 2, 21 + ((game.roomy - 100) * 9) + 2, 12 - 4, 9 - 4, 16, 245 - (help.glow * 2), 245 - (help.glow * 2));		
	}
	
	if (game.useteleporter) {
		//Draw the chosen destination coordinate!
		
		//draw the coordinates //destination
		tempx = map.teleporters[game.teleport_to_teleporter].x; 
		tempy = map.teleporters[game.teleport_to_teleporter].y;
		dwgfx.drawrect(40 + (tempx * 12) + 1, 21 + (tempy * 9) + 1, 12 - 2, 9 - 2, 245 - (help.glow * 2), 16, 16);		
		dwgfx.drawrect(40 + (tempx * 12) + 3, 21 + (tempy * 9) + 3, 12 - 6, 9 - 6, 245 - (help.glow * 2), 16, 16);		
	}

	//draw legend details
	for (i = 0; i < map.numteleporters; i++) {
		if (map.showteleporters && map.explored[map.teleporters[i].x + (20 * map.teleporters[i].y)] > 0) {
			temp = 1126 + map.explored[map.teleporters[i].x + (20 * map.teleporters[i].y)];
			if (dwgfx.flipmode) temp += 3;
			dwgfx.drawtile(40 + 3 + (map.teleporters[i].x * 12), 22 + (map.teleporters[i].y * 9), temp);
		}else if(map.showtargets && map.explored[map.teleporters[i].x+(20*map.teleporters[i].y)]==0){
			temp = 1126 + map.explored[map.teleporters[i].x + (20 * map.teleporters[i].y)];
			if (dwgfx.flipmode) temp += 3;
			dwgfx.drawtile(40 + 3 + (map.teleporters[i].x * 12), 22 + (map.teleporters[i].y * 9), temp);
		}
		//dwgfx.drawtile(40+3 + (map.teleporters[i].x * 12), 22 + (map.teleporters[i].y * 9), 1086); //for shiny trinkets, do later
	}
				
			if (map.showtrinkets) {
			  for (i = 0; i < map.numshinytrinkets; i++) {
				  if (obj.collect[i] == 0) {
						temp = 1086;
      			if (dwgfx.flipmode) temp += 3;
						dwgfx.drawtile(40 + 3 + (map.shinytrinkets[i].x * 12), 22 + (map.shinytrinkets[i].y * 9),	temp);
				  }
				}
			}
	
	if (game.useteleporter && ((help.slowsine%16)>8)) {
		//colour in the legend
		temp = 1128;
    if (dwgfx.flipmode) temp += 3;
		dwgfx.drawtile(40 + 3 + (tempx * 12), 22 + (tempy * 9), temp);	
	}
	
	dwgfx.cutscenebars();
	
	
	if (game.useteleporter) {
		//Instructions!
		if (game.mobilemenu) {
			dwgfx.drawmobilebutton(game, 5+10, 220-10, 64, dwgfx.b_size, "LEFT", 65, 185, 207);
			dwgfx.drawmobilebutton(game, 320 - 5 - 64, 220-10, 64, dwgfx.b_size, "RIGHT", 65, 185, 207);
			dwgfx.drawmobilebutton(game, 160 - 40+4, 220, 64+16, dwgfx.b_size, "TELEPORT", 65, 185, 207);
		}else{
			dwgfx.print(5, 210, "Press Left/Right to choose a Teleporter", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true);
			dwgfx.print(5, 225, "Press ENTER to Teleport", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true);
		}
	}
	
	dwgfx.drawgui(help);
	
	if (dwgfx.flipmode) {
		if (game.advancetext) dwgfx.bprint(5, 228, "- Tap screen to advance text -", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true);	
	}else{
	  if (game.advancetext) dwgfx.bprint(5, 5, "- Tap screen to advance text -", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true);	
	}
	
	
	if (game.test) {
		dwgfx.print(5, 5, game.teststring, 196, 196, 255, false);
	}

	if (game.flashlight > 0 && !game.noflashingmode) {
		game.flashlight--;
		dwgfx.flashlight();
	}
	
	if (dwgfx.resumegamemode) {
		dwgfx.menuoffset += 25;
		if (map.extrarow) {
			if (dwgfx.menuoffset >= 230) {
				dwgfx.menuoffset = 230;
				//go back to gamemode!
				game.mapheld = true;
				game.gamestate = GAMEMODE;
			}
		}else{
			if (dwgfx.menuoffset >= 240) {
				dwgfx.menuoffset = 240;
				//go back to gamemode!
				game.mapheld = true;
				game.gamestate = GAMEMODE;
			}
		}
		dwgfx.menuoffrender();
	}else if (dwgfx.menuoffset > 0) {
		dwgfx.menuoffset -= 25;
		if (dwgfx.menuoffset < 0) dwgfx.menuoffset = 0;
		dwgfx.menuoffrender();
	}else{
		if (game.screenshake > 0 && !game.noflashingmode) {
			game.screenshake--;
			dwgfx.screenshake();
		}else{
			dwgfx.render();
		}
	}
	
	dwgfx.backbuffer.unlock();
}

public function controltutorialrender(key:KeyPoll, dwgfx:dwgraphicsclass, game:gameclass, map:mapclass,
													       obj:entityclass, help:helpclass):void {
	
	dwgfx.drawbutton(game, help);
	dwgfx.backbuffer.lock();
	
	//Background color
	dwgfx.drawfillrect(0, 0, 320, 240, 10, 24, 26);
	
	for (i = 0; i < obj.nentity; i++) {
		//Is this entity on the ground? (needed for jumping)
		if (obj.entities[i].active) {
			if (obj.entities[i].rule == 0 || obj.entities[i].rule >= 6 || obj.entities[i].type == 55) {
				if (obj.entitycollidefloor(map, i)) {obj.entities[i].onground = 2;
				}else {	obj.entities[i].onground--;}
				
				if (obj.entitycollideroof(map, i)) {obj.entities[i].onroof = 2;
				}else { obj.entities[i].onroof--; }				
			}
		}
		
		//Animate the entities
		obj.animateentities(i, game, help);
	}
	
	dwgfx.drawentities(map, obj, help);
	
	dwgfx.drawtextbox(160-120, 2, 30, 3, 174, 174, 174);
	dwgfx.print(5, 10, "-= TOUCHSCREEN CONTROLS =-", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true);
	
	if(game.controltutorialstate>=3 &&game.controltutorialstate<=6){	
		dwgfx.print(5, 195, "Swipe and hold on the left side", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true);
		dwgfx.print(5, 205, "of the screen to move", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true);
	}
	
	if(game.controltutorialstate>=7 &&game.controltutorialstate<=11){	
	  dwgfx.print(5, 200, "Tap on the right to flip", 220 - (help.glow), 220 - (help.glow), 255 - (help.glow / 2), true);
	}
	
	if (game.controltutorialstate >= 13) {
		if(help.slowsine%8>4){
			dwgfx.drawmobilebutton(game, 160 + 4 - 24, 210, 8 * 7, dwgfx.b_size, "START", 65, 185, 207);
		}else {
			dwgfx.drawmobilebutton(game, 160 + 4 - 24, 210, 8 * 7, dwgfx.b_size, "START", 65*1.2, 185*1.2, 207*1.2);
		}
	}
	
	dwgfx.drawmobileimage(0, 0, 70 + ((100 - game.controllerp1) * 3), true);
	
	//Draw touchpoints
	if(!game.press_left && !game.press_right){
		//- 1 Left hand off
		dwgfx.drawmobilehands(1, 56, 106 + ((100 - game.controllerp1) * 3));
	}else if(game.press_left){		
		//- 2 Left hand moving left
		if (game.controllerp3 <= 8) {
			if(help.slowsine%16>8){ dwgfx.drawrect(116, 120, 16, 16, 255, 255, 255);
			}else {	dwgfx.drawrect(116+2, 120+2, 16-4, 16-4, 255, 255, 255); }
			dwgfx.drawmobilehands(3, 56, 106);
			dwgfx.drawmobileimage(7, 136, 120);
		}else{
			if(help.slowsine%16>8){ dwgfx.drawrect(104, 118, 16, 16, 255, 255, 255);
			}else {	dwgfx.drawrect(104+2, 118+2, 16-4, 16-4, 255, 255, 255); }
			dwgfx.drawmobilehands(2, 56, 106);
			dwgfx.drawmobileimage(7, 124, 120);
		}
	}else if(game.press_right){
		//- 3 Left hand moving right
		if (game.controllerp3 <= 8) {
			if(help.slowsine%16>8){ dwgfx.drawrect(104, 118, 16, 16, 255, 255, 255);
			}else {	dwgfx.drawrect(104+2, 118+2, 16-4, 16-4, 255, 255, 255); }
			dwgfx.drawmobilehands(2, 56, 106);
			dwgfx.drawmobileimage(8, 84, 120);
		}else{
			if(help.slowsine%16>8){ dwgfx.drawrect(116, 120, 16, 16, 255, 255, 255);
			}else {	dwgfx.drawrect(116+2, 120+2, 16-4, 16-4, 255, 255, 255); }
			dwgfx.drawmobilehands(3, 56, 106);
			dwgfx.drawmobileimage(8, 96, 120);
		}
	}
	
	if(game.controltutorialstate>=7){	
		if (game.controllerp2 > 0) {
			if(help.slowsine%16>8){ dwgfx.drawrect(188, 120, 16, 16, 255, 255, 255);
			}else {	dwgfx.drawrect(188+2, 120+2, 16-4, 16-4, 255, 255, 255); }
			dwgfx.drawmobilehands(6, 193, 106);	
		}else{
			dwgfx.drawmobilehands(4, 193, 106 + ((100 - game.controllerp1) * 3));
		}
	}
	
	if (game.test) {
		dwgfx.print(5, 5, game.teststring, 196, 196, 255, false);
	}

	if (game.flashlight > 0 && !game.noflashingmode) {
		game.flashlight--;
		dwgfx.flashlight();
	}
	
	if (game.screenshake > 0 && !game.noflashingmode) {
		game.screenshake--;
		dwgfx.screenshake();
	}else{
		dwgfx.render();
	}
	
	dwgfx.backbuffer.unlock();
}
