home *** CD-ROM | disk | FTP | other *** search
/ Dream 44 / Amiga_Dream_44.iso / RiscPc / jeux / biohazard.arc / s / VIDC10cs < prev    next >
Text File  |  1995-01-08  |  9KB  |  397 lines

  1. ; Use the GET directive to include register definitions as if typed here
  2.  
  3.       KEEP
  4.           GET     h.WolfReg
  5.  
  6. ; Use the GET directive to include a list of SWI names as if typed here
  7.  
  8.           GET     h.SWInames
  9.  
  10. ; Area name C$$code advisable as wanted to link with C output
  11.  
  12.           AREA    |C$$code|, CODE, READONLY
  13.  
  14. ; Export global symbols
  15.  
  16.       EXPORT  |ConvertScreen|
  17.  
  18. ;Convert Screen
  19. ;
  20. ; on entry :-
  21. ;    r0 = pointer to 8 bpp virtual screen
  22. ;       r1 = pointer to converted screen
  23. ;       r2 = number of bits per pixel to convert to
  24. ;       r3 = table of colour entries for current mode.
  25.  
  26. |ConvertScreen|
  27.     STMFD   r13!,{r0-r12,link}
  28.  
  29.         ;find which coversion routine to use
  30.         CMP     r2,#8
  31.         BEQ     EndConvertScreen
  32.         CMP     r2,#4
  33.         BEQ     Conv4bpp
  34.         CMP     r2,#2
  35.         BEQ     Conv2bpp
  36.         CMP     r2,#1
  37.         BNE     EndConvertScreen
  38.  
  39. Conv1bpp
  40.     ;create mask
  41.         MOV     r14,#255
  42.         MOV     r12,#256
  43.  
  44. C1loopB
  45.         MOV     r11,#10
  46. C1loopA
  47.         ;load initial data
  48.         LDMIA   r0!,{r4,r5,r6,r7}
  49.  
  50.         ;convert data
  51.  
  52.         ;word one
  53.         AND     r8,r14,r4
  54.         LDR     r8,[r3,r8,LSL #2]
  55.  
  56.         AND     r9,r14,r4,LSR #8
  57.         LDR     r9,[r3,r9,LSL #2]
  58.         ADD     r8,r8,r9,LSL #1
  59.  
  60.         AND     r9,r14,r4,LSR #16
  61.         LDR     r9,[r3,r9,LSL #2]
  62.         ADD     r8,r8,r9,LSL #2
  63.  
  64.         AND     r9,r14,r4,LSR #24
  65.         LDR     r9,[r3,r9,LSL #2]
  66.         ADD     r8,r8,r9,LSL #3
  67.  
  68.         ;word two
  69.         AND     r9,r14,r5
  70.         LDR     r9,[r3,r9,LSL #2]
  71.         ADD     r8,r8,r9,LSL #4
  72.  
  73.         AND     r9,r14,r5,LSR #8
  74.         LDR     r9,[r3,r9,LSL #2]
  75.         ADD     r8,r8,r9,LSL #5
  76.  
  77.         AND     r9,r14,r5,LSR #16
  78.         LDR     r9,[r3,r9,LSL #2]
  79.         ADD     r8,r8,r9,LSL #6
  80.  
  81.         AND     r9,r14,r5,LSR #24
  82.         LDR     r9,[r3,r9,LSL #2]
  83.         ADD     r8,r8,r9,LSL #7
  84.  
  85.         ;word three
  86.         AND     r9,r14,r6
  87.         LDR     r9,[r3,r9,LSL #2]
  88.         ADD     r8,r8,r9,LSL #8
  89.  
  90.         AND     r9,r14,r6,LSR #8
  91.         LDR     r9,[r3,r9,LSL #2]
  92.         ADD     r8,r8,r9,LSL #9
  93.  
  94.         AND     r9,r14,r6,LSR #16
  95.         LDR     r9,[r3,r9,LSL #2]
  96.         ADD     r8,r8,r9,LSL #10
  97.  
  98.         AND     r9,r14,r6,LSR #24
  99.         LDR     r9,[r3,r9,LSL #2]
  100.         ADD     r8,r8,r9,LSL #11
  101.  
  102.         ;word four
  103.         AND     r9,r14,r7
  104.         LDR     r9,[r3,r9,LSL #2]
  105.         ADD     r8,r8,r9,LSL #12
  106.  
  107.         AND     r9,r14,r7,LSR #8
  108.         LDR     r9,[r3,r9,LSL #2]
  109.         ADD     r8,r8,r9,LSL #13
  110.  
  111.         AND     r9,r14,r7,LSR #16
  112.         LDR     r9,[r3,r9,LSL #2]
  113.         ADD     r8,r8,r9,LSL #14
  114.  
  115.         AND     r9,r14,r7,LSR #24
  116.         LDR     r9,[r3,r9,LSL #2]
  117.         ADD     r8,r8,r9,LSL #15
  118.  
  119.         ;load initial data
  120.         LDMIA   r0!,{r4,r5,r6,r7}
  121.  
  122.         ;word five
  123.         AND     r9,r14,r4
  124.         LDR     r9,[r3,r9,LSL #2]
  125.         ADD     r8,r8,r9,LSL #16
  126.  
  127.         AND     r9,r14,r4,LSR #8
  128.         LDR     r9,[r3,r9,LSL #2]
  129.         ADD     r8,r8,r9,LSL #17
  130.  
  131.         AND     r9,r14,r4,LSR #16
  132.         LDR     r9,[r3,r9,LSL #2]
  133.         ADD     r8,r8,r9,LSL #18
  134.  
  135.         AND     r9,r14,r4,LSR #24
  136.         LDR     r9,[r3,r9,LSL #2]
  137.         ADD     r8,r8,r9,LSL #19
  138.  
  139.         ;word six
  140.         AND     r9,r14,r5
  141.         LDR     r9,[r3,r9,LSL #2]
  142.         ADD     r8,r8,r9,LSL #20
  143.  
  144.         AND     r9,r14,r5,LSR #8
  145.         LDR     r9,[r3,r9,LSL #2]
  146.         ADD     r8,r8,r9,LSL #21
  147.  
  148.         AND     r9,r14,r5,LSR #16
  149.         LDR     r9,[r3,r9,LSL #2]
  150.         ADD     r8,r8,r9,LSL #22
  151.  
  152.         AND     r9,r14,r5,LSR #24
  153.         LDR     r9,[r3,r9,LSL #2]
  154.         ADD     r8,r8,r9,LSL #23
  155.  
  156.         ;word seven
  157.         AND     r9,r14,r6
  158.         LDR     r9,[r3,r9,LSL #2]
  159.         ADD     r8,r8,r9,LSL #24
  160.  
  161.         AND     r9,r14,r6,LSR #8
  162.         LDR     r9,[r3,r9,LSL #2]
  163.         ADD     r8,r8,r9,LSL #25
  164.  
  165.         AND     r9,r14,r6,LSR #16
  166.         LDR     r9,[r3,r9,LSL #2]
  167.         ADD     r8,r8,r9,LSL #26
  168.  
  169.         AND     r9,r14,r6,LSR #24
  170.         LDR     r9,[r3,r9,LSL #2]
  171.         ADD     r8,r8,r9,LSL #27
  172.  
  173.         ;word eight
  174.         AND     r9,r14,r7
  175.         LDR     r9,[r3,r9,LSL #2]
  176.         ADD     r8,r8,r9,LSL #28
  177.  
  178.         AND     r9,r14,r7,LSR #8
  179.         LDR     r9,[r3,r9,LSL #2]
  180.         ADD     r8,r8,r9,LSL #29
  181.  
  182.         AND     r9,r14,r7,LSR #16
  183.         LDR     r9,[r3,r9,LSL #2]
  184.         ADD     r8,r8,r9,LSL #30
  185.  
  186.         AND     r9,r14,r7,LSR #24
  187.         LDR     r9,[r3,r9,LSL #2]
  188.         ADD     r8,r8,r9,LSL #31
  189.  
  190.         ;store on screen
  191.         STR     r8,[r1],#4
  192.  
  193.         SUBS    r11,r11,#1
  194.         BNE     C1loopA
  195.  
  196.         ADD     r1,r1,#280
  197.  
  198.         SUBS    r12,r12,#1
  199.         BNE     C1loopB
  200.  
  201.         B       EndConvertScreen
  202.  
  203. Conv2bpp
  204.     ;create mask
  205.         MOV     r14,#255
  206.         MOV     r12,#256
  207.  
  208. C2loopB
  209.         MOV     r11,#20
  210. C2loopA
  211.         ;load initial data
  212.         LDMIA   r0!,{r4,r5,r6,r7}
  213.  
  214.         ;convert data
  215.  
  216.         ;word one
  217.         AND     r8,r14,r4
  218.         LDR     r8,[r3,r8,LSL #2]
  219.  
  220.         AND     r9,r14,r4,LSR #8
  221.         LDR     r9,[r3,r9,LSL #2]
  222.         ADD     r8,r8,r9,LSL #2
  223.  
  224.         AND     r9,r14,r4,LSR #16
  225.         LDR     r9,[r3,r9,LSL #2]
  226.         ADD     r8,r8,r9,LSL #4
  227.  
  228.         AND     r9,r14,r4,LSR #24
  229.         LDR     r9,[r3,r9,LSL #2]
  230.         ADD     r8,r8,r9,LSL #6
  231.  
  232.         ;word two
  233.         AND     r9,r14,r5
  234.         LDR     r9,[r3,r9,LSL #2]
  235.         ADD     r8,r8,r9,LSL #8
  236.  
  237.         AND     r9,r14,r5,LSR #8
  238.         LDR     r9,[r3,r9,LSL #2]
  239.         ADD     r8,r8,r9,LSL #10
  240.  
  241.         AND     r9,r14,r5,LSR #16
  242.         LDR     r9,[r3,r9,LSL #2]
  243.         ADD     r8,r8,r9,LSL #12
  244.  
  245.         AND     r9,r14,r5,LSR #24
  246.         LDR     r9,[r3,r9,LSL #2]
  247.         ADD     r8,r8,r9,LSL #14
  248.  
  249.         ;word three
  250.         AND     r9,r14,r6
  251.         LDR     r9,[r3,r9,LSL #2]
  252.         ADD     r8,r8,r9,LSL #16
  253.  
  254.         AND     r9,r14,r6,LSR #8
  255.         LDR     r9,[r3,r9,LSL #2]
  256.         ADD     r8,r8,r9,LSL #18
  257.  
  258.         AND     r9,r14,r6,LSR #16
  259.         LDR     r9,[r3,r9,LSL #2]
  260.         ADD     r8,r8,r9,LSL #20
  261.  
  262.         AND     r9,r14,r6,LSR #24
  263.         LDR     r9,[r3,r9,LSL #2]
  264.         ADD     r8,r8,r9,LSL #22
  265.  
  266.         ;word four
  267.         AND     r9,r14,r7
  268.         LDR     r9,[r3,r9,LSL #2]
  269.         ADD     r8,r8,r9,LSL #24
  270.  
  271.         AND     r9,r14,r7,LSR #8
  272.         LDR     r9,[r3,r9,LSL #2]
  273.         ADD     r8,r8,r9,LSL #26
  274.  
  275.         AND     r9,r14,r7,LSR #16
  276.         LDR     r9,[r3,r9,LSL #2]
  277.         ADD     r8,r8,r9,LSL #28
  278.  
  279.         AND     r9,r14,r7,LSR #24
  280.         LDR     r9,[r3,r9,LSL #2]
  281.         ADD     r8,r8,r9,LSL #30
  282.  
  283.         ;store on screen
  284.         STR     r8,[r1],#4
  285.  
  286.         SUBS    r11,r11,#1
  287.         BNE     C2loopA
  288.  
  289.         ADD     r1,r1,#240
  290.  
  291.         SUBS    r12,r12,#1
  292.         BNE     C2loopB
  293.  
  294.         B       EndConvertScreen
  295.  
  296. Conv4bpp
  297.     ;create mask
  298.         MOV     r14,#255
  299.         MOV     r12,#256
  300.  
  301. C4loopB
  302.         MOV     r11,#40
  303. C4loopA
  304.         ;load initial data
  305.         LDMIA   r0!,{r4,r5}
  306.  
  307.         ;convert data
  308.         AND     r7,r14,r4
  309.         LDR     r7,[r3,r7,LSL #2]
  310.         AND     r6,r14,r4,LSR #8
  311.         LDR     r6,[r3,r6,LSL #2]
  312.         ADD     r7,r7,r6,LSL #4
  313.         AND     r6,r14,r4,LSR #16
  314.         LDR     r6,[r3,r6,LSL #2]
  315.         ADD     r7,r7,r6,LSL #8
  316.         AND     r6,r14,r4,LSR #24
  317.         LDR     r6,[r3,r6,LSL #2]
  318.         ADD     r7,r7,r6,LSL #12
  319.  
  320.         AND     r6,r14,r5
  321.         LDR     r6,[r3,r6,LSL #2]
  322.         ADD     r7,r7,r6,LSL #16
  323.         AND     r6,r14,r5,LSR #8
  324.         LDR     r6,[r3,r6,LSL #2]
  325.         ADD     r7,r7,r6,LSL #20
  326.         AND     r6,r14,r5,LSR #16
  327.         LDR     r6,[r3,r6,LSL #2]
  328.         ADD     r7,r7,r6,LSL #24
  329.         AND     r6,r14,r5,LSR #24
  330.         LDR     r6,[r3,r6,LSL #2]
  331.         ADD     r7,r7,r6,LSL #28
  332.  
  333.         ;store on screen
  334.         STR     r7,[r1],#4
  335.  
  336.         SUBS    r11,r11,#1
  337.         BNE     C4loopA
  338.  
  339.         ADD     r1,r1,#160
  340.  
  341.         SUBS    r12,r12,#1
  342.         BNE     C4loopB
  343.  
  344.         B       EndConvertScreen
  345.  
  346. Conv8bpp
  347.     ;create mask
  348.         MOV     r14,#255
  349.         MOV     r12,#256
  350.  
  351. C8loopB
  352.         MOV     r11,#40
  353. C8loopA
  354.         ;load initial data
  355.         LDMIA   r0!,{r4,r5}
  356.  
  357.         ;convert data
  358.  
  359.         ;word one
  360.         AND     r8,r14,r4
  361.         LDR     r8,[r3,r8,LSL #2]
  362.         AND     r9,r14,r4,LSR #8
  363.         LDR     r9,[r3,r9,LSL #2]
  364.         ADD     r8,r8,r9,LSL #8
  365.         AND     r9,r14,r4,LSR #16
  366.         LDR     r9,[r3,r9,LSL #2]
  367.         ADD     r8,r8,r9,LSL #16
  368.         AND     r9,r14,r4,LSR #24
  369.         LDR     r9,[r3,r9,LSL #2]
  370.         ADD     r8,r8,r9,LSL #24
  371.  
  372.         AND     r9,r14,r5
  373.         LDR     r9,[r3,r9,LSL #2]
  374.         AND     r10,r14,r5,LSR #8
  375.         LDR     r10,[r3,r10,LSL #2]
  376.         ADD     r9,r9,r10,LSL #8
  377.         AND     r10,r14,r5,LSR #16
  378.         LDR     r10,[r3,r10,LSL #2]
  379.         ADD     r9,r9,r10,LSL #16
  380.         AND     r10,r14,r5,LSR #24
  381.         LDR     r10,[r3,r10,LSL #2]
  382.         ADD     r9,r9,r10,LSL #24
  383.  
  384.         ;store on screen
  385.         STMIA   r1!,{r8,r9}
  386.  
  387.         SUBS    r11,r11,#1
  388.         BNE     C8loopA
  389.  
  390.         SUBS    r12,r12,#1
  391.         BNE     C8loopB
  392.  
  393. EndConvertScreen
  394.         LDMFD   r13!,{r0-r12,pc}
  395.  
  396.     END
  397.