Re: Desafio de Amp-Ops e engenharia reversa de arcades (Zaxxon, 1982)

5 views
Skip to first unread message

Felipe Sanches

unread,
Jul 5, 2014, 11:48:03 PM7/5/14
to Garoa HC, Hackerspace Campinas, hackers...@googlegroups.com, hackers...@googlegroups.com, hacker...@googlegroups.com, hackerspacessa, rau...@lists.riseup.net, mateh...@googlegroups.com, Manoel Lemos, cala...@googlegroups.com, arduino-...@googlegroups.com, computacao_poli_usp
O manual de serviço do jogo de arcade Zaxxon, da SEGA, de 1982 encontra-se disponível para download em:
http://www.arcade-museum.com/manuals-videogames/Z/Zaxxon.pdf

Nas páginas 132 a 135 do PDF tem o esquemático do circuito de geração de efeitos sonoros. O circuito é composto por uma enorme quantidade de amp-ops. Eu andei vendo uns tutoriais sobre o funcionamento de amp-ops mas ainda não foi suficiente para eu entender o principio de funcionamento dessa placa de som. Alguém aqui manja do assunto e topa o desafio de tentar entender como funciona?

happy hacking,
Felipe "Juca" Sanches

RC

unread,
Jul 6, 2014, 6:36:54 AM7/6/14
to hackers...@googlegroups.com, Garoa HC, Hackerspace Campinas, hackers...@googlegroups.com, hacker...@googlegroups.com, hackerspacessa, rau...@lists.riseup.net, mateh...@googlegroups.com, Manoel Lemos, cala...@googlegroups.com, arduino-...@googlegroups.com, computacao_poli_usp
Olá JUCA, tudo bem?

Vou chutar, hein... :)

Parece ser um circuito parecido com o chip SID (Sound Interface Device) um PSG (Programmable Sound Generator), que de acordo com os dados enviado pelo 8255 PPI (Programmable Peripheral Interface) ele gera os sons da nave, bombas, etc (veja indicações nas saídas do 8255 página 134).

E a pergunta... Por que todo aquele circuito cheio de OpAmps ao invés de utilizar um chip SID? Simplesmente porque o ZAXXON é de 1982 e o SID foi criado em 1983.

Abração,


--
--
-------------------------------------------------------------------------------------------------------
- Voce recebeu esta mensagem porque se inscreveu no grupo Hackerspace SJC
- Para postar mensagens, envie um email para hackers...@googlegroups.com
- Para sair do grupo ou ver mais opcoes, visite:
http://groups.google.com/group/hackerspacesjc?hl=pt-BR

---
Você recebeu essa mensagem porque está inscrito no grupo quot;zHackerspace SJC" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para hackerspacesj...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Felipe Sanches

unread,
Jul 6, 2014, 8:48:56 AM7/6/14
to hacker...@googlegroups.com, hackers...@googlegroups.com, Garoa HC, Hackerspace Campinas, hackers...@googlegroups.com, rau...@lists.riseup.net, mateh...@googlegroups.com, Manoel Lemos, cala...@googlegroups.com, arduino-...@googlegroups.com, computacao_poli_usp
Olá RC. Tudo ótimo!

Legal você ter respondido, mas tenho a impressão de que não é isso não...

Eu não chamaria o circuito de som do Zaxxon de PSG. Por que a única coisa que a CPU faz é ligar ou desligar efeitos sonoros individuais. Isso é diferente do que acontece nos PSG como os AY-3-8910, por exemplo, em que é possível setar uma frequência base, amplitude, e outros parâmetros. No caso do Zaxxon, trechos individuais do circuito de geração de som são simplesmente ligados ou desligados pelos bits da PPI (8255). O processamento das ondas sonoras é todo analógico e não parametrizado. Se entendi bem são osciladores 555 com estágios de processamento usando alguns filtros RC (é o seu nome! :-P) e os Amp-Ops que eu não entendi bem ainda.

Eu tenho dois principais motivos para estar analisando esse circuito:

1) O MAME não emula esse circuito. A emulação do arcade Zaxxon feita pelo MAME utiliza samples WAV gravados de uma placa do hardware original e simplesmente liga/desliga o playback desses samples a cada evento de mudança de valor dos bits de saída da PPI emulada (controlada pelo Z80 emulado). Eu gostaria de emular de verdade essa placa de som. O MAME tem um subsistema de simulação de circuitos discretos. Basta descrever o netlist (interconexão dos componentes discretos) e o MAME faz uma simulação numérica do circuito e permite que algum nó da malha forneça a saída de áudio de um speaker, por exemplo. O problema dessa abordagem é que o subsistema de simulação de netlists do MAME parece que ainda precisa passar por maiores otimizações pra conseguir simular um circuito tão grande. Eu transcrevi só a netlist do trecho que produz o efeito sonoro marcado com o nome "SHOT" no esquemático, mas o resultado da emulação foram uns apitos com o som bem picotado e com performance péssima (provavelmente pela quantidade grande de contas que precisam ser feitas na simulação o MAME não dá conta de fazer isso em tempo real ainda).

2) Se emular em tempo real por meio do netlist não rola, tenho o interesse de pelo menos entender o princípio de funcionamento e talvez determinar alguma equação matemática que descreva as ondas geradas. Me lembro das aulas de eletrônica na faculdade que é possível fazer esse equacionamento de circuitos elétricos. Entretanto, pode ser que seja impraticável derivar um modelo analítico para um circuito tão grande... Aí eu fico feliz pelo menos entendendo o que se passou pela cabeça do designer pra bolar esse circuito. Quero no mínimo conseguir entender um pouco melhor esses macetes de projeto eletrônico analógico usando Amp-Ops...

happy hacking,
Felipe "Juca" Sanches

--
Você recebeu essa mensagem porque está inscrito no grupo quot;HackerspaceSC" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para hackerspaces...@googlegroups.com.

RC

unread,
Jul 6, 2014, 11:28:45 AM7/6/14
to hackers...@googlegroups.com, hacker...@googlegroups.com, Garoa HC, Hackerspace Campinas, hackers...@googlegroups.com, rau...@lists.riseup.net, mateh...@googlegroups.com, Manoel Lemos, cala...@googlegroups.com, arduino-...@googlegroups.com, computacao_poli_usp
Olá JUCA,

É isso mesmo, você tem razão, não há qualquer programação como em um SID, de fato é um simples ligada/desliga efeito. É um circuito de ruídos pré-programados, nada mais que isso. Com certeza se fosse um SID os efeitos seriam, possivelmente, bem mais elaborados se na época eles tivessem esta tacnologia a mão. Sem falar que simplificaria e tornaria mais barato esta parte do circuito.

No seu caso, uma saída para entender quais sinais são produzidos por cada sub-conjunto de circuitos com OpAmp, talvez uma alternativa seja simulá-los com o LTSpice e ver as formas de ondas e ao final compor os sinais já que tudo se soma, como num MIXER. Imagino que você chegará a algo muito próximo dos arquivos de som que você já possui do game atualmente em seu emulador. Se quiser estudar OpAmps, é só Googlar e encontrar inúmeras referências e cálculos a cada modelo de circuito. Alguns são como A + B = C.

Abração,

Euclides

unread,
Jul 6, 2014, 12:31:55 PM7/6/14
to hackers...@googlegroups.com, hacker...@googlegroups.com, h...@listas.tia.mat.br, hackers...@googlegroups.com, hackers...@lists.riseup.net, rau...@lists.riseup.net, mateh...@googlegroups.com, man...@lemos.net, cala...@googlegroups.com, arduino-...@googlegroups.com, computaca...@googlegroups.com, ju...@members.fsf.org
Grande Juka!!!

Achei interessante a abordagem desses circuitos (tudo até simples pelo que entendi...).

O MAME permite executar algum programa/rotina externa? Feita em qualquer linguagem? .EXE?
Poderia se pensar em criar um software externo que pudesse ler um arquivo em algum lugar (desde que ele seja gravado no momento que se deseje o som) e este programa carregaria os sons, ficaria "de olho" na pasta onde o MAME escrevesse o arquivo, dentro deste arquivo existiria basicamente o número gravado correspondentes aos bits do 8255 (já brinquei com esta "peçinha") e assim dependendo do que estivesse nesses bits, seria tocado o(s) arquivo(s) correspondente(s).
Não é o fino do que poderia ser feito, mas quem sabe...

Euclides.

Felipe Sanches

unread,
Jul 6, 2014, 12:52:18 PM7/6/14
to hackers...@googlegroups.com, Garoa HC, Hackerspace Campinas, hackers...@googlegroups.com, rau...@lists.riseup.net, mateh...@googlegroups.com, Manoel Lemos, cala...@googlegroups.com, arduino-...@googlegroups.com, computacao_poli_usp
2014-07-06 13:31 GMT-03:00 Euclides <euc...@gmail.com>:
Grande Juka!!!

Achei interessante a abordagem desses circuitos (tudo até simples pelo que entendi...).

O MAME permite executar algum programa/rotina externa? Feita em qualquer linguagem? .EXE?
Poderia se pensar em criar um software externo que pudesse ler um arquivo em algum lugar (desde que ele seja gravado no momento que se deseje o som) e este programa carregaria os sons, ficaria "de olho" na pasta onde o MAME escrevesse o arquivo, dentro deste arquivo existiria basicamente o número gravado correspondentes aos bits do 8255 (já brinquei com esta "peçinha") e assim dependendo do que estivesse nesses bits, seria tocado o(s) arquivo(s) correspondente(s).
Não é o fino do que poderia ser feito, mas quem sabe...

Euclides.



Euclides,

Isso é o que o MAME já faz hoje em dia. Ele tem um player interno de samples WAV e sincroniza o playback em função dos bits da PPI emulada.

Juca

 

Felipe Sanches

unread,
Jul 6, 2014, 12:56:59 PM7/6/14
to mateh...@googlegroups.com, Computação (Geral) POLI-USP, hacker...@googlegroups.com, hackers...@googlegroups.com, Garoa HC, Hackerspace Campinas, hackers...@googlegroups.com, rau...@lists.riseup.net, Manoel Lemos, cala...@googlegroups.com, arduino-...@googlegroups.com



2014-07-06 12:33 GMT-03:00 Pedro Pedruzzi <pedro.p...@gmail.com>:
Porém eu ainda acho que a melhor opção para o MAME é já ter os sons amostrados previamente (como já é feito). Você pode tentar simular num simulador melhor e obter amostras mais fiéis aos sons originais. Desta forma vc poderá ver os sinais intermediários e isto vai te ajudar a entender o circuito. Porém nada como conversar com alguém que conhece eletrônica analógica para te explicar este design!

ızznɹpǝԀ oɹpǝԀ


Do ponto de vista de performance sim, a melhor opção é como já está agora, dado que simular o circuito em tempo real parece que não vai rolar com a performance dos computadores de hoje em dia (a não ser que algum mago das otimizações faça algum truque maneiro).

Entretanto, um emulador melhor - do ponto de vista de emular corretamente o hardware - seria um que simulasse o estágio de som. Do jeito que está hoje, funciona bem para emular a execução do software original (o game Zaxxon). Mas se alguém rodar um game homebrew escrito pra rodar nessa placa-mãe, o resultado do emulador pode não ser exatamente o resultado da execução no hardware de verdade.

Juca

Felipe Sanches

unread,
Jul 6, 2014, 8:07:45 PM7/6/14
to Computação (Geral) POLI-USP, hacker...@googlegroups.com, hackers...@googlegroups.com, Garoa HC, Hackerspace Campinas, hackers...@googlegroups.com, rau...@lists.riseup.net, Manoel Lemos, cala...@googlegroups.com, arduino-...@googlegroups.com
Cópia de umas mensagens que rolaram sem querer em PVT

---------- Forwarded message ----------
From: Raphael Lisicki <rap...@ralisi.de>
Date: 2014-07-06 20:58 GMT-03:00
Subject: Re: [matehackers] Re: [Computacao] Re: [HackerspaceSC] Re: [HS-SJC] Re: Desafio de Amp-Ops e engenharia reversa de arcades (Zaxxon, 1982)
To: Felipe Sanches <ju...@members.fsf.org>


Sim, pode encaminhar so apertei "responder". ja e quase duas de manha.

Recebi o email pela lista dos matehackers.

se tu passa pela alemanha, vou te dar uma cerveija, pode deixar ;)


2014-07-07 1:48 GMT+02:00 Felipe Sanches <ju...@members.fsf.org>:

Alguma razão para escrever apenas para mim? Acho que o mais legal é conversar com todas as pessoas dos hackerspaces que mantive em cópia nessa thread, pra aumentar a chance de mais gente participar da discussão.

Seu português é muito bom! Ich sprache deutche nicht! Ich mochte ein bier, bitte! :-P

Pressuponho que você participe da lista de emails de algum dos hackerspaces do sul (Porto Alegre? Santa Catarina?)

Eu tenho sim uma netlist, entretanto está descrita com a sintaxe do subsistema de simulação de netlists do MAME. Provavelmente nenhum outro programa entende essa sintaxe. De todo modo, se quiser ver, vai em anexo o patch :-)

Talves dê pra escrever um script que converta dessa sintaxe para a sintaxe de outros programas. Mas muito provavelmente será mais fácil re-transcrever o circuito do zero na interface do programa que você estiver usando para simular o circuito.

Hoje durante o dia eu andei pensando em montar uma réplica desse circuito e observá-lo no osciloscópio.

Tenho a sua permissão para enciar essa mensagem (contendo uma cópia da mensagem que você me enviou) para todos os outros hackerspaces?

até logo,
Felipe "Juca" Sanches


2014-07-06 20:40 GMT-03:00 Raphael Lisicki <rap...@ralisi.de>:

Oi Felipe, tudo bem?

Pelo o que eu entendi, tu ja transformou o circuito para um netlist, ne?

Assim sendo, o que tu acha de fazer uma simulacao blackbox num outro programa. Dai, tu pode brincar com os sinais de entrada e ver o efeito no sinal de saida. Talvez e pssoivel de identificar "funcoes" ou coisas assim.

Tu sabe de onde vem os .wav do MAME? capturados de hardware real ou simulados assim? Se for de Hardware real, podes gerar novos, para aumentar a qualidade ;)

Eu acho que para simplificar esse circuito de forma matematica, e de achar umas equacoes, que descrevem esse cicruito, ele e complexo demais. Ja nao rola de descrever facilmente um unico OpAmp no mundo analgico.

Caso que tu nao entendeu porra nenhuma do meu portugues, posso tentar em ingles ;)

abraco
raphael

Felipe Sanches

unread,
Jul 7, 2014, 10:25:14 AM7/7/14
to Computação (Geral) POLI-USP, hacker...@googlegroups.com, hackers...@googlegroups.com, Garoa HC, Hackerspace Campinas, hackers...@googlegroups.com, rau...@lists.riseup.net, Manoel Lemos, cala...@googlegroups.com, arduino-...@googlegroups.com
Acabei esquecendo de anexar o patch :-P
Aqui vai!

Juca
0001-wip-zaxxon-discrete-sound.patch
Reply all
Reply to author
Forward
0 new messages