Eletrônica
Ikari Warriors: UniLoader no Beta 48
Finalmente consegui adaptar o jogo Ikari Warriors para a interface de drive Beta 48. Este jogo possui som para a interface Explorer (ou qualquer uma com PSG AY-3-8912) e, por isso só, justificaria a adaptação. Porém um desafio adicional foi tentar reproduzir o esquema de carregamento/proteção UniLoader.
Em postagem anterior apresentei o disassembly completo do UniLoader. Elaborei este material para poder adaptar este esquema de carregamento para interface de drive. Não foi muito fácil, pois eu teria que criar uma rotina modificada de leitura de arquivo de disco. O problema é que a rotina da ROM Beta faz a leitura de um setor de cada vez, isto é, em conjuntos de 256 bytes. Isto torna a intermitência da cor da borda impraticável, pois o intervalo de tempo se torna excessivamente longo. No UniLoader original, a cada bit recebido da fita cassete, ocorre alternância da cor de borda. Pensei em reescrever a rotina de forma a alternar a cor para cada byte recebido do FDC (Floppy Disk Control - Controlador do Acionador de Disco Flexível). Como eu venho elaborando um disassembly da ROM das interfaces CAS e CBI-95, já tinha algumas rotinas como ponto de partida.
Entretanto tive várias dificuldades no meio do caminho. Algumas eram originadas de erros relativamente simples, que foram sendo depurados através de exames mais minuciosos dos códigos. Mesmo assim, dois fatores foram bem difíceis de se diagnosticar.
Um deles é que a rotina de leitura de dados do FDC não pode ficar na RAM baixa. Aparentemente a contenção da RAM baixa (mecanismo que faz com que o ULA tenha prioridade de acesso a esta RAM) interfere nesta operação. Não deixa de ser algo esperado, haja vista a leitura/gravação de disco ter temporização muito crítica. A solução que eu encontrei foi colocar a rotina de leitura na RAM alta, a partir do endereço 65195.
Outro fator é que não é possível intercalar códigos que consumam muito tempo entre a leitura de um byte a outro. Pelo visto a transferência de dados do FDC para o Z80 possui temporização rígida. Eu resolvi o problema otimizando os códigos que proporcionam a alternância de cores da borda da tela.
O resultado final não ficou perfeito, mas dá para ver a alternância de cores da borda de tela. O efeito é interrompido por algumas pausas impossíveis de se eliminar, sendo a principal causa a necessidade de aguardar quando se movimenta o cabeçote de drive, para posicioná-lo na trilha seguinte do disco. Também foi feita a simulação do tratamento de erro de leitura que, como na fita, faz a borda da tela piscar nas cores preta e vermelha. Espero que tal situação não ocorra de verdade, mas se quiser forçar seu aparecimento, basta apagar do disco um dos arquivos "IKARIcdC" ou "IKARIcd$".
O programa adaptado, em formato Hobeta, pode ser baixado do Google Drive ou 4 Shared. O código fonte segue junto no mesmo arquivo ZIP ou dentro deste subdiretório. A princípio, deve funcionar na interface CAS (Beta 48 original) ou na CBI-95 e derivados (IDS e Arcade). Eu só temo que, como não se conhece as temporizações do TK90X e do TK95, talvez não funcione para todos os equipamentos. Caso haja problemas, por favor, coloque-me a par.
loading...
-
Midnight Resistance: Adaptando Jogo Para Tkmem 128 E Beta 48
A adaptação de jogos para Spectrum 128 para um TK90X com a TKMEM 128 e a Beta 48 envolve procedimentos bastante parecidos com os que foram explicados nos tutoriais anteriores. O principal diferencial é a necessidade de carregar os diferentes banco...
-
Purple Saturn Day Para Beta 48
Depois do Typhoon 128 que resultou como subproduto a rotina de leitura de setores de disco, imaginei que adaptar o Purple Saturn Day para o Beta 48 iria ser uma tarefa fácil. Porém a coisa se complicou um pouco e tive que quebrar a cabeça por algum...
-
Lsd Megademo (pentagram)
Mais um demo para TK90X com Explorer foi adaptado para a interface de drive padrão Beta 48, o LSD Megademo do grupo Pentagram. Uma dificuldade adicional na adaptação foi a presença de código de máquina dentro de linha BASIC, prática que...
-
Typhoon 128 Para Beta 48
Eu consegui adaptar a versão 128k do jogo Typhoon para a interface de drive Beta 48. Este jogo para TK90X tem música e efeitos sonoros para o Explorer. Existe uma versão para 48k também, o qual é multiload mas não tem som para o PSG, somente para...
-
Disassembly Do Uniloader
Em postagem anterior apresentei um vídeo que gravei, com o esquema de carregamento de fita e proteção UniLoader para o jogo do TK90X intitulado Ikari Warriors, da Elite Systems. Este esquema tem o diferencial de apresentar intermitência de borda multicolorida,...
Eletrônica