YENO super cassette vision
-
Je pensais que le dossier des résolutions était clos mais il y a un rebondissement.
Je me suis aperçu dans eSCV que dans Nebula et KungFu Road il y avait un petit artefact graphique en bas à gauche que je ne me rapelait pas avoir vu sur la console YENO (FR).
J'ai donc testé sur la console EPOCH (JP) et c'est bien un bug d'affichage qui existait d'origine... ça voulait donc dire que les consoles japonaises et la console française n'affichent pas la même chose... j'ai donc enquêté.Non seulement elles n'ont pas la même résolution mais elle n'ont pas non plus la même origine.
Voici un petit résumé de mes dernières recherches:
- En Rouge et violet c'est la zone de la mémoire vidéo qu'affichent les deux consoles japonaises EPOCH, avec en bas à gauche en jaune l'emplacement des artefacts graphiques vus sur Nebula et KungFu Road. La résolution native est de 198x224. Rapporté à un format 4/3 les pixels sont légèrement rectangulaires.
- En bleu et en violet c'est ce qu'affiche la console française YENO, avec en haut en jaune une bande supplémentaire qui pour certains jeux contient des infos inutiles au joueur (par exemple sur Doraemon et Boulder Dash). La console affiche en plus une bande noire en bas et à droite (zone bleutée sur mon image). Rapporté en 4/3 les pixels sont très rectangulaires (l'image est donc plus tassée verticalement que les consoles JP).
- eSCV se situe quelque par entre les deux avec une résolution native de 192x222 (incluant les artéfacts en bas à gauche), avec des pixels de 1,5x1 ça devient du 288x222. Ce qui ne fait pas tout à fait un ratio de 4/3.
- En gris et en blanc c'est ce qui s'affiche nul part. Pas sûr qu'on soit encore en mémoire vidéo.
L'affichage 4/3 sur console japonaise:
L'affichage en 4/3 sur console française:
Après m'être fait des nœuds au cerveau j'ai finalement opté pour cette solution (en vert sur mon dessin):
- par défaut je choisi une résolution native de 198x216, avec des pixels de 1,5x1 ça devient 288x216, que j’agrandis enfin d'un facteur 3, cequi donne une résolution de 864x648. C'est une assez solution proche de eSCV mais j'exclue les zone en jaunes (pas jolies ou inutiles), j'ai un ratio pile poil de 4/3, les pixels font 4x3 et restent "pixel perfect" et j'ai une résolution suffisante pour mes jolis menus.
- je laisserai la possibilité de choisir entre l'affichage conseillé (le miens ^^), celui des consoles japonaises, celui de la console française ou d'afficher toute la mémoire vidéo (ça pourra toujours être utile aux développeurs).
L'affichage en 4/3 devrait donc donner ça:
Ouf!
@++ -
@maaax si tu veux que le repo soit hébergé sur https://github.com/libretro, fais-moi signe.
-
Salut @barbudreadmon
Pour faciliter la vie de Bkg2k et simplifier l'intégration à Recalbox (compilation BuildRoot) j'ai mis les sources sur Gitlab là :
https://gitlab.com/MaaaX-EmuSCV/libretro-emuscv
(c'est la v0.2 qui est dispo pour le moment, je bosse sur la v0.3)Je ne sais pas si mon projet est suffisamment avancé pour l'intégrer au repo Libretro mais oui je veux bien.
-
@maaax dès que j'ai le temps, je regarde et teste ton code source pour voir si je peux te donner des conseils
-
Beau travail en tout cas Hate de voir la version finale
-
@Bkg2k
Merci ^^
Y a encore du boulot@barbudreadmon
Pour le moment mon code n'est pas très propre. Il y a pas mal de choses qui sont commentées pour pouvoir travailler dessus plus tard.J'essaye déjà de comprendre comment fonctionne Libretro. La documentation est tout petit un peu juste et je m'inspire donc de ce que je trouve dans d'autres cores.
A force de tâtonner j'ai globalement compris le fonctionnement mais il reste encore quelques points à élucider:
-
A quoi sert le FRAME TIME CALLBACK ? Pour le moment je ne l'utilise pas. Est-ce que ça peut m'être utile pour quelque chose ?
-
Pour le cas où on change de résolution ou de nombre de frames par secondes (différents selon les consoles), comment demander au frontend de relancer le core à zéro? ou est-ce qu'il y a une méthode qui permet de changer la résolution ou le nombre de frames par seconde à la volée?
-
-
@maaax said in YENO super cassette vision:
A quoi sert le FRAME TIME CALLBACK ? Pour le moment je ne l'utilise pas. Est-ce que ça peut m'être utile pour quelque chose ?
çà m'étonnerait que çà te serve à quelque chose, en tout cas çà ne me sert dans aucun core, il me semble que c'est utilisé par certains core pour calculer si l'émulation est "en retard" et éventuellement déclencher des actions de frameskip en fonction du résultat.
@maaax said in YENO super cassette vision:
Pour le cas où on change de résolution ou de nombre de frames par secondes (différents selon les consoles), comment demander au frontend de relancer le core à zéro? ou est-ce qu'il y a une méthode qui permet de changer la résolution ou le nombre de frames par seconde à la volée?
Vaste sujet, alors :
- si possible, il est toujours conseillé de donner les bonnes valeurs dès le lancement (
retro_get_system_av_info
est appelé aprèsretro_load_game
, donc théoriquement tu peux déjà savoir des choses sur le jeu que tu lances) - si ce n'est pas possible (exemple: la résolution - variable - de
sfiii2
arcade est déterminé directement par la borne d'arcade après lecture de son eeprom, donc bien après queretro_get_system_av_info
ait été appelé), voilà un exemple de code pour changer la résolution à la volée : https://github.com/libretro/FBNeo/blob/6edecd4c13fe9c86f9ffc80ebada5f0034991624/src/burner/libretro/libretro.cpp#L420-L428 - si vraiment tu dois changer aussi la fréquence de rafraîchissement à la volée (attention, c'est très déconseillé car c'est une opération coûteuse niveau réinitialisation), remplace
RETRO_ENVIRONMENT_SET_GEOMETRY
parRETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO
dans mon exemple de code.
- si possible, il est toujours conseillé de donner les bonnes valeurs dès le lancement (
-
@barbudreadmon Un très grand merci. Je vais essayer tout ça.
-
A effectivement y a du taff en tout cas encore merci pour ton temps......
-
@yannick49 Merci.
Ca avance. L'intégration des bibliothèques est faites pour Windows et Linux. Le chargement de fichiers binaires fonctionne (BIOS et ROMs non compressés). Le chargement d'images PNG (cartouche, manuel, etc.) et de fichiers binaires (ROMs) depuis une archive ZIP fonctionne aussi.
Je bute encore sur l'intégration de certaines bibliothèques sur Mac. C'est un problème récurent quand on utilise des outils libres à la place des outils Apple... mais je vais finir par trouver
Je pourrai ensuite pousser la version 0.3 sur Gitlab.Après je testerai les changements de config à la volée (résolution et fréquence) comme m'a indiqué Babudreadmon (encore merci pour les infos). Ca servira à appliquer les changement d'options sans devoir redémarrer le jeu.
Ca devrait être assez rapide à faire et ça fera l'objet d'une v0.4.Et après je pourrai enfin continuer à travailler
sur l'émulateur lui-même. Il y a pas mal de choses à reécrire pour que ça tourne sur autre chose que Windows.Soyez patients. Ca va venir.
En attendant, quelqu'un aurait-il un scan du manuel de BASIC Nyumon? (oui je sais il fait presque une centaine de pages tout en Japonais)
Ca m'aiderait pour une future étape de mon projet.@++
MaaaX^^ -
@maaax said in YENO super cassette vision:
manuel de BASIC Nyumon
atfff désolé j'ai pas ça du tout....
-
Et voilà! Bibliothèques intégrées aussi sur Mac.
La cartouche rouge est une image PNG avec de la transparence lue depuis l'archive ZIP qui contient la ROM du jeu ASTRO WARS.Plus qu'à pousser la v0.03 sur Gitlab.
Je vais pouvoir m'occuper du changement de résolution et de fréquence d'affichage.A suivre...
-
Au top!!!
-
@yannick49 Merci ^^
-
v0.03 poussée sur Gitlab
Pour la prochaine v0.04 j'ai commencé à tester l'application des options à la volée (changement de résolution et/ou de fréquence).
Au passage j'ai ajouté le bouton POWER juste pour le fun. -
@maaax Attention on va finir par vouloir t'embaucher chez Recalbox
Bon c'est payé pas loin de 0% du smic, mais notre grand guru nous a augmenté de 300% cette année alors on se plaint pas! Des fois, tu te fais un peu gueuler ou vomir dessus par des gars qui pensent que tout leur est du, mais un p'tit coup de nettoyage et ça passe ^^'
Parfois aussi, on se fait poursuivre dans la rue par des fans en furie qui veulent te faire des bisous partout (hein @zouiguipopo!). Dommage que ça soit pas des jolies filles, mais on fait avec, même si le rouge à lèvre ça colle un peu sur les vêtements.Allez, je t'ai assez vendu de rêve! Tu signes quand?
-
@bkg2k Ah ah ah! Je signe quand tu veux mais je te préviens qu'entre mon boulot, ma maison, mes voitures et tout ça, ça me laisse pas beaucoup de temps mais on en est tous là et pour 0% du smic on fait ce qu'on peut
-
oui il mérite son salaire!!!
-
Bonsoir,
Le support du changement de résolution et du nombre de frames par seconde à chaud est ajouté, ainsi que le support du bouton power (off).
Le code de la v0.04 est poussé sur Gitlab.
@barbudreadmon encore merci pour ton aide sur Libretro. Grace à toi j'ai compris qu'il y a plus d'aide dans les commentaires du fichier header de Libretro que dans la documentation
Je peux enfin m'atteler au cœur du sujet et le plus intéressant: le portage de l'émulateur. Yes!
A suivre...
@++
MaaaX ^^ -
@maaax pas de soucis, tiens moi au courant si t'as besoin d'autres infos