initial upstream import
[drnoksnes] / giz_kgsdkasm.s
1     
2         .global BlitBufferToScreen
3
4 BlitBufferToScreen:  
5     ;@ r0 - Buffer to copy from
6         ;@ r1 - Buffer to copy to
7         stmfd sp!,{r4-r12,lr}
8         mov r12,#240>>1
9 1:
10     ;@ first line is perfectly aligned
11         ldmia r0!,{r2-r11}
12         stmia r1!,{r2-r11}
13         ldmia r0!,{r2-r11}
14         stmia r1!,{r2-r11}
15         ldmia r0!,{r2-r11}
16         stmia r1!,{r2-r11}
17         ldmia r0!,{r2-r11}
18         stmia r1!,{r2-r11}
19         ldmia r0!,{r2-r11}
20         stmia r1!,{r2-r11}
21         ldmia r0!,{r2-r11}
22         stmia r1!,{r2-r11}
23         ldmia r0!,{r2-r11}
24         stmia r1!,{r2-r11}
25         ldmia r0!,{r2-r11}
26         stmia r1!,{r2-r11}
27         
28         ldmia r0!,{r2-r11}
29         stmia r1!,{r2-r11}
30         ldmia r0!,{r2-r11}
31         stmia r1!,{r2-r11}
32         ldmia r0!,{r2-r11}
33         stmia r1!,{r2-r11}
34         ldmia r0!,{r2-r11}
35         stmia r1!,{r2-r11}
36         ldmia r0!,{r2-r11}
37         stmia r1!,{r2-r11}
38         ldmia r0!,{r2-r11}
39         stmia r1!,{r2-r11}
40         ldmia r0!,{r2-r11}
41         stmia r1!,{r2-r11}
42         ldmia r0!,{r2-r11}
43         stmia r1!,{r2-r11}
44         
45         add r1,r1,#2
46
47         ldmia r0!,{r2-r6}
48         strh r2,[r1],#2
49         mov lr,#15
50 2:
51         mov r2,r2,lsr#16
52         orr r2,r2,r3,lsl#16
53         mov r3,r3,lsr#16
54         orr r3,r3,r4,lsl#16
55         mov r4,r4,lsr#16
56         orr r4,r4,r5,lsl#16
57         mov r5,r5,lsr#16
58         orr r5,r5,r6,lsl#16
59         mov r6,r6,lsr#16
60         ldmia r0!,{r7-r11}
61         orr r6,r6,r7,lsl#16
62         stmia r1!,{r2-r6}
63         mov r7,r7,lsr#16
64         orr r7,r7,r8,lsl#16
65         mov r8,r8,lsr#16
66         orr r8,r8,r9,lsl#16
67         mov r9,r9,lsr#16
68         orr r9,r9,r10,lsl#16
69         mov r10,r10,lsr#16
70         orr r10,r10,r11,lsl#16
71         mov r11,r11,lsr#16
72         ldmia r0!,{r2-r6}
73         orr r11,r11,r2,lsl#16
74         stmia r1!,{r7-r11}
75         subs lr,lr,#1
76         bne 2b
77         
78         mov r2,r2,lsr#16
79         orr r2,r2,r3,lsl#16
80         mov r3,r3,lsr#16
81         orr r3,r3,r4,lsl#16
82         mov r4,r4,lsr#16
83         orr r4,r4,r5,lsl#16
84         mov r5,r5,lsr#16
85         orr r5,r5,r6,lsl#16
86         mov r6,r6,lsr#16
87         ldmia r0!,{r7-r11}
88         orr r6,r6,r7,lsl#16
89         stmia r1!,{r2-r6}
90         mov r7,r7,lsr#16
91         orr r7,r7,r8,lsl#16
92         mov r8,r8,lsr#16
93         orr r8,r8,r9,lsl#16
94         mov r9,r9,lsr#16
95         orr r9,r9,r10,lsl#16
96         mov r10,r10,lsr#16
97         orr r10,r10,r11,lsl#16
98         mov r11,r11,lsr#16
99         stmia r1!,{r7-r11}
100         
101         subs r12,r12,#1
102     bne 1b
103         
104         ldmfd sp!,{r4-r12,pc}
105
106
107