Mesmo temendo que o Feliciano não aprove, resolvi inserir o artigo dele na íntegra, somente com correções de escrita. Feliciano, agradeço muito o seu trabalho, e, se desejar, entre em contato que eu despublico o artigo.
|
|
Logo após os primeiros testes com meu multicart do atari descobri que havia alguns jogos que ocupavam 8kB e 16kB de memória. Aparentemente esses jogos não poderiam rodar no videogame pois o máximo que o processador (6507) consegue acessar é 4kB. Seria necessário um circuito de bankswitch para controlar os bancos de memória.
Pois bem, entre os jogos de 8KB e 16KB estão os melhores já lançados para Atari como Hero, Dukes of Hazzard e Smurfs. Precisava encontrar uma solução para testar esses jogos. Procurei um pouco (em 2003) e encontrei aquele que hoje é considerado o melhor documento sobre cartuchos de Atari 2600, o Sizes.txt do Kevin Horton. Nesse documento estão listados quase todos os cartuchos lançados e protótipos com seus respectivos sistemas de Bankswitch e mais outros dados. No inicio do texto existe uma descrição de cada sistema e algumas dicas de implementação.
Com essas informações consegui projetar um novo cartucho de testes, desta vez com capacidade não só para jogos normais de 2kB e 4kB mas também para 8KB e 16kB (F8 e F6 respectivamente). Isso já cobre quase 75% dos jogos existentes para o console.
Antes de falar do meu cartucho vamos dar uma relembrada do funcionamento dos dois principais sistemas de bankswitch:
Sistema F8: Neste caso a memória do cartucho é dividida em dois bancos de 4kB cada. Um circuito extra no cartucho monitora os endereços e caso ocorra um acesso ao ponto 1FF8 ou 1FF9 ocorre uma troca do banco de memória. O mapeamento fica:
1FF8 -> Banco 0
1FF9 -> Banco 1
1FF6 – Banco 0
1FF7 – Banco 1
1FF8 – Banco 2
1FF9 – Banco 4
Depois alguém aqui no Brasil descobriu uma forma mais barata de fazer isso com apenas dois CIs 74LS10. Eu tirei o esquema desse circuito, mas não sei onde coloquei. No momento não tenho nenhum cartucho destes e não posso fornecer mais detalhes. Essa foi a implementação mais comum do F8, muito usada pela Dactar, Atarimania e outros fabricantes. Nunca vi um cartucho F6 nacional, apenas importado e com chips bolha na placa.
Como eu não consegui uma PLD pequena e um gravador tive que tentar uma abordagem mais estranha criando a minha própria PLD. Ou melhor, uma implementação baseada na teoria das PLDs.
Assim nasceu a EPROM PLD. Uma EPROM comum programada para se comportar como um circuito de bankswitch F8 ou F6. Através de realimentação de endereços consegui emular os Flip-Flops necessários para chavear os bancos.
Seguem os esquemas para F8 e F6:
Para F8 (27C128):
0000 a 0FFF = 02
1000 a 1FFF = 00 -> 1FF8 = 00 1FF9 = 01
2000 a 2FFF = 03
3000 a 3FFF = 01 -> 3FF8 = 00 3FF9 = 01
0000 a 0FFF = 04
1000 a 1FFF = 00 -> 1FF6= 00 1FF7 = 01 1FF8 = 02 1FF9 = 03
2000 a 2FFF = 05
3000 a 3FFF = 01 -> 3FF6= 00 3FF7 = 01 3FF8 = 02 3FF9 = 03
4000 a 4FFF = 06
5000 a 5FFF = 02 -> 5FF6= 00 5FF7 = 01 5FF8 = 02 5FF9 = 03
6000 a 6FFF = 07
7000 a 7FFF = 03 -> 5FF6= 00 5FF7 = 01 5FF8 = 02 5FF9 = 03
No caso do circuito F6 duas das saídas são usadas para chaveamento de bancos. Pelo esquema dá pra ver que a memória dobrou. Cada Flip-Flop emulado necessita do dobro de memória. Aproveitei e coloquei a famosa inversão do endereço A12 que no Atari é usado como Chip Select do cartucho.
O único problema dessa maluquice é a escolha das memórias. Os tempos de acesso influenciam muito no funcionamento. Com duas memórias EPROM de 150ns o circuito não funcionou de jeito nenhum. Os melhores resultados eu consegui com uma Flash de BIOS recuperada de uma placa mãe velha (90ns) e uma EPROM de 100ns. Os jogos de 16kB são os mais sensíveis. Alguns não funcionaram e outros funcionaram parcialmente.
Em 2005 apresentei esse conceito em minha antiga página e recebi comentários de pessoas que testaram com memórias mais rápidas e não houve problemas. Posso afirmar então que a EPROM PLD funciona.
A última vez que liguei esse cartucho foi em 2005/2006. Abandonei o projeto por falta de memórias mais rápidas. Qualquer hora vou ver se consigo umas de 70ns ou mesmo de 50ns que hoje são comuns em modens ADSL e DVD players para guardar o firmware.
Nota:
Percebi que muitos chegaram até o blog procurando pelo esquema do Atari. Ele pode ser encontrado no site AtariAge nas versões PAL e NTSC. Vale lembrar que o console fabricado no Brasil pela Polyvox é o NTSC com uma placa de Transcoder NTSC para PAL-M.
Atualização 16/03/2015: Fiz um programinha pra gerar os arquivos .bin das memórias e subi para o GitHub.
Comments fornecido por CComment