home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 594b.lha / VectorLibrary / Assembler / vd_rot.s < prev    next >
Text File  |  1991-11-09  |  10KB  |  399 lines

  1.  ;  DevPac 2.14 !!
  2.  
  3. SetVBI       = -30
  4. InitVBOBs    = -36
  5. OpenVScreen  = -42
  6. CloseVScreen = -48
  7. UseJoy       = -54
  8. DoAnim       = -60
  9. RotateX      = -66
  10. RotateY      = -72
  11. RotateZ      = -78
  12. FreeVBOBs    = -84
  13. AutoScaleOn  = -90
  14. AutoScaleOff = -96
  15. FreeJoy      = -102
  16. SetColors    = -108
  17.  
  18.  move.l 4.w,a6
  19.  lea    vecname(pc),a1
  20.  jsr    -408(a6)            ; vector.library öffnen
  21.  move.l d0,vecbase
  22.  beq.s  end
  23.  
  24.  lea    NewVScreen(pc),a1
  25.  move.l vecbase(pc),a6
  26.  jsr    OpenVScreen(a6)     ; VScreen öffnen
  27.  move.l d0,viewstruc
  28.  
  29.  move.l viewstruc(pc),a0
  30.  lea    coltab(pc),a1
  31.  jsr    SetColors(a6)       ; Farben setzen
  32.  
  33.  move.w NewVScreen+12(pc),d0
  34.  jsr    AutoScaleOn(a6)     ; Entzerrung für evtl. höhere Auflösungen an
  35.  
  36.  move.l #rotpd+2,objectptr
  37.  lea    anim(pc),a1
  38.  jsr    SetVBI(a6)          ; VBI-Teil einbinden
  39.  
  40.  lea    World(pc),a1
  41.  jsr    DoAnim(a6)          ; Animation laufen lassen
  42.  
  43.  jsr    CloseVScreen(a6)    ; VScreen schließen
  44.  
  45.  move.l 4.w,a6
  46.  move.l vecbase(pc),a1
  47.  jsr    -414(a6)            ; vector.library schließen
  48.  
  49. end:
  50.  rts
  51.  
  52. vecbase   dc.l 0
  53. viewstruc dc.l 0
  54.  
  55. NewVScreen:
  56.  dc.w 0,0
  57.  dc.w 320,256
  58.  dc.w 3
  59.  dc.b 0,0
  60.  dc.w $00
  61.  dc.l 0
  62.  dc.l title
  63.  
  64.  dc.w 0
  65.  dc.w 0,0
  66.  dc.w 320,256
  67.  dc.w 3
  68.   
  69. title: dc.b "vector.library   ©1991 by A. Lippert"
  70.  even
  71.  
  72. World:
  73.  dc.w 0,1
  74.  dc.l object1
  75.  
  76. object1:
  77.  dc.l rotpd
  78.  dc.l rotad
  79.  dc.l rotmv
  80.  dc.w 0
  81.  dc.w 0,0,-14500
  82.  dc.w 0,0,0
  83.  
  84. rotpd:           ; Eckpunkt-Tabelle (wird vom VBI-teil vervollständigt)
  85.  dc.w 6*8
  86.  dc.w -30,192,0,0
  87.  dcb.w 7*4
  88.  dc.w -60,120,0,0
  89.  dcb.w 7*4
  90.  dc.w -192,24,0,0
  91.  dcb.w 7*4
  92.  dc.w -192,-24,0,0
  93.  dcb.w 7*4
  94.  dc.w -60,-120,0,0
  95.  dcb.w 7*4
  96.  dc.w -30,-192,0,0
  97.  dcb.w 7*4
  98.  
  99. rotad:             ; Flächen-Tabelle
  100.  dc.w 2+8+8+8+8+8
  101.  dc.w 8,7,0*4,1*4,2*4,3*4,4*4,5*4,6*4,7*4,0*4
  102.  dc.w 8,7,47*4,46*4,45*4,44*4,43*4,42*4,41*4,40*4,47*4
  103.  
  104.  dc.w 4,3,40*4,41*4,33*4,32*4,40*4,0,0,0,0
  105.  dc.w 4,4,41*4,42*4,34*4,33*4,41*4,0,0,0,0
  106.  dc.w 4,3,42*4,43*4,35*4,34*4,42*4,0,0,0,0
  107.  dc.w 4,4,43*4,44*4,36*4,35*4,43*4,0,0,0,0
  108.  dc.w 4,3,44*4,45*4,37*4,36*4,44*4,0,0,0,0
  109.  dc.w 4,4,45*4,46*4,38*4,37*4,45*4,0,0,0,0
  110.  dc.w 4,3,46*4,47*4,39*4,38*4,46*4,0,0,0,0
  111.  dc.w 4,4,47*4,40*4,32*4,39*4,47*4,0,0,0,0
  112.  
  113.  dc.w 4,3,8*4,9*4,1*4,0*4,8*4,0,0,0,0
  114.  dc.w 4,4,9*4,10*4,2*4,1*4,9*4,0,0,0,0
  115.  dc.w 4,3,10*4,11*4,3*4,2*4,10*4,0,0,0,0
  116.  dc.w 4,4,11*4,12*4,4*4,3*4,11*4,0,0,0,0
  117.  dc.w 4,3,12*4,13*4,5*4,4*4,12*4,0,0,0,0
  118.  dc.w 4,4,13*4,14*4,6*4,5*4,13*4,0,0,0,0
  119.  dc.w 4,3,14*4,15*4,7*4,6*4,14*4,0,0,0,0
  120.  dc.w 4,4,15*4,8*4,0*4,7*4,15*4,0,0,0,0
  121.  
  122.  dc.w 4,2,16*4,17*4,9*4,8*4,16*4,0,0,0,0
  123.  dc.w 4,1,17*4,18*4,10*4,9*4,17*4,0,0,0,0
  124.  dc.w 4,2,18*4,19*4,11*4,10*4,18*4,0,0,0,0
  125.  dc.w 4,1,19*4,20*4,12*4,11*4,19*4,0,0,0,0
  126.  dc.w 4,2,20*4,21*4,13*4,12*4,20*4,0,0,0,0
  127.  dc.w 4,1,21*4,22*4,14*4,13*4,21*4,0,0,0,0
  128.  dc.w 4,2,22*4,23*4,15*4,14*4,22*4,0,0,0,0
  129.  dc.w 4,1,23*4,16*4,8*4,15*4,23*4,0,0,0,0
  130.  
  131.  dc.w 4,5,24*4,25*4,17*4,16*4,24*4,0,0,0,0
  132.  dc.w 4,6,25*4,26*4,18*4,17*4,25*4,0,0,0,0
  133.  dc.w 4,5,26*4,27*4,19*4,18*4,26*4,0,0,0,0
  134.  dc.w 4,6,27*4,28*4,20*4,19*4,27*4,0,0,0,0
  135.  dc.w 4,5,28*4,29*4,21*4,20*4,28*4,0,0,0,0
  136.  dc.w 4,6,29*4,30*4,22*4,21*4,29*4,0,0,0,0
  137.  dc.w 4,5,30*4,31*4,23*4,22*4,30*4,0,0,0,0
  138.  dc.w 4,6,31*4,24*4,16*4,23*4,31*4,0,0,0,0
  139.  
  140.  dc.w 4,2,32*4,33*4,25*4,24*4,32*4,0,0,0,0
  141.  dc.w 4,1,33*4,34*4,26*4,25*4,33*4,0,0,0,0
  142.  dc.w 4,2,34*4,35*4,27*4,26*4,34*4,0,0,0,0
  143.  dc.w 4,1,35*4,36*4,28*4,27*4,35*4,0,0,0,0
  144.  dc.w 4,2,36*4,37*4,29*4,28*4,36*4,0,0,0,0
  145.  dc.w 4,1,37*4,38*4,30*4,29*4,37*4,0,0,0,0
  146.  dc.w 4,2,38*4,39*4,31*4,30*4,38*4,0,0,0,0
  147.  dc.w 4,1,39*4,32*4,24*4,31*4,39*4,0,0,0,0
  148.  
  149.  
  150. rotmv:                    ; Bewegungs-Tabelle
  151.  dc.w 210, 0,0, 60, 2,1,0
  152.  dc.w -3
  153.  dc.w 90,  0,0,  0, 2,1,0
  154.  dc.w -4,16
  155.  dc.w 210, 0,0,-60, 2,1,0
  156.  dc.w -1
  157.  
  158. coltab:                   ; Farb-Tabelle
  159.  dc.w 0, 0,0,0
  160.  dc.w 1, 0,10,0
  161.  dc.w 2, 0,8,0
  162.  dc.w 3, 0,0,12
  163.  dc.w 4, 0,0,10
  164.  dc.w 5, 10,0,10
  165.  dc.w 6, 8,0,8
  166.  dc.w 7, 0,0,15
  167.  dc.w -1
  168.  
  169. anim:                      ; Hier werden die Rotationskörper erzeugt und mutiert
  170.  movem.l d2-d7/a2-a5,-(a7)
  171.  lea     rotptr(pc),a4
  172.  lea     rotcnt(pc),a5
  173.  move.l  objectptr(pc),a2
  174.  cmp.l  #0,(a4)
  175.  bne.s  norm
  176.  lea    rottab+2(pc),a0
  177.  move.l a0,(a4)
  178. norm:
  179.  move.l (a4),a3
  180.  moveq  #5,d6
  181. .llp:
  182.  move.w (a2),d0    ; Kontur ...
  183.  cmp.w  (a3),d0    ; ...
  184.  beq.s  .okx       ; ...
  185.  blt.s  .lowx      ; ...
  186.  subq.w #2,(a2)
  187.  bra.s  .okx
  188. .lowx:
  189.  addq.w #2,(a2)
  190. .okx
  191.  move.w 2(a2),d0
  192.  cmp.w  2(a3),d0
  193.  beq.s  .oky
  194.  blt.s  .lowy
  195.  subq.w #2,2(a2)
  196.  bra.s  .oky
  197. .lowy:
  198.  addq.w #2,2(a2)
  199. .oky
  200.  lea    8*8(a2),a2
  201.  addq.l #4,a3
  202.  dbf    d6,.llp
  203.  subq.w #1,(a5)
  204.  bgt.s  .ok
  205.  tst.w  (a3)+
  206.  bge.s  .ok1
  207.  lea    rottab+2(pc),a3
  208. .ok1:
  209.  move.w -2(a3),(a5)
  210.  move.l a3,(a4)
  211. .ok:
  212.  bsr.s  dorot
  213. .end
  214.  movem.l (a7)+,d2-d7/a2-a5
  215.  bra    endrm
  216.  
  217. dorot:                  ; Rotation
  218.  lea    sintab(pc),a0
  219.  lea    costab(pc),a1
  220.  move.l objectptr(pc),a2
  221.  moveq  #5,d6
  222.  moveq  #15,d7
  223. .roto:
  224.  moveq  #7,d5
  225.  moveq  #0,d4
  226.  move.w (a2),d3
  227.  move.w 2(a2),d1
  228. .roti:
  229.  move.w d3,d0
  230.  move.w d3,d2
  231.  muls   0(a1,d4.w),d0
  232.  muls   0(a0,d4.w),d2
  233.  asr.l  d7,d0
  234.  asr.l  d7,d2
  235.  movem.w d0-d2,(a2)
  236.  addq.l #8,a2
  237.  add.w  #90,d4
  238.  dbf    d5,.roti
  239.  dbf    d6,.roto
  240.  rts
  241.  
  242. rotptr    dc.l 0
  243. rotcnt    dc.w 0
  244. objectptr dc.l 0
  245.  
  246. sintab    DC.W    0,$23B,$477,$6B2,$8ED,$B27,$D61,$F99
  247.     DC.W    $11D0,$1405,$1639,$186C,$1A9C,$1CCA,$1EF7,$2120
  248.     DC.W    $2347,$256C,$278D,$29AB,$2BC6,$2DDE,$2FF2,$3203
  249.     DC.W    $340F,$3617,$381C,$3A1B,$3C17,$3E0D,$3FFF,$41EC
  250.     DC.W    $43D3,$45B6,$4793,$496A,$4B3B,$4D07,$4ECD,$508C
  251.     DC.W    $5246,$53F9,$55A5,$574B,$58E9,$5A81,$5C12,$5D9C
  252.     DC.W    $5F1E,$6099,$620C,$6378,$64DC,$6638,$678D,$68D9
  253.     DC.W    $6A1D,$6B58,$6C8C,$6DB6,$6ED9,$6FF2,$7103,$720B
  254.     DC.W    $730A,$7400,$74EE,$75D2,$76AD,$777E,$7846,$7905
  255.     DC.W    $79BB,$7A67,$7B09,$7BA2,$7C31,$7CB7,$7D32,$7DA4
  256.     DC.W    $7E0D,$7E6B,$7EC0,$7F0A,$7F4B,$7F82,$7FAF,$7FD2
  257.     DC.W    $7FEB,$7FFA
  258. costab    DC.W    $7FFF,$7FFA,$7FEB,$7FD2,$7FAF,$7F82
  259.     DC.W    $7F4B,$7F0A,$7EC0,$7E6B,$7E0D,$7DA4,$7D32,$7CB7
  260.     DC.W    $7C31,$7BA2,$7B09,$7A67,$79BB,$7905,$7846,$777E
  261.     DC.W    $76AD,$75D2,$74EE,$7400,$730A,$720B,$7103,$6FF2
  262.     DC.W    $6ED9,$6DB6,$6C8B,$6B58,$6A1D,$68D9,$678D,$6638
  263.     DC.W    $64DC,$6378,$620C,$6099,$5F1E,$5D9C,$5C12,$5A81
  264.     DC.W    $58E9,$574B,$55A5,$53F9,$5246,$508C,$4ECD,$4D07
  265.     DC.W    $4B3B,$496A,$4793,$45B6,$43D3,$41EC,$3FFF,$3E0D
  266.     DC.W    $3C17,$3A1B,$381C,$3618,$340F,$3203,$2FF2,$2DDE
  267.     DC.W    $2BC7,$29AB,$278D,$256C,$2347,$2120,$1EF7,$1CCB
  268.     DC.W    $1A9C,$186C,$163A,$1406,$11D0,$F99,$D61,$B27
  269.     DC.W    $8ED,$6B3,$477,$23C,0,$FDC5,$FB89,$F94E
  270.     DC.W    $F713,$F4D9,$F2A0,$F067,$EE30,$EBFB,$E9C7,$E794
  271.     DC.W    $E564,$E336,$E10A,$DEE0,$DCB9,$DA95,$D873,$D655
  272.     DC.W    $D43A,$D222,$D00E,$CDFE,$CBF1,$C9E9,$C7E5,$C5E5
  273.     DC.W    $C3EA,$C1F3,$C001,$BE14,$BC2D,$BA4B,$B86E,$B696
  274.     DC.W    $B4C5,$B2F9,$B133,$AF74,$ADBB,$AC08,$AA5B,$A8B6
  275.     DC.W    $A717,$A57F,$A3EE,$A264,$A0E2,$9F67,$9DF4,$9C88
  276.     DC.W    $9B24,$99C8,$9874,$9728,$95E4,$94A8,$9375,$924A
  277.     DC.W    $9128,$900E,$8EFD,$8DF5,$8CF6,$8C00,$8B13,$8A2E
  278.     DC.W    $8954,$8882,$87BA,$86FB,$8645,$8599,$84F7,$845E
  279.     DC.W    $83CF,$8349,$82CE,$825C,$81F3,$8195,$8140,$80F6
  280.     DC.W    $80B5,$807E,$8051,$802E,$8015,$8006,$8001,$8006
  281.     DC.W    $8015,$802E,$8051,$807E,$80B5,$80F6,$8140,$8195
  282.     DC.W    $81F3,$825B,$82CD,$8349,$83CF,$845E,$84F7,$8599
  283.     DC.W    $8645,$86FB,$87B9,$8882,$8953,$8A2E,$8B12,$8BFF
  284.     DC.W    $8CF5,$8DF5,$8EFD,$900E,$9127,$9249,$9374,$94A7
  285.     DC.W    $95E3,$9727,$9873,$99C7,$9B23,$9C87,$9DF3,$9F67
  286.     DC.W    $A0E1,$A264,$A3ED,$A57E,$A716,$A8B5,$AA5B,$AC07
  287.     DC.W    $ADBA,$AF73,$B133,$B2F8,$B4C4,$B696,$B86D,$BA4A
  288.     DC.W    $BC2C,$BE14,$C000,$C1F2,$C3E9,$C5E4,$C7E4,$C9E8
  289.     DC.W    $CBF0,$CDFD,$D00D,$D221,$D439,$D654,$D872,$DA94
  290.     DC.W    $DCB8,$DEDF,$E109,$E335,$E563,$E794,$E9C6,$EBFA
  291.     DC.W    $EE30,$F066,$F29F,$F4D8,$F712,$F94D,$FB88,$FDC4
  292. sinend    DC.W    0,$23B,$477,$6B2,$8ED,$B27,$D61,$F99
  293.     DC.W    $11D0,$1405,$1639,$186C,$1A9C,$1CCA,$1EF7,$2120
  294.     DC.W    $2347,$256C,$278D,$29AB,$2BC6,$2DDE,$2FF2,$3203
  295.     DC.W    $340F,$3617,$381C,$3A1B,$3C17,$3E0D,$3FFF,$41EC
  296.     DC.W    $43D3,$45B6,$4793,$496A,$4B3B,$4D07,$4ECD,$508C
  297.     DC.W    $5246,$53F9,$55A5,$574B,$58E9,$5A81,$5C12,$5D9C
  298.     DC.W    $5F1E,$6099,$620C,$6378,$64DC,$6638,$678D,$68D9
  299.     DC.W    $6A1D,$6B58,$6C8C,$6DB6,$6ED9,$6FF2,$7103,$720B
  300.     DC.W    $730A,$7400,$74EE,$75D2,$76AD,$777E,$7846,$7905
  301.     DC.W    $79BB,$7A67,$7B09,$7BA2,$7C31,$7CB7,$7D32,$7DA4
  302.     DC.W    $7E0D,$7E6B,$7EC0,$7F0A,$7F4B,$7F82,$7FAF,$7FD2
  303.     DC.W    $7FEB,$7FFA
  304. cosend
  305.  
  306. rottab:   ; Kontur-Infos
  307.  dc.w 150
  308.  dc.w -$a*3,$40*3
  309.  dc.w -$14*3,$28*3
  310.  dc.w -$40*3,$8*3
  311.  dc.w -$40*3,-$8*3
  312.  dc.w -$14*3,-$28*3
  313.  dc.w -$a*3,-$40*3
  314.  dc.w 150
  315.  dc.w -$3a*3,$40*3
  316.  dc.w -$24*3,$20*3
  317.  dc.w -$10*3,$20*3
  318.  dc.w -$10*3,-$20*3
  319.  dc.w -$24*3,-$20*3
  320.  dc.w -$3a*3,-$40*3
  321.  dc.w 150
  322.  dc.w -$a*3,$40*3
  323.  dc.w -$34*3,$20*3
  324.  dc.w -$10*3,$20*3
  325.  dc.w -$10*3,-$20*3
  326.  dc.w -$34*3,-$20*3
  327.  dc.w -$a*3,-$40*3
  328.  dc.w 150
  329.  dc.w -$a*3,$28*3
  330.  dc.w -$34*3,$8*3
  331.  dc.w -$10*3,$8*3
  332.  dc.w -$10*3,-$8*3
  333.  dc.w -$34*3,-$8*3
  334.  dc.w -$a*3,-$28*3
  335.  dc.w 150
  336.  dc.w -$a*3,$40*3
  337.  dc.w -$14*3,$8*3
  338.  dc.w -$40*3,$8*3
  339.  dc.w -$40*3,-$8*3
  340.  dc.w -$14*3,-$8*3
  341.  dc.w -$a*3,-$40*3
  342.  dc.w 150
  343.  dc.w -$a*3,$40*3
  344.  dc.w -$3c*3,$28*3
  345.  dc.w -$50*3,$10*3
  346.  dc.w -$50*3,-$10*3
  347.  dc.w -$3c*3,-$28*3
  348.  dc.w -$a*3,-$40*3
  349.  dc.w 150
  350.  dc.w -$a*3,$8*3
  351.  dc.w -$3c*3,$28*3
  352.  dc.w -$50*3,$10*3
  353.  dc.w -$50*3,-$10*3
  354.  dc.w -$3c*3,-$28*3
  355.  dc.w -$a*3,-$8*3
  356.  dc.w 150
  357.  dc.w -$a*3,$40*3
  358.  dc.w -$24*3,$30*3
  359.  dc.w -$40*3,-$8*3
  360.  dc.w -$10*3,-$10*3
  361.  dc.w -$24*3,-$20*3
  362.  dc.w -$a*3,-$40*3
  363.  dc.w 150
  364.  dc.w -$a*3,$40*3
  365.  dc.w -$24*3,$20*3
  366.  dc.w -$8*3,-$10*3
  367.  dc.w -$20*3,-$10*3
  368.  dc.w -$24*3,-$20*3
  369.  dc.w -$a*3,-$40*3
  370.  dc.w 150
  371.  dc.w -$3a*3,$40*3
  372.  dc.w -$24*3,$20*3
  373.  dc.w -$20*3,$10*3
  374.  dc.w -$8*3,$10*3
  375.  dc.w -$c*3,-$20*3
  376.  dc.w -$3a*3,-$40*3
  377.  dc.w 150
  378.  dc.w -$a*3,$10*3
  379.  dc.w -$3c*3,$40*3
  380.  dc.w -$20*3,$10*3
  381.  dc.w -$8*3,$10*3
  382.  dc.w -$c*3,-$30*3
  383.  dc.w -$32*3,-$40*3
  384.  dc.w 150
  385.  dc.w -$a*3,$40*3
  386.  dc.w -$44*3,$20*3
  387.  dc.w -$8*3,$20*3
  388.  dc.w -$20*3,-$10*3
  389.  dc.w -$c*3,-$20*3
  390.  dc.w -$a*3,-$40*3
  391.  dc.w -1
  392.  
  393. endrm:
  394.  rts
  395.  
  396.  
  397. vecname dc.b "vector.library",0
  398. gfxname dc.b "graphics.library",0
  399.