quarta-feira, 9 de outubro de 2013

Problema de som no Terminator 2

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.