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
@
6
@    This file is part of emBIOS.
7
@
8
@    emBIOS is free software: you can redistribute it and/or
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
@
13
@    emBIOS is distributed in the hope that it will be useful,
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
19
@    along with emBIOS.  If not, see <http://www.gnu.org/licenses/>.
20
@
21
@
22
 
23
 
24
.section .icode.renderbmp, "ax", %progbits
25
.align 2
26
.global renderbmp
27
.type renderbmp, %function
28
renderbmp:
29
	ldrh	r2, [r1]
30
	sub	r2, r2, #0x4d00
31
	subs	r2, r2, #0x42
32
	movne	pc, lr
7 theseven 33
	stmfd	sp!, {r4,lr}
2 theseven 34
	ldrh	r2, [r1,#18]
35
	ldrh	r12, [r1,#20]
36
	orr	r2, r2, r12,lsl#16
7 theseven 37
	ldrh	r4, [r1,#22]
2 theseven 38
	ldrh	r12, [r1,#24]
7 theseven 39
	orr	r4, r4, r12,lsl#16
2 theseven 40
	ldrh	lr, [r1,#10]
41
	ldrh	r12, [r1,#12]
42
	orr	lr, lr, r12,lsl#16
43
	add	r1, r1, lr
44
	mov	r12, #352
7 theseven 45
	mul	lr, r12, r4
2 theseven 46
	add	r0, r0, lr
47
renderbmp_row:
48
	mov	r12, r2
7 theseven 49
	sub	r0, r0, r3
2 theseven 50
renderbmp_pixel:
51
	ldrb	lr, [r1,#1]
52
	strb	lr, [r0], #1
53
	ldrb	lr, [r1], #2
54
	strb	lr, [r0], #1
55
	subs	r12, r12, #1
56
	bne	renderbmp_pixel
57
	tst	r2, #1
58
	addne	r1, r1, #2
59
	sub	r0, r0, r2,lsl#1
7 theseven 60
	subs	r4, r4, #1
2 theseven 61
	bne	renderbmp_row
7 theseven 62
	ldmfd	sp!, {r4,pc}
2 theseven 63
.size renderbmp, .-renderbmp
64
 
65
 
66
.section .icode.renderchar, "ax", %progbits
67
.align 2
68
.global renderchar
69
.type renderchar, %function
70
renderchar:
7 theseven 71
	stmfd	sp!, {r4-r7,lr}
72
	ldr	r7, [sp,#0x14]
2 theseven 73
	cmn	r2, #1
74
	beq	renderchar_nobg
75
	mov	r6, r0
76
	mov	r4, #8
77
	mov	lr, r2,lsr#16
78
	sub	lr, lr, #0xff00
79
	subs	lr, lr, #0xff
80
	bne	renderchar_opaquerow
81
	mov	r12, r2,lsl#16
82
	mov	r12, r12,lsr#16
83
renderchar_blendrow:
84
	mov	r5, #6
85
renderchar_blendcol:
86
	ldrh	lr, [r6]
87
	tst	lr, #1
88
	orrne	lr, lr, #0x10000
89
	mov	lr, lr,lsr#1
90
	bic	lr, lr, #0x1000
91
	bic	lr, lr, #0x84
92
	add	lr, lr, r12
93
	strh	lr, [r6], #2
94
	subs	r5, r5, #1
95
	bne	renderchar_blendcol
7 theseven 96
	add	r6, r6, r7
97
	sub	r6, r6, #12
2 theseven 98
	subs	r4, r4, #1
99
	bne	renderchar_blendrow
100
	b	renderchar_nobg
101
renderchar_opaquerow:
102
	mov	r5, #6
103
renderchar_opaquecol:
104
	strh	r2, [r6], #2
105
	subs	r5, r5, #1
106
	bne	renderchar_opaquecol
7 theseven 107
	add	r6, r6, r7
108
	sub	r6, r6, #12
2 theseven 109
	subs	r4, r4, #1
110
	bne	renderchar_opaquerow
111
renderchar_nobg:
112
	adr	r5, renderchar_font
113
	sub	r3, r3, #0x20
114
	cmp	r3, #0x5f
115
	addcc	r5, r3,lsl#2
116
	addcc	r5, r3
117
	mov	r3, #5
118
renderchar_col:
119
	mov	r6, r0
120
	ldrb	r4, [r5], #1
121
renderchar_row:
122
	tst	r4, #1
123
	strneh	r1, [r6]
7 theseven 124
	add	r6, r6, r7
2 theseven 125
	movs	r4, r4,lsr#1
126
	bne	renderchar_row
127
	add	r0, r0, #2
128
	subs	r3, r3, #1
129
	bne	renderchar_col
130
	add	r0, r0, #2
7 theseven 131
	ldmfd	sp!, {r4-r7,pc}
2 theseven 132
 
133
renderchar_font:
134
	.byte 0, 0, 0, 0, 0
135
	.byte 0, 0, 95, 0, 0
136
	.byte 0, 7, 0, 7, 0
137
	.byte 20, 127, 20, 127, 20
138
	.byte 36, 42, 127, 42, 18
139
	.byte 35, 19, 8, 100, 98
140
	.byte 54, 73, 85, 34, 80
141
	.byte 5, 3, 0, 0, 0
142
	.byte 28, 34, 65, 0, 0
143
	.byte 0, 0, 65, 34, 28
144
	.byte 20, 8, 62, 8, 20
145
	.byte 8, 8, 62, 8, 8
146
	.byte 0, -96, 96, 0, 0
147
	.byte 8, 8, 8, 8, 8
148
	.byte 0, 96, 96, 0, 0
149
	.byte 32, 16, 8, 4, 2
150
	.byte 62, 81, 73, 69, 62
151
	.byte 0, 66, 127, 64, 0
152
	.byte 66, 97, 81, 73, 70
153
	.byte 33, 65, 69, 75, 49
154
	.byte 24, 20, 18, 127, 16
155
	.byte 39, 69, 69, 69, 57
156
	.byte 60, 74, 73, 73, 48
157
	.byte 1, 113, 9, 5, 3
158
	.byte 54, 73, 73, 73, 54
159
	.byte 6, 73, 73, 41, 30
160
	.byte 0, 54, 54, 0, 0
161
	.byte 0, 86, 54, 0, 0
162
	.byte 8, 20, 34, 65, 0
163
	.byte 20, 20, 20, 20, 20
164
	.byte 0, 65, 34, 20, 8
165
	.byte 2, 1, 81, 9, 6
166
	.byte 50, 73, 121, 65, 62
167
	.byte 124, 18, 17, 18, 124
168
	.byte 127, 73, 73, 73, 62
169
	.byte 62, 65, 65, 65, 34
170
	.byte 127, 65, 65, 34, 28
171
	.byte 127, 73, 73, 73, 65
172
	.byte 127, 9, 9, 9, 1
173
	.byte 62, 65, 73, 73, 58
174
	.byte 127, 8, 8, 8, 127
175
	.byte 0, 65, 127, 65, 0
176
	.byte 32, 64, 65, 63, 1
177
	.byte 127, 8, 20, 34, 65
178
	.byte 127, 64, 64, 64, 64
179
	.byte 127, 2, 12, 2, 127
180
	.byte 127, 4, 8, 16, 127
181
	.byte 62, 65, 65, 65, 62
182
	.byte 127, 9, 9, 9, 6
183
	.byte 62, 65, 81, 33, 94
184
	.byte 127, 9, 25, 41, 70
185
	.byte 38, 73, 73, 73, 50
186
	.byte 1, 1, 127, 1, 1
187
	.byte 63, 64, 64, 64, 63
188
	.byte 31, 32, 64, 32, 31
189
	.byte 127, 32, 24, 32, 127
190
	.byte 99, 20, 8, 20, 99
191
	.byte 3, 4, 120, 4, 3
192
	.byte 97, 81, 73, 69, 67
193
	.byte 0, 127, 65, 65, 0
194
	.byte 2, 4, 8, 16, 32
195
	.byte 0, 65, 65, 127, 0
196
	.byte 4, 2, 1, 2, 4
197
	.byte 64, 64, 64, 64, 64
198
	.byte 1, 2, 4, 0, 0
199
	.byte 32, 84, 84, 84, 120
200
	.byte 127, 68, 68, 68, 56
201
	.byte 56, 68, 68, 68, 40
202
	.byte 56, 68, 68, 68, 127
203
	.byte 56, 84, 84, 84, 24
204
	.byte 8, 126, 9, 1, 2
205
	.byte 8, 84, 84, 84, 60
206
	.byte 127, 4, 4, 4, 120
207
	.byte 0, 68, 125, 64, 0
208
	.byte 32, 64, 64, 61, 0
209
	.byte 127, 16, 40, 68, 0
210
	.byte 0, 65, 127, 64, 0
211
	.byte 124, 4, 24, 4, 120
212
	.byte 124, 8, 4, 4, 120
213
	.byte 56, 68, 68, 68, 56
214
	.byte 124, 20, 20, 20, 24
215
	.byte 8, 20, 20, 20, 124
216
	.byte 124, 8, 4, 4, 8
217
	.byte 72, 84, 84, 84, 32
218
	.byte 4, 63, 68, 64, 32
219
	.byte 60, 64, 64, 32, 124
220
	.byte 28, 32, 64, 32, 28
221
	.byte 60, 64, 56, 64, 60
222
	.byte 68, 40, 16, 40, 68
223
	.byte 12, 80, 80, 80, 60
224
	.byte 68, 100, 84, 76, 68
225
	.byte 0, 8, 54, 65, 0
226
	.byte 0, 0, 119, 0, 0
227
	.byte 0, 65, 54, 8, 0
228
	.byte 2, 1, 2, 4, 2
229
.align 2
230
.size renderchar, .-renderchar