APPLICATIONSDIVERS ★ RSX CARACTERES EM TECNICOLOR ★

Multicor (Amstrad Magazine)Applications Divers
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Como conseguir caracteres multicolores no ecrã, tanto em coordenadas LOCATE como em coordenadas PIXEL? Até agora tínhamos que o fazer em có-digo-máquina, o que era pouco lógico uma vez que 99% dos programas funcionam suficientemente bem e com a rapidez necessária em BASIC.

SE não fosse através do código-máquina teríamos que construir vários caracteres que, sobrepostos, iriam formar as diferentes partes do caracter desejado e se iriam imprimir, com diferentes “canetas” e em modo transparente, um por cima do outro. Se, por exemplo, quisessemos um homem com o corpo azul, cabelo vermelho e a cara branca com um olho, necessitaríamos de um caracter para o corpo, outro para o cabelo e outro para a cara, com um buraco para mostrar a cor de fundo através do olho; e tudo isto em modo 1! Se fosse no modo 0, poderíamos ter a necessidade de imprimir até 17 caracteres diferentes - o que se torna terrivelmente lento!

Sendo assim, para aqueles que queiram um método fácil e rápido de imprimir no ecrã caracteres multicolores (que, efectivamente são sprítes muito pequenos) sem recorrer a grandes quantidades de código-máquina, desenvolvemos dois comandos RSX muito simples. Um deles é o |MPUT, para imprimir cada caracter, ou uma cadeia de caracteres multicolores, na última posição de impressão de texto. O outro é o |GPUT, para imprimir, tanto um caracter, como uma cadeia de caracteres, na posição do cursor de gráficos.

Para utilizar qualquer deles introduza simplesmente o comando, seguido de uma série de números separados por vírgulas. Por exemplo:

10 LOCATE 10,10: |MPUT,0,1,2,1
20 MOVE 100,100:|GPUT,4
30 MOVE: 200,40:|GPUT,5,6
40 LOCATE 20,3:|MPUT,7

Os números escritos a seguir aos comandos não se referem ao conjunto de caracteres normal mas sim a outro que será desenhado separadamente e sobre o qual falaremos mais à frente.

Como se pode ver, ambas as rotinas são muito simples de utilizar. Contudo, têm algumas limitações.

O comando |MPUT não coloca o cursor de texto por trás do último caracter que imprime; assim, se quisermos misturar caracteres multicolores e normais, temos que fazer um comando LOCATE antes de cada |MPUT. O comando |GPUT coloca o caracter na posição do byte mais próximo no ecrã, a qual não é sempre a posição do pixel visada. Isto significa que o cursor pode mover-se normalmente para cima e para baixo no ecrã, mas que só se moverá de 8 em 8 bits para a direita ou esquerda. Isto limita o movimento horizontal a meio caracter em modo 1 (quatro pixels) e um quarto de caracter em modo 0 (dois pixels). No modo 0 isto não constitui uma limitação excessiva mas se pensarmos que o movimento será muito desigual no modo 1, será melhor experimentar desenhar dois ou mais caracteres com a forma que quisermos ligeiramente modificada em cada um, de modo que, imprimindo-os um a seguir ao outro, se consiga um movimento suave. É esta a técnica utilizada no programa de demonstração.

UM PREÇO A PAGAR

Tem que se pagar um preço em troca de todas estas facilidades: necessita-se de mais memória para cada caracter a imprimir. Em vez dos 8 bytes habituais, um caracter multicolor em modo 1 necessita de 16 bytes, e em modo 0 necessita de 32 bytes. Isto, no entanto, não é tão mau se considerarmos que teríamos que utilizar até 3 caracteres em modo 1 ou 15 em modo 0 para conseguir o mesmo resultado - processo que, aliás, seria muito mais lento. Um caracter em modo 2 continua a utilizar somente 8 bytes e a rotina funciona de facto com o modo 2, embora mantenha neste modo um pequeno problema: não pode ter mais que uma cor devendo utilizar-se em seu lugar o método normal de BASIC.

COMO FUNCIONA 0 PROGRAMA

Primeiro digite o programa 1, grave-o e execute-o. Se cometeu algum erro nas linhas de DATA, o programa vai indicar-lhe qual a linha em que este se encontra. Quando o programa funcionar sem erros, grave-o e re-inicialize o computador, desligando-o e ligando-o de seguida. Agora digite o programa 2 e grave-o. Este permitir-lhe-á não só desenhar os seus caracteres em todos os modos como ainda gravá-los em fita, ou disco.

O programa desenhador é muito simples e curto. Depois de lhe dizermos qual o modo gráfico que queremos utilizar, o programa entra nele. Para deslocar o cursor pelo caracter utilize as teclas de cursor e use a tecla [COPY] para activar e desactivar a “caneta". Para mudar a “caneta” carregue na tecla [P] (PEN) e introduza o novo número de “caneta”. Para armazenar o caracter em memória carregue na tecla [S] e dê-lhe um número. Pode armazenar todos os caracteres que quiser enquanto toma nota da quantidade de memória que cada um gasta. Para reeditar um caracter introduzido anteriormente na memória carregue em [R] e introduza o número com o qual o armazenou. Quando acabar de desenhar caracteres carregue em [Q] (Quit). Depois de o programa lhe ter perguntado se está seguro do que vai fazer, perguntar-lhe-à ainda, e por fim, quantos caracteres quer gravar. Lembre-se que o número de sprites começa em 0, e que o espaço que vai de 0 a 7 equivale a 8 sprites.

Agora, para ver o fruto do seu trabalho, deve re-inicializar a máquina e executar este programa que carregará os seus sprites.

10 |MPUT "MODO ";MM:MD=1:IF MM<>1 THEN MD=2
20 INPUT "QUANTOS SPRITES";S:MODE MM
30 S=S*16*MD
40 H=HIMEM-1
50 MEMORY (H-S)
60 H=HIMEM+1
70 LOAD "SPRITES",H

Agora pode carregar e executar novamente o programa 1. Este moverá o HIMEM e vai auto-posicionar-se por cima activando-se de seguida. A partir deste momento já pode utilizar os comandos RSX previamente criados, e ver os seus sprites a aparecerem no ecrã. Não se esqueça que o comando |MPUT não moverá a posição do cursor, de modo que, se introduzir

|MPUT,0,0,0

a mensagem “Ready” irá sobreescre-ver os seus sprites a partir do momento em que acrescentar PRINT ao final do comando. E não se esqueça de situar o cursor de gráficos no ecrã com o comando MOVE para poder ver os caracteres, tal como em:

MOVE 100,100:|MPUT,0

Ora bem, agora deveríamos ter as rotinas a funcionar. Existem três métodos para imprimir caracteres. Podem imprimir-se os caracteres e apagá-los com |MPUT ou |GPUT sobrepondo-lhes um “caracter branco”. Deve reservar um dos seus caracteres para fazer isto. Também pode utilizar-se o modo XOR para escrever os caracteres no ecrã, combinando-se estes com o que nele estiver no momento da impressão, da mesma forma como, com certeza já observaram, acontece em jogos como o “Manic Miner” e o “Sorcery”, por exemplo. Utilizando este processo pode apagar-se o caracter impresso no ecrã imprimindo-se sobre ele o mesmo caracter. O terceiro método só imprimirá as partes do caracter que tenham alguma 'tinta'. Não imprime bytes zero. Suponhamos, por exemplo, que só queremos um caracter tamanho “modol", mas em modo 0. Se neste modo só se desenha meio caracter (digamos, por exemplo, a metade esquerda) e se deixa o resto em branco, quando imprimirmos o caracter referido junto a outro obteremos normalmente o efeito bizarro de apagar os que estavam no ecrã, não aparecendo nada em vez disso. Este método de imprimir suprime este efeito e permite imprimir caracteres pequenos sem uma sombra à sua volta. Isto acaba por ser quase igual ao modo transparente normal. E significa que deve utilizar-se o primeiro método de impressão se quisermos apagar algo como um caracter em branco; de outro modo não acontecerá absolutamente nada.

Para seleccionar os métodos a utilizar execute simplesmente POKE 5,n onde n representa:

  • 2 a 255 para impressão normal.
  • 1 para impressão XOR.
  • 0 para impressão transparente.

Para ver a rotina em acção digite a primeira parte do pequeno programa de demonstração que prepara os caracteres. De seguida, carregue e execute o programa 1 e depois carregue e execute a segunda parte do programa de demonstração para ver um balão a mover-se suavemente por todo o ecrã.

Como ponto final, o programa funcionará em qualquer lugar da memória, de maneira que se decidir desenhar um conjunto de caracteres diferente com o comando SYMBOL AFTER, faça-o antes de carregar e executar os caracteres multicolores e o programa 1 -assim tudo sairá bem.

Amstrad Magazine

★ PUBLISHER: Amstrad Magazine (Publinfor)
★ ANNÉE: 1989
★ CONFIG: 64K + AMSDOS
★ LANGAGE:
★ LiCENCE: LISTING
★ AUTEUR(S): ???
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» RSX-Multicor    (Amstrad  Magazine)    LISTING    PORTUGUESEDATE: 2021-02-02
DL: 204
TYPE: PDF
SiZE: 499Ko
NOTE: Uploaded by hERMOL ; 4 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » RSX Rectangle
» Applications » RSX Professional
» Applications » RSX Break-Utility (CPC Magazin)
» Applications » RSX Controladores de Modo 3 (Amstrad User)
» Applications » RSX Line (Computer Schau)
» Applications » Printer buffer
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop
Page créée en 029 millisecondes et consultée 913 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.