Invertendo o link serial do asciiPad SG-6 (parte 1)

sculpre Blocked Unblock Seguir Seguindo 5 de janeiro O asciiPad SG-6 aftermarket Sega Genesis controlador

O asciiPad SG-6 é um controlador de pós-venda Sega Genesis com botões extras e recursos de macro. Quando criança, eu não tinha ideia do que qualquer um dos interruptores estranhos fazia. Eu meio que os joguei para cima e para baixo até o controlador funcionar como eu esperava. Quando adulto, comecei a imaginar como o controlador é capaz de suportar mais botões do que o controlador de estoque, e muito menos a capacidade de lentidão da taxa de quadros que eu lembrava quando criança. É um mistério que eu não poderia simplesmente sair sozinha. Para a batcaverna!

Eu estou apenas começando como um reversor de hardware, então minhas ferramentas não são nada extravagantes. Para isso, usei um monte de fios de jumper , breakouts DB-9 masculinos e femininos e um analisador lógico de alto orçamento. Tudo dito, os materiais custam cerca de US $ 20. Aqui está a configuração.

A Sega conectada ao asciiPad e um analisador lógico usando breakouts e jumpers

Eu queria capturar os sinais vindos do controlador quando diferentes botões eram pressionados e diferentes modos eram definidos. O controlador é alimentado pela conexão serial, embora use uma pinagem não padrão. O terra é o pino 8, o VCC a 5v está no pino 5. Os outros pinos flutuam alto em 4v9. Eu verifiquei tudo isso com um multímetro (o meu não é nada extravagante ) antes de ligar qualquer coisa. Meça duas vezes, corte uma vez, como diz o ditado.

O controlador deve ser completamente autônomo, portanto, se você tiver uma fonte de alimentação de bancada, basta configurá-la para 5v e ligar o + rail ao pino 5 e o – rail ao pino 8. Eu não fiz isso. Em vez disso, optei por usar uma fuga DB-9 fêmea conectada a uma rampa DB-9 macho conectada ao controlador para alimentar o controlador e fornecer acesso aos sinais de pino. Eu fiz isso porque é barato e funciona. Meu pequeno analisador lógico está conectado ao breakout macho com alguns fios de jumper para que ele possa ler os níveis lógicos dos pinos. Eu colecionei traços para os pinos 1 a 4, 6, 7 e 9 (tudo menos o pino terra e VCC).

De lá, era hora de se divertir. Eu comecei a ligar o Sega e fazer um rastreamento para ver se havia algum sinal de inicialização enviado pela linha pelo controlador ou pela Sega. Não existem – todas as linhas ficam altas. Então comecei a tomar rastros com botões individuais. Que rapidamente se tornou … estranho.

Pinout controlador Sega Genesis, cortesia de pinouts.ru

Para todos os pinos, um nível lógico de 0 (sendo o pino alto em 4v9) indica que o botão associado a esse pino não está sendo pressionado. Um nível lógico de 1 (o pino sendo direcionado ao terra) indica que o botão está sendo pressionado. A pinagem do controlador padrão geralmente associa um botão a cada pino, no entanto, há alguns casos em que os pinos são multiplexados e dois botões são capazes de conduzir o pino. No último caso, um pino especial Select diferencia os dois botões sendo alto ou baixo. Por exemplo, o botão Iniciar e o botão C são multiplexados no pino 9 – se o pino selecionado estiver baixo e o pino 9 estiver baixo, isso será interpretado pela Sega como o botão Iniciar sendo pressionado. Se o pino de seleção estiver alto e o pino 9 estiver baixo, ele será interpretado como o botão C sendo pressionado.

Quando comecei a pressionar os botões no asciiPad, apenas alguns deles afetavam o nível lógico dos pinos. Realmente importante, os botões padrão, como A e Start, não parecem ter nenhum efeito nas saídas dos pinos. Mas, você sabe, o asciiPad tem um monte de interruptores e, quem sabe, alguns deles podem estar futzing o funcionamento dos botões. Ele também tem esse botão "modo" que, se eu souber o que ele faz. Parecia que o próximo passo lógico era ligar o Sega a uma TV e ter alguma intuição sobre o que os botões estranhos no controle realmente fazem, em vez de confiar em minhas memórias de décadas de como ele funcionava jogando video games com meu irmão. .

Enquanto eu mantive todo o equipamento que veio com a Sega, incluindo o sintonizador de TV, infelizmente a interface RF é e sempre foi super mimada. Eu não consegui fazê-lo funcionar em um período de tempo que minha paciência permitisse. No entanto, eu desmontei a Sega e tentei diagnosticar quaisquer problemas aparentes no conector (não encontrei nenhum). Aqui estão algumas fotos:

Placa Sega Genesis (note que este não é o "Mega Drive" descrito em outras demolições ) Lado reverso da placa Sega Genesis

Voltei a pegar traços lógicos dos pinos do controlador e, com alguma tentativa e erro, descobri o que os controles “Auto / Turbo / Off” (ATO) fazem no controlador. Primeiro, visualmente, é evidente que um comutador está associado a cada botão no controlador, além dos botões “Iniciar” e “Modo”. Eu desliguei cada um dos interruptores do ATO e capturei os sinais mostrados abaixo.

Traçar pino asciiPad com os interruptores ATO definidos para “Off”

Em ordem de ativação, os botões pressionados durante o traçado eram: Cima, Baixo, Esquerda, Direita, Z, C, X, A, B, Modo, Start. Você notará que não temos ativações de pino suficientes no traçado para considerar todos esses botões. O que aparece no traço são as prensas em D e os botões B e C, que correspondem diretamente à pinagem descrita para o controlador da Sega. Claramente, algo está acontecendo com os botões que faltam. Mas nós ignoramos isso por enquanto, e passamos a configurar todos os switches ATO para o Turbo.

Traçar pino asciiPad com os interruptores ATO definidos para “Turbo”

Turbo parece rapidamente alternar um botão, enquanto ele é pressionado. Esta pode ser uma ótima maneira de entrar em alguns socos rápidos em um jogo de luta, ou flutuar em um jogo com voar, ou qualquer número de outras coisas.

Traçar pino asciiPad com os interruptores ATO definidos para “Auto”

O modo “Auto” do ASCII se comporta como o Turbo, exceto que ele está ativo enquanto o botão não estiver pressionado. Uma vez que um botão é pressionado, o sinal para esse botão é alto, efetivamente dizendo à Sega que o botão não está atualmente sendo pressionado.

O grande mistério em todos esses traços é por que os botões X, Y, Z, A, Start e Mode não parecem afetar a saída dos pinos. Eu poderia acreditar que o Modo talvez seja um botão que afeta a operação do controlador e não envia nada diretamente pela linha serial. Argumentos semelhantes podem ser feitos para os outros botões, por exemplo, talvez eles estejam desativados, pois um controlador Sega padrão suporta apenas os botões A, B e C. Mas o botão A é padrão, assim como o Start, e em nenhum lugar vemos aparecer na saída. Hora de desmontar o controlador.

A placa controladora asciiPad

Dentro do controlador, a primeira coisa que é revelada é o chip que está processando todos os sinais para o controlador. Além disso, realmente não há muito a ser visto – há alguns resistores e capacitores, mas muito poucos, e eles provavelmente estão apenas fazendo algumas coisas para os sinais vindos dos botões para o chip. Obviamente, há também o cabeçalho com os fios coloridos saindo dele, que é enrolado no fio preto e se torna a conexão serial com a Sega. Os sinais encaminhados para esse cabeçalho vêm diretamente do chip.

A parte de trás da placa controladora asciiPad, que faz a interface dos botões físicos

Por outro lado, temos os componentes da placa que fazem interface com os botões. Para os botões de pressão, quando eles são pressionados, eles completam um circuito, que muda o sinal que os chips do outro lado da placa recebem. Para os interruptores de toggle, eles completam circuitos diferentes enquanto deslizam em uma das três posições diferentes. Na posição “Off”, eles não completam nenhum circuito; na posição “Turbo” eles se conectam com a pequena peça cinzenta média e na posição “Auto” conectam-se com a pequena peça cinza externa. A exceção a isso é a alternância “Rápido / Lento”, que possui apenas dois modos (essa opção está localizada ao lado dos botões Iniciar e Modo).

Os bits mecânicos de backend dos botões e interruptores do asciiPad

Quando minha paciência retornar, provavelmente começarei novamente tentando conectar a Sega a uma TV para que eu possa diagnosticar funcionalmente qualquer problema com o controlador. É possível que os botões que não parecem enviar sinais realmente não estejam funcionando. É uma velha peça de tecnologia e foi bem usada quando era nova.