home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 113 / EnigmaAmiga113CD.iso / software / sviluppo / quake_src / r_surfppc.s < prev    next >
Encoding:
Text File  |  2000-06-17  |  6.8 KB  |  316 lines

  1. # Copyright (C) 1996-1997 Id Software, Inc. 
  2. # This program is free software; you can redistribute it and/or 
  3. # modify it under the terms of the GNU General Public License 
  4. # as published by the Free Software Foundation; either version 2 
  5. # of the License, or (at your option) any later version. 
  6. # This program is distributed in the hope that it will be useful, 
  7. # but WITHOUT ANY WARRANTY; without even the implied warranty of 
  8. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.   
  9. # See the GNU General Public License for more details. 
  10. # You should have received a copy of the GNU General Public License 
  11. # along with this program; if not, write to the Free Software 
  12. # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. 
  13.  
  14. ##
  15. ## Quake for AMIGA
  16. ##
  17. ## r_surfPPC.s
  18. ##
  19. ## Define WOS for PowerOpen ABI, otherwise SVR4-ABI is used.
  20. ##
  21.  
  22. .set NOLR,1
  23. .include        "macrosPPC.i"
  24.  
  25. #
  26. # external references
  27. #
  28.  
  29.     xrefv    pbasesource
  30.     xrefv    prowdestbase
  31.     xrefv    r_lightptr
  32.     xrefv    r_lightwidth
  33.     xrefv    r_numvblocks
  34.     xrefv    r_sourcemax
  35.     xrefv    r_stepback
  36.     xrefv    sourcetstep
  37.     xrefv    surfrowbytes
  38.     xrefa    vid
  39.  
  40. .set    VID_COLORMAP,4
  41.  
  42.  
  43.  
  44.  
  45. ###########################################################################
  46. #
  47. #       void R_DrawSurfaceBlock8_mip0
  48. #
  49. ###########################################################################
  50.  
  51.     funcdef    R_DrawSurfaceBlock8_mip0
  52.  
  53.     init    0,0,7,0
  54.     stmw    r25,gb(r1)
  55.  
  56.     lxa     r11,vid
  57.     lw      r3,pbasesource
  58.     lw      r4,prowdestbase
  59.     lw      r5,r_lightptr
  60.     lwz     r11,VID_COLORMAP(r11)
  61.     lw      r31,r_numvblocks
  62.     lw      r28,sourcetstep
  63.     lw      r27,surfrowbytes
  64.     lw      r26,r_sourcemax
  65.     lw      r25,r_stepback
  66.     lw      r8,r_lightwidth
  67.     slwi    r8,r8,2
  68. .m0loop:
  69.     li      r0,16
  70.     lwz     r6,0(r5)                #r6 = lightleft
  71.     lwz     r7,4(r5)                #r7 = lightright
  72.     add     r5,r5,r8
  73.     lwz     r9,0(r5)
  74.     lwz     r10,4(r5)
  75.     subf    r9,r6,r9
  76.     subf    r10,r7,r10
  77.     srawi   r9,r9,4                 #r9 = lightleftstep
  78.     srawi   r10,r10,4               #r10 = lightrightstep
  79.     mtctr   r0
  80. .m0loop2:
  81.     li      r0,15
  82.     subf    r12,r7,r6
  83.     srawi   r12,r12,4               #r12 = lightstep
  84.     mr      r30,r7                  #r30 = light
  85. .m0loop3:
  86.     lbzx    r29,r3,r0               #r29 = pix
  87.     rlwimi  r29,r30,0,16,23
  88.     lbzx    r29,r11,r29
  89.     stbx    r29,r4,r0
  90.     subic.  r0,r0,1
  91.     add     r30,r30,r12
  92.     bge     .m0loop3
  93.     add     r3,r3,r28
  94.     add     r6,r6,r9
  95.     add     r7,r7,r10
  96.     add     r4,r4,r27
  97.     bdnz    .m0loop2
  98.     cmpw    r3,r26
  99.     blt     .m0next
  100.     sub     r3,r3,r25
  101. .m0next:
  102.     subic.  r31,r31,1
  103.     bne     .m0loop
  104.     lmw    r25,gb(r1)
  105.     exit
  106.  
  107.     funcend    R_DrawSurfaceBlock8_mip0
  108.  
  109.  
  110.  
  111.  
  112. ###########################################################################
  113. #
  114. #       void R_DrawSurfaceBlock8_mip1
  115. #
  116. ###########################################################################
  117.  
  118.     funcdef    R_DrawSurfaceBlock8_mip1
  119.  
  120.     init    0,0,7,0
  121.     stmw    r25,gb(r1)
  122.  
  123.     lxa     r11,vid
  124.     lw      r3,pbasesource
  125.     lw      r4,prowdestbase
  126.     lw      r5,r_lightptr
  127.     lwz     r11,VID_COLORMAP(r11)
  128.     lw      r31,r_numvblocks
  129.     lw      r28,sourcetstep
  130.     lw      r27,surfrowbytes
  131.     lw      r26,r_sourcemax
  132.     lw      r25,r_stepback
  133.     lw      r8,r_lightwidth
  134.     slwi    r8,r8,2
  135. .m1loop:
  136.     li      r0,8
  137.     lwz     r6,0(r5)                #r6 = lightleft
  138.     lwz     r7,4(r5)                #r7 = lightright
  139.     add     r5,r5,r8
  140.     lwz     r9,0(r5)
  141.     lwz     r10,4(r5)
  142.     subf    r9,r6,r9
  143.     subf    r10,r7,r10
  144.     srawi   r9,r9,3                 #r9 = lightleftstep
  145.     srawi   r10,r10,3               #r10 = lightrightstep
  146.     mtctr   r0
  147. .m1loop2:
  148.     li      r0,7
  149.     subf    r12,r7,r6
  150.     srawi   r12,r12,3               #r12 = lightstep
  151.     mr      r30,r7                  #r30 = light
  152. .m1loop3:
  153.     lbzx    r29,r3,r0               #r29 = pix
  154.     rlwimi  r29,r30,0,16,23
  155.     lbzx    r29,r11,r29
  156.     stbx    r29,r4,r0
  157.     subic.  r0,r0,1
  158.     add     r30,r30,r12
  159.     bge     .m1loop3
  160.     add     r3,r3,r28
  161.     add     r6,r6,r9
  162.     add     r7,r7,r10
  163.     add     r4,r4,r27
  164.     bdnz    .m1loop2
  165.     cmpw    r3,r26
  166.     blt     .m1next
  167.     sub     r3,r3,r25
  168. .m1next:
  169.     subic.  r31,r31,1
  170.     bne     .m1loop
  171.     lmw    r25,gb(r1)
  172.     exit
  173.  
  174.     funcend    R_DrawSurfaceBlock8_mip1
  175.  
  176.  
  177.  
  178.  
  179. ###########################################################################
  180. #
  181. #       void R_DrawSurfaceBlock8_mip2
  182. #
  183. ###########################################################################
  184.  
  185.     funcdef    R_DrawSurfaceBlock8_mip2
  186.  
  187.     init    0,0,7,0
  188.     stmw    r25,gb(r1)
  189.  
  190.     lxa     r11,vid
  191.     lw      r3,pbasesource
  192.     lw      r4,prowdestbase
  193.     lw      r5,r_lightptr
  194.     lwz     r11,VID_COLORMAP(r11)
  195.     lw      r31,r_numvblocks
  196.     lw      r28,sourcetstep
  197.     lw      r27,surfrowbytes
  198.     lw      r26,r_sourcemax
  199.     lw      r25,r_stepback
  200.     lw      r8,r_lightwidth
  201.     slwi    r8,r8,2
  202. .m2loop:
  203.     li      r0,4
  204.     lwz     r6,0(r5)                #r6 = lightleft
  205.     lwz     r7,4(r5)                #r7 = lightright
  206.     add     r5,r5,r8
  207.     lwz     r9,0(r5)
  208.     lwz     r10,4(r5)
  209.     subf    r9,r6,r9
  210.     subf    r10,r7,r10
  211.     srawi   r9,r9,2                 #r9 = lightleftstep
  212.     srawi   r10,r10,2               #r10 = lightrightstep
  213.     mtctr   r0
  214. .m2loop2:
  215.     li      r0,3
  216.     subf    r12,r7,r6
  217.     srawi   r12,r12,2               #r12 = lightstep
  218.     mr      r30,r7                  #r30 = light
  219. .m2loop3:
  220.     lbzx    r29,r3,r0               #r29 = pix
  221.     rlwimi  r29,r30,0,16,23
  222.     lbzx    r29,r11,r29
  223.     stbx    r29,r4,r0
  224.     subic.  r0,r0,1
  225.     add     r30,r30,r12
  226.     bge     .m2loop3
  227.     add     r3,r3,r28
  228.     add     r6,r6,r9
  229.     add     r7,r7,r10
  230.     add     r4,r4,r27
  231.     bdnz    .m2loop2
  232.     cmpw    r3,r26
  233.     blt     .m2next
  234.     sub     r3,r3,r25
  235. .m2next:
  236.     subic.  r31,r31,1
  237.     bne     .m2loop
  238.     lmw    r25,gb(r1)
  239.     exit
  240.  
  241.     funcend    R_DrawSurfaceBlock8_mip2
  242.  
  243.  
  244.  
  245.  
  246. ###########################################################################
  247. #
  248. #       void R_DrawSurfaceBlock8_mip3
  249. #
  250. ###########################################################################
  251.  
  252.     funcdef    R_DrawSurfaceBlock8_mip3
  253.  
  254.     init    0,0,7,0
  255.     stmw    r25,gb(r1)
  256.  
  257.     lxa     r11,vid
  258.     lw      r3,pbasesource
  259.     lw      r4,prowdestbase
  260.     lw      r5,r_lightptr
  261.     lwz     r11,VID_COLORMAP(r11)
  262.     lw      r31,r_numvblocks
  263.     lw      r28,sourcetstep
  264.     lw      r27,surfrowbytes
  265.     lw      r26,r_sourcemax
  266.     lw      r25,r_stepback
  267.     lw      r8,r_lightwidth
  268.     slwi    r8,r8,2
  269. .m3loop:
  270.     li      r0,2
  271.     lwz     r6,0(r5)                #r6 = lightleft
  272.     lwz     r7,4(r5)                #r7 = lightright
  273.     add     r5,r5,r8
  274.     lwz     r9,0(r5)
  275.     lwz     r10,4(r5)
  276.     subf    r9,r6,r9
  277.     subf    r10,r7,r10
  278.     srawi   r9,r9,1                 #r9 = lightleftstep
  279.     srawi   r10,r10,1               #r10 = lightrighctstep
  280.     mtctr   r0
  281. .m3loop2:
  282.     subf    r12,r7,r6
  283.     srawi   r12,r12,1               #r12 = lightstep
  284.  
  285.     lbz     r29,1(r3)               #r29 = pix
  286.     rlwimi  r29,r7,0,16,23
  287.     lbzx    r29,r11,r29
  288.     stb     r29,1(r4)
  289.     add     r30,r7,r12
  290.     lbz     r29,0(r3)               #r29 = pix
  291.     rlwimi  r29,r30,0,16,23
  292.     lbzx    r29,r11,r29
  293.     stb     r29,0(r4)
  294.  
  295.     add     r3,r3,r28
  296.     add     r6,r6,r9
  297.     add     r7,r7,r10
  298.     add     r4,r4,r27
  299.     bdnz    .m3loop2
  300.     cmpw    r3,r26
  301.     blt     .m3next
  302.     sub     r3,r3,r25
  303. .m3next:
  304.     subic.  r31,r31,1
  305.     bne     .m3loop
  306.     lmw    r25,gb(r1)
  307.     exit
  308.  
  309.     funcend    R_DrawSurfaceBlock8_mip3
  310.