Eletrônica
Bloody Paws e "snow"
Prosseguindo na adaptação de jogos do TK90X com som para a Explorer, desta vez consegui transferir Bloody Paws para disquete Beta 48. Tudo funcionando bem no emulador, resolvi rodar o jogo no meu TK mas o resultado não era bem o que eu esperava:
Apareceu aquilo que é conhecido como "snow effect", que parece com uma espécie de ruído que se sobrepõe à imagem exibida na tela. Este é um bug do ULA que afeta tanto o TK90X como o ZX Spectrum, e ocorre no Modo de Interrupção 2 quando o registrador I (interrupt vector register) tem valor entre 65 a 127. Neste intervalo, a tabela de vetores de interrupção situa-se na região da RAM com "contenção", isto é, em que o ULA tem acesso prioritário.
No Bloody Paws o valor do registrador I é 93 (#5D). Eu fiquei pensado qual seria o motivo do programador ter justamente escolhido um valor deste, se já era conhecido o problema do ULA. Teria este (d)efeito vindo a ser premeditadamente empregado no jogo?
A tabela de vetores de interrupção deveria ficar na região entre 23808-24063 (#5D00-#5DFF) e fui examinar o seu conteúdo. Ao invés da esperada tabela, encontrei apenas restos do carregador BASIC, espaços em branco e no endereço 24063 (#5DFF), o valor 65270 (#FEF6). Fiquei com impressão de que o programador não sabia como lidar com interrupções no Spectrum (vide TK-WIKI para detalhamento). O que é mais grave neste erro é que numa interrupção, dependendo do que o ULA estiver fazendo no barramento, pode ser chamada uma rotina em algum endereço inesperado (a propósito, nenhum emulador que eu conheço simula corretamente tal comportamento).
O disassembly de 65270 é:
65270 DI
65271 EI
65272 RET
que praticamente nada faz. Não entendo porque o programador teve tanto trabalho por nada, além de causar um bug sério.
Isto me fez questionar se em alguns modelos do ZX Spectrum o snow não é percebido, por isso peço a quem possui tal equipamento a fazer um teste e relatar os resultados. Se algo deste tipo fosse visível eu acredito que seria questionado pela crítica, mas nada se relata a respeito! O Bloody Paws está disponível em formato TZX e TAP no World of Spectrum. A versão adaptada para o Beta 48 encontra-se no Google Drive ou 4 Shared.
Atualização em 02/09/2012: há versão sem efeito snow.
loading...
-
Versão 2 De Terminator 2
Enfim, aqui está a 2ª versão de Terminator 2 convertido para disco Beta que roda em TK90X com TKMEM-128. Consegui contornar a falta de som para Explorer sem a ROM 128 habilitada. Eu tive que substituir IM 1 por IM 2, porém este último requer...
-
Robocop 3 E Efeito Snow
Estive trabalhando na adaptação do Robocop 3 em disco Beta 48/128 para TK90X com TKMEM-128. Para minha surpresa, quando fui rodar no TK90X, apareceram os artefatos típicos do efeito snow. A causa é que o valor do registrador I, empregado no...
-
Efeito Snow
O Z80 possui um sistema de tratamento de interrupções bem interessante, sendo que o IM 2 (Interrupt Mode 2) é o mais poderoso. Este modo faz uso do registrador especial I (interrupt vector register), cujo valor tem que estar fora da faixa 64...
-
Explorer × Tk90x + Tkmem-128
Parece que o Fairlight 128, que roda no TK90X graças ao TKMEM-128, não se dá muito bem com a Explorer. O som fica bastante distorcido, bem diferente do que ouço no emulador. Fiz algumas tentativas para entender o que está acontecendo. Frequência...
-
Problema Com Comando Tracer
Eu tenho adaptados jogos com som para a interface Explorer, sendo que desta vez estava trabalhando no Commando Tracer. Parecia que ia ser fácil, pois era um carregador baseado simplesmente em blocos headerless. Consegui em pouco tempo, no emulador...
Eletrônica