Subversion Repositories freemyipod

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 theseven 1
@
2
@
3
@    Copyright 2010 TheSeven
4
@
5
@
677 theseven 6
@    This file is part of emCORE.
2 theseven 7
@
677 theseven 8
@    emCORE is free software: you can redistribute it and/or
2 theseven 9
@    modify it under the terms of the GNU General Public License as
10
@    published by the Free Software Foundation, either version 2 of the
11
@    License, or (at your option) any later version.
12
@
677 theseven 13
@    emCORE is distributed in the hope that it will be useful,
2 theseven 14
@    but WITHOUT ANY WARRANTY; without even the implied warranty of
15
@    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16
@    See the GNU General Public License for more details.
17
@
18
@    You should have received a copy of the GNU General Public License
677 theseven 19
@    along with emCORE.  If not, see <http://www.gnu.org/licenses/>.
2 theseven 20
@
21
@
22
 
23
 
138 theseven 24
#define ASM_FILE
25
#include "global.h"
26
 
27
 
28
.section .icode.rendertext, "ax", %progbits
29
.align 2
30
.global rendertext
31
.type rendertext, %function
32
rendertext:
33
	stmfd	sp!, {r0-r2,r4,r5,lr}
34
	ldr	r4, [sp,#0x18]
35
	str	r4, [sp,#-4]!
36
	mov	r4, r3
37
	mov	r5, #6 * LCD_BYTESPERPIXEL
38
rendertext_loop:
39
	ldrb	r3, [r4], #1
40
	cmp	r3, #0
41
	beq	rendertext_done
42
	bl	renderchar
43
	ldmed	sp, {r0-r2}
44
	add	r0, r0, r5
45
	str	r0, [sp,#4]
46
	b	rendertext_loop
47
rendertext_done:
48
	ldmfd	sp!, {r0-r5,pc}
49
.size rendertext, .-rendertext
50
 
51
 
52
#if (LCD_BYTESPERPIXEL == 2)
2 theseven 53
.section .icode.renderchar, "ax", %progbits
54
.align 2
55
.global renderchar
56
.type renderchar, %function
57
renderchar:
7 theseven 58
	stmfd	sp!, {r4-r7,lr}
59
	ldr	r7, [sp,#0x14]
2 theseven 60
	cmn	r2, #1
61
	beq	renderchar_nobg
62
	mov	r6, r0
63
	mov	r4, #8
64
	mov	lr, r2,lsr#16
65
	sub	lr, lr, #0xff00
66
	subs	lr, lr, #0xff
67
	bne	renderchar_opaquerow
68
	mov	r12, r2,lsl#16
69
	mov	r12, r12,lsr#16
70
renderchar_blendrow:
71
	mov	r5, #6
72
renderchar_blendcol:
73
	ldrh	lr, [r6]
74
	tst	lr, #1
75
	orrne	lr, lr, #0x10000
76
	mov	lr, lr,lsr#1
77
	bic	lr, lr, #0x1000
78
	bic	lr, lr, #0x84
79
	add	lr, lr, r12
80
	strh	lr, [r6], #2
81
	subs	r5, r5, #1
82
	bne	renderchar_blendcol
138 theseven 83
	add	r6, r6, r7,lsl#1
7 theseven 84
	sub	r6, r6, #12
2 theseven 85
	subs	r4, r4, #1
86
	bne	renderchar_blendrow
87
	b	renderchar_nobg
88
renderchar_opaquerow:
89
	mov	r5, #6
90
renderchar_opaquecol:
91
	strh	r2, [r6], #2
92
	subs	r5, r5, #1
93
	bne	renderchar_opaquecol
138 theseven 94
	add	r6, r6, r7,lsl#1
7 theseven 95
	sub	r6, r6, #12
2 theseven 96
	subs	r4, r4, #1
97
	bne	renderchar_opaquerow
98
renderchar_nobg:
99
	adr	r5, renderchar_font
100
	sub	r3, r3, #0x20
101
	cmp	r3, #0x5f
102
	addcc	r5, r3,lsl#2
103
	addcc	r5, r3
104
	mov	r3, #5
105
renderchar_col:
106
	mov	r6, r0
107
	ldrb	r4, [r5], #1
108
renderchar_row:
109
	tst	r4, #1
110
	strneh	r1, [r6]
138 theseven 111
	add	r6, r6, r7,lsl#1
2 theseven 112
	movs	r4, r4,lsr#1
113
	bne	renderchar_row
114
	add	r0, r0, #2
115
	subs	r3, r3, #1
116
	bne	renderchar_col
117
	add	r0, r0, #2
7 theseven 118
	ldmfd	sp!, {r4-r7,pc}
2 theseven 119
 
120
renderchar_font:
121
	.byte 0, 0, 0, 0, 0
122
	.byte 0, 0, 95, 0, 0
123
	.byte 0, 7, 0, 7, 0
124
	.byte 20, 127, 20, 127, 20
125
	.byte 36, 42, 127, 42, 18
126
	.byte 35, 19, 8, 100, 98
127
	.byte 54, 73, 85, 34, 80
128
	.byte 5, 3, 0, 0, 0
129
	.byte 28, 34, 65, 0, 0
130
	.byte 0, 0, 65, 34, 28
131
	.byte 20, 8, 62, 8, 20
132
	.byte 8, 8, 62, 8, 8
133
	.byte 0, -96, 96, 0, 0
134
	.byte 8, 8, 8, 8, 8
135
	.byte 0, 96, 96, 0, 0
136
	.byte 32, 16, 8, 4, 2
137
	.byte 62, 81, 73, 69, 62
138
	.byte 0, 66, 127, 64, 0
139
	.byte 66, 97, 81, 73, 70
140
	.byte 33, 65, 69, 75, 49
141
	.byte 24, 20, 18, 127, 16
142
	.byte 39, 69, 69, 69, 57
143
	.byte 60, 74, 73, 73, 48
144
	.byte 1, 113, 9, 5, 3
145
	.byte 54, 73, 73, 73, 54
146
	.byte 6, 73, 73, 41, 30
147
	.byte 0, 54, 54, 0, 0
148
	.byte 0, 86, 54, 0, 0
149
	.byte 8, 20, 34, 65, 0
150
	.byte 20, 20, 20, 20, 20
151
	.byte 0, 65, 34, 20, 8
152
	.byte 2, 1, 81, 9, 6
153
	.byte 50, 73, 121, 65, 62
154
	.byte 124, 18, 17, 18, 124
155
	.byte 127, 73, 73, 73, 62
156
	.byte 62, 65, 65, 65, 34
157
	.byte 127, 65, 65, 34, 28
158
	.byte 127, 73, 73, 73, 65
159
	.byte 127, 9, 9, 9, 1
160
	.byte 62, 65, 73, 73, 58
161
	.byte 127, 8, 8, 8, 127
162
	.byte 0, 65, 127, 65, 0
163
	.byte 32, 64, 65, 63, 1
164
	.byte 127, 8, 20, 34, 65
165
	.byte 127, 64, 64, 64, 64
166
	.byte 127, 2, 12, 2, 127
167
	.byte 127, 4, 8, 16, 127
168
	.byte 62, 65, 65, 65, 62
169
	.byte 127, 9, 9, 9, 6
170
	.byte 62, 65, 81, 33, 94
171
	.byte 127, 9, 25, 41, 70
172
	.byte 38, 73, 73, 73, 50
173
	.byte 1, 1, 127, 1, 1
174
	.byte 63, 64, 64, 64, 63
175
	.byte 31, 32, 64, 32, 31
176
	.byte 127, 32, 24, 32, 127
177
	.byte 99, 20, 8, 20, 99
178
	.byte 3, 4, 120, 4, 3
179
	.byte 97, 81, 73, 69, 67
180
	.byte 0, 127, 65, 65, 0
181
	.byte 2, 4, 8, 16, 32
182
	.byte 0, 65, 65, 127, 0
183
	.byte 4, 2, 1, 2, 4
184
	.byte 64, 64, 64, 64, 64
185
	.byte 1, 2, 4, 0, 0
186
	.byte 32, 84, 84, 84, 120
187
	.byte 127, 68, 68, 68, 56
188
	.byte 56, 68, 68, 68, 40
189
	.byte 56, 68, 68, 68, 127
190
	.byte 56, 84, 84, 84, 24
191
	.byte 8, 126, 9, 1, 2
192
	.byte 8, 84, 84, 84, 60
193
	.byte 127, 4, 4, 4, 120
194
	.byte 0, 68, 125, 64, 0
195
	.byte 32, 64, 64, 61, 0
196
	.byte 127, 16, 40, 68, 0
197
	.byte 0, 65, 127, 64, 0
198
	.byte 124, 4, 24, 4, 120
199
	.byte 124, 8, 4, 4, 120
200
	.byte 56, 68, 68, 68, 56
201
	.byte 124, 20, 20, 20, 24
202
	.byte 8, 20, 20, 20, 124
203
	.byte 124, 8, 4, 4, 8
204
	.byte 72, 84, 84, 84, 32
205
	.byte 4, 63, 68, 64, 32
206
	.byte 60, 64, 64, 32, 124
207
	.byte 28, 32, 64, 32, 28
208
	.byte 60, 64, 56, 64, 60
209
	.byte 68, 40, 16, 40, 68
210
	.byte 12, 80, 80, 80, 60
211
	.byte 68, 100, 84, 76, 68
212
	.byte 0, 8, 54, 65, 0
213
	.byte 0, 0, 119, 0, 0
214
	.byte 0, 65, 54, 8, 0
215
	.byte 2, 1, 2, 4, 2
216
.align 2
217
.size renderchar, .-renderchar
138 theseven 218
#else
219
#error Unknown number of bytes per pixel!
220
#endif