Mando de consola retro (Turbo Pad - ECS) + Arduino

#1
Buenas, estoy intentando sacar provecho de un mando para una consola bastante antigua (Entertainment Computer System),

*Ver archivo adjunto: {nes-clon-nasa.jpg}

y para ello he preparado su conector, de 7 pines (2 de ellos vacíos, por tanto 5 pines) para intentar manejarlo con Arduino. Para mi desgracia, esta consola es una copia barata de la famosa NES (Nintendo Entertainment System) que ya han hackeado para reutilizar su mando, pero para la consola de nuestro caso no existe en internet ninguna guía ni datasheet que me pueda ayudar, por tanto manos a la obra...

Mi objetivo inicial es completar la tabla de "Pinout" para poder dar un poco de luz sobre el asunto. Pero antes me gustaría saber ¿qué es esa bolita negra o qué función tiene en el mando? (Un amigo me ha dicho que es el CI que maneja los botones)

*Ver archivo adjunto: {controller-front.jpg}
*Ver archivo adjunto: {controller-back.jpg}


Imagino que los pines corresponderán al igual que la original Nintendo (aunque con distintos colores) a:
VCC, GND, Latch, CLK, Data.
Tengo la esperanza de que con sólo ver la imagen del circuito alguien sea capaz de distinguir cada uno de los pines. De no ser así, estoy dispuesto a seguir cualquier indicación para facilitar su identificación.

Una vez rellenada la tabla, procederé con el código de Arduino.

No soy un experto en microelectrónica ni tengo mucha experiencia, pero mi curiosidad y mi afán por aprender está por las nubes. Me encantaría que me ayudárais con este mini-proyecto, pues es algo a lo que le he puesto mucha ilusión.

Muchas gracias
Saludos
 

Adjuntos

#4
creo que por ser clonica no confia en la informacion

pero las clonicas tambien eran compatibles con la original
de todos modos puedes comprobar el pinout con el tester

y no te confies en los colores
 
#5
Gracias a todos por vuestra rápida respuesta.

Es un circuito integrado ! No lo rompas ! . . . salvo que solo te interesen los pulsadores.
Uf, ¿entonces cómo puedo identificar de qué integrado se trata? Para la NES original se ve bastante claro un 4021 (registro de desplazamiento).

creo que por ser clonica no confia en la informacion

pero las clonicas tambien eran compatibles con la original
de todos modos puedes comprobar el pinout con el tester

y no te confies en los colores
En efecto, de hecho ya he seguido más de un tutorial que hace referencia a la NES original, sin éxito alguno para casi cualquier combinación de cables. Hasta ahora no he conseguido de ninguna manera obtener ni un simple dato ni una pequeña reacción al pulsar cualquier botón. No obstante, ¿De qué se trata el "tester" que comentas?
 
#9
Jajaj ya vienen los madre mías. Bueno, voy a optar por tirar este mando y coger el otro (¡Sí, tenía 2! XD).

Parece que la indicación de mi amigo de que no se puede estropear si lo único que introduzco son 5 Voltios por cualquier pin no era cierta... siempre se aprende algo con estas cosas.

Pero ahora haremos las cosas bien. La cuestión es que con el multímetro conseguiré medir tensiones, intensidades, resistencias... pero no logro entender cómo me permitirá conocer la función de cada pin sin estropear el mando de nuevo.

Gracias de nuevo por la ayuda brindada.
 
#11
100% compatibles!, en ese caso me puedo fiar de esas instrucciones. En definitiva, nuestra tabla de pinout queda del siguiente modo:

*Ver archivo adjunto: {pinout-1.jpg}

A continuación procederé a comprar un integrado 4021, por lo que veo es muy barato. Seguiré el post que me aconsejas, pandacba, muchas gracias.
 

Adjuntos

#12
J
Pero ahora haremos las cosas bien. La cuestión es que con el multímetro conseguiré medir tensiones, intensidades, resistencias... pero no logro entender cómo me permitirá conocer la función de cada pin sin estropear el mando de nuevo.

Gracias de nuevo por la ayuda brindada.
pero usa la imaginacion por ejemplo se pueden medir los nc con el tester


y
el mando se puede arruinar cuando le colocas los 5V en el pin erroneo
 
#13
una vez estudie el nes pad del una NASA
y no se que chip sea me imagino que es un 4021 customizado pues el 4021 es un codificador paralelo serie de 8 bits

en cambio el chip X hace lo mismo pero manda un tren de impusos diferente es decir si miramos en un osciloscopio por cada boton apretado veremos un cambio en la trama de la data y cuando pisamos un botor en el turbopad veremos un tren de impuslos me imagino que hay que alargar el latch para que entren mas bits

no se me imagino alargar el latch a 10 bits o es su defecto a 16 bits cosa que no creo
si uno revisa el NES controler para agregar 4 pads al nes
se vera otro chip X de mas pines este chip tiene la ventaja de agregar turbo A y turbo B
y en el osciloscopio se ve el mismo comportamiento
el mismo tren de impulsos

es cuestion de ver que pasa con el latch , mi problema es que no se que pasa pues estos chips del pad de la NASA estan averiados pues envian datos a lo bruto no son las gomas ni el cableado el chip nternamente esta morido
 
#14
Con el integrado 4021 podría intentar reemplazar el circuito gota negra, de forma que conseguiría reutilizar el mando que quemé. ¿Sabeis si podría funcionar, es decir, que lo único perjudicado haya sido el integrado gota negra?

Por otro lado tengo buenas noticias. Utilicé el otro mando con la configuración de Pinout de la NES original, y probando el siguiente código con Arduino funcionó correctamente.

Código:
// Arduino NES Controller Test Software.
 
byte NESData = 4;
byte NESLatch = 3;
byte NESClock = 2;
byte NESButtonData;

void setup() {
    Serial.begin(9600); 
    pinMode(NESLatch, OUTPUT); 
    pinMode(NESClock, OUTPUT);
    pinMode(NESData, INPUT);
}
 
void loop() { 
    GetNESControllerData();
//    Serial.println("RLDUSXBA");
    print_binary(NESButtonData,8);
    Serial.println("");
//    Serial.println("");
    delay(100);
}
 
void GetNESControllerData(){
    digitalWrite(NESLatch, HIGH);
    digitalWrite(NESLatch, LOW);
    for(int x=0; x<=7; x++){
        bitWrite(NESButtonData,x,digitalRead(NESData));
        digitalWrite(NESClock, HIGH);
        digitalWrite(NESClock, LOW);
    }
}
 
void print_binary(int v, int num_places){
    int mask = 0, n;
 
    for (n=1; n<=num_places; n++){
        mask = (mask << 1) | 0x0001;
    }
    v = v & mask;  // truncate v to specified number of places
    while(num_places){
        if (v & (0x0001 << num_places-1)){
            Serial.print("1");
        }
        else{
            Serial.print("0");
        }
    num_places--;
    }
}
No puedo linkear la fuente.

El resultado obtenido es algo así.
*Ver archivo adjunto: {NESControlPadCapturedData.png}
Aunque esta configuración inutiliza los botones turbo, ya que la NES original no cuenta con ellos.
 

Adjuntos

#16
Si cambias la gota negra por el CI te fa a funcionar, guiate por la misma info para el coneccionado
Me alegra saber que funciono el otro
 
#17
yo tengo los mismos pads genericos y vienen en encapsulado tipo DIP

yo lo que haria seria buscar en las chacharas un pad de NES o uno de SUPER NES por que queremos mas botones

el super nes trabaja con 2 cd4021 solo que en cascada

ami me paso que por una extraña razon que desconosco
es que un pad original de NES no lo leia el microcontrolador y otro pad lo leia perfecto , cambie el cd4021 y la falla continuaba pero en la consola funcionaban bien y en el osciloscopio la trama estaba perfecta

solo fue algo que ami me paso la solucion fue usar otro nes pad



otra cosa que me pasaba decir

yo tambien queria utilizar los botones de la NASA pero como dije son trenes de impulsos y tambien pense que salian esos trenes en donde deberia ir A y B pero no es asi salen en tro lado de la trama de 8 bits

si no me crees checalo en el osciloscopio para hacer eso debes usar 2 canales uno en DATA y LATCH
en el latch vez cuando empieza y acaba la trama y en el data puedes ver como turbo A y tubo B se encuentran en otro lado yo digo que eso fue diseño de de un protocolo de la propia NES si uno destapa un NES el mando pasa atravez de la PPU y no a un circuito como un puerto

bueno esa es mi opinion
 
Última edición:
Arriba