3bb7bd19 |
1 | @ vim:filetype=armasm |
2 | |
3 | |
4 | .global clut_line @ void *dest, void *src, unsigned short *pal, int pixels_mask |
5 | |
6 | clut_line: |
7 | stmfd sp!, {r4-r11,lr} |
8 | |
9 | and lr, r3, #0xff0000 |
10 | mov lr, lr, lsr #15 @ mask |
11 | mov r3, r3, lsr #3 |
12 | and r3, r3, #0xff @ counter |
13 | add r11,r0, #800*2 |
14 | |
15 | clut_line_loop: |
16 | ldmia r1!, {r10,r12} |
17 | |
18 | and r4, lr, r10, lsl #1 |
19 | ldrh r4, [r2, r4] |
20 | and r5, lr, r10, lsr #7 |
21 | ldrh r5, [r2, r5] |
22 | orr r4, r4, r4, lsl #16 |
23 | |
24 | and r6, lr, r10, lsr #15 |
25 | ldrh r6, [r2, r6] |
26 | orr r5, r5, r5, lsl #16 |
27 | |
28 | and r7, lr, r10, lsr #23 |
29 | ldrh r7, [r2, r7] |
30 | orr r6, r6, r6, lsl #16 |
31 | |
32 | and r8, lr, r12, lsl #1 |
33 | ldrh r8, [r2, r8] |
34 | orr r7, r7, r7, lsl #16 |
35 | |
36 | and r9, lr, r12, lsr #7 |
37 | ldrh r9, [r2, r9] |
38 | orr r8, r8, r8, lsl #16 |
39 | |
40 | and r10,lr, r12, lsr #15 |
41 | ldrh r10,[r2, r10] |
42 | orr r9, r9, r9, lsl #16 |
43 | |
44 | and r12,lr, r12, lsr #23 |
45 | ldrh r12,[r2, r12] |
46 | orr r10,r10,r10, lsl #16 |
47 | |
48 | subs r3, r3, #1 |
49 | orr r12,r12,r12, lsl #16 |
50 | |
51 | stmia r0!, {r4-r10,r12} |
52 | stmia r11!,{r4-r10,r12} |
53 | bne clut_line_loop |
54 | |
55 | ldmfd sp!, {r4-r11,pc} |
56 | |