PDA

Voir la version complète : De l'interet du devkit...


DJP
22/01/2006, 12h09
Ce petit message a pour but de mettre en avant quelquechose (que beaucoup ont déjà remarqué...) :

L'importance du choix de son devkit.

Il y a plusieurs moyens de faire un programme pour GBA (en C) :

*lib Direct GBA+ SDK ARM
*Ham
*Devkit Pro

Et bien contrairement a ce que l'on pourrait croire, ils sont LOIN d'être égaux niveaux performance. Une simple série de Plot en mode 3 suffit pour s'en rendre compte. Ham c'est lent :p.
Après avoir cherché une explication a cette lenteur j'en suis venu à la conclusion que la fonction plot ne pouvant pas être écrite de 100 façons différent, le responsable doit être le compilateur, bien moins performant que celui de Devkit Pro !

Votre avis sur la question ?

Mollusk
22/01/2006, 12h10
faut dire aussi que ham utilise une vieille version du compilo, alors que celui de devkitpro est actualisé régulièrement

Brunni
22/01/2006, 12h13
En tous cas le ARM SDT semble beaucoup plus rapide au vu des benchmarks mais nagamé n'avait pas réussi à utiliser l'IWRAM donc au final ça n'améliorait pas grand chose...
DevKitPro j'ai pas essayé, je suis trop Windows-ien, j'ai tout de suite pris la simplicité (HAM, mais sans HAMLib) et je le garde, mais je le changerai peut-être si jamais je n'arrive pas à m'en sortir avec les perfs ^^

Didou
22/01/2006, 12h45
Salut,

Ben moi je reste fidèle au devkit Pro, tant pour la GBA que la NDS et je n'ai jamais eu à me plaindre de vitesse...
En plus, il est dispo sous Linux et sous Ouidoze, donc c'est 'achement pratique. Et encore en plus, du GCC, c'est un label de qualité :) !!!

-- Didou

Nesgba
22/01/2006, 13h10
En tous cas le ARM SDT semble beaucoup plus rapide au vu des benchmarks mais nagamé n'avait pas réussi à utiliser l'IWRAM donc au final ça n'améliorait pas grand chose...
DevKitPro j'ai pas essayé, je suis trop Windows-ien, j'ai tout de suite pris la simplicité (HAM, mais sans HAMLib) et je le garde, mais je le changerai peut-être si jamais je n'arrive pas à m'en sortir avec les perfs ^^

brunni tu peut porter ton code tel quel de l'IDE ham a devkit pro sans aucune modification pratiquement ;)

apres le choix de l'IDE t'appartient, perso je suis sous notepad2 pour le moment mais je pense passer sous dev-c++ sous peu.
si tu veut un projet vide pour tester, fait moi signe ;)

phantom le compillo est le meme sous ham et devkitpro c'est gcc, sauf que l'un est mis a jour et pas l'autre ;).
concernant les plot il faut matter les optimisation que gcc fait dessu et si possible le faire en asm sinon si c'est en c il vaut mieu mettre des decalages binaires que des multiplications si y'a pas trop de decalages successif a faire.

gba mode 3:
BufferVideoActuel[((y<<8)-(y<<4))+x] = couleur ;
est plus optimisé que:
BufferVideoActuel[(y*240)+x] = couleur;

gba mode 5:
BufferVideoActuel[((y<<7)+(y<<5))+x] = couleur ;
est plus optimisé que:
BufferVideoActuel[(y*160)+x] = couleur;

sur nds c'est encore plus simple, 256 ca tombe pile :)
BufferVideoActuel[(y<<8)+x] = couleur ;
est plus optimisé que:
BufferVideoActuel[(y*256)+x] = couleur;

edit: j'ai aussi remarqué que le code sous devkit pro est sensiblement plus petit que celui compillé sous ham; pourtant j'ai giclé tout ce qui est inutile (lib, krawall, definitions inutiles ...)
c'est du a quoi ? visualham rajoute des marqueurs dans le code ? gcc genere vraiment tant que ca de code en + ?

DJP
22/01/2006, 13h37
http://www.tekasworld.fr.st/howto/gba_hamfree.html ;p

Nesgba
22/01/2006, 13h55
http://www.tekasworld.fr.st/howto/gba_hamfree.html ;p

si tu veut je t'envoi un projet vide de giclage des truc inutiles de visualham y'en a un tas en + que ce qu'avai montré teka en fait :D (d'ailleur merci a lui)

toutes les referances a la lib + toute referance a des lib exterieurs et a la gestion de krawall ... le big bordel, j'avai passé 2 jours a nettoyer v_v

DJP
22/01/2006, 14h02
Non non, c'est bon pour moi :D
Je suis sous prog notepad 2 et Devkit Pro maintenant donc... (et puis je préfère, c'est commun DS/GBA :p)

Japi
22/01/2006, 14h56
si quelqu'un commence à faire un projet vide pour GBA sous dev-c++, je suis preneur, j'adore cet environnement.

Y a t-il moyen de mettre à jour Vham avec la derniere version de GCC.

Perso, j'ai pas de soucis de vitesse avec Vham pour le moment, j'en avait au debut, mais en utilisant des optimisations , tout est reglé.

Pour en avoir discuté avec Phantom, je suis etonné que la différence soit si grande entre une compilation entre GCC sur Vham et DevKitPro.

Nesgba
22/01/2006, 15h01
si quelqu'un commence à faire un projet vide pour GBA sous dev-c++, je suis preneur, j'adore cet environnement.

Y a t-il moyen de mettre à jour Vham avec la derniere version de GCC.

Perso, j'ai pas de soucis de vitesse avec Vham pour le moment, j'en avait au debut, mais en utilisant des optimisations , tout est reglé.

Pour en avoir discuté avec Phantom, je suis etonné que la différence soit si grande entre une compilation entre GCC sur Vham et DevKitPro.

non la differance n'est pas super flagrante pourtant j'utilise des fonction tres poussées et j'ai pas remarqué de diferances notable Oo

vous avez testé avec quel code ? je vais faire des essai on va voir si la differance est vraiment nottable.

a dans 10 minutes :D (le temp de coder un ptit truc :p)

DJP
22/01/2006, 15h21
non la differance n'est pas super flagrante pourtant j'utilise des fonction tres poussées et j'ai pas remarqué de diferances notable Oo

vous avez testé avec quel code ? je vais faire des essai on va voir si la differance est vraiment nottable.

a dans 10 minutes :D (le temp de coder un ptit truc :p)

Bah si c'est pas le compilo, je ne veux même pas imaginer comment est ecrite la fonction plot de HAM :blink:

Nesgba
22/01/2006, 15h27
Phantom tu a carrement raison !! pour le meme code le rendu avec Devkit pro est largement superieur !!! c'est allucinant la differance !!
brunni tu sais ce qui te reste a faire :D

merci phantom pour ce topic judicieux j'aurai jamais fait de tests sans ca :notworthy :thumb_yel

voici des tests avec rotation en soft et plottage pixel par pixel en IWRAM bien sur.
mattez plutot le rendu pour le meme code:
RotationM5_VisualHam.gba (http://s150331774.onlinehome.fr/GBADivers/RotationM5_VisualHam.gba)
RotationM5_DevKitPro.gba (http://s150331774.onlinehome.fr/GBADivers/RotationM5_DevKitPro.gba)

DJP
22/01/2006, 15h47
ça fait plaisir de pas être à la ramasse :p

Japi
22/01/2006, 15h58
pitain, faut que je reagisse merde, allez, bouge toi les fesses Japi... ^^

N'empeche, même si t'arrives à faire tourner ton code impec avec devkitpro, Phantom, je te promet qu'il y a moyen d'optimiser grave pour aller plus vite et que ça rame pas même sous Ham.

EDIT, perso sous VBA, j'ai aps de diff de vitesse entre tes deux .gba NES chez moi

faut que je test avec la gba mais je l'ai pas sous la main.

DJP
22/01/2006, 16h02
Japi ce que tu appelles optimiser c'est du bidouillage, pas de l'optimisation :p

Japi
22/01/2006, 16h04
la GBA c'est le paradis de la bidouille d'optimisation et franchement, c'est pas de la bidouille, c'est des astuces couramment utilisées en prog graphique que je propose là mais bon, si tu arrives à faire ce que tu veux, c'est le principal.

Nesgba
22/01/2006, 16h07
la GBA c'est le paradis de la bidouille d'optimisation et franchement, c'est pas de la bidouille, c'est des astuces couramment utilisées en prog graphique que je propose là mais bon, si tu arrives à faire ce que tu veux, c'est le principal.

tu bidouille quoi ? fait nous profiter on est toujours en soif d'optimisation par ici :devil:
faudrai ouvrir un topic special routines d'affichage ou dans le style :p

Japi
22/01/2006, 16h12
oui enfin, là, c'est pas de l'optimisation dans ce sens. C'est juste que au lieu de tout plotter, des fois, on peut s'arranger pour mettre certains trucs en sprite et aussi passer certains trucs dans le fond et redessiner pil ce qu'on a changer plutôt que de tout recharger ou des trucs dans le style.

J'ai pas fini de compter la diff de pix qu'il y avait entre tout redessiner et faire ça mais je suis sur que c'est Enorme.

Evidemment, si le code de phantom tourne impec sans ça, faut pas se fatiguer.
Perso, j'avais fait un menu de selection avec pleins de parametre à changer tout en plot. Au debut je reaffichais tout, c'etait pas beau, ça clippait
J'ai passé une soirée à mettre en place des astuces comme ça, et apres, c'etait nikel mais evidemment, ptet qu'en compilant avec un truc mieux, ça aurait été parfait direct ou alors en optimisant mes fonctions de copie en memorie video.

Nesgba
22/01/2006, 16h27
oui enfin, là, c'est pas de l'optimisation dans ce sens. C'est juste que au lieu de tout plotter, des fois, on peut s'arranger pour mettre certains trucs en sprite et aussi passer certains trucs dans le fond et redessiner pil ce qu'on a changer plutôt que de tout recharger ou des trucs dans le style.

J'ai pas fini de compter la diff de pix qu'il y avait entre tout redessiner et faire ça mais je suis sur que c'est Enorme.

Evidemment, si le code de phantom tourne impec sans ça, faut pas se fatiguer.
Perso, j'avais fait un menu de selection avec pleins de parametre à changer tout en plot. Au debut je reaffichais tout, c'etait pas beau, ça clippait
J'ai passé une soirée à mettre en place des astuces comme ça, et apres, c'etait nikel mais evidemment, ptet qu'en compilant avec un truc mieux, ça aurait été parfait direct ou alors en optimisant mes fonctions de copie en memorie video.
ah oui c'est sur que que l'on va pas utiliser du plottage 1 par 1 sur un jeu faut pas abuser non plus :D
la on teste juste quel environnement de dev optimise le mieu le code que lui lui envoie en c->asm
si tu sais que gcc mis a jour optimise mieu que gcc ancien sur le plotage 1 par 1 il en sera de meme si tu y va 8 par 8 t'imagine ce que tu gagne ! meme avec quelques cycles plus rapide la differance est visible :)
ps: fait peter une demo de ton jeu japi, ca fait longtemp que je veut tester un rpg amateur :D

Brunni
22/01/2006, 16h51
Phantom tu a carrement raison !! pour le meme code le rendu avec Devkit pro est largement superieur !!! c'est allucinant la differance !!
brunni tu sais ce qui te reste a faire :D

merci phantom pour ce topic judicieux j'aurai jamais fait de tests sans ca :notworthy :thumb_yel

voici des tests avec rotation en soft et plottage pixel par pixel en IWRAM bien sur.
mattez plutot le rendu pour le meme code:
RotationM5_VisualHam.gba (http://s150331774.onlinehome.fr/GBADivers/RotationM5_VisualHam.gba)
RotationM5_DevKitPro.gba (http://s150331774.onlinehome.fr/GBADivers/RotationM5_DevKitPro.gba)
Hmmm... J'ai testé les deux et chronométré le temps qu'il fallait pour faire un tour, et sur GBA j'ai aucune différence entre les deux et sur PC avec VBA la démo avec VisualHAM est clairement plus rapide... c'est bizarre quand même...

Japi
22/01/2006, 17h00
idem chez moi, vitesse identique.

Par contre, pour la rom de Phantom, c'est flagrant sous VBA (plotting).

DJP
22/01/2006, 17h08
http://djpweb.info/Sudoku%20micro/demo_dkp.gba
http://djpweb.info/Sudoku%20micro/demo_ham.gba

Je vous laisse comparer (la rom dkp est plus complete que la ham, plus de plot)
Merci de ne pas télécharger si pas concerné par la discution, je suis très limité en débit par mois sur ce site.

Nesgba
22/01/2006, 17h14
idem chez moi, vitesse identique.

Par contre, pour la rom de Phantom, c'est flagrant sous VBA (plotting).

zarbi ca, moi j'ai une reele differance entre les deux je vais faire d'autres tests :ph34r:

Brunni
22/01/2006, 17h17
Phantom> Heu une différence pareille c'est pas possible, tu utilises la fonction de plot de HAMLib non? Pour comparer il faudrait EXACTEMENT le même code, 1 avec VisualHAM sans HAMLib et l'autre avec DevKitPro...

Mollusk
22/01/2006, 17h21
ouais, hamlib les fonctions sont... euh... bah elles sont pas tops, quoi...

Nesgba
22/01/2006, 17h42
ouais, hamlib les fonctions sont... euh... bah elles sont pas tops, quoi...
oui c'est une lib quoi.:whst:
me/ se sauve en voyant yodajr et mollusk a distance

faut reconaitre que mol_lib est largement plus optimisé que hamlib ;)

Mollusk
22/01/2006, 17h53
bah t'as testé mollib avant de dire ca ? (si ce n'est que perso, j'ai testé un paquet de fonction, un coup celle que je faisais, un coup celle de ham, pour vérifier qu'il y avait bien un gain de vitesse :whst:

DJP
22/01/2006, 18h06
bah là de toutes façon je suis avec libgba, mais c'est plus des macro qu'une vraie lib...

Japi
22/01/2006, 18h08
ouais, donc au final, c'est bon, Vham est pas si pourri que ça, c'est plutot la librairie qui va avec (au pire, tu colle une nouvelle fonction juste pour le plotting avec une copie en ASM).

De toute façon, faudrait quand même que je change d'IDE parce que si pour DS Devkitpro est mieux...

Mollusk
22/01/2006, 18h10
tu peux meme utiliser vham pour compiler pour DS, tu sais...

Ham, c'était :
Hamlib pour la lib (no comment)
VHam pour l'IDE
GCC pour le compilo (non mis à jour)

J'ai voulu mettre vham dans palib, j'ai demandé, c'est pas trop compliqué à modifier (quelques fichiers .ini), mais quand j'ai voulu compiler ca m'a fait make pas reconnu (pas logique...)

Nesgba
22/01/2006, 19h03
bah t'as testé mollib avant de dire ca ? (si ce n'est que perso, j'ai testé un paquet de fonction, un coup celle que je faisais, un coup celle de ham, pour vérifier qu'il y avait bien un gain de vitesse :whst:
j'ai decortiqué ton code a A à Z ;)
je fait quand meme des recherches pour voir si l'une de mes fonctions peut etre optimisée d'avantage, ou si il y a d'autres moyen de realiser une operation.

avant de ne pas aimer une methode il faut l'utiliser pour connaitre ses defaults. donc j'ai quand meme testé pas mal de lib gba.

surpris ? :huh:

Mollusk
22/01/2006, 19h05
bah un peu quand meme... Je sais que moi j'ai pas regardé d'autres lib, j'ai plutot essayé de voir si je trouvais plusieurs manières de faire et garder la plus efficace ou flexible (selon les besoins)...

Nesgba
22/01/2006, 19h07
bah un peu quand meme... Je sais que moi j'ai pas regardé d'autres lib, j'ai plutot essayé de voir si je trouvais plusieurs manières de faire et garder la plus efficace ou flexible (selon les besoins)...
ben c'est un peu ce que j'ai dit non ?

Mollusk
22/01/2006, 19h10
non mais je veux dire que moi j'ai pas regardé tellement ailleurs, j'avais testé que ham et puis pouf, me suis lancé et j'ai fait ca pépère dans mon coin

Yodajr
22/01/2006, 19h35
ouais, donc au final, c'est bon, Vham est pas si pourri que ça, c'est plutot la librairie qui va avec
Rhaa mais arretez avec ça, HAM est pas pourri, tout dépend de ce que tu veux faire !
A chaque fois que je lit ce genre de remarque, c'est un peu comme si vous disiez à chaque fois : "bah c'est pourri les petites roues sur les vélos, on va pas vite dans les virages avec..."
C'est pareil, si vous etes assez baleze pour faire du vélo sans avoir besoin de petites roues, tant mieux pour vous, mais captez le fait que beaucoup ont et auront tjours besoin des petites roues pour apprendre à faire du vélo bordel !
C'est surement inadapté pour ce que vous voulez faire, mais c'est pas "pourri" !

Japi
22/01/2006, 20h03
c'etait en comparaison avec l'autre et aux vues des tests effectués...

Dsl sinon, c'etait pas dans cette optique.

Mollusk
22/01/2006, 21h19
yoda, objectivement, hamlib est une lib tres lente (pour avoir un truc dans le meme genre je peux comparer...)
C'est d'ailleurs pas pour rien que Hel a été fait, et ca reprend un gros paquet de fonctions en les optimisant...

Yodajr
22/01/2006, 22h20
Un point pour toi, pour moi HAM/HEL c'est le même couscous :-'

Nesgba
23/01/2006, 00h08
Un point pour toi, pour moi HAM/HEL c'est le même couscous :-'
vous voulez faire monter un yodajr au quart de tours voici la phrase parfaite :):
"HAM c'est bidon !! " :devil:
ps: marche aussi pour un arcadia :w00t:

DJP
23/01/2006, 02h24
vous voulez faire monter un yodajr au quart de tours voici la phrase parfaite :):
"HAM c'est bidon !! " :devil:
ps: marche aussi pour un arcadia :w00t:

Tu veux dire (presque) les deux seul a avoir été au bout de leurs projets avec des resultats à la limite de la perfection ...:lol:

Yodajr
23/01/2006, 06h05
Mici ^^

Yodajr, qui touche une commission à chaque license HAM vendue :D

Brunni
23/01/2006, 09h20
Tu veux dire (presque) les deux seul a avoir été au bout de leurs projets avec des resultats à la limite de la perfection ...:lol:
Lol bien dit :lol: