Tempos atrás eu adaptei em disco Beta, o Terminator 2 para TK90X com a TKMEM-128 e tinha notado que a música para Explorer não era executada.
Figura: Wikipédia |
Na época não tinha ideia do que estava acontecendo, mas agora descobri que a rotina de interrupção faz uso da ROM 0 (128 BASIC) do ZX Spectrum 128. Ao invés de usar o IM 2 como seria usual, no Terminator 2 emprega-se o fato da rotina de IM 1 da ROM 0 fazer desvio para a RAM:
56 PUSH HL
57 LD HL,72
60 PUSH HL
61 LD HL,23296
64 PUSH HL
65 LD HL,56
68 PUSH HL
69 JP 23296
De forma engenhosa, a rotina de interrupção do jogo substitui a do 128 BASIC e esta, entre outras coisas, é responsável por tocar música.
O problema é que a ROM 1 (48 BASIC) não faz o desvio para RAM mostrado acima e a rotina de interrupção de jogo nunca seria chamada. Esta então é a causa da música não ser executada no meu computador. A solução mais fácil seria ativar a ROM 0, porém o 128 BASIC não é compatível com a interface Beta 48 e seus clones brasileiros. Portanto terei que pensar em como modificar o programa para usar o IM 2 para resolver o problema.
Uma das premissas que foi assumida durante os testes iniciais da TKMEM-128 é de que a maioria dos jogos não fazem uso da ROM 0. Agora pude verificar que isso não vale para o Terminator 2.
Nenhum comentário:
Postar um comentário
Seu comentário é bem vindo, mas peço que use este espaço adequadamente.