floor1LARM.s revision 0f6f2525f7b19c7de18bafe464b5ced1c714430a
1@ Tremolo library
2@ Copyright (C) 2009 Robin Watts for Pinknoise Productions Ltd
3
4    .text
5
6	.global	render_lineARM
7
8render_lineARM:
9	@ r0 = n
10	@ r1 = d
11	@ r2 = floor
12	@ r3 = base
13	@ <> = err
14	@ <> = adx
15	@ <> = ady
16	MOV	r12,r13
17	STMFD	r13!,{r4-r6,r11,r14}
18	LDMFD	r12,{r11,r12,r14}	@ r11 = err
19					@ r12 = adx
20					@ r14 = ady
21rl_loop:
22	LDR	r4, [r1]		@ r4 = *d
23	LDR	r5, [r2], r3,LSL #2	@ r5 = *floor    r2 = floor+base
24	SUBS	r11,r11,r14		@ err -= ady
25	MOV	r4, r4, ASR #6
26	MUL	r5, r4, r5		@ r5 = MULT31_SHIFT15
27	ADDLT	r11,r11,r12		@ if (err < 0) err+=adx
28	ADDLT	r2, r2, #4		@              floor+=1
29	SUBS	r0, r0, #1
30	STR	r5, [r1], #4
31	BGT	rl_loop
32
33	LDMFD	r13!,{r4-r6,r11,PC}
34
35	@ END
36