home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser-CD 2000 January / LCD_01_2000.iso / games / doom / pmdoom / src / m68k / r_draw8.s < prev    next >
Encoding:
Text File  |  1999-12-17  |  6.6 KB  |  414 lines

  1. |    R_Draw functions in asm
  2.  
  3.     .text
  4.  
  5.     .globl    _R_DrawColumn8
  6.     .globl    _R_DrawColumnLow8
  7.     .globl    _R_DrawSpan8
  8.     .globl    _R_DrawSpanLow8
  9.     .globl    _R_DrawTranslatedColumn8
  10.     .globl    _R_DrawTranslatedColumnLow8
  11.     .globl    _R_DrawFuzzColumn8
  12.     .globl    _R_DrawFuzzColumnLow8
  13.  
  14.     .globl    _ylookup
  15.     .globl    _columnofs
  16.     .globl    _centery
  17.     .globl    _colormaps
  18.     .globl    _viewheight
  19.  
  20.     .globl    _fuzzoffset
  21.     .globl    _fuzzpos
  22.     
  23.     .globl    _dc_yh
  24.     .globl    _dc_yl
  25.     .globl    _dc_iscale
  26.     .globl    _dc_texturemid
  27.     .globl    _dc_colormap
  28.     .globl    _dc_source
  29.     .globl    _dc_translation
  30.  
  31.     .globl    _ds_x1
  32.     .globl    _ds_x2
  33.     .globl    _ds_y
  34.     .globl    _ds_xfrac
  35.     .globl    _ds_yfrac
  36.     .globl    _ds_xstep
  37.     .globl    _ds_ystep
  38.     .globl    _ds_colormap
  39.     .globl    _ds_source
  40.  
  41. | -----    R_DrawColumn
  42.  
  43.     .text
  44. _R_DrawColumn8:
  45.     moveml    d2-d4/a2-a3,sp@-
  46.  
  47.     movew    _dc_yh+2,d0
  48.     movew    _dc_yl+2,d1
  49.     subw    d1,d0
  50.     bmi    R_DC_stop
  51.  
  52.     lea    _ylookup,a0
  53.     movel    a0@(0,d1:w:4),a0
  54.     movew    _dc_x+2,d1
  55.     addw    _viewwindowx+2,d1
  56.     addw    d1,a0
  57.  
  58.     movel    _dc_iscale,d1    | d1 = coef de zoom    
  59.  
  60.     movel    _dc_yl,d2
  61.     subl    _centery,d2
  62.     mulul    d1,d2
  63.     addl    _dc_texturemid,d2    | d2 = frac (position)
  64.  
  65.     movel    _dc_colormap,a1
  66.     movel    _dc_source,a2
  67.     lea    320,a3
  68.     moveql    #127,d3
  69.     swap    d1
  70.     swap    d2
  71.     clrw    d4
  72. R_DC_boucle:
  73.     andw    d3,d2
  74.     moveb    a2@(0,d2:w),d4
  75.     addxl    d1,d2
  76.     moveb    a1@(0,d4:w:4),a0@
  77.     addl    a3,a0
  78.     dbra    d0,R_DC_boucle
  79. R_DC_stop:
  80.     moveml    sp@+,d2-d4/a2-a3
  81.     rts    
  82.  
  83. | -----    R_DrawColumnLow
  84.  
  85.     .text
  86. _R_DrawColumnLow8:
  87.     moveml    d2-d4/a2-a3,sp@-
  88.  
  89.     movew    _dc_yh+2,d0
  90.     movew    _dc_yl+2,d1
  91.     subw    d1,d0
  92.     bmi    R_DCL_stop
  93.  
  94.     lea    _ylookup,a0
  95.     movel    a0@(0,d1:w:4),a0
  96.     movew    _dc_x+2,d1
  97.     addw    d1,d1
  98.     addw    _viewwindowx+2,d1
  99.     addw    d1,a0
  100.  
  101.     movel    _dc_iscale,d1    | d1 = coef de zoom    
  102.  
  103.     movel    _dc_yl,d2
  104.     subl    _centery,d2
  105.     mulul    d1,d2
  106.     addl    _dc_texturemid,d2    | d2 = frac (position)
  107.  
  108.     movel    _dc_colormap,a1
  109.     movel    _dc_source,a2
  110.     lea    320,a3
  111.     moveql    #127,d3
  112.     swap    d1
  113.     swap    d2
  114.     clrw    d4
  115. R_DCL_boucle:
  116.     andw    d3,d2
  117.     moveb    a2@(0,d2:w),d4
  118.     addxl    d1,d2
  119.     movew    a1@(0,d4:w:4),a0@
  120.     addl    a3,a0
  121.     dbra    d0,R_DCL_boucle
  122. R_DCL_stop:
  123.     moveml    sp@+,d2-d4/a2-a3
  124.     rts    
  125.  
  126. | -----    R_DrawSpan
  127. |    d0 = _ds_x2
  128. |    d1 = _ds_x1
  129. |    d2 = _ds_y
  130. |    a1 = _ds_colormap
  131. |    a2 = _ds_source
  132.  
  133.     .text
  134. _R_DrawSpan8:
  135.     moveml    d2-d7/a2,sp@-
  136.  
  137.     movew    _ds_x2+2,d0
  138.     movew    _ds_x1+2,d1
  139.     subw    d1,d0
  140.     bmi    R_DS_stop
  141.  
  142.     movew    _ds_y+2,d2
  143.     lea    _ylookup,a0
  144.     movel    a0@(0,d2:w:4),a0
  145.     addw    _viewwindowx+2,d1
  146.     addw    d1,a0
  147.  
  148.     movel    _ds_colormap,a1
  149.     movel    _ds_source,a2
  150.  
  151.     movel    _ds_xfrac,d1
  152.     movel    _ds_yfrac,d2
  153.     movel    _ds_xstep,d3
  154.     movel    _ds_ystep,d4
  155.     asrl    #6,d1
  156.     asrl    #6,d3
  157.     clrw    d6
  158. R_DS_boucle:
  159.     movel    d2,d7
  160.     movew    d1,d7
  161.     lsrl    #6,d7
  162.     lsrw    #4,d7
  163.     moveb    a2@(0,d7:w),d6
  164.     addw    d3,d1
  165.     addl    d4,d2
  166.     moveb    a1@(0,d6:w:4),a0@+
  167.     dbra    d0,R_DS_boucle
  168.     
  169. R_DS_stop:
  170.     moveml    sp@+,d2-d7/a2
  171.     rts
  172.  
  173. | -----    R_DrawSpanLow
  174. |    d0 = _ds_x2
  175. |    d1 = _ds_x1
  176. |    d2 = _ds_y
  177. |    a1 = _ds_colormap
  178. |    a2 = _ds_source
  179.  
  180.     .text
  181. _R_DrawSpanLow8:
  182.     moveml    d2-d7/a2,sp@-
  183.  
  184.     movew    _ds_x2+2,d0
  185.     addw    d0,d0
  186.     movew    _ds_x1+2,d1
  187.     addw    d1,d1
  188.     subw    d1,d0
  189.     bmi    R_DSL_stop
  190.  
  191.     movew    _ds_y+2,d2
  192.     lea    _ylookup,a0
  193.     movel    a0@(0,d2:w:4),a0
  194.     addw    _viewwindowx+2,d1
  195.     addw    d1,a0
  196.  
  197.     movel    _ds_colormap,a1
  198.     movel    _ds_source,a2
  199.  
  200.     movel    _ds_xfrac,d1
  201.     movel    _ds_yfrac,d2
  202.     movel    _ds_xstep,d3
  203.     movel    _ds_ystep,d4
  204.     asrl    #6,d1
  205.     asrl    #6,d3
  206.     clrw    d6
  207.     lsrw    #1,d0
  208. R_DSL_boucle:
  209.     movel    d2,d7
  210.     movew    d1,d7
  211.     lsrl    #6,d7
  212.     lsrw    #4,d7
  213.     moveb    a2@(0,d7:w),d6
  214.     addw    d3,d1
  215.     addl    d4,d2
  216.     movew    a1@(0,d6:w:4),a0@+
  217.     dbra    d0,R_DSL_boucle
  218.     
  219. R_DSL_stop:
  220.     moveml    sp@+,d2-d7/a2
  221.     rts
  222.  
  223. | -----    R_DrawTranslatedColumn
  224.  
  225.     .text
  226. _R_DrawTranslatedColumn8:
  227.     moveml    d2-d4/a2-a4,sp@-
  228.  
  229.     movew    _dc_yh+2,d0
  230.     movew    _dc_yl+2,d1
  231.     subw    d1,d0        | d0 = Nb de lignes
  232.     bmi    R_DTC_stop
  233.  
  234.     lea    _ylookup,a0
  235.     movel    a0@(0,d1:w:4),a0
  236.     movew    _dc_x+2,d1
  237.     addw    _viewwindowx+2,d1
  238.     addw    d1,a0
  239.  
  240.     movel    _dc_iscale,d1    | d1 = coef de zoom    
  241.  
  242.     movel    _dc_yl,d2
  243.     subl    _centery,d2
  244.     mulul    d1,d2
  245.     addl    _dc_texturemid,d2    | d2 = frac (position)
  246.  
  247.     movel    _dc_colormap,a1
  248.     movel    _dc_source,a2
  249.     movel    _dc_translation,a4
  250.     lea    320,a3
  251.     moveql    #127,d3
  252.     swap    d1
  253.     swap    d2
  254.     clrw    d4
  255.     subl    a3,a0
  256. R_DTC_boucle:
  257.     andw    d3,d2
  258.     moveb    a2@(0,d2:w),d4
  259.     addxl    d1,d2
  260.     moveb    a4@(0,d4:w),d4
  261.     addl    a3,a0
  262.     moveb    a1@(0,d4:w:4),a0@
  263.     dbra    d0,R_DTC_boucle
  264. R_DTC_stop:
  265.     moveml    sp@+,d2-d4/a2-a4
  266.     rts    
  267.  
  268. | -----    R_DrawTranslatedColumnLow
  269.  
  270.     .text
  271. _R_DrawTranslatedColumnLow8:
  272.     moveml    d2-d4/a2-a4,sp@-
  273.  
  274.     movew    _dc_yh+2,d0
  275.     movew    _dc_yl+2,d1
  276.     subw    d1,d0        | d0 = Nb de lignes
  277.     bmi    R_DTCL_stop
  278.  
  279.     lea    _ylookup,a0
  280.     movel    a0@(0,d1:w:4),a0
  281.     movew    _dc_x+2,d1
  282.     addw    d1,d1
  283.     addw    _viewwindowx+2,d1
  284.     addw    d1,a0
  285.  
  286.     movel    _dc_iscale,d1    | d1 = coef de zoom    
  287.  
  288.     movel    _dc_yl,d2
  289.     subl    _centery,d2
  290.     mulul    d1,d2
  291.     addl    _dc_texturemid,d2    | d2 = frac (position)
  292.  
  293.     movel    _dc_colormap,a1
  294.     movel    _dc_source,a2
  295.     movel    _dc_translation,a4
  296.     lea    320,a3
  297.     moveql    #127,d3
  298.     swap    d1
  299.     swap    d2
  300.     clrw    d4
  301.     subl    a3,a0
  302. R_DTCL_boucle:
  303.     andw    d3,d2
  304.     moveb    a2@(0,d2:w),d4
  305.     addxl    d1,d2
  306.     moveb    a1@(0,d4:w),d4
  307.     addl    a3,a0
  308.     movew    a4@(0,d4:w:4),a0@
  309.     dbra    d0,R_DTCL_boucle
  310. R_DTCL_stop:
  311.     moveml    sp@+,d2-d4/a2-a4
  312.     rts    
  313.  
  314. | -----    R_DrawFuzzColumn
  315.  
  316.     .text
  317. _R_DrawFuzzColumn8:
  318.     moveml    d2-d4/a2-a3,sp@-
  319.  
  320.     movew    _viewheight+2,d2
  321.     subqw    #1,d2
  322.  
  323.     movew    _dc_yl+2,d1
  324.         bne    R_DFC_cont
  325.         moveq    #1,d1
  326. R_DFC_cont:
  327.     movew    _dc_yh+2,d0
  328.     cmpw    d2,d0
  329.     bmi    R_DFC_cont1
  330.     movew    d2,d0
  331.     subqw    #1,d0
  332. R_DFC_cont1:
  333.  
  334.     subw    d1,d0
  335.     bmi    R_DFC_stop
  336.  
  337.     lea    _ylookup,a0
  338.     movel    a0@(0,d1:w:4),a0
  339.     movew    _dc_x+2,d1
  340.     addw    _viewwindowx+2,d1
  341.     addw    d1,a0    
  342.  
  343.     movel    _colormaps,a1
  344.     lea    a1@(4*6*256),a1
  345.     lea    _fuzzoffset,a2
  346.     lea    320,a3
  347.     moveq    #31,d3
  348.     moveq    #0,d2
  349.     moveq    #0,d4
  350.     movew    _fuzzpos,d1
  351. R_DFC_boucle:
  352.     movew    a2@(0,d1:w:4),d2    | Lecture offset
  353.     addqw    #1,d1
  354.     moveb    a0@(0,d2:w),d4        | Pixel
  355.     andw    d3,d1
  356.     moveb    a1@(0,d4:w:4),a0@    
  357.     addl    a3,a0
  358.     dbra    d0,R_DFC_boucle
  359.  
  360.     movew    d1,_fuzzpos
  361. R_DFC_stop:
  362.     moveml    sp@+,d2-d4/a2-a3
  363.     rts    
  364.  
  365. | -----    R_DrawFuzzColumnLow
  366.  
  367.     .text
  368. _R_DrawFuzzColumnLow8:
  369.     moveml    d2-d4/a2-a3,sp@-
  370.  
  371.     movew    _viewheight+2,d2
  372.     subqw    #1,d2
  373.  
  374.     movew    _dc_yl+2,d1
  375.         bne    R_DFCL_cont
  376.         moveq    #1,d1
  377. R_DFCL_cont:
  378.     movew    _dc_yh+2,d0
  379.     cmpw    d2,d0
  380.     bmi    R_DFCL_cont1
  381.     movew    d2,d0
  382.     subqw    #1,d0
  383. R_DFCL_cont1:
  384.  
  385.     subw    d1,d0
  386.     bmi    R_DFCL_stop
  387.  
  388.     lea    _ylookup,a0
  389.     movel    a0@(0,d1:w:4),a0
  390.     movew    _dc_x+2,d1
  391.     addw    d1,d1
  392.     addw    _viewwindowx+2,d1
  393.     addw    d1,a0
  394.  
  395.     movel    _colormaps,a1
  396.     lea    a1@(4*6*256),a1
  397.     lea    _fuzzoffset,a2
  398.     lea    320,a3
  399.     moveq    #31,d3
  400.     moveq    #0,d2
  401.     moveq    #0,d4
  402.     movew    _fuzzpos,d1
  403. R_DFCL_boucle:
  404.     movew    a2@(0,d1:w:4),d2    | Lecture offset
  405.     addqw    #1,d1
  406.     moveb    a0@(0,d2:w),d4        | Pixel
  407.     andw    d3,d1
  408.     movew    a1@(0,d4:w:4),a0@    
  409.     addl    a3,a0
  410.     dbra    d0,R_DFCL_boucle
  411. R_DFCL_stop:
  412.     moveml    sp@+,d2-d4/a2-a3
  413.     rts    
  414.