Subversion Repositories freemyipod

Rev

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