Biblioteca GLIB
Você está em: MarMSX >> Cursos >> C
Biblioteca GLIB exclusiva do MSX.
O Hi-Tech C original foi desenvolvido para o sistema operacional CP/M. Entretanto, o pacote do Hi-Tech C da Funet (www.msxarchive.nl) possui alguns patches desenvolvidos por Pierre Gielen (1994) contendo uma série de adaptações e correções para o MSX, dentre elas uma biblioteca que permite acessar os recursos gráficos do MSX como desenhos, sprites, modos de tela etc.
O arquivo hitech-4.pma contém o pacote LIBG1193.PMA, no qual contém três arquivos necessários: "libg.lib", "glib.h" e "msxbios.h". Os arquivos restantes são os fontes da biblioteca em Assembly.
Assim, deve-se copiar os arquivos para o disquete do Hi-Tech C.
Para utilizar a bilioteca, adicione a seguinte linha ao seu programa:
#include <glib.h>
O capítulo 9 e o capítulo 11 possuem exemplos de como utilizar as funções da biblioteca GLIB.
As funções dessa biblioteca são:
void boxfill (uint x1, uint y1, uint x2, uint y2, uchar color, uchar logop)
Desenha uma caixa preenchida na tela, definida pelas coordenadas x1,y1 e x2,y2 e a cor da linha em color. As operações lógicas (logop) disponíveis são:
- PSET - Desenha direto.
- AND - Faz operação AND ponto a ponto com o destino.
- OR - Faz operação OR ponto a ponto com o destino.
- XOR - Faz operação XOR ponto a ponto com o destino.
- PRESET - Inverte os bits da cor definida.
- TPSET - idem PSET, descartando a cor 0.
- TAND - idem AND, descartando a cor 0.
- TOR - idem OR, descartando a cor 0.
- TXOR - idem XOR, descartando a cor 0.
- TPRESET - idem PRESET, descartando a cor 0.
Funções relacionadas: boxline.
void boxline (uint x1, uint y1, uint x2, uint y2, uchar color, uchar logop)
Desenha uma caixa NÃO preenchida na tela, definida pelas coordenadas x1,y1 e x2,y2 e a cor da linha em color.
Funções relacionadas: boxfill.
uint calatr (uchar plane)
Obtém endereço da tabela de planos do sprite, de acordo com o número do plano.
Funções relacionadas: calpat, colorspr, inispr, putspr, sprite.
uint calpat (uchar pat)
Obtém o endereço da tabela de padrões do sprite, de acordo com a identificação do sprite pat.
Funções relacionadas: calatr, colorspr, inispr, putspr, sprite.
void circle (uint x, uint y, uint r, uchar color, int s_angle, int e_angle, uint aspect)
Desenha um círculo de raio r nas coordenadas x,y da tela.
A cor é definida por color, o ângulo inicial por s_angle, o ângulo final por e_angle e o achatamento por aspect.
Os ângulos são passados através de um número inteiro, onde:
angle = angulo_rad / 0.000191748
Assim, para fechar um círculo deve-se utilizar o valor 0 para s_angle, e 32768 para e_angle.
e_angle = ROUND(2*3,1415928 / 0.000191748) = ROUND(32767,93) = 32768
Para o achatamento, deve-se utilizar um valor positivo para achatar o eixo y, e um valor negativo para achatar o eixo x. O valor utilizado para o círculo normal é 32768.
Funções relacionadas: paint.
void color (uchar fore, uchar back, uchar border)
Define as cores do texto (fore), do fundo de tela (back) e da borda (border).
Funções relacionadas: nenhuma.
void colspr (uchar num, char *color)
Altera a cor do sprite (sprites modo 2).
Color é um vetor de 8 ou 16 caracteres, de acordo com o tamanho do sprite.
Funções relacionadas: calatr, calpat, inispr, putspr, sprite.
void cpym2v (char * src_address, uchar direction, uint dx, uint dy, uchar dp, uchar logop)
Copia dados da RAM para a VRAM.
Onde: src_address é um ponteiro para o endereço inicial da memória RAM, direction é o sentido da cópia (ver Recortando e colando áreas - COPY, do curso de Basic), dx e dy são as coordenadas de destino, logop a operação lógica aplicada (ver boxfill).
Funções relacionadas: cpyv2m, cpyv2v.
void cpyv2m (uint sx1, uint sy1, uint sx2, uint sy2, uchar sp, char * dest_address)
Copia da VRAM para a RAM.
Onde: sx e sy são as coordenadas de origem, sp a página de origem, dest_address o endereço inicial da RAM para a cópia.
Funções relacionadas: cpym2v, cpyv2v.
void cpyv2v (uint sx1, uint sy1, uint sx2, uint sy2, uchar sp, uint dx, uint dy, uchar dp, uchar logop)
Copia da VRAM para a VRAM.
Onde: sx e sy são as coordenadas de origem, dx e dy as coordenadas de destino, sp a página de origem, dp a página de destino e logop a operação lógica aplicada (ver boxfill).
Funções relacionadas: cpym2v, cpyv2m.
void filvrm (uint address, uint length, uchar data_byte); /* fill(address,length,databyte) */
Preenche um bloco na memória VRAM com o valor definido por data_byte, de tamanho definido por length, começando por address.
Funções relacionadas: nenhuma.
uint getplt (uchar color_index)
Retona as cores RGB de uma cor da paleta, definida por color_index.
O retorno é um número inteiro de 2 bytes, onde a configuração R,G,B é:
rrr0bbb 00000ggg
Funções relacionadas: setplt.
void ginit (void)
Acesso a porta do VPD (0x98).
Funções relacionadas: nenhuma.
void glocate (uint x, uint y)
Modifica a localização do ponteiro na tela.
Funções relacionadas: grpprt.
void grpprt (char , char )
Imprime um caractere na tela gráfica.
Funções relacionadas: glocate.
uint gtxmax (void)
Retona o valor máximo de x na largura da tela.
Funções relacionadas: gtymax.
uint gtymax (void)
Retona o valor máximo de y na altura da tela.
Funções relacionadas: gtxmax.
void iniplt (void)
Inicia a paleta de cores, após as modificações.
Funções relacionadas: setplt.
void inispr (uchar size)
Define o tamanho do sprite.
Opções:
- 0 - sprites 8x8 pequenos
- 1 - sprites 8x8 grandes
- 2 - sprites 16x16 pequenos
- 3 - sprites 16x16 grandes
Funções relacionadas: calatr, calpat, colspr, putspr, sprite.
void interlace (uchar mode)
Modifica o modo de interlace.
Funções relacionadas: screen.
uchar invdp (void)
Obtém o byte correspondente ao endereço atual do VDP.
Funções relacionadas: rdvdp, setrd, wrtvdp.
void knjprt (uint char, char logop, char mode)
Imprime um caractere do tipo Kanji na tela.
Funções relacionadas: nehuma.
void ldirmv (char * dest, uint src, uint len)
Copia da VRAM para a RAM.
Funções relacionadas: ldirvm.
void ldirvm (uint dest, char * src, uint len)
Copia da RAM para a VRAM.
Funções relacionadas: ldirmv.
void line (uint x1, uint y1, uint x2, uint y2, uchar color, uchar logop)
Desenha uma linha reta entre x1,y1 e x2,y2.
Funções relacionadas: nenhuma.
void outvdp (uchar byte)
Envia um byte para o endereço VDP corrente.
Funções relacionadas: nenhuma.
void paint (uint x, uint y, uchar color, uchar b_color)
Pinta uma região da cor color, começando pela coordenada x,y, delimitada pela cor b_color.
Funções relacionadas: nenhuma.
uchar point (uint x, uint y)
Obtém a cor nas coordenadas x,y.
Funções relacionadas: pset.
void pset (uint x, uint y, uchar color, uchar logop)
Desenha um ponto nas coordenadas x,y.
Funções relacionadas: point
void putspr (uchar level, uint x, uint y, uchar color, uchar pat)
Desenha o sprite definido na tela.
Funções relacionadas: calatr, calpat, colspr, inispr, putspr, sprite.
uchar rdvsts (uchar register)
Lê o status do registrador do VDP.
Funções relacionadas: rdvdp.
uchar rdvdp (uchar register)
Lê registro do VDP.
Funções relacionadas: rdvsts, setrd.
void rstplt(void)
Reseta a paleta para as cores do MSX 1.
Funções relacionadas: getplt, setplt.
void screen (uchar scr)
Altera o modo de tela do MSX.
Funções relacionadas: cls.
void setpg(uchar display, uchar active)
Altera a página das screens 5-12.
Funções relacionadas: screen.
void setplt (uchar color_index, uint RGBdata)
Modifica a cor da paleta apontada por color_index.
Em getplt, o formato RGBdata é descrito.
Funções relacionadas: getplt.
void setrd (uint address)
Define o endereço para ser lido pelo VDP.
Funções relacionadas: invdp, rdvdp.
void setwrt (uint address)
Ajusta um endereço para ser gravado pelo VDP.
Funções relacionadas: wrtvdp.
void sprite (uchar pat, char *pattern)
Define o padrão de um sprite, com id igual ao pat e o padrão como um vetor de 8 ou 32 bytes.
Funções relacionadas: colorspr, inispr, putspr, sprite.
void totext (void)
Muda a tela para o modo texto.
Funções relacionadas: screen.
uchar vpeek(uint address)
Obtém um byte da VRAM.
Funções relacionadas: vpoke.
void vpoke(uint address, uchar byte)
Escreve um byte na VRAM.
Funções relacionadas: vpeek.
uint vramsize(void)
Obtém o tamanho da VRAM.
Pode ser: 16, 64 ou 128 Kb.
Funções relacionadas: nenhuma.
void wrtvdp(uchar register, uchar value)
Escreve no VDP.
Funções relacionadas: setwrt.
Referências:
[1]- http://msx.hansotten.com/software/msx-c/