sexta-feira, 2 de maio de 2014

Como funciona um cartucho de Atari 2600 com menu.

Quero deixar a minha contribuição para quem esta pensando em montar um multicart e quer fazer bonito.

Vou explicar aqui a ideia de como funciona para ter um multicart com menu, como funciona o 'truque' da escolha etc.

Vamos la, essa explicação é destinada a quem entende um pouco da programação do Atari2600 E de um pouco de eletronica, precisamente portas lógicas, ou seja, não muito difícil de fazer.

Um bankswitch nada mais é que mudar um banco da ROM/EPROM durante o funcionamento, como ja devem saber o atari só endereça diretamente até 4kb, para ter jogos maiores existe um circuito que pula para os próximos 4kb da ROM e com isso seu código dobra de tamanho, existem vários BS por ai, mas não to aqui para falar de BS, porem o menu utiliza da mesma técnica.

O atari quando é ligado, SEMPRE acessa o endereço FFFC da ROM, neste endereço esta o ponto exato da rom onde o jogo começa, pois quando a gente programa, o inicio pode variar, isso faz com que seja normalizada, você acessa o endereço FFFC e o código do jogo indica o lugar certo para inicio.

Muito bem, sabendo disso, montamos um espécie de BS que na verdade é acessada apenas um vez (pelo menu) e depois não trabalha mais, ela retem o endereço do banco que queremos e fica la até você desligar o console.

Então vamos montar um cartucho com 15 jogos, como ficaria ? Mas porque 15 jogos se a lógica me diz que vão ser blocos múltiplos de 2 e nesse caso era para ser 16 (na eprom 27C512 cabem 16 blocos de 4kb) ? bom,  o menu já ocupa um bloco, sendo assim, sobram 15 blocos para os jogos.

No cartucho você inclui um registrador de 4bits, pode ser um 74ls173, atente para que o mesmo tenha um capacitor no reset para zerar efetivamente ao ser ligado, nas 4 saídas do mesmo, temos que ter o endereço 0000 .. esse será o banco que vamos colocar o menu, ou seja, o primeiro banco, o atari vai acessar o endereço FFFC do código do menu que la terá o endereço do inicio do seu código correto.

Muito bem, não entrando em como programar para o 2600, então os 15 jogos vão ter que acessar os bancos de 0001 até 1111 correto ? isso nos dá 15 combinações, você cria um menu, que inicia já no primeiro nome com valor 0001 e ao pressionar o controle abaixo ou acima, você aumenta ou diminui esse valor, acho que até aqui tranquilo certo ??

Essa contagem é em binário, então o segundo jogo será 0010, o terceiro será 0011 e assim por diante ...

Ok, já sabemos como atribuir um valor de banco para o jogo selecionado na tela, mas e para transferir isso para o registrador no cartucho ??

O 2600 endereça até 4kb diretamente, o que passar disso tem que ter um truque, o mais famoso BS acessa o endereço FFF9 para ir para seu segundo banco e FFF8 para voltar ao primeiro banco, na linha de endereço do slot, temos de A0 até A12, sendo este ultimo apenas um ativador da rom (ele manda sinal 1 para ativar a ROM e 0 para desativar) então o que interessa esta somente de A0 até A11, são com eles que vamos identificar o endereço enviado pelo atari.

Então veja, para o endereço FFF8, os pinos de address (A0 a A11) vão estar assim:

A A A A A A A A A A A A A < Pinos de endereços
1 1 1 9 8 7 6 5 4 3 2 1 0
2 1 0

1 1 1 1 1 1 1 1 1 1 0 0 0 < valores nos pinos

Agora veja a chamada para o FFF9:

A A A A A A A A A A A A A < Pinos de endereços
1 1 1 9 8 7 6 5 4 3 2 1 0
2 1 0

1 1 1 1 1 1 1 1 1 1 0 0 1 < valores nos pinos

Repare que somente o pino A0 muda seu valor, isso nos facilita muito na hora de montar o hardware.

Quando eu digo FFF8 considere que ele não 'entende' o primeiro F (em binário 1111) pois ele só endereça até o A11, então só cabe ali o 1 mais a direita do F .. então qualquer outro valor que tenha 1 no seu digito mais a direita vai funcionar na verdade, podendo ser 1FF8, 3FF8 e assim vai.

Então temos que designar um endereço que de preferência não entre em conflito com as chamadas, nem da ROM nem dos comandos internos, difícil ?? sim, apesar de regulamentado os endereços a usar, tem jogo (programador) que usam chamadas diferentes nos seus games, e isso acaba dando zica na pratica, imagine se o menu funcionar com FFF9 para escolher o jogo, e eu estou usando um jogo de 8KB que utiliza esse endereço ?? não vai dar certo, em anexo (me peçam por mensagem abaixo) uma lista com os endereços internos utilizados, pelo menos os mais utilizados, e seus mirrors.

Nos meus menus eu utilizo o endereço 03CX  (X = qualquer valor), se você procurar na tabela, vai ver que ele é um mirror de um endereço da RIOT ... então se os programadores utilizarem os endereços padrões nos seus códigos, nenhum problema acontecerá, já os que, por algum motivo, resolvem utilizar um endereço mirror, pode dar problema, e dá no 03CX (alguns jogos não funcionam com meu menu por isso)(OBS: como o exemplo que dei do BS F8 ele utiliza um endereço da ROM pois ativa o pino A12, o programador tem que  saber exatamente o que tem nesse endereço que não vá dar conflito com o resto do código, e eu estou pensando em mudar meu endereço de chamada para uma na ROM, acho que os jogos que não funcionam pela incompatibilidade possam voltar a funcionar, só testando)

X pode ser qualquer valor, não importa, visto que ali teremos a informação de qual banco acionar, já sabemos também que o endereço 03C0 nunca será chamado, pois o banco 0 é utilizado pelo próprio menu certo ??

Então no meu código fica assim, o jogador ao apertar o botão do controle ou acionar a chave RESET no console, retem o numero do jogo selecionado na lista, vamos supor que foi o décimo jogo, transformamos esse numero 10 em decimal para hexadecimal que fica A e adicionamos o endereço da chamada, no meu caso 03C, ficando 03CA.

Vamos ver como é a chamada do 03CX:

A A A A A A A A A A A A A < Pinos de endereços
1 1 1 9 8 7 6 5 4 3 2 1 0
2 1 0

0 0 0 1 1 1 1 0 0 X X X X < valores nos pinos

Sabendo o endereço que se quer usar, filtramos esse endereço na linha de endereços para acionar a função da troca de jogo (do menu para um jogo, isso no cartucho), ai entra a eletrônica, queremos registrar o endereço do banco, no exemplo o A, ou precisamente 1010 em binário.

Precisamos de um circuito que identifique que o endereço 03C foi chamado e ai sim pegar o A final e jogar no registrador.

03C em HEX fica 000111100 em binário, basta no cartucho, com auxilio de portas logicas verificar se é isso que esta chegando respectivamente de A12 a A4 (A3 a A0 não interessa, será jogado diretamente no registrador, não é necessário sua verificação) ... mas eu disse la traz que o A12 era somente para ativação da ROM certo ??? porque eu to verificando ele agora, e porque ele é um 0 e não um 1 para ativar a ROM ??? Porque agora não queremos ativar a rom, queremos apenas selecionar o banco certo na ROM do cartucho apenas, o endereço 13C com toda certeza é um endereço que a ROM do jogo utiliza, nenhum endereço referente a ROM do cartucho pode ser usado, então o 1 do começo não pode estar ali, vamos usar o 0 e temos que verificar se ele é um 0 mesmo, pois o menu e os jogos vão sempre utilizar o endereço 13CX, cagando o que o registrador faz no cartucho (trocando de banco durante o jogo).

Bom, se as portas lógicas determinarem que o endereço 03C realmente foi chamado, então basta pegar os valores dos pinos de A3 a A0 do jeito que vierem e colocar diretamente no registrador de 4bits, a saida do registrador estará ligado diretamente aos pinos da ROM/EPROM que mudam os bancos (no caso de 15 jogos no cartucho na eprom 27C512, serão os pinos A15 a A12, lembrando que o A12 da ROM não é o A12 do barramento, eles não se comunicam).

Legal, o meu código faz uma chamada 03CX e o banco é trocado, fantástico certo ??? errado, ainda temos um grave problema ai que precisa ser resolvido, já vi muitos errarem e abandonarem seus projetos justamente ai, explico.

O atari endereça 4kb, você já está careca de saber isso, legal .... quando usamos um sistema de BS ele troca de banco para ter mais informação no mesmo jogo, porém o jogo está preparado para isso, quando a chamada para troca de banco é feita, o código sabe o que vai ter no segundo banco na sequência de onde o primeiro banco parou, isso porque o atari não 'sabe' que o banco foi trocado, ele continua a acessar as informações da ROM achando que o mesmo banco de 4kb esta ativo, o programador tem que se preocupar que a sequência de informações no segundo banco seja precisa para o código não se perder.

Mas e o menu ?? como será que quando ele faz a chamada, ele vai saber que a ROM do jogo vai estar na posição certa ?? Já foi dito, basta, no código do menu, fazer uma chamada para o endereço FFFC, onde TODO jogo contém o inicio do seu próprio código, então , o menu esteja ele fazendo o que estiver, será desviado para FFFC ao passo que o banco na ROM é trocado.

Certo ?? ainda não, ainda falta uma coisa tão importante quanto a anterior, pense que o atari executa o código ininterruptamente assim que é ligado, ele não para, ele não pausa e tal ... seguindo a lógica vamos pensar como funciona até aqui, o que entendemos:

1. vc liga o cartucho, o registrador no cartucho é zerado escolhendo o banco 0000 da ROM
2. o menu é chamado pelo console pelo endereço FFFC que indica o início correto do código
3. o código fica esperando uma ação do jogador, escolher um dos itens e aguarda um comando de execução
4. ao chamar o código o hardware no cartucho vai trocar de banco
5. banco trocado o código faz a chamada ao FFFC do jogo escolhido para iniciar corretamente
6. todos ficam felizes para sempre ....

Não, ainda não ficam, porque se você trocou o banco no cartucho no passo 4, o endereço seguinte que o código que esta sendo executado pelo console, não será mais do código do menu e sim do código do novo banco, e o que vai conter la ?? ninguém sabe, você trocou de banco, o próximo passo seria uma chamada ao endereço FFFC que nunca será executado, pois o banco foi trocado e essa informação se perdeu, veja, você troca de banco e chama o FFFC, se trocou de banco, o que garante que a próxima instrução será uma chamada ao FFFC ?? Bom, como resolver isso ??

Veja que ao executar a chamada da troca de banco, eu preciso garantir que parte do meu código ainda esteja 'visível' pelo programa do menu para que a troca seja concluída com sucesso.

Então vamos detalhar mais um pouco o momento exato da troca:

jogo escolhido 10 (A como no exemplo)
adiciona o endereço 03C a chamada ficando 03CA
executa uma chamada nesse endereço (nessa hora o banco é trocado pelo cartucho)
agora teríamos que chamar o endereço FFFC, e que ficou de fora.

Então a solução é a seguinte:

jogo escolhido 10 (A)
adiciona o endereço 03C a chamada ficando 03CA
carregamos, ignorando ou não as informações da RAM, um código que vai terminar o processo
executamos o código da RAM
código da RAM faz a chamada 03CA
código da RAM faz a chamada FFFC
novo código do banco escolhido entra em ação e toda essa informação é perdida

Bom, como já trocamos o banco e a chamada de inicialização foi feita, não precisamos mais do menu agora certo ?? então perder a informação dele não causa problema algum.

O que ocorre na solução é que o atari precisa seguir instruções, não importa se é da ROM ou da RAM, o problema é que a RAM tem apenas 128b, muito pouco como você interessado nesse assunto já deve saber, mas na RAM precisamos de poucas instruções, apenas as de chamada, que no caso do exemplo é uma chamada, para 03CA e depois uma chamada para FFFC e pronto, isso ocupa poucos bites e da para ser colocado na RAM sem problemas.

Mas como fazer isso ?? oras, normalmente o código de qualquer jogo não começa limpando a RAM com 00 ? Basta fazer uma rotina que carregue o seu código na RAM em um endereço especifico (quando um jogo da lista for escolhido) e depois fazer uma chamada para ela, sabendo que a RAM esta alocada de 0080 a 00FF, seu código tem que estar dentro desses valores e você faz uma chamada para ele, por exemplo chamar, diretamente o endereço 0080 (ou 80) se você colocou ele no inicio da RAM ... como eu disse, depois que a chamada é feita, nada mais do menu importa, apenas que ele finalize a troca do banco, então o que tinha antes na RAM, que faz o menu funcionar, exibir as coisas certinhas, valor de cor do fundo, valor de cor das letras e tudo mais, não interessam mais agora, você ignora tudo tacando la seu novo código e executando de lá.

Bom, basicamente isso funciona ótemamente bem para um cartucho com 15 jogos de 4kb, o menu que programei tem 15 linhas (16 na verdade, a última eu utilizo para copyright).

E se for utilizar um BS com jogos 8kb com o menu ?? jogos de 8kb utilizam o A12 da ROM, suas chamadas vão ter que mudar para uma ROM maior ou vão caber metade dos jogos, ao invés de utilizar A15 a A12 da ROM, vamos utilizar A16 a A13 para os bancos e o A12 fica para o sistema de BS utilizado, mesma coisa para jogos de 16KB, sendo que esse utiliza A13 e A12 para o sistema de BS, os restantes da ROM podem ser usados para trocar seus bancos com outros jogos, no menu não é necessário mudar absolutamente nada para utilizar um jogo com BS.

Se for misturar jogos de diferentes BS fiquem espertos, jogos que não utilizam BS funcionam de boa (jogos até 4kb), jogos maiores tem que ter o sistema BS próprio para funcionar, mas jogos que não utilizam BS podem ser misturar com eles, mas cuide para que as ROMs dos jogos estejam do mesmo tamanho, dobrando ou quadruplicando as roms de 4kb para ficar do tamanho dos jogos que usam o BS.

Teoricamente, os BS mais utilizados são F8 e F6, com jogos de 8kb e 16kb respectivamente, e na teoria, um jogo dobrado de F8 TERIA que funcionar no BS F6, mas na pratica, metade dos jogos não funciona, então é melhor não misturar, ou se você tiver saco, ir testando quais vão funcionar e colocar uma lista aqui para gente consultar depois =-D

Bom, e se eu quiser um cartucho com mais que 15 jogos ?? Ai você vai ter que se virar =-)) eu desenvolvi algumas soluções, mas eu sou perfeccionista, tive que entrar em acordo comigo mesmo de qual utilizar, eu cheguei em 2 soluções plausíveis e tive que optar por uma delas.

Uma delas foi via código, você precisa de um registrador para cada tela cheia (até agora, expliquei como ter somente 1 tela cheia certo?), e um registrador para as páginas (que são bancos de 16 bancos, parece difícil né ? hehehe) para exemplificar novamente, imagine somente jogos de 4kb, os bancos que controlamos pelo menu são A15 a A12 .. se na ROM tiver o pino A16 moscando (27C010 por exemplo) ele pode controlar 2 páginas, cada página com um conjunto desse explicado (15 jogos). Então você pode controlar via código, que seria fazer uma chamada especifica que controle somente o registrador que cuida das páginas, nesse caso não fazendo nenhuma chamada ao FFFC pois você não quer trocar o jogo, quer continuar no menu, é mais simples que trocar de jogo, faz a chamada sem carregar código algum na RAM, sem fazer chamada nenhuma além da chamada que troca justamente a página (e obviamente é diferente da chamada que troca do menu para o jogo escolhido).

Essa solução é ótema, porém tem um efeito colateral que me irritava bastante, ao fazer a chamada da troca de páginas, funcionava, mas a tela dava uma piscada, e isso irritava, pois comecei a montar cartuchos com muitos jogos (cartucho de 240 jogos tem 16 páginas), mas tem a facilidade de fazer isso com o controle na mão, você coloca para direita, a pagina aumenta, coloca para esquerda, a pagina diminui e tal, comodidade 10.

A outra solução que tive e acabei usando pois não existe a piscada na tela, é de colocar um botão no cartucho, ele age diretamente no registrador (que agora não é mais um registrador, é um contador binário), existem vários tipos de contadores e usei o mais comum, que somente conta para cima (somando e não diminuindo) e para isso a parte chata é ter que adicionar um botão no cartucho que faz a contagem, foi uma escolha, como a pessoa escolhe o jogo e depois pode ficar horas jogando, achei que não seria tão ruim assim, o problema é alguém apertar o botão com o jogo já escolhido, entenderam que vai dar merda né ?? hehehe

Bom, é isso, tudo o que eu aprendi sozinho obviamente, apenas lendo uma coisa e outra por ai, fazendo engenharia reversa em alguns cartuchos e tals, foi o que passei para vocês ai.

Gostaria de ter contato de quem se meter a besta e montar o seu modelo, trocar ideias, de repente uma solução diferente para os problemas que enfrentei etc.

Dablio.

segunda-feira, 31 de março de 2014

Deslacrando jogos - parte 2 !



   É isso ai pessoal, vamos mostrar aqui mais um video que você jamais viu por ai, e dificilmente vai ver denovo, uma caixa de varejista sendo deslacrada, com 6 jogos de atari 2600 .. vou deixar para saberem o titulo quando verem o video =-))

   Apreciem sem moderação e quem quiser comprar, ainda tem 5 peças intocadas (nem eu toquei, sério).

   E novamente subi o video em outra conta, graças ao google que só permite anexar video do google+ e não da minha conta antiga no youtube, LIXO.

Clique no link abaixo para ver o video.


Veja algumas fotos da caixa ainda lacrada:






segunda-feira, 20 de janeiro de 2014

Deslacrando jogos !!

   Pode dar dó, mas eu sou comerciante, infelizmente isso ia acontecer cedo ou tarde, nesse post mostro um video que fiz abrindo uma caixa com 6 jogos lacrados de atari 2600 do jogo moon patrol.

   Essa caixa com 6 unidades eram entregues nos postos de venda, nas lojas etc.

   Essa caixa possui os jogos produzidos em 1982, e foi aberta agora em 2014, ou seja, passou 32 anos lacrada, porem os jogos dentro ainda pode ficar lacrados por mais um periodo desses, vai depender somente dos clientes que os comprarem.

   Mostro ainda a diferença de caixas, o que tenho a venda e uma versão que tenho na minha coleção.

   Infelizmente fiz a burrada de subir o video em uma conta diferente, e não consigo linkar aqui porque o video não aparece ainda na busca do youtube, mas abaixo esta o link do video.
 

segunda-feira, 4 de novembro de 2013

TV Boy II - Saida AV

  Bom, depois de comprar um TV Boy II repetido, eu resolvi vender um deles, porem eu tinha 2 modelos internos diferentes, um era ja com AV, parti para o com RF para modificar para AV afim do novo comprador ter a facilidade do uso.

  Descobri que o sinal AV ja estava praticamente pronto dentro do console, bastando puxar os sinais diretamente, então vamos la: primeiro, ao abrir o console, devemos retirar as chapas protetoras do chip e do RF: (fotos do aparelho ja transformado, mas vai dar para entender sem problemas)




  Agora retire todo o circuito de dentro da caixinha do RF, ja que não queremos mais esse tipo de saida, ele vai ficar sobrando la dentro:




  Eu utilizei o furo do proprio conector RCA do RF para passar o cabo AV por dentro, se o cabo que vc arrumar for fino o suficiente, é uma boa ideia, fica melhor assim, senão vai ficar um buracão com um fiozinho só saindo. Alias, se é para tirar o conector RCA, pode retirar a carcaça toda do RF logo, só vai atrapalhar.

  Na foto abaixo o que realmente interessa, a ligação, a foto ja é dele pronto, mas quem olhar o seu game original vai entender, olhando na mesma posição da foto, veja que vão subir 3 pinos de conexão da placa para a placa do RF que vc retirou certo ?? pode retirar os pinos tb, basta saber o que é cada um deles: esquerda = AUDIO, meio = VIDEO e direita = 5V. Nesse caso não vamos utilizar o 5V, mas caso voce ache que a tela ficou um pouco escura, pode usar um resistor com valor bem baixo para dar um up na imagem, ou ainda usar um transistor para melhorar a imagem, no meu caso eu achei um pouco escuro, mas nada que atrapalhe a jogar.




  Nas fotos acima da para ver que dei um nó no cabo, para ele não ser puxado e comprometer a ligação do fio, o GND, ou a malha do fio que vc usar, pode juntar dos 2 cabos, tanto A quanto V e soldar junto a carcaça do RF, ali é o GND da placa.

  Bom é isso, veja abaixo fotos dele pronto e funcionando.

  Outra dica, não quer usar as 4 pilhas ?? Mas você tem um atari compativel ? ou pelo menos a fonte dele ??

  Se você tem a fonte, e ela for bivolt manual (com a chavinha) e vc mora em um lugar onde a rede é 110V legal, vai dar para usar ... basta mudar a chave para a posição 220v na fonte do atari, mas utiliza-la em uma tomada com 110v .. isso faz a fonte cair para coisa minima acima de 6V, suficientes para funcionar o game e como eu utilizo aqui em casa, então pode usar que não vai queimar ... mas se onde você mora só tem 220v, ai sem chance.







  Um abraço do Dablio e até a proxima.



terça-feira, 30 de julho de 2013

AV mod - Telejogo I

Como assim ? AVmod, ja existe isso faz tempo ... ja vi no site do www.victortrucco.com .... sim, eu tambem vi, mas quando fui fazer não deu certo.

Com o cliente aqui do meu lado, fizemos e não deu sinal de vida, mas eu estava com 3 consoles para modificar, tentei em outro, nesse segundo, uma imagem bem escura e bem distante foi exibida, após inumeras revisões das ligações, parti para modificar o circuito, mas lendo as duvidas dos visitantes da pagina do mod, vi que quem tentou tambem não conseguiu, algumas dicas do VTrucco nas respostas fizeram eu modificar o circuito com sucesso. (ele mesmo diz que não lembra se passou o esquema correto, só ler as comentarios do site)

O mod original esta nessa pagina.

Posto agora o esquema que eu montei e funcionou. Algumas sombras ficaram na imagem, mas até no atari 2600 isso ocorre, então tomo que é meio que 'normal' apesar de eu não gostar, nunca consegui retirar esse efeito.




Como dica na pagina original, o resistor de 75ohm tem que ser de 3w, porem não conseguimos isso facilmente no mercado, eu fiz aqui com 2 resistores de 150 de 3w cada, ligado juntos. Eles esquentam mesmo.

Um detalhe é que no esquema original, onde ele indica onde ligar o positivo e negativo está invertido, La diz que o pino 14 do 57100 é positivo e o pino 12 do mesmo chip é negativo, mas é o inverso !!

Ja na parte do audio, coloquei no meu esquema, mas na pratica eu retirei o capacitor de 1uf, o som ficou falhando com ele instalado, liguei diretamente e o som ficou alto e claro sem falhas.

Bom, é isso, até que o VTrucco não atualize o esquema dele, podem montar esse que aqui funcionou.

Apesar do esquema para o telejogo II ser o mesmo no site original, apenas com 1 resistor adicionado, esse meu esquema não funcionou, não da sinal algum, ainda estou para ver o que acontece nesse modelo.

É isso. Abraço do DABLIO.

sábado, 25 de maio de 2013

CartMOD - Megadrive #1

Ola pessoal, estou de volta para postar um circuito que não vi pela net, é uma informação, mas nada que seja util nos dias de hoje, visto que temos eproms mais baratas que funcionam tanto em 8bits como em 16bits ... o circuito a seguir foi retirado de um cartucho piratinha de megadrive que peguei, fiz por curiosidade/conhecimento mesmo, pois ja sabia o que o mesmo fazia e que seria inutil na pratica, mas quem sabe, no projetinho de alguem a informação seja util.

Bom, o megadrive funciona em 16bits, ele le da eprom a informação em 16bits, ou seja, cada chamada ao cartucho tem que retornar 16bits, o circuito faz com que uma eprom de 8bits, seja usada em um circuito que exige 16bits.

Ele funciona basicamente com um registrador de 8bits, é feita uma chamada, esses 8bits são armazenados no registrador, a outra chamada é feita, para os 8bits complementares e então a saida do registrador é ativada, sendo assim 16bits são entregues a cada 2 chamadas.

Bom, isso é teoria minha, de observação, funciona desse jeito exatamente ?? Não sei hehehe

Isso porque o circuito utiliza a conexão de um pino do conector que não é utilizado na maioria dos cartuchos, com isso não sei o que ele exatamente faz, seja como for, é ele quem controla o clock do registrador e o endereço mais alto da eprom, no caso o A15, mas no cartucho que peguei, existem jumpers onde vc pode mudar para ele controlar do A15 ao A18, ou seja, de 512k a 4m de informação, sendo que o endereço mais alto sempre divide a memoria em 2, ele em nivel baixo os primeiros 256k são visiveis, ele em nivel alto, os 256k restantes ficam visiveis.

Agora, sei que o console não vai fazer 2 chamadas para obter o que ele precisa de um endereço, então esse pino 44 ou B21 do conector do cartucho é que faz a tal magica acontecer, entre uma chamada e outra, ele muda o nivel, passando de um estado para outro (não me interessou descobrir precisamente os estados, como disse, só queria saber como funciona meio por cima mesmo) e com isso, o inversor e o registrador entram em ação, armazenando 8bits, e quando o console requisita a informação, os 8bits restantes são retornados, junto com os 8bits do registrador, e assim é feita a magica.

Abaixo imagens, tanto do cartucho que tirei o circuito como do esquema bonitinho.





É isso ai pessoal, conhecimento nunca é demais e não ocupa lugar, sempre é bom =-)

Dablio.


quinta-feira, 4 de abril de 2013

Mod em tabletop coleco

Há muito tempo eu tinha pego um tabletop coleco do pac-man, porem o mesmo veio destruido por dentro literalmente, então guardei o case para montar justamente o que vcs podem ver agora, um mini arcade dentro do case.

Primeiramente, comprei um monitor de 4.3", depois comprei um plug play namco, mas era outro modelo, consegui queimar na montagem, comprei outro, queimei tambem (depois descobri que na placa os chinas colocaram o GND e VCC invertidos), bom, depois de estar de saco cheio pelos problemas, coloquei um mega drive com o jogo do ms. pacman, mas o mega era daqueles on-a-chip e o maledeto não funciona bem com o ms.pac-man (testei outros modelos com outros cartuchos e o defeito era o mesmo).

Bom, deixei tudo encostado, até que comprei no ebay diversos lotes de namco plug and play para mim, alguns vieram repetidos, outros vieram detonados por fora, sem tampa de baterias, enferrujado no compartimento de pilhas, mas funcionando, era o que eu precisava, um doador, ja que esses brinquedinhos não são baratos e eu ja tinha mandado 2 deles para o limbo.

Bom, o modelo que utilizei nessa montagem foi esse da foto:




Ele é legalzinho, mas dificultou a montagem, pois um dos jogos é especial, utiliza o twist control (vc gira a alavanca, não a movimenta para os lados para virar o carro) isso porque no arcade ele tinha um volante e não uma alavanca, quizeram reproduzir fielmente o arcade.

Outro ponto tambem é que esse tem 3 botões, um de pausa/reset, e 2 de jogo, o plug and play anterior, tinha somente 1 botão para jogo e um de reset, e nenhum jogo utilizava do twist control, o que deixava tudo mais simples, a dificuldade é que eu ja tinha instalado o outro comando e botão no case, para isso tive que adaptar os suportes de fixação, furação etc, ai tive que fazer tudo novamente, e esse comando com o twist é maior, tive que rebolar para acondicionar ele dentro do case, mas deu tudo certo no final.



Confira abaixo um video de como ele é originalmente:




Agora um video do meu como ficou:





Abaixo, fotos de todas as etapas, note que eu estava documentando legal todos os passos, quando estava montando da primeira vez, antes de queimar o primeiro plug play, depois deixei de lado a documentação, mas tirei varias fotos dele finalizado, confira a evolução:


 

 




















E agora fotos dele ja pronto:







Abraço do Dablio.