Dark Bit Factory & Gravity
PROGRAMMING => Freebasic => Topic started by: Emil_halim on March 07, 2007
-
Hi shochy
I have made a little change im my OgreMagic library for allowing mix your software work which uses Tiny PCT to be combine with my OgerMagic Library, so that I can include your code as is with a small change ( change the Array Integer Buffer to a pointer of Integer) then I can make some OgreMagic effect , such as scaling ,fading , rotating your entire work.
In a word you can think it as copy your work to a n OgreMagic sprite .
The good news is there is no big drop in the frame per second , just the drop ranges from 10 to 15 FPS in my system , and I thinks it is a reasonable result.
Here are 2 screenshots , the first on is your original program , and the second on is mine
(http://bcxdx.spoilerspace.com/FreeBasic/test2.gif)
(http://bcxdx.spoilerspace.com/FreeBasic/test1.gif)
Here is the source code , sorry it is big code.
''------------------------------------------------------------------------------
''
'' Magic Library For Ogre
'' beta version 0.40
'' by Emil Halim
''
'' Name : test
'' Date : 20/02/2007
'' Purpose : testing OgreMagic VS Tiny PCT
''
'' website : http://www.freewebs.com/ogremagic/index.htm
''
''------------------------------------------------------------------------------
OPTION EXPLICIT
#include once "windows.bi"
#include once "win/d3d9.bi"
#include once "win/d3dx9.bi"
#include once "MagicLibrary.bi"
''-----------------------------------------------------------------------------
'' GLOBALS
''-----------------------------------------------------------------------------
dim shared as HWND g_hWnd = NULL
dim shared as LPDIRECT3D9 g_pD3D = NULL
dim shared as LPDIRECT3DDEVICE9 g_pd3dDevice = NULL
dim shared as SpriteData ptr SpriteBuffer
dim shared as HLSLProgramData ptr HLSLProgram
'-------------------------------------------------------------------------
' Variable Definitions.
'-------------------------------------------------------------------------
Dim Shared LP As Integer: ' Used In Loops.
Dim Shared As Integer ptr Buffer '( 640 * 480 ):' Screen Buffer.
DIM SHARED AS INTEGER CPAL (255):' Holds Palette.
Dim Shared GADD As Integer:' General Purpose Variable Just Ticks Up.
Dim Shared SMSIN As DOUBLE:' Holds X Movement.
DIM SHARED SMCOS As DOUBLE:' Holds Y Movement.
DIM SHARED ZMCOS As DOUBLE:' Holds Z Movement.
DIM SHARED STPTR AS INTEGER:' Pointer Used When Looping Through Stars.
DIM SHARED STST AS INTEGER:' Holds Deepest Star Pos.
DIM SHARED A AS INTEGER:' Holds Colour Multiplier.
'----------------------------
'--- Set Up Starfield; ---
'----------------------------
Dim Shared STARS As Integer=1500:' Holds Max Number Of Stars
Dim Shared INZP As Double:' Used When Defining Stars To Hold ZP
Dim Shared INZPA As Double:' Used When Defining Stars (ZP Increment)
Dim Shared TX AS INTEGER:' Holds Translated Star X
Dim Shared TY As Integer:' Holds Translated Star Y
dim shared customcop (640*480) as integer:' Holds Custom Fake "Copperlist"
DIM SHARED STX (1 TO STARS) AS DOUBLE: ' Hold X Pos Of Star
DIM SHARED STY (1 TO STARS) AS DOUBLE: ' Hold Y Pos Of Star
DIM SHARED STZ (1 TO STARS) AS DOUBLE: ' Hold Z Pos Of Star
'-----------------------
' Generate A Palette;---
'-----------------------
DIM SHARED R1,G1,B1 AS integer
'===============================================================================
' Scroller Stuff;
'===============================================================================
DIM SHARED SCPTR AS INTEGER:' Letter Pointer In Scroll String.
DIM SHARED SCOFF AS DOUBLE:' Offset Used To Scroll Text
Dim Shared scrolltext as string:' Holds Text.
'---------------
'-Debug Stuff; -
'---------------
dim shared oldtime,newtime as double
dim shared TST as string
dim shared ticks as integer
'--------------------------
' Read In Our Star Bobs;---
'--------------------------
dim shared BOB (36*5) AS INTEGER
'-----------------------------------------------------------------
'Read In Our Font;
'-----------------------------------------------------------------
dim shared FONT (81 * 59) as integer
''-----------------------------------------------------------------------------
'' PROTOTYPES
''-----------------------------------------------------------------------------
declare function WindowProc( byval hWnd as HWND, byval msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM ) as LRESULT
declare sub init()
declare sub shutDown()
declare sub render()
Declare Sub STARFIELD()
DECLARE SUB DRAWBOB (BYVAL BX AS INTEGER , BYVAL BY AS INTEGER , BYVAL BNM AS INTEGER , BYVAL CL AS INTEGER)
Declare Sub Clearscreen()
declare sub DBFTEXT(BYVAL BX AS INTEGER , BYVAL BY AS INTEGER , BYVAL CH AS INTEGER , BYVAL CLR AS INTEGER)
DECLARE SUB MESSAGE()
declare SUB Millisecs()
''-----------------------------------------------------------------------------
'' Name: init()
'' Desc: Initializes Direct3D under DirectX 9.0
''-----------------------------------------------------------------------------
sub init( )
g_pD3D = Direct3DCreate9( D3D_SDK_VERSION )
dim as D3DDISPLAYMODE d3ddm
IDirect3D9_GetAdapterDisplayMode( g_pD3D, D3DADAPTER_DEFAULT, @d3ddm )
dim as D3DPRESENT_PARAMETERS d3dpp
clear( d3dpp, 0, len(d3dpp) )
d3dpp.Windowed = false 'TRUE
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD
d3dpp.BackBufferFormat = d3ddm.Format
d3dpp.EnableAutoDepthStencil = TRUE
d3dpp.AutoDepthStencilFormat = D3DFMT_D16
d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE
d3dpp.BackBufferWidth = 640
d3dpp.BackBufferHeight = 480
d3dpp.BackBufferCount = 2
IDirect3D9_CreateDevice( g_pD3D, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, g_hWnd, _
D3DCREATE_HARDWARE_VERTEXPROCESSING, _
@d3dpp, @g_pd3dDevice )
IDirect3DDevice9_SetRenderState(g_pd3dDevice,D3DRS_LIGHTING, FALSE)
IDirect3DDevice9_SetRenderState(g_pd3dDevice,D3DRS_CULLMODE, D3DCULL_NONE)
dim as D3DXMATRIX mProjection
D3DXMatrixPerspectiveFovLH( @mProjection, D3DXToRadian( 45.0f ), 1.0f, 1.0f, 100.0f )
IDirect3DDevice9_SetTransform(g_pd3dDevice, D3DTS_PROJECTION, @mProjection )
'' Initial Magic Library here
InitialMagicLibrary(g_pd3dDevice,640, 480)
ML_SetMediaDirectory("../MagicMedia/")
SpriteBuffer = ML_CreateStaticSprite(640,480)
HLSLProgram = ML_CreateHLSLProgram()
ML_EditPixelProgram(HLSLProgram)
ML_AddToProgram("sampler2D tex0; ")
ML_AddToProgram("float4 main( float2 TexCoord : TEXCOORD0) : COLOR0 ")
ML_AddToProgram("{ ")
ML_AddToProgram(" float4 col = tex2D( tex0, TexCoord); ")
ML_AddToProgram(" return float4(col.rgb,1); ")
ML_AddToProgram("} ")
ML_CompilePixelProgram(HLSLProgram,"main")
'--------------------------
' Read In Our Star Bobs;---
'--------------------------
FOR LP=1 TO (36*5)
READ BOB(LP)
NEXT
'-----------------------------------------------------------------
'Read In Our Font;
'-----------------------------------------------------------------
FOR LP=1 TO (81*59)
READ FONT(LP)
NEXT
'----------------------------
'--- Set Up Starfield; ---
'----------------------------
INZP=30:' Initial Z = 0.
INZPA = 30 / STARS:' Calculate Increment.
STPTR=1:' Holds Star Number During Starfield Sub Loop.
STST=1:' Used To Store Starting Star (deepest).
For LP = 1 To Stars
STX (LP) = ((RND(1) * 20000)-10000 )
STY (LP) = ((RND(1) * 20000)-10000 )
STZ (LP) = INZP
INZP=INZP-INZPA
next
'-----------------------
' Generate A Palette;---
'-----------------------
FOR LP=1 TO 255
CPAL(LP) =RGB(R1,G1,B1)
IF R1<255 THEN R1=R1+1
IF G1<255 THEN G1=G1+1
IF B1<254 THEN B1=B1+2
NEXT LP
'------------------------------
' Generate Fake Copperlist; ---
'------------------------------
for LP=1 to 640*480
customcop(LP)=&h020004
SELECT CASE LP
CASE 0 TO 640*10
customcop(LP)=&h0a000b
CASE 640*10 TO 640*20
customcop(LP)=&h0c000d
CASE 640*20 TO 640*30
customcop(LP)=&h0e000f
CASE 640*30 TO 640*40
customcop(LP)=&h110012
CASE 640*40 TO 640*50
customcop(LP)=&h130014
CASE 640*470 TO 640*480
customcop(LP)=&h0a000b
CASE 640*460 TO 640*470
customcop(LP)=&h0c000d
CASE 640*450 TO 640*460
customcop(LP)=&h0e000f
CASE 640*440 TO 640*450
customcop(LP)=&h110012
CASE 640*430 TO 640*440
customcop(LP)=&h130014
END SELECT
next
'=======================================================================
'Our Text;
'=======================================================================
scrolltext=" "
scrolltext=scrolltext+" "
scrolltext=scrolltext+"DARK BIT FACTORY ARE BACK WITH A LITTLE INTRO.......... "
scrolltext=scrolltext+"THIS ONE WAS CODED BY SHOCKWAVE!! ALTHOUGH IT LOOKS PRETTY "
scrolltext=scrolltext+"BORING IT IS QUITE COOL..... IT IS ALL MADE USING THE TINYPTC LIB, "
scrolltext=scrolltext+"WHICH IS IN ITS SELF A PAIN IN THE ASS!! EVERYTHING YOU SEE "
scrolltext=scrolltext+"HERE IS HARD CODED... EVEN THE FONT IS CONSTRUCTED IN THE SOURCE!!! "
scrolltext=scrolltext+"...OUT OF BINARY... AAAARRRGGGHHHH!!!! FOR ALL THE HARD WORK IT COMPRESSES DOWN TO ABOUT 15KB SO THAT CAN'T BE TOO BAD!"
scrolltext=scrolltext+" OH WELL.... I GUESS I HAD BETTER ADD SOME MORE EFFECTS...... AND THEN DO SOMETHING USEFUL LIKE SOME OPENGL STUFF "
scrolltext=scrolltext+"INSTEAD??!! THATS ALL FOR NOW......... "
scrolltext=scrolltext+" "
scrolltext=scrolltext+" "
scrolltext=scrolltext+" "
SCOFF=0
SCPTR=0
'---------------
'-Debug Stuff; -
'---------------
ticks=0
oldtime=timer
end sub
''-----------------------------------------------------------------------------
'' Name: render()
'' Desc: Render or draw our scene to the monitor.
''-----------------------------------------------------------------------------
sub render( )
IDirect3DDevice9_Clear( g_pd3dDevice, 0, NULL, D3DCLEAR_TARGET or D3DCLEAR_ZBUFFER, _
D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,1.0f), 1.0f, 0 )
Buffer = ML_StartDrawingToSprite(SpriteBuffer)
Clearscreen():' Clear The Screen.
STARFIELD():' Do The Starfield.
'----------------------------
' Draw White Lines On Screen;
'----------------------------
FOR LP = 0 TO 639
Buffer [(50*640) +LP]=RGB (155,55,155)
Buffer [(430*640)+LP]=RGB (155,55,155)
NEXT
MESSAGE():' Do Scroller.
MILLISECS()
ML_StopDrawingToSprite(SpriteBuffer)
ticks=ticks+1
''
'' begin drawing
''
IDirect3DDevice9_BeginScene(g_pd3dDevice)
'' Magic Stuff
''
ML_UseOrthogonalView
ML_SetAlpha(1)
ML_SetColor(255,255,255)
ML_SetBlendMode(ALPHABLEND)
ML_SetScale(0.75,0.75)
ML_StartShaderProgram(HLSLProgram)
ML_SetSpriteTexture(SpriteBuffer)
ML_DrawSprite(SpriteBuffer,320,240)
ML_StopShaderProgram()
ML_UsePerspectiveView
''
'' end drawing
''
IDirect3DDevice9_EndScene(g_pd3dDevice)
IDirect3DDevice9_Present(g_pd3dDevice, NULL, NULL, NULL, NULL )
end sub
''-----------------------------------------------------------------------------
'' Name: WinMain()
'' Desc: The application's entry point
''-----------------------------------------------------------------------------
function WinMain(byval hInstance as HINSTANCE, _
byval hPrevInstance as HINSTANCE, _
byval lpCmdLine as string, _
byval nCmdShow as integer _
) as integer
dim as WNDCLASSEX winClass
dim as MSG uMsg
with winClass
.lpszClassName = @"MY_WINDOWS_CLASS"
.cbSize = len(WNDCLASSEX)
.style = CS_HREDRAW or CS_VREDRAW
.lpfnWndProc = @WindowProc
.hInstance = hInstance
.hIcon = LoadIcon(hInstance, cast(LPCTSTR,IDI_APPLICATION))
.hIconSm = LoadIcon(hInstance, cast(LPCTSTR,IDI_APPLICATION))
.hCursor = LoadCursor(NULL, IDC_ARROW)
.hbrBackground = cast(HBRUSH,GetStockObject(BLACK_BRUSH))
.lpszMenuName = NULL
.cbClsExtra = 0
.cbWndExtra = 0
end with
if( RegisterClassEx( @winClass ) = FALSE ) then
return E_FAIL
end if
g_hWnd = CreateWindowEx( NULL, "MY_WINDOWS_CLASS", _
"Direct3D (DX9) - Primitive Types", _
WS_OVERLAPPEDWINDOW or WS_VISIBLE, _
0, 0, 640, 480, NULL, NULL, hInstance, NULL )
if( g_hWnd = NULL ) then
return E_FAIL
end if
ShowWindow( g_hWnd, nCmdShow )
UpdateWindow( g_hWnd )
init()
do while( uMsg.message <> WM_QUIT )
if( PeekMessage( @uMsg, NULL, 0, 0, PM_REMOVE ) ) then
TranslateMessage( @uMsg )
DispatchMessage( @uMsg )
else
render()
end if
loop
shutDown()
UnregisterClass( "MY_WINDOWS_CLASS", winClass.hInstance )
return uMsg.wParam
end function
''-----------------------------------------------------------------------------
'' Name: WindowProc()
'' Desc: The window's message handler
''-----------------------------------------------------------------------------
function WindowProc( byval hWnd as HWND, _
byval msg as UINT, _
byval wParam as WPARAM, _
byval lParam as LPARAM _
) as LRESULT
select case ( msg )
case WM_KEYDOWN
select case( wParam )
case VK_ESCAPE
PostQuitMessage(0)
end select
case WM_CLOSE
PostQuitMessage(0)
case WM_DESTROY
PostQuitMessage(0)
case else
return DefWindowProc( hWnd, msg, wParam, lParam )
end select
return 0
end function
''-----------------------------------------------------------------------------
'' Name: shutDown()
'' Desc: Release all Direct3D resources.
''-----------------------------------------------------------------------------
sub shutDown( )
if( g_pd3dDevice <> NULL ) then
IDirect3DDevice9_Release(g_pd3dDevice)
end if
if( g_pD3D <> NULL ) then
IDirect3D9_Release( g_pD3D )
end if
end sub
'-------------------------------------------------------------------------------
' Display FPS.
'-------------------------------------------------------------------------------
SUB Millisecs()
dim t=timer
if t-oldtime >=1 then
newtime = ticks
ticks=0
oldtime=timer
end if
TST = str( (newtime) )
TST = "FPS "+TST
for LP=1 to len(tst)
dim CH=(ASC(MID(TST,LP,1)))-31
DBFTEXT((LP*10),1,CH,&h443333)
NEXT
end sub
'-------------------------------------------------------------------------------
' Scrolling Message Routine By Shockwave / DBF
'-------------------------------------------------------------------------------
SUB MESSAGE()
dim hop,ecl as integer
HOP=0:' Used to jumpto next letter pos
ECL=0:' Used For Colour.
FOR LP=1 TO 66
IF LP<20 THEN ECL=ECL+10:' Change Colours
IF LP>46 THEN ECL=ECL-10
dim CH=(ASC(MID(SCROLlTEXT,LP+SCPTR,1)))-31:' Get Ascii for char
'-----------------------------------------------------------------------
' Call DBF Custom Text Routine;
'-----------------------------------------------------------------------
DBFTEXT (HOP-scoff,455+12*SIN((LP+GADD)/30),CH,RGB(ECL+30,ECL,ECL+40))
HOP=HOP+10
NEXT
'--------------------------------
'Scroll And Update If Needed; ---
'--------------------------------
scoff=scoff+1
if scoff> 10 then
scptr=scptr+1
if scptr>(len(scrolltext)-66) then scptr=0
scoff=scoff-10
end if
END SUB
'---------------------------------------
'--- MULTI DIRECTIONAL STARFIELD. ---
'---------------------------------------
SUB STARFIELD()
GADD=GADD+1
dim bb as integer
'---------------
' Movements; ---
'---------------
SMSIN=30*SIN(GADD/470)
SMCOS=40*COS(GADD/777)
ZMCOS=0.1*COS(GADD/907)
'---------------------------
' Get Deepest Star First;---
'---------------------------
STPTR=STST
for LP = 1 To STARS
'---------------------------------
' Translate Star To 2D Co-Ords ---
'---------------------------------
TX = INT((STX(STPTR) / STZ(STPTR))+320)
TY = INT((STY(STPTR) / STZ(STPTR))+240)
'--------------------
' Is It Onscreen? ---
'--------------------
if TX>-5 and TX<639 AND TY>-5 And TY<479 THEN
'--------------------------------
' Calculate Colour Multiplier;---
'--------------------------------
A=INT(-STZ(STPTR) + 32) shl 1
'-------------------------------------
' Draw Bob Size According To Depth;---
'-------------------------------------
bb=((int(STZ(STPTR)))/6)+1
'if bb<1 then bb=1
DRAWBOB (TX,TY,5,A)
'IF STZ(STPTR) < 10 THEN DRAWBOB (TX,TY,BB,A)
'IF STZ(STPTR >= 10) AND (STZ(STPTR) <20 ) THEN DRAWBOB (TX,TY,2,A)
'IF STZ(STPTR) >= 20 THEN DRAWBOB (TX,TY,1,A)
ENDIF
'---------------
' Move Star; ---
'---------------
STX(STPTR)=STX(STPTR)+SMSIN
STY(STPTR)=STY(STPTR)+SMCOS
STZ(STPTR)=STZ(STPTR)+ZMCOS
'------------------
' Bounds Checks;---
'------------------
' X Checks;
IF SMSIN>0 THEN
IF STX(STPTR)>=10000 THEN STX(STPTR)=STX(STPTR)-20000
ENDIF
IF SMSIN<0 THEN
IF STX(STPTR)<=-10000 THEN STX(STPTR)=STX(STPTR)+20000
ENDIF
' Y Checks;
IF SMCOS>0 THEN
IF STY(STPTR)>=10000 THEN STY(STPTR)=STY(STPTR)-20000
ENDIF
IF SMCOS<0 THEN
IF STY(STPTR)<=-10000 THEN STY(STPTR)=STY(STPTR)+20000
ENDIF
' Z Checks;
IF ZMCOS>0 THEN
IF STZ(STPTR)>=30 THEN STZ(STPTR)=STZ(STPTR)-30
STST=STST-1
IF STST<1 THEN STST=STARS
ENDIF
IF ZMCOS<0 THEN
IF STZ(STPTR)<=0 THEN STZ(STPTR)=STZ(STPTR)+30
STST=STST+1
IF STST>STARS THEN STST=1
ENDIF
STPTR=STPTR+1:' Update Pointer.
IF STPTR>STARS THEN STPTR=1:'Bounds Check.
next
END SUB
'-------------------------------------------------------------------------
'Sub To Draw A Letter AnyWhere On The Screen (With Clipping);
'-------------------------------------------------------------------------
sub DBFTEXT(BYVAL BX AS INTEGER , BYVAL BY AS INTEGER , BYVAL CH AS INTEGER , BYVAL CLR AS INTEGER)
dim blx,bly as integer
'---------------------------------
'Calculate Offset In Font Data;---
'---------------------------------
dim bm=(ch*81)-81
FOR BLY=0 TO 8
FOR BLX=1 TO 9
'--------
'Clip;---
'--------
IF (BX+BLX>0) AND (BX+BLX<639) AND (BY+BLY>0) AND (BY+BLY<479) THEN
'----------------------------------------------------
'Draw Pixel In Buffer If Onscreen And If Binary 1 ---
'----------------------------------------------------
dim MM= FONT(((BLY*9)+BLX)+BM)
IF MM >0 THEN BUFFER [((BY+BLY)*640)+BX+BLX]=CLR
END IF
NEXT
NEXT
END SUB
'-------------------------------------------------------------------------
' Sub To Draw A Bob Anywhere On The Screen;
'-------------------------------------------------------------------------
SUB DRAWBOB (BYVAL BX AS INTEGER , BYVAL BY AS INTEGER, BYVAL BNM AS INTEGER , BYVAL CL AS INTEGER)
DIM BLX , BLY AS INTEGER
'-----------------------
'Set Offset In Bob Bank;
'-----------------------
dim BM=(BNM*36)-36
dim MM
FOR BLY=0 TO 5
FOR BLX=1 TO 6
'---------
'CLIPPING;
'---------
IF (BX+BLX>0) AND (BX+BLX<639) AND (BY+BLY>0) AND (BY+BLY<479) THEN
'-------------
'COLOUR VALUE;
'-------------
if (by+BLY> 50) and (by+bly<430) then
MM= (BOB(((BLY*6)+BLX)+BM))*CL
else
MM= ((BOB(((BLY*6)+BLX)+BM))*CL) shr 1
endif
if MM>255 then MM=255
'------------------
'DRAW PIXEL OF BOB;
'------------------
IF MM >0 THEN BUFFER [((BY+BLY)*640)+BX+BLX]=CPAL(MM)
END IF
NEXT
NEXT
END SUB
'--------------------------------------------------------
' Clear Out Old Screen Buffer With Our Fake "Copperlist"
'--------------------------------------------------------
Sub ClearScreen()
Dim i as integer
for i = 0 to 640*480
buffer[i]=customcop(i)
next
End Sub
''
''
''
end WinMain( GetModuleHandle( null ), null, Command( ), SW_NORMAL )
'--------------------------------------------------------
' Our "Bobs"
' 0's are not blitted.
' The Higher The Number, The Brighter The Pixel.
'--------------------------------------------------------
'tiny
data 0,0,0,0,0,0
data 0,0,0,0,0,0
data 0,0,1,1,0,0
data 0,0,1,1,0,0
data 0,0,0,0,0,0
data 0,0,0,0,0,0
'small
data 0,0,0,0,0,0
data 0,0,1,1,0,0
data 0,1,2,2,1,0
data 0,1,2,2,1,0
data 0,0,1,1,0,0
data 0,0,0,0,0,0
'medium
data 0,0,1,1,0,0
data 0,0,2,2,0,0
data 1,2,3,3,2,1
data 1,2,3,3,2,1
data 0,0,2,2,0,0
data 0,0,1,1,0,0
'large
data 0,0,1,1,0,0
data 0,2,3,3,2,0
data 1,3,4,4,3,1
data 1,3,4,4,3,1
data 0,2,3,3,2,0
data 0,0,1,1,0,0
'Maximum
data 0,1,2,2,1,0
data 1,2,3,3,2,1
data 2,3,5,5,3,2
data 2,3,5,5,3,2
data 1,2,3,3,2,1
data 0,1,2,2,1,0
'==============================================================================
' Binary Font By Shockwave / DBF; (59 Chars)
'==============================================================================
'space
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'!
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
'"
data 0,1,1,0,1,1,0,0,0
data 0,1,1,0,1,1,0,0,0
data 0,1,1,0,1,1,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'#
data 0,0,0,0,0,0,0,0,0
data 0,1,1,0,0,0,1,1,0
data 1,1,1,1,1,1,1,1,1
data 0,1,1,0,0,0,1,1,0
data 0,1,1,0,0,0,1,1,0
data 0,1,1,0,0,0,1,1,0
data 1,1,1,1,1,1,1,1,1
data 0,1,1,0,0,0,1,1,0
data 0,0,0,0,0,0,0,0,0
'£
data 0,0,1,1,1,1,0,0,0
data 0,1,1,1,1,1,0,0,0
data 0,1,1,0,0,0,0,0,0
data 0,1,1,0,0,0,0,0,0
data 0,1,1,1,1,0,0,0,0
data 0,1,1,0,0,0,0,0,0
data 0,1,1,0,0,0,0,0,0
data 1,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,0
'%
data 0,0,0,0,0,0,0,0,0
data 0,1,1,0,0,0,0,0,0
data 0,1,1,0,0,0,1,0,0
data 0,0,0,0,0,1,0,0,0
data 0,0,0,0,1,0,0,0,0
data 0,0,0,1,0,0,0,0,0
data 0,0,1,0,0,0,1,1,0
data 0,0,0,0,0,0,1,1,0
data 0,0,0,0,0,0,0,0,0
'&
data 0,0,0,1,1,1,0,0,0
data 0,0,1,1,1,1,1,0,0
data 0,0,1,1,0,1,1,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,1,1,0,1,1,0,0
data 0,1,1,0,0,1,1,1,1
data 0,1,1,1,0,0,1,1,0
data 0,0,1,1,1,1,1,0,0
data 0,0,0,0,1,1,0,0,0
''
data 0,1,1,0,0,0,0,0,0
data 0,1,1,0,0,0,0,0,0
data 0,1,1,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'(
data 0,0,0,0,0,1,1,1,0
data 0,0,0,0,1,1,1,1,0
data 0,0,0,0,1,1,0,0,0
data 0,0,0,0,1,1,0,0,0
data 0,0,0,0,1,1,0,0,0
data 0,0,0,0,1,1,0,0,0
data 0,0,0,0,1,1,0,0,0
data 0,0,0,0,1,1,1,1,0
data 0,0,0,0,0,1,1,1,0
')
data 0,1,1,1,0,0,0,0,0
data 0,1,1,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,1,1,1,1,0,0,0,0
data 0,1,1,1,0,0,0,0,0
'*
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'+
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
''
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,0,1,0,0,0,0
'-
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'.
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
'/
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'0
data 0,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,0
'1
data 0,0,0,1,1,0,0,0,0
data 0,0,1,1,1,0,0,0,0
data 0,0,1,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,1,1,1,1,1,0,0,0
data 0,1,1,1,1,1,0,0,0
'2
data 0,0,1,1,1,1,1,1,0
data 0,0,1,1,1,1,1,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 0,1,1,1,1,1,1,1,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
'3
data 1,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,0
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,1,1,1,1,0
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,0
'4
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,1,1,0,0,0
data 1,1,0,0,1,1,0,0,0
data 1,1,1,1,1,1,1,1,1
data 0,0,0,0,0,1,1,0,0
data 0,0,0,0,0,1,1,0,0
data 0,0,0,0,0,1,1,0,0
data 0,0,0,0,0,1,1,0,0
'5
data 0,1,1,1,1,1,1,0,0
data 0,1,1,1,1,1,1,0,0
data 0,1,1,0,0,0,0,0,0
data 0,1,1,0,0,0,0,0,0
data 0,1,1,1,1,1,1,1,0
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,0
'6
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,1,1,1,1,1,1,0
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,0
'7
data 0,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,1,1,1,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,1,1,0
data 0,0,0,0,0,0,1,1,0
data 0,0,0,0,0,0,1,1,0
'8
data 0,0,1,1,1,1,1,0,0
data 0,1,1,1,1,1,1,1,0
data 0,1,1,0,0,0,1,1,0
data 0,1,1,0,0,0,1,1,0
data 0,0,1,1,1,1,1,0,0
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,0
'9
data 0,0,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,1
data 0,1,1,0,0,0,0,1,1
data 0,1,1,0,0,0,0,1,1
data 0,0,1,1,1,1,1,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
':
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
';
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'<
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'=
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'>
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'?
data 0,0,1,1,1,1,1,0,0
data 0,1,1,1,1,1,1,1,0
data 0,1,1,0,0,0,1,1,0
data 0,0,0,0,0,0,1,1,0
data 0,0,0,1,1,1,1,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
'@
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'a
data 0,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,0
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
'b
data 1,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,0
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
'c
data 0,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,1
'd
data 1,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,0
'e
data 0,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,1,1,1,1,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,1
'f
data 0,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,1,1,1,1,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
'g
data 0,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,0
'h
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
'i
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
data 0,0,0,0,1,0,0,0,0
data 0,0,0,0,1,0,0,0,0
data 0,0,0,0,1,0,0,0,0
data 0,0,0,0,1,0,0,0,0
data 0,0,0,0,1,0,0,0,0
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
'j
data 1,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,0
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,0
'k
data 1,1,0,0,0,0,1,1,0
data 1,1,0,0,0,0,1,1,0
data 1,1,0,0,0,0,1,1,0
data 1,1,0,0,0,0,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
'l
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,1
'm
data 0,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,1,0,0,1,1
data 1,1,0,0,1,0,0,1,1
data 1,1,0,0,1,0,0,1,1
data 1,1,0,0,1,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
'n
data 0,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
'o
data 0,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,0
'p
data 1,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
'q
data 0,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,1,0,1,1
data 1,1,0,0,0,0,1,1,1
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,0
'r
data 1,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,0
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
's
data 0,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 0,1,1,1,1,1,1,1,0
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,0
't
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
data 0,0,0,0,1,0,0,0,0
data 0,0,0,0,1,0,0,0,0
data 0,0,0,0,1,0,0,0,0
data 0,0,0,0,1,0,0,0,0
data 0,0,0,0,1,0,0,0,0
data 0,0,0,0,1,0,0,0,0
data 0,0,0,0,1,0,0,0,0
'u
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,0
'v
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,0,0,0,1,1,1
data 0,1,1,1,1,1,1,1,0
data 0,0,1,1,1,1,1,0,0
'w
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,1,0,0,1,1
data 1,1,0,0,1,0,0,1,1
data 1,1,0,0,1,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,0
'x
data 0,1,1,0,0,0,1,1,0
data 0,1,1,0,0,0,1,1,0
data 0,1,1,0,0,0,1,1,0
data 0,1,1,0,0,0,1,1,0
data 0,1,1,1,1,1,1,1,0
data 1,1,1,0,0,0,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
'y
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 0,1,1,1,1,1,1,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,0
'z
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
data 0,0,0,0,0,0,1,1,1
data 0,0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
'===============================================================================
' ***END***
'===============================================================================
-
Well that certainly makes the routines easier to port.. I guess that what you are doing is treating the buffer as a sprite :)
How I wish that the exe size would be small enough for me to use this! Ie. Less than 100kb!
Good work Emil. You've impressed me again.
Btw, where did you find that old source of mine? It's embarrasingly bad!
-
This looks amazingly cool & welldone dude, but I'm having a few teething troubles getting the source to run properlly, as it's having difficulty in finding the includes.
-
I think that Emil has made an installer for ogermagic that will take care of all that problem for you. I also had the same problems, so I am waiting for this installer so that I can just load the source into my ide..
-
Thanks guys. :)
Already I have made an OgreMagic installer but I am waiting for final form of my library then I will distribute it.
Shocky , I have found that old code in my computer , may be I got it more than 7 months ago in dbf forum.
The idea is that , you must create an empty sprite which has the desired buffer length the when you want to draw to it you must lock the sprite to obtain a butter pointer then use this pointer to fill the buffer as you did with your software code then unlock the sprite then you can do what you want with that sprite.
Now I am working in simplify tasks by using some similar tiny PCT functions but with deferent parameters.
About the size of file, after some thinking I have decided that I will use a DLL ,OgreMagic.DLL, instead of static library because I wont my library work with as many language as possible , and there will be no problem in send examples because the installer will copy the needed dlls when installation process.
-
Yes, this will work as long as the people who are running the program have the dll installed. Unfortunately if they haven't it is still a massive ile for a tiny intro that should only be 100kb at the most.
I really do hope that you will maybe think of having a static library in the future :) I understand that you just want speed and compatibility for now though.