EPOCH Cassette Vision
-
@maaax Apparemment mes roms ne fonctionnent plus en .zip ou .7z, décompressé ça remarche, il doit y avoir un petit bug de configuration...
-
Merci pour l'info. Je vais faire remonter à l'équipe parceque les formats zippés sont gérés automatiquement par libretro. C'est transparent pour les émulateurs.
Je te tiens au courant. -
@maaax Ok merci
-
Bonsoir @Secamfr,
D'après les tests effectués ça serait l'extraction automatique du frontend Retroarch de la v8.0 qui ne fait pas le job, du coup le core EmuSCV ne trouve pas la ROM car soit elle n'a pas été extraite du tout soit Retroarch ne lui envoie pas le bon chemin pour y accéder.
J'ai fait remonter l'info.@++
MaaaX ^^ (aka EPOCH84) -
@maaax Ok merci, plus qu'a attendre un fix
-
Bonjour.
Voici quelques news du projet d'émulateur pour la console EPOCH Cassette Vision.
Pour ceux qui ne la connaîtraient pas je vous fais une petite présentation rapide de cette console assez inhabituelle d'un point de vue technique:
-
La Cassette Vision était fabriquée et commercialisée par la société japonaise EPOCH. Développée à partir de 1978, elle est sortie au Japon le 30 juillet 1981 et commercialisée jusqu'en 1984, année de son remplacement par la Super Cassette Vision.
C'était la console la plus vendu au Japon avant la sortie de la Nintendo Famicom. -
La Cassette Vision ne comprenait pas de manettes mais 4 boutons, 2 leviers à 3 positions (gauche, repos, droite) et 4 contrôleurs rotatifs, le tout intégré directement sur la console ainsi qu'un pistolet optique (aka lightgun).
-
Une seconde version plus light a été commercialisée simultanément, la Cassette Vision Junior, avec toujours 4 boutons mais 1 seul levier, pas de contrôleur rotatif et pas de lightgun.
-
11 cartouches de jeux interchangeables sont sorties officiellement et 1 a été avortée.
Chaque cartouche est protégée dans un boîtier en plastique transparent incluant une notice. Les principaux contrôles de chaque jeux étant rappelés par un sticker collé sur la cartouche.
La plupart des jeux sont compatibles avec la Cassette Vision Junior (sauf les 2 joueurs et plus et ceux utilisant uniquement le lightgun).
Astro Command
Baseball
Battle Vader
Big Sports 12 (utilisable avec le lightgun)
Elevator Panic
Galaxian (rien à voir avec la version de Namco)
Kikori no Yosaku
Monster Block
Monster Mansion (clone de Donkey Kong)
New Baseball
PakPak Monster (clone de Pac-Man)
Grand Champion (jamais sorti)
-
Une première particularité technique est que le processeur est dans la cartouche, la console ne servant que pour les contrôleurs et la sortie vidéo. Les ROMs était donc inscrites directement dans le processeur et chaque fois qu'on change de jeu, on change de processeur.
Heureusement Monsieur OGUCHI le développeur des puces participe à notre projet et est d'une aide indispensable pour comprendre le fonctionnement du hardware. -
Une seconde particularité, beaucoup plus technique et qui n'intéressera que les développeurs , est que le compteur des instructions est sur 11 bits et n'est pas linéaire. C'est un compteur polynomial absolument impossible à suivre pour le commun des mortels sans une abaque à côté.
-
3ème bizarrerie: les instructions du processeur sont sur 12 bits et les données sur 7 bits avec une possibilité de transfert par bloc de 28bits.
-
4ème, dernière étrangeté et pas des moindres: la console est capable d'afficher peu de pixels mais par contre elle est capable d'afficher des pixels non-carrés. En clair les "pixels" peuvent avoir des côtés en diagonale. Oui oui c'est possible.
Vous comprenez pourquoi Monsieur OGUCHI a d'ailleurs obtenu un prix chez NEC, son employeur de l'époque pour avoir développé cette famille de puce (uPD774x, uPD777x, uPD778x et uPD779x).
Ouf!
Les dernières: nouvelles du front maintenant:- Le projet et l'émulateur s'appellent tout simplement EmuCV pour "Emulator Cassette Vision".
- Le core Libretro est créé et il est déjà fonctionnel. Pour faire simple c'est la partie qui va faire l'interface entre le frontend (Retroarch pour Recalbox, donc le joueur et le système) et l'émulateur proprement dit. Pour gagner du temps je suis parti du code de mon projet EmuSCV (déjà incu dans RecalBox) que j'ai modernisé et amélioré.
- Mon collègue Sean a dumpé toutes les ROMs depuis les cartouches originales (on a maintenant une technique non destructive et reproductible pour le dump). Ca se présente sous la forme de deux fichiers par cartouche: un pour le programme et un pour les graphismes (patterns). Les deux fichiers ayant une taille fixe, sûrement qu'au final on pourra les concaténer en un seul pour simplifier la vie des joueurs. Ceci dit je vais faire en sorte que toutes les solutions soient possibles parce que l'émulateur sera probablement aussi intégré à MAME qui aime bien avoir plein de fichiers bruts.
- Monsieur OGUCHI a beaucoup avancé sur le reverse engineering afin de retrouver le jeu d'instructions des différents processeurs mais il nous manque encore quelques instructions pour certains jeux.
- Pour l'étape en cours, je suis au début du codage des instructions (en tout cas la grosse partie des instructions déjà connues).
- L'étape suivante ça sera de me pencher sur le fonctionnement des patterns (les graphismes) pour avoir enfin une sortie visuelle et avoir quelque chose à vous montrer... mais c'est pas encore pour tout de suite.
Donc voilà! C'est beaucoup de boulot mais c'est hyper-intéressant à faire. Ca n'avance pas vite certes mais ça avance.
@++
EPOCH84 (aka MaaaX avec 3 "A") -
-
@maaax Man, this is just awesome!!!! Thx for your hard work here!
-
@maaax chouette ça fait plaisir d’avoir des tes nouvelles. Bon courage à toi et surtout que la force soit avec toi ^^
-
Hello world!
Quelques petites news du projet d'émulateur Libretro-EmuCV pour les consoles EPOCH Cassette Vision et Cassette Vision Junior:
- Toutes les ROMs sont extraites.
- Nous connaissons maintenant la totalité du jeu d'instructions pour les 11 jeux sortis et même un peu plus (certaines instructions n'étant utilisées dans aucun jeu). Il reste encore quelques instructions à rétro-ingéniérer mais qui ne serviront pas dans l'immédiat.
- Nous savons maintenant comment sont organisées les données graphiques et comment les interpréter.
- J'ai créé un logiciel qui me permet de faire des expériences pour m'aider à décortiquer le fonctionnement de la console et des différents composants uPD7xx qui font office de processeurs.
- Certaines puces gèrent les graphismes un peu différemment des autres (ex: pixels diagonaux/rectangulaires pas forcément dans les mêmes plages) et je me suis aperçu que le câblage de certaines cartouches n'est pas forcément standard (ex: le jeu "Baseball" réinjecte le signal de la sortie prévue pour demander une reverb du son sur les pattes d'entrée prévues pour les contrôles d'un des joueurs). Je dois donc d'une part analyser comment sont gérés les pixels diagonaux/rectangulaires pour chaque puce et d'autre part je dois démonter toutes les cartouches pour voir comment chacune d'elles est câblée. En conséquence je vais donc devoir créer un format de ROM spécifique comme pour EmuSCV afin de gérer ce genre de curiosité.
Il y a encore beaucoup de boulot avant qu'on puisse réellement jouer mais le projet avance petit à petit...
Affaire à suivre...
@++
EPOCH84 (aka MaaaX ^^) -
@maaax said in EPOCH Cassette Vision:
Certaines puces gèrent les graphismes un peu différemment des autres (ex: pixels diagonaux/rectangulaires pas forcément dans les mêmes plages) et je me suis aperçu que le câblage de certaines cartouches n'est pas forcément standard (ex: le jeu "Baseball" réinjecte le signal de la sortie prévue pour demander une reverb du son sur les pattes d'entrée prévues pour les contrôles d'un des joueurs). Je dois donc d'une part analyser comment sont gérés les pixels diagonaux/rectangulaires pour chaque puce et d'autre part je dois démonter toutes les cartouches pour voir comment chacune d'elles est câblée. En conséquence je vais donc devoir créer un format de ROM spécifique comme pour EmuSCV afin de gérer ce genre de curiosité.
Il y a encore beaucoup de boulot avant qu'on puisse réellement jouer mais le projet avance petit à petit...
Affaire à suivre...Encore une fois c'est passionnant de te suivre, et je suis ébahi par ton niveau technique ! Bravo et merci de partager tes avancées !
-
Salut tout le monde,
Petite news pas forcément hyper intéressante mais je partage quand même: j'ai un peu avancé sur le mod des consoles qui vont me servir de référence pour le développement de EmuCV.
J'arrive maintenant à avoir une image sur l'entrée vidéo composite NTSC de ma télé... pour le moment c'est uniquement en noir et blanc (signal vidéo avec les synchros et la luminance mais sans la chominance) et pas de très bonne qualité (probablement dû au vieillissement des condensateurs).
Ca veut dire au moins que ma Cassette Vision fonctionne ainsi que toutes mes cartouches. Je n'ai pas encore eu le temps de tester sur la Cassette Vision Junior.
Il va quand même falloir que je fasse une vraie restauration pour améliorer la qualité de l'image (= recapage complet) et bosser encore un peu pour récupérer la couleur (chrominance) ainsi que le son.
Encore une bzzarerie de cette console: le signal vidéo est inversé par rapport à un signal standard.
J'ai aussi commencé à démonter toutes les cartouches mais sans déposer les puces uPD7xx et je confirme déjà qu'au moins "Baseball" et "New Baseball" ont un câblage spécifique. Pour le moment je n'ai démonté que ces deux là ainsi que "Astro Command" et "Elevator Panic" (d'ailleurs si quelqu'un sait pourquoi cette cartouche là est blanche alors que toutes les autres sont noires...).
Ca avance doucement mais ça avance.
A suivre...@++
EPOCH84 (aka MaaaX^^) -
Salut tous le monde,
Après beaucoup de temps passé à étudier le fonctionnement de la puce NEC uPD777 (le processeur présent dans chaque cartouche), je pense maintenant la connaître suffisamment bien pour pouvoir commencer le développement d'une deuxième version du prototype d'émulateur pour la EPOCH Cassette Vision.
Ça inclut aussi la puce uPD778, la différence étant vraiment minime avec les puces uPD777.
J'ai élucidé beaucoup de mystères depuis mon premier prototype (pour la V1 il y avait beaucoup de choses inconnues, incorrectes ou mal comprises).Je connais maintenant très bien toute la partie timing et les signaux qui en découlent (horloges interne, horizontale et verticale).
Je connais maintenant le "jeu d'instruction" complet de la machine, y compris les instructions qui n'ont jamais été utilisées dans les jeux, celles qui sont en double (même effet que des codes déjà connus) ou qui n'ont pas de sens (effets incohérents, contradictoires ou simplement pas prévus d'être utilisés, mais potentiellement utilisable... Ça sent le détournement et la DemoScene!).
Ça pourra peut-être servir pour de futurs homebrews.Je connais aussi maintenant le PLA (Programmable Logic Array) présent dans chaque puce et qui pilote quels sont les Sprites avec répétition et quels Sprites sont "obliques".
Je sais aussi comment fonctionne précisément la pile d'adresse à trois niveaux, comment elle réagirait en cas de débordement et en cas de sur-dépilement.
Les entrées pour les boutons, le sélecteur, les potard, le lightgun, etc.
Il y a encore quelques zones d'ombre au niveau de l'affichage que le nouveau prototype devrait permettre de lever.
Dans les nouvelles infos à confirmer avec le prototype V2, il y a entres autres: les interruptions (liées à l'affichage), le fonctionnement précis de la pile H->NRM et ses effets (dépilement sur interruption), le mécanisme de décalage des lignes pour obtenir des pixels non rectangulaires avec des côtés obliques et le mécanisme de répétition automatique des Sprites.
La suite au prochain épisode.
@++
EPOCH84 (^_^)/ -
Hello World!
La partie horloges externe Φ, internes Φ1 Φ2 Φ3 Φ4, horizontale HC et verticale VC du prototype V2 est faite, ainsi que tous les signaux qui en découlent dont la synchro ligne et trame pour la video.
J'ai donc théoriquement un signal vidéo valide mais pour le moment avec un écran noir.Ca me permet déjà de me repérer dans l'image et au passage de confirmer quelques points qui n'étaient pas très clair.
On est donc sur un signal vidéo NTSC, 525 lignes, 60Hz.
La partie visible de l'image est grosso modo de 75x60 coordonnées possibles pour l'affichage des sprites, sur un total de 90x60 possibles mais il y a une bande de 15 coordonnées de large à gauche de l'image qui n'est pas visible et les sprites du haut et du bas de l'écran sont partiellement masqués (plus en bas qu'en haut).
La CV (Cassette Vision) ne faisant rien comme les autres c'est un peu plus compliqué que ça parce qu'il y a un système de décalage vertical des sprites de 0 à 7 lignes, tous les sprites ne font pas la même taille (6x7 et 7x7), certains sprites sont répétés et d'autres ont des côtés en oblique.A ce point je sais déjà que certaines pins du processeur ne seront pas implémentées dans l'émulateur final (CH1, CH2, CH3, CH4 et CH6) parce qu'elles n'ont pas d'autre utilité que de permettre le dump de la ROM programme, de la ROM patterns et de la RAM.
Initialement ces pins étaient prévues à des fins de contrôle pour la production en usine et c'est ce qui nous a permis d'extraire les ROMs de toutes les cartouches.Je ne conserverai probablement pas la partie synchro vidéo dans l'émulateur final mais j'en ai besoin pour mon retro-engineering.
Je vous met le schéma de la puce en entourant en vert les parties que je viens d'intégrer au proto.
IC: Horloges internes
HC: Horloge horizontale
VC: Horloge verticale
Timing: chronogramme des signaux de synchro vidéo
Comme vous le voyez il y a encore un peu de boulot...
Allez! J'attaque la partie compteur de programme et sélection des commandes en fonction du code de l'instruction en cours.
@+ pour la suite.
EPOCH84 ^^ -
J'adore lire tes messages et je suis admiratif devant tes compétences !
Continue à décrire tes avancées, perso je trouve ça super.
En plus tu arrives à rendre ça compréhensible pour le néophyte que je suis, et ça c'est fort
-
Hello World!
Ca faisait un moment que je n'ai rien posté, aussi je déterre le sujet de la Cassette Vision sur lequel je me remet proactivement.
J'avais un peu trop de projets en cours et ça partait dans tous les sens avec trop peu de temps libre pour arriver à avancer sur tout à la fois. Je met donc tout mes projets à plat pour arriver à m'organiser et prioriser les choses.Je mets donc en standby les projets suivants:
-
EPOCH Super Cassette Vision: mon projet autour de ma console de coeur (ma 2ème console perso).
J'ai les consoles FR et JP et le fullset.
Mon émulateur EmuSCV est déjà fonctionnel et embarqué dans plusieurs systèmes dont Recalbox, Batocera et RetroArch. Il a encore des bugs et est encore très perfectible (c'est pour ça qu'il n'est pas encore en v1.0).
Mon assembleur RASM78001 est presque fini, il manque encore des options pour la gestion des banques ROM et d'autres fioritures pour la gestion des données. J'ai déjà pu compiler du code homebrew avec et le tester sur EmuSCV.
J'ai aussi modifié du code de jeux existants et testé avec succès sur les vraies consoles.
Les PCB des cartouches sont déjà créés sur Kicad (Bon! Il faut juste que je remette la main dessus... oui j'ai beaucoup de bordel sur mon ordi ).
Le moulage Epoxy des cartouches physiques n'est pas encore satisfaisant mais je pense que je vais finir par y arriver (ça devrait être mieux fini et plus rapide qu'en impression 3D). -
Consoles 1ère génération: mon projet RB1G de simulateur de consoles 1ère génération, Pong Like, General Instrument AY-3-8xxx, etc. (alias "projet Fight Club" pour @Bkg2k ). Pour info ma première console perso était une Saft-Leclenché TV8 Sports, j'étais tout petit.
J'ai presque le fullset des puces AY-3-8xxx dont certaines extrêmement rares, une Texas instrument (je ne sais plus laquelle) et la EPOCH SYSTEM 10 avec le lightgun. Il y a trop de consoles "clones" pour chaque puce pour espérer les avoir toutes mais heureusement il y a Internet (pong-story.com, Youtube, etc.) et quelques passionnés prêts à m'aider.
Le projet est déjà bien avancé. Le plus long ça n'est pas le développement des simulateurs pour les différentes puces (oui ce ne sont pas des émulateurs au sens propre du terme), le plus long c'est bien le développement de l'interface façon Recalbox qui doit pouvoir gérer les milliers de clones existants pour seulement quelques puces. -
EPOCH Barcode Battler: J'ai le Barcode Battler français (idem Barcode Battler II japonais) avec l'adaptateur pour la SNES. J'ai déjà collecté pas mal d'infos mais le projet est à peine commencé. C'est original et rigolo 5 minutes mais il faudra que je fasse un truc un peu plus fun que l'écran LCD qui affiche des chiffres...
Et enfin le projet sur lequel je vais me concentrer:
- EPOCH Cassette Vision: ce projet d'émulateur (EmuCV?) me tient vraiment à coeur car à ma connaissance il n'y en a aucun émulateur existant à ce jour pour cette console.
J'ai les deux modèles de consoles, la normale et la Junior, avec le lightgun et le fullset.
Nous sommes 4 à avoir travaillé sur le projet: Tetsuji OGUCHI (l'ingénieur qui a développé les puces NEC de cette console), Sean RIDDLE (un fou d'arcade et de retro-gaming qui décape et bidouille les puces), James BROLLY (lié au projet MAME) et moi-même (pièce rapportée au projet RECALBOX).
Sean a extrait le contenu des ROMS de tous les jeux existants (programme et graphimes).
Avec l'aide inestimable de Tetsuji, nous avons fait le rétro-engineering des puces. Enfin c'est surtout Testsuji qui a fait les recherches au début et moi qui ais validé et recoupé toutes ses informations en mettant le doigt à chaque fois là où il y avait des trous dans la raquette ou des incohérences... le pauvre, il doit me détester ^^.
Ceci-dit, à force de travailler sur le sujet je suis maintenant capable de lire tout seul les schémas des puces et j'ai découvert un bug que Tetsuji ne connaissait pas, bug qu'il a confirmé et dont il a retrouvé l'origine (introduit par l'ingénieur chargé des tests et on sait maintenant pourquoi).
J'ai déjà fait un premier prototype d'émulateur pour pouvoir valider les informations.J'ai commencé le développement d'un second prototype qui sera basé sur tout ce que je sais maintenant sur la Cassette Vision.
Ca va demander un peu de temps mais je mettrai ici tous les vendredi des news sur l'avancement du développement. Ca fera de la lecture pour ceux que ça intéresse et moi ça m'obligera à me concentrer sur le projet. Ca avait bien fonctionné pour le développement d'EmuSCV.Quand le prototype V2 sera suffisamment avancé, je pourrai recoder tout ça en C/C++ pour avoir quelque chose d'exploitable.
Je donnerai ensuite les sources à James pour qu'il puisse porter ça dans MAME.Voili, voilou.
@++
EPOCH84 (aka MaaaX ^^) -
-
Hello!
Petites news du projet.
J'ai mis en place une bonne partie des fenêtres du prototype V2.
Dans le prototype V1 pratiquement tout était dans une unique fenêtre avec 3 onglets, ce qui faisait beaucoup d'infos affichées.
J'ai réparti les informations en plusieurs fenêtres. Tout n'est pas encore fonctionnel mais récupéré pas mal de choses de la V1 qu'il faudra que je corrige et que complète.Fenêtre splash à l'ouverture:
Fenêtre principale:
Fenêtre d'ouverture de fichier:
Fenêtre des commandes de "l'émulateur" (c'est pas encore vraiment un émulateur mais bon...):
Fenêtre du code de la ROM Programme:
Fenêtre des graphismes de la ROM Pattern:
Fenêtre du PLA (Programmable Logic Array):
Fenêtre des registres et de la pile A:
Fenêtre de la mémoire (RAM):
Fenêtre des 2 piles NRM:
Fenêtre des contrôles de la console:
Fenêtre de la liste des instructions existantes:
La suite au prochain épisode.
Bon week-end à tous et à toutes.
@++
EPOCH84 (aka MaaaX ^^)Fenêtre de la liste des adresses valides (décimales, binaires et polynomiales):
-
Hello!
Petite news de fin de semaine sur l'avancée du prototype V2:
- J'ai refait les parties Palette et Timing (horloges et signaux verticaux et horizontaux).
- J'ai amélioré un peu l'IHM.
- Je suis en train de "finaliser" le chargement de fichiers (.CART, .ROM, .BIN...) qui était partiellement faits en V1.
La suite au prochain épisode.
@++
EPOCH84 (aka MaaaX^^)
-
Hello World!
Petites news du vendredi:
-
J'ai fini le chargement des fichiers ROM .CART (format ROM propriétaire de EmuCV), des fichiers ROM .BIN "program" et "packed pattern" (tous les bits de données sont à la suite et pas alignés sur des octets).
Pour les programme je détecte s'il s'agit d'un jeu sorti à l'époque (EPOCH ) et j'applique le 6BJ/PLA correspondant.
Il me reste à faire le chargement des fichiers ROM .BIN "unpacked pattern" (données alignées sur des octets) et ROM .TXT Pattern mais on verra ça plus tard. -
L'ID de la cartouche et le nom du programme sont maintenant affichés dans la fenêtre du programme et sont modifiables.
-
J'ai avancé sur l'affichage de la fenêtre pattern où il manquait pas de choses sur le proto V1.
Les pattern inclinés sont maintenant bien gérés et les répétitions X, Y et XY le sont partiellement mais j'y travaille. -
Dans la fenêtre 6BJ/PLA "Progammable Logic Array", les valeurs sont maintenant modifiables et influe sur les autres fenêtres (modif PLA=>affichage pattern / modif 6BJ => impact sur le code).
Je continue de travailler sur la fenêtre des patterns...
@++
A la semaine prochaine.
EPOCH 84 (aka MaaaX^^) -
-
Petite news du vendredi:
- J'ai fini la fenêtre des Patterns (ROM des graphismes). Il est maintenant possible d'y éditer les Patterns. Avec la fenêtre PLA qui est aussi éditable, la partie source graphique est terminée. J'ai pensé à un petit outil pour superposer des patterns (dans plusieurs jeux existants des sprites sont composés de plusieurs patterns supersposés)... mais on verra ça plus tard, c'est pas la priorité.
- J'ai fait quelques améliorations sur la fenêtre du programme (ROM du programme). Le code n'est pas encore modifiable mais je m'en occuperai plus tard.
- Je travaille maintenant à reprendre tous les opcodes pour prendre en charge ceux qui manquaient en V1.
A suivre...
EPOCH84 (aka MaaaX ^^) -
Un peu de retard dans le journal de projet cette semaine because semaine mouvementée et pas beaucoup de temps libre (j'habite en Ardèche, pluie diluviennes, écoles et garderies fermées, tout ça tout ça...)
Je travaille toujours sur la mise à jour de la description du jeu d'instructions (ce qui apparaît dans la fenêtre Programme et dans la fenêtre Liste des Opcodes).
Pour mémoire je sais maintenant ce que font tous les Opcodes, y compris l'Opcode buggé et les Opcodes en dehors du jeu d'instructions "officiel" que Tetsuji publie sur son site.
C'est très laborieux et long à faire mais ça avance bien.Après les descriptions il faudra que je m'occupe de l'implémentation proprement dite des instructions.
La suite au prochain épisode.
@++
EPOCH 84 (aka MaaaX^^)