Code archives/Graphics/Color ASCII routines

This code has been declared by its author to be Public Domain code.

Download source code

Color ASCII routines by Black3D2012
(Example code in comments below)

An include I've been using for some small side projects. It's set up for OpenGL (in order to use FastRects), although this could be changed by replacing the FastRect calls in text_refresh() and text_drawcursor() with a DrawRect command, or replacing the FastRect code with DX equivalents. It's never really been cleaned up or optimized because it was just for me, but anyone is welcome to take and do whatever they like with it now.

Works with scale rather than virtual resolution in order to provide consistency for other modules. It does NOT set the scale automatically, to allow more flexibility. Either 1) use a pure multiple of the "ASCII" resolution (eg, 1280x800, scale 2,2 for 640x400 ascii), 2) set an aribitrary resolution, apply an integer scale and use text_offset to position it within the resolution, or 3) use text_autoinit() to fill your chosen resolution and scale with a given character set.

ASCII is stored in an array and drawn with the text_Refresh() command, which must be inside your rendering loop. This behavior lets it act more like a ASCII/ANSI screen and less like a GL one. ;) It also allows us to retrieve text from the screen once it's been drawn.

Colors are all referred to in the 0-15 ANSI color range, using VGA color values. nb: I should mention, the character sets are equivalent of US codepage 437. If you want to change any of the characters, you can do so after initializing the text. The ASCII is by that stage stored in a (character width x character height *256) image (text_image), so just go to the appropriate location and change the pixels.

Functions:

text_init (mode = 1, bc = 0, mouse = 0)
Sets up the ASCII drawing for one of the preset modes
"mode" determines the preset.
1 = VGA 640x400, 80x25 ASCII (8x16 characters)
2 = VGA 640x400, 80x50 ASCII (8x8 characters)
3 = CGA 320x200, 40x25 ASCII (8x8 characters)
4 = CGA 320x200, 40x25 ASCII thin font (8x8 characters)
5 = EGA 640x350, 80x25 ASCII (8x14 characters)
Calling a mode outside this range (eg, 0) lets you customize the ASCII mode, but you must have previously set the values for text_width (columns), text_height (rows), text_charw (character width), text_charh (character height), text_typeset (font to use - see text_LoadFont)
"bc" - pre-set a background color
"mouse" - enable mouse (saves calling the mouse function if you want it on from the start)

text_AutoInit (mode = 1, bc = 0, mouse = 0)
Sets up ASCII to fill screen with chosen character set
"mode" - fonts as in text_Init, but not set to specific screen size
"bc" - pre-set a background color
"mouse" - enable mouse

text_ShowMouse
Enables the ASCII cursor drawing, off by default

text_HideMouse
Disables the ASCII cursor drawing

text_CLS (bc = 0)
Clears the screen with the chosen background color
"bc" - background color

text_Refresh
Draws all ASCII on the screen

text (text$, x, y, fc = 7, bc = -1, blink = 0)
Adds text to the ASCII screen
"text$" - The text you want to draw.
"x,y" - ASCII coordinates (0,0 is topleft)
"fc" - foreground color of text
"bc" - background color of text. A value of -1 (default) uses the current background color in that location
"blink" - make this BLINKING text. 1 for true.
NOTE: There is some commented code in the text() function. As noted in the code, uncomment the code to enable in-line foreground color changing. This uses "^" as an identifier then 0-9 and q-y for the 16 colors. "^^" is necessary to draw a single "^" (eg, overrides the in-line color changing, if this code is enabled)

text_GetColor (c)
Possibly a mis-named function. ;) Sets the current drawing color to the provided ANSI color. This is really an internal function like some others which I haven't included, but in case you want to use the color for drawing or something. ^^
"c" - color (0-15)

textStr (t$, c)
Return a repeated string, equivalent of basic String$ command
"t$" = string to repeat
"c" = number of repeats

text_GetString (x, y, l = 1)
Returns a string of text from the screen
"x,y" - Starting ASCII coords
"l" - Length of string to grab

text_GetFC (x, y)
Returns foreground color of a single block
"x,y" - Coords

text_GetBC (x, y)
Returns background color of a single block
"x,y" - Coords

text_GetBlink (x, y)
Returns blink status of a single block
"x,y" - Coords

text_Offset (x,y)
Offsets drawing by the supplied coords
"x,y" - Coords

text_MouseX
Returns ASCII Mouse X location

text_MouseY
Returns ASCII Mouse Y location

text_DrawBox (x, y, w, h, fc, bc, strong = 0, shadow = 0, direction = 1, tc = 0)
Draws a simple ASCII box, with optional shadowing
"x,y,fc,bc" - Obvious ;)
"w,h" - ASCII dimensions of the box
"strong" - true for DOUBLE lines, false for SINGLE
"shadow" - enable shadow drawing
"direction" - (1-8) 1=SW 2=S 3=SE 4=E 5=NE 6=N 7=NW 8=W
"tc" - "color" shadows (text in shadow is colored accordingly if originally bright enough)

text_ReverseColor (c)
Gives the appropriate "inverted" text color for the one provided, useful for selections, cursor, depressed buttons, etc. See text_DrawCursor() for the command in action
"c" - color (0-15)
Global text_font:TImage
Global text_r:Int
Global text_g:Int
Global text_b:Int
Global text_width:Int
Global text_height:Int
Global text_charw:Int
Global text_charh:Int
Global text_typeset:Int				'1=8x16 font, 2=8x8 font, 3=8x8 thin font, 4=12x12 font, 5=8x14 font
Global text_array:Int[240, 150, 4]	'0=asc,1=fc,2=bc,3=blink
Global text_blink:Int = MilliSecs()
Global text_mouse:Int				'use text mouse cursor, 1=on, 0=off
Global text_scalex:Float
Global text_scaley:Float
Global text_xoffset:Int
Global text_yoffset:Int

Function Text_Init(mode:Int = 1, bc:Int = 0, mouse:Int = 0)
	If text_width = 0 And (mode < 1 Or mode > 5) Then mode = 1
	Select mode
		Case 1	'vga, 640x400
			text_width = 80; text_height = 25; text_charw = 8; text_charh = 16; text_typeset = 1
		Case 2	'vga50, 640x400
			text_width = 80; text_height = 50; text_charw = 8; text_charh = 8; text_typeset = 2
		Case 3	'cga, 320x200
			text_width = 40; text_height = 25; text_charw = 8; text_charh = 8; text_typeset = 2
		Case 4	'cga thin, 320x200
			text_width = 40; text_height = 25; text_charw = 8; text_charh = 8; text_typeset = 3
		Case 5	'ega, 640x350
			text_width = 80; text_height = 25; text_charw = 8; text_charh = 14; text_typeset = 5
		Default
			'If using custom values, set mode to 0 (or 6, etc)
	End Select
	Text_LoadFont()
	GetScale (text_scalex, text_scaley)
	bc = Text_Sanitize(bc)
	Text_CLS(bc)
	If mouse = 1 Then Text_ShowMouse() Else Text_HideMouse()
End Function

Function Text_AutoInit(mode:Int = 1, bc:Int = 0, mouse:Int = 0)
	If mode < 1 Or mode > 5 Then mode = 1
	Select mode
		Case 1;text_charw = 8; text_charh = 16; text_typeset = 1
		Case 2;text_charw = 8; text_charh = 8; text_typeset = 2
		Case 3;text_charw = 8; text_charh = 8; text_typeset = 2
		Case 4;text_charw = 8; text_charh = 8; text_typeset = 3
		Case 5;text_charw = 8; text_charh = 14; text_typeset = 5
	End Select
	GetScale (text_scalex, text_scaley)
	text_width = Floor(GraphicsWidth() / (text_charw * text_scalex))
	text_height = Floor(GraphicsHeight() / (text_charh * text_scaley))
	text_xoffset = (GraphicsWidth() - (text_width * (text_charw * text_scalex))) / (2 * text_scalex)
	text_yoffset = (GraphicsHeight() - (text_height * (text_charh * text_scaley))) / (2 * text_scaley)
	Text_LoadFont()
	bc = Text_Sanitize(bc)
	Text_CLS(bc)
	If mouse = 1 Then Text_ShowMouse() Else Text_HideMouse()
End Function

Function Text_ShowMouse()
	text_mouse = 1
	HideMouse()
End Function

Function Text_HideMouse()
	text_mouse = 0
	ShowMouse()
End Function

Function Text_CLS(bc:Int = 0)
	bc = Text_Sanitize(bc)
	text_GetColor bc
	Local x:Int, y:Int
	For x = 0 To text_width - 1
		For y = 0 To text_height - 1
			text_array:Int[x, y, 0] = 32
			text_array:Int[x, y, 1] = 7
			text_array:Int[x, y, 2] = bc
			text_array:Int[x, y, 3] = 0
		Next
	Next
End Function

Function Text_Refresh()
	Local x:Int, y:Int
	'Draw Backgrounds first using GL_QUADS for speed
	'(drawrect reduced performance by around 1500%)
	Begin2D(GL_QUADS)
	For x = 0 To text_width - 1
		For y = 0 To text_height - 1
			Text_GetColor text_array:Int[x, y, 2]
			FastRect ((x * text_charw) + text_xoffset) * text_scalex, ((y * text_charh) + text_yoffset) * text_scaley, text_charw * text_scalex, text_charh * text_scaley
		Next
	Next
	End2D
	'Draw Text
	For x = 0 To text_width - 1
		For y = 0 To text_height - 1
			Text_GetColor text_array:Int[x, y, 1]
			If text_array:Int[x, y, 3] = 1 Then		'Blinking Text
				If MilliSecs() - text_blink < 500 Then
					DrawSubImageRect text_font, ((x * text_charw) + text_xoffset) * text_scalex, ((y * text_charh) + text_yoffset) * text_scaley, text_charw, text_charh, 0, text_array:Int[x, y, 0] * text_charh, text_charw, text_charh
					Else
					If MilliSecs() - text_blink > 1000 Then text_blink = MilliSecs()
				End If
				Else		'Non-Blinking Text
				DrawSubImageRect text_font, ((x * text_charw) + text_xoffset) * text_scalex, ((y * text_charh) + text_yoffset) * text_scaley, text_charw, text_charh, 0, text_array:Int[x, y, 0] * text_charh, text_charw, text_charh
			End If
		Next
	Next
	If text_mouse = 1 Then Text_DrawCursor()
End Function

Function Text_Sanitize:Int(c:Int)
	If c < 0 Then c = 0
	If c > 15 Then c = 15
	Return c
End Function
	
Function Text(t:String, x:Int, y:Int, fc:Int = 7, bc:Int = -1, blink:Int = 0)
	bc = Text_Sanitize(bc)
	fc = Text_Sanitize(fc)
	Local lessx:Int
	Local i:Int
	For i = 1 To Len(t)
		If (x + (i - 1) < text_width) And (x + (i) > 0) And (y > - 1) And (y < text_height) Then
			'Uncomment the next line and following 38 lines in order to enable in-line coloring
'			If Asc(Mid(t, i, 1)) <> 94 Then
				text_array:Int[x + (i - 1) + lessx, y, 0] = Asc(Mid(t, i, 1))
				text_array:Int[x + (i - 1) + lessx, y, 1] = fc
'				Else
'				If i < Len(t) Then
'					If Asc(Mid(t, i + 1, 1)) = 94 Then
'						text_array:Int[x + (i - 1) + lessx, y, 0] = Asc(Mid(t, i, 1))
'						text_array:Int[x + (i - 1) + lessx, y, 1] = fc
'						i = i + 1;lessx:-1
'						Else
'						Select Asc(Mid(t, i + 1, 1))
'							Case 48;fc = 0		'0
'							Case 49;fc = 1		'1
'							Case 50;fc = 2		'2
'							Case 51;fc = 3		'3
'							Case 52;fc = 4		'4
'							Case 53;fc = 5		'5
'							Case 54;fc = 6		'6
'							Case 55;fc = 7		'7
'							Case 56;fc = 8		'8
'							Case 57;fc = 9		'9
'							Case 81;fc = 10		'q
'							Case 87;fc = 11		'w
'							Case 69;fc = 12		'e
'							Case 82;fc = 13		'r
'							Case 84;fc = 14		't
'							Case 89;fc = 15		'y
'							Case 113;fc = 10	'Q
'							Case 119;fc = 11	'W
'							Case 101;fc = 12	'E
'							Case 114;fc = 13	'R
'							Case 116;fc = 14	'T
'							Case 121;fc = 15	'Y
'							Default
'						End Select
'						i = i + 1;lessx:-2
'					End If
'					Else
'					text_array:Int[x + (i - 1) + lessx, y, 0] = Asc(Mid(t, i, 1))
'					text_array:Int[x + (i - 1) + lessx, y, 1] = fc
'				End If
'			End If
			If bc > (-1) Then text_array:Int[x + (i - 1) + lessx, y, 2] = bc
			If blink Then
				text_array:Int[x + (i - 1) + lessx, y, 3] = 1
				Else
				text_array:Int[x + (i - 1) + lessx, y, 3] = 0
			End If
		End If
	Next
End Function

Function Text_DrawCursor()
	Local x:Int, y:Int
	x = MouseX() / (text_charw * text_scalex)
	y = MouseY() / (text_charh * text_scaley)
	If y > text_height - 1 Then y = text_height - 1
	If y < 0 Then y = 0
	If x > text_width - 1 Then x = text_width - 1
	If x < 0 Then x = 0
	Begin2D(GL_QUADS)
	text_GetColor text_reversecolor:Int(text_array:Int[x, y, 2])
	FastRect ((x * text_charw) + text_xoffset) * text_scalex, ((y * text_charh) + text_yoffset) * text_scaley, text_charw * text_scalex, text_charh * text_scaley
	End2D
	text_GetColor text_reversecolor:Int(text_array:Int[x, y, 1])
	If text_array:Int[x, y, 3] = 1 Then
		If MilliSecs() - text_blink < 500 Then
			DrawSubImageRect text_font, ((x * text_charw) + text_xoffset) * text_scalex, ((y * text_charh) + text_yoffset) * text_scaley, text_charw, text_charh, 0, text_array:Int[x, y, 0] * text_charh, text_charw, text_charh
			Else
			If MilliSecs() - text_blink > 1000 Then text_blink = MilliSecs()
		End If
		Else
		DrawSubImageRect text_font, ((x * text_charw) + text_xoffset) * text_scalex, ((y * text_charh) + text_yoffset) * text_scaley, text_charw, text_charh, 0, text_array:Int[x, y, 0] * text_charh, text_charw, text_charh
	End If
End Function

Function Text_ReverseColor:Int(c:Int)
	c = 15 - c
	Return c
End Function

Function Text_GetColor(c:Int)
	c = Text_Sanitize(c)
	Select c
		Case 0;text_r = 001;text_g = 001;text_b = 001
		Case 1;text_r = 000;text_g = 000;text_b = 170
		Case 2;text_r = 000;text_g = 170;text_b = 000
		Case 3;text_r = 000;text_g = 170;text_b = 170
		Case 4;text_r = 170;text_g = 000;text_b = 000
		Case 5;text_r = 170;text_g = 000;text_b = 170
		Case 6;text_r = 170;text_g = 085;text_b = 000
		Case 7;text_r = 170;text_g = 170;text_b = 170
		Case 8;text_r = 085;text_g = 085;text_b = 085
		Case 9;text_r = 085;text_g = 085;text_b = 255
		Case 10;text_r = 085;text_g = 255;text_b = 085
		Case 11;text_r = 085;text_g = 255;text_b = 255
		Case 12;text_r = 255;text_g = 085;text_b = 085
		Case 13;text_r = 255;text_g = 085;text_b = 255
		Case 14;text_r = 255;text_g = 255;text_b = 085
		Case 15;text_r = 255;text_g = 255;text_b = 255
		Case 16;text_r = 000;text_g = 000;text_b = 000
	End Select
	SetColor text_r, text_g, text_b
End Function

Function TextStr:String(t:String, c:Int)
	Local i:Int, a:String
	For i = 1 To c
		a = a + t
	Next
	Return a
End Function

Function Text_GetString:String(x:Int, y:Int, l:Int = 1)
	Local i:Int, a:String
	For i = x To x + (l - 1)
		If i > text_width - 1 Exit
		If y > text_height - 1 Exit
		If i < 0 Then Exit
		If y < 0 Then Exit
		a = a + Chr:String(text_array[i, y, 0])
	Next
	Return a
End Function

Function Text_GetFC:Int(x:Int, y:Int)
	Return text_array[x, y, 1]
	End Function

Function Text_GetBC:Int(x:Int, y:Int)
	Return text_array[x, y, 2]
End Function

Function Text_GetBlink:Int(x:Int, y:Int)
	Return text_array[x, y, 3]
End Function

Function text_offset(x:Int, y:Int)
	text_xoffset = x
	text_yoffset = y
End Function

Function Text_MouseX:Int()
	Local i:Int = MouseX() / (text_charw * text_scalex)
	If i < 0 Then i = 0
	If i > text_width - 1 Then i = text_width - 1
	Return i
End Function

Function Text_MouseY:Int()
	Local i:Int = MouseY() / (text_charh * text_scaley)
	If i < 0 Then i = 0
	If i > text_height - 1 Then i = text_height - 1
	Return i
End Function

Function text_DrawBox(x:Int, y:Int, w:Int, h:Int, fc:Int, bc:Int, strong:Int = 0, shadow:Int = 0, direction:Int = 1, tc:Int = 0)
	Local i:Int, m:Int
	Local sx:Int = x, sy:Int = y
	Local stext:String, sc:Int
	If shadow = 1 Then
		Select direction
			Case 1;sx:-1;sy:+1
			Case 2;sy:+1
			Case 3;sx:+1;sy:+1
			Case 4;sx:+1
			Case 5;sx:+1;sy:-1
			Case 6;sy:-1
			Case 7;sx:-1;sy:-1
			Case 8;sx:-1
		End Select
		For i = sx To sx + w - 1
			For m = sy To sy + h - 1
				stext:String = Text_GetString(i, m)
				If tc = 1 Then
					sc = Text_GetFC(i, m)
					If sc < 9 Then sc = 8 Else sc = sc - 8
					Else
					sc = 8
				End If
				Text (stext, i, m, sc, 0, Text_GetBlink(i, m))
			Next
		Next
	End If
	If strong = 1 Then
		Text "É" + textstr("Í", w - 2) + "»", x, y, fc, bc
		Text "È" + textstr("Í", w - 2) + "¼", x, y + (h - 1), fc, bc
		For i = y + 1 To y + (h - 2)
			Text "º" + textstr(" ", w - 2) + "º", x, i, fc, bc
		Next
		Else
		Text "Ú" + textstr("Ä", w - 2) + "¿", x, y, fc, bc
		Text "À" + textstr("Ä", w - 2) + "Ù", x, y + (h - 1), fc, bc
		For i = y + 1 To y + (h - 2)
			Text "³" + textstr(" ", w - 2) + "³", x, i, fc, bc
		Next
	End If
End Function

Function Text_LoadFont()
	text_font:TImage = CreateImage(text_charw, text_charh * 255,, 0)
	Local y:Int, d:Int, x:Int
	Local temp:TPixmap
	If text_typeset = 1 Then RestoreData font8x16
	If text_typeset = 2 Then RestoreData font8x8
	If text_typeset = 3 Then RestoreData font8x8thin
	'If text_typeset = 4 Then RestoreData font12x12
	If text_typeset = 5 Then RestoreData font8x14
	temp = LockImage(text_font)
	While y < (text_charh * 255)
		ReadData d
		x = text_charw - 1
		While d <> 0
			If (d Mod 2) Then WritePixel(temp, x, y, -1) Else WritePixel(temp, x, y, 16777215)
			d = d / 2
			x = x - 1
		Wend
		y = y + 1
	Wend
	UnlockImage text_font
	temp = Null
End Function

Function FastRect(x:Float, y:Float, w:Int, h:Int)
	glVertex2f x,y ; glVertex2f x+w,y
	glVertex2f x+w,y+h ; glVertex2f x,y+h
End Function

Function Begin2D(mode:Int)
	glDisable GL_TEXTURE_2D ; glBegin mode
End Function

Function End2D()
	glEnd ; glEnable GL_TEXTURE_2D	
End Function

#font8x16
DefData 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 126, 129, 165, 129, 129, 189, 153, 129, 129, 126, 0, 0, 0, 0
defdata 0, 0, 126, 255, 219, 255, 255, 195, 231, 255, 255, 126, 0, 0, 0, 0
defdata 0, 0, 0, 0, 108, 254, 254, 254, 254, 124, 56, 16, 0, 0, 0, 0
defdata 0, 0, 0, 0, 16, 56, 124, 254, 124, 56, 16, 0, 0, 0, 0, 0
defdata 0, 0, 0, 24, 60, 60, 231, 231, 231, 24, 24, 60, 0, 0, 0, 0
defdata 0, 0, 0, 24, 60, 126, 255, 255, 126, 24, 24, 60, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 24, 60, 60, 24, 0, 0, 0, 0, 0, 0
defdata 255, 255, 255, 255, 255, 255, 231, 195, 195, 231, 255, 255, 255, 255, 255, 255
defdata 0, 0, 0, 0, 0, 60, 102, 66, 66, 102, 60, 0, 0, 0, 0, 0
defdata 255, 255, 255, 255, 255, 195, 153, 189, 189, 153, 195, 255, 255, 255, 255, 255
defdata 0, 0, 30, 14, 26, 50, 120, 204, 204, 204, 204, 120, 0, 0, 0, 0
defdata 0, 0, 60, 102, 102, 102, 102, 60, 24, 126, 24, 24, 0, 0, 0, 0
defdata 0, 0, 63, 51, 63, 48, 48, 48, 48, 112, 240, 224, 0, 0, 0, 0
defdata 0, 0, 127, 99, 127, 99, 99, 99, 99, 103, 231, 230, 192, 0, 0, 0
defdata 0, 0, 0, 24, 24, 219, 60, 231, 60, 219, 24, 24, 0, 0, 0, 0
defdata 0, 128, 192, 224, 240, 248, 254, 248, 240, 224, 192, 128, 0, 0, 0, 0
defdata 0, 2, 6, 14, 30, 62, 254, 62, 30, 14, 6, 2, 0, 0, 0, 0
defdata 0, 0, 24, 60, 126, 24, 24, 24, 126, 60, 24, 0, 0, 0, 0, 0
defdata 0, 0, 102, 102, 102, 102, 102, 102, 102, 0, 102, 102, 0, 0, 0, 0
defdata 0, 0, 127, 219, 219, 219, 123, 27, 27, 27, 27, 27, 0, 0, 0, 0
defdata 0, 124, 198, 96, 56, 108, 198, 198, 108, 56, 12, 198, 124, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 0, 254, 254, 254, 254, 0, 0, 0, 0
defdata 0, 0, 24, 60, 126, 24, 24, 24, 126, 60, 24, 126, 0, 0, 0, 0
defdata 0, 0, 24, 60, 126, 24, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0
defdata 0, 0, 24, 24, 24, 24, 24, 24, 24, 126, 60, 24, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 24, 12, 254, 12, 24, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 48, 96, 254, 96, 48, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 192, 192, 192, 254, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 40, 108, 254, 108, 40, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 16, 56, 56, 124, 124, 254, 254, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 254, 254, 124, 124, 56, 56, 16, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 24, 60, 60, 60, 24, 24, 24, 0, 24, 24, 0, 0, 0, 0
defdata 0, 102, 102, 102, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 108, 108, 254, 108, 108, 108, 254, 108, 108, 0, 0, 0, 0
defdata 24, 24, 124, 198, 194, 192, 124, 6, 6, 134, 198, 124, 24, 24, 0, 0
defdata 0, 0, 0, 0, 194, 198, 12, 24, 48, 96, 198, 134, 0, 0, 0, 0
defdata 0, 0, 56, 108, 108, 56, 118, 220, 204, 204, 204, 118, 0, 0, 0, 0
defdata 0, 48, 48, 48, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 12, 24, 48, 48, 48, 48, 48, 48, 24, 12, 0, 0, 0, 0
defdata 0, 0, 48, 24, 12, 12, 12, 12, 12, 12, 24, 48, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 102, 60, 255, 60, 102, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 24, 24, 126, 24, 24, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 48, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 254, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 0, 0
defdata 0, 0, 0, 0, 2, 6, 12, 24, 48, 96, 192, 128, 0, 0, 0, 0
defdata 0, 0, 56, 108, 198, 198, 214, 214, 198, 198, 108, 56, 0, 0, 0, 0
defdata 0, 0, 24, 56, 120, 24, 24, 24, 24, 24, 24, 126, 0, 0, 0, 0
defdata 0, 0, 124, 198, 6, 12, 24, 48, 96, 192, 198, 254, 0, 0, 0, 0
defdata 0, 0, 124, 198, 6, 6, 60, 6, 6, 6, 198, 124, 0, 0, 0, 0
defdata 0, 0, 12, 28, 60, 108, 204, 254, 12, 12, 12, 30, 0, 0, 0, 0
defdata 0, 0, 254, 192, 192, 192, 252, 6, 6, 6, 198, 124, 0, 0, 0, 0
defdata 0, 0, 56, 96, 192, 192, 252, 198, 198, 198, 198, 124, 0, 0, 0, 0
defdata 0, 0, 254, 198, 6, 6, 12, 24, 48, 48, 48, 48, 0, 0, 0, 0
defdata 0, 0, 124, 198, 198, 198, 124, 198, 198, 198, 198, 124, 0, 0, 0, 0
defdata 0, 0, 124, 198, 198, 198, 126, 6, 6, 6, 12, 120, 0, 0, 0, 0
defdata 0, 0, 0, 0, 24, 24, 0, 0, 0, 24, 24, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 24, 24, 0, 0, 0, 24, 24, 48, 0, 0, 0, 0
defdata 0, 0, 0, 6, 12, 24, 48, 96, 48, 24, 12, 6, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 126, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 96, 48, 24, 12, 6, 12, 24, 48, 96, 0, 0, 0, 0
defdata 0, 0, 124, 198, 198, 12, 24, 24, 24, 0, 24, 24, 0, 0, 0, 0
defdata 0, 0, 0, 124, 198, 198, 222, 222, 222, 220, 192, 124, 0, 0, 0, 0
defdata 0, 0, 16, 56, 108, 198, 198, 254, 198, 198, 198, 198, 0, 0, 0, 0
defdata 0, 0, 252, 102, 102, 102, 124, 102, 102, 102, 102, 252, 0, 0, 0, 0
defdata 0, 0, 60, 102, 194, 192, 192, 192, 192, 194, 102, 60, 0, 0, 0, 0
defdata 0, 0, 248, 108, 102, 102, 102, 102, 102, 102, 108, 248, 0, 0, 0, 0
defdata 0, 0, 254, 102, 98, 104, 120, 104, 96, 98, 102, 254, 0, 0, 0, 0
defdata 0, 0, 254, 102, 98, 104, 120, 104, 96, 96, 96, 240, 0, 0, 0, 0
defdata 0, 0, 60, 102, 194, 192, 192, 222, 198, 198, 102, 58, 0, 0, 0, 0
defdata 0, 0, 198, 198, 198, 198, 254, 198, 198, 198, 198, 198, 0, 0, 0, 0
defdata 0, 0, 60, 24, 24, 24, 24, 24, 24, 24, 24, 60, 0, 0, 0, 0
defdata 0, 0, 30, 12, 12, 12, 12, 12, 204, 204, 204, 120, 0, 0, 0, 0
defdata 0, 0, 230, 102, 102, 108, 120, 120, 108, 102, 102, 230, 0, 0, 0, 0
defdata 0, 0, 240, 96, 96, 96, 96, 96, 96, 98, 102, 254, 0, 0, 0, 0
defdata 0, 0, 198, 238, 254, 254, 214, 198, 198, 198, 198, 198, 0, 0, 0, 0
defdata 0, 0, 198, 230, 246, 254, 222, 206, 198, 198, 198, 198, 0, 0, 0, 0
defdata 0, 0, 124, 198, 198, 198, 198, 198, 198, 198, 198, 124, 0, 0, 0, 0
defdata 0, 0, 252, 102, 102, 102, 124, 96, 96, 96, 96, 240, 0, 0, 0, 0
defdata 0, 0, 124, 198, 198, 198, 198, 198, 198, 214, 222, 124, 12, 14, 0, 0
defdata 0, 0, 252, 102, 102, 102, 124, 108, 102, 102, 102, 230, 0, 0, 0, 0
defdata 0, 0, 124, 198, 198, 96, 56, 12, 6, 198, 198, 124, 0, 0, 0, 0
defdata 0, 0, 126, 126, 90, 24, 24, 24, 24, 24, 24, 60, 0, 0, 0, 0
defdata 0, 0, 198, 198, 198, 198, 198, 198, 198, 198, 198, 124, 0, 0, 0, 0
defdata 0, 0, 198, 198, 198, 198, 198, 198, 198, 108, 56, 16, 0, 0, 0, 0
defdata 0, 0, 198, 198, 198, 198, 214, 214, 214, 254, 238, 108, 0, 0, 0, 0
defdata 0, 0, 198, 198, 108, 124, 56, 56, 124, 108, 198, 198, 0, 0, 0, 0
defdata 0, 0, 102, 102, 102, 102, 60, 24, 24, 24, 24, 60, 0, 0, 0, 0
defdata 0, 0, 254, 198, 134, 12, 24, 48, 96, 194, 198, 254, 0, 0, 0, 0
defdata 0, 0, 60, 48, 48, 48, 48, 48, 48, 48, 48, 60, 0, 0, 0, 0
defdata 0, 0, 0, 128, 192, 224, 112, 56, 28, 14, 6, 2, 0, 0, 0, 0
defdata 0, 0, 60, 12, 12, 12, 12, 12, 12, 12, 12, 60, 0, 0, 0, 0
defdata 16, 56, 108, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0
defdata 48, 48, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 120, 12, 124, 204, 204, 204, 118, 0, 0, 0, 0
defdata 0, 0, 224, 96, 96, 120, 108, 102, 102, 102, 102, 124, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 124, 198, 192, 192, 192, 198, 124, 0, 0, 0, 0
defdata 0, 0, 28, 12, 12, 60, 108, 204, 204, 204, 204, 118, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 124, 198, 254, 192, 192, 198, 124, 0, 0, 0, 0
defdata 0, 0, 56, 108, 100, 96, 240, 96, 96, 96, 96, 240, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 118, 204, 204, 204, 204, 204, 124, 12, 204, 120, 0
defdata 0, 0, 224, 96, 96, 108, 118, 102, 102, 102, 102, 230, 0, 0, 0, 0
defdata 0, 0, 24, 24, 0, 56, 24, 24, 24, 24, 24, 60, 0, 0, 0, 0
defdata 0, 0, 6, 6, 0, 14, 6, 6, 6, 6, 6, 6, 102, 102, 60, 0
defdata 0, 0, 224, 96, 96, 102, 108, 120, 120, 108, 102, 230, 0, 0, 0, 0
defdata 0, 0, 56, 24, 24, 24, 24, 24, 24, 24, 24, 60, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 236, 254, 214, 214, 214, 214, 198, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 220, 102, 102, 102, 102, 102, 102, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 124, 198, 198, 198, 198, 198, 124, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 220, 102, 102, 102, 102, 102, 124, 96, 96, 240, 0
defdata 0, 0, 0, 0, 0, 118, 204, 204, 204, 204, 204, 124, 12, 12, 30, 0
defdata 0, 0, 0, 0, 0, 220, 118, 102, 96, 96, 96, 240, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 124, 198, 96, 56, 12, 198, 124, 0, 0, 0, 0
defdata 0, 0, 16, 48, 48, 252, 48, 48, 48, 48, 54, 28, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 204, 204, 204, 204, 204, 204, 118, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 102, 102, 102, 102, 102, 60, 24, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 198, 198, 214, 214, 214, 254, 108, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 198, 108, 56, 56, 56, 108, 198, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 198, 198, 198, 198, 198, 198, 126, 6, 12, 248, 0
defdata 0, 0, 0, 0, 0, 254, 204, 24, 48, 96, 198, 254, 0, 0, 0, 0
defdata 0, 0, 14, 24, 24, 24, 112, 24, 24, 24, 24, 14, 0, 0, 0, 0
defdata 0, 0, 24, 24, 24, 24, 0, 24, 24, 24, 24, 24, 0, 0, 0, 0
defdata 0, 0, 112, 24, 24, 24, 14, 24, 24, 24, 24, 112, 0, 0, 0, 0
defdata 0, 0, 118, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 16, 56, 108, 198, 198, 198, 254, 0, 0, 0, 0, 0
defdata 0, 0, 60, 102, 194, 192, 192, 192, 194, 102, 60, 12, 6, 124, 0, 0
defdata 0, 0, 204, 0, 0, 204, 204, 204, 204, 204, 204, 118, 0, 0, 0, 0
defdata 0, 12, 24, 48, 0, 124, 198, 254, 192, 192, 198, 124, 0, 0, 0, 0
defdata 0, 16, 56, 108, 0, 120, 12, 124, 204, 204, 204, 118, 0, 0, 0, 0
defdata 0, 0, 204, 0, 0, 120, 12, 124, 204, 204, 204, 118, 0, 0, 0, 0
defdata 0, 96, 48, 24, 0, 120, 12, 124, 204, 204, 204, 118, 0, 0, 0, 0
defdata 0, 56, 108, 56, 0, 120, 12, 124, 204, 204, 204, 118, 0, 0, 0, 0
defdata 0, 0, 0, 0, 60, 102, 96, 96, 102, 60, 12, 6, 60, 0, 0, 0
defdata 0, 16, 56, 108, 0, 124, 198, 254, 192, 192, 198, 124, 0, 0, 0, 0
defdata 0, 0, 198, 0, 0, 124, 198, 254, 192, 192, 198, 124, 0, 0, 0, 0
defdata 0, 96, 48, 24, 0, 124, 198, 254, 192, 192, 198, 124, 0, 0, 0, 0
defdata 0, 0, 102, 0, 0, 56, 24, 24, 24, 24, 24, 60, 0, 0, 0, 0
defdata 0, 24, 60, 102, 0, 56, 24, 24, 24, 24, 24, 60, 0, 0, 0, 0
defdata 0, 96, 48, 24, 0, 56, 24, 24, 24, 24, 24, 60, 0, 0, 0, 0
defdata 0, 198, 0, 16, 56, 108, 198, 198, 254, 198, 198, 198, 0, 0, 0, 0
defdata 56, 108, 56, 0, 56, 108, 198, 198, 254, 198, 198, 198, 0, 0, 0, 0
defdata 24, 48, 96, 0, 254, 102, 96, 124, 96, 96, 102, 254, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 204, 118, 54, 126, 216, 216, 110, 0, 0, 0, 0
defdata 0, 0, 62, 108, 204, 204, 254, 204, 204, 204, 204, 206, 0, 0, 0, 0
defdata 0, 16, 56, 108, 0, 124, 198, 198, 198, 198, 198, 124, 0, 0, 0, 0
defdata 0, 0, 198, 0, 0, 124, 198, 198, 198, 198, 198, 124, 0, 0, 0, 0
defdata 0, 96, 48, 24, 0, 124, 198, 198, 198, 198, 198, 124, 0, 0, 0, 0
defdata 0, 48, 120, 204, 0, 204, 204, 204, 204, 204, 204, 118, 0, 0, 0, 0
defdata 0, 96, 48, 24, 0, 204, 204, 204, 204, 204, 204, 118, 0, 0, 0, 0
defdata 0, 0, 198, 0, 0, 198, 198, 198, 198, 198, 198, 126, 6, 12, 120, 0
defdata 0, 198, 0, 124, 198, 198, 198, 198, 198, 198, 198, 124, 0, 0, 0, 0
defdata 0, 198, 0, 198, 198, 198, 198, 198, 198, 198, 198, 124, 0, 0, 0, 0
defdata 0, 24, 24, 60, 102, 96, 96, 96, 102, 60, 24, 24, 0, 0, 0, 0
defdata 0, 56, 108, 100, 96, 240, 96, 96, 96, 96, 230, 252, 0, 0, 0, 0
defdata 0, 0, 102, 102, 60, 24, 126, 24, 126, 24, 24, 24, 0, 0, 0, 0
defdata 0, 248, 204, 204, 248, 196, 204, 222, 204, 204, 204, 198, 0, 0, 0, 0
defdata 0, 14, 27, 24, 24, 24, 126, 24, 24, 24, 24, 24, 216, 112, 0, 0
defdata 0, 24, 48, 96, 0, 120, 12, 124, 204, 204, 204, 118, 0, 0, 0, 0
defdata 0, 12, 24, 48, 0, 56, 24, 24, 24, 24, 24, 60, 0, 0, 0, 0
defdata 0, 24, 48, 96, 0, 124, 198, 198, 198, 198, 198, 124, 0, 0, 0, 0
defdata 0, 24, 48, 96, 0, 204, 204, 204, 204, 204, 204, 118, 0, 0, 0, 0
defdata 0, 0, 118, 220, 0, 220, 102, 102, 102, 102, 102, 102, 0, 0, 0, 0
defdata 118, 220, 0, 198, 230, 246, 254, 222, 206, 198, 198, 198, 0, 0, 0, 0
defdata 0, 60, 108, 108, 62, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 56, 108, 108, 56, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 48, 48, 0, 48, 48, 96, 192, 198, 198, 124, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 254, 192, 192, 192, 192, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 254, 6, 6, 6, 6, 0, 0, 0, 0, 0
defdata 0, 192, 192, 194, 198, 204, 24, 48, 96, 220, 134, 12, 24, 62, 0, 0
defdata 0, 192, 192, 194, 198, 204, 24, 48, 102, 206, 158, 62, 6, 6, 0, 0
defdata 0, 0, 24, 24, 0, 24, 24, 24, 60, 60, 60, 24, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 54, 108, 216, 108, 54, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 216, 108, 54, 108, 216, 0, 0, 0, 0, 0, 0
defdata 17, 68, 17, 68, 17, 68, 17, 68, 17, 68, 17, 68, 17, 68, 17, 68
defdata 85, 170, 85, 170, 85, 170, 85, 170, 85, 170, 85, 170, 85, 170, 85, 170
defdata 221, 119, 221, 119, 221, 119, 221, 119, 221, 119, 221, 119, 221, 119, 221, 119
defdata 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24
defdata 24, 24, 24, 24, 24, 24, 24, 248, 24, 24, 24, 24, 24, 24, 24, 24
defdata 24, 24, 24, 24, 24, 248, 24, 248, 24, 24, 24, 24, 24, 24, 24, 24
defdata 54, 54, 54, 54, 54, 54, 54, 246, 54, 54, 54, 54, 54, 54, 54, 54
defdata 0, 0, 0, 0, 0, 0, 0, 254, 54, 54, 54, 54, 54, 54, 54, 54
defdata 0, 0, 0, 0, 0, 248, 24, 248, 24, 24, 24, 24, 24, 24, 24, 24
defdata 54, 54, 54, 54, 54, 246, 6, 246, 54, 54, 54, 54, 54, 54, 54, 54
defdata 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54
defdata 0, 0, 0, 0, 0, 254, 6, 246, 54, 54, 54, 54, 54, 54, 54, 54
defdata 54, 54, 54, 54, 54, 246, 6, 254, 0, 0, 0, 0, 0, 0, 0, 0
defdata 54, 54, 54, 54, 54, 54, 54, 254, 0, 0, 0, 0, 0, 0, 0, 0
defdata 24, 24, 24, 24, 24, 248, 24, 248, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 248, 24, 24, 24, 24, 24, 24, 24, 24
defdata 24, 24, 24, 24, 24, 24, 24, 31, 0, 0, 0, 0, 0, 0, 0, 0
defdata 24, 24, 24, 24, 24, 24, 24, 255, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 255, 24, 24, 24, 24, 24, 24, 24, 24
defdata 24, 24, 24, 24, 24, 24, 24, 31, 24, 24, 24, 24, 24, 24, 24, 24
defdata 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0
defdata 24, 24, 24, 24, 24, 24, 24, 255, 24, 24, 24, 24, 24, 24, 24, 24
defdata 24, 24, 24, 24, 24, 31, 24, 31, 24, 24, 24, 24, 24, 24, 24, 24
defdata 54, 54, 54, 54, 54, 54, 54, 55, 54, 54, 54, 54, 54, 54, 54, 54
defdata 54, 54, 54, 54, 54, 55, 48, 63, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 63, 48, 55, 54, 54, 54, 54, 54, 54, 54, 54
defdata 54, 54, 54, 54, 54, 247, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 255, 0, 247, 54, 54, 54, 54, 54, 54, 54, 54
defdata 54, 54, 54, 54, 54, 55, 48, 55, 54, 54, 54, 54, 54, 54, 54, 54
defdata 0, 0, 0, 0, 0, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0
defdata 54, 54, 54, 54, 54, 247, 0, 247, 54, 54, 54, 54, 54, 54, 54, 54
defdata 24, 24, 24, 24, 24, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0
defdata 54, 54, 54, 54, 54, 54, 54, 255, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 255, 0, 255, 24, 24, 24, 24, 24, 24, 24, 24
defdata 0, 0, 0, 0, 0, 0, 0, 255, 54, 54, 54, 54, 54, 54, 54, 54
defdata 54, 54, 54, 54, 54, 54, 54, 63, 0, 0, 0, 0, 0, 0, 0, 0
defdata 24, 24, 24, 24, 24, 31, 24, 31, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 31, 24, 31, 24, 24, 24, 24, 24, 24, 24, 24
defdata 0, 0, 0, 0, 0, 0, 0, 63, 54, 54, 54, 54, 54, 54, 54, 54
defdata 54, 54, 54, 54, 54, 54, 54, 255, 54, 54, 54, 54, 54, 54, 54, 54
defdata 24, 24, 24, 24, 24, 255, 24, 255, 24, 24, 24, 24, 24, 24, 24, 24
defdata 24, 24, 24, 24, 24, 24, 24, 248, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 31, 24, 24, 24, 24, 24, 24, 24, 24
defdata 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255
defdata 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255
defdata 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240
defdata 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15
defdata 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 118, 220, 216, 216, 216, 220, 118, 0, 0, 0, 0
defdata 0, 0, 120, 204, 204, 204, 216, 204, 198, 198, 198, 204, 0, 0, 0, 0
defdata 0, 0, 254, 198, 198, 192, 192, 192, 192, 192, 192, 192, 0, 0, 0, 0
defdata 0, 0, 0, 0, 254, 108, 108, 108, 108, 108, 108, 108, 0, 0, 0, 0
defdata 0, 0, 0, 254, 198, 96, 48, 24, 48, 96, 198, 254, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 126, 216, 216, 216, 216, 216, 112, 0, 0, 0, 0
defdata 0, 0, 0, 0, 102, 102, 102, 102, 102, 124, 96, 96, 192, 0, 0, 0
defdata 0, 0, 0, 0, 118, 220, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0
defdata 0, 0, 0, 126, 24, 60, 102, 102, 102, 60, 24, 126, 0, 0, 0, 0
defdata 0, 0, 0, 56, 108, 198, 198, 254, 198, 198, 108, 56, 0, 0, 0, 0
defdata 0, 0, 56, 108, 198, 198, 198, 108, 108, 108, 108, 238, 0, 0, 0, 0
defdata 0, 0, 30, 48, 24, 12, 62, 102, 102, 102, 102, 60, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 126, 219, 219, 219, 126, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 3, 6, 126, 219, 219, 243, 126, 96, 192, 0, 0, 0, 0
defdata 0, 0, 28, 48, 96, 96, 124, 96, 96, 96, 48, 28, 0, 0, 0, 0
defdata 0, 0, 0, 124, 198, 198, 198, 198, 198, 198, 198, 198, 0, 0, 0, 0
defdata 0, 0, 0, 0, 254, 0, 0, 254, 0, 0, 254, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 24, 24, 126, 24, 24, 0, 0, 255, 0, 0, 0, 0
defdata 0, 0, 0, 48, 24, 12, 6, 12, 24, 48, 0, 126, 0, 0, 0, 0
defdata 0, 0, 0, 12, 24, 48, 96, 48, 24, 12, 0, 126, 0, 0, 0, 0
defdata 0, 0, 14, 27, 27, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24
defdata 24, 24, 24, 24, 24, 24, 24, 24, 216, 216, 216, 112, 0, 0, 0, 0
defdata 0, 0, 0, 0, 24, 24, 0, 126, 0, 24, 24, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 118, 220, 0, 118, 220, 0, 0, 0, 0, 0, 0
defdata 0, 56, 108, 108, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0
defdata 0, 15, 12, 12, 12, 12, 12, 236, 108, 108, 60, 28, 0, 0, 0, 0
defdata 0, 216, 108, 108, 108, 108, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0
DefData 0, 112, 216, 48, 96, 200, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 124, 124, 124, 124, 124, 124, 124, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

#Font8x8
DefData 0, 0, 0, 0, 0, 0, 0, 0, 126, 129, 165, 129, 189, 153, 129, 126
defdata 126, 255, 219, 255, 195, 231, 255, 126, 108, 254, 254, 254, 124, 56, 16, 0
defdata 16, 56, 124, 254, 124, 56, 16, 0, 56, 124, 56, 254, 254, 214, 16, 56
defdata 16, 16, 56, 124, 254, 124, 16, 56, 0, 0, 24, 60, 60, 24, 0, 0
defdata 255, 255, 231, 195, 195, 231, 255, 255, 0, 60, 102, 66, 66, 102, 60, 0
defdata 255, 195, 153, 189, 189, 153, 195, 255, 15, 7, 15, 125, 204, 204, 204, 120
defdata 60, 102, 102, 102, 60, 24, 126, 24, 63, 51, 63, 48, 48, 112, 240, 224
defdata 127, 99, 127, 99, 99, 103, 230, 192, 24, 219, 60, 231, 231, 60, 219, 24
defdata 128, 224, 248, 254, 248, 224, 128, 0, 2, 14, 62, 254, 62, 14, 2, 0
defdata 24, 60, 126, 24, 24, 126, 60, 24, 102, 102, 102, 102, 102, 0, 102, 0
defdata 127, 219, 219, 123, 27, 27, 27, 0, 62, 99, 56, 108, 108, 56, 204, 120
defdata 0, 0, 0, 0, 126, 126, 126, 0, 24, 60, 126, 24, 126, 60, 24, 255
defdata 24, 60, 126, 24, 24, 24, 24, 0, 24, 24, 24, 24, 126, 60, 24, 0
defdata 0, 24, 12, 254, 12, 24, 0, 0, 0, 48, 96, 254, 96, 48, 0, 0
defdata 0, 0, 192, 192, 192, 254, 0, 0, 0, 36, 102, 255, 102, 36, 0, 0
defdata 0, 24, 60, 126, 255, 255, 0, 0, 0, 255, 255, 126, 60, 24, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 0, 48, 120, 120, 48, 48, 0, 48, 0
defdata 108, 108, 108, 0, 0, 0, 0, 0, 108, 108, 254, 108, 254, 108, 108, 0
defdata 48, 124, 192, 120, 12, 248, 48, 0, 0, 198, 204, 24, 48, 102, 198, 0
defdata 56, 108, 56, 118, 220, 204, 118, 0, 96, 96, 192, 0, 0, 0, 0, 0
defdata 24, 48, 96, 96, 96, 48, 24, 0, 96, 48, 24, 24, 24, 48, 96, 0
defdata 0, 102, 60, 255, 60, 102, 0, 0, 0, 48, 48, 252, 48, 48, 0, 0
defdata 0, 0, 0, 0, 0, 48, 48, 96, 0, 0, 0, 252, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 48, 48, 0, 6, 12, 24, 48, 96, 192, 128, 0
defdata 124, 198, 206, 222, 246, 230, 124, 0, 48, 112, 48, 48, 48, 48, 252, 0
defdata 120, 204, 12, 56, 96, 204, 252, 0, 120, 204, 12, 56, 12, 204, 120, 0
defdata 28, 60, 108, 204, 254, 12, 30, 0, 252, 192, 248, 12, 12, 204, 120, 0
defdata 56, 96, 192, 248, 204, 204, 120, 0, 252, 204, 12, 24, 48, 48, 48, 0
defdata 120, 204, 204, 120, 204, 204, 120, 0, 120, 204, 204, 124, 12, 24, 112, 0
defdata 0, 48, 48, 0, 0, 48, 48, 0, 0, 48, 48, 0, 0, 48, 48, 96
defdata 24, 48, 96, 192, 96, 48, 24, 0, 0, 0, 252, 0, 0, 252, 0, 0
defdata 96, 48, 24, 12, 24, 48, 96, 0, 120, 204, 12, 24, 48, 0, 48, 0
defdata 124, 198, 222, 222, 222, 192, 120, 0, 48, 120, 204, 204, 252, 204, 204, 0
defdata 252, 102, 102, 124, 102, 102, 252, 0, 60, 102, 192, 192, 192, 102, 60, 0
defdata 248, 108, 102, 102, 102, 108, 248, 0, 254, 98, 104, 120, 104, 98, 254, 0
defdata 254, 98, 104, 120, 104, 96, 240, 0, 60, 102, 192, 192, 206, 102, 62, 0
defdata 204, 204, 204, 252, 204, 204, 204, 0, 120, 48, 48, 48, 48, 48, 120, 0
defdata 30, 12, 12, 12, 204, 204, 120, 0, 230, 102, 108, 120, 108, 102, 230, 0
defdata 240, 96, 96, 96, 98, 102, 254, 0, 198, 238, 254, 254, 214, 198, 198, 0
defdata 198, 230, 246, 222, 206, 198, 198, 0, 56, 108, 198, 198, 198, 108, 56, 0
defdata 252, 102, 102, 124, 96, 96, 240, 0, 120, 204, 204, 204, 220, 120, 28, 0
defdata 252, 102, 102, 124, 108, 102, 230, 0, 120, 204, 96, 48, 24, 204, 120, 0
defdata 252, 180, 48, 48, 48, 48, 120, 0, 204, 204, 204, 204, 204, 204, 252, 0
defdata 204, 204, 204, 204, 204, 120, 48, 0, 198, 198, 198, 214, 254, 238, 198, 0
defdata 198, 198, 108, 56, 56, 108, 198, 0, 204, 204, 204, 120, 48, 48, 120, 0
defdata 254, 198, 140, 24, 50, 102, 254, 0, 120, 96, 96, 96, 96, 96, 120, 0
defdata 192, 96, 48, 24, 12, 6, 2, 0, 120, 24, 24, 24, 24, 24, 120, 0
defdata 16, 56, 108, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255
defdata 48, 48, 24, 0, 0, 0, 0, 0, 0, 0, 120, 12, 124, 204, 118, 0
defdata 224, 96, 96, 124, 102, 102, 220, 0, 0, 0, 120, 204, 192, 204, 120, 0
defdata 28, 12, 12, 124, 204, 204, 118, 0, 0, 0, 120, 204, 252, 192, 120, 0
defdata 56, 108, 96, 240, 96, 96, 240, 0, 0, 0, 118, 204, 204, 124, 12, 248
defdata 224, 96, 108, 118, 102, 102, 230, 0, 48, 0, 112, 48, 48, 48, 120, 0
defdata 12, 0, 12, 12, 12, 204, 204, 120, 224, 96, 102, 108, 120, 108, 230, 0
defdata 112, 48, 48, 48, 48, 48, 120, 0, 0, 0, 204, 254, 254, 214, 198, 0
defdata 0, 0, 248, 204, 204, 204, 204, 0, 0, 0, 120, 204, 204, 204, 120, 0
defdata 0, 0, 220, 102, 102, 124, 96, 240, 0, 0, 118, 204, 204, 124, 12, 30
defdata 0, 0, 220, 118, 102, 96, 240, 0, 0, 0, 124, 192, 120, 12, 248, 0
defdata 16, 48, 124, 48, 48, 52, 24, 0, 0, 0, 204, 204, 204, 204, 118, 0
defdata 0, 0, 204, 204, 204, 120, 48, 0, 0, 0, 198, 214, 254, 254, 108, 0
defdata 0, 0, 198, 108, 56, 108, 198, 0, 0, 0, 204, 204, 204, 124, 12, 248
defdata 0, 0, 252, 152, 48, 100, 252, 0, 28, 48, 48, 224, 48, 48, 28, 0
defdata 24, 24, 24, 0, 24, 24, 24, 0, 224, 48, 48, 28, 48, 48, 224, 0
defdata 118, 220, 0, 0, 0, 0, 0, 0, 0, 16, 56, 108, 198, 198, 254, 0
defdata 120, 204, 192, 204, 120, 24, 12, 120, 0, 204, 0, 204, 204, 204, 126, 0
defdata 28, 0, 120, 204, 252, 192, 120, 0, 126, 195, 60, 6, 62, 102, 63, 0
defdata 204, 0, 120, 12, 124, 204, 126, 0, 224, 0, 120, 12, 124, 204, 126, 0
defdata 48, 48, 120, 12, 124, 204, 126, 0, 0, 0, 120, 192, 192, 120, 12, 56
defdata 126, 195, 60, 102, 126, 96, 60, 0, 204, 0, 120, 204, 252, 192, 120, 0
defdata 224, 0, 120, 204, 252, 192, 120, 0, 204, 0, 112, 48, 48, 48, 120, 0
defdata 124, 198, 56, 24, 24, 24, 60, 0, 224, 0, 112, 48, 48, 48, 120, 0
defdata 198, 56, 108, 198, 254, 198, 198, 0, 48, 48, 0, 120, 204, 252, 204, 0
defdata 28, 0, 252, 96, 120, 96, 252, 0, 0, 0, 127, 12, 127, 204, 127, 0
defdata 62, 108, 204, 254, 204, 204, 206, 0, 120, 204, 0, 120, 204, 204, 120, 0
defdata 0, 204, 0, 120, 204, 204, 120, 0, 0, 224, 0, 120, 204, 204, 120, 0
defdata 120, 204, 0, 204, 204, 204, 126, 0, 0, 224, 0, 204, 204, 204, 126, 0
defdata 0, 204, 0, 204, 204, 124, 12, 248, 195, 24, 60, 102, 102, 60, 24, 0
defdata 204, 0, 204, 204, 204, 204, 120, 0, 24, 24, 126, 192, 192, 126, 24, 24
defdata 56, 108, 100, 240, 96, 230, 252, 0, 204, 204, 120, 252, 48, 252, 48, 48
defdata 248, 204, 204, 250, 198, 207, 198, 199, 14, 27, 24, 60, 24, 24, 216, 112
defdata 28, 0, 120, 12, 124, 204, 126, 0, 56, 0, 112, 48, 48, 48, 120, 0
defdata 0, 28, 0, 120, 204, 204, 120, 0, 0, 28, 0, 204, 204, 204, 126, 0
defdata 0, 248, 0, 248, 204, 204, 204, 0, 252, 0, 204, 236, 252, 220, 204, 0
defdata 60, 108, 108, 62, 0, 126, 0, 0, 56, 108, 108, 56, 0, 124, 0, 0
defdata 48, 0, 48, 96, 192, 204, 120, 0, 0, 0, 0, 252, 192, 192, 0, 0
defdata 0, 0, 0, 252, 12, 12, 0, 0, 195, 198, 204, 222, 51, 102, 204, 15
defdata 195, 198, 204, 219, 55, 111, 207, 3, 24, 24, 0, 24, 24, 24, 24, 0
defdata 0, 51, 102, 204, 102, 51, 0, 0, 0, 204, 102, 51, 102, 204, 0, 0
defdata 34, 136, 34, 136, 34, 136, 34, 136, 85, 170, 85, 170, 85, 170, 85, 170
defdata 219, 119, 219, 238, 219, 119, 219, 238, 24, 24, 24, 24, 24, 24, 24, 24
defdata 24, 24, 24, 24, 248, 24, 24, 24, 24, 24, 248, 24, 248, 24, 24, 24
defdata 54, 54, 54, 54, 246, 54, 54, 54, 0, 0, 0, 0, 254, 54, 54, 54
defdata 0, 0, 248, 24, 248, 24, 24, 24, 54, 54, 246, 6, 246, 54, 54, 54
defdata 54, 54, 54, 54, 54, 54, 54, 54, 0, 0, 254, 6, 246, 54, 54, 54
defdata 54, 54, 246, 6, 254, 0, 0, 0, 54, 54, 54, 54, 254, 0, 0, 0
defdata 24, 24, 248, 24, 248, 0, 0, 0, 0, 0, 0, 0, 248, 24, 24, 24
defdata 24, 24, 24, 24, 31, 0, 0, 0, 24, 24, 24, 24, 255, 0, 0, 0
defdata 0, 0, 0, 0, 255, 24, 24, 24, 24, 24, 24, 24, 31, 24, 24, 24
defdata 0, 0, 0, 0, 255, 0, 0, 0, 24, 24, 24, 24, 255, 24, 24, 24
defdata 24, 24, 31, 24, 31, 24, 24, 24, 54, 54, 54, 54, 55, 54, 54, 54
defdata 54, 54, 55, 48, 63, 0, 0, 0, 0, 0, 63, 48, 55, 54, 54, 54
defdata 54, 54, 247, 0, 255, 0, 0, 0, 0, 0, 255, 0, 247, 54, 54, 54
defdata 54, 54, 55, 48, 55, 54, 54, 54, 0, 0, 255, 0, 255, 0, 0, 0
defdata 54, 54, 247, 0, 247, 54, 54, 54, 24, 24, 255, 0, 255, 0, 0, 0
defdata 54, 54, 54, 54, 255, 0, 0, 0, 0, 0, 255, 0, 255, 24, 24, 24
defdata 0, 0, 0, 0, 255, 54, 54, 54, 54, 54, 54, 54, 63, 0, 0, 0
defdata 24, 24, 31, 24, 31, 0, 0, 0, 0, 0, 31, 24, 31, 24, 24, 24
defdata 0, 0, 0, 0, 63, 54, 54, 54, 54, 54, 54, 54, 255, 54, 54, 54
defdata 24, 24, 255, 24, 255, 24, 24, 24, 24, 24, 24, 24, 248, 0, 0, 0
defdata 0, 0, 0, 0, 31, 24, 24, 24, 255, 255, 255, 255, 255, 255, 255, 255
defdata 0, 0, 0, 0, 255, 255, 255, 255, 240, 240, 240, 240, 240, 240, 240, 240
defdata 15, 15, 15, 15, 15, 15, 15, 15, 255, 255, 255, 255, 0, 0, 0, 0
defdata 0, 0, 118, 220, 200, 220, 118, 0, 0, 120, 204, 248, 204, 248, 192, 192
defdata 0, 252, 204, 192, 192, 192, 192, 0, 0, 254, 108, 108, 108, 108, 108, 0
defdata 252, 204, 96, 48, 96, 204, 252, 0, 0, 0, 126, 216, 216, 216, 112, 0
defdata 0, 102, 102, 102, 102, 124, 96, 192, 0, 118, 220, 24, 24, 24, 24, 0
defdata 252, 48, 120, 204, 204, 120, 48, 252, 56, 108, 198, 254, 198, 108, 56, 0
defdata 56, 108, 198, 198, 108, 108, 238, 0, 28, 48, 24, 124, 204, 204, 120, 0
defdata 0, 0, 126, 219, 219, 126, 0, 0, 6, 12, 126, 219, 219, 126, 96, 192
defdata 56, 96, 192, 248, 192, 96, 56, 0, 120, 204, 204, 204, 204, 204, 204, 0
defdata 0, 252, 0, 252, 0, 252, 0, 0, 48, 48, 252, 48, 48, 0, 252, 0
defdata 96, 48, 24, 48, 96, 0, 252, 0, 24, 48, 96, 48, 24, 0, 252, 0
defdata 14, 27, 27, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 216, 216, 112
defdata 48, 48, 0, 252, 0, 48, 48, 0, 0, 118, 220, 0, 118, 220, 0, 0
defdata 56, 108, 108, 56, 0, 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 0
defdata 0, 0, 0, 0, 24, 0, 0, 0, 15, 12, 12, 12, 236, 108, 60, 28
DefData 120, 108, 108, 108, 108, 0, 0, 0, 112, 24, 48, 96, 120, 0, 0, 0
DefData 0, 0, 0, 0, 0, 0, 0, 0

#font8x8thin
DefData 0, 0, 0, 0, 0, 0, 0, 0, 126, 129, 165, 129, 189, 153, 129, 126
defdata 126, 255, 219, 255, 195, 231, 255, 126, 108, 254, 254, 254, 124, 56, 16, 0
defdata 16, 56, 124, 254, 124, 56, 16, 0, 56, 124, 56, 254, 254, 214, 16, 56
defdata 16, 16, 56, 124, 254, 124, 16, 56, 0, 0, 24, 60, 60, 24, 0, 0
defdata 255, 255, 231, 195, 195, 231, 255, 255, 0, 60, 102, 66, 66, 102, 60, 0
defdata 255, 195, 153, 189, 189, 153, 195, 255, 15, 3, 5, 125, 132, 132, 132, 120
defdata 60, 66, 66, 66, 60, 24, 126, 24, 63, 33, 63, 32, 32, 96, 224, 192
defdata 63, 33, 63, 33, 35, 103, 230, 192, 24, 219, 60, 231, 231, 60, 219, 24
defdata 128, 224, 248, 254, 248, 224, 128, 0, 2, 14, 62, 254, 62, 14, 2, 0
defdata 24, 60, 126, 24, 24, 126, 60, 24, 36, 36, 36, 36, 36, 0, 36, 0
defdata 127, 146, 146, 114, 18, 18, 18, 0, 62, 99, 56, 68, 68, 56, 204, 120
defdata 0, 0, 0, 0, 126, 126, 126, 0, 24, 60, 126, 24, 126, 60, 24, 255
defdata 16, 56, 124, 84, 16, 16, 16, 0, 16, 16, 16, 84, 124, 56, 16, 0
defdata 0, 24, 12, 254, 12, 24, 0, 0, 0, 48, 96, 254, 96, 48, 0, 0
defdata 0, 0, 64, 64, 64, 126, 0, 0, 0, 36, 102, 255, 102, 36, 0, 0
defdata 0, 16, 56, 124, 254, 254, 0, 0, 0, 254, 254, 124, 56, 16, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 0, 16, 56, 56, 16, 16, 0, 16, 0
defdata 36, 36, 36, 0, 0, 0, 0, 0, 36, 36, 126, 36, 126, 36, 36, 0
defdata 24, 62, 64, 60, 2, 124, 24, 0, 0, 98, 100, 8, 16, 38, 70, 0
defdata 48, 72, 48, 86, 136, 136, 118, 0, 16, 16, 32, 0, 0, 0, 0, 0
defdata 16, 32, 64, 64, 64, 32, 16, 0, 32, 16, 8, 8, 8, 16, 32, 0
defdata 0, 68, 56, 254, 56, 68, 0, 0, 0, 16, 16, 124, 16, 16, 0, 0
defdata 0, 0, 0, 0, 0, 16, 16, 32, 0, 0, 0, 126, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 16, 16, 0, 0, 2, 4, 8, 16, 32, 64, 0
defdata 60, 66, 70, 74, 82, 98, 60, 0, 16, 48, 80, 16, 16, 16, 124, 0
defdata 60, 66, 2, 12, 48, 66, 126, 0, 60, 66, 2, 28, 2, 66, 60, 0
defdata 8, 24, 40, 72, 254, 8, 28, 0, 126, 64, 124, 2, 2, 66, 60, 0
defdata 28, 32, 64, 124, 66, 66, 60, 0, 126, 66, 4, 8, 16, 16, 16, 0
defdata 60, 66, 66, 60, 66, 66, 60, 0, 60, 66, 66, 62, 2, 4, 56, 0
defdata 0, 16, 16, 0, 0, 16, 16, 0, 0, 16, 16, 0, 0, 16, 16, 32
defdata 8, 16, 32, 64, 32, 16, 8, 0, 0, 0, 126, 0, 0, 126, 0, 0
defdata 16, 8, 4, 2, 4, 8, 16, 0, 60, 66, 2, 4, 8, 0, 8, 0
defdata 60, 66, 94, 82, 94, 64, 60, 0, 24, 36, 66, 66, 126, 66, 66, 0
defdata 124, 34, 34, 60, 34, 34, 124, 0, 28, 34, 64, 64, 64, 34, 28, 0
defdata 120, 36, 34, 34, 34, 36, 120, 0, 126, 34, 40, 56, 40, 34, 126, 0
defdata 126, 34, 40, 56, 40, 32, 112, 0, 28, 34, 64, 64, 78, 34, 30, 0
defdata 66, 66, 66, 126, 66, 66, 66, 0, 56, 16, 16, 16, 16, 16, 56, 0
defdata 14, 4, 4, 4, 68, 68, 56, 0, 98, 36, 40, 48, 40, 36, 99, 0
defdata 112, 32, 32, 32, 32, 34, 126, 0, 99, 85, 73, 65, 65, 65, 65, 0
defdata 98, 82, 74, 70, 66, 66, 66, 0, 24, 36, 66, 66, 66, 36, 24, 0
defdata 124, 34, 34, 60, 32, 32, 112, 0, 60, 66, 66, 66, 74, 60, 3, 0
defdata 124, 34, 34, 60, 40, 36, 114, 0, 60, 66, 64, 60, 2, 66, 60, 0
defdata 127, 73, 8, 8, 8, 8, 28, 0, 66, 66, 66, 66, 66, 66, 60, 0
defdata 65, 65, 65, 65, 34, 20, 8, 0, 65, 65, 65, 73, 73, 73, 54, 0
defdata 65, 34, 20, 8, 20, 34, 65, 0, 65, 34, 20, 8, 8, 8, 28, 0
defdata 127, 66, 4, 8, 16, 33, 127, 0, 120, 64, 64, 64, 64, 64, 120, 0
defdata 128, 64, 32, 16, 8, 4, 2, 0, 120, 8, 8, 8, 8, 8, 120, 0
defdata 16, 40, 68, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255
defdata 16, 16, 8, 0, 0, 0, 0, 0, 0, 0, 60, 2, 62, 66, 63, 0
defdata 96, 32, 32, 46, 49, 49, 46, 0, 0, 0, 60, 66, 64, 66, 60, 0
defdata 6, 2, 2, 58, 70, 70, 59, 0, 0, 0, 60, 66, 126, 64, 60, 0
defdata 12, 18, 16, 56, 16, 16, 56, 0, 0, 0, 61, 66, 66, 62, 2, 124
defdata 96, 32, 44, 50, 34, 34, 98, 0, 16, 0, 48, 16, 16, 16, 56, 0
defdata 2, 0, 6, 2, 2, 66, 66, 60, 96, 32, 36, 40, 48, 40, 38, 0
defdata 48, 16, 16, 16, 16, 16, 56, 0, 0, 0, 118, 73, 73, 73, 73, 0
defdata 0, 0, 92, 98, 66, 66, 66, 0, 0, 0, 60, 66, 66, 66, 60, 0
defdata 0, 0, 108, 50, 50, 44, 32, 112, 0, 0, 54, 76, 76, 52, 4, 14
defdata 0, 0, 108, 50, 34, 32, 112, 0, 0, 0, 62, 64, 60, 2, 124, 0
defdata 16, 16, 124, 16, 16, 18, 12, 0, 0, 0, 66, 66, 66, 70, 58, 0
defdata 0, 0, 65, 65, 34, 20, 8, 0, 0, 0, 65, 73, 73, 73, 54, 0
defdata 0, 0, 68, 40, 16, 40, 68, 0, 0, 0, 66, 66, 66, 62, 2, 124
defdata 0, 0, 124, 8, 16, 32, 124, 0, 12, 16, 16, 96, 16, 16, 12, 0
defdata 16, 16, 16, 0, 16, 16, 16, 0, 48, 8, 8, 6, 8, 8, 48, 0
defdata 50, 76, 0, 0, 0, 0, 0, 0, 0, 8, 20, 34, 65, 65, 127, 0
defdata 60, 66, 64, 66, 60, 12, 2, 60, 0, 68, 0, 68, 68, 68, 62, 0
defdata 12, 0, 60, 66, 126, 64, 60, 0, 60, 66, 56, 4, 60, 68, 62, 0
defdata 66, 0, 56, 4, 60, 68, 62, 0, 48, 0, 56, 4, 60, 68, 62, 0
defdata 16, 0, 56, 4, 60, 68, 62, 0, 0, 0, 60, 64, 64, 60, 6, 28
defdata 60, 66, 60, 66, 126, 64, 60, 0, 66, 0, 60, 66, 126, 64, 60, 0
defdata 48, 0, 60, 66, 126, 64, 60, 0, 36, 0, 24, 8, 8, 8, 28, 0
defdata 124, 130, 48, 16, 16, 16, 56, 0, 48, 0, 24, 8, 8, 8, 28, 0
defdata 66, 24, 36, 66, 126, 66, 66, 0, 24, 24, 0, 60, 66, 126, 66, 0
defdata 12, 0, 124, 32, 56, 32, 124, 0, 0, 0, 51, 12, 63, 68, 59, 0
defdata 31, 36, 68, 127, 68, 68, 71, 0, 24, 36, 0, 60, 66, 66, 60, 0
defdata 0, 66, 0, 60, 66, 66, 60, 0, 32, 16, 0, 60, 66, 66, 60, 0
defdata 24, 36, 0, 66, 66, 66, 60, 0, 32, 16, 0, 66, 66, 66, 60, 0
defdata 0, 66, 0, 66, 66, 62, 2, 60, 66, 24, 36, 66, 66, 36, 24, 0
defdata 66, 0, 66, 66, 66, 66, 60, 0, 8, 8, 62, 64, 64, 62, 8, 8
defdata 24, 36, 32, 112, 32, 66, 124, 0, 68, 40, 124, 16, 124, 16, 16, 0
defdata 248, 76, 120, 68, 79, 68, 69, 230, 28, 18, 16, 124, 16, 16, 144, 96
defdata 12, 0, 56, 4, 60, 68, 62, 0, 12, 0, 24, 8, 8, 8, 28, 0
defdata 4, 8, 0, 60, 66, 66, 60, 0, 0, 4, 8, 66, 66, 66, 60, 0
defdata 50, 76, 0, 124, 66, 66, 66, 0, 52, 76, 0, 98, 82, 74, 70, 0
defdata 60, 68, 68, 62, 0, 126, 0, 0, 56, 68, 68, 56, 0, 124, 0, 0
defdata 16, 0, 16, 32, 64, 66, 60, 0, 0, 0, 0, 126, 64, 64, 0, 0
defdata 0, 0, 0, 126, 2, 2, 0, 0, 66, 196, 72, 246, 41, 67, 140, 31
defdata 66, 196, 74, 246, 42, 95, 130, 2, 0, 16, 0, 16, 16, 16, 16, 0
defdata 0, 18, 36, 72, 36, 18, 0, 0, 0, 72, 36, 18, 36, 72, 0, 0
defdata 34, 136, 34, 136, 34, 136, 34, 136, 85, 170, 85, 170, 85, 170, 85, 170
defdata 219, 119, 219, 238, 219, 119, 219, 238, 16, 16, 16, 16, 16, 16, 16, 16
defdata 16, 16, 16, 16, 240, 16, 16, 16, 16, 16, 240, 16, 240, 16, 16, 16
defdata 20, 20, 20, 20, 244, 20, 20, 20, 0, 0, 0, 0, 252, 20, 20, 20
defdata 0, 0, 240, 16, 240, 16, 16, 16, 20, 20, 244, 4, 244, 20, 20, 20
defdata 20, 20, 20, 20, 20, 20, 20, 20, 0, 0, 252, 4, 244, 20, 20, 20
defdata 20, 20, 244, 4, 252, 0, 0, 0, 20, 20, 20, 20, 252, 0, 0, 0
defdata 16, 16, 240, 16, 240, 0, 0, 0, 0, 0, 0, 0, 240, 16, 16, 16
defdata 16, 16, 16, 16, 31, 0, 0, 0, 16, 16, 16, 16, 255, 0, 0, 0
defdata 0, 0, 0, 0, 255, 16, 16, 16, 16, 16, 16, 16, 31, 16, 16, 16
defdata 0, 0, 0, 0, 255, 0, 0, 0, 16, 16, 16, 16, 255, 16, 16, 16
defdata 16, 16, 31, 16, 31, 16, 16, 16, 20, 20, 20, 20, 23, 20, 20, 20
defdata 20, 20, 23, 16, 31, 0, 0, 0, 0, 0, 31, 16, 23, 20, 20, 20
defdata 20, 20, 247, 0, 255, 0, 0, 0, 0, 0, 255, 0, 247, 20, 20, 20
defdata 20, 20, 23, 16, 23, 20, 20, 20, 0, 0, 255, 0, 255, 0, 0, 0
defdata 20, 20, 247, 0, 247, 20, 20, 20, 16, 16, 255, 0, 255, 0, 0, 0
defdata 20, 20, 20, 20, 255, 0, 0, 0, 0, 0, 255, 0, 255, 16, 16, 16
defdata 0, 0, 0, 0, 255, 20, 20, 20, 20, 20, 20, 20, 31, 0, 0, 0
defdata 16, 16, 31, 16, 31, 0, 0, 0, 0, 0, 31, 16, 31, 16, 16, 16
defdata 0, 0, 0, 0, 31, 20, 20, 20, 20, 20, 20, 20, 255, 20, 20, 20
defdata 16, 16, 255, 16, 255, 16, 16, 16, 16, 16, 16, 16, 240, 0, 0, 0
defdata 0, 0, 0, 0, 31, 16, 16, 16, 255, 255, 255, 255, 255, 255, 255, 255
defdata 0, 0, 0, 0, 255, 255, 255, 255, 240, 240, 240, 240, 240, 240, 240, 240
defdata 15, 15, 15, 15, 15, 15, 15, 15, 255, 255, 255, 255, 0, 0, 0, 0
defdata 0, 0, 49, 74, 68, 74, 49, 0, 0, 60, 66, 124, 66, 124, 64, 64
defdata 0, 126, 66, 64, 64, 64, 64, 0, 0, 63, 84, 20, 20, 20, 20, 0
defdata 126, 66, 32, 24, 32, 66, 126, 0, 0, 0, 62, 72, 72, 72, 48, 0
defdata 0, 68, 68, 68, 122, 64, 64, 128, 0, 51, 76, 8, 8, 8, 8, 0
defdata 124, 16, 56, 68, 68, 56, 16, 124, 24, 36, 66, 126, 66, 36, 24, 0
defdata 24, 36, 66, 66, 36, 36, 102, 0, 28, 32, 24, 60, 66, 66, 60, 0
defdata 0, 98, 149, 137, 149, 98, 0, 0, 2, 4, 60, 74, 82, 60, 64, 128
defdata 12, 16, 32, 60, 32, 16, 12, 0, 60, 66, 66, 66, 66, 66, 66, 0
defdata 0, 126, 0, 126, 0, 126, 0, 0, 16, 16, 124, 16, 16, 0, 124, 0
defdata 16, 8, 4, 8, 16, 0, 126, 0, 8, 16, 32, 16, 8, 0, 126, 0
defdata 12, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 144, 144, 96
defdata 24, 24, 0, 126, 0, 24, 24, 0, 0, 50, 76, 0, 50, 76, 0, 0
defdata 48, 72, 72, 48, 0, 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, 0
defdata 0, 0, 0, 0, 24, 0, 0, 0, 15, 8, 8, 8, 8, 200, 40, 24
defdata 120, 68, 68, 68, 68, 0, 0, 0, 48, 72, 16, 32, 120, 0, 0, 0
DefData 0, 0, 0, 0, 0, 0, 0, 0

#font8x14
DefData 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 126, 129, 165, 129, 129, 189, 153, 129, 126, 0, 0, 0, 0, 0, 126, 255
defdata 219, 255, 255, 195, 231, 255, 126, 0, 0, 0, 0, 0, 0, 108, 254, 254
defdata 254, 254, 124, 56, 16, 0, 0, 0, 0, 0, 0, 16, 56, 124, 254, 124
defdata 56, 16, 0, 0, 0, 0, 0, 0, 24, 60, 60, 231, 231, 231, 24, 24
defdata 60, 0, 0, 0, 0, 0, 24, 60, 126, 255, 255, 126, 24, 24, 60, 0
defdata 0, 0, 0, 0, 0, 0, 0, 24, 60, 60, 24, 0, 0, 0, 0, 0
defdata 255, 255, 255, 255, 255, 231, 195, 195, 231, 255, 255, 255, 255, 255, 0, 0
defdata 0, 0, 60, 102, 66, 66, 102, 60, 0, 0, 0, 0, 255, 255, 255, 255
defdata 195, 153, 189, 189, 153, 195, 255, 255, 255, 255, 0, 0, 30, 14, 26, 50
defdata 120, 204, 204, 204, 120, 0, 0, 0, 0, 0, 60, 102, 102, 102, 60, 24
defdata 126, 24, 24, 0, 0, 0, 0, 0, 63, 51, 63, 48, 48, 48, 112, 240
defdata 224, 0, 0, 0, 0, 0, 127, 99, 127, 99, 99, 99, 103, 231, 230, 192
defdata 0, 0, 0, 0, 24, 24, 219, 60, 231, 60, 219, 24, 24, 0, 0, 0
defdata 0, 0, 128, 192, 224, 248, 254, 248, 224, 192, 128, 0, 0, 0, 0, 0
defdata 2, 6, 14, 62, 254, 62, 14, 6, 2, 0, 0, 0, 0, 0, 24, 60
defdata 126, 24, 24, 24, 126, 60, 24, 0, 0, 0, 0, 0, 102, 102, 102, 102
defdata 102, 102, 0, 102, 102, 0, 0, 0, 0, 0, 127, 219, 219, 219, 123, 27
defdata 27, 27, 27, 0, 0, 0, 0, 124, 198, 96, 56, 108, 198, 198, 108, 56
defdata 12, 198, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 254, 254, 0
defdata 0, 0, 0, 0, 24, 60, 126, 24, 24, 24, 126, 60, 24, 126, 0, 0
defdata 0, 0, 24, 60, 126, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0
defdata 24, 24, 24, 24, 24, 24, 126, 60, 24, 0, 0, 0, 0, 0, 0, 0
defdata 24, 12, 254, 12, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 96
defdata 254, 96, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 192, 192
defdata 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 108, 254, 108, 40, 0
defdata 0, 0, 0, 0, 0, 0, 0, 16, 56, 56, 124, 124, 254, 254, 0, 0
defdata 0, 0, 0, 0, 0, 254, 254, 124, 124, 56, 56, 16, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 24, 60, 60, 60, 24, 24, 0, 24, 24, 0, 0, 0, 0, 102, 102, 102
defdata 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 108, 254, 108
defdata 108, 108, 254, 108, 108, 0, 0, 0, 24, 24, 124, 198, 194, 192, 124, 6
defdata 134, 198, 124, 24, 24, 0, 0, 0, 0, 0, 194, 198, 12, 24, 48, 102
defdata 198, 0, 0, 0, 0, 0, 56, 108, 108, 56, 118, 220, 204, 204, 118, 0
defdata 0, 0, 0, 48, 48, 48, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 12, 24, 48, 48, 48, 48, 48, 24, 12, 0, 0, 0, 0, 0
defdata 48, 24, 12, 12, 12, 12, 12, 24, 48, 0, 0, 0, 0, 0, 0, 0
defdata 102, 60, 255, 60, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24
defdata 126, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 24, 24, 24, 48, 0, 0, 0, 0, 0, 0, 0, 0, 254, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 0
defdata 0, 0, 0, 0, 2, 6, 12, 24, 48, 96, 192, 128, 0, 0, 0, 0
defdata 0, 0, 124, 198, 206, 222, 246, 230, 198, 198, 124, 0, 0, 0, 0, 0
defdata 24, 56, 120, 24, 24, 24, 24, 24, 126, 0, 0, 0, 0, 0, 124, 198
defdata 6, 12, 24, 48, 96, 198, 254, 0, 0, 0, 0, 0, 124, 198, 6, 6
defdata 60, 6, 6, 198, 124, 0, 0, 0, 0, 0, 12, 28, 60, 108, 204, 254
defdata 12, 12, 30, 0, 0, 0, 0, 0, 254, 192, 192, 192, 252, 6, 6, 198
defdata 124, 0, 0, 0, 0, 0, 56, 96, 192, 192, 252, 198, 198, 198, 124, 0
defdata 0, 0, 0, 0, 254, 198, 6, 12, 24, 48, 48, 48, 48, 0, 0, 0
defdata 0, 0, 124, 198, 198, 198, 124, 198, 198, 198, 124, 0, 0, 0, 0, 0
defdata 124, 198, 198, 198, 126, 6, 6, 12, 120, 0, 0, 0, 0, 0, 0, 24
defdata 24, 0, 0, 0, 24, 24, 0, 0, 0, 0, 0, 0, 0, 24, 24, 0
defdata 0, 0, 24, 24, 48, 0, 0, 0, 0, 0, 6, 12, 24, 48, 96, 48
defdata 24, 12, 6, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 126, 0
defdata 0, 0, 0, 0, 0, 0, 96, 48, 24, 12, 6, 12, 24, 48, 96, 0
defdata 0, 0, 0, 0, 124, 198, 198, 12, 24, 24, 0, 24, 24, 0, 0, 0
defdata 0, 0, 124, 198, 198, 222, 222, 222, 220, 192, 124, 0, 0, 0, 0, 0
defdata 16, 56, 108, 198, 198, 254, 198, 198, 198, 0, 0, 0, 0, 0, 252, 102
defdata 102, 102, 124, 102, 102, 102, 252, 0, 0, 0, 0, 0, 60, 102, 194, 192
defdata 192, 192, 194, 102, 60, 0, 0, 0, 0, 0, 248, 108, 102, 102, 102, 102
defdata 102, 108, 248, 0, 0, 0, 0, 0, 254, 102, 98, 104, 120, 104, 98, 102
defdata 254, 0, 0, 0, 0, 0, 254, 102, 98, 104, 120, 104, 96, 96, 240, 0
defdata 0, 0, 0, 0, 60, 102, 194, 192, 192, 222, 198, 102, 58, 0, 0, 0
defdata 0, 0, 198, 198, 198, 198, 254, 198, 198, 198, 198, 0, 0, 0, 0, 0
defdata 60, 24, 24, 24, 24, 24, 24, 24, 60, 0, 0, 0, 0, 0, 30, 12
defdata 12, 12, 12, 12, 204, 204, 120, 0, 0, 0, 0, 0, 230, 102, 108, 108
defdata 120, 108, 108, 102, 230, 0, 0, 0, 0, 0, 240, 96, 96, 96, 96, 96
defdata 98, 102, 254, 0, 0, 0, 0, 0, 198, 238, 254, 254, 214, 198, 198, 198
defdata 198, 0, 0, 0, 0, 0, 198, 230, 246, 254, 222, 206, 198, 198, 198, 0
defdata 0, 0, 0, 0, 56, 108, 198, 198, 198, 198, 198, 108, 56, 0, 0, 0
defdata 0, 0, 252, 102, 102, 102, 124, 96, 96, 96, 240, 0, 0, 0, 0, 0
defdata 124, 198, 198, 198, 198, 214, 222, 124, 12, 14, 0, 0, 0, 0, 252, 102
defdata 102, 102, 124, 108, 102, 102, 230, 0, 0, 0, 0, 0, 124, 198, 198, 96
defdata 56, 12, 198, 198, 124, 0, 0, 0, 0, 0, 126, 126, 90, 24, 24, 24
defdata 24, 24, 60, 0, 0, 0, 0, 0, 198, 198, 198, 198, 198, 198, 198, 198
defdata 124, 0, 0, 0, 0, 0, 198, 198, 198, 198, 198, 198, 108, 56, 16, 0
defdata 0, 0, 0, 0, 198, 198, 198, 198, 214, 214, 254, 124, 108, 0, 0, 0
defdata 0, 0, 198, 198, 108, 56, 56, 56, 108, 198, 198, 0, 0, 0, 0, 0
defdata 102, 102, 102, 102, 60, 24, 24, 24, 60, 0, 0, 0, 0, 0, 254, 198
defdata 140, 24, 48, 96, 194, 198, 254, 0, 0, 0, 0, 0, 60, 48, 48, 48
defdata 48, 48, 48, 48, 60, 0, 0, 0, 0, 0, 128, 192, 224, 112, 56, 28
defdata 14, 6, 2, 0, 0, 0, 0, 0, 60, 12, 12, 12, 12, 12, 12, 12
defdata 60, 0, 0, 0, 16, 56, 108, 198, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0
defdata 48, 48, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 120, 12, 124, 204, 204, 118, 0, 0, 0, 0, 0, 224, 96
defdata 96, 120, 108, 102, 102, 102, 124, 0, 0, 0, 0, 0, 0, 0, 0, 124
defdata 198, 192, 192, 198, 124, 0, 0, 0, 0, 0, 28, 12, 12, 60, 108, 204
defdata 204, 204, 118, 0, 0, 0, 0, 0, 0, 0, 0, 124, 198, 254, 192, 198
defdata 124, 0, 0, 0, 0, 0, 56, 108, 100, 96, 240, 96, 96, 96, 240, 0
defdata 0, 0, 0, 0, 0, 0, 0, 118, 204, 204, 204, 124, 12, 204, 120, 0
defdata 0, 0, 224, 96, 96, 108, 118, 102, 102, 102, 230, 0, 0, 0, 0, 0
defdata 24, 24, 0, 56, 24, 24, 24, 24, 60, 0, 0, 0, 0, 0, 6, 6
defdata 0, 14, 6, 6, 6, 6, 102, 102, 60, 0, 0, 0, 224, 96, 96, 102
defdata 108, 120, 108, 102, 230, 0, 0, 0, 0, 0, 56, 24, 24, 24, 24, 24
defdata 24, 24, 60, 0, 0, 0, 0, 0, 0, 0, 0, 236, 254, 214, 214, 214
defdata 198, 0, 0, 0, 0, 0, 0, 0, 0, 220, 102, 102, 102, 102, 102, 0
defdata 0, 0, 0, 0, 0, 0, 0, 124, 198, 198, 198, 198, 124, 0, 0, 0
defdata 0, 0, 0, 0, 0, 220, 102, 102, 102, 124, 96, 96, 240, 0, 0, 0
defdata 0, 0, 0, 118, 204, 204, 204, 124, 12, 12, 30, 0, 0, 0, 0, 0
defdata 0, 220, 118, 102, 96, 96, 240, 0, 0, 0, 0, 0, 0, 0, 0, 124
defdata 198, 112, 28, 198, 124, 0, 0, 0, 0, 0, 16, 48, 48, 252, 48, 48
defdata 48, 54, 28, 0, 0, 0, 0, 0, 0, 0, 0, 204, 204, 204, 204, 204
defdata 118, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 102, 60, 24, 0
defdata 0, 0, 0, 0, 0, 0, 0, 198, 198, 214, 214, 254, 108, 0, 0, 0
defdata 0, 0, 0, 0, 0, 198, 108, 56, 56, 108, 198, 0, 0, 0, 0, 0
defdata 0, 0, 0, 198, 198, 198, 198, 126, 6, 12, 248, 0, 0, 0, 0, 0
defdata 0, 254, 204, 24, 48, 102, 254, 0, 0, 0, 0, 0, 14, 24, 24, 24
defdata 112, 24, 24, 24, 14, 0, 0, 0, 0, 0, 24, 24, 24, 24, 0, 24
defdata 24, 24, 24, 0, 0, 0, 0, 0, 112, 24, 24, 24, 14, 24, 24, 24
defdata 112, 0, 0, 0, 0, 0, 118, 220, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 16, 56, 108, 198, 198, 254, 0, 0, 0, 0
defdata 0, 0, 60, 102, 194, 192, 192, 194, 102, 60, 12, 6, 124, 0, 0, 0
defdata 204, 204, 0, 204, 204, 204, 204, 204, 118, 0, 0, 0, 0, 12, 24, 48
defdata 0, 124, 198, 254, 192, 198, 124, 0, 0, 0, 0, 16, 56, 108, 0, 120
defdata 12, 124, 204, 204, 118, 0, 0, 0, 0, 0, 204, 204, 0, 120, 12, 124
defdata 204, 204, 118, 0, 0, 0, 0, 96, 48, 24, 0, 120, 12, 124, 204, 204
defdata 118, 0, 0, 0, 0, 56, 108, 56, 0, 120, 12, 124, 204, 204, 118, 0
defdata 0, 0, 0, 0, 0, 0, 60, 102, 96, 102, 60, 12, 6, 60, 0, 0
defdata 0, 16, 56, 108, 0, 124, 198, 254, 192, 198, 124, 0, 0, 0, 0, 0
defdata 204, 204, 0, 124, 198, 254, 192, 198, 124, 0, 0, 0, 0, 96, 48, 24
defdata 0, 124, 198, 254, 192, 198, 124, 0, 0, 0, 0, 0, 102, 102, 0, 56
defdata 24, 24, 24, 24, 60, 0, 0, 0, 0, 24, 60, 102, 0, 56, 24, 24
defdata 24, 24, 60, 0, 0, 0, 0, 96, 48, 24, 0, 56, 24, 24, 24, 24
defdata 60, 0, 0, 0, 0, 198, 198, 16, 56, 108, 198, 198, 254, 198, 198, 0
defdata 0, 0, 56, 108, 56, 0, 56, 108, 198, 198, 254, 198, 198, 0, 0, 0
defdata 24, 48, 96, 0, 254, 102, 96, 124, 96, 102, 254, 0, 0, 0, 0, 0
defdata 0, 0, 204, 118, 54, 126, 216, 216, 110, 0, 0, 0, 0, 0, 62, 108
defdata 204, 204, 254, 204, 204, 204, 206, 0, 0, 0, 0, 16, 56, 108, 0, 124
defdata 198, 198, 198, 198, 124, 0, 0, 0, 0, 0, 198, 198, 0, 124, 198, 198
defdata 198, 198, 124, 0, 0, 0, 0, 96, 48, 24, 0, 124, 198, 198, 198, 198
defdata 124, 0, 0, 0, 0, 48, 120, 204, 0, 204, 204, 204, 204, 204, 118, 0
defdata 0, 0, 0, 96, 48, 24, 0, 204, 204, 204, 204, 204, 118, 0, 0, 0
defdata 0, 0, 198, 198, 0, 198, 198, 198, 198, 126, 6, 12, 120, 0, 0, 198
defdata 198, 56, 108, 198, 198, 198, 198, 108, 56, 0, 0, 0, 0, 198, 198, 0
defdata 198, 198, 198, 198, 198, 198, 124, 0, 0, 0, 0, 24, 24, 60, 102, 96
defdata 96, 102, 60, 24, 24, 0, 0, 0, 0, 56, 108, 100, 96, 240, 96, 96
defdata 96, 230, 252, 0, 0, 0, 0, 0, 102, 102, 60, 24, 126, 24, 126, 24
defdata 24, 0, 0, 0, 0, 248, 204, 204, 248, 196, 204, 222, 204, 204, 198, 0
defdata 0, 0, 0, 14, 27, 24, 24, 24, 126, 24, 24, 24, 24, 216, 112, 0
defdata 0, 24, 48, 96, 0, 120, 12, 124, 204, 204, 118, 0, 0, 0, 0, 12
defdata 24, 48, 0, 56, 24, 24, 24, 24, 60, 0, 0, 0, 0, 24, 48, 96
defdata 0, 124, 198, 198, 198, 198, 124, 0, 0, 0, 0, 24, 48, 96, 0, 204
defdata 204, 204, 204, 204, 118, 0, 0, 0, 0, 0, 118, 220, 0, 220, 102, 102
defdata 102, 102, 102, 0, 0, 0, 118, 220, 0, 198, 230, 246, 254, 222, 206, 198
defdata 198, 0, 0, 0, 0, 60, 108, 108, 62, 0, 126, 0, 0, 0, 0, 0
defdata 0, 0, 0, 56, 108, 108, 56, 0, 124, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 48, 48, 0, 48, 48, 96, 198, 198, 124, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 254, 192, 192, 192, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 254, 6, 6, 6, 0, 0, 0, 0, 0, 192, 192, 198, 204, 216
defdata 48, 96, 220, 134, 12, 24, 62, 0, 0, 192, 192, 198, 204, 216, 48, 102
defdata 206, 158, 62, 6, 6, 0, 0, 0, 24, 24, 0, 24, 24, 60, 60, 60
defdata 24, 0, 0, 0, 0, 0, 0, 0, 54, 108, 216, 108, 54, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 216, 108, 54, 108, 216, 0, 0, 0, 0, 0
defdata 17, 68, 17, 68, 17, 68, 17, 68, 17, 68, 17, 68, 17, 68, 85, 170
defdata 85, 170, 85, 170, 85, 170, 85, 170, 85, 170, 85, 170, 221, 119, 221, 119
defdata 221, 119, 221, 119, 221, 119, 221, 119, 221, 119, 24, 24, 24, 24, 24, 24
defdata 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 248
defdata 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 248, 24, 248, 24, 24
defdata 24, 24, 24, 24, 54, 54, 54, 54, 54, 54, 54, 246, 54, 54, 54, 54
defdata 54, 54, 0, 0, 0, 0, 0, 0, 0, 254, 54, 54, 54, 54, 54, 54
defdata 0, 0, 0, 0, 0, 248, 24, 248, 24, 24, 24, 24, 24, 24, 54, 54
defdata 54, 54, 54, 246, 6, 246, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54
defdata 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 0, 0, 0, 0, 0, 254
defdata 6, 246, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 246, 6, 254
defdata 0, 0, 0, 0, 0, 0, 54, 54, 54, 54, 54, 54, 54, 254, 0, 0
defdata 0, 0, 0, 0, 24, 24, 24, 24, 24, 248, 24, 248, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 24, 24, 24, 24, 24, 24
defdata 24, 24, 24, 24, 24, 24, 24, 31, 0, 0, 0, 0, 0, 0, 24, 24
defdata 24, 24, 24, 24, 24, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 255, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24
defdata 24, 31, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 255
defdata 0, 0, 0, 0, 0, 0, 24, 24, 24, 24, 24, 24, 24, 255, 24, 24
defdata 24, 24, 24, 24, 24, 24, 24, 24, 24, 31, 24, 31, 24, 24, 24, 24
defdata 24, 24, 54, 54, 54, 54, 54, 54, 54, 55, 54, 54, 54, 54, 54, 54
defdata 54, 54, 54, 54, 54, 55, 48, 63, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 63, 48, 55, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54
defdata 54, 247, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255
defdata 0, 247, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 48, 55
defdata 54, 54, 54, 54, 54, 54, 0, 0, 0, 0, 0, 255, 0, 255, 0, 0
defdata 0, 0, 0, 0, 54, 54, 54, 54, 54, 247, 0, 247, 54, 54, 54, 54
defdata 54, 54, 24, 24, 24, 24, 24, 255, 0, 255, 0, 0, 0, 0, 0, 0
defdata 54, 54, 54, 54, 54, 54, 54, 255, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 255, 0, 255, 24, 24, 24, 24, 24, 24, 0, 0, 0, 0
defdata 0, 0, 0, 255, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54
defdata 54, 63, 0, 0, 0, 0, 0, 0, 24, 24, 24, 24, 24, 31, 24, 31
defdata 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 24, 31, 24, 24
defdata 24, 24, 24, 24, 0, 0, 0, 0, 0, 0, 0, 63, 54, 54, 54, 54
defdata 54, 54, 54, 54, 54, 54, 54, 54, 54, 255, 54, 54, 54, 54, 54, 54
defdata 24, 24, 24, 24, 24, 255, 24, 255, 24, 24, 24, 24, 24, 24, 24, 24
defdata 24, 24, 24, 24, 24, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
DefData 0, 0, 0, 31, 24, 24, 24, 24, 24, 24, 255, 255, 255, 255, 255, 255
defdata 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255
defdata 255, 255, 255, 255, 255, 255, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240
defdata 240, 240, 240, 240, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15
defdata 15, 15, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 0, 118, 220, 216, 216, 220, 118, 0, 0, 0, 0, 0
defdata 0, 0, 124, 198, 252, 198, 198, 252, 192, 192, 64, 0, 0, 0, 254, 198
defdata 198, 192, 192, 192, 192, 192, 192, 0, 0, 0, 0, 0, 0, 0, 254, 108
defdata 108, 108, 108, 108, 108, 0, 0, 0, 0, 0, 254, 198, 96, 48, 24, 48
defdata 96, 198, 254, 0, 0, 0, 0, 0, 0, 0, 0, 126, 216, 216, 216, 216
defdata 112, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 102, 124, 96, 96, 192
defdata 0, 0, 0, 0, 0, 0, 118, 220, 24, 24, 24, 24, 24, 0, 0, 0
defdata 0, 0, 126, 24, 60, 102, 102, 102, 60, 24, 126, 0, 0, 0, 0, 0
defdata 56, 108, 198, 198, 254, 198, 198, 108, 56, 0, 0, 0, 0, 0, 56, 108
defdata 198, 198, 198, 108, 108, 108, 238, 0, 0, 0, 0, 0, 30, 48, 24, 12
defdata 62, 102, 102, 102, 60, 0, 0, 0, 0, 0, 0, 0, 0, 126, 219, 219
defdata 126, 0, 0, 0, 0, 0, 0, 0, 3, 6, 126, 219, 219, 243, 126, 96
defdata 192, 0, 0, 0, 0, 0, 28, 48, 96, 96, 124, 96, 96, 48, 28, 0
defdata 0, 0, 0, 0, 0, 124, 198, 198, 198, 198, 198, 198, 198, 0, 0, 0
defdata 0, 0, 0, 254, 0, 0, 254, 0, 0, 254, 0, 0, 0, 0, 0, 0
defdata 0, 24, 24, 126, 24, 24, 0, 0, 255, 0, 0, 0, 0, 0, 48, 24
defdata 12, 6, 12, 24, 48, 0, 126, 0, 0, 0, 0, 0, 12, 24, 48, 96
defdata 48, 24, 12, 0, 126, 0, 0, 0, 0, 0, 14, 27, 27, 24, 24, 24
defdata 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 216, 216
defdata 112, 0, 0, 0, 0, 0, 0, 24, 24, 0, 126, 0, 24, 24, 0, 0
defdata 0, 0, 0, 0, 0, 0, 118, 220, 0, 118, 220, 0, 0, 0, 0, 0
defdata 0, 56, 108, 108, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 0, 24, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
defdata 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 15, 12, 12, 12, 12
defdata 12, 236, 108, 60, 28, 0, 0, 0, 0, 216, 108, 108, 108, 108, 108, 0
defdata 0, 0, 0, 0, 0, 0, 0, 112, 216, 48, 96, 200, 248, 0, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 0, 124, 124, 124, 124, 124, 124, 0, 0
defdata 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

Comments

Black3D2012
Example code:

SuperStrict

Framework brl.GLMax2D
Import brl.Retro

Include "textfunctions.bmx"
Global timer_frames:Int = MilliSecs()
Global timer_framecount:Int, timer_oldframes:Int

SetGraphicsDriver GLMax2DDriver()
Global gfxhandle:TGraphics

gfxhandle = Graphics(1280, 800)
SetScale 2, 2
Text_Init(1)
Text_CLS()
Text_ShowMouse()

Local i:Int
For i = 0 To text_height - 1
	Text TextStr("°", text_width), 0, i, 9, 1, 0
	Next

text_DrawBox 5, 5, 20, 10, 15, 4, 1, 1, 1, 1
Text "Hello World!", 9, 8, 7, 4, 1
text_DrawBox 40, 10, 30, 12, 7, 2, 0, 1, 1, 1
text_DrawBox 30, 3, 25, 10, 9, 1, 1, 1, 1, 1

While Not KeyHit(KEY_ESCAPE)
	
	Cls
	Text_Refresh()
	drawfps()
	Text Text_MouseX() + ", " + Text_MouseY() + "  ", 0, 0, 15, 1
	Text text_width + ", " + text_height, 0, 1, 15, 1
	Flip 0
	
Wend

Function drawfps()
	If MilliSecs() - timer_frames < 1000 Then
		timer_framecount = timer_framecount + 1
		Else
		timer_oldframes = timer_framecount
		timer_framecount = 0
		timer_frames = MilliSecs()
	End If
	Text " " + timer_oldframes + " ", text_width - (Len(String(timer_oldframes)) + 2), 0, 15, 1
End Function


Example with "color codes" enabled in text():
'replace:
Text "Hello World!", 9, 8, 7, 4, 1

'with:
Text "H^1e^2l^3l^wo ^5W^6o^7r^8l^9d^q!", 9, 8, 0, 4, 1


Example for super hi-res text mode (kinda insane ;))
'replace:
gfxhandle = Graphics(1280, 800)
SetScale 2, 2
Text_Init(1)

'with:
gfxhandle = Graphics(1920,1080,32)
'SetScale 1,1
Text_AutoInit(2)


Minimal Example:
Include "textfunctions.bmx"
SetGraphicsDriver GLMax2DDriver()

Graphics(640,400)

Text_Init()
text "Hello World",0,0
text_refresh()

Flip

WaitKey()



Code Archives Forum