Re: [ARM926EJ-S]Damier
Posté: 10 Aoû 2017, 13:25
J'ai totalement refait la routine d'affichage, et maintenant ça marche.
Mais je ne sais toujours pas pourquoi la routine waitkey empêche le rafraichissement de l'écran quand le programme est fini
Voilà le code:
Mon prochain projet, un snake.
Je vais déjà tenter une routine d'affichage de sprite et pour cela j'aurais une petite question:
Que fait la commande ADR?
Mais je ne sais toujours pas pourquoi la routine waitkey empêche le rafraichissement de l'écran quand le programme est fini
Voilà le code:
- Code: Tout sélectionner
main
stmfd sp!, {lr}
mov r0, #0xC0000000
ldr r0, [r0, #0x10]
mvn r1, #0b0000000000000000
bl damierCX
bl waitkey
mov r0, #0xC0000000
ldr r0, [r0, #0x10]
bl clrscrCX
; bl wait
ldmfd sp!, {pc}
waitkey
mov r10,#0x90000000
add r10,r10,#0xe0000
add r10,r10,#0x10
wkloop
ldmfd r10,{r1-r4}
orr r1,r1,r2
orr r2,r3,r4
orrs r1,r1,r2
beq wkloop
bx lr
wait
mvn r0, #0
mov r0, r0, lsr #3
waitloop
sub r0, r0, #1
cmp r0, #0
bgt waitloop
bx lr
damierCX ;base, color
stmfd sp!, {r0-r12, lr}
mov r4, r0;base
mov r5, #0;x
mov r6, #0;y
mov r7, r1;color
mov r8, #0
mov r9, #0
xloop
mov r0, r4
mov r1, r5
mov r2, r6
mov r3, r7
bl setPixelColorCX
add r5, r5, #1
add r8, r8, #1
cmp r8, #20
blt xloop
mov r8, #0
bl changecolor
cmp r5, #320
blt xloop
add r9, r9, #1
add r6, r6, #1
mov r5, #0
cmp r9, #20
blt xloop
mov r9, #0
bl changecolor
cmp r6, #240
blt xloop
ldmfd sp!, {r0-r12, pc}
clrscrCX
stmfd sp!, {r0-r12, lr}
mov r4, r0;base
mov r5, #0;x
mov r6, #0;y
mvn r7, #0;color
clrloop
mov r0, r4
mov r1, r5
mov r2, r6
mov r3, r7
bl setPixelColorCX
add r5, r5, #1
cmp r5, #320
blt clrloop
add r6, r6, #1
mov r5, #0
cmp r6, #240
blt clrloop
ldmfd sp!, {r0-r12, pc}
changecolor
cmp r7, #0
mvneq r7, #0
movne r7, #0
bx lr
setPixelColorCX ;base, x, y, color
add r0, r0, r1, lsl #1
add r0, r0, r2, lsl #9
add r0, r0, r2, lsl #7
strh r3, [r0]
bx lr
Mon prochain projet, un snake.
Je vais déjà tenter une routine d'affichage de sprite et pour cela j'aurais une petite question:
Que fait la commande ADR?