|
Posté le 26-10-2013 à 18:19 | #
|
je recherche un petit code pour pouvoir tester mes fonctions qui utilise la vram. Je pensait faire quelque chose comme cela.
[brown]#include [gray]"ColorLib.h"[/gray][/brown]
void main(void) {
pixel(12, [maroon]12[/maroon], quel est le nombre a mettre?)
comment rachraichir la vram ou l'afficher ?
[b][blue]while[/blue][/b] (1)
{
[purple]int[/purple] key = [maroon]0[/maroon];
GetKey(&key);
}
[b][blue]return[/blue][/b];
}
|
|
|
Posté le 26-10-2013 à 23:44 | #
|
Pour la couleur, tu trouvera ton bonheur dans color.h !
Et pour la vram : Bdisp_PutDisp_DD(); pour l'afficher et Bdisp_AllClr_VRAM(); pour la "vider" .
Ah oui et aussi, je sais pourquoi la fonction getVramAdress ne marchait plus : toux les \\n en fin de ligne ont sautés... Il vaudrait mieux la remettre je pense ...
Ps : pourquoi as tu enlevé certaines fonctions, comme les polygones, les fonctions en alpha et autres...? |
|
|
Posté le 27-10-2013 à 11:08 | #
|
pour les fonctions de vram je pensait trouver quelque chose de plus personnel que ceci.
ok je teste avec \n pour getVramAdress
j'ai enlever les fonctions polygones, alpha et tout cela car elle ne fonctionnant pas, je les rajoutent dès qu'elles sont réparées. (toujour ce stupide problème de fichier temporaire ) |
|
|
Posté le 27-10-2013 à 12:35 | # | Fichier joint
|
Je viens de faire des testes de rapidité entre les fonctions get_pixel et pixel_asm
Cliquez pour découvrir Cliquez pour recouvrir void CL_Pixel(int x, [purple]int[/purple] y, unsigned short color)
{
char* VRAM = (char*)0xA8000000;
VRAM += [maroon]2[/maroon]*(y*LCD_WIDTH_PX + x);
*(VRAM++) = (color&0x0000FF00)>>8;
*(VRAM++) = (color&0x000000FF);
[b][blue]return[/blue][/b];
}
et
void pixel_asm(unsigned short x, unsigned short y, unsigned short color)
{
__asm__([gray]"mov.w .width,r1\n"[/gray] [green]// width [b]->[/b] r1[/green]
[gray]"mulu.w r1,r5\n"[/gray] [green]// width * y [b]->[/b] macl : Get the y pixel offset[/green]
[gray]"mov.l .vram,r1\n"[/gray] [green]// vram [b]->[/b] r1 : Sets the VRAM adres in r1[/green]
[gray]"sts macl,r0\n"[/gray] [green]// macl [b]->[/b] r0 : Gets macl in r0[/green]
[gray]"add r4,r0\n"[/gray] [green]// r0 + x [b]->[/b] r0 : Get the pixel offset in the VRAM[/green]
[gray]"shll r0\n"[/gray] [green]// r0 = r0 <<1 : Multiplies by two to get the short offset[/green]
[gray]"mov.w r6,@(r0,r1)\n"[/gray] [green]// *r0 = color : Sets the pixel to the deisred color[/green]
[gray]"rts\n"[/gray]
[gray]"clrmac\n"[/gray]
[gray]".align 1\n"[/gray]
[gray]".width:\n"[/gray]
[gray]" .short 384\n"[/gray]
[gray]" .align 2\n"[/gray]
[gray]".vram:\n"[/gray]
[gray]" .long -1476395008\n"[/gray]
[gray]" .align 1\n"[/gray]);
}
Je leur ai demander de replire l'écran 500 fois de couleur (marron pour le getpixel et vert pour asm)
les résultats les résultats
Fait sur des moyennes:
-sur émulateur: 16 secondes pour asm et 22s pour getpixel :aaah:
-sur prizm:38 secondes pour asm et 58 s pour getpixel :aaah: :aaah:
vous pouvez essayer chez vous si vous voulez fichier joint |
|
|
Posté le 27-10-2013 à 14:10 | #
|
Fais gaffe lorsque tu mets des codes avec des \\n , il faut rajouter un deuxième \\ pour qu'il ne disparaisse pas .
Sinon content d'apprendre que l'on constate des différences relativement importantes ! |
|
|
Posté le 27-10-2013 à 21:48 | # | Fichier joint
|
enfin la version 1.00, elle est testé et fonctionnel. Elle comprend aussi les fonctions demander par Nemhardy
Il ne me faut plus qu'écrire la doc |
|
|
Posté le 28-10-2013 à 11:23 | #
|
ce qui est bien, c'est de mettre à jour le programme, et non de poster la lib dans un commentaire |
|
|
Posté le 02-11-2013 à 16:54 | #
|
Je l'ai postée aussi sur le programme. Jai fait les deux |
|
|
Posté le 04-11-2013 à 18:04 | #
|
Au passage, le coup du "__asm__("code ASM")", ça marche aussi sur le SdK G85 ? |
|
|
Posté le 04-11-2013 à 19:35 | #
|
A voir :huh: |
|