YENO super cassette vision
-
Salut,
Merci Yannick49. Ca fait plaisir
Je fais tout mon possible pour ça sorte au plus tôt avec la meilleure qualité possible avec le peu de temps que je peux y consacrer.Petit point du soir:
- Après moultes essais divers et tentatives variées, je vais partir sur une résolution finale de 3x la résolution de la console, à savoir 864x666 en 16 millions de couleurs (la résolution native de la console étant de 192x222 avec des pixels rectangulaires de 1,5x1, un ratio de 288/222=1,3 et une palette de 16 couleurs). Pour l'émulation ça ne changera strictement rien mais ça me permettra à terme d'afficher de jolis menus (visuel des différents modèles de la console) et d'intégrer un affichage des cartouches (résumé des commandes), des overlays/grilles pour le clavier, des boîtes et des manuels et que tout ça reste lisible et pas avoir un gros pâté de pixels moches... genre ça (sauf que l'image de l'émulateur sera pas lissée comme sur ma maquette pour rester en "pixel perfect"):
-
La bibliothèque SDL2 est intégrée pour gérer l'affichage ainsi que l'extension SDL2_gfx pour avoir quelques fonctions de dessin sous la main:
-
Les bibliothèques libZip/zLib et libPng sont intégrées et en cours de test pour pouvoir lire les archives ZIP (les roms pourront être lues directement ou depuis un fichier ZIP) et afficher des images PNG (les fichiers ZIP pourront aussi contenir les images des boîtes, des cartouches, des manuels, etc.).
-
Toutes les bibliothèques utilisées sont embarquées directement dans le core, à l'exception notable de SDL2, afin de limiter au maximum les dépendances à des bibliothèques externes et ainsi faciliter le travail d'intégration à Recalbox.
A suivre...
@++
MaaaX ^^PS: Merci Fred pour la photo de la pub d'avant sortie de la console. On y voit une rare image du jeu Black Hole, un des 2 jeux jamais sortis, ainsi que des images de plusieurs prototypes qui eux sont bien sortis: Wheely Racer, Lupin III, Nebula, etc.
- Après moultes essais divers et tentatives variées, je vais partir sur une résolution finale de 3x la résolution de la console, à savoir 864x666 en 16 millions de couleurs (la résolution native de la console étant de 192x222 avec des pixels rectangulaires de 1,5x1, un ratio de 288/222=1,3 et une palette de 16 couleurs). Pour l'émulation ça ne changera strictement rien mais ça me permettra à terme d'afficher de jolis menus (visuel des différents modèles de la console) et d'intégrer un affichage des cartouches (résumé des commandes), des overlays/grilles pour le clavier, des boîtes et des manuels et que tout ça reste lisible et pas avoir un gros pâté de pixels moches... genre ça (sauf que l'image de l'émulateur sera pas lissée comme sur ma maquette pour rester en "pixel perfect"):
-
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 ^^