Announcement

Collapse
No announcement yet.

PBDLL OpenGL 3d FLY easy model

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • PBDLL OpenGL 3d FLY easy model

    ! Specialy Thank's for Greg Turgeon.
    '
    'I use PB/DLL 6.0 WITH old standart WIN32API! <<<
    'You can find all need information on:
    'http://www.sublevel6.f2s.com/
    'http://www.gamedeveloper.org/delphi3d/tools.shtml
    'http://www.geocities.com/~directx/
    'http://www.gfcsoftware.com/directx.htm
    ' and other...
    '
    'This is fly model for PBDLL,but this is not The ready project.
    'You can easily transform this model for DirectX
    'The original is made on C++.
    'I have not much transformed this model for PBDLL
    '
    'You already can begin development of combat fly simulators...
    '
    ! In this code there are no restrictions <<<<
    '---------------------------------------
    'Management of flight - mouse (press button)
    'If you want - that connect Joystick (press button)
    '----------------------------------------
    '
    'Code crude,
    'I did not optimize a code
    'I have tested a code on AMD K6-II-450 and video-8Mb
    'The model works good.
    '
    'You can make the good project of this model
    '______________________________V.Shulakov___________________________
    '

    #COMPILE EXE
    #DIM ALL
    #INCLUDE "GL/glut.inc"
    #INCLUDE "win32api.inc"


    %TERRAIN_COUNT = 41 '/* Number of postings (must be odd) */
    %TERRAIN_SIZE = 4000 '/* SIZE of terrain database */
    %TERRAIN_VIEW = 1000 '/* Viewable distance IN terrain database */
    %TERRAIN_SPACING = 100 '/* Spacing between postings */

    TYPE TP
    v(0 TO 2) AS DOUBLE ' /* Position */
    END TYPE


    GLOBAL M_PI AS DOUBLE
    GLOBAL Widths AS LONG '/* Widths of window */
    GLOBAL Height AS LONG '/* Height of window */
    GLOBAL LastTime AS DOUBLE '/* Last update time */
    GLOBAL MouseStartX AS LONG '/* Initial mouse X position */
    GLOBAL MouseStartY AS LONG '/* Initial mouse Y position */
    GLOBAL MOUSEXs AS LONG '/* Mouse X position */
    GLOBAL MOUSEYs AS LONG '/* Mouse Y position */
    GLOBAL ViewAngle AS LONG '/* Viewing angle */
    GLOBAL PolyMode AS LONG '/* Polygon drawing mode */
    GLOBAL UseTexturing AS LONG '/* Use texturing? */
    GLOBAL ShowSky AS LONG '/* SHOW sky? */
    GLOBAL Velocity AS DOUBLE '/* Flying speed */
    GLOBAL LandTexture AS LONG '/* Land texture object */
    GLOBAL SkyTexture AS LONG '/* Sky texture object */
    GLOBAL ShowTerrain AS LONG
    'I
    DECLARE SUB Idle()
    DECLARE SUB Joystick CDECL(BYVAL STATEs AS BYTE,BYVAL x AS LONG,BYVAL y AS LONG,BYVAL z AS LONG)
    DECLARE FUNCTION Keyboard CDECL(BYVAL key AS BYTE,BYVAL x AS LONG,BYVAL y AS LONG) AS LONG
    DECLARE SUB Motion CDECL(BYVAL x AS LONG, BYVAL y AS LONG)
    DECLARE SUB MOUSEs CDECL(BYVAL BUTTONs AS LONG,BYVAL STATEs AS BYTE,BYVAL x AS LONG, BYVAL y AS LONG)
    DECLARE SUB Redraw()
    DECLARE SUB Resize CDECL(BYVAL Widths AS LONG,BYVAL height AS LONG)
    DECLARE FUNCTION TextureLoad CDECL(STRING,BYVAL LONG,BYVAL LONG,BYVAL LONG,BYVAL LONG) AS LONG
    'II
    DECLARE SUB BuildTerrain()
    DECLARE SUB DivideTerrain CDECL(BYVAL LONG,BYVAL LONG,BYVAL LONG,BYVAL LONG)

    ' 'main()' - Open a window and display a sphere and cube.
    '__________________________________________________________
    FUNCTION PBMAIN AS LONG
    RANDOMIZE 2
    DIM Position(0:2) AS GLOBAL DOUBLE '/* Position of viewer */
    DIM Orientation(0:2) AS GLOBAL DOUBLE '/* Orientation of viewer */
    GLOBAL L_PI AS DOUBLE
    DIM Terrain(%TERRAIN_COUNT,%TERRAIN_COUNT) AS GLOBAL TP

    ! fldpi
    ! fst M_PI
    ! finit

    L_PI=M_PI / 180

    PolyMode = %GL_FILL
    UseTexturing = 1
    ShowSky = 1
    Velocity = 50
    glutInitDisplayMode %GLUT_RGB OR %GLUT_DOUBLE OR %GLUT_DEPTH
    glutInitWindowSize 400, 300
    glutCreateWindow "WOW"

    ' IF NOT glutDeviceGet(%GLUT_HAS_JOYSTICK) THEN
    ' glutJoystickFunc CODEPTR(Joystick), 200
    ' END IF

    glutKeyboardFunc CODEPTR(Keyboard)
    glutMotionFunc CODEPTR(Motion)
    glutMouseFunc CODEPTR(MOUSEs)
    glutReshapeFunc CODEPTR(Resize)
    glutDisplayFunc CODEPTR(Redraw)


    LandTexture = TextureLoad("NO-FILE!", %GL_FALSE, %GL_LINEAR,_
    %GL_LINEAR, %GL_REPEAT)

    ' LandTexture = TextureLoad("land.bmp", %GL_FALSE, %GL_LINEAR,_
    ' %GL_LINEAR, %GL_REPEAT)
    ' SkyTexture = TextureLoad("sky.bmp", %GL_FALSE, %GL_LINEAR,_
    ' %GL_LINEAR, %GL_CLAMP)
    BuildTerrain


    LastTime = TIMER
    glutIdleFunc CODEPTR(Idle)

    glutMainLoop
    END FUNCTION
    '___________________________________________________
    '
    SUB Idle
    LOCAL movex AS DOUBLE
    LOCAL movey AS DOUBLE '/* Scaled mouse movement */
    LOCAL curtime AS DOUBLE '/* Current time IN milliseconds */
    LOCAL distance AS DOUBLE '/* Distance TO move */
    LOCAL cheading AS DOUBLE '/* Cosine of heading */
    LOCAL sheading AS DOUBLE '/* Sine of heading */
    LOCAL cpitch AS DOUBLE '/* Cosine of pitch */
    LOCAL spitch AS DOUBLE '/* Sine of pitch */

    ' STATIC fps_count AS LONG '/* Frames per second count */
    ' STATIC fps_time AS DOUBLE'/* Frames per second time */

    ' /* GET the current system time TO figure out how far TO move. */
    curtime = TIMER
    distance = curtime - LastTime
    LastTime = curtime

    ' * See how far the mouse pointer is FROM the 'center' (click)
    ' * position.

    movex = 0.01 * SQR(Velocity) * (MOUSEXs - MouseStartX)
    movey = 0.01 * SQR(Velocity) * (MOUSEYs - MouseStartY)


    ' * Adjust roll, pitch, AND heading according TO the current
    ' * mouse inputs AND orientation.

    Orientation(0) = Orientation(0) + distance * movey * COS(Orientation(2) * L_PI)
    Orientation(1) = Orientation(1) + distance * movey * SIN(Orientation(2) * L_PI)
    Orientation(2) = Orientation(2) + distance * movex

    IF Orientation(0) < -90.0 THEN
    Orientation(0) = -180.0 - Orientation(0)
    Orientation(2) = Orientation(2) + 180.0 '2
    ELSEIF Orientation(0) > 90.0 THEN
    Orientation(0) = 180.0 - Orientation(0)
    Orientation(2) = Orientation(2) - 180.0 '2
    END IF

    IF Orientation(1) < 0.0 THEN
    Orientation(1) = Orientation(1) + 360.0
    ELSEIF Orientation(1) > 360.0 THEN
    Orientation(1) = Orientation(1) - 360.0
    END IF

    IF Orientation(2) < -180.0 THEN
    Orientation(2) = Orientation(2) + 360.0
    ELSEIF Orientation(2) > 180.0 THEN
    Orientation(2) = Orientation(2) - 360.0
    END IF

    ' /* Move based upon the current orientation... */
    cheading = COS(Orientation(1) * L_PI)
    sheading = SIN(Orientation(1) * L_PI)
    cpitch = COS(Orientation(0) * L_PI)
    spitch = SIN(Orientation(0) * L_PI)

    Position(0) = Position(0)+Velocity * distance * sheading * cpitch
    Position(1) = Position(1)+Velocity * distance * spitch
    Position(2) = Position(2)-Velocity * distance * cheading * cpitch
    !;- âïåðåä ;+íàçàä
    ' /* Limit the viewer TO the terrain... */
    IF Position(0) < (-0.45 * %TERRAIN_SIZE) THEN
    Position(0) = -0.45 * %TERRAIN_SIZE
    Orientation(1) = Orientation(1) + 10.0 * distance
    END IF
    IF Position(0) > 0.45 * %TERRAIN_SIZE THEN
    Position(0) = 0.45 * %TERRAIN_SIZE
    Orientation(1) = Orientation(1) + 10.0 * distance
    END IF
    IF Position(2) < -0.45 * %TERRAIN_SIZE THEN
    Position(2) = -0.45 * %TERRAIN_SIZE
    Orientation(1) = Orientation(1) + 10.0 * distance
    END IF
    IF Position(2) > 0.45 * %TERRAIN_SIZE THEN
    Position(2) = 0.45 * %TERRAIN_SIZE
    Orientation(1) = Orientation(1) + 10.0 * distance
    END IF
    IF Position(1) < 5 THEN
    Position(1) = 5.0
    Orientation(0) = Orientation(0) + 5.0 * distance
    END IF
    IF Position(1) > 0.2 * %TERRAIN_SIZE THEN
    Position(1) = 0.2 * %TERRAIN_SIZE
    Orientation(0) = Orientation(0) - 5.0 * distance
    END IF

    glutPostRedisplay
    END SUB
    '________________________________________________________
    '

    '/*
    ' * 'Joystick()' - Handle joystick movement.
    '*/

    SUB Joystick CDECL(BYVAL STATEs AS BYTE,BYVAL x AS LONG,BYVAL y AS LONG,BYVAL z AS LONG)
    STATIC last_state AS LONG ' 0 /* Last BUTTON STATE */

    IF last_state <> STATEs THEN '!=
    ' /* BUTTON changed STATE see what the NEW STATE is... */
    ' /* Start flying */
    MouseStartX = x / 2
    MOUSEXs = x / 2
    MouseStartY = y / 2
    MOUSEYs = y / 2
    LastTime = TIMER
    glutIdleFunc CODEPTR(Idle)

    last_state = STATEs
    END IF

    ' /* Update the joystick/mouse position */
    IF STATEs THEN

    MOUSEXs = x / 2
    MOUSEYs = y / 2
    END IF

    IF z > -999 THEN Velocity = (999 - z) * 0.045 + 10.0

    END SUB
    '__________________________________________________
    '

    '/*
    '* 'Keyboard()' - Handle key presses...
    '*/

    FUNCTION Keyboard CDECL(BYVAL key AS BYTE, BYVAL x AS LONG, BYVAL y AS LONG) AS LONG
    SELECT CASE key
    CASE 50
    IF (Velocity > 5) THEN Velocity = Velocity - 5
    CASE 51
    IF (Velocity < 100) THEN Velocity = Velocity + 5
    END SELECT

    glutPostRedisplay
    END FUNCTION
    '___________________________________________________
    '
    '/*
    ' * 'Motion()' - Handle mouse pointer motion.
    '*/
    SUB Motion CDECL(BYVAL x AS LONG, BYVAL y AS LONG)
    MOUSEXs = x
    MOUSEYs = y
    END SUB

    '/*
    ' * 'Mouse()' - Handle mouse button events.
    ' */
    '__________________________________________________
    '
    SUB MOUSEs CDECL(BYVAL BUTTONs AS LONG,BYVAL STATEs AS BYTE,BYVAL x AS LONG, BYVAL y AS LONG)

    IF STATEs = %GLUT_DOWN THEN
    ' /* Start flying */
    MouseStartX = x
    MOUSEXs = x
    MouseStartY = y
    MOUSEYs = y
    LastTime = TIMER
    glutIdleFunc CODEPTR(Idle)
    END IF
    END SUB
    '_____________________________________________________
    '
    '/*
    ' * 'Redraw()' - Redraw the window...
    '*/
    SUB Redraw
    LOCAL theta AS DOUBLE
    LOCAL st AS DOUBLE
    LOCAL ct AS DOUBLE
    LOCAL i AS LONG
    LOCAL j AS LONG
    LOCAL tps AS TP PTR

    ' /* Clear the window TO light blue... */
    ' glClear %GL_DEPTH_BUFFER_BIT
    glClearColor 0.75, 0.75, 1.0, 1.0
    glClear %GL_COLOR_BUFFER_BIT OR %GL_DEPTH_BUFFER_BIT


    ' /* Setup viewing transformations FOR the current orientation... */
    glPushMatrix
    glRotatef ViewAngle, 0.0, 1.0, 0.0 ' float
    glRotatef Orientation(2), 0.0, 0.0, 1.0
    glRotatef Orientation(0), -1.0, 0.0, 0.0
    glRotatef Orientation(1), 0.0, 1.0, 0.0
    glTranslatef 0.0, -Position(1), 0.0

    glPolygonMode %GL_FRONT_AND_BACK, PolyMode

    !;-------------------------------------
    ' /* THEN DRAW the terrain... */
    glEnable %GL_TEXTURE_2D
    glBindTexture %GL_TEXTURE_2D, LandTexture

    glTranslatef -Position(0), 0.0, -Position(2)

    glColor3f 1,0.8,0.3 '0.3,0.8,1
    IF ISFALSE (ShowTerrain) THEN

    glEnable %GL_CULL_FACE
    glEnable %GL_DEPTH_TEST
    glDepthFunc %GL_LEQUAL

    tps = VARPTR(Terrain(0,0))
    FOR i = 0 TO %TERRAIN_COUNT - 1
    glBegin %GL_TRIANGLE_STRIP
    FOR j = 0 TO %TERRAIN_COUNT
    INCR tps
    glTexCoord2f 50.0 * i / (%TERRAIN_COUNT - 1),_
    50.0 * j / (%TERRAIN_COUNT - 1)

    glVertex3f @tps.v(0),@tps.v(1),@tps.v(2)

    glTexCoord2f 50*(i + 1)/(%TERRAIN_COUNT - 1),_
    50*j/(%TERRAIN_COUNT - 1)
    glVertex3f @tps[%TERRAIN_COUNT].v(0),@tps[%TERRAIN_COUNT].v(1),@tps[%TERRAIN_COUNT].v(2)
    NEXT j
    glEnd
    NEXT i
    glDisable %GL_CULL_FACE
    glDisable %GL_DEPTH_TEST
    ELSE
    '--------
    glBegin %GL_QUADS
    glTexCoord2f 0.0, 0.0
    glVertex3f -0.5 * %TERRAIN_SIZE, 0.0, -0.5 * %TERRAIN_SIZE
    glTexCoord2f 50.0, 0.0
    glVertex3f 0.5 * %TERRAIN_SIZE, 0.0, -0.5 * %TERRAIN_SIZE
    glTexCoord2f 50.0,50.0
    glVertex3f 0.5 * %TERRAIN_SIZE, 0.0, 0.5 * %TERRAIN_SIZE
    glTexCoord2f 0.0, 50.0
    glVertex3f -0.5 * %TERRAIN_SIZE, 0.0, 0.5 * %TERRAIN_SIZE
    glEnd
    END IF
    glPopMatrix
    glDisable %GL_TEXTURE_2D

    ' /* Finish UP */
    glutSwapBuffers
    END SUB

    '_________________________________________________________
    '
    '/*
    '* 'Resize()' - Resize the window...
    '*/

    SUB Resize CDECL(BYVAL Widths AS LONG,BYVAL Height AS LONG)
    glViewport 0, 0, Widths, height
    glMatrixMode %GL_PROJECTION
    glLoadIdentity
    gluPerspective 24 , Widths /height, 4.0, %TERRAIN_VIEW
    glMatrixMode %GL_MODELVIEW
    END SUB

    '_______________________________________________
    '

    FUNCTION LoadDIBitmap(FILENAMEs AS STRING,info AS BITMAPINFO) AS LONG
    #REGISTER NONE

    LOCAL bitt AS LONG ' /* Bitmap pixel bits */
    LOCAL bitsize AS LONG ' /* SIZE of bitmap */
    LOCAL i AS LONG


    LOCAL a AS STRING

    A=CHR$(&H28,0,0,0, &H80,0,0,0, &H80,0,0,0, 1,0,&H18,0,_
    0,0,0,0, 0,&HC0,0,0, 1,0, 0, 0, 1,0,0,0,_
    0,0,0,0,0,0,0,0)

    POKE$ VARPTR(info),a


    bitsize = info.bmiHeader.biSizeImage
    IF bitsize = 0 THEN
    bitsize = (info.bmiHeader.biWidth * _
    info.bmiHeader.biBitCount + 7) / 8 * _
    ABS(info.bmiHeader.biHeight)
    END IF

    DIM yyy(bitsize) AS GLOBAL BYTE
    bitt = VARPTR(yyy(1))

    bitsize=16384
    ! PUSHAD
    ! MOV ESI,OFFSET TDAT ;DATA -> text
    ! MOV EBX,OFFSET TPAL ;PALETTE
    ! MOV EDI,BITT ;YYY() TEXTURE y DATA
    ! MOV ECX,0
    MFOR1:'--------------<
    ! SUB EAX,EAX
    ! MOV AL ,[ESI]
    ! SHL EAX,2
    ! MOV EDX,EBX
    ! ADD EDX,EAX

    ! MOV al,[EDX]
    ! MOV [EDI],al
    ! inc edi
    ! inc edx
    !;----------------
    ! MOV al,[EDX]
    ! MOV [EDI],al
    ! inc edi
    ! inc edx
    !;---------------
    ! MOV al,[EDX]
    ! MOV [EDI],al
    ! inc edi
    ! INC ESI

    ! INC ECX
    ! CMP ECX,bitsize
    ! JL MFOR1 ;-------------->
    ! POPAD


    FUNCTION=bitt
    END FUNCTION

    '__________________________________________________
    '
    FUNCTION TextureLoad (filenames AS STRING,_
    BYVAL alpha AS LONG,_
    BYVAL minfilter AS LONG,_
    BYVAL magfilter AS LONG,_
    BYVAL wrap AS LONG) AS LONG

    LOCAL i AS LONG '/* Looping var */
    LOCAL info AS BITMAPINFO ' /* Bitmap information */
    LOCAL bitss AS BYTE PTR ' /* Bitmap RGB PIXELS */
    LOCAL PTRs AS BYTE PTR ' /* Pointer into BIT buffer */
    LOCAL rgba AS BYTE PTR ' /* RGBA pixel buffer */
    LOCAL rgbaptr AS BYTE PTR ' /* Pointer into RGBA buffer */
    LOCAL temp AS BYTE ' /* Swapping variable */
    LOCAL TYPEs AS LONG ' /* Texture TYPE */
    LOCAL texture AS LONG ' /* Texture object */

    ' /* Try loading the bitmap file... */
    bitss = LoadDIBitmap(FILENAMEs, info)

    ' /* Figure out the type of texture... */
    IF info.bmiHeader.biHeight = 1 THEN
    TYPEs = %GL_TEXTURE_1D
    ELSE
    TYPEs = %GL_TEXTURE_2D
    END IF

    ' /* Create and bind a texture object */
    glGenTextures 1, texture
    glBindTexture TYPEs, texture

    ' /* Set texture parameters */
    glTexParameteri TYPEs, %GL_TEXTURE_MAG_FILTER, magfilter
    glTexParameteri TYPEs, %GL_TEXTURE_MIN_FILTER, minfilter
    glTexParameteri TYPEs, %GL_TEXTURE_WRAP_S, wrap
    glTexParameteri TYPEs, %GL_TEXTURE_WRAP_T, wrap
    glTexEnvi TYPEs, %GL_TEXTURE_ENV_MODE, %GL_MODULATE

    IF ISTRUE (alpha) THEN

    DIM xxx(1:info.bmiHeader.biWidth*info.bmiHeader.biHeight * 4) AS LOCAL LONG
    rgba=VARPTR(xxx(1))
    rgbaptr = rgba
    PTRs = bitss
    FOR i = info.bmiHeader.biWidth * info.bmiHeader.biHeight TO 0 STEP -1

    rgbaptr = rgbaptr + 4
    PTRs = PTRs + 3

    @rgbaptr[0] = @ptrs[0]
    @rgbaptr[1] = @ptrs[1]
    @rgbaptr[2] = @ptrs[2]
    @rgbaptr[3] = (@ptrs[0] + @ptrs[1] + @ptrs[2]) / 3
    NEXT i


    ' /*
    ' * SET texture IMAGE; IF the minification filter uses mip-mapping
    ' * THEN use gluBuild2D/1DMipmaps() TO load the texture...
    ' */
    IF (minfilter = %GL_LINEAR) OR (minfilter = %GL_NEAREST) THEN
    glTexImage2D TYPEs, 0, 4, info.bmiHeader.biWidth,_
    info.bmiHeader.biHeight, 0, %GL_RGBA,_
    %GL_UNSIGNED_BYTE,xxx(1)
    ELSEIF TYPEs = %GL_TEXTURE_1D THEN
    gluBuild1DMipmaps TYPEs, 4, info.bmiHeader.biWidth,_
    %GL_RGBA, %GL_UNSIGNED_BYTE, xxx(1)
    ELSE
    gluBuild2DMipmaps TYPEs, 3, info.bmiHeader.biWidth,_
    info.bmiHeader.biHeight,%GL_RGBA,_
    %GL_UNSIGNED_BYTE, xxx(1)
    END IF
    ELSE
    ' * SET texture IMAGE; IF the minification filter uses mip-mapping
    ' * THEN use gluBuild2D/1DMipmaps() TO load the texture...
    IF (minfilter = %GL_LINEAR) OR (minfilter = %GL_NEAREST) THEN
    glTexImage2D TYPEs, 0, 3, info.bmiHeader.biWidth,_
    info.bmiHeader.biHeight, 0,%GL_RGB,_
    %GL_UNSIGNED_BYTE, yyy(2)

    ELSEIF TYPEs = %GL_TEXTURE_1D THEN
    gluBuild1DMipmaps TYPEs, 3, info.bmiHeader.biWidth,_
    %GL_RGB,%GL_UNSIGNED_BYTE, yyy(2)
    ELSE
    gluBuild2DMipmaps TYPEs, 3, info.bmiHeader.biWidth,_
    info.bmiHeader.biHeight,%GL_RGB,_
    %GL_UNSIGNED_BYTE, yyy(2)
    END IF
    END IF
    RESET info
    ERASE yyy()
    FUNCTION = texture
    END FUNCTION
    '______________________________________________________
    '
    '/*
    '* 'BuildTerrain()' - Build a fractal landscape...
    '*/

    SUB BuildTerrain()
    LOCAL i AS LONG
    LOCAL j AS LONG
    LOCAL tps AS TP PTR
    LOCAL nx AS DOUBLE '/* Normal components */
    LOCAL ny AS DOUBLE '/* Normal components */
    LOCAL nz AS DOUBLE '/* Normal components */
    LOCAL nw AS DOUBLE '/* Normal components */

    OPEN "b" FOR APPEND AS 5

    tps = VARPTR(Terrain(0,0))
    FOR i = 0 TO %TERRAIN_COUNT
    FOR j = 0 TO %TERRAIN_COUNT
    INCR tps
    @tps.v(0) = %TERRAIN_SPACING*i-0.5*%TERRAIN_SIZE
    @tps.v(1) = 2
    @tps.v(2) = 0.5*%TERRAIN_SIZE-%TERRAIN_SPACING*j
    NEXT j
    NEXT i
    CLOSE
    DivideTerrain 0,%TERRAIN_COUNT-1,0,%TERRAIN_COUNT-1
    '/* Position the viewer just above the terrain */
    Position(1) = Terrain(%TERRAIN_COUNT / 2,%TERRAIN_COUNT / 2).v(1) + 10
    END SUB
    '_____________________________________________________________
    '
    '/*
    ' * 'DivideTerrain()' - Subdivide terrain until all of the landscape is done.
    '*/
    SUB DivideTerrain(BYVAL LEFTs AS LONG,_ ', /* I - LEFT posting */
    BYVAL RIGHTs AS LONG,_ ', /* I - RIGHT posting */
    BYVAL bottom AS LONG,_ '_ /* I - Bottom posting */
    BYVAL top AS LONG) '_ /* I - Top posting */

    LOCAL x AS LONG
    LOCAL y AS LONG '/* Middle column AND row */
    LOCAL halfel AS LONG
    LOCAL maxel AS LONG '/* Maximum amount of change FOR middle */

    x = (LEFTs + RIGHTs) / 2
    y = (bottom + top) / 2
    halfel = RND(0,50) + 50
    maxel = 2 * halfel + 1

    Terrain(x,bottom).v(1) = 0.5 * (Terrain(lefts, bottom).v(1)+ _
    Terrain(rights,bottom).v(1))+ _
    (RND(0,maxel) - halfel) * 0.2

    Terrain(x,top).v(1) = 0.5 * (Terrain(lefts,top).v(1)+ _
    Terrain(rights,top).v(1))+ _
    (RND(0,maxel) - halfel) * 0.2

    Terrain(lefts,y).v(1) = 0.5 * (Terrain(lefts,bottom).v(1)+_
    Terrain(lefts,top).v(1))+_
    (RND(0,maxel) - halfel) * 0.2

    Terrain(rights,y).v(1) = 0.5 * (Terrain(rights,bottom).v(1)+_
    Terrain(rights,top).v(1))+_
    (RND(0,maxel) - halfel) * 0.2

    IF (x=%TERRAIN_COUNT/2) OR (y=%TERRAIN_COUNT/2) THEN
    Terrain(x,y).v(1) = 0.25 * (Terrain(lefts,bottom).v(1)+_
    Terrain(rights,bottom).v(1)+_
    Terrain(lefts,top).v(1)+_
    Terrain(rights,top).v(1))+_
    (RND(0, maxel) - halfel) * 0.5
    ELSE
    Terrain(x,y).v(1) = 0.25 * (Terrain(lefts,bottom).v(1)+_
    Terrain(rights,bottom).v(1)+_
    Terrain(lefts,top).v(1)+_
    Terrain(rights,top).v(1))+_
    (RND(0,maxel) - halfel) * 0.2
    END IF

    IF (x - LEFTs) > 1 THEN
    DivideTerrain LEFTs, x, bottom, y
    DivideTerrain LEFTs, x, y, top
    DivideTerrain x, RIGHTs, bottom, y
    DivideTerrain x, RIGHTs, y, top
    END IF
    END SUB
    '________________________________________________________
    '
    SUB txtdat
    tpal: 'PALETTE
    ! DB &h47,&h47,&h47,&h47, &h6A,&h6A,&h6A,&h6A
    ! DB &h8C,&h8C,&h8C,&h8C, &hAA,&hAA,&hAA,&hAA
    ! DB &hC4,&hC4,&hC4,&hC4, &hD8,&hD8,&hD8,&hD8
    tdat: 'TEXTURE DATA
    ! DD &h03030202,&h03040304,&h02010303,&h02020303
    ! DD &h02030204,&h03040304,&h02020202,&h03030402
    ! DD &h03030403,&h02030203,&h03030203,&h03020303
    ! DD &h03020202,&h02020201,&h03020302,&h03030203
    ! DD &h03030302,&h03030303,&h03020302,&h03040303
    ! DD &h03030303,&h02030303,&h03030202,&h03020302
    ! DD &h02030202,&h03030302,&h04030302,&h02020202
    ! DD &h02020302,&h02030202,&h02010303,&h03030303
    ! DD &h03020302,&h03030303,&h03030404,&h02020303
    ! DD &h02020302,&h03030403,&h03020403,&h04030203
    ! DD &h03020302,&h03020303,&h02030304,&h03020202
    ! DD &h03030303,&h01020203,&h03030202,&h02020303
    ! DD &h04020203,&h03030303,&h02030303,&h04040303
    ! DD &h03030203,&h03040302,&h03030203,&h03030202
    ! DD &h03030202,&h03030201,&h03020303,&h03030304
    ! DD &h03030303,&h03020303,&h02030302,&h03020302
    ! DD &h03020302,&h02020402,&h02020403,&h03020303
    ! DD &h03030201,&h03030202,&h02030302,&h03030203
    ! DD &h02030303,&h02030303,&h02020303,&h02020202
    ! DD &h03020302,&h02020303,&h03020201,&h02030303
    ! DD &h03030302,&h03040303,&h03030204,&h03030302
    ! DD &h03030204,&h03040301,&h03030303,&h02020203
    ! DD &h02020203,&h03020203,&h02040303,&h02030304
    ! DD &h03030203,&h02020303,&h03020303,&h03020101
    ! DD &h02020303,&h03030303,&h03030403,&h04030303
    ! DD &h03030203,&h03030302,&h02030203,&h02030202
    ! DD &h03030304,&h02030302,&h03030303,&h02020203
    ! DD &h02030202,&h02020303,&h01020102,&h02030202
    ! DD &h02030303,&h04020302,&h02020303,&h03030203
    ! DD &h03020303,&h03020103,&h02020303,&h03030203
    ! DD &h03030302,&h02020302,&h02010202,&h02020303
    ! DD &h03020302,&h02020403,&h03040303,&h02020403
    ! DD &h02030203,&h03030303,&h03030202,&h03030303
    ! DD &h03030304,&h02030302,&h03030302,&h03030202
    ! DD &h03030303,&h02030403,&h04030403,&h02030202
    ! DD &h02020303,&h02040202,&h02020202,&h03020202
    ! DD &h03030201,&h03020302,&h02010303,&h03020102
    ! DD &h03030203,&h02020303,&h03040203,&h02030303
    ! DD &h04030302,&h02030202,&h01020202,&h02020303
    ! DD &h03020203,&h02020403,&h03040202,&h02030302
    ! DD &h02020302,&h03020302,&h03030302,&h03030202
    ! DD &h02020203,&h04020202,&h03030302,&h03030302
    ! DD &h03020302,&h03030203,&h03030202,&h02020303
    ! DD &h03030203,&h03030202,&h02030303,&h03030302
    ! DD &h02030202,&h02030302,&h03030403,&h03030203
    ! DD &h02020302,&h04020303,&h04040202,&h04020303
    ! DD &h03030202,&h03030303,&h02020203,&h03030303
    ! DD &h02030302,&h03030403,&h03030303,&h02030203
    ! DD &h03020302,&h03030202,&h03040203,&h02020303
    ! DD &h02030203,&h02020302,&h03030303,&h03020102
    ! DD &h03030202,&h03030404,&h03020203,&h02030202
    ! DD &h03020304,&h03020302,&h02030202,&h02020202
    ! DD &h03030202,&h03030303,&h02020303,&h02020303
    ! DD &h02030203,&h04030303,&h04020203,&h03030304
    ! DD &h04020203,&h03030202,&h02010303,&h03030303
    ! DD &h03030302,&h03020303,&h04040302,&h03030303
    ! DD &h02020203,&h03020203,&h02030302,&h02020302
    ! DD &h02020303,&h02030303,&h03030302,&h03030403
    ! DD &h03030303,&h03030202,&h02030303,&h03020103
    ! DD &h02020302,&h02020201,&h03020202,&h03020202
    ! DD &h02020202,&h02030202,&h02020302,&h03020302
    ! DD &h03020302,&h02020303,&h02030403,&h04030303
    ! DD &h03040303,&h03030403,&h02020303,&h04020203
    ! DD &h03030303,&h03020302,&h03040304,&h02030303
    ! DD &h03020203,&h02020302,&h04030302,&h02030302
    ! DD &h02030302,&h02030402,&h03030202,&h03040303
    ! DD &h03020402,&h03030203,&h03030302,&h02020303
    ! DD &h03020302,&h02010202,&h02010303,&h02020302
    ! DD &h02030302,&h03030302,&h02020303,&h02020302
    ! DD &h03020203,&h02030302,&h02040202,&h03020303
    ! DD &h04040303,&h03030203,&h02020303,&h02020203
    ! DD &h03040304,&h03030303,&h03040303,&h03030402
    ! DD &h02020403,&h02020203,&h03030202,&h02030203
    ! DD &h03020203,&h03030202,&h02020202,&h03020202
    ! DD &h02030203,&h02030202,&h02030202,&h03030202
    ! DD &h03030203,&h02030303,&h02020303,&h03030202
    ! DD &h04030202,&h03030203,&h02030303,&h03020203
    ! DD &h03030403,&h03030303,&h04020202,&h03020303
    ! DD &h03030302,&h02030303,&h02020404,&h02010303
    ! DD &h04040302,&h02020303,&h03030303,&h04030303
    ! DD &h03040303,&h02010302,&h03020202,&h03020303
    ! DD &h01020202,&h02030303,&h02020203,&h03020202
    ! DD &h03030203,&h03020203,&h03020202,&h02030202
    ! DD &h03020304,&h02030302,&h02030303,&h02020203
    ! DD &h03030303,&h03020304,&h03020303,&h02040203
    ! DD &h03030303,&h03030404,&h03020203,&h02030303
    ! DD &h03030303,&h03030403,&h02020403,&h02030302
    ! DD &h03030203,&h03040303,&h04020302,&h03030302
    ! DD &h04030303,&h03020304,&h03030102,&h03040303
    ! DD &h03020303,&h03020202,&h02030402,&h02030203
    ! DD &h03020202,&h03040303,&h02010203,&h02010202
    ! DD &h02020302,&h02020204,&h03010303,&h02020202
    ! DD &h02020302,&h02030204,&h03030303,&h02020303
    ! DD &h02030302,&h03030304,&h03030303,&h03020302
    ! DD &h03030202,&h03040203,&h02030303,&h02010203
    ! DD &h03040303,&h03020303,&h02030303,&h02020302
    ! DD &h02020303,&h02020304,&h03030202,&h04020303
    ! DD &h03020303,&h03030303,&h02040302,&h03020203
    ! DD &h02030203,&h04030403,&h01020304,&h02030202
    ! DD &h03030202,&h03030303,&h01030204,&h02010203
    ! DD &h03020302,&h03030302,&h03030302,&h01030303
    ! DD &h03030203,&h02040302,&h03030303,&h03020302
    ! DD &h02030203,&h03020303,&h03040403,&h02020302
    ! DD &h04030202,&h02030303,&h03030304,&h02030203
    ! DD &h02020302,&h03030403,&h03020202,&h03030303
    ! DD &h01020302,&h03020303,&h03020202,&h03020302
    ! DD &h02020303,&h03020303,&h02010304,&h03010202
    ! DD &h03020302,&h03030303,&h03020302,&h02010202
    ! DD &h03030202,&h04030303,&h01020203,&h03030303
    ! DD &h03030302,&h02020302,&h02030203,&h02020203
    ! DD &h02020303,&h02020201,&h03020302,&h01020404
    ! DD &h02020202,&h02030202,&h03030402,&h02030303
    ! DD &h02020203,&h03040303,&h02020203,&h03030302
    ! DD &h02020303,&h02020202,&h02020203,&h03030303
    ! DD &h02020303,&h03030303,&h02020403,&h01010201
    ! DD &h03020302,&h03030302,&h03020303,&h03010302
    ! DD &h03020302,&h03030302,&h02020303,&h03020302
    ! DD &h03030202,&h03030203,&h02030201,&h03030203
    ! DD &h03020203,&h02030202,&h03030203,&h02020303
    ! DD &h02020202,&h02040202,&h04030303,&h02030204
    ! DD &h03020402,&h03020203,&h03020302,&h03030203
    ! DD &h01030402,&h03030202,&h03020203,&h02020202
    ! DD &h02030203,&h03020302,&h02030302,&h01020202
    ! DD &h02030202,&h04030203,&h02020303,&h02030203
    ! DD &h02020203,&h03030302,&h02030303,&h02020202
    ! DD &h02020202,&h03030303,&h03030203,&h02020203
    ! DD &h03030303,&h03030303,&h02030203,&h03030303
    ! DD &h03020202,&h03030203,&h03030302,&h04040402
    ! DD &h02030303,&h02020302,&h03030203,&h03030203
    ! DD &h03030202,&h03010202,&h02030302,&h03040304
    ! DD &h02030303,&h03030301,&h03040203,&h02030203
    ! DD &h03030102,&h04020202,&h04030304,&h03020202
    ! DD &h03030302,&h03020202,&h03030303,&h02020203
    ! DD &h02020201,&h03030202,&h02030303,&h02020303
    ! DD &h03040302,&h02020203,&h02020204,&h03020403
    ! DD &h02030203,&h03030302,&h03030302,&h04040302
    ! DD &h03030303,&h02030303,&h02020203,&h04030102
    ! DD &h03030202,&h02030303,&h02010202,&h03030201
    ! DD &h03030304,&h04030303,&h03030303,&h03010202
    ! DD &h03030202,&h02020203,&h03030403,&h03020303
    ! DD &h03020302,&h03030202,&h04020202,&h03020303
    ! DD &h03030302,&h01020302,&h03040303,&h03020303
    ! DD &h03020203,&h02030303,&h02030302,&h02020302
    ! DD &h03010303,&h03030303,&h04030304,&h04030204
    ! DD &h03030303,&h03030302,&h02020302,&h03020202
    ! DD &h03020203,&h02030202,&h02030202,&h03020101
    ! DD &h03030303,&h03030202,&h03030303,&h01010202
    ! DD &h03020202,&h02030203,&h04020402,&h02030203
    ! DD &h03020202,&h03020302,&h03020303,&h02030204
    ! DD &h03030202,&h02020202,&h03020301,&h02020303
    ! DD &h03020202,&h03020303,&h03020302,&h02020202
    ! DD &h02020202,&h03030302,&h03030303,&h03020303
    ! DD &h03030202,&h03030303,&h03040403,&h03020202
    ! DD &h02030303,&h03020203,&h03020202,&h02020302
    ! DD &h03030402,&h03030303,&h04030304,&h02020303
    ! DD &h02030302,&h03030202,&h03020302,&h03030203
    ! DD &h02030303,&h03030202,&h03020202,&h03030303
    ! DD &h03020303,&h03030303,&h03020203,&h04020303
    ! DD &h02030202,&h03040303,&h02030203,&h01020303
    ! DD &h01010303,&h02030301,&h02020202,&h02030303
    ! DD &h02030303,&h02020304,&h04020303,&h02020302
    ! DD &h03040302,&h03020202,&h02020202,&h03030303
    ! DD &h02040202,&h02020402,&h03020304,&h02020404
    ! DD &h02040202,&h03030201,&h03020303,&h02030302
    ! DD &h02030303,&h03030203,&h02010303,&h03030304
    ! DD &h02030302,&h03030303,&h02030202,&h02030202
    ! DD &h02030303,&h03020303,&h03020303,&h02020303
    ! DD &h01020302,&h02030202,&h02030202,&h03040302
    ! DD &h03020202,&h03020403,&h02040302,&h03020303
    ! DD &h03020202,&h02020202,&h01020303,&h03020202
    ! DD &h04040302,&h03020303,&h02030303,&h03020302
    ! DD &h03030302,&h04030102,&h02040302,&h03030303
    ! DD &h03030203,&h03030303,&h02030404,&h03020304
    ! DD &h03020303,&h03020202,&h04040203,&h03030303
    ! DD &h03020303,&h03040402,&h03030403,&h03030403
    ! DD &h02020303,&h04030101,&h03030203,&h02030302
    ! DD &h02020302,&h03020302,&h03040203,&h02020302
    ! DD &h03020203,&h03030303,&h02020301,&h03030302
    ! DD &h03030303,&h02030203,&h03030403,&h02010203
    ! DD &h04030202,&h02020202,&h03040303,&h03030204
    ! DD &h04020204,&h03030303,&h02040303,&h02030403
    ! DD &h02020303,&h03030203,&h03020303,&h03020403
    ! DD &h02030203,&h03030402,&h03030304,&h02020402
    ! DD &h02020302,&h03020102,&h03020303,&h03030303
    ! DD &h03030202,&h03020303,&h03030402,&h03020303
    ! DD &h02020203,&h03030303,&h01020203,&h02020202
    ! DD &h03030203,&h02030303,&h04030203,&h02020303
    ! DD &h04030202,&h03030303,&h03030203,&h02030302
    ! DD &h02030302,&h01030202,&h02020203,&h02010303
    ! DD &h02030303,&h02010202,&h03020302,&h02020203
    ! DD &h02030303,&h03020202,&h04030404,&h04030303
    ! DD &h03030303,&h02040203,&h03020203,&h03030203
    ! DD &h02030203,&h03020302,&h03040302,&h03020303
    ! DD &h02030303,&h02030303,&h02020303,&h02020301
    ! DD &h03030302,&h03030302,&h03030203,&h02020403
    ! DD &h03020203,&h03030303,&h02030303,&h03020203
    ! DD &h03020202,&h02030203,&h02030303,&h02030202
    ! DD &h03020302,&h02020203,&h02020302,&h02020303
    ! DD &h03030202,&h02030202,&h03030302,&h04040304
    ! DD &h02020302,&h03030202,&h02020403,&h03020203
    ! DD &h03020202,&h02030203,&h03020402,&h01020303
    ! DD &h02020303,&h04030302,&h03030303,&h03020202
    ! DD &h02020203,&h02020303,&h03020303,&h02020303
    ! DD &h02020302,&h03030303,&h03030303,&h03020203
    ! DD &h03030202,&h02020403,&h02020203,&h02010303
    ! DD &h02020202,&h02020302,&h02030203,&h03030403
    ! DD &h03020202,&h04020302,&h03030404,&h03020302
    ! DD &h02020203,&h02020302,&h03020303,&h03020303
    ! DD &h02020203,&h02030302,&h03030202,&h02040204
    ! DD &h02030203,&h03030303,&h02030302,&h03020202
    ! DD &h02030203,&h02030203,&h03030303,&h02020403
    ! DD &h02030203,&h03020302,&h03030203,&h03020304
    ! DD &h03020203,&h02030303,&h01030203,&h02030202
    ! DD &h02030203,&h02020303,&h03030203,&h03030202
    ! DD &h03030303,&h03030203,&h03040403,&h04040303
    ! DD &h02030404,&h02030202,&h02020303,&h03020304
    ! DD &h03020303,&h04020202,&h02020303,&h03030303
    ! DD &h04030404,&h03020201,&h02020303,&h01020102
    ! DD &h03020303,&h03030202,&h02020302,&h02020302
    ! DD &h03020302,&h03030202,&h02030302,&h03030303
    ! DD &h02020203,&h04030402,&h05030403,&h02030404
    ! DD &h03020302,&h02020203,&h03040303,&h03040303
    ! DD &h03020303,&h02030303,&h03030203,&h03030304
    ! DD &h03030303,&h03020202,&h03030303,&h03030404
    ! DD &h02030302,&h03030202,&h01020303,&h03030202
    ! DD &h02030303,&h03020103,&h01020202,&h02020102
    ! DD &h03020301,&h02020202,&h03020202,&h03020202
    ! DD &h03030203,&h02020302,&h03020302,&h03030203
    ! DD &h02020203,&h04030202,&h04030303,&h03030303
    ! DD &h01010302,&h02020303,&h03040302,&h03030303
    ! DD &h02020202,&h03030202,&h04030303,&h03030302
    ! DD &h03030304,&h03020203,&h03020302,&h03020403
    ! DD &h03030304,&h02020102,&h04030403,&h03030202
    ! DD &h04030303,&h02020302,&h03030203,&h01010203
    ! DD &h02020103,&h03020202,&h03030303,&h01030302
    ! DD &h03030101,&h03020303,&h03030303,&h03040203
    ! DD &h02030304,&h02030203,&h03030302,&h03040403
    ! DD &h03030303,&h02030202,&h04040103,&h04020303
    ! DD &h03020303,&h03020202,&h03030202,&h03020404
    ! DD &h03040303,&h03030303,&h03020203,&h03030403
    ! DD &h03040303,&h02020202,&h03020303,&h02020203
    ! DD &h03030303,&h03020203,&h02030302,&h02020304
    ! DD &h02030202,&h02020202,&h03030302,&h02020203
    ! DD &h03020202,&h03020303,&h03020203,&h03030303
    ! DD &h03030403,&h04030202,&h03020303,&h04030402
    ! DD &h03020303,&h02030202,&h04030203,&h03020302
    ! DD &h02020303,&h02030202,&h03030202,&h03030402
    ! DD &h03030403,&h03030302,&h02020303,&h03030303
    ! DD &h03030303,&h01020303,&h02020302,&h02020302
    ! DD &h03030302,&h02020303,&h02020203,&h01030302
    ! DD &h03030202,&h02030302,&h03030103,&h03030303
    ! DD &h03030203,&h03030303,&h03030303,&h03030303
    ! DD &h03030303,&h03030302,&h02030302,&h03030303
    ! DD &h03020404,&h02030304,&h03040303,&h03030303
    ! DD &h02030303,&h04030404,&h03030203,&h03020303
    ! DD &h03020302,&h03030302,&h03020303,&h01010202
    ! DD &h04030201,&h01030303,&h01010202,&h02030202
    ! DD &h02030303,&h02020303,&h02020303,&h02030302
    ! DD &h02030201,&h03030302,&h03030302,&h03020303
    ! DD &h03020303,&h03020303,&h03030303,&h03030203
    ! DD &h03030303,&h03020303,&h03040303,&h03030302
    ! DD &h03030403,&h02020302,&h04030202,&h03030302
    ! DD &h03040203,&h03030302,&h03030204,&h02030303
    ! DD &h02040302,&h04020302,&h02030204,&h02030202
    ! DD &h02020203,&h03030304,&h02020303,&h02010101
    ! DD &h03020302,&h02020303,&h03030302,&h03030202
    ! DD &h03020102,&h03020202,&h02030202,&h02020403
    ! DD &h02020202,&h02020303,&h02020303,&h03030302
    ! DD &h02020303,&h02030303,&h04030303,&h03020302
    ! DD &h03030303,&h02020303,&h03030302,&h03030303
    ! DD &h04040403,&h03030302,&h02030202,&h03020303
    ! DD &h03020202,&h02020202,&h03040303,&h02030202
    ! DD &h02020203,&h02030303,&h03020302,&h01020202
    ! DD &h02020202,&h02030303,&h03030302,&h03030202
    ! DD &h03020303,&h02030301,&h03030203,&h01030203
    ! DD &h03020203,&h03030202,&h03030302,&h02030201
    ! DD &h02030303,&h03030202,&h03030302,&h03030302
    ! DD &h03020303,&h02030304,&h03030202,&h04030403
    ! DD &h03030303,&h02030304,&h03030303,&h02010303
    ! DD &h03030202,&h02030302,&h04030303,&h03030203
    ! DD &h02020303,&h03020202,&h02020303,&h02020303
    ! DD &h03030201,&h03030303,&h03030203,&h02020202
    ! DD &h02020303,&h02020203,&h02030302,&h03020303
    ! DD &h03030301,&h02030203,&h03040303,&h02030204
    ! DD &h03030303,&h03030303,&h03030203,&h03030303
    ! DD &h02020303,&h03020302,&h02030202,&h02020202
    ! DD &h04030302,&h03020303,&h03030304,&h03040403
    ! DD &h04030303,&h03020203,&h03030303,&h03020303
    ! DD &h02030303,&h02020202,&h03030203,&h02020302
    ! DD &h02020202,&h03020302,&h03020303,&h02030302
    ! DD &h02030302,&h03020302,&h03030202,&h02020302
    ! DD &h03030202,&h03030203,&h03040302,&h03030304
    ! DD &h03030302,&h02020303,&h02030203,&h03040202
    ! DD &h02020302,&h02020302,&h03030302,&h02020302
    ! DD &h03030302,&h02030304,&h03040303,&h04030304
    ! DD &h03030302,&h04030303,&h04030303,&h03030303
    ! DD &h03030303,&h02020303,&h02020303,&h02030202
    ! DD &h02020101,&h02020303,&h03030303,&h03020202
    ! DD &h02020202,&h02020303,&h02020203,&h04030303
    ! DD &h03020202,&h03040303,&h03030303,&h02030302
    ! DD &h03030303,&h03030403,&h04030202,&h03040202
    ! DD &h03030203,&h01030202,&h03030202,&h03030302
    ! DD &h03030202,&h04030403,&h04030203,&h03030302
    ! DD &h03030303,&h02020303,&h03030203,&h03030203
    ! DD &h03040303,&h02030204,&h02030303,&h02030201
    ! DD &h02020202,&h03030202,&h02030202,&h02020203
    ! DD &h03020202,&h03040201,&h03030202,&h03020302
    ! DD &h03020303,&h04030302,&h03030302,&h02040203
    ! DD &h03030303,&h02040303,&h02020203,&h03020202
    ! DD &h03020303,&h02020203,&h03030102,&h03020302
    ! DD &h02020303,&h03030303,&h03030304,&h03040302
    ! DD &h03030303,&h03030202,&h02030302,&h03030302
    ! DD &h04020302,&h02030302,&h03020303,&h02020203
    ! DD &h03010102,&h03020302,&h02020303,&h03020303
    ! DD &h02030302,&h03030203,&h02020302,&h03030203
    ! DD &h02020203,&h02020302,&h04040303,&h03020303
    ! DD &h04030303,&h03020203,&h03030303,&h02030302
    ! DD &h02030302,&h02020303,&h02020102,&h03030203
    ! DD &h03030203,&h02030203,&h04030303,&h04040403
    ! DD &h04030302,&h03030302,&h03030303,&h03030302
    ! DD &h02020302,&h03020202,&h03020302,&h03030203
    ! DD &h02020203,&h02010202,&h02030302,&h03040302
    ! DD &h03020203,&h03020303,&h03030303,&h02030203
    ! DD &h02030404,&h03030202,&h03030202,&h03020304
    ! DD &h03020303,&h04030204,&h02030303,&h02030203
    ! DD &h02020302,&h02030302,&h02010103,&h04020202
    ! DD &h03030303,&h03020404,&h03020303,&h03030303
    ! DD &h03030203,&h03030203,&h03030303,&h03020203
    ! DD &h03020203,&h02020202,&h01030304,&h02030303
    ! DD &h03030203,&h02030202,&h02020202,&h03020202
    ! DD &h01020301,&h02030302,&h03030302,&h02020303
    ! DD &h03020303,&h02020303,&h02020302,&h03030404
    ! DD &h02020303,&h03030403,&h03030403,&h03030303
    ! DD &h02030303,&h02020203,&h03020303,&h02010202
    ! DD &h02030303,&h04030303,&h01020302,&h04030303
    ! DD &h03030303,&h03040403,&h02020303,&h03020203
    ! DD &h03030404,&h01020203,&h03020303,&h03030302
    ! DD &h02020202,&h02010202,&h03020203,&h02020201
    ! DD &h02030202,&h03020302,&h03040203,&h02030404
    ! DD &h02020303,&h02030203,&h02030202,&h03030302
    ! DD &h03020403,&h03030302,&h03030303,&h03030203
    ! DD &h03030303,&h02030203,&h02020302,&h02020203
    ! DD &h02030203,&h03040303,&h02030303,&h03030303
    ! DD &h03030303,&h03030402,&h03030303,&h03030303
    ! DD &h04030303,&h02020302,&h02030303,&h02020203
    ! DD &h03040302,&h01030303,&h02030202,&h03040303
    ! DD &h03020302,&h01020203,&h03020202,&h03030302
    ! DD &h02020303,&h03020203,&h02030302,&h03030203
    ! DD &h03030303,&h03030204,&h03030303,&h02030303
    ! DD &h02020404,&h02020303,&h01010202,&h01020301
    ! DD &h03020302,&h03030203,&h03040403,&h03030202
    ! DD &h02020303,&h03030203,&h02030202,&h02030203
    ! DD &h03020303,&h02020303,&h04030202,&h02020302
    ! DD &h03030202,&h03030302,&h02030201,&h04030302
    ! DD &h03030202,&h01020203,&h02020203,&h02030303
    ! DD &h02020403,&h02020302,&h03040202,&h02020201
    ! DD &h02010304,&h03020403,&h03030303,&h03030302
    ! DD &h02030403,&h03030203,&h02020202,&h02020102
    ! DD &h03020202,&h02030303,&h03030303,&h02030203
    ! DD &h02020302,&h04030302,&h03030203,&h03020302
    ! DD &h03030303,&h02020303,&h02030202,&h02020303
    ! DD &h04040201,&h04030202,&h03020202,&h03030202
    ! DD &h02030202,&h03030303,&h02020303,&h03020303
    ! DD &h02030303,&h02020203,&h03020201,&h02020201
    ! DD &h02030303,&h02010203,&h03040202,&h03030202
    ! DD &h03030303,&h04030303,&h02030304,&h02020203
    ! DD &h02030302,&h02020303,&h04030302,&h03030202
    ! DD &h03030202,&h02040203,&h03020202,&h02030203
    ! DD &h02040203,&h03020403,&h03020202,&h02020303
    ! DD &h03030201,&h03030203,&h02010303,&h03030202
    ! DD &h02020302,&h02030203,&h03020302,&h03030303
    ! DD &h02030302,&h02020203,&h02040102,&h01020202
    ! DD &h03030302,&h02020303,&h03030301,&h03030203
    ! DD &h03040303,&h03020303,&h03010404,&h03030303
    ! DD &h03020302,&h02020202,&h03030102,&h03030204
    ! DD &h02030302,&h03040203,&h02010303,&h03030202
    ! DD &h04020202,&h01030202,&h02020202,&h03030303
    ! DD &h03030202,&h02020204,&h02020302,&h03020202
    ! DD &h03030202,&h02020301,&h02020303,&h02030203
    ! DD &h02030303,&h03030403,&h04030202,&h03010302
    ! DD &h01030102,&h03030303,&h03030202,&h03020203
    ! DD &h02020203,&h02030304,&h02020203,&h02020202
    ! DD &h03030202,&h02040404,&h04020302,&h03030402
    ! DD &h03030303,&h04030203,&h02030303,&h03030203
    ! DD &h03020103,&h02020304,&h02030203,&h03030303
    ! DD &h04020202,&h02030303,&h01030202,&h02020202
    ! DD &h02020202,&h02020203,&h02020203,&h03030302
    ! DD &h03030202,&h02020402,&h03020204,&h02020203
    ! DD &h03020202,&h03020302,&h03030202,&h03030203
    ! DD &h02020103,&h02020202,&h01020203,&h02030202
    ! DD &h03030202,&h04040303,&h02020203,&h03030302
    ! DD &h03030302,&h03040303,&h03020304,&h02030302
    ! DD &h03020202,&h03020402,&h02020302,&h03020301
    ! DD &h02020202,&h04030403,&h02020303,&h02030102
    ! DD &h03030202,&h02030202,&h02020303,&h03030202
    ! DD &h03020303,&h03030303,&h03030403,&h02030303
    ! DD &h02020203,&h03020302,&h03030302,&h03020203
    ! DD &h01030403,&h02030403,&h03020303,&h02020202
    ! DD &h02020202,&h03040302,&h03030303,&h02030203
    ! DD &h03040202,&h03030302,&h02030304,&h04020203
    ! DD &h02020203,&h03030302,&h02010302,&h03020201
    ! DD &h02020302,&h04030302,&h02020303,&h02020102
    ! DD &h03020203,&h02020202,&h02030303,&h03030202
    ! DD &h02020203,&h02030302,&h03020303,&h02030303
    ! DD &h02030203,&h02020302,&h03020202,&h03020203
    ! DD &h02030203,&h03030202,&h03030202,&h02020302
    ! DD &h02030201,&h02020202,&h02030303,&h03020203
    ! DD &h03030201,&h03030203,&h03030403,&h03030203
    ! DD &h02020203,&h02030202,&h03030303,&h02010203
    ! DD &h03030202,&h02030302,&h03030203,&h01020202
    ! DD &h02030302,&h01010203,&h02010102,&h02020202
    ! DD &h03020303,&h02010302,&h03030302,&h02010303
    ! DD &h02020302,&h02010202,&h03030302,&h02030304
    ! DD &h02030303,&h03020202,&h02010302,&h01020303
    ! DD &h02030202,&h02020101,&h03030303,&h02030302
    ! DD &h02010202,&h02020202,&h01020404,&h03030202
    ! DD &h03010203,&h03020301,&h02030203,&h02030302
    ! DD &h02020302,&h03030303,&h02030203,&h02030304
    ! DD &h02020201,&h01020303,&h02020203,&h03020203
    ! DD &h03020303,&h02030201,&h04040302,&h02020302
    ! DD &h03020301,&h01020302,&h03020202,&h02020303
    ! DD &h03020302,&h02010202,&h02010303,&h02030202
    ! DD &h03020102,&h03020202,&h02010402,&h03040302
    ! DD &h02010101,&h02020202,&h02040202,&h03020202
    ! DD &h01020202,&h03030102,&h03020302,&h02020201
    ! DD &h03020202,&h02030303,&h02020303,&h02010202
    ! DD &h02020202,&h02020303,&h01010202,&h02010202
    ! DD &h03020202,&h03020202,&h03020202,&h03030303
    ! DD &h02030302,&h02010203,&h02030302,&h02020303
    ! DD &h03030202,&h02020202,&h02020302,&h03020303
    ! DD &h03030302,&h01030203,&h03030203,&h04030102
    ! DD &h02020302,&h02030102,&h03030302,&h03020203
    ! DD &h02020302,&h02020203,&h02010303,&h02020202
    ! DD &h02020202,&h03040303,&h02030303,&h02030202
    ! DD &h02010302,&h03020302,&h01030202,&h02010201
    ! DD &h02020202,&h02010302,&h02030203,&h03020303
    ! DD &h02030203,&h02010202,&h03030201,&h02040303
    ! DD &h03020303,&h02010302,&h02020202,&h03020303
    ! DD &h03020202,&h02030302,&h02020303,&h03020203
    ! DD &h02020203,&h02020203,&h03030202,&h03010303
    ! DD &h01020302,&h02030202,&h02020302,&h02030203
    ! DD &h02020203,&h03030202,&h03030303,&h01020303
    ! DD &h02030202,&h03020102,&h03020202,&h03020203
    ! DD &h01020202,&h01020202,&h03030202,&h02030302
    ! DD &h04020203,&h02020303,&h02010102,&h03030203
    ! DD &h03030202,&h03030203,&h02020303,&h03020303
    ! DD &h02020202,&h03020202,&h02030303,&h03020202
    ! DD &h04040302,&h03030302,&h02030202,&h02030303
    ! DD &h02020202,&h02030202,&h03030202,&h02030202
    ! DD &h03020302,&h04020202,&h02030303,&h02030303
    ! DD &h03020201,&h02010203,&h02020303,&h02020203
    ! DD &h02020303,&h02020202,&h03040102,&h02030303
    ! DD &h03020303,&h01010303,&h02010202,&h03020302
    ! DD &h03030303,&h03030303,&h03020303,&h03020202
    ! DD &h02030202,&h02030202,&h03030302,&h02020302
    ! DD &h03030203,&h03020304,&h03020303,&h02020303
    ! DD &h03020203,&h03020201,&h02010202,&h03020303
    ! DD &h03020303,&h02020303,&h03020402,&h03030303
    ! DD &h02030201,&h02020202,&h01030203,&h01020202
    ! DD &h02020202,&h02020202,&h03030202,&h03020203
    ! DD &h02030303,&h03030304,&h02010203,&h03020202
    ! DD &h03030302,&h03030203,&h02030203,&h03030202
    ! DD &h03030202,&h02020203,&h04030203,&h03030303
    ! DD &h02030202,&h02030202,&h03020303,&h03030403
    ! DD &h02010303,&h02030101,&h02020301,&h02020202
    ! DD &h02020203,&h02020203,&h03020302,&h03020203
    ! DD &h02020202,&h01020102,&h03020302,&h02030202
    ! DD &h03020202,&h02020202,&h03010203,&h03030202
    ! DD &h02020202,&h03030303,&h02020202,&h02020202
    ! DD &h02020201,&h03020303,&h03020303,&h03030201
    ! DD &h03010202,&h02020202,&h03020303,&h02030303
    ! DD &h03030203,&h02020203,&h02020302,&h03030303
    ! DD &h02030303,&h02010202,&h02010102,&h01010102
    ! DD &h01010202,&h02020302,&h02020202,&h03020202
    ! DD &h02020303,&h02020203,&h03030302,&h03010102
    ! DD &h03020302,&h01020202,&h03020102,&h03020201
    ! DD &h02030302,&h03030202,&h03020303,&h03030303
    ! DD &h02030203,&h02020302,&h03030302,&h03020103
    ! DD &h02030303,&h02020302,&h02030202,&h02030303
    ! DD &h03030202,&h02030303,&h03030403,&h03030304
    ! DD &h02030303,&h02010102,&h01010101,&h01020101
    ! DD &h01020202,&h02030203,&h02010202,&h03020302
    ! DD &h03030301,&h02010203,&h03020201,&h02020303
    ! DD &h02020302,&h01010201,&h03010202,&h02030202
    ! DD &h03020302,&h03020302,&h02030302,&h04030303
    ! DD &h02030202,&h03020202,&h03030201,&h03020303
    ! DD &h02020203,&h02030303,&h03030201,&h04040202
    ! DD &h02030302,&h02030203,&h02020303,&h03030403
    ! DD &h03030303,&h02030202,&h01020101,&h02030201
    ! DD &h01020302,&h03030202,&h02020203,&h03030102
    ! DD &h02020202,&h01020302,&h03020203,&h01020303
    ! DD &h03020202,&h02020202,&h01020101,&h03030301
    ! DD &h02030203,&h02030202,&h01020202,&h03020102
    ! DD &h02020203,&h02020102,&h03030302,&h02020303
    ! DD &h02020303,&h03020102,&h03030101,&h04020202
    ! DD &h03020202,&h02030303,&h03030203,&h02020303
    ! DD &h03010202,&h02020202,&h02020103,&h03010201
    ! DD &h01020202,&h02020101,&h02020303,&h02020203
    ! DD &h02010102,&h01020102,&h02020201,&h02020203
    ! DD &h03030201,&h02020203,&h02010202,&h02030201
    ! DD &h02030203,&h02020303,&h03030201,&h03010202
    ! DD &h01020303,&h02020303,&h03020302,&h02020303
    ! DD &h02020303,&h02030202,&h03020203,&h03030302
    ! DD &h02020303,&h03030302,&h03020302,&h02040303
    ! DD &h03030403,&h02020302,&h02030302,&h02020103
    ! DD &h02030202,&h02020203,&h02010302,&h02030302
    ! DD &h02030302,&h02020202,&h03020102,&h03020202
    ! DD &h03030102,&h03020303,&h01020202,&h02020102
    ! DD &h03020402,&h04030302,&h03020203,&h02030203
    ! DD &h03030303,&h02030303,&h02030302,&h03030302
    ! DD &h03020302,&h02020201,&h03020302,&h03020202
    ! DD &h03030303,&h03030202,&h02020303,&h03030303
    ! DD &h02020404,&h03030203,&h03020202,&h02020202
    ! DD &h02020302,&h03030203,&h02010301,&h03030202
    ! DD &h03030202,&h01030102,&h02030202,&h02010304
    ! DD &h03030202,&h02020303,&h02020103,&h02020202
    ! DD &h03040301,&h03030203,&h02020303,&h02030303
    ! DD &h02020302,&h02030302,&h03030301,&h02020302
    ! DD &h03030303,&h02010202,&h02040202,&h02020202
    ! DD &h04040302,&h03020303,&h02030304,&h03030302
    ! DD &h02020403,&h03020202,&h02020202,&h03020202
    ! DD &h02020203,&h03030202,&h02020303,&h02020203
    ! DD &h03030201,&h03020202,&h02020102,&h03020302
    ! DD &h02010101,&h03030403,&h02020303,&h02010102
    ! DD &h03020102,&h02020302,&h02030202,&h03020302
    ! DD &h04030303,&h03030202,&h03020203,&h03030203
    ! DD &h02030303,&h02020203,&h02030101,&h03030203
    ! DD &h02020103,&h02020203,&h03030303,&h02030303
    ! DD &h02030402,&h02020202,&h03020202,&h02020202
    ! DD &h02010303,&h02030302,&h03020302,&h03020202
    ! DD &h03020201,&h02020202,&h02020202,&h03030302
    ! DD &h02020202,&h04020402,&h02020303,&h02020203
    ! DD &h02030202,&h02020202,&h02020202,&h03020202
    ! DD &h03020203,&h03030203,&h02030202,&h02020203
    ! DD &h02030202,&h02020303,&h02030102,&h02020203
    ! DD &h02030303,&h02020303,&h03020302,&h03030403
    ! DD &h03030404,&h03020303,&h02020203,&h01020203
    ! DD &h02020302,&h04030203,&h02030302,&h02030303
    ! DD &h02020203,&h02020203,&h03030303,&h03020202
    ! DD &h02020203,&h03020202,&h02020302,&h02020302
    ! DD &h02020102,&h03020301,&h02010203,&h01020302
    ! DD &h01020203,&h02020202,&h03020202,&h02020402
    ! DD &h03020203,&h03030202,&h03020303,&h03030303
    ! DD &h03030202,&h03040403,&h03030302,&h04040302
    ! DD &h04040303,&h02020202,&h02020203,&h02020203
    ! DD &h02020201,&h03020202,&h03020203,&h02030303
    ! DD &h02020203,&h02020304,&h03030302,&h03030202
    ! DD &h02020204,&h02020202,&h02020302,&h03020203
    ! DD &h02020302,&h03020102,&h01020203,&h02020201
    ! DD &h01030303,&h02020102,&h02010202,&h02030203
    ! DD &h02020202,&h03020202,&h03030202,&h03020303
    ! DD &h03030201,&h03030302,&h03030303,&h04030203
    ! DD &h04040303,&h02030203,&h02020204,&h03030202
    ! DD &h03030202,&h03020302,&h03020202,&h03030303
    ! DD &h01030303,&h02020302,&h03020202,&h02020202
    ! DD &h02020403,&h03020302,&h03030302,&h01020303
    ! DD &h02020303,&h01020302,&h03030302,&h02020102
    ! DD &h03030202,&h02020202,&h02020202,&h03030302
    ! DD &h03020303,&h02020102,&h02020202,&h03020202
    ! DD &h03030202,&h02020202,&h03030202,&h02030202
    ! DD &h03020303,&h03030403,&h01020303,&h02030203
    ! DD &h03020204,&h03030204,&h02020203,&h03030303
    ! DD &h03030303,&h03030202,&h03020302,&h02010302
    ! DD &h02030202,&h02020202,&h03030302,&h02020403
    ! DD &h03030202,&h02020302,&h03020202,&h02010302
    ! DD &h03030203,&h02020302,&h02010202,&h02030202
    ! DD &h03020203,&h02030203,&h03020202,&h03030303
    ! DD &h02030303,&h02030303,&h03020203,&h03030303
    ! DD &h03020303,&h02020202,&h02020302,&h02020302
    ! DD &h02020202,&h02020202,&h03020202,&h03020202
    ! DD &h03030303,&h02020302,&h02030202,&h02030304
    ! DD &h03030303,&h02030303,&h02020202,&h03020203
    ! DD &h02020302,&h03030203,&h03030203,&h02020203
    ! DD &h02030202,&h03030303,&h02020202,&h02030202
    ! DD &h02020203,&h02020202,&h03040202,&h03010303
    ! DD &h04030202,&h04030203,&h03020303,&h03020203
    ! DD &h02030303,&h02030303,&h02020303,&h03020202
    ! DD &h02020201,&h03030202,&h02020203,&h02020202
    ! DD &h03030303,&h02030302,&h03030302,&h03020302
    ! DD &h03010203,&h02030303,&h03020203,&h02030303
    ! DD &h03030202,&h03030302,&h02020303,&h02030204
    ! DD &h03030202,&h02010302,&h02020303,&h03030202
    ! DD &h02020302,&h03020202,&h03030202,&h01020203
    ! DD &h03020303,&h02020203,&h02020403,&h02020303
    ! DD &h02030303,&h03030403,&h02020303,&h02020203
    ! DD &h02030102,&h03030202,&h03020203,&h02030203
    ! DD &h04030302,&h03030201,&h04030203,&h01030303
    ! DD &h02020404,&h03030303,&h02030303,&h04020303
    ! DD &h03020201,&h02020102,&h02030203,&h01020302
    ! DD &h02020102,&h02020203,&h01020201,&h03020102
    ! DD &h03020303,&h02030202,&h02020202,&h03020403
    ! DD &h03030302,&h02030302,&h03020302,&h02020202
    ! DD &h03020203,&h03020302,&h01020303,&h03030202
    ! DD &h03030202,&h02020202,&h03030203,&h02030303
    ! DD &h02020202,&h03010203,&h03020302,&h02030303
    ! DD &h02030302,&h03030303,&h03020202,&h02030303
    ! DD &h02020203,&h02020202,&h02040202,&h01030202
    ! DD &h02030102,&h02020303,&h02020201,&h03020202
    ! DD &h02020202,&h03020302,&h02020202,&h02030203
    ! DD &h02020303,&h02030303,&h02020202,&h02020202
    ! DD &h02030303,&h02020303,&h01030302,&h02020202
    ! DD &h02030202,&h03020202,&h02030202,&h02020302
    ! DD &h03030202,&h01020202,&h02020103,&h02030203
    ! DD &h02010302,&h02020102,&h02030302,&h04030203
    ! DD &h03030302,&h02020102,&h03030102,&h03020202
    ! DD &h02030202,&h03030302,&h02020203,&h02030103
    ! DD &h03020203,&h01020202,&h02020202,&h03020303
    ! DD &h03030202,&h02020202,&h03030303,&h02030303
    ! DD &h03030303,&h03020202,&h02030303,&h02020302
    ! DD &h02030203,&h03020203,&h03010203,&h02030203
    ! DD &h02020302,&h02020302,&h02020202,&h02040202
    ! DD &h02020302,&h02020203,&h02020202,&h02020302
    ! DD &h03030303,&h02020203,&h02020203,&h02020303
    ! DD &h03020203,&h03020202,&h01020204,&h02020303
    ! DD &h02020303,&h02020301,&h02030202,&h03020204
    ! DD &h02030203,&h02030203,&h02030203,&h02030303
    ! DD &h03030303,&h01030403,&h03030202,&h02020202
    ! DD &h02020201,&h02030202,&h02030403,&h03030302
    ! DD &h04020201,&h01020201,&h03020303,&h04030303
    ! DD &h02010203,&h02020102,&h02030201,&h03030303
    ! DD &h03030203,&h03020303,&h03020302,&h03020303
    ! DD &h03030302,&h02030303,&h02030303,&h03020302
    ! DD &h03020303,&h02010202,&h02020202,&h02020302
    ! DD &h02030302,&h02020202,&h03020203,&h03020202
    ! DD &h03030402,&h02030302,&h03020203,&h02030203
    ! DD &h01020202,&h02030202,&h03030302,&h02030202
    ! DD &h02020303,&h03020203,&h03020201,&h03030202
    ! DD &h02020304,&h03020202,&h02020202,&h02020202
    ! DD &h03020303,&h02020303,&h02010303,&h02020203
    ! DD &h02030302,&h02040304,&h02030303,&h02010203
    ! DD &h02030203,&h02020203,&h02020103,&h03020303
    ! DD &h03040202,&h01020302,&h02030303,&h03020203
    ! DD &h02020203,&h02020304,&h02030302,&h04030203
    ! DD &h03030202,&h03020202,&h02020303,&h03030304
    ! DD &h02030303,&h02030203,&h02030303,&h02030203
    ! DD &h02030304,&h02030303,&h02020202,&h03020202
    ! DD &h01020302,&h01030202,&h01020202,&h02020202
    ! DD &h02010202,&h03020101,&h02030302,&h02010303
    ! DD &h03020302,&h02020303,&h02020202,&h02020202
    ! DD &h04030302,&h02020202,&h02020203,&h02020303
    ! DD &h02030203,&h02030302,&h03030303,&h03030203
    ! DD &h02010203,&h02030203,&h03040303,&h03030302
    ! DD &h04030403,&h02030203,&h02020303,&h02030203
    ! DD &h03030403,&h03030302,&h03020303,&h02020202
    ! DD &h02020303,&h03020203,&h02020303,&h01020202
    ! DD &h02020203,&h03020202,&h03020202,&h01020301
    ! DD &h03020101,&h02020402,&h01010102,&h02030201
    ! DD &h02040203,&h03020303,&h03030303,&h03020203
    ! DD &h04040303,&h02020303,&h01020202,&h03020202
    ! DD &h02020303,&h02020202,&h03020302,&h03020303
    ! DD &h03030303,&h02030203,&h03010302,&h03020302
    ! DD &h02030203,&h03020202,&h02030202,&h02020302
    ! DD &h02030203,&h02030202,&h03020203,&h01020203
    ! DD &h03020203,&h02020201,&h03030302,&h03030304
    ! DD &h03030202,&h02030303,&h01020203,&h02010101
    ! DD &h04040202,&h02020203,&h02030203,&h03030301
    ! DD &h03020304,&h03030304,&h03020202,&h03020102
    ! DD &h01020303,&h02030202,&h03030202,&h03020203
    ! DD &h03030302,&h02020302,&h01020303,&h03020302
    ! DD &h03020303,&h02020203,&h03010203,&h01030202
    ! DD &h02030304,&h02020302,&h02030203,&h02020202
    ! DD &h02020302,&h02010202,&h03030202,&h03030303
    ! DD &h02020203,&h02030201,&h02020202,&h02010102
    ! DD &h04020202,&h02020203,&h02020201,&h03020202
    ! DD &h03020202,&h03020302,&h03030302,&h02030302
    ! DD &h03020302,&h03030103,&h02030302,&h02020302
    ! DD &h02020202,&h03030102,&h02010203,&h03020202
    ! DD &h03010203,&h03020303,&h02020202,&h01020203
    ! DD &h02030203,&h03030203,&h04030303,&h02030203
    ! DD &h02020203,&h02020303,&h02030303,&h02020202
    ! DD &h02040303,&h04040303,&h02030202,&h02010201
    ! DD &h03020102,&h03030303,&h02030203,&h02020203
    ! DD &h02020303,&h02030403,&h02040302,&h03040302
    ! DD &h02020202,&h02030203,&h03030302,&h02020203
    ! DD &h02020103,&h02030203,&h01010303,&h03020203
    ! DD &h02020303,&h03020303,&h02020201,&h02030202
    ! DD &h03020303,&h03030302,&h03030303,&h02010304
    ! DD &h03030202,&h02020202,&h02020302,&h02020203
    ! DD &h04030302,&h04030303,&h03020303,&h01020202
    ! DD &h02020303,&h02030303,&h03020302,&h02040202
    ! DD &h03030203,&h03020302,&h03030302,&h04020202
    ! DD &h02030304,&h02040203,&h03030202,&h03030202
    ! DD &h02020303,&h03020101,&h02010403,&h01020302
    ! DD &h01020403,&h03030203,&h02020202,&h02020201
    ! DD &h03030202,&h02020202,&h02030403,&h03030303
    ! DD &h02020203,&h02020302,&h03030202,&h03030403
    ! DD &h02020203,&h02030202,&h03020203,&h02010202
    ! DD &h03020303,&h02020303,&h02030302,&h03020203
    ! DD &h02020303,&h03030203,&h04030302,&h03020203
    ! DD &h02020304,&h03030303,&h03030202,&h03020303
    ! DD &h01020302,&h02030203,&h02020302,&h02030203
    ! DD &h03030301,&h03020202,&h02020202,&h02020202
    ! DD &h03030302,&h02020303,&h03030303,&h02020404
    ! DD &h03010303,&h02030201,&h03010303,&h03030302
    ! DD &h02020203,&h03030203,&h03020303,&h02010202
    ! DD &h02020202,&h02030302,&h02030202,&h02030203
    ! DD &h02040302,&h02030303,&h02020203,&h02030303
    ! DD &h02030302,&h02030202,&h02040203,&h03020302
    ! DD &h02020202,&h02030201,&h02020303,&h03030202
    ! DD &h02020202,&h02030202,&h03030203,&h04030203
    ! DD &h02020202,&h03030203,&h02020302,&h03020303
    ! DD &h01030303,&h02030202,&h02020202,&h03010202
    ! DD &h02020303,&h02020202,&h02030403,&h02030303
    ! DD &h02030302,&h02020203,&h02020302,&h02030302
    ! DD &h03030202,&h04030303,&h03020202,&h03030303
    ! DD &h02030202,&h04030203,&h03040202,&h02020303
    ! DD &h02020303,&h03030102,&h02020203,&h02030203
    ! DD &h03020203,&h03020202,&h02020203,&h03030203
    ! DD &h02020303,&h02020203,&h03040203,&h03030302
    ! DD &h02020403,&h03030201,&h01020202,&h02020202
    ! DD &h02030303,&h03030202,&h03030203,&h02030202
    ! DD &h03030202,&h02020304,&h03020203,&h03020202
    ! DD &h02020202,&h03020202,&h01020303,&h03020102
    ! DD &h03020202,&h02020303,&h03030202,&h02040303
    ! DD &h03030203,&h03020302,&h02020403,&h02020203
    ! DD &h02020302,&h02020203,&h02020202,&h02020202
    ! DD &h03030303,&h03030303,&h03030302,&h04030203
    ! DD &h03020302,&h03030203,&h02020302,&h01020202
    ! DD &h03030202,&h01020303,&h02030303,&h04030303
    ! DD &h02020302,&h03020303,&h04030302,&h03030302
    ! DD &h03030302,&h02030202,&h01020303,&h03030202
    ! DD &h02030203,&h03030302,&h03030203,&h03030302
    ! DD &h03020203,&h02030202,&h02040303,&h02020303
    ! DD &h02020303,&h02020203,&h03010202,&h03030102
    ! DD &h04020302,&h02030402,&h03030203,&h02020303
    ! DD &h03020404,&h02020202,&h02020202,&h01020202
    ! DD &h03030203,&h03030302,&h03030302,&h03020303
    ! DD &h03030203,&h02020303,&h02030203,&h02020304
    ! DD &h03030203,&h02020203,&h03020302,&h02030102
    ! DD &h03020202,&h03030303,&h02020202,&h03030202
    ! DD &h02020303,&h02020302,&h03020302,&h02020202
    ! DD &h01020302,&h02020202,&h01020202,&h02010202
    ! DD &h02020202,&h02020202,&h02030303,&h03040303
    ! DD &h02020203,&h03030202,&h02020302,&h02020303
    ! DD &h03030302,&h03030303,&h01030203,&h01020302
    ! DD &h02020203,&h03030302,&h02020202,&h02030302
    ! DD &h03030302,&h03030202,&h03010302,&h02010303
    ! DD &h02030303,&h03030302,&h03020304,&h03030302
    ! DD &h02020303,&h02030202,&h03020202,&h02030202
    ! DD &h01030202,&h02030201,&h01010202,&h01020102
    ! DD &h02020202,&h02030302,&h03030302,&h03040301
    ! DD &h01010203,&h03030102,&h03020202,&h02030304
    ! DD &h03020202,&h02040203,&h02030302,&h02020302
    ! DD &h03030301,&h03030202,&h02020303,&h03020201
    ! DD &h03030303,&h03030203,&h02020304,&h02020203
    ! DD &h03020202,&h02020302,&h02020302,&h03020202
    ! DD &h02030303,&h03020303,&h03030303,&h03030303
    ! DD &h03020202,&h02010102,&h02020302,&h01010202
    ! DD &h02030202,&h02020103,&h02030203,&h04030102
    ! DD &h02030304,&h03020201,&h02020303,&h02020303
    ! DD &h02030303,&h04030303,&h02030103,&h03030302
    ! DD &h03020202,&h03030202,&h03020202,&h04030203
    ! DD &h03030303,&h04030303,&h03020303,&h02010303
    ! DD &h03020102,&h02030203,&h02030302,&h02020202
    ! DD &h03030302,&h03030302,&h03030303,&h03030302
    ! DD &h02020303,&h02010202,&h02030101,&h02020203
    ! DD &h03030201,&h03010303,&h02030301,&h03040203
    ! DD &h03020403,&h03020202,&h02020302,&h02020303
    ! DD &h03030203,&h03020302,&h02020303,&h03020203
    ! DD &h02030202,&h03040202,&h02030304,&h03020204
    ! DD &h03030302,&h02030203,&h02020303,&h02030302
    ! DD &h03020102,&h03020201,&h03020303,&h03030204
    ! DD &h03030302,&h02030203,&h02030303,&h03030202
    ! DD &h02030202,&h02020202,&h03010102,&h02020302
    ! DD &h03030101,&h03030402,&h03020203,&h04020302
    ! DD &h02030403,&h02030202,&h03020203,&h02020202
    ! DD &h02030202,&h03030303,&h02030203,&h03030303
    ! DD &h03020203,&h02020102,&h03030403,&h03020303
    ! DD &h03030302,&h03030304,&h02030202,&h02030302
    ! DD &h03020202,&h02030202,&h02030302,&h03030304
    ! DD &h03030202,&h03040302,&h03040302,&h02020202
    ! DD &h04030203,&h03020203,&h02010102,&h02020303
    ! DD &h03020102,&h03040302,&h03030303,&h03030202
    ! DD &h03030304,&h02020202,&h03020203,&h02020202
    ! DD &h03030202,&h03020302,&h03020403,&h03030303
    ! DD &h03020303,&h02030202,&h03030203,&h03030303
    ! DD &h02020303,&h02030202,&h02030303,&h03020303
    ! DD &h02020002,&h03020202,&h03020302,&h04040402
    ! DD &h03030202,&h03020102,&h03040202,&h03030202
    ! DD &h03020303,&h02030403,&h01020303,&h02020303
    ! DD &h03020203,&h04020203,&h03020303,&h03020303
    ! DD &h02030303,&h03020203,&h04030303,&h03030301
    ! DD &h03020202,&h02030303,&h03020303,&h03030302
    ! DD &h03030303,&h03020202,&h03030302,&h03030303
    ! DD &h02030202,&h03040303,&h02020202,&h03030202
    ! DD &h03020203,&h02030102,&h03020304,&h04030303
    ! DD &h03030303,&h02010203,&h03020303,&h03020203
    ! DD &h02020203,&h02030202,&h02020202,&h02020302
    ! DD &h03030202,&h03020302,&h03030303,&h03020302
    ! DD &h03030302,&h03020303,&h03040302,&h02020202
    ! DD &h03020202,&h03020203,&h02030203,&h03030303
    ! DD &h03030303,&h02020203,&h03030202,&h02030303
    ! DD &h03020203,&h04030203,&h02020303,&h03020303
    ! DD &h03040302,&h02020304,&h02020203,&h02010201
    ! DD &h03030303,&h02020303,&h03030202,&h02020203
    ! DD &h02020302,&h02030202,&h02010302,&h02020202
    ! DD &h02020301,&h02030203,&h02020202,&h03040203
    ! DD &h01020303,&h02020202,&h03020302,&h02020303
    ! DD &h01020303,&h03030203,&h03020303,&h02030202
    ! DD &h02020302,&h03020203,&h01020102,&h02020202
    ! DD &h02010303,&h04020302,&h02020403,&h03030203
    ! DD &h03030302,&h03020203,&h02020203,&h02020201
    ! DD &h03040302,&h02030303,&h03010202,&h01020303
    ! DD &h02030202,&h02020202,&h02020203,&h02020302
    ! DD &h02020202,&h03030303,&h03020202,&h03030303
    ! DD &h02030203,&h02030202,&h03030202,&h02030302
    ! DD &h03030102,&h03030302,&h03030303,&h03020302
    ! DD &h02020301,&h02010303,&h02020203,&h03030201
    ! DD &h02010303,&h03030102,&h02020404,&h03020202
    ! DD &h03030202,&h03020202,&h02020302,&h01010203
    ! DD &h03030202,&h03020202,&h01020202,&h03030303
    ! DD &h03020202,&h02030202,&h02030302,&h02020202
    ! DD &h02020201,&h03030101,&h01020304,&h02030202
    ! DD &h03020302,&h02020202,&h02020202,&h03030203
    ! DD &h02020302,&h02020203,&h02020202,&h02030202
    ! DD &h02020204,&h02020303,&h02020302,&h01020102
    ! DD &h02010202,&h02030102,&h02030303,&h02020202
    ! DD &h02020302,&h02020302,&h03020303,&h02020302
    ! DD &h03030101,&h02030203,&h02020303,&h03020203
    ! DD &h02010201,&h02020202,&h02030202,&h02020203
    ! DD &h02020101,&h04020202,&h02030302,&h03030201
    ! DD &h03020302,&h02020203,&h03020302,&h03030302
    ! DD &h02030203,&h03020203,&h03020303,&h03030303
    ! DD &h01030203,&h01010302,&h02020302,&h02030202
    ! DD &h02030403,&h03020202,&h03030303,&h03020303
    ! DD &h02010302,&h01010202,&h02020303,&h02020303
    ! DD &h02030202,&h03020303,&h02030302,&h03020202
    ! DD &h01020102,&h03020202,&h02010201,&h02020202
    ! DD &h03020302,&h02030302,&h03020304,&h03030203
    ! DD &h02020302,&h01020202,&h02020303,&h02020103
    ! DD &h02010202,&h03020203,&h02020303,&h02020302
    ! DD &h03020402,&h02020302,&h02030302,&h03020203
    ! DD &h02030203,&h03020201,&h03030403,&h02010403
    ! DD &h02020203,&h01020202,&h02020302,&h01020202
    ! DD &h02020102,&h02040203,&h02020202,&h02010203
    ! DD &h02020203,&h03020101,&h03020102,&h02020202
    ! DD &h02020202,&h03020302,&h03020303,&h03030303
    ! DD &h02030302,&h02020202,&h02020202,&h02030302
    ! DD &h02020203,&h02020202,&h02030204,&h02020202
    ! DD &h03030201,&h02020203,&h03040302,&h02030303
    ! DD &h03030302,&h02020101,&h03030302,&h02020403
    ! DD &h02020302,&h02010202,&h02030202,&h02020303
    ! DD &h03020301,&h02020203,&h02030203,&h02030402
    ! DD &h02020202,&h03020101,&h02020201,&h02020202
    ! DD &h02020301,&h03030201,&h02030404,&h03020202
    ! DD &h03030202,&h03030303,&h02010202,&h02020102
    ! DD &h02030302,&h03020202,&h03030302,&h02020302
    ! DD &h02020202,&h03030403,&h02020301,&h02020302
    ! DD &h02020203,&h02020102,&h03030302,&h02020303
    ! DD &h01020202,&h02010202,&h03020201,&h02020202
    ! DD &h03020202,&h02030202,&h03030303,&h02020202
    ! DD &h02020202,&h02020101,&h03020202,&h02020202
    ! DD &h02030302,&h02020203,&h03030403,&h03030202
    ! DD &h03030302,&h02030402,&h02020203,&h02010202
    ! DD &h03020302,&h02020202,&h03020303,&h02030203
    ! DD &h03020302,&h03020302,&h02030202,&h02030303
    ! DD &h04030303,&h02020302,&h02020202,&h04030302
    ! DD &h03020302,&h03020203,&h03040302,&h03020203
    ! DD &h02030201,&h03030302,&h02030303,&h03030203
    ! DD &h02020203,&h02020202,&h03020202,&h02030202
    ! DD &h04030202,&h02020102,&h02020302,&h02020303
    ! DD &h02020203,&h03020202,&h02030302,&h02020203
    ! DD &h03030202,&h01030103,&h03030202,&h02030303
    ! DD &h02020302,&h03020202,&h02020303,&h03020203
    ! DD &h03030303,&h02020302,&h03030202,&h03040303
    ! DD &h02020304,&h02020304,&h03030203,&h01020304
    ! DD &h03030201,&h03020302,&h02030202,&h02030304
    ! DD &h03030202,&h02020101,&h02030102,&h03030202
    ! DD &h03020203,&h02020203,&h02030201,&h02030302
    ! DD &h03020302,&h02020302,&h03020203,&h02010302
    ! DD &h02020202,&h02030203,&h04030302,&h03020302
    ! DD &h03020202,&h02020102,&h02030203,&h02020203
    ! DD &h03030202,&h03040302,&h03040203,&h03030203
    ! DD &h03020402,&h03020302,&h02020202,&h03030403
    ! DD &h02030103,&h03020102,&h02040303,&h04020302
    ! DD &h02020203,&h03020202,&h02030202,&h01020202
    ! DD &h02020102,&h02030203,&h03020202,&h02030202
    ! DD &h02020202,&h02020202,&h03030303,&h02020203
    ! DD &h02020202,&h03020202,&h03030201,&h03030304
    ! DD &h02030302,&h02020302,&h03040402,&h02020303
    ! DD &h02020203,&h02020303,&h03030303,&h03030303
    ! DD &h03030302,&h02030203,&h03020102,&h03040301
    ! DD &h03020303,&h02030203,&h04030402,&h03020303
    ! DD &h02020303,&h02010202,&h03030203,&h02020201
    ! DD &h02020201,&h03030302,&h03010202,&h02030202
    ! DD &h02020203,&h01020303,&h03020203,&h03020204
    ! DD &h02020201,&h03030203,&h03040201,&h03020304
    ! DD &h03030202,&h01020202,&h03030302,&h03020303
    ! DD &h03030302,&h02030201,&h04040203,&h03030303
    ! DD &h03030204,&h03020302,&h03020202,&h02030202
    ! DD &h02020303,&h04030302,&h03030202,&h02020202
    ! DD &h01020203,&h00010103,&h02030102,&h01020202
    ! DD &h03030102,&h03030203,&h01030303,&h02010103
    ! DD &h03020203,&h02020302,&h02030202,&h03030303
    ! DD &h02010203,&h02010203,&h02020102,&h03030402
    ! DD &h04040303,&h03030303,&h03030303,&h03030403
    ! DD &h03030202,&h02030203,&h03030202,&h03040403
    ! DD &h02020303,&h03020302,&h03020202,&h03020203
    ! DD &h02020302,&h03020302,&h03030204,&h02010303
    ! DD &h02020303,&h01020202,&h02020101,&h02010201
    ! DD &h03020202,&h02020203,&h03030303,&h02020202
    ! DD &h02020302,&h02020302,&h02010202,&h02030303
    ! DD &h01020102,&h02020202,&h02030202,&h03030302
    ! DD &h04030303,&h04030304,&h03030303,&h04030403
    ! DD &h03020302,&h03030102,&h04030303,&h03030202
    ! DD &h03020303,&h03040203,&h02020204,&h03020303
    ! DD &h01020302,&h02020202,&h04040302,&h03020303
    ! DD &h02020203,&h03020303,&h02030302,&h01020302
    ! DD &h01020102,&h02020302,&h02030302,&h01030303
    ! DD &h04020202,&h02020302,&h02030302,&h03020302
    ! DD &h02020302,&h02020303,&h03030201,&h02020203
    ! DD &h02030202,&h02030402,&h03030303,&h03040303
    ! DD &h02020203,&h02020203,&h03020202,&h03030203
    ! DD &h02020203,&h04020303,&h02020303,&h02020302
    ! DD &h02020302,&h02020201,&h03020302,&h02020304
    ! DD &h02020303,&h02010302,&h02030202,&h02020202
    ! DD &h02020202,&h02020301,&h02030201,&h02030202
    ! DD &h03020202,&h02020302,&h02020202,&h02030202
    ! DD &h02020203,&h02020302,&h03020202,&h03020302
    ! DD &h02020203,&h03030202,&h03030303,&h03040303
    ! DD &h02020303,&h03020203,&h03030303,&h03030302
    ! DD &h02010303,&h02010203,&h02030302,&h02020203
    ! DD &h03030202,&h02030202,&h02020303,&h02040403
    ! DD &h03020303,&h01010302,&h03020202,&h02020202
    ! DD &h03030303,&h03030203,&h03040303,&h02020302
    ! DD &h02030203,&h03020202,&h02010202,&h02020203
    ! DD &h03030303,&h03030303,&h02020203,&h02040303
    ! DD &h03020303,&h03020103,&h03030403,&h02020303
    ! DD &h02020303,&h03020302,&h03030202,&h03030204
    ! DD &h02010303,&h02030202,&h02030203,&h02030303
    ! DD &h02010302,&h03030202,&h03020303,&h03040302
    ! DD &h02020203,&h02020303,&h02020202,&h02010303
    ! DD &h02020302,&h04030204,&h04020203,&h03020302
    ! DD &h02020301,&h02020202,&h01020202,&h02020202
    ! DD &h02020302,&h03030302,&h03020304,&h03030202
    ! DD &h03020302,&h03010303,&h02020303,&h03030203
    ! DD &h02020403,&h03030303,&h03030202,&h02020202
    ! DD &h02030403,&h02020202,&h01020203,&h03010303
    ! DD &h02020202,&h03030203,&h03030303,&h03030202
    ! DD &h03030403,&h02010303,&h03020303,&h01030303
    ! DD &h03030203,&h03020303,&h02040403,&h03020204
    ! DD &h04030203,&h04020302,&h01020302,&h02010203
    ! DD &h03030302,&h02030303,&h03030303,&h03030202
    ! DD &h02030303,&h01010303,&h02030202,&h03020302
    ! DD &h03030303,&h03030303,&h02020302,&h02020303
    ! DD &h01020302,&h01020202,&h03030303,&h02030302
    ! DD &h03030203,&h02020202,&h02030304,&h03030202
    ! DD &h03030303,&h02030303,&h03020202,&h02020403
    ! DD &h02020302,&h02020202,&h04030303,&h02020303
    ! DD &h03020303,&h02030202,&h02030303,&h02020201
    ! DD &h02020202,&h03020303,&h03020203,&h04030303
    ! DD &h02020303,&h01030202,&h02040102,&h02030303
    ! DD &h03030304,&h03020302,&h04030203,&h03020303
    ! DD &h02030402,&h02030203,&h03030301,&h03020304
    ! DD &h02020202,&h03020203,&h04030304,&h02030203
    ! DD &h03030303,&h03030303,&h01020303,&h03040304
    ! DD &h02020302,&h02030303,&h02030302,&h02020303
    ! DD &h02020203,&h03010102,&h03030302,&h02020202
    ! DD &h02020202,&h03030302,&h03030303,&h02020303
    ! DD &h03030302,&h03030203,&h03030203,&h03020204
    ! DD &h03020303,&h03020303,&h03030304,&h02030203
    ! DD &h03040303,&h02020302,&h02020202,&h03020403
    ! DD &h02020202,&h03020302,&h03020303,&h02020303
    ! DD &h03030303,&h02020302,&h02030203,&h03030302
    ! DD &h03030202,&h02020302,&h03030302,&h02020302
    ! DD &h02020203,&h02020203,&h02030303,&h02030103
    ! DD &h02020102,&h03030101,&h02030302,&h02020303
    ! DD &h04030203,&h04020303,&h04030202,&h02020304
    ! DD &h02020303,&h02020302,&h03030301,&h03030403
    ! DD &h04040403,&h02030203,&h02020102,&h03030303
    ! DD &h02020202,&h02030203,&h03030303,&h02030304
    ! DD &h03030302,&h02020204,&h02010403,&h03020203
    ! DD &h03020301,&h02030203,&h04020202,&h03030303
    ! DD &h01030402,&h03010202,&h03020302,&h03020302
    ! DD &h03020201,&h03030202,&h03020203,&h02030303
    ! DD &h04020202,&h02020201,&h03030202,&h02030403
    ! DD &h03030303,&h02030304,&h03020201,&h03030302
    ! DD &h04040303,&h02030303,&h02020203,&h02020302
    ! DD &h02030203,&h03030303,&h03020303,&h03040303
    ! DD &h04030202,&h02030304,&h02020302,&h02030303
    ! DD &h02020202,&h02030203,&h03020202,&h02030304
    ! DD &h02030202,&h02010203,&h03030202,&h03020202
    ! DD &h03010201,&h03020301,&h02020202,&h03030303
    ! DD &h02020302,&h02030103,&h03020102,&h02020302
    ! DD &h01030202,&h04020403,&h04030202,&h03020403
    ! DD &h04030302,&h04030303,&h03030403,&h04020303
    ! DD &h02010303,&h03020202,&h02020202,&h02030203
    ! DD &h03020202,&h03040302,&h02020203,&h03020202
    ! DD &h03020203,&h03040302,&h03020403,&h04020302
    ! DD &h03020203,&h02020303,&h03030303,&h04030302
    ! DD &h02030303,&h03030202,&h03020103,&h03030303
    ! DD &h03040304,&h03030302,&h03030203,&h03030203
    ! DD &h03030302,&h03020302,&h03020303,&h02030303
    ! DD &h03030203,&h03020303,&h03050203,&h03030303
    ! DD &h01020303,&h02030203,&h01020202,&h03020202
    ! DD &h02020303,&h03030302,&h02030303,&h02010202
    ! DD &h02020302,&h04030203,&h02030303,&h03030202
    ! DD &h02020303,&h02020303,&h03030303,&h03030302
    ! DD &h02030203,&h02020203,&h02020203,&h03030303
    ! DD &h03050303,&h02020203,&h02020304,&h02020304
    ! DD &h03030202,&h03040303,&h02020303,&h03020202
    ! DD &h04040302,&h02040403,&h04030202,&h03030303
    ! DD &h01030203,&h03030202,&h01020202,&h02020101
    ! DD &h03030202,&h03030203,&h03030303,&h01020303
    ! DD &h02020303,&h02020102,&h03030302,&h02030203
    ! DD &h02030303,&h03020303,&h03030303,&h03020203
    ! DD &h03020202,&h03030402,&h02020203,&h03020202
    ! DD &h04030302,&h01020304,&h02030303,&h03030302
    ! DD &h03020303,&h04030302,&h02030303,&h02020201
    ! DD &h03030202,&h03030303,&h03030202,&h02020304
    ! DD &h02020404,&h02030201,&h03020303,&h01010102
    ! DD &h03030301,&h04030203,&h03030303,&h02030302
    ! DD &h03030202,&h03020203,&h03030301,&h02020303
    ! DD &h03030303,&h02020304,&h03040302,&h03020303
    ! DD &h02030203,&h02020203,&h02030203,&h03020203
    ! DD &h04030302,&h02030403,&h03030303,&h03030303
    ! DD &h04020202,&h02020203,&h04030303,&h03020302
    ! DD &h03030202,&h03020303,&h02020203,&h03030404
    ! DD &h04030403,&h02020202,&h02030303,&h03030203
    ! DD &h02030102,&h02020202,&h04030203,&h03030303
    ! DD &h03030303,&h03030202,&h03030203,&h02030403
    ! DD &h02030303,&h03030303,&h03030303,&h03030303
    ! DD &h02010202,&h03030302,&h03020302,&h03030303
    ! DD &h03020302,&h02020304,&h02030202,&h03030203
    END SUB



    ------------------
    Spherical Panorama Inc. Virtual Reality for: Real Estate, Tourism Advertisment.

  • #2
    '------------------------------------------------------------------------
    ' GLUT.INC -- Part of the OpenGL32 API Includes for PB/DLL 6.0 Release 5
    ' Copyright 2000 sublevel6.
    '
    ' Release date: Sunday, March 12, 2000
    ' Homepage: http://www.sublevel6.f2s.com/
    '------------------------------------------------------------------------

    '/* Copyright (c) Mark J. Kilgard, 1994, 1995, 1996. */
    '
    '/* This program is freely distributable without licensing fees and is
    ' provided without guarantee or warrantee expressed or implied. This
    ' program is -not- in the public domain. */

    #INCLUDE "gl/gl.inc"
    #INCLUDE "gl/glu.inc"

    #IF NOT %DEF(%GLUT_API_VERSION)
    %GLUT_API_VERSION = 3
    #ENDIF

    #IF NOT %DEF(%GLUT_XLIB_IMPLEMENTATION)
    %GLUT_XLIB_IMPLEMENTATION = 13
    #ENDIF


    %GLUT_INC = 1

    %GLUT_RGB = 0
    %GLUT_RGBA = %GLUT_RGB
    %GLUT_INDEX = 1
    %GLUT_SINGLE = 0
    %GLUT_DOUBLE = 2
    %GLUT_ACCUM = 4
    %GLUT_ALPHA = 8
    %GLUT_DEPTH = 16
    %GLUT_STENCIL = 32
    '#if (GLUT_API_VERSION >= 2)
    %GLUT_MULTISAMPLE = 128
    %GLUT_STEREO = 256
    '#endif
    '#if (GLUT_API_VERSION >= 3)
    %GLUT_LUMINANCE = 512
    '#endif

    %GLUT_LEFT_BUTTON = 0
    %GLUT_MIDDLE_BUTTON = 1
    %GLUT_RIGHT_BUTTON = 2

    %GLUT_DOWN = 0
    %GLUT_UP = 1

    '#if (GLUT_API_VERSION >= 2)
    %GLUT_KEY_F1 = 1
    %GLUT_KEY_F2 = 2
    %GLUT_KEY_F3 = 3
    %GLUT_KEY_F4 = 4
    %GLUT_KEY_F5 = 5
    %GLUT_KEY_F6 = 6
    %GLUT_KEY_F7 = 7
    %GLUT_KEY_F8 = 8
    %GLUT_KEY_F9 = 9
    %GLUT_KEY_F10 = 10
    %GLUT_KEY_F11 = 11
    %GLUT_KEY_F12 = 12
    %GLUT_KEY_LEFT = 100
    %GLUT_KEY_UP = 101
    %GLUT_KEY_RIGHT = 102
    %GLUT_KEY_DOWN = 103
    %GLUT_KEY_PAGE_UP = 104
    %GLUT_KEY_PAGE_DOWN = 105
    %GLUT_KEY_HOME = 106
    %GLUT_KEY_END = 107
    %GLUT_KEY_INSERT = 108
    '#endif

    %GLUT_LEFT = 0
    %GLUT_ENTERED = 1

    %GLUT_MENU_NOT_IN_USE = 0
    %GLUT_MENU_IN_USE = 1

    %GLUT_NOT_VISIBLE = 0
    %GLUT_VISIBLE = 1

    %GLUT_HIDDEN = 0
    %GLUT_FULLY_RETAINED = 1
    %GLUT_PARTIALLY_RETAINED = 2
    %GLUT_FULLY_COVERED = 3

    %GLUT_RED = 0
    %GLUT_GREEN = 1
    %GLUT_BLUE = 2

    %GLUT_NORMAL = 0
    %GLUT_OVERLAY = 1

    %GLUT_STROKE_ROMAN = 0 ' (void *)0 ie a pointer to 0... VARPTR(%GLUT_STROKE_ROMAN)
    %GLUT_STROKE_MONO_ROMAN = 1
    %GLUT_BITMAP_9_BY_15 = 2
    %GLUT_BITMAP_8_BY_13 = 3
    %GLUT_BITMAP_TIMES_ROMAN_10 = 4
    %GLUT_BITMAP_TIMES_ROMAN_24 = 5
    ' #if (GLUT_API_VERSION >= 3) Hi!
    %GLUT_BITMAP_HELVETICA_10 = 6
    %GLUT_BITMAP_HELVETICA_12 = 7
    %GLUT_BITMAP_HELVETICA_18 = 8
    '#endif

    %GLUT_WINDOW_X = 100
    %GLUT_WINDOW_Y = 101
    %GLUT_WINDOW_WIDTH = 102
    %GLUT_WINDOW_HEIGHT = 103
    %GLUT_WINDOW_BUFFER_SIZE = 104
    %GLUT_WINDOW_STENCIL_SIZE = 105
    %GLUT_WINDOW_DEPTH_SIZE = 106
    %GLUT_WINDOW_RED_SIZE = 107
    %GLUT_WINDOW_GREEN_SIZE = 108
    %GLUT_WINDOW_BLUE_SIZE = 109
    %GLUT_WINDOW_ALPHA_SIZE = 110
    %GLUT_WINDOW_ACCUM_RED_SIZE = 111
    %GLUT_WINDOW_ACCUM_GREEN_SIZE = 112
    %GLUT_WINDOW_ACCUM_BLUE_SIZE = 113
    %GLUT_WINDOW_ACCUM_ALPHA_SIZE = 114
    %GLUT_WINDOW_DOUBLEBUFFER = 115
    %GLUT_WINDOW_RGBA = 116
    %GLUT_WINDOW_PARENT = 117
    %GLUT_WINDOW_NUM_CHILDREN = 118
    %GLUT_WINDOW_COLORMAP_SIZE = 119
    '#if (GLUT_API_VERSION >= 2)
    %GLUT_WINDOW_NUM_SAMPLES = 120
    %GLUT_WINDOW_STEREO = 121
    '#endif
    '#if (GLUT_API_VERSION >= 3)
    %GLUT_WINDOW_CURSOR = 122
    '#endif
    %GLUT_SCREEN_WIDTH = 200
    %GLUT_SCREEN_HEIGHT = 201
    %GLUT_SCREEN_WIDTH_MM = 202
    %GLUT_SCREEN_HEIGHT_MM = 203
    %GLUT_MENU_NUM_ITEMS = 300
    %GLUT_DISPLAY_MODE_POSSIBLE = 400
    %GLUT_INIT_WINDOW_X = 500
    %GLUT_INIT_WINDOW_Y = 501
    %GLUT_INIT_WINDOW_WIDTH = 502
    %GLUT_INIT_WINDOW_HEIGHT = 503
    %GLUT_INIT_DISPLAY_MODE = 504
    '#if (GLUT_API_VERSION >= 2)
    %GLUT_ELAPSED_TIME = 700
    '#endif
    '#if (GLUT_API_VERSION >= 4 &#0124; &#0124; GLUT_XLIB_IMPLEMENTATION >= 13)
    %GLUT_WINDOW_FORMAT_ID = 123
    '#endif

    '#if (GLUT_API_VERSION >= 2)
    %GLUT_HAS_KEYBOARD = 600
    %GLUT_HAS_MOUSE = 601
    %GLUT_HAS_SPACEBALL = 602
    %GLUT_HAS_DIAL_AND_BUTTON_BOX = 603
    %GLUT_HAS_TABLET = 604
    %GLUT_NUM_MOUSE_BUTTONS = 605
    %GLUT_NUM_SPACEBALL_BUTTONS = 606
    %GLUT_NUM_BUTTON_BOX_BUTTONS = 607
    %GLUT_NUM_DIALS = 608
    %GLUT_NUM_TABLET_BUTTONS = 609
    '#endif
    '#if (GLUT_API_VERSION >= 4 &#0124; &#0124; GLUT_XLIB_IMPLEMENTATION >= 13)
    %GLUT_DEVICE_IGNORE_KEY_REPEAT = 610
    %GLUT_DEVICE_KEY_REPEAT = 611
    %GLUT_HAS_JOYSTICK = 612
    %GLUT_OWNS_JOYSTICK = 613
    %GLUT_JOYSTICK_BUTTONS = 614
    %GLUT_JOYSTICK_AXES = 615
    %GLUT_JOYSTICK_POLL_RATE = 616
    '#endif

    '#if (GLUT_API_VERSION >= 3)
    %GLUT_OVERLAY_POSSIBLE = 800
    %GLUT_LAYER_IN_USE = 801
    %GLUT_HAS_OVERLAY = 802
    %GLUT_TRANSPARENT_INDEX = 803
    %GLUT_NORMAL_DAMAGED = 804
    %GLUT_OVERLAY_DAMAGED = 805

    '#if (GLUT_API_VERSION >= 4 &#0124; &#0124; GLUT_XLIB_IMPLEMENTATION >= 9)
    %GLUT_VIDEO_RESIZE_POSSIBLE = 900
    %GLUT_VIDEO_RESIZE_IN_USE = 901
    %GLUT_VIDEO_RESIZE_X_DELTA = 902
    %GLUT_VIDEO_RESIZE_Y_DELTA = 903
    %GLUT_VIDEO_RESIZE_WIDTH_DELTA = 904
    %GLUT_VIDEO_RESIZE_HEIGHT_DELTA = 905
    %GLUT_VIDEO_RESIZE_X = 906
    %GLUT_VIDEO_RESIZE_Y = 907
    %GLUT_VIDEO_RESIZE_WIDTH = 908
    %GLUT_VIDEO_RESIZE_HEIGHT = 909
    '#endif

    %GLUT_NORMAL = 0
    %GLUT_OVERLAY = 1

    %GLUT_ACTIVE_SHIFT = 1
    %GLUT_ACTIVE_CTRL = 2
    %GLUT_ACTIVE_ALT = 4
    %GLUT_CURSOR_RIGHT_ARROW = 0
    %GLUT_CURSOR_LEFT_ARROW = 1
    %GLUT_CURSOR_INFO = 2
    %GLUT_CURSOR_DESTROY = 3
    %GLUT_CURSOR_HELP = 4
    %GLUT_CURSOR_CYCLE = 5
    %GLUT_CURSOR_SPRAY = 6
    %GLUT_CURSOR_WAIT = 7
    %GLUT_CURSOR_TEXT = 8
    %GLUT_CURSOR_CROSSHAIR = 9
    %GLUT_CURSOR_UP_DOWN = 10
    %GLUT_CURSOR_LEFT_RIGHT = 11
    %GLUT_CURSOR_TOP_SIDE = 12
    %GLUT_CURSOR_BOTTOM_SIDE = 13
    %GLUT_CURSOR_LEFT_SIDE = 14
    %GLUT_CURSOR_RIGHT_SIDE = 15
    %GLUT_CURSOR_TOP_LEFT_CORNER = 16
    %GLUT_CURSOR_TOP_RIGHT_CORNER = 17
    %GLUT_CURSOR_BOTTOM_RIGHT_CORNER = 18
    %GLUT_CURSOR_BOTTOM_LEFT_CORNER = 19
    %GLUT_CURSOR_INHERIT = 100
    %GLUT_CURSOR_NONE = 101
    %GLUT_CURSOR_FULL_CROSSHAIR = 102
    '#endif

    DECLARE SUB glutInit LIB "glut32.dll" ALIAS "glutInit" (argcp AS LONG, argv AS string)
    DECLARE SUB glutInitDisplayMode LIB "glut32.dll" ALIAS "glutInitDisplayMode" (BYVAL mode AS DWORD)
    DECLARE SUB glutInitDisplayString LIB "glut32.dll" ALIAS "glutInitDisplayString" (zstring AS ASCIIZ)
    DECLARE SUB glutInitWindowPosition LIB "glut32.dll" ALIAS "glutInitWindowPosition" (BYVAL x AS LONG, BYVAL y AS LONG)
    DECLARE SUB glutInitWindowSize LIB "glut32.dll" ALIAS "glutInitWindowSize" (BYVAL nwidth AS LONG, BYVAL nheight AS LONG)
    DECLARE SUB glutMainLoop LIB "glut32.dll" ALIAS "glutMainLoop" ()

    DECLARE FUNCTION glutCreateWindow LIB "glut32.dll" ALIAS "glutCreateWindow" (title AS ASCIIZ) AS LONG
    DECLARE FUNCTION glutCreateSubWindow LIB "glut32.dll" ALIAS "glutCreateSubWindow" (BYVAL win AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nwidth AS LONG, BYVAL nheight AS LONG) AS LONG
    DECLARE SUB glutDestroyWindow LIB "glut32.dll" ALIAS "glutDestroyWindow" (BYVAL win AS LONG)
    DECLARE SUB glutPostRedisplay LIB "glut32.dll" ALIAS "glutPostRedisplay" ()
    '#if (GLUT_API_VERSION >= 4 &#0124; &#0124; GLUT_XLIB_IMPLEMENTATION >= 11)
    DECLARE SUB glutPostWindowRedisplay LIB "glut32.dll" ALIAS "glutPostWindowRedisplay" (BYVAL win AS LONG)
    '#endif
    DECLARE SUB glutSwapBuffers LIB "glut32.dll" ALIAS "glutSwapBuffers" ()
    DECLARE FUNCTION glutGetWindow LIB "glut32.dll" ALIAS "glutGetWindow" () AS LONG
    DECLARE SUB glutSetWindow LIB "glut32.dll" ALIAS "glutSetWindow" (BYVAL win AS LONG)
    DECLARE SUB glutSetWindowTitle LIB "glut32.dll" ALIAS "glutSetWindowTitle" (title AS ASCIIZ)
    DECLARE SUB glutSetIconTitle LIB "glut32.dll" ALIAS "glutSetIconTitle" (title AS ASCIIZ)
    DECLARE SUB glutPositionWindow LIB "glut32.dll" ALIAS "glutPositionWindow" (BYVAL xy AS LONG, BYVAL y AS LONG)
    DECLARE SUB glutReshapeWindow LIB "glut32.dll" ALIAS "glutReshapeWindow" (BYVAL nwidth AS LONG, BYVAL nheight AS LONG)
    DECLARE SUB glutPopWindow LIB "glut32.dll" ALIAS "glutPopWindow" ()
    DECLARE SUB glutPushWindow LIB "glut32.dll" ALIAS "glutPushWindow" ()
    DECLARE SUB glutIconifyWindow LIB "glut32.dll" ALIAS "glutIconifyWindow" ()
    DECLARE SUB glutShowWindow LIB "glut32.dll" ALIAS "glutShowWindow" ()
    DECLARE SUB glutHideWindow LIB "glut32.dll" ALIAS "glutHideWindow" ()
    '#if (GLUT_API_VERSION >= 3)
    DECLARE SUB glutFullScreen LIB "glut32.dll" ALIAS "glutFullScreen" ()
    DECLARE SUB glutSetCursor LIB "glut32.dll" ALIAS "glutSetCursor" (BYVAL cursor AS LONG)
    '#if (GLUT_API_VERSION >= 4 &#0124; &#0124; GLUT_XLIB_IMPLEMENTATION >= 9)
    '#endif
    DECLARE SUB glutWarpPointer LIB "glut32.dll" ALIAS "glutWarpPointer" (BYVAL x AS LONG, BYVAL y AS LONG)
    DECLARE SUB glutEstablishOverlay LIB "glut32.dll" ALIAS "glutEstablishOverlay" ()
    DECLARE SUB glutRemoveOverlay LIB "glut32.dll" ALIAS "glutRemoveOverlay" ()
    DECLARE SUB glutUseLayer LIB "glut32.dll" ALIAS "glutUseLayer" (BYVAL layer AS DWORD)
    DECLARE SUB glutPostOverlayRedisplay LIB "glut32.dll" ALIAS "glutPostOverlayRedisplay" ()
    '#if (GLUT_API_VERSION >= 4 &#0124; &#0124; GLUT_XLIB_IMPLEMENTATION >= 11)
    DECLARE SUB glutPostWindowOverlayRedisplay LIB "glut32.dll" ALIAS "glutPostWindowOverlayRedisplay" (BYVAL win AS LONG)
    '#endif
    DECLARE SUB glutShowOverlay LIB "glut32.dll" ALIAS "glutShowOverlay" ()
    DECLARE SUB glutHideOverlay LIB "glut32.dll" ALIAS "glutHideOverlay" ()
    '#endif

    DECLARE FUNCTION glutCreateMenu LIB "glut32.dll" ALIAS "glutCreateMenu" (BYVAL param1 AS LONG) AS LONG
    DECLARE SUB glutDestroyMenu LIB "glut32.dll" ALIAS "glutDestroyMenu" (BYVAL nmenu AS LONG)
    DECLARE FUNCTION glutGetMenu LIB "glut32.dll" ALIAS "glutGetMenu" () AS LONG
    DECLARE SUB glutSetMenu LIB "glut32.dll" ALIAS "glutSetMenu" (BYVAL nmenu AS LONG)
    DECLARE SUB glutAddMenuEntry LIB "glut32.dll" ALIAS "glutAddMenuEntry" (label AS ASCIIZ, BYVAL value AS LONG)
    DECLARE SUB glutAddSubMenu LIB "glut32.dll" ALIAS "glutAddSubMenu" (label AS ASCIIZ, BYVAL submenu AS LONG)
    DECLARE SUB glutChangeToMenuEntry LIB "glut32.dll" ALIAS "glutChangeToMenuEntry" (BYVAL nitem AS LONG, label AS ASCIIZ, BYVAL value AS LONG)
    DECLARE SUB glutChangeToSubMenu LIB "glut32.dll" ALIAS "glutChangeToSubMenu" (BYVAL nitem AS LONG, label AS ASCIIZ, BYVAL submenu AS LONG)
    DECLARE SUB glutRemoveMenuItem LIB "glut32.dll" ALIAS "glutRemoveMenuItem" (BYVAL nitem AS LONG)
    DECLARE SUB glutAttachMenu LIB "glut32.dll" ALIAS "glutAttachMenu" (BYVAL button AS LONG)
    DECLARE SUB glutDetachMenu LIB "glut32.dll" ALIAS "glutDetachMenu" (BYVAL button AS LONG)

    DECLARE SUB glutDisplayFunc LIB "glut32.dll" ALIAS "glutDisplayFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub()
    DECLARE SUB glutReshapeFunc LIB "glut32.dll" ALIAS "glutReshapeFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int width, int height)
    DECLARE SUB glutKeyboardFunc LIB "glut32.dll" ALIAS "glutKeyboardFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(unsigned char key, int x, int y)
    DECLARE SUB glutMouseFunc LIB "glut32.dll" ALIAS "glutMouseFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int button, int state, int x, int y)
    DECLARE SUB glutMotionFunc LIB "glut32.dll" ALIAS "glutMotionFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int x, int y)
    DECLARE SUB glutPassiveMotionFunc LIB "glut32.dll" ALIAS "glutPassiveMotionFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int x, int y)
    DECLARE SUB glutEntryFunc LIB "glut32.dll" ALIAS "glutEntryFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int state)
    DECLARE SUB glutVisibilityFunc LIB "glut32.dll" ALIAS "glutVisibilityFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int state)
    DECLARE SUB glutIdleFunc LIB "glut32.dll" ALIAS "glutIdleFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub()
    DECLARE SUB glutTimerFunc LIB "glut32.dll" ALIAS "glutTimerFunc" (BYVAL millis AS DWORD, BYVAL ptr1 AS LONG, BYVAL value AS LONG) ' ptr to function: sub(int value)
    DECLARE SUB glutMenuStateFunc LIB "glut32.dll" ALIAS "glutMenuStateFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int state)
    '#if (GLUT_API_VERSION >= 2)
    DECLARE SUB glutSpecialFunc LIB "glut32.dll" ALIAS "glutSpecialFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int key, int x, int y)
    DECLARE SUB glutSpaceballMotionFunc LIB "glut32.dll" ALIAS "glutSpaceballMotionFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int x, int y, int z)
    DECLARE SUB glutSpaceballRotateFunc LIB "glut32.dll" ALIAS "glutSpaceballRotateFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int x, int y, int z)
    DECLARE SUB glutSpaceballButtonFunc LIB "glut32.dll" ALIAS "glutSpaceballButtonFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int button, int state)
    DECLARE SUB glutButtonBoxFunc LIB "glut32.dll" ALIAS "glutButtonBoxFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int button, int state)
    DECLARE SUB glutDialsFunc LIB "glut32.dll" ALIAS "glutDialsFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int dial, int value)
    DECLARE SUB glutTabletMotionFunc LIB "glut32.dll" ALIAS "glutTabletMotionFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int x, int y)
    DECLARE SUB glutTabletButtonFunc LIB "glut32.dll" ALIAS "glutTabletButtonFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int button, int state, int x, int y)
    '#if (GLUT_API_VERSION >= 3)
    DECLARE SUB glutMenuStatusFunc LIB "glut32.dll" ALIAS "glutMenuStatusFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int status, int x, int y)
    DECLARE SUB glutOverlayDisplayFunc LIB "glut32.dll" ALIAS "glutOverlayDisplayFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub()
    '#if (GLUT_API_VERSION >= 4 &#0124; &#0124; GLUT_XLIB_IMPLEMENTATION >= 9)
    DECLARE SUB glutWindowStatusFunc LIB "glut32.dll" ALIAS "glutWindowStatusFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int state)
    '#endif
    '#if (GLUT_API_VERSION >= 4 &#0124; &#0124; GLUT_XLIB_IMPLEMENTATION >= 13)
    DECLARE SUB glutKeyboardUpFunc LIB "glut32.dll" ALIAS "glutKeyboardUpFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(unsigned char key, int x, int y)
    DECLARE SUB glutSpecialUpFunc LIB "glut32.dll" ALIAS "glutSpecialUpFunc" (BYVAL ptr1 AS LONG) ' ptr to function: sub(int key, int x, int y)
    DECLARE SUB glutJoystickFunc LIB "glut32.dll" ALIAS "glutJoystickFunc" (BYVAL ptr1 AS LONG, BYVAL pollInterval AS LONG) ' ptr to function: sub(unsigned int buttonMask, int x, int y, int z)
    '#endif
    '#endif
    '#endif

    ' and a few more #if's and #endif... but...
    DECLARE SUB glutSetColor LIB "glut32.dll" ALIAS "glutSetColor" (BYVAL param1 AS LONG, BYVAL red AS SINGLE, BYVAL green AS SINGLE, BYVAL blue AS SINGLE)
    DECLARE FUNCTION glutGetColor LIB "glut32.dll" ALIAS "glutGetColor" (BYVAL ndx AS LONG, BYVAL component AS LONG) AS LONG ' ptr to (red,green,blue) as single
    DECLARE SUB glutCopyColormap LIB "glut32.dll" ALIAS "glutCopyColormap" (BYVAL win AS LONG)
    DECLARE FUNCTION glutGet LIB "glut32.dll" ALIAS "glutGet" (BYVAL ntype AS DWORD) AS LONG
    DECLARE FUNCTION glutDeviceGet LIB "glut32.dll" ALIAS "glutDeviceGet" (BYVAL ntype AS DWORD) AS LONG
    DECLARE FUNCTION glutExtensionSupported LIB "glut32.dll" ALIAS "glutExtensionSupported" (zname AS ASCIIZ) AS LONG
    DECLARE FUNCTION glutGetModifiers LIB "glut32.dll" ALIAS "glutGetModifiers" () AS LONG
    DECLARE FUNCTION glutLayerGet LIB "glut32.dll" ALIAS "glutLayerGet" (BYVAL ntype AS DWORD) AS LONG
    DECLARE SUB glutBitmapCharacter LIB "glut32.dll" ALIAS "glutBitmapCharacter" (font AS LONG, BYVAL character AS LONG)
    DECLARE FUNCTION glutBitmapWidth LIB "glut32.dll" ALIAS "glutBitmapWidth" (font AS LONG, BYVAL character AS LONG) AS LONG
    DECLARE SUB glutStrokeCharacter LIB "glut32.dll" ALIAS "glutStrokeCharacter" (font AS LONG, BYVAL character AS LONG)
    DECLARE FUNCTION glutStrokeWidth LIB "glut32.dll" ALIAS "glutStrokeWidth" (font AS LONG, BYVAL character AS LONG) AS LONG
    DECLARE FUNCTION glutBitmapLength LIB "glut32.dll" ALIAS "glutBitmapLength" (font AS LONG, zstring AS ASCIIZ) AS LONG
    DECLARE FUNCTION glutStrokeLength LIB "glut32.dll" ALIAS "glutStrokeLength" (font AS LONG, zstring AS ASCIIZ) AS LONG
    DECLARE SUB glutWireSphere LIB "glut32.dll" ALIAS "glutWireSphere" (BYVAL radius AS DOUBLE, BYVAL slices AS LONG, BYVAL stacks AS LONG)
    DECLARE SUB glutSolidSphere LIB "glut32.dll" ALIAS "glutSolidSphere" (BYVAL radius AS DOUBLE, BYVAL slices AS LONG, BYVAL stacks AS LONG)
    DECLARE SUB glutWireCone LIB "glut32.dll" ALIAS "glutWireCone" (BYVAL nbase AS DOUBLE, BYVAL height AS DOUBLE, BYVAL slices AS LONG, BYVAL stacks AS LONG)
    DECLARE SUB glutSolidCone LIB "glut32.dll" ALIAS "glutSolidCone" (BYVAL nbase AS DOUBLE, BYVAL height AS DOUBLE, BYVAL slices AS LONG, BYVAL stacks AS LONG)
    DECLARE SUB glutWireCube LIB "glut32.dll" ALIAS "glutWireCube" (BYVAL nsize AS DOUBLE)
    DECLARE SUB glutSolidCube LIB "glut32.dll" ALIAS "glutSolidCube" (BYVAL nsize AS DOUBLE)
    DECLARE SUB glutWireTorus LIB "glut32.dll" ALIAS "glutWireTorus" (BYVAL innerRadius AS DOUBLE, BYVAL outerRadius AS DOUBLE, BYVAL sides AS LONG, BYVAL rings AS LONG)
    DECLARE SUB glutSolidTorus LIB "glut32.dll" ALIAS "glutSolidTorus" (BYVAL innerRadius AS DOUBLE, BYVAL outerRadius AS DOUBLE, BYVAL sides AS LONG, BYVAL rings AS LONG)
    DECLARE SUB glutWireDodecahedron LIB "glut32.dll" ALIAS "glutWireDodecahedron" ()
    DECLARE SUB glutSolidDodecahedron LIB "glut32.dll" ALIAS "glutSolidDodecahedron" ()
    DECLARE SUB glutWireTeapot LIB "glut32.dll" ALIAS "glutWireTeapot" (BYVAL nsize AS DOUBLE)
    DECLARE SUB glutSolidTeapot LIB "glut32.dll" ALIAS "glutSolidTeapot" (BYVAL nsize AS DOUBLE)
    DECLARE SUB glutWireOctahedron LIB "glut32.dll" ALIAS "glutWireOctahedron" ()
    DECLARE SUB glutSolidOctahedron LIB "glut32.dll" ALIAS "glutSolidOctahedron" ()
    DECLARE SUB glutWireTetrahedron LIB "glut32.dll" ALIAS "glutWireTetrahedron" ()
    DECLARE SUB glutSolidTetrahedron LIB "glut32.dll" ALIAS "glutSolidTetrahedron" ()
    DECLARE SUB glutWireIcosahedron LIB "glut32.dll" ALIAS "glutWireIcosahedron" ()
    DECLARE SUB glutSolidIcosahedron LIB "glut32.dll" ALIAS "glutSolidIcosahedron" ()
    DECLARE FUNCTION glutVideoResizeGet LIB "glut32.dll" ALIAS "glutVideoResizeGet" (BYVAL param AS DWORD) AS LONG
    DECLARE SUB glutSetupVideoResizing LIB "glut32.dll" ALIAS "glutSetupVideoResizing" ()
    DECLARE SUB glutStopVideoResizing LIB "glut32.dll" ALIAS "glutStopVideoResizing" ()
    DECLARE SUB glutVideoResize LIB "glut32.dll" ALIAS "glutVideoResize" (BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nwidth AS LONG, BYVAL nheight AS LONG)
    DECLARE SUB glutVideoPan LIB "glut32.dll" ALIAS "glutVideoPan" (BYVAL x AS LONG, BYVAL y AS LONG, BYVAL nwidth AS LONG, BYVAL nheight AS LONG)
    DECLARE SUB glutReportErrors LIB "glut32.dll" ALIAS "glutReportErrors" ()



    ------------------
    Spherical Panorama Inc. Virtual Reality for: Real Estate, Tourism Advertisment.

    Comment

    Working...
    X