«

»

nov 27 2011

Turbo loading no ZX Spectrum: O caminho das pedras

Não é novidade que finalmente consegui um ZX Spectrum +2, e enquanto não crio coragem para fazer alguma plaquinha IDE para carregar os jogos mais rápido, tive que me virar com o cassete, ou melhor, a entrada EAR (porque se tivesse que realmente carregar através de fitas minha sanidade tinha ido pro espaço!).

Através de toda a experiência que tive nestes últimos 4 dias dormindo apenas 4 horas por noite só testando isso, resolvi dar o caminho das pedras para aqueles usuários de ZX Spectrum (vale para os TK90) que ainda não tem uma interface rápida e querem desfrutar de seus tão saudosos jogos sem ter que esperar até 15 MINUTOS (WTF!?) de carregamento.

 

Preparando o equipamento

Infelizmente não é para todos que basta conectar um cabo da porta EAR do micro indo para o PC, temos algumas peculiaridades em cada versão de ZX Spectrum, vamos lá:

TK90, TK95, ZX Spectrum, ZX Spectrum + e ZX Spectrum 128: Sem novidades, basta pegar um cabo com plugue P2 macho nas duas pontas. Uma ponta você liga no EAR do micro e a outra na saída de som do PC.

ZX Spectrum +2 cinza: Nesta versão foi removido a entrada EAR do micro, então o usuário terá que fazer uma modificação na placa ou poderá utilizar aquelas fitas cassete que tem saída P2, mas neste caso as velocidades de carregamento poderão ser menores em relação ao que for demonstrado aqui. Há também uma fita cassete que reproduz MP3, porém, é necessário que a compressão esteja na maior taxa possível para obter sucesso, nada abaixo de 256Kbps, se possível, 384Kbps. Obs.: Não se esqueça de limpar o cabeçote com álcool isopropílico.

ZX Spectrum +2 preto / +3: Nesta versão a porta EAR compartilha a saída de som em um conector P2 estéreo, segue abaixo o esquema para montar o cabo:

Conector TAPE/SOUND
                                         Para a saída de som do PC
                                         Conexão com a entrada EAR)
                        Entrada                         ___
                         (EAR)                      __ /   |____
                           |                       / _(    |____()
                           |       __             / /  \___|
             ___    _      v      |  --_         / /           P2
Entrada EAR     \/ | |     _ _____|     -.------' /
                   | |  ()[_[_____|      |-------<
Saída   MIC  _/\   |_|  ^       | |    _-^------. \
                    |   |       | |__--          \ \    _____  RCA
Terra   GND  _______|   |       |                 \ \_ /  / _\
                      Saída   Terra                \__(  | (__()
                      (MIC)   (GND)                    \__\__/

                                          Para a TV ou amplificador
                                          (Conexão com a saída MIC)

O esquema acima foi retirado da página World of Spectrum, ao qual alterei levemente.

 

Mod de saída de som e EAR para o ZX Spectrum +2 (B) preto

No meu caso não usei o cabo padrão, preferi soldar diretamente dentro do micro para tentar conseguir uma velocidade mais alta de carregamento e ainda ter conexões RCA disponíveis.

No meio do percurso foi aí que descobri que meu ZX Spectrum +2 se tratava da versão B, pois todo o diagrama do ZX Spectrum +2A e +3 não batia com a numeração dos componentes e partes do circuito da minha placa. Portanto, talvez o esquema que vou mostrar aqui deva ser levemente alterado se você for usuário de um ZX Spectrum +2A ou +3.

Abaixo na foto, veja que o fio preto está ligado diretamente no terra comum na placa, soldado no pino do resistor R9 (que na verdade o Claudio havia deixado assim, e preferi manter). Para a saída de áudio soldei um fio no terminal negativo do capacitor C201, chegando diretamente na saída de som sem passar pelos filtros e pré-amplificação do circuito, ao qual tive a impressão de tornar o som um pouco mais limpo.

Para a entrada EAR, liguei o outro fio no terminal negativo do capacitor C200, ao qual me parece também pular a etapa de filtragem do circuito, pois ligando neste ponto o turbo loading ficou muito mais estável e atingiu velocidades maiores (veja abaixo).

Para a saída utilizei os conectores RCA que o Claudio já havia deixado na traseira do micro e o terra usei como comum em ambos:

 

Quer carregar rápido? Use bons cabos!

Ao tentar carregar os jogos vi que muitos paravam no meio do carregamento ou entravam aleatoriamente usando a mesma configuração, quase desisti. Depois pensando melhor descobri que o motivo foi meu cabo de 10 metros que estava atrapalhando, que apesar de parecer bom era grande demais e devia causar algum tipo de ruído ou perdas.

Use um bom cabo entre 1 a 3 metros com boa solda e conectores de qualidade, também se possível use fios com algum tipo de blindagem. Isso deve deixar o carregamento perfeito e poderá contribuir para atingir velocidades mais altas.

 

Como funciona o Turbo Loading?

Por padrão, todos os micros que utilizam o carregamento através de fita cassete empregam uma velocidade de leitura baixa. Isso não é porque o CPU não suporta uma velocidade mais alta, e sim devido ao tipo de tecnologia empregada. A fita cassete é sujeita a ação do tempo e componentes mecânicos, além de que o processo magnético de leitura não proporciona uma boa fidelidade de áudio, então foi escolhido por padrão uma velocidade baixa de modo a permitir o carregamento prevendo o pior dos casos.

A técnica de turbo loading só é possível graças ao avanço tecnológico dos próprios PCs e processadores de som que atualmente são capazes de reproduzir o áudio com uma pureza de CD e boa amplificação. Unindo esta modernidade com uma tecnologia eficiente de compressão de som é possível aumentar a velocidade de carregamento do ZX Spectrum de meros 1500 bps para até 25000 bps!

Mas sejamos realistas, por mais que alguns digam conseguir a velocidade extrema de 25000 bps de forma estável em um ZX Spectrum, isso no meu caso só aconteceu em alguns poucos jogos, e mesmo assim ainda ficava com algum receio de mais adiante descobrir fases corrompidas, pois para atingir esta velocidade você é obrigado a usar uma compactação que desliga a verificação de dados.

Cheguei então em uma configuração padrão que une um ótimo desempenho com boa compatibilidade, sem abrir mão da conferência dos dados (o que acho indispensável), chegando a 17640 bps.  Se você acha isso pouco, imagine que o jogo Robocop teve o seu tempo de carregamento acelerado de 10,4 minutos para aproximadamente 59 segundos!

 

O que é preciso para utilizar o Turbo Loading?

Primeiramente você precisa de um PC com placa de som (ou notebook), e depois de um programa para converter os arquivos em áudio acelerado.

Existem dois programas que oferecem esta técnica:

OTLA: É mais atual e pode usar o turbo loading para carregar rapidamente jogos de Amstrad CPC, MSX e ZX Spectrum

K7zx: Feito especificamente para usar turbo loading no ZX Spectrum, ao qual o recomendo por oferecer mais opções

Ambos são software livre e você pode encontrá-los para download aqui.

 

Configurando o K7zx

Vou me focar apenas neste programa, já que ao menos para mim consegui através dele obter taxas de velocidade mais altas e sua quantidade maior de opções pode ajudar principalmente aqueles que irão usar o método em condições menos favorecidas (cassete com adaptador P2, por exemplo).

Ao entrar nele, você deverá ver uma tela semelhante a esta:

Ao lado esquerdo você navega nas pastas e na parte do meio você pode selecionar um jogo específico para reproduzir, apertando após o botão PLAY. É possível também converter o arquivo em WAV ou MP3 através de seus respectivos botões, onde o arquivo será enviado para a pasta configurada.

Se quiser converter vários arquivos simultaneamente basta remover a opção “Convert only selected file”, então todos os arquivos do diretório serão convertidos de uma só vez, mas cada um terá o seu arquivo específico. Faça isso somente no final, depois de ter usado o botão “play” e testado cada um dos jogos em seu micro.

Antes de começar você deve configurar o padrão de compressão, para isso basta clicar em “settings”. No meu caso utilizei a configuração abaixo para todos os jogos:

Se você estiver utilizando um adaptador de fita cassete ou MP3 player em fita, recomendo que diminua a velocidade para 11025 e vá subindo e carregando novamente o mesmo jogo até ver qual velocidade deixará de funcionar.

Caso esteja pensando em gravar o arquivo em CD de áudio comum, na janela de configuração ative a opção “16 bit Stereo (CD)”, isso tornará o arquivo WAV bem maior, mas irá compatibilizar perfeitamente a gravação.

Sinceramente ao menos para mim esta foi a configuração perfeita, rodou tudo o que precisava, mas vou dar alguns detalhes adiante para que ninguém passe raiva como eu passei.

 

Iniciando o carregamento

Com as configurações do K7zx devidamente efetuadas, basta baixar os jogos de sua preferência. Recomendo inicialmente que baixe os jogos no formato .z80 ou .sna, chamados de “snapshot”, pois eles além de carregar mais rápido, representam o estado bruto da memória no ato da execução de um jogo já carregado, aumentando as possibilidades de sucesso.

Em contrapartida, os formatos  .tap e .tzx representam a fita cassete como ela realmente é, então o micro deverá ter que passar por todo processo de carregamento só que de forma acelerada. O problema é que isso nem sempre funciona pois há programas que utilizavam um sistema de proteção ou carregamento específico, além de que o K7zx não dá suporte a arquivos com mais de 7 blocos de carregamento.

Antes de começar a carregar, uma recomendação:

ABAIXE O SOM DA TV OU AMPLIFICADOR E DEIXE NO MÍNIMO, VOCÊ PODE ESTOURAR AS CAIXAS DE SOM COM O ÁUDIO DO CARREGAMENTO!

Para começar a carregar, deixe seu micro no estado que você está acostumado a usar fitas cassete, no TK90x, ZX Spectrum e similares você deve usar o comando:

LOAD “”

E depois pressione ENTER.

Se estiver utilizando o ZX Spectrum + / +2 / +3, basta selecionar a opção “Tape Loader” ou “Loader” e pressione ENTER.

Selecione o arquivo clicando em cima dele na janela do meio e depois pressione na região abaixo o botão PLAY. O programa irá converter o arquivo em tempo real (é rápido) e começará a tocar um ruído bem estridente.

No ato do carregamento as bordas na tela costumam vibrar e mudar de cor, isso é normal e significa que o ZX Spectrum está lendo o arquivo. Poderá aparecer uma tela do jogo ao carregar, se esta tela apresentar partes corrompidas ou falhas isso também é normal, fique tranquilo.

Se por acaso as bordas pararem de piscar de vez ou ficarem trocando de cor a cada 1 segundo antes de terminar o arquivo de áudio significa que o sistema parou de carregar por ter encontrado um erro. Diminua a velocidade (veja acima a configuração) e tente novamente. Encontre a melhor velocidade de acordo com suas conexões e seu micro.

Aguarde até terminar o carregamento, algumas vezes você terá que pressionar uma tecla para o sistema responder após o jogo ser totalmente carregado. Se o jogo rodar normalmente, basta se divertir.

Vá juntando em uma pasta os arquivos .z80 ou .sna que derem certo, depois você pode selecionar esta pasta e aí sim converter todos os arquivos em WAV de uma vez. O tamanho não ficará grande pois por padrão os arquivos ficam em 8 bits mono, a não ser que tenha selecionado a opção “16 bits estéreo” e queira gravar em CD de áudio.

Não recomendo o formato MP3, só se for usar uma compressão entre 256 a 384kbps.

 

Porque tem jogo que termina de carregar corretamente mas trava ou reseta?

O problema dos arquivos de snapshot é que como eles representam o estado bruto da memória no ato da execução, se este estado foi tirado de um outro modelo de ZX Spectrum isso pode gerar algumas incompatibilidades com o seu micro.

Estas incompatibilidades não costumam acontecer com os jogos do ZX Spectrum 48k, mas a partir do modelo 128k alguns arquivos podem não rodar no ZX Spectrum +2 preto e +3 devido a algumas mudanças em seu padrão.

Para resolver isso você pode tentar carregar o arquivo .tap ou .tzx em um emulador, configurando-o conforme o modelo de seu Spectrum real (no meu caso o ZX Spectrum +2A/B). Se o jogo resetar também, ele não é compatível com seu ZX Spectrum, se o jogo entrar procure pela opção de snapshot e salve o arquivo como .sna ou .z80. Tente a partir deste arquivo efetuar o turbo loading novamente que poderá dar certo.

A dica acima serve também para pegar jogos de arquivos incompatíveis com o K7zx, como os formatos .trd e .dsk. Se o emulador forçar o micro a se tornar os clones russos Pentagon ou Scorpion, faça o snapshot no formato .sna, o .z80 gerado neles poderá travar o programa K7zx.

Vale lembrar que tem jogos que de qualquer forma não são compatíveis com os ZX Spectrum +2 preto e +3 devido a alterações em sua arquitetura. Se este é seu caso, não se desespere, não são muitos os jogos que isso ocorre.

Nota adicional (28/11/11): O amigo Eduardo Luccas deu uma dica para os usuários do TK90X. Para os problemas dos “snapshots” que não funcionam ou arquivos tap / tzx que não tem snapshot, uma alternativa é usar o emulador SpecEmu do Woody, usando a emulação do TK90X, carregando então o jogo a partir do arquivo tap / tzx e depois, imediatamente, salvar no formato sna ou z80. Em tese, isso deve compatibilizar o snapshot com o hardware real.

 

Nem tudo são flores

Pois é meus amigos, agora vem a má notícia.

Muitos jogos do ZX Spectrum utilizam o carregamento por blocos, por isso é comum aparecer a mensagem “stop de tape” ou “press play on tape” em vários jogos. Isso é porque a fita cassete era a mídia padrão da plataforma na época, e para carregar mais fases e complementos o jogo precisava puxar novamente da fita. Se você estiver em um jogo que exigir isso e a borda da tela começar a mudar de cor a cada 1 segundo, já era, não tem como convertê-lo completamente.

Fiquei triste em saber que usando turbo loading não conseguirei jogar títulos como Double Dragon 3, Prince of Persia e Golden Axe, já que eles usam o carregamento em partes posteriores. Destes jogos, só mesmo a primeira fase, ou se tiver paciência basta tirar um snapshot de cada fase (tem louco pra tudo).

Tem sim alguns jogos que são multi carregamento e o K7zx faz o loader carregá-lo inteiro na memória e simular o tape, desde que ao converter você use os arquivos .tap ou .tzx, PORÉM, isso muitas vezes não funciona pois o jogo não pode passar de 7 blocos ou dos 128Kb de memória (se o teu ZX Spectrum for deste modelo).

A grande maioria dos jogos com multi carregamento só funcionarão pelo k7zx usando o modo NORMAL e esperando MINUTOS para carregar, e o “melhor”, ainda te obrigando a pausar o arquivo quando o jogo pede, se errar, já era. O K7zx dá suporte ao carregamento padrão, basta nas configurações tirar do modo “HiSpeed” e passar para o modo “Normal”… Alguém tem paciência? EU NÃO.

Para aliviar o problema existem outros jogos que foram previamente adaptados de forma a não ter este carregamento. As mensagens referentes ao tape aparecem, as bordas piscam como se estivessem carregando mesmo, e tudo ocorre bem, mas são raros os títulos que tiveram esta adaptação. Normalmente são jogos do ZX Spectrum 48k que usavam o multi carregamento e foram convertidos para o 128k.

 

Conclusão

O Turbo Loading é uma técnica interessante e pode aliviar de imediato a frustração dos usuários do ZX Spectrum, principalmente dos possuidores do brasileiro TK90x.

É fato que para uma completa realização da experiência de jogo nesta plataforma, sem dúvida recomendo a utilização de interfaces de disquetes ou IDE, como a conhecida DivIDE, mas que infelizmente são incompatíveis com nossos TK90x, de acordo com os testes efetuados pelo Victor Trucco.

Há também projetos mais fáceis que podem ser feitos em casa, e para os felizardos possuidores de um ZX Spectrum +2A/B e +3, há o projeto ZX Spectrum +3e desenvolvido por Garry Lancaster, que foi utilizado como base neste projeto do Victor Trucco.

Enfim, é isso aí, de uma forma ou de outra, sempre há uma esperança no fim do túnel.

Se alguém tiver dúvidas ou novidades, basta enviar os comentários que terei o prazer de responder a todos.

9 comentários

2 menções

Pular para o formulário de comentário

  1. Wesley Camargo

    Ola amigo, ja fiz milhares de testes e nunca consegui carregar jogos rapidamente no tk90x, ja no zx+2 meu carrega na maxima velocidade convertido tanto pelo OTLA como pelo K7ZX, os arquivos acelerados so funcionam no zx spectrum no tk90x nao funcionam. se conseguir carregar qualquer jogo rapidamente convertido no TK90X ou TK95 me passa a tecnica e mostra com um video e todos usuarios do tk90x ficarao mto felizes. abraço

    1. Mauro Xavier

      Wesley,

      Não desanime, tem jeito sim!

      Use um cabo blindado curto de até 1 metro e diminua a velocidade para
      aproximadamente 14000 bps, deixe o volume do micro no talo.

      Você já testou em outro micro? Tem algumas placas de som, principalmente
      onboard, que não se dão muito bem pois emitem um ruído mínimo, mas suficiente
      para atrapalhar. Mude de 44050Hz para 48000Hz, cada placa é de um jeito, se aqui se eu deixar a 48000Hz não vai nem a pau.

      No mixer do PC tenha certeza de que está desligado tudo de entrada, line in,
      microfone e afins. Desligue também os sons do sistema, se der um beep já era o
      carregamento.

      Em último caso, solde um cabo direto na ULA do TK 90X, coloque um capacitor de
      1u com o terminal positivo soldado na entrada de som da ULA e o terminal
      negativo para o fio que irá sair. Aterre no pino “ground” da ULA ou direto na placa. Faça isso somente se souber o que está fazendo, se fizer errado você PERDE TEU TK90!

      Espero que consiga, pois segui os passos e fiz carregar no TK 90X de meu amigo mês passado a 14000, e olha que não era cabo blindado mas era bom e curto. Vou emprestar este micro dele novamente quando puder e te faço um vídeo pro pessoal ver.

      Se meu amigo deixar faço o projeto de entrada via cabo RCA direto na ULA e faço um post ensinando o pessoal.

      Abraços.

  2. Alberto C.M.F.

    na velocidade normal sem estar acelerado funciona, acelerado nadinha, mas valeu pela dica do programa de fazer o pc virar um gravador kkk, muito bom, e uma pena nao rodar joguinho em blocos, mas gravando separado sera que nao funciona nao, ou fazendo a separaçao com programinha de ediçao de audio. :)

    1. Mauro Xavier

      Entre nas comunidades ClubedoTK e TK90x do Yahoo, lá o pessoal recentemente estão discutindo alterações no hardware dos TK90/95 para usar o Turbo Loading, conseguindo 100% de sucesso em 19200bps de velocidade. É coisa simples de fazer, vale a pena você entrar e dar uma conversada com a galera, e aproveita ainda e arruma alguns amigos que curtem o hardware também 😉

  3. Cleilton Farias

    Oi Mauro, sou eu novamente, Cleilton Farias
    Eu estou esperando chegar meu ZX Spectrum +2(cinza)
    Agora sei que a minha saída para ter CF é adquirindo uma DivIDE.
    Mas gostei destas suas dicas de acelerar o carregamento da fita cassete.
    Eu ainda não sei usar o ZX Spectrum, não conheço o funcionamento. Mas tenho uma pergunta pra você.
    É possível eu converter um jogo, usando o programa K7zx e passar para um cartão de memória e usar está fita?
    (http://produto.mercadolivre.com.br/MLB-514714912-chegou-a-soluco-tape-cassete-adaptador-mp3-sd-card-_JM)

    Eu adquiri este ZX Spectrum, mas não tenho nenhuma fita Cassete. É possível eu pegar uma fita normal, dessas antigas, virgem e gravar um jogo usando este programa K7zx e ligado em um PC. E em seguida rodar no ZX Spectrum?

    Me perdoe as perguntas, que devem até ser sem fundamento, mas é meu contato, com está plataforma espetacular.
    Aguardo sua ajuda.

    1. Mauro Xavier

      Vamos lá:

      – Se usar o adaptador cassete com SD-Card, irá funcionar mas TALVEZ precisará utilizar uma aceleração de velocidade menor, pois o som passará pelo cabeçote de leitura do tape e isso pode diminuir a qualidade (ou não).

      – Se utilizar uma fita K7 virgem para gravar o áudio, provavelmente não funcionará a aceleração devido a menor qualidade de áudio. Poderá funcionar se você diminuir a taxa de aceleração.

      O turbo loading demonstra resultados melhores (maior velocidade) ao ligar a entrada de som do ZX Spectrum diretamente a algum tipo de saída que tenha boa qualidade, caso de um PC ou aparelho de MP3 com amplificação suficiente.

      1. Cleilton Farias

        Eu acho que estou entendendo.
        Por exemplo. Eu posso usar o programa K7zx, alterar o jogo, converter em wav ou mp3 e passo para um celular que o reproduza e uso está fita k7 (http://produto.mercadolivre.com.br/MLB-515083455-fita-cassete-adaptador-para-toca-fitas-de-carroaparelho-som-_JM)
        conectada em meu celular. Dou play no arquivo em meu celular e dou play no ZX Spectrum.
        É isso mesmo?
        Se sim, beleza.
        E como eu posso deixar este fio com o plugue p2, da fita k7 para fora do ZX Spectrum? Pois tem a tampa do Tape. Pode deixar a tampa aberta?

        De toda forma, muito obrigado pelas informações.

        1. Mauro Xavier

          Sim, é isso mesmo.

          Não se preocupe com o plugue, o fio costuma ser fino o suficiente para ser possível fechar o tape.

          1. Cleilton Farias

            Amigo, valeu mesmo, por toda a atenção e esclarecimentos.
            Estou ansioso para que o meu ZX Spectrum +2, chegue o quanto antes e que não seja taxado (assim espero).
            E quando chegar, vou ter que aprender a usa-lo, pois eu não conheço nada, mais com certeza, você já está me ajudando e muito.
            Obrigado e fica na paz do Senhor.

  1. Do Outro Lado da Cerca: Bem vindo, ZX Spectrum +2 | MSX Resources

    […] Não deixe de conferir o post Turbo loading no ZX Spectrum: Desbravando o caminho das pedras na Casa dos Nerds, onde o Mauro testa o carregamento rápido de jogos em casette […]

  2. Do Outro Lado da Cerca: Commodore 64 – É tudo o que dizem mesmo? | MSX Resources

    […] para se carregar de um drive de disquetes, sendo que no MSX o mesmo jogo leva 5 segundos e em meu ZX Spectrum +2 usando Turbo Loading não passa de 50 segundos, por cartão CF usando o esquema do +2e então leva 1 […]

Deixe uma resposta