Actualité
daedaluskz0

A la recherche du bug SSB perdu ...

par
Source: 0635425

StrmnNrmn nous en apprend plus sur la façon dont il a fait fonctionner Super Smash Bros : quel était donc ce bug ?

Lorsque StrmnNrmn nous annonçait avoir réussit à résoudre les graphismes qui ne s'affichaient pas comme il se devait, il nous a aussi laissé entendre qu'il allait nous donner plus de détails sur le cas de Super Smash Bros.

Au tout début de ses découvertes, StrmnNrmn a remarqué que Super Smash Bros (SSB) fonctionnait réellement bien sans dynarec, mais lorsque celui-ci était activé le jeu connaissait des ralentissements notables.

StrmnNrmn programme depuis près de six ans et selon lui, la programmation de dynarec est extrêmement difficile puisque le code est généré sur le champ. Vous ne pouvez pas résoudre vos soucis facilement puisque le fonctionnement du code généré par le dynarec n’est pas aisément identifiable. Pour en faire une analogie, c'est comme si vous étiez aveugle sur le coup.

Il a déjà du réparé un dynarec de 500 millions de lignes de codes sans savoir où était situé le problème, et sans même connaître les liens entre les lignes de programmation. Il nous partage quelqu’un de ses trucs pour aller identifiez la source des problèmes liés au dynarec.

Avec toutes ses années d'expérience, la première opération qu’il tente est de faire fonctionner le jeu sur PC, et ainsi travailler avec des solutions beaucoup plus rapides sur ordinateur, comme Visual Studio. Le système de debug est environ 10 fois plus rapide sur PC que sur PSP et il n'a jamais réussit à faire fonctionner celui ci sur PSP.

Mais ce n’est pas tous les jeux qui peuvent être résolu de cette façon puisque le processus de génération du code est différent sur PSP que sur PC. La console portable utilise le générateur MIPS et votre PC se sert de x86. S’il réussit à créer le même problème sur PC et PSP, il pourra vérifier les différences de codes des sections qui sont similaires entre les deux plateformes.

Heureusement, ce genre de problèmes est présent autant sur PSP et sur PC. La prochaine étape est de réaliser pourquoi le jeu agit différemment avec dynarec. En partant du principe que l’émulateur avec dynarec sans bugs donne exactement le même résultat que sans dynarec. Il a donc comparé les deux logs avec et sans dynarec pour déterminer ce qui clochait.

Malheureusement, tous n’est pas rose, cette technique a des limites parce que la synchronisation n’est pas parfaite avec ou sans dynarec. Le problème peut apparaître à un endroit plus loin que ce qui était prévu.
Il a su créer un programme pour séparer la simulation du dynarec en plusieurs morceaux pour ainsi crée une parfaite synchronisation toujours dans le but de réparer plus rapidement le processus erroné.

Daedalus a quatre modes :

1 : Dynarec et l'exécution en fragment
2 : Dynarec et la simulation en fragment, mais avec un arrêt imprécis dans le champ de code
3 : Dynarec et la simulation de fragment et avec un arrêt précis dans le champ de code
4 : Le noyau du dynarec, qui laisse sa place à l'interprétation

Ce programme permet de se convaincre que la simulation régit de la même façon que l’exécution du dynarec. De ce même fait, l’exécution a les mêmes propriétés que tout le noyau du dynarec. Il permet donc de faire le pont entre ses deux modes qui serait pratiquement impossible de comparer sans ce programme.

Rendez-vous demain sur PSPGen pour la suite : comment StrmnNrmn a t’il bien pu trouver le bug en utilisant cette technique ? Vous le verrez demain !

Source : Blog de StrmnNrmn

Retrouvez les précédents articles sur ce sujet :
- DAEDALUS : un point sur Super Smash Bros
- DAEDALUS : un petit point sur l'avancée de la R12.
- [WIP] Daedalus : le dynarec actif avec Goldeneye

Commentez cette news en cliquant ICI

Mots-clés

Commenter 8 commentaires

Anonymous
Ou comment vivre une passionnante aventure à la santa barbara tout en jouant à la psp.
Cette info me fait pensé à une chose :
Je te dois 5 euros?
Euh désolé, je mange une pomme.
Bref, serait il possible de se passé de ce genre d'information qui d'une est comprehensible par 5% des lecteurs, et de deux sans grand interet il faut bien l'avouer, même si mon respect est immense envers les programmmateur ainsi que pspgen.
Cordialement
Signaler Citer
lalrobin
crop a écrit:Euh désolé, je mange une pomme.
Bref, serait il possible de se passé de ce genre d'information qui d'une est comprehensible par 5% des lecteurs, et de deux sans grand interet il faut bien l'avouer, même si mon respect est immense envers les programmmateur ainsi que pspgen.
Cordialement

Et pourquoi les 5% n'aurait pas le droit à l'info ? Il y a d'autre news qui ne m'interesse pas et je comprends que ca interesse d'autre.

Pour revenir au sujet, je comprends les difficulté de StrmnNrmn. S'il arrive à mettre le doigt sur le probleme. Il y aura une sacré amélioration de l'emulateur pour PSP.
En tout cas StrmnNrmn à un sacré courage de se lancer dedans. C'est vraiment tres dur ce qu'il fait.
Signaler Citer
Anonymous
Parce que je vois pas non plus en quoi ca interesserait les 5% précedement cité sachant qu'il n'y a aucune adresse pour pouvoir eventuellement l'aider (à part la source mais il a pas l'air de vouloir être aidé).
Ce que je veux dire, c'est que concretement, cette info t'a apporté quoi? RIEN
Ou alors si, à remplir du vide ;)
Et pour ton information, je n'ai aucunement remis en question vos aptitudes a comprendre, bien au contraire, mais tu sais dans la ligné, je pourrais te dire qu'être éboueurs, c'est dur aussi, et je n'ai jusqu'a present vu aucun papier sur des joueurs de psp éboueurs.
Trève de plaisanterie, juste pour dire qu'a preuve du contraire, quand tu résouds un problème, ben tu avance, merci en tout cas de nous rappeller ces lignes de conduite à tenir à nous povres bovidés overdosés à la psp ;)
Si c'est moins pire qu'avant, c'est plus mieux bien
Signaler Citer
Avatar de l’utilisateur
Piger
Ce que je veux dire, c'est que concretement, cette info t'a apporté quoi? RIEN

Pour l'information... tu connais pas ?
Tout le monde a le droit de s'informer sur ce qui se passe autour de nous (enfin ça dépend des pays...)
C'est comme si tu disait que ça ne servirait a rien de regarder les infos le soir par exemple de savoir que intel a été tué par 16 coups de couteaux la nuit derniere...
Signaler Citer