The Fury (Martech)
Eletrônica

The Fury (Martech)


Estive trabalhando na adaptação do jogo The Fury para TK90X da Martech, para funcionar na interface de drive Beta 48. Eu achava que ia ser fácil, pois o programa não era protegido, porém a incompatibilidade da porta 254 novamente fez estragos.

Após escolher o tipo do controle (teclado ou um dos padrões de joystick), o jogador tem a opção de introduzir seu nome. Porém, na hora de digitar, a leitura do teclado repete muito rápido. Só de apertar brevemente a tecla C, aparece no vídeo:


Fica impossível de digitar corretamente, pois se preenche todo o espaço com uma tecla só. Para desvendar a causa, tive que desmontar (disassembly) a rotina da leitura do teclado. A listagem completa está junto com o jogo adaptado. Nesta postagem mostrarei só as partes relevantes para o entendimento do problema.

A leitura do teclado ocorre no seguinte trecho:

52231   LD C,(IX+0)     ; BC=endereço da porta a ler
        LD B,(IX+1)
        LD (52519),BC   ;que é guardado em 52519.
52241   IN A,(C)        ; Faz leitura da porta.
        LD B,5          ; Contador descendente de bits (máx. 5).
        LD E,0          ; Contador ascendente de bits.
        LD D,A          ; Guarda valor lido.
52248   RRCA            ; Se o bit menos significativo for 0, is-

        JP NC,52270     ;to é, tecla pressionada, salta adiante,
        INC E           ; Senão atualiza os dois contadores
        DJNZ 52248      ;e repete até o bit 5.
...     ...


Realiza-se a leitura da porta 254, o valor é guardado no registrador D e procura-se descobrir se alguma tecla foi pressionada. Caso tenha sido pressionada uma tecla, ocorre um salto para o endereço 52270, cuja listagem é:

; Repete o laço abaixo enquanto a tecla continuar pressionada,
; isto é, enquanto a leitura da porta der mesma leitura.
52272   LD C,(IX+0)    ; BC contém endereço da porta a ser lida. 
        LD B,(IX+1)

        IN A,(C)       ; Faz leitura da porta.
52280   CP D           ; Se valor for igual ao que foi lido

        JP Z,52272     ;antes, repete novamente todo ciclo de
                       ;leitura.

Para evitar a repetição da leitura da mesma tecla, compara-se a leitura da porta 254 com o valor lido anteriormente, que está guardado no registrador D. Entretanto no TK90X o bit 5 fica oscilando e a leitura da porta fica diferente, mesmo quando a tecla continuar sendo pressionada. Esta não é a forma adequada para a leitura e interpretação do teclado, pois somente os 5 bits menos significativos deveriam ser considerados.

Para contornar o problema, criei um pequeno patch (só 12 bytes!) que substitui o trecho acima. O tratamento da porta 254 só considera os 5 bits correspondentes ao teclado.

; Patch a ser aplicado no jogo The Fury para corrigir problema de
;
leitura de teclado no TK90X.
        ORG 52272
Loop:
        LD C,(IX+0)         ; BC=porta 254.
        LD B,0
        IN A,(C)            ; Faz leitura da porta.
        CPL                 ; Inverte bits, tecla pressionada 

                            ;terá valor 1.
        AND 00011111        ; Somente se alguma tecla for 

                            ;pressionada,
        JR NZ,Loop          ;repete o laço.


Após aplicação do patch, o programa passa a funcionar corretamente e torna-se possível digitar o nome do jogador:


Outra notícia boa é que descobri como fotografar a tela da TV com a minha câmera.

O jogo adaptado está disponível no 4 Shared (é necessário ter uma conta para baixar). O ZIP contém arquivos no padrão Hobeta, para ser passado no disco ou em arquivo TRD. Mais detalhes estão contidos no arquivo TXT.



loading...

- Dica Tvs Panasonic Tx-32pk25f Chassis Euro-4h
Defeito--Imagem a preto e branco ou com as cores alteradas com manchas como se o              TRC estivesse magnetizado. Foi regravada a eeprom mas não resultou. Em           ...

- Dica Tvs Panasonic Tx-25xd3e Chassis Euro 2m
Defeito--Este  tv estava em protecção, trazia o transístor de saída de linhas (2SD1577-               LB) em curto. Depois de o substituir, o tv arrancou apresentando o seguinte       ...

- Outra Rotina De Detecção De Ram 48/128k
Eu publiquei nesta postagem, uma rotina que faz a detecção no TK90X da configuração com ou sem a TKMEM-128 (128 ou 48K de RAM). Modifiquei-a e consegui fazer com que ficasse menor ainda (25 bytes).  Esta rotina testa se ocorre chaveamento entre...

- Thundercats V. 2 Para Basic 128
Mal acabei de lançar uma adaptação do Thundercats para Beta e TKMEM-128 e estou com a versão 2. A versão anterior tinha um problema: não consegue carregar a partir do BASIC 128, portanto tinha que dar um 'USR 0' antes. Na versão 2 não...

- The Fury (martech)
Estive trabalhando na adaptação do jogo The Fury para TK90X da Martech, para funcionar na interface de drive Beta 48. Eu achava que ia ser fácil, pois o programa não era protegido, porém a incompatibilidade da porta 254 novamente fez estragos. Após...



Eletrônica








.