home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 594b.lha / VectorLibrary / Basic / vd_ship (.txt) < prev    next >
AmigaBASIC Source Code  |  1991-11-09  |  14KB  |  627 lines

  1. '***************************************
  2. '*                                     *
  3. '* Basic-Demo for vector.library V1.6x *
  4. '*                                     *
  5. '* ©1991 by Alexander Lippert          *
  6. '*                                     *
  7. '* All object-design done by           *
  8. '*   Oliver Hahn ©1991                 *
  9. '*                                     *
  10. '***************************************
  11.  
  12. LIBRARY "exec.library"
  13. LIBRARY "vector.library"
  14.  
  15. DECLARE FUNCTION AllocMem& LIBRARY
  16. DECLARE FUNCTION FreeMem& LIBRARY
  17.  
  18. DECLARE FUNCTION SetVBI& LIBRARY
  19. DECLARE FUNCTION InitVBOBs& LIBRARY
  20. DECLARE FUNCTION OpenVScreen& LIBRARY
  21. DECLARE FUNCTION CloseVScreen& LIBRARY
  22. DECLARE FUNCTION UseJoy& LIBRARY
  23. DECLARE FUNCTION DoAnim& LIBRARY
  24. DECLARE FUNCTION FreeVBOBs& LIBRARY
  25. DECLARE FUNCTION AutoScaleOn& LIBRARY
  26. DECLARE FUNCTION AutoScaleOff& LIBRARY
  27. DECLARE FUNCTION FreeJoy& LIBRARY
  28. DECLARE FUNCTION SetColors& LIBRARY
  29.  
  30. fmem&=65537   ' Flags fuer FastMem
  31. cmem&=65539   ' Flags fuer ChipMem
  32.  
  33. RESTORE NewVScreen ' Zeiger auf NewVScreen
  34. GOSUB OpenVScreen  ' VScreen öffnen
  35.  
  36. RESTORE ColorTab ' Zeiger auf Farb-Tabelle
  37. GOSUB SetColors  ' Farben setzen
  38.  
  39. RESTORE BOBList  ' Zeiger auf BOBListe
  40. GOSUB InitVBOBs  ' VBOBs initialisieren
  41.  
  42. res=AutoScaleOn&(PEEKW(nsm&+12)) ' Entzerrung fuer höhrerr Auflösungen
  43.  
  44. RESTORE JoyStruct ' Zeiger auf Joystick-Struktur
  45. 'GOSUB UseJoy      ' Joystick nicht benutzen
  46.  
  47. RESTORE PointTab
  48. GOSUB MakePointTab ' Punkt-Tabelle anlegen
  49.  
  50. RESTORE AreaTab
  51. GOSUB MakeAreaTab ' Flächen-Tabelle anlegen
  52.  
  53. RESTORE MoveTab
  54. GOSUB MakeMoveTab ' Bewegungs-Tabelle anlegen
  55.  
  56. RESTORE ObjectStruct
  57. GOSUB MakeObjectStruct ' Object-Struktur anlegen
  58.  
  59. RESTORE WorldStruct
  60. GOSUB MakeWorldStruct ' Welt-Struktur anlegen
  61.  
  62. res=DoAnim&(world&) ' Animation der Körper
  63.  
  64.  
  65. res=CloseVScreen& ' Screen schließen
  66.  
  67. 'res=FreeJoy&    ' nur, wenn zuvor
  68. 'res=FreeMem&(joy&,12&) ' UseJoy& erfolgte
  69.  
  70. res=FreeVBOBs  ' nur, wenn zuvor
  71. res=FreeMem&(bobs&,bobsize&) ' InitVBOBs& erfolgte
  72.  
  73. res=FreeMem&(nsm&,34)  ' von Strukturen belegten
  74. res=FreeMem&(coltab&,8*64+2) ' Speicher freigeben
  75. res=FreeMem&(world&,wdsize&) ' ...
  76. res=FreeMem&(object&,26)
  77. res=FreeMem&(movetb&,1000)
  78. res=FreeMem&(areatb&,arsize&)
  79. res=FreeMem&(pointtb&,ptsize&)
  80.  
  81. LIBRARY CLOSE
  82.  
  83. END
  84.  
  85.  
  86. NewVScreen:
  87.   ' Offset von links oben
  88.  DATA 0,0
  89.   ' Ausdehnung des Screen
  90.  DATA 320,256
  91.   ' Tiefe des Screen
  92.  DATA 3
  93.   ' Farben der Titel-Leiste      
  94.  DATA 0,0 
  95.   ' ViewModes (&H8000 HiRes, &H4 Lace)
  96.  DATA 0
  97.   ' Zeiger auf Font und Title
  98.  DATA 0,0
  99.   ' Flags (z.Z. unbelegt)
  100.  DATA 0
  101.   ' Offset der Vektor-Graphik im Screen (z.Z. unbelegt)
  102.  DATA 0,0
  103.   ' Ausdehnung der Vector-Graphik (muß z.Z. Ausdehnung des Screens entsprechen) 
  104.  DATA 320,256
  105.   ' Tife der Vektor-Graphik
  106.  DATA 3
  107.  
  108.  
  109. WorldStruct:
  110.   ' Flags (1 fuer Drahtgitter), Anzahl der Objekte
  111.  DATA 0,1
  112.   ' Zeiger auf Objekte (werden von MakeWorldStruct eingetragen)
  113.  DATA 0
  114.  
  115.  
  116. ObjectStruct: ' Fuer jedes Objekt eine eigene!
  117.   ' Zeiger auf Punk-Tabelle, Flächen-Tabelle, Bewegungs-Tabelle (werden von MakeObjectStruct eingetragen)
  118.  DATA 0,0,0
  119.   ' Flags (z.Z. unbelegt)
  120.  DATA 0
  121.   ' Start-Position
  122.  DATA 0,0,-13500
  123.   ' Start-Rotation
  124.  DATA 0,0,0
  125.  
  126.  
  127. MoveTab:
  128.   ' Ticks, movx,movy,movz, rotx,roty,rotz
  129.  DATA 1, 0,0,0, -90,0,0
  130.  DATA 1, 0,0,0, 0,-90,0
  131.  DATA 150, 0,0,42, 0,0,0
  132.  DATA 150, 0,0,42, 0,1,0
  133.  DATA 400, 0,0,0, 0,1,1
  134.  DATA 400, 0,0,0, 0,1,1
  135.  DATA 300, 0,0,-42, 0,1,1
  136.  DATA -1
  137.  
  138.  
  139. ColorTab:
  140.  ' Register, Rot, Gruen, Blau
  141.  DATA 0, 0,0,0
  142.  DATA 1, 8,6,0
  143.  DATA 2, 7,5,0
  144.  DATA 3, 6,4,0
  145.  DATA 4, 5,3,0
  146.  DATA 5, 11,11,11
  147.  DATA 6, 10,10,10
  148.  DATA 7, 9,9,9
  149.  DATA -1
  150.  
  151.  
  152. JoyStruct:
  153.   ' Z-Geschwindigkeit, Vordere Grenze, Hintere Grenze
  154.  DATA 20,-300,-16000
  155.   ' Rotations-Geschwindigkeit um x,y,z-Achse
  156.  DATA 1,1,1
  157.  
  158.  
  159. BOBList:
  160.   ' Anzahl der VBOBs
  161.  DATA 16
  162.   ' Breite in Worten, Höhe, Reserved, Reserved
  163.  DATA 2,31,0,0
  164.  DATA 2,29,0,0
  165.  DATA 2,27,0,0
  166.  DATA 2,25,0,0
  167.  DATA 2,23,0,0
  168.  DATA 2,21,0,0
  169.  DATA 2,19,0,0
  170.  DATA 2,17,0,0
  171.  DATA 1,15,0,0
  172.  DATA 1,13,0,0
  173.  DATA 1,11,0,0
  174.  DATA 1,9,0,0
  175.  DATA 1,7,0,0
  176.  DATA 1,5,0,0
  177.  DATA 1,3,0,0
  178.  DATA 1,1,0,0
  179.   
  180.  
  181. PointTab: ' Punkt-Tabelle
  182.   ' Anzahl der Punkte eines Objekts
  183.  DATA 75
  184.   ' x,y,z-Koordinate, Eigengröße fuer VBOBs
  185.  DATA -100,4,190,0
  186.  DATA 0,-200,62,0
  187.  DATA 0,-186,16,0
  188.  DATA 0,-158,-12,0
  189.  DATA 0,-108,-25,0 
  190.  
  191.  DATA 0,-60,-25,0 
  192.  DATA 0,60,-25,0
  193.  DATA 0,108,-25,0
  194.  DATA 0,158,-12,0
  195.  DATA 0,186,16,0
  196.  
  197.  DATA 0,200,62,0 
  198.  DATA 34,-108,-4,0
  199.  DATA 42,-60,-10,0
  200.  DATA 42,60,-10,0
  201.  DATA 34,108,-4,0
  202.  
  203.  DATA 12,-176,42,0 
  204.  DATA 43,-108,22,0
  205.  DATA 50,-60,22,0
  206.  DATA 50,60,22,0
  207.  DATA 43,108,22,0
  208.  
  209.  DATA 12,176,42,0 
  210.  DATA -34,-108,-4,0
  211.  DATA -42,-60,-10,0
  212.  DATA -42,60,-10,0
  213.  DATA -34,108,-4,0
  214.  
  215.  DATA -12,-176,42,0 
  216.  DATA -43,-108,22,0
  217.  DATA -50,-60,22,0
  218.  DATA -50,60,22,0
  219.  DATA -43,108,22,0
  220.  
  221.  DATA -12,176,42,0 
  222.  DATA 0,-164,5,0
  223.  DATA 3,-3,5,0
  224.  DATA -3,-3,5,0
  225.  DATA 37,-108,5,0
  226.  
  227.  DATA -37,-108,5,0 
  228.  DATA 44,-60,5,0
  229.  DATA -44,-60,5,0
  230.  DATA 44,60,5,0
  231.  DATA -44,60,5,0
  232.  
  233.  DATA 37,108,5,0 
  234.  DATA -37,108,5,0
  235.  DATA 3,3,5,0
  236.  DATA -3,3,5,0
  237.  DATA 0,164,5,0
  238.  
  239.  DATA 3,-3,124,0 
  240.  DATA -3,-3,124,0
  241.  DATA 3,3,124,0
  242.  DATA -3,3,124,0
  243.  DATA 100,4,190,0
  244.  
  245.  DATA -92,25,154,0 
  246.  DATA 92,25,154,0
  247.  DATA 0,30,124,0
  248.  DATA -92,17,108,0
  249.  DATA 92,17,108,0
  250.  
  251.  DATA -46,20,78,0 
  252.  DATA 46,20,78,0
  253.  DATA -100,-18,50,0
  254.  DATA 100,-18,50,0
  255.  DATA 3,-3,200,0
  256.  
  257.  DATA -3,-3,200,0 
  258.  DATA 3,3,200,0
  259.  DATA -3,3,200,0
  260.  DATA 3,-3,78,0
  261.  DATA -3,-3,78,0
  262.   
  263.  DATA 3,3,78,0 
  264.  DATA -3,3,78,0
  265.  DATA 0,3,195,0
  266.  DATA 0,-3,195,0
  267.  DATA 90,-42,28,0
  268.  
  269.  DATA 70,-68,14,0
  270.  DATA 60,-88,14,0
  271.  DATA -90,-42,28,0
  272.  DATA -70,-68,14,0
  273.  DATA -60,-88,14,0
  274.  
  275.  
  276. AreaTab:  ' Flächen-Tabelle
  277.   ' Anzahl der Flächen eines Objekts
  278.  DATA 108
  279.   ' Eckenzahl oder Kennung, Farb-Nummer, Eckpunkte (max. 8)
  280.  DATA 3,1,1*4,15*4,2*4,1*4,0,0,0,0,0
  281.  DATA 3,1,2*4,15*4,16*4,2*4,0,0,0,0,0
  282.  DATA 3,1,2*4,16*4,11*4,2*4,0,0,0,0,0
  283.  DATA 3,2,11*4,16*4,17*4,11*4,0,0,0,0,0
  284.  DATA 3,2,11*4,17*4,12*4,11*4,0,0,0,0,0
  285.  
  286.  DATA 4,3,12*4,17*4,18*4,13*4,12*4,0,0,0,0
  287.  DATA 3,2,13*4,18*4,14*4,13*4,0,0,0,0,0
  288.  DATA 3,2,14*4,18*4,19*4,14*4,0,0,0,0,0
  289.  DATA 3,1,9*4,14*4,19*4,9*4,0,0,0,0,0
  290.  DATA 3,1,9*4,19*4,20*4,9*4,0,0,0,0,0
  291.  
  292.  DATA 3,1,9*4,20*4,10*4,9*4,0,0,0,0,0
  293.  DATA 3,2,2*4,4*4,3*4,2*4,0,0,0,0,0
  294.  DATA 3,2,2*4,11*4,4*4,2*4,0,0,0,0,0
  295.  DATA 3,3,4*4,11*4,12*4,4*4,0,0,0,0,0
  296.  DATA 3,3,4*4,12*4,5*4,4*4,0,0,0,0,0
  297.  
  298.  DATA 4,4,5*4,12*4,13*4,6*4,5*4,0,0,0,0
  299.  DATA 3,3,6*4,13*4,7*4,6*4,0,0,0,0,0
  300.  DATA 3,3,7*4,13*4,14*4,7*4,0,0,0,0,0
  301.  DATA 3,2,7*4,14*4,9*4,7*4,0,0,0,0,0
  302.  DATA 3,2,7*4,9*4,8*4,7*4,0,0,0,0,0
  303.  
  304.  DATA 3,1,1*4,2*4,25*4,1*4,0,0,0,0,0
  305.  DATA 3,1,2*4,26*4,25*4,2*4,0,0,0,0,0
  306.  DATA 3,1,2*4,21*4,26*4,2*4,0,0,0,0,0
  307.  DATA 3,2,21*4,27*4,26*4,21*4,0,0,0,0,0
  308.  DATA 3,2,21*4,22*4,27*4,21*4,0,0,0,0,0
  309.  
  310.  DATA 4,3,22*4,23*4,28*4,27*4,22*4,0,0,0,0
  311.  DATA 3,2,23*4,24*4,28*4,23*4,0,0,0,0,0
  312.  DATA 3,2,24*4,29*4,28*4,24*4,0,0,0,0,0
  313.  DATA 3,1,9*4,29*4,24*4,9*4,0,0,0,0,0
  314.  DATA 3,1,9*4,30*4,29*4,9*4,0,0,0,0,0
  315.  
  316.  DATA 3,1,9*4,10*4,30*4,9*4,0,0,0,0,0
  317.  DATA 3,2,2*4,3*4,4*4,2*4,0,0,0,0,0
  318.  DATA 3,2,2*4,4*4,21*4,2*4,0,0,0,0,0
  319.  DATA 3,3,4*4,22*4,21*4,4*4,0,0,0,0,0
  320.  DATA 3,3,4*4,5*4,22*4,4*4,0,0,0,0,0
  321.  
  322.  DATA 4,4,5*4,6*4,23*4,22*4,5*4,0,0,0,0
  323.  DATA 3,3,6*4,7*4,23*4,6*4,0,0,0,0,0
  324.  DATA 3,3,7*4,24*4,23*4,7*4,0,0,0,0,0
  325.  DATA 3,2,7*4,9*4,24*4,7*4,0,0,0,0,0
  326.  DATA 3,2,7*4,8*4,9*4,7*4,0,0,0,0,0
  327.  
  328.  DATA 3,2,1*4,31*4,15*4,1*4,0,0,0,0,0
  329.  DATA 3,2,15*4,31*4,16*4,15*4,0,0,0,0,0
  330.  DATA 3,2,16*4,31*4,34*4,16*4,0,0,0,0,0
  331.  DATA 3,3,16*4,34*4,17*4,16*4,0,0,0,0,0
  332.  DATA 3,3,17*4,34*4,36*4,17*4,0,0,0,0,0
  333.  
  334.  DATA 4,4,17*4,36*4,38*4,18*4,17*4,0,0,0,0
  335.  DATA 3,3,18*4,38*4,40*4,18*4,0,0,0,0,0
  336.  DATA 3,3,18*4,40*4,19*4,18*4,0,0,0,0,0
  337.  DATA 3,2,19*4,40*4,44*4,19*4,0,0,0,0,0
  338.  DATA 3,2,19*4,44*4,20*4,19*4,0,0,0,0,0
  339.  
  340.  DATA 3,2,10*4,20*4,44*4,10*4,0,0,0,0,0
  341.  DATA 3,2,1*4,25*4,31*4,1*4,0,0,0,0,0
  342.  DATA 3,2,25*4,26*4,31*4,25*4,0,0,0,0,0
  343.  DATA 3,2,26*4,35*4,31*4,26*4,0,0,0,0,0
  344.  DATA 3,3,26*4,27*4,35*4,26*4,0,0,0,0,0
  345.  
  346.  DATA 3,3,27*4,37*4,35*4,27*4,0,0,0,0,0
  347.  DATA 4,4,27*4,28*4,39*4,37*4,27*4,0,0,0,0
  348.  DATA 3,3,28*4,41*4,39*4,28*4,0,0,0,0,0
  349.  DATA 3,3,28*4,29*4,41*4,28*4,0,0,0,0,0
  350.  DATA 3,2,29*4,44*4,41*4,29*4,0,0,0,0,0
  351.  
  352.  DATA 3,2,29*4,30*4,44*4,29*4,0,0,0,0,0
  353.  DATA 3,2,10*4,44*4,30*4,10*4,0,0,0,0,0
  354.  DATA 3,1,31*4,35*4,34*4,31*4,0,0,0,0,0 
  355.  DATA 4,1,34*4,35*4,37*4,36*4,34*4,0,0,0,0
  356.  DATA 4,1,36*4,37*4,39*4,38*4,36*4,0,0,0,0
  357.  
  358.  DATA 4,1,38*4,39*4,41*4,40*4,38*4,0,0,0,0
  359.  DATA 3,1,40*4,41*4,44*4,40*4,0,0,0,0,0
  360.  DATA 4,3,32*4,63*4,65*4,42*4,32*4,0,0,0,0
  361.  DATA 4,2,32*4,33*4,64*4,63*4,32*4,0,0,0,0
  362.  DATA 4,3,33*4,43*4,66*4,64*4,33*4,0,0,0,0
  363.  
  364.  DATA 4,2,42*4,65*4,66*4,43*4,42*4,0,0,0,0
  365.  DATA 4,3,63*4,45*4,47*4,65*4,63*4,0,0,0,0
  366.  DATA 4,2,63*4,64*4,46*4,45*4,63*4,0,0,0,0
  367.  DATA 4,3,64*4,66*4,48*4,46*4,64*4,0,0,0,0
  368.  DATA 4,2,65*4,47*4,48*4,66*4,65*4,0,0,0,0
  369.  
  370.  DATA 4,4,45*4,46*4,48*4,47*4,45*4,0,0,0,0 
  371.  DATA 4,7,0*4,49*4,51*4,50*4,0*4,0,0,0,0  
  372.  DATA 3,7,50*4,52*4,53*4,50*4,0,0,0,0,0
  373.  DATA 3,7,50*4,51*4,52*4,50*4,0,0,0,0,0
  374.  DATA 3,7,51*4,54*4,52*4,51*4,0,0,0,0,0
  375.  
  376.  DATA 3,7,52*4,55*4,53*4,52*4,0,0,0,0,0
  377.  DATA 3,7,52*4,56*4,55*4,52*4,0,0,0,0,0
  378.  DATA 3,7,52*4,54*4,56*4,52*4,0,0,0,0,0
  379.  DATA 3,7,53*4,55*4,57*4,53*4,0,0,0,0,0
  380.  DATA 3,7,54*4,58*4,56*4,54*4,0,0,0,0,0
  381.  
  382.  DATA 4,7,0*4,50*4,51*4,49*4,0*4,0,0,0,0
  383.  DATA 3,5,50*4,53*4,52*4,50*4,0,0,0,0,0
  384.  DATA 3,6,50*4,52*4,51*4,50*4,0,0,0,0,0
  385.  DATA 3,6,51*4,52*4,54*4,51*4,0,0,0,0,0
  386.  DATA 3,5,52*4,53*4,55*4,52*4,0,0,0,0,0
  387.  
  388.  DATA 3,5,52*4,55*4,56*4,52*4,0,0,0,0,0
  389.  DATA 3,6,52*4,56*4,54*4,52*4,0,0,0,0,0
  390.  DATA 3,5,53*4,57*4,55*4,53*4,0,0,0,0,0
  391.  DATA 3,6,54*4,56*4,58*4,54*4,0,0,0,0,0
  392.  DATA 4,3,45*4,59*4,61*4,47*4,45*4,0,0,0,0
  393.  
  394.  DATA 4,2,45*4,46*4,60*4,61*4,45*4,0,0,0,0
  395.  DATA 4,3,46*4,48*4,62*4,60*4,46*4,0,0,0,0
  396.  DATA 4,2,47*4,61*4,62*4,48*4,47*4,0,0,0,0
  397.  DATA 0,7,1*4,67*4,0,0,0,0,0,0,0
  398.  DATA 0,7,10*4,68*4,0,0,0,0,0,0,0 
  399.  
  400.  DATA 0,7,58*4,69*4,0,0,0,0,0,0,0
  401.  DATA 0,6,69*4,70*4,0,0,0,0,0,0,0
  402.  DATA 0,5,70*4,71*4,0,0,0,0,0,0,0
  403.  DATA 0,6,71*4,16*4,0,0,0,0,0,0,0
  404.  DATA 0,7,57*4,72*4,0,0,0,0,0,0,0
  405.  
  406.  DATA 0,6,72*4,73*4,0,0,0,0,0,0,0
  407.  DATA 0,5,73*4,74*4,0,0,0,0,0,0,0
  408.  DATA 0,6,74*4,26*4,0,0,0,0,0,0,0
  409.  
  410.  
  411. OpenVScreen:
  412. nsm&=AllocMem&(34,fmem&)
  413.  
  414. READ leftedge,topedge,widt,height,depth,detailpen
  415. READ blockpen,viewmodes,a,a
  416. READ vwflags,vwleftedge,vwtopedge,vwwidt
  417. READ vwheight,vwdepth
  418.  
  419. POKEW nsm&,leftedge  ' NewVScreen-Struktur anlegen
  420. POKEW nsm&+2,topedge
  421. POKEW nsm&+4,widt
  422. POKEW nsm&+6,height
  423. POKEW nsm&+8,depth
  424. POKE  nsm&+10,detailpen
  425. POKE  nsm&+11,blockpen
  426. POKEW nsm&+12,viewmodes
  427. POKEL nms&+14,font
  428. POKEL nsm&+18,SADD("vector.library V1.67 ©91 by A.Lippert"+CHR$(0))
  429. POKEW nsm&+22,vwflags
  430. POKEW nsm&+24,vwleftedge
  431. POKEW nsm&+26,vwtopedge
  432. POKEW nsm&+28,vwwidt
  433. POKEW nsm&+30,vwheight
  434. POKEW nsm&+32,vwdepth
  435.  
  436. viewstruct&=OpenVScreen&(nsm&) ' Bibliothek aufrufen
  437.  
  438. RETURN
  439.  
  440.  
  441. SetColors:
  442. coltab&=AllocMem&(8*64+2,fmem&) ' fuer max. 64 Farben speicher allokieren
  443. ct=coltab&
  444.  
  445. READ reg
  446.  
  447. WHILE reg<>-1 ' Farb-Tabelle anlegen
  448.  READ r,g,b
  449.  POKEW ct,reg
  450.  POKEW ct+2,r
  451.  POKEW ct+4,g
  452.  POKEW ct+6,b
  453.  READ reg
  454.  ct=ct+8
  455. WEND
  456. POKEW ct,-1
  457.  
  458. res=SetColors&(viewstruct&,coltab&) ' Bibliothek aufrufen
  459.  
  460. RETURN
  461.  
  462.  
  463. MakePointTab:
  464. READ ptnum
  465. ptsize&=ptnum*8+2
  466. pointtb&=AllocMem&(ptsize&,fmem&)
  467.  
  468. pt=pointtb&
  469.  
  470. POKEW pt,ptnum
  471. pt=pt+2
  472.  
  473. FOR i=1 TO ptnum ' Punkt-Tabelle anlegen
  474.  READ x,y,z,ps
  475.  POKEW pt,x
  476.  POKEW pt+2,y
  477.  POKEW pt+4,z
  478.  POKEW pt+6,ps
  479.  pt=pt+8
  480. NEXT i
  481.  
  482. RETURN
  483.  
  484.  
  485. MakeAreaTab:
  486. READ arnum
  487. arsize&=arnum*22+2
  488. areatb&=AllocMem&(arsize&,fmem&)
  489.  
  490. ar=areatb&
  491.  
  492. POKEW ar,arnum
  493. ar=ar+2
  494.  
  495. FOR i=1 TO arnum ' Flächen-Tabelle anlegen
  496.  READ ptnum,col,pt1$,pt2$,pt3$,pt4$,pt5$,pt6$,pt7$,pt8$,pt9$
  497.  POKEW ar,ptnum
  498.  POKEW ar+2,col
  499.  POKEW ar+4,VAL(pt1$)*4
  500.  POKEW ar+6,VAL(pt2$)*4
  501.  POKEW ar+8,VAL(pt3$)*4
  502.  POKEW ar+10,VAL(pt4$)*4
  503.  POKEW ar+12,VAL(pt5$)*4
  504.  POKEW ar+14,VAL(pt6$)*4
  505.  POKEW ar+16,VAL(pt7$)*4
  506.  POKEW ar+18,VAL(pt8$)*4
  507.  POKEW ar+20,VAL(pt9$)*4
  508.  ar=ar+22
  509. NEXT i
  510.  
  511. RETURN
  512.  
  513.  
  514. MakeMoveTab:
  515. movetb&=AllocMem&(1000,fmem&) ' 1000 Bytes fr Bewegungs-Tabelle allokieren (mehr als ausreichend)
  516.  
  517. mv=movetb&
  518.  
  519. mvtabbeg:
  520. READ ticks
  521.  
  522. WHILE ticks => 0 ' Bewegungs-Tabelle anlegen
  523.  POKEW mv,ticks
  524.  READ movx,movy,movz,rotx,roty,rotz
  525.  POKEW mv+2,movx
  526.  POKEW mv+4,movy
  527.  POKEW mv+6,movz
  528.  POKEW mv+8,rotx
  529.  POKEW mv+10,roty
  530.  POKEW mv+12,rotz
  531.  READ ticks
  532.  mv=mv+14 
  533. WEND
  534.  
  535. IF ticks=-1 OR ticks = -2 THEN POKEW mv,ticks : GOTO mvtabend
  536.  
  537. IF ticks=-3 THEN POKEW mv,ticks : mv=mv+2 : GOTO mvtabbeg
  538. IF ticks=-4 THEN POKEW mv,ticks : READ count : POKEW mv+2,count : mv=mv+4 : GOTO mvtabbeg
  539.  
  540. mvtabend:
  541. RETURN
  542.  
  543.  
  544. MakeObjectStruct:
  545. READ a,a,a
  546.  
  547. object&=AllocMem&(26,fmem&)
  548.  
  549. READ flags,posx,posy,posz,rotx,roty,rotz
  550.  
  551. POKEL object&,pointtb&  ' Object-Struktur anlegen
  552. POKEL object&+4,areatb&
  553. POKEL object&+8,movetb&
  554. POKEW object&+12,flags
  555. POKEW object&+14,posx
  556. POKEW object&+16,posy
  557. POKEW object&+18,posz
  558. POKEW object&+20,rotx
  559. POKEW object&+22,roty
  560. POKEW object&+24,rotz
  561.  
  562. RETURN
  563.  
  564.  
  565. MakeWorldStruct:
  566. READ flags
  567. READ obnum
  568.  
  569. wdsize&=obnum*4+4
  570. world&=AllocMem&(wdsize&,fmem&)
  571.  
  572. wd=world&
  573.  
  574. POKEW wd,flags ' Welt-Struktur anlegen
  575. POKEW wd+2,obnum
  576.  
  577. wd=wd+4
  578.  
  579. READ a           ' Diese Sequenz muß fr jedes
  580. POKEL wd,object& ' Objekt erfolgen
  581.  
  582. RETURN
  583.  
  584.  
  585. UseJoy:
  586. joy&=AllocMem&(12,fmem&)
  587. READ movz,borderfront,borderback,rotx,roty,rotz
  588.  
  589. POKEW joy&,movz  ' Joystick-Struktur poken
  590. POKEW joy&+2,borderfront
  591. POKEW joy&+4,borderback
  592. POKEW joy&+6,rotx
  593. POKEW joy&+8,roty
  594. POKEW joy&+10,rotz
  595.  
  596. res=UseJoy&(0,joy&) ' Bibliothek aufrufen
  597.  
  598. RETURN
  599.  
  600.  
  601. InitVBOBs:
  602. READ bobnum
  603.  
  604. bobsize&=bobnum*12+2
  605. bobs&=AllocMem&(bobsize&,fmem&)
  606.  
  607. bb=bobs&
  608.  
  609. POKEW bb,bobnum
  610.  
  611. bb=bb+2
  612.  
  613. FOR i=1 TO bobnum ' BOBListe anlegen
  614.  READ widt,height,a,a
  615.  POKEW bb,widt
  616.  POKEW bb+2,height
  617.  POKEL bb+4,a
  618.  POKEL bb+8,a
  619.  bb=bb+12
  620. NEXT
  621.  
  622. ' Im folgenden Bibliotheksaufruf ist der Name des VBOB-Satzes enthalten (Pfad nicht vergessen!)
  623. nam$="VBOBs:bs1lo3_??.gfx"+CHR$(0)
  624. res=InitVBOBs&(PEEKW(nsm&+32),SADD(nam$),bobs&,0)
  625.  
  626. RETURN
  627.