| CPC Rulez https://cpcrulez.fr/forum/ |
|
| Optimisation de code https://cpcrulez.fr/forum/viewtopic.php?f=4&t=4255 |
Page 1 sur 1 |
| Auteur : | Demoniak [ 04 Juil 2010, 08:44 ] |
| Sujet du message : | Optimisation de code |
Hop je me lance Voici un petit bout de code : Code : Debut: DB #DD INC H ; Rotation dans la map LD BC,TabStruct BclAffiche: LD A,(BC) LD L,A INC BC LD A,(BC) DEC A ; (HL = #101 en fin de table) JR Z,Debut LD H,A ; Adresse INC BC LD A,(BC) LD E,A INC BC LD A,(BC) INC BC LD D,A LD A,E DB #DD ADD A,H ; maxp + rotation AND #7F RLA RR D ; mapy << 7 == ( DE ) >> 1 RRA LD E,A LD A,(DE) ; Lecture couleur point LD (HL),A ; Ecriture en mémoire écran SET 3,H LD (HL),A SET 4,H LD (HL),A RES 3,H LD (HL),A JR BclAffiche Qui me permet d'afficher une planète en rotation. Au début du programme, BC pointe sur un tableau de structures qui contient: - une adresse vidéo - une adresse vers le bitmap de la planète donc 4 octets pour afficher un point à l'écran Je ne peux pas utiliser la pile vu que j'ai besoin des interruptions Si vous avez des idées d'optimisations, dites le moi |
|
| Auteur : | Fredouille [ 04 Juil 2010, 15:38 ] |
| Sujet du message : | Re: Optimisation de code |
Heu... Tu cherches quoi comme optimisation ? Vitesse ou taille ? |
|
| Auteur : | Demoniak [ 04 Juil 2010, 15:55 ] |
| Sujet du message : | Re: Optimisation de code |
vitesse |
|
| Auteur : | Fredouille [ 04 Juil 2010, 18:21 ] |
| Sujet du message : | Re: Optimisation de code |
A vu de nez d'un néophyte en assembleur Z80 (en fait je commence à connaître quelques instructions en essayant d'optimiser leur émulation), une optimisation ne semble pas aisée car il semble que chacune de tes instructions prennent peu de cycles. Aussi, j'ai l'impression qu'il faut vraiment être imprégné de l'algo et de sa finalité pour savoir s'il n'y a pas plus simple... |
|
| Auteur : | Demoniak [ 04 Juil 2010, 20:57 ] |
| Sujet du message : | Re: Optimisation de code |
La version avec utilisation de la pile : Code : Debut: LD SP,TabStruct INC C ; Rotation BclAffiche: POP HL ; HL = adresse mémoire écran DEC H ; (HL = #101 en fin de table) JR Z,Debut POP DE ; E = mapx, D = mapy LD A,E ADD A,C ; maxp + rotation AND B ;B = #7F RLA RR D ; mapy << 7 == ( DE ) >> 1 RRA LD E,A LD A,(DE) ; Lecture couleur point LD (HL),A ; Ecriture en mémoire écran SET 3,H LD (HL),A SET 4,H LD (HL),A RES 3,H LD (HL),A JR BclAffiche Et la version "C" : Code : int yc = 0; // Position dans le bitmap pour rotation do { for ( int i = 0; TabMap[ i ].adr != 0x101; i++) { d = ( ( TabMap[ i ].MapX + yc ) & 0x7F ) + ( TabMap[ i ].MapY << 7 ); memCpc[ TabMap[ i ].adr ] = Bitmap[ d ]; } yc++; } while( ! fin ); Pour info le bitmap fait 128x64 pixels |
|
| Auteur : | Fredouille [ 04 Juil 2010, 21:58 ] |
| Sujet du message : | Re: Optimisation de code |
Ah oui, en C, c'est déjà plus lisible |
|
| Auteur : | BDCIron [ 05 Juil 2010, 10:51 ] |
| Sujet du message : | Re: Optimisation de code |
Moi je ne m'y preendrais pas comme cela du tout. Je genererai du code directement a partir de courbe et transformerai celle-ci directement en incrementations... En mémoire j'aurai pour le bitmap: 1 pixel=1octet. Une des courbes du globe (par exemple celle du milieuà ce résumerait en des incrémentations de pointeur sur le GFX... optimisable dans certains cas par des addition au lieu des INC... Ensuite suffit aussi de bien placer le gfx en RAM afin d'optimiser les inc etc... Donc juste du mapping. Plus rapide mais prend plus de place en RAM. |
|
| Auteur : | Fredouille [ 05 Juil 2010, 12:20 ] |
| Sujet du message : | Re: Optimisation de code |
Iron, c'est quoi ton histoire de courbes ? |
|
| Page 1 sur 1 | Le fuseau horaire est UTC+1 heure |
| Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |
|