terça-feira, 11 de março de 2014

Transferindo desenho para TK90X

Apresento uma forma de transferir desenho para o TK90X e fazer uma pequena animação. 

Fonte: Kandi patterns
Além da Hatsune Miku, é possível encontrar vários outros padrões deste tipo neste site. Primeiro o modelo acima é impresso em tamanho grande, de forma a permitir fazer anotações à lápis. Em seguida, digita-se num editor de textos um padrão que codifica cada quadrícula. No caso, foi usado o gedit que possui excelentes recursos.


Células pretas foram marcadas como K, ciano como C, magenta como M, verde como G, azul como B, branco como V e branco brilhante como W. As células transparentes foram marcadas como T. As cores são aproximadas para as que são disponíveis no TK90X. Outra coisa interessante é que a ferramenta de busca do gedit marca de amarelo os padrões pesquisados; na figura acima, quando se pesquisou a letra K, o contorno preto da Miku ficou evidente.

A transferência é manual e trabalhosa, mas se for comparar com os artesanatos apresentados no site mencionado, não dá para reclamar. É bom anotar no modelo impresso, cada linha ou coluna que já foi digitada. Vale a pena preservar o arquivo assim produzido, para manipulações futuras. Sendo assim, é aconselhável criar uma nova cópia antes de passar para o passo seguinte.

O desenho codificado é transformado numa sequência de bytes através da função de substituição do editor de textos. Os valores dos bytes foram escolhidos para refletir os atributos de cores do TK90X, exceto a cor transparente (T) que ficou com o valor 128. Os demais códigos ficaram: K=0 (ink e paper 0), C=45 (ink e paper 5), M=27 (ink e paper 3), G=36 (ink e paper 4), V=63 (ink e paper 7), W=127 (ink e paper 7 com bright 1) e B=9 (ink e paper 1). Na hora de fazer as substituições, não se deve esquecer de finalizar cada valor numérico com uma vírgula.


Ao final, divide-se a sequência dos valores em várias linhas. Cada linha deve iniciar-se com a diretiva DEFB do assembler e as vírgulas do final devem ser removidas.


Depois de montado com um assembler (pasmo, por exemplo), obtém se um arquivo binário que pode ser incluído em um emulador. O programa assembly abaixo faz a animação do sprite preparado:

    ORG 32768
    LD HL,Miku
    LD DE,30
Mainloop0
    LD B,9
Mainloop1
    CALL APrtScr
    ADD HL,DE
    DJNZ Mainloop1
    PUSH HL
    LD HL,0
    OR A
    SBC HL,DE
    EX DE,HL
    POP HL
    ADD HL,DE
    XOR A
    IN A,(254)
    CPL
    AND 011111
    JR Z,Mainloop0
    RET
;
APrtScr
    PUSH BC
    PUSH DE
    PUSH HL
    LD B,5
Delay
    HALT
    DJNZ Delay
    LD DE,22528
    LD B,0
Loop0
    LD C,0
Loop1
    LD A,(HL)
    BIT 7,A
    JR Z,Jump0
    LD A,(IY+14)
Jump0
    LD (DE),A
    INC HL
    INC DE
    INC C
    LD A,C
    CP 30
    JR NZ,Loop1
    INC DE
    INC DE
    INC B
    LD A,B
    CP 24
    JR NZ,Loop0
    POP HL
    POP DE
    POP BC
    RET
;
Miku
;
    INCLUDE "4373-Hatsune_Miku_Sprite_Fuse_Bead.asm"

O resultado pode ser visto no vídeo abaixo:


Apesar da resolução dos atributos de cores ser baixa (24×32), tem a vantagem de dispor das cores com mais liberdade, o que não ocorre se trabalhar com bitmap em que pixels vizinhos tem que ter mesmos atributos.

Nenhum comentário:

Postar um comentário

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