Eletrônica
Knightmare ZX
Quando se fala em Knighmare, vem à minha mente este jogo da Activision, mas não é o caso desta vez. O Knightmare a que estou me referindo é um grande sucesso do MSX que agora foi finalmente portado para o ZX Spectrum, mas somente para o modelo 128K.
Eduardo Luccas resolveu testar este jogo na TKMEM-128, mas não funcionou. Segundo sua descrição, não é que o jogo seja inoperante, mas só aparece a tela do menu paralisada, apesar do som indicar que está funcionando.
Baixei o jogo do blog Bytemaniacos e rodei no emulador Fuse para verificar o que acontecia. Olhando no debugger, pude verificar que periodicamente era enviada à porta 32765 um byte com bit 3 ora em nível alto, ora em nível baixo. Isto indica que haveria uma alternância entre o vídeo principal e o vídeo shadow, provavelmente usando a técnica de double buffering. Notei ainda que a área de vídeo principal na página 1 nunca era escrita, apesar de observar que a tela sofria rolamento (scroll).
Ocorre que o vídeo principal localiza-se no banco de RAM 5 que se localiza normalmente na página 1, e o secundário no banco 7. Apesar do acesso normal ao banco 5 ser na página 1, para não ter que duplicar a rotina de escrita no vídeo, o programador preferiu acessá-lo na página 3, onde pode ser chaveada tanto este banco como o banco 7 (para saber mais, veja esta postagem).
O problema surgiu porque o protótipo do TKMEM não faz o espelhamento (mirroring) do banco 5, que permitiria que fosse acessado simultaneamente pela página 1 (16384-32767) como pela página 3 (49152-65535). Velesoft apresentou uma nova versão do firmware que ativaria o espelhamento. Teoricamente bastaria regravar o GAL para que este jogo passe a funcionar no protótipo de expansão de memória.
Uma outra solução seria modificar a rotina de escrita da memória de vídeo do programa, eu até acredito que irá dar resultados melhores, porém o trabalho seria considerável. Vou deixar na lista dos afazeres futuros, mas sem promessa de prazos... Se alguém quiser tocar este projeto no meu lugar, seria muito bom!
Para finalizar, eu gostaria de ressaltar que é o primeiro caso que vi do uso de espelhamento do banco 5 na página 3. Não sei se existe algum outro caso assim.
loading...
-
Detecção De Ram 48/128
Conforme tinha prometido na postagem sobre incompatibilidade do Bubble Bobble, eu vou mostrar a rotina de detecção de tamanho de RAM 48/128K que elaborei na ocasião. A ideia era fazer uma rotina que não altere o conteúdo da RAM a ser testada;...
-
Porta 32765 (#7ffd)
Apesar de já ter comentado sobre esta porta de entrada e saída (I/O) do Spectrum 128 e da TKMEM-128, julguei conveniente repetir, pois ajudará na compreensão da listagem BASIC publicada ontem. Fonte: Wikipédia Esta é uma das novas portas introduzidas...
-
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...
-
Memórias No Spectrum128 E No Tkmem-128
Fiquei um tempo sem postar, mas não quer dizer que estava parado no hobby. Eu e o Eduardo Luccas estivemos testando a interface de 128KB para o TK90X, a TKMEM-128, para vermos as suas possibilidades e limitações. Interessante é que nós nunca nos...
-
É Possível Adaptar Jogos Do Spectrum 128 Para Tk90x Com Beta 48?
Depois de ter conseguido adaptar o Typhoon 128 para o Beta 48, apareceram sugestões de adaptar outros jogos do ZX Spectrum 128 para funcionarem no TK90X com interface de drive. Acabei adaptando o Typhoon 128 meio que por acaso, mas quem sabe se não...
Eletrônica