segunda-feira, 25 de janeiro de 2016

Knight Lore disassembly

Foi anunciado no fórum do World of Spectrum a primeira versão do disassembly comentado do jogo Knight Lore.


A listagem publicada não é apenas a saída de um programa disassembler de Z80, mas tem vários comentários esclarecendo o código. Este é um trabalho artesanal extenuante, feito praticamente de instrução em instrução. O autor afirma ainda que conseguiu portar o programa para TRS-80 modelo 4, modificando algumas partes da listagem. Ele planeja concluir uma listagem completa que possa ser montada (assembled) para ZX Spectrum, TRS-80 e talvez MSX. Foi feito ainda um port para C que roda em PC, com vistas a compilar  em Amiga e eventualmente NeoGeo.

Deve ser de conhecimento dos leitores que sou um grande apreciador do Knight Lore. Traz-me felicidade esta oportunidade de conhecer os detalhes internos deste jogo.

Um trecho que me chamou a atenção é este:
RAM:B5F7         read_port:  
RAM:B5F7 D3 FD        out (0xFD),a      ; select upper address
RAM:B5F9 DB FE        in  a,(0xFE)      ; read status
RAM:B5FB 2F           cpl               ; positive logic
RAM:B5FC E6 1F        and #0x1F         ; mask off undefined bits
RAM:B5FE C9           ret

A instrução 'out', além de desnecessária para a leitura de teclado, causa problemas no chaveamento da RAM em modelos 128K (lembre-se que o Spectrum 128 veio anos após lançamento de Knight Lore). Não sei se esta instrução era um erro do programador, que tinha conhecimento equivocado sobre leitura do teclado no Spectrum, se estava visando portar o jogo para outro computador ou se possuía algum hardware dedicado que lia esta porta. Aparentemente esta sub-rotina era empregada nos demais jogos da Ultimate, pois era notória sua incompatibilidade com o modo 128K.

4 comentários:

  1. Alguns desenvolvedores ingleses, isto é, aqueles que tinham a disposição uns £1700 (£500 pela ferramenta e outros £1200 para um PC) adquiriam a Programmer's Development System da criado pela P.D. Systems Ltd -- ferramenta criada por Andrew Glaister, Jez San and Fouad Katan para o jogo Skyline Attack e que depois virou um produto comercial.
    A partir dela havia a opção de enviar o jogo que se estava programando direto para o equipamento de destino (Speccy, C64 etc) através de uma controladora específica e até mesmo controlar a execução a partir do PC.

    ResponderExcluir
  2. Fantástico. Esses jogos isométricos sempre foram os meus preferidos.

    ResponderExcluir
  3. Esse foi o primeiro jogo isometrico que eu vi,numa época que eu nao tinha o TK. Era maravilhoso esse conceito em 3D.Houve uma versao para o CPC e apos isso houve a conversão para MSX. Depois vi na internet os ports para Atari 800/XL e C64. Nao sei se existe um port para o Atari ST.

    ResponderExcluir

Seu comentário é bem vindo, mas peço que use este espaço adequadamente.