EPOCH Cassette Vision
-
Bonjour,
Pour ceux que ça intéresserait j'ai commencé le développement d'un émulateur pour la console EPOCH Cassette Vision en collaboration avec trois personnes dont le concepteur des processeurs de la console.
J'ai fait l'acquisition des deux modèles de la console (la normale et la Junior), du Lightgun et du fullset jeux pour pouvoir comparer avec le matériel d'origine comme j'avais déjà fait pour la Super Cassette Vision.
Mon principal souci actuellement c'est pour passer de la sortie antenne RF NTSC à une entrée RGB/Péritel.
Si quelqu'un a un convertisseur à me conseiller je suis preneur.Ca n'est pas bloquant à ce stade du développement car le concepteur des processeurs m'a donné beaucoup d'informations sur l'architecture matérielle et le jeux d'instructions des différents processeurs. Mes deux autres collègues se chargeant de l'extraction des Roms.
A suivre donc...
@++
MaaaX ^^ (aka EPOCH84) -
@maaax Bravo et bon courage pour ton nouveau projet !
Sur Pi4 RB 8.0 dès que je lance un jeu j'ai systématiquement les ballons sur la Super Cassette Vision, y a t-il eu du changement ? (j'ai bien le bios reconnu)
-
@secamfr Je vais tester avec la RB8 et je te dis ça tout à l'heure mais côté EmuSCV j'ai rien changé.
L'écran de test c'est qu'il reconnait le BIOS mais pas la ROM -
@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