[WIP 95%] Projet BricoNeo - Entrées et sorties via le connecteur de la ROM système

Chaine Youtube de notre ami "Referent Tech" spécialisé dans la reparation des consoles NeoGeo et autres
Répondre
Avatar du membre
Bouz
Référent Technique
Référent Technique
Messages : 1067
Enregistré le : mer. 22 déc. 2021 18:52
Localisation : Hérault
Contact :

Re: [WIP 83%] Projet BricoNeo - Entrées et sorties via le connecteur de la ROM système

Message par Bouz »

Ouep, ça permet de voir quel code il exécutait au moment du saut sur le vecteur de reset.
Avatar du membre
ragefan
Delta User Lv3
Delta User Lv3
Messages : 167
Enregistré le : mer. 22 nov. 2023 21:08

Re: [WIP 83%] Projet BricoNeo - Entrées et sorties via le connecteur de la ROM système

Message par ragefan »

🥰
Avatar du membre
Bouz
Référent Technique
Référent Technique
Messages : 1067
Enregistré le : mer. 22 déc. 2021 18:52
Localisation : Hérault
Contact :

Re: [WIP 83%] Projet BricoNeo - Entrées et sorties via le connecteur de la ROM système

Message par Bouz »

Et coucou!
De retour de vacances, les affaires reprennent ;).

Ce week-end, j'ai fait en sorte de diminuer la lourdeur des opérations de création de tests présente sur mon ancien système.
L'ajout d'un nouveau test nécessitait:
- d'ajouter la commande de test sur l'outil PC
- d'ajouter la commande de test sur l'outil Arduino
- d'ajouter le code de test et la commande de branchement dans la ROM 68000

Avec ce nouveau système, les tests sont référencés sur la ROM, avec leur description. Aucun code spécifique n'est utilisé pour lancer tel ou tel test (seulement son numéro). Côté 68000, pareil, on ajoute son test à la table et le routage se fait automatiquement quand on le demande (le code RP2040 n'est pas encore dispo, mais ça vient).

L'ajout d'untest devient donc:
- ajout du test dans le code 68000

J'en ai profité pour faire du ménage dans le projet et pour éclater les tests dans différents fichiers sources. Il est donc possible de regrouper les tests de manière logique et de ne plus mettre tout en bazar dans le même fichier :).

J'ai essayé de penser un peu plus à l'avenir, et de faciliter la collaboration en ligne pour ajouter des tests en réduisant les conflits!

Démo: avec mon terminal Putty, je me connecte au BricoNeo et je lui demande quels sont les tests disponibles dans la ROM qu'il embarque...
Extraction automatique des tests depuis la ROM
Extraction automatique des tests depuis la ROM
Modifié en dernier par Bouz le dim. 18 févr. 2024 22:07, modifié 2 fois.
Avatar du membre
Illusionrip
Référent Technique
Référent Technique
Messages : 130
Enregistré le : lun. 27 nov. 2023 17:13
Localisation : 7nm
Contact :

Re: [WIP 83%] Projet BricoNeo - Entrées et sorties via le connecteur de la ROM système

Message par Illusionrip »

chapeau bas, et en assembleur en plus
Avatar du membre
Xrider
Administrateur
Administrateur
Messages : 3695
Enregistré le : sam. 14 sept. 2019 10:47
Localisation : MaskRom
Contact :

Re: [WIP 83%] Projet BricoNeo - Entrées et sorties via le connecteur de la ROM système

Message par Xrider »

Très bonne avancée, congratulations mon ami :)
Avatar du membre
Bouz
Référent Technique
Référent Technique
Messages : 1067
Enregistré le : mer. 22 déc. 2021 18:52
Localisation : Hérault
Contact :

Re: [WIP 83%] Projet BricoNeo - Entrées et sorties via le connecteur de la ROM système

Message par Bouz »

Merci messieurs.
Pour la suite, je vais coder la commande d'exécution générique de test, ça ne devrait pas être long.
Le plus gros de la complexité jusque là réside dans le fait que les mots de 16 bits dans la ROM sont inversés. Ca rend les lectures de chaînes de caractères et d'entiers 32 bits... intéressantes.
Une fois la commande en place, je vais enfin débrancher le BricoNeo du lecteur d'EPROM et le mettre sur un slot MVS. La partie écriture de tests côté 68000 va commencer sur la base des réparations que j'ai à faire (les MVS de Xrider).
Après ça, il faudra que je justifie la section qui m'est dédiée sur ce forum et que je me remette à faire des vidéos pour raconter quelques trucs en retard!!!
Avatar du membre
ragefan
Delta User Lv3
Delta User Lv3
Messages : 167
Enregistré le : mer. 22 nov. 2023 21:08

Re: [WIP 83%] Projet BricoNeo - Entrées et sorties via le connecteur de la ROM système

Message par ragefan »

Bravo Bouz, si tu veux des cartes de tests pour faire des manips, fait moi signe !
Avatar du membre
Bouz
Référent Technique
Référent Technique
Messages : 1067
Enregistré le : mer. 22 déc. 2021 18:52
Localisation : Hérault
Contact :

Re: [WIP 83%] Projet BricoNeo - Entrées et sorties via le connecteur de la ROM système

Message par Bouz »

Merci, j'en ai une en état de marche, et plusieurs en panne. Du moment que le CPU tourne et que le bus n'est pas éclaté, je peux jouer un peu avec.
Malheureusement, la plupart de mes quelques cartes HS ne démarrent même pas. Espérons que celles de l'ami Xrider me feront le plaisir de tourner un minimum!
Avatar du membre
Bouz
Référent Technique
Référent Technique
Messages : 1067
Enregistré le : mer. 22 déc. 2021 18:52
Localisation : Hérault
Contact :

Re: [WIP 83%] Projet BricoNeo - Entrées et sorties via le connecteur de la ROM système

Message par Bouz »

Et petite avancée du soir parce que je ne suis pas trop en forme...

Avec le modèle précédent, j'avais un réel souci pour streamer de l'info dans le sens PC => NeoGeo, et dans le sens NeoGeo => PC.
Je devais jouer avec un registre de 16 bits dans un sens, et une registre de 16 bits dans l'autre. Pour chaque mot de 16 bits transféré sur un registre, le correspondant devant changer la valeur de l'autre registre pour notifier qu'il avait bien lu la valeur avant de pouvoir continuer le transfert.
Ca rendait la code compliqué (et pas très rapide, mais dumper des cartouches ne fait pas partie du cahier des charges, alors ce n'est pas grave).

Avec le nouveau modèle, plus de souci avec le sens PC => NeoGeo: le PC, via le RP2040, peut écrire directement où il veut dans la "ROM". Ca permet d'envoyer des données, et notamment des paramètres de test, sans avoir à faire de la gymnastique.

Dans le sens NeoGeo => PC, j'ai géré un ring buffer un peu costaud alimenté par DMA. Ca permet d'envoyer du bois en termes de streaming, mais je n'ai pas de contrôle sur la fin de l'envoi de données. Autrement dit, il faut mettre en place un petit protocole pour indiquer à l'avance combien de mots de 16 bits on veut transférer, ou alors n'utiliser que 8 bits et prendre les 8 autre pour faire du contrôle, ou alors...... bref, c'est casse-bonbons.

Histoire de ne pas me trainer se boulet dans les tests que je m'apprête à écrire, j'ai implémenté une solution qui me plait bien!
J'ai toujours une adresse qui me permet de déclencher la simulation d'écriture en ROM par la NeoGeo. Ca, je ne touche pas. Par contre, j'utilise l'adresse inférieure pour déclencher une interruption côté PIO, qui est captée par le Core0 du RP2040 et permet de basculer un flag "End Of Transmission) automatiquement.
Maintenant, si je veux transférer un paquet de données de la NeoGeo vers le PC, du côté assembleur 68000, il me suffit de déclencher la séquence de lectures habituelles sur le port de sortie, et une fois que j'ai terminé, je fais une lecture sur le port "EOT" nouvellement créé pour informer le code du RP2040 que le traansfert est terminé.

Voilà, ça a l'air compliqué et relou, mais en vrai, ça va rendre les transferts et le code 68000 BEAUCOUP plus simples.

Du côté du code des machines à état des PIO, le code complet d'accès au contenu de la "ROM" et de gestion des ports tient tout pile dans la mémoire exorbitante de 32 instructions autorisées. Autant dire que c'est plutôt serré!

Bon, maintenant, il va falloir se coller sur un slot MVS et commencer à tester tout ça pour de vrai!
Avatar du membre
Xrider
Administrateur
Administrateur
Messages : 3695
Enregistré le : sam. 14 sept. 2019 10:47
Localisation : MaskRom
Contact :

Re: [WIP 83%] Projet BricoNeo - Entrées et sorties via le connecteur de la ROM système

Message par Xrider »

Excellente avancée !

Pour vérifier le transfert, je te conseil de le faire à la fin en effectuant un checksum.

Avec cette solution, pas besoin de boucle de contrôle à chaque mot émis, l’intégrité de la transmission est vérifiée en 1x ;)
Avatar du membre
Illusionrip
Référent Technique
Référent Technique
Messages : 130
Enregistré le : lun. 27 nov. 2023 17:13
Localisation : 7nm
Contact :

Re: [WIP 83%] Projet BricoNeo - Entrées et sorties via le connecteur de la ROM système

Message par Illusionrip »

tu nous feras une petite demo video ?
Avatar du membre
Bouz
Référent Technique
Référent Technique
Messages : 1067
Enregistré le : mer. 22 déc. 2021 18:52
Localisation : Hérault
Contact :

Re: [WIP 83%] Projet BricoNeo - Entrées et sorties via le connecteur de la ROM système

Message par Bouz »

Hello!
Le CRC permet de faire un code correcteur d'erreur. Je lavais utilisé sur le premier BricoNeo parce que la liaison série laisse à désirer sur Arduino. Il n'y a pas de contrôle de flux sur la liaison serie et l'Arduino est trop lent et n'a pas assez de RAM pour transférer correctement une ROM de 128ko.
Ici, je suis entre le 68000 et le BricoNeo. Le fait de passer par du PIO et du DMA fait que je peux envoyer 2ko de données sans me soucier se rien, ça dépote. Par contre, il faut que je sache quand le transfert est terminé. C'est à ça que sert ce nouveau port.
Je veux écrire une couche de lancement de tests qui ne nécessitera que du code 68000, donc j'ai besoin d'une solution génerique et la plus simple possible.

Pour la vidéo, je dois réécrire toute la partie soft microcontrôleur ET 68000 avant d'avoir quelque chose à montrer. Alors ce n'est pas pour tout de suite, mais ça va venir.
Je me demande si je sais encore faire une vidéo depuis le temps ;).
Répondre

Retourner vers « Aurélien / Bouz "Technique" »