Quoi de neuf ?
FlipperFrance

Quoi! Comment! Pas encore membre d'FF ! Franchissez le pas, incrscrivez vous avec le mail de votre F.A.I (VPN Exclus) et participez à la vie flippéristique

Sons customisé sur SkateBall Bally

peuch88

Membres
Membre FF
Bonjour,

je trouve que les sons de la carte d'origine son un peut naze, mais c'est ce qui ce faisait a l'époque
je compte donc ajouter une carte pouvant intercepter les Data sur le bus entre la MPU et la carte son AS 2518-51

d’après les plans la carte CPU utilise ADR A, B, C, D et Sol bank select pour transmettre la banque a utiliser

je suppose que la MPU envois les bits d'adresses , puis envoi une impulsion pour indiquer a la carte de lire le son correspondant a l'adresse

l'adresse E est inutilisée sur le Skateball, ce qui laisse une combinaison de 16 sons

dans un premier temps je pense utiliser un micro-contrôleur Arduino pour intercepter les signaux provenant du bus

est-ce que quelqu’un parmi vous aurai le chronogramme , ou le protocole de communication de ce bus ?

le but et de convertir les données du bus, en chiffres de 0 a 15 vers le port USB d'un ordinateur pour jouer les sons avec DIRECTX

le programme permettant de lire les sons sera écrit en VB.net
 
En fait c'est compliqué

Tu l'as dans le manuel de Bally l'explicatif

On envoie un train de code, est de suite dans la foulée à 47 µS, si je ne m'abuse dans le temps, tu as l'autre train de code ;)

C'est ainsi que la carte sons, détecté les codes d'entrées ;)
 
David a dit:
En fait c'est compliqué

Tu l'as dans le manuel de Bally l'explicatif

On envoie un train de code, est de suite dans la foulée à 47 µS, si je ne m'abuse dans le temps, tu as l'autre train de code ;)

C'est ainsi que la carte sons, détecté les codes d'entrées ;)
bonjour,

je ne doit pas avoir le bon manuel, car je n'ai rien vu de la sorte sur les 2 en ma possession "procedure repair et games 1210 Skateball", peut tu m'en dire plus, ce manuel est il accessible sur internet ? flippp

de mon coté j'ai fait un programme arduino qui lit les adresses 25µs après un front descendant sur la broche "sound select"

ça a l'air de fonctionner, cependant j'ai de petites erreurs sur 2 sons

j'ai également développé une application qui permet de lire un son avec trés peut de latence a partir d'un pc

le résultat est assez surprenant, ceci dit la méthode utilisé est un tantinet hasardeuse, j'aurai aimé être plus précis sur ce décodage d'adresse

je vais tenter de faire une petite video pour expliquer cette modif, et partager les sources si ça peut intéresser quelqu'un

bien cordialement
J-C
 
ci joint le code utilisé coté arduino


Code:
/*
Substitution carte son Skateball Bally V1.4
code pour Arduino Atmega 2560 
Pouchain Jean Claude 

*/

int Ledpin = 13;
int state;
int state1;
int Interupt;
int ignore;
int AdrA;
int AdrB;
int AdrC;
int AdrD;
int AdrE;
int inPinA=8;
int inPinB=9;
int inPinC=10;
int inPinD=11;
int inPinE=12;
long gap;
void setup()//_______________________________________________________
{
  pinMode(Ledpin, OUTPUT);
  pinMode(inPinA, INPUT);
  pinMode(inPinB, INPUT);
  pinMode(inPinC, INPUT);
  pinMode(inPinD, INPUT);
  pinMode(inPinE, INPUT);
  Serial.begin(115200);      //ouverture du port série a 115200 bps:  
  attachInterrupt(3, event, RISING); // evenement sur front montant provenant de la broche 20 de l'arduino
}

void loop() //_______________________________________________________
{
  if (Interupt==1)
  {
    delayMicroseconds (20) ;//attente de 20µs avant de lire les bits d'adresses 
    AdrD = digitalRead(inPinD);
    AdrC = digitalRead(inPinC);
    AdrB = digitalRead(inPinB);
    AdrA = digitalRead(inPinA);
    state = AdrA+(AdrB*2)+(AdrC*4)+(AdrD*8)+(AdrE*16);// adresse 
    //    Serial.print(state);
    //    Serial.print("-->");
    //    Serial.println(micros()-gap);
    if (state != state1)
    {
      Serial.write(state);// ecriture de l'adresse sur le port serie
    }
    else
    {
      if (micros()-gap> 40000// suppression espacement de sons identiques trop rapprochés (decompte des scores par exemple)
        )
      { 
        Serial.write(state);// ecriture de l'adresse sur le port serie
      }
      else
      {
        ignore ++;
      }
    }
        if (ignore==4 )
        {
          ignore=0;
            Serial.write(state);// ecriture de l'adresse sur le port serie
//            Serial.println("-->");
        }
    gap=micros();
    state1=state;
    Interupt=0; 
  }
}
void event() //_______________________________________________________
{
  Interupt=1;
}
l'arduino



en video
http://youtu.be/_mw38f_8qXY
 
Le soucis c'est pour la lecture, tu dois être synchrone avec la cpu !
 
Accorde les fronts avec l'horloge, synchrone quoi
 
Retour
Haut Bas