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

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