giz port wip
[picodrive.git] / platform / gizmondo / asm_utils.s
CommitLineData
ea8c405f 1@ vim:filetype=armasm
2
3
4.global vidCpy8to16_40 @ void *dest, void *src, short *pal, int lines
5
6vidCpy8to16_40:
7 stmfd sp!, {r4-r9,lr}
8
9 mov r3, r3, lsr #1
10 orr r3, r3, r3, lsl #8
11 add r1, r1, #8
12 orr r3, r3, #(320/8-1)<<24
13
14 @ even lines
15vcloop_40_aligned:
16 ldr r12, [r1], #4
17 ldr r7, [r1], #4
18
19 and r4, lr, r12, lsl #1
20 ldrh r4, [r2, r4]
21 and r5, lr, r12, lsr #7
22 ldrh r5, [r2, r5]
23 and r6, lr, r12, lsr #15
24 ldrh r6, [r2, r6]
25 orr r4, r4, r5, lsl #16
26
27 and r5, lr, r12, lsr #23
28 ldrh r5, [r2, r5]
29 and r8, lr, r7, lsl #1
30 ldrh r8, [r2, r8]
31 orr r5, r6, r5, lsl #16
32
33 and r6, lr, r7, lsr #7
34 ldrh r6, [r2, r6]
35 and r12,lr, r7, lsr #15
36 ldrh r12,[r2, r12]
37 and r9, lr, r7, lsr #23
38 ldrh r9, [r2, r9]
39 orr r8, r8, r6, lsl #16
40
41 subs r3, r3, #1<<24
42 orr r12,r12, r9, lsl #16
43
44 stmia r0!, {r4,r5,r8,r12}
45 bpl vcloop_40_aligned
46
47 add r1, r1, #336 @ skip a line and 1 col
48 add r0, r0, #320*2+2*2
49 add r3, r3, #(320/8)<<24
50 sub r3, r3, #1
51 tst r3, #0xff
52 bne vcloop_40_aligned
53
54 and r4, r3, #0xff00
55 orr r3, r3, r4, lsr #8
56 mov r4, r4, lsr #7
fd34fdd0 57 sub r6, r4, #1
ea8c405f 58 mov r5, #320*2
59 add r5, r5, #2
fd34fdd0 60 mul r4, r5, r6
ea8c405f 61 sub r0, r0, r4
62 mov r5, #328
fd34fdd0 63 mul r4, r5, r6
ea8c405f 64 sub r1, r1, r4
65
fd34fdd0 66 @ FIXME FIXME FIXME
67 ldmfd sp!, {r4-r9,lr}
68 bx lr
69
ea8c405f 70vcloop_40_unaligned:
71 ldr r12, [r1], #4
72 ldr r7, [r1], #4
73
74 and r4, lr, r12, lsl #1
75 ldrh r4, [r2, r4]
76 and r5, lr, r12, lsr #7
77 ldrh r5, [r2, r5]
78 strh r4, [r0]!
79 and r6, lr, r12, lsr #15
80 ldrh r6, [r2, r6]
81
82 and r4, lr, r12, lsr #23
83 ldrh r4, [r2, r4]
84 orr r5, r5, r6, lsl #16
85
86 and r8, lr, r7, lsl #1
87 ldrh r8, [r2, r8]
88
89 and r6, lr, r7, lsr #7
90 ldrh r6, [r2, r6]
91 orr r8, r4, r8, lsl #16
92
93 and r12,lr, r7, lsr #15
94 ldrh r12,[r2, r12]
95
96 and r4, lr, r7, lsr #23
97 ldrh r4, [r2, r6]
98 orr r12,r6, r12,lsl #16
fd34fdd0 99 subs r3, r3, #1<<24
ea8c405f 100
101 stmia r0!, {r5,r8,r12}
102 strh r4, [r0]!
fd34fdd0 103 bpl vcloop_40_unaligned
ea8c405f 104
105 add r1, r1, #336 @ skip a line and 1 col
106 add r0, r0, #320*2+2*2
107 add r3, r3, #(320/8)<<24
108 sub r3, r3, #1
109 tst r3, #0xff
110 bne vcloop_40_unaligned
111
112 ldmfd sp!, {r4-r9,lr}
113 bx lr
114
115
116