Em postagem anterior apresentei um vídeo que gravei, com o esquema de carregamento de fita e proteção UniLoader para o jogo do TK90X intitulado Ikari Warriors, da Elite Systems. Este esquema tem o diferencial de apresentar intermitência de borda multicolorida, ao invés dos tradicionais vermelho/ciano e azul/amarelo.
Desta vez fiz uma análise completa do UniLoader, que foi empregado em vários jogos como pode se ver nesta listagem do World of Spectrum.
A descrição pormenorizada da estrutura da fita e do carregamento é dada pelo documento IkariLoading.txt e a listagem disassembly, por IKARLoad.txt. Desta vez estou experimentando compartilhar arquivos através do Google Drive, se alguém tiver problemas para os visualizar, peço que me avise. Ainda estarei utilizando o 4 Shared também.
A rotina de carregamento é bem parecida com a da ROM do TK90X com poucas modificações, entre elas a que controla a cor da borda da tela exibida. O trecho a seguir mostra o acréscimo de código para alternar as cores em sequência:
LdEdSample:
65435 4 inc b ; Count each pass.
65436 c8 ret z ; Return carry reset & zero set if 'time-up'.
65437 3e 7f ld a,#7f ; Read EAR and bottom left row of keyboard
65439 db fe in a,(254)
;(SPACE key).
65441 1f rra ; Shift byte to right.
65442 a9 xor c ; Test the byte against the 'last edge-type'.
65443 e6 20 and #20
65445 28 f4 jr z,LdEdSample ; Jump back if it has not changed.
65447 79 ld a,c ; Change the 'last edge-type'.
65448 2f cpl
65449 4f ld c,a
; The following lines are different from ROM routine.
65450 f5 push af ; Save registers prior to be used.
65451 e5 push hl
65452 21 ff ff ld hl,BColor ; HL points to border color variable.
65455 34 inc (hl) ; Increment border color counter.
65456 7e ld a,(hl) ; Take value from variable, but keep
65457 e6 07 and #07 ;only the 3 least significant bits (color
65459 f6 08 or #08 ;
value)
and set bit 3 (MIC off).
65461 d3 fe out (254),a ; Send this value to ULA port.
65463 e1 pop hl ; Restore registers.
65464 f1 pop af
; End of lines that differ from ROM routine.
65465 37 scf ; Signal the successful search.
65466 c9 ret ; End of subroutine.
Agora só falta eu tentar simular o mesmo comportamento para carregar o jogo a partir de disco Beta 48.
Nenhum comentário:
Postar um comentário
Seu comentário é bem vindo, mas peço que use este espaço adequadamente.