Generator znaków
From Atariki
Wersja z dnia 20:44, 1 cze 2010 Mono (Dyskusja | wkład) (wydzielone z opisu formatu fnt) ← Previous diff |
Aktualna wersja Mono (Dyskusja | wkład) (szerokosci) |
||
Linia 3: | Linia 3: | ||
Każdy znak zdefiniowany jest za pomocą 8 następujących po sobie bajtów i definiuje kolejne linie znaku (licząc od góry). Znaki w zestawie uporządkowane są według [[Kody ekranowe|kodów ekranowych]], a nie wg [[ATASCII|kodów ATASCII]]. | Każdy znak zdefiniowany jest za pomocą 8 następujących po sobie bajtów i definiuje kolejne linie znaku (licząc od góry). Znaki w zestawie uporządkowane są według [[Kody ekranowe|kodów ekranowych]], a nie wg [[ATASCII|kodów ATASCII]]. | ||
- | Sposób interpretacji piksela zależy od [[ANTIC Display List#Tryby znakowe|trybu znakowego]], w którym font zostanie użyty (liczby hex 0..F oznaczają indeks koloru piksela): | + | Sposób interpretacji piksela zależy od [[ANTIC Display List#Tryby znakowe|trybu znakowego]], w którym font zostanie użyty (liczby hex 0..F oznaczają indeks koloru piksela). |
- | * w trybach [[Graphics 0|0]], [[Graphics 1|1]] i [[Graphics 2|2]] OS oraz [[ANTIC Display List#Tryby znakowe|3 ANTICa]] pojedynczy bit odpowiada pojedynczemu pikselowi znaku, | + | 1. W trybach [[Graphics 0|0]], [[Graphics 1|1]] i [[Graphics 2|2]] OS pojedynczy bit odpowiada pojedynczemu pikselowi znaku. |
7 6 5 4 3 2 1 0 bit 0 1 2 3 4 5 6 7 piksel | 7 6 5 4 3 2 1 0 bit 0 1 2 3 4 5 6 7 piksel | ||
Linia 18: | Linia 18: | ||
bajt linia | bajt linia | ||
- | * w trybach [[Graphics 12|12]] i [[Graphics 13|13]] OS para bitów odpowiada pojedynczemu pikselowi znaku, | + | 2. W trybie [[ANTIC Display List#Tryby znakowe|3 ANTIC]]-a pojedynczy bit, analogicznie jak dla trybów 0, 1 i 2 OS, odpowiada pojedynczemu pikselowi znaku, ale jako że wiersz w tym trybie zajmuje 10 linii skanningowych, a definicja znaku ciągle składa się z 8 bajtów, to ANTIC generując wiersz dostawia dodatkowo 2 puste linie: |
- | 76 54 32 10 para bitów 0 1 2 3 piksel | + | * dla znaków $00-$5F na dole wiersza |
- | 0 .. .. .. .. 0 0 0 0 0 | + | |
- | 1 .. .o o. .. 1 0 1 2 0 | + | 7 6 5 4 3 2 1 0 bit 0 1 2 3 4 5 6 7 piksel |
- | 2 .. oo oo .. 2 0 3 3 0 | + | 0 . . . . . . . . 0 0 0 0 0 0 0 0 0 |
- | 3 .o o. .o o. 3 1 2 1 2 | + | 1 . . . o o . . . 1 0 0 0 1 1 0 0 0 |
- | 4 .o o. .o o. 4 1 2 1 2 | + | 2 . . o o o o . . 2 0 0 1 1 1 1 0 0 |
- | 5 .o oo oo o. 5 1 3 3 2 | + | 3 . o o . . o o . 3 0 1 1 0 0 1 1 0 |
- | 6 .o o. .o o. 6 1 2 1 2 | + | 4 . o o . . o o . 4 0 1 1 0 0 1 1 0 |
- | 7 .. .. .. .. 7 0 0 0 0 | + | 5 . o o o o o o . 5 0 1 1 1 1 1 1 0 |
+ | 6 . o o . . o o . 6 0 1 1 0 0 1 1 0 | ||
+ | 7 . . . . . . . . 7 0 0 0 0 0 0 0 0 | ||
+ | 8 0 0 0 0 0 0 0 0 | ||
+ | 9 0 0 0 0 0 0 0 0 | ||
+ | bajt linia | ||
+ | |||
+ | * dla znaków $60-$7F na górze wiersza, przy czym znak rysowany jest od drugiego bajtu definicji, a na dole dostawiane są linie według bajtów 0 i 1 | ||
+ | |||
+ | 7 6 5 4 3 2 1 0 bit 0 1 2 3 4 5 6 7 piksel | ||
+ | 0 0 0 0 0 0 0 0 0 | ||
+ | 1 0 0 0 0 0 0 0 0 | ||
+ | 2 . o o . . o o . 2 0 1 1 0 0 1 1 0 | ||
+ | 3 . o o . . o o . 3 0 1 1 0 0 1 1 0 | ||
+ | 4 . o o . . o o . 4 0 1 1 0 0 1 1 0 | ||
+ | 5 . o o . . o o . 5 0 1 1 0 0 1 1 0 | ||
+ | 6 . o o . . o o . 6 0 1 1 0 0 1 1 0 | ||
+ | 7 . . o o o o o . 7 0 0 1 1 1 1 1 0 | ||
+ | 0 . . . . o o . . 8 0 0 0 0 1 1 0 0 | ||
+ | 1 . o o o o . . . 9 0 1 1 1 1 0 0 0 | ||
+ | bajt linia | ||
+ | |||
+ | 3. W trybach [[Graphics 12|12]] i [[Graphics 13|13]] OS para bitów odpowiada pojedynczemu pikselowi znaku, który jest jednak dwukrotnie szerszy. | ||
+ | |||
+ | 76 54 32 10 para bitów 0 1 2 3 piksel | ||
+ | 0 .. .. .. .. 0 00 00 00 00 | ||
+ | 1 .. .o o. .. 1 00 11 22 00 | ||
+ | 2 .. oo oo .. 2 00 33 33 00 | ||
+ | 3 .o o. .o o. 3 11 22 11 22 | ||
+ | 4 .o o. .o o. 4 11 22 11 22 | ||
+ | 5 .o oo oo o. 5 11 33 33 22 | ||
+ | 6 .o o. .o o. 6 11 22 11 22 | ||
+ | 7 .. .. .. .. 7 00 00 00 00 | ||
bajt linia | bajt linia | ||
- | * po włączeniu trybu GTIA w [[Rejestry GTIA#GTIACTL|rejestrze GTIACTL]] (dane obrazu interpretowane są wtedy analogicznie, jak w trybach graficznych [[Graphics 9|9]], [[Graphics 10|10]] i [[Graphics 11|11]] OS) nibble odpowiada pojedynczemu pikselowi znaku. | + | 4. Po włączeniu trybu GTIA w [[Rejestry GTIA#GTIACTL|rejestrze GTIACTL]] (dane obrazu interpretowane są wtedy analogicznie, jak w trybach graficznych [[Graphics 9|9]], [[Graphics 10|10]] i [[Graphics 11|11]] OS) nibble odpowiada pojedynczemu pikselowi który jest tym razem czterokrotnie szerszy. |
- | 7654 3210 nibble 0 1 piksel | + | 7654 3210 nibble 0 1 piksel |
- | 0 .... .... 0 0 0 | + | 0 .... .... 0 0000 0000 |
- | 1 ...o o... 1 1 8 | + | 1 ...o o... 1 1111 8888 |
- | 2 ..oo oo.. 2 3 C | + | 2 ..oo oo.. 2 3333 CCCC |
- | 3 .oo. .oo. 3 6 6 | + | 3 .oo. .oo. 3 6666 6666 |
- | 4 .oo. .oo. 4 6 6 | + | 4 .oo. .oo. 4 6666 6666 |
- | 5 .ooo ooo. 5 7 E | + | 5 .ooo ooo. 5 7777 EEEE |
- | 6 .oo. .oo. 6 6 6 | + | 6 .oo. .oo. 6 6666 6666 |
- | 7 .... .... 7 0 0 | + | 7 .... .... 7 0000 0000 |
bajt linia | bajt linia | ||
- | Pełny zestaw znaków dla trybów [[Graphics 0|0]], [[Graphics 12|12]] i [[Graphics 13|13]] OS oraz [[ANTIC Display List#Tryby znakowe|3 ANTICa]] zawiera definicję 128 znaków i liczy sobie 1024 bajty (128 znaków po 8 bajtów), natomiast dla trybów [[Graphics 1|1]] i [[Graphics 2|2]] OS zawiera definicje 64 znaków i zajmuje 512 bajtów (64 znaki po 8 bajtów). | + | Pełny zestaw znaków zawiera: |
+ | * definicje 128 znaków i liczy sobie 1024 bajty (128 znaków po 8 bajtów) dla trybów [[Graphics 0|0]], [[Graphics 12|12]] i [[Graphics 13|13]] OS oraz [[ANTIC Display List#Tryby znakowe|3 ANTIC]]-a, | ||
+ | * definicje 64 znaków i zajmuje 512 bajtów (64 znaki po 8 bajtów) dla trybów [[Graphics 1|1]] i [[Graphics 2|2]] OS. | ||
+ | Starszy bajt adresu zestawu znaków jest ustalany w rejestrze [[Rejestry ANTIC-a#CHBASE|CHBASE ($D409)]] (cień [[Rejestry cienie#CHBAS|CHBAS ($2F4)]] oraz [[Rejestry cienie#CHSPTR|CHSPTR ($26B)]]) z dokładnością do 1 KB (bity 2-7) lub 512 bajtów (bity 1-7). | ||
== Linki == | == Linki == | ||
Linia 51: | Linia 86: | ||
* [[ANTIC Display List#Tryby znakowe|Opis trybów znakowych]] | * [[ANTIC Display List#Tryby znakowe|Opis trybów znakowych]] | ||
* [[FNT|Opis formatu FNT]] | * [[FNT|Opis formatu FNT]] | ||
+ | * [[Kody ekranowe]] | ||
+ | * [[ATASCII|Kody ATASCII]] | ||
[[Kategoria:Niezbędnik_kodera]] | [[Kategoria:Niezbędnik_kodera]] |
Aktualna wersja
Zestaw definicji czcionek wyświetlanych przez ANTIC w trybach znakowych.
Każdy znak zdefiniowany jest za pomocą 8 następujących po sobie bajtów i definiuje kolejne linie znaku (licząc od góry). Znaki w zestawie uporządkowane są według kodów ekranowych, a nie wg kodów ATASCII.
Sposób interpretacji piksela zależy od trybu znakowego, w którym font zostanie użyty (liczby hex 0..F oznaczają indeks koloru piksela).
1. W trybach 0, 1 i 2 OS pojedynczy bit odpowiada pojedynczemu pikselowi znaku.
7 6 5 4 3 2 1 0 bit 0 1 2 3 4 5 6 7 piksel 0 . . . . . . . . 0 0 0 0 0 0 0 0 0 1 . . . o o . . . 1 0 0 0 1 1 0 0 0 2 . . o o o o . . 2 0 0 1 1 1 1 0 0 3 . o o . . o o . 3 0 1 1 0 0 1 1 0 4 . o o . . o o . 4 0 1 1 0 0 1 1 0 5 . o o o o o o . 5 0 1 1 1 1 1 1 0 6 . o o . . o o . 6 0 1 1 0 0 1 1 0 7 . . . . . . . . 7 0 0 0 0 0 0 0 0 bajt linia
2. W trybie 3 ANTIC-a pojedynczy bit, analogicznie jak dla trybów 0, 1 i 2 OS, odpowiada pojedynczemu pikselowi znaku, ale jako że wiersz w tym trybie zajmuje 10 linii skanningowych, a definicja znaku ciągle składa się z 8 bajtów, to ANTIC generując wiersz dostawia dodatkowo 2 puste linie:
- dla znaków $00-$5F na dole wiersza
7 6 5 4 3 2 1 0 bit 0 1 2 3 4 5 6 7 piksel 0 . . . . . . . . 0 0 0 0 0 0 0 0 0 1 . . . o o . . . 1 0 0 0 1 1 0 0 0 2 . . o o o o . . 2 0 0 1 1 1 1 0 0 3 . o o . . o o . 3 0 1 1 0 0 1 1 0 4 . o o . . o o . 4 0 1 1 0 0 1 1 0 5 . o o o o o o . 5 0 1 1 1 1 1 1 0 6 . o o . . o o . 6 0 1 1 0 0 1 1 0 7 . . . . . . . . 7 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 0 9 0 0 0 0 0 0 0 0 bajt linia
- dla znaków $60-$7F na górze wiersza, przy czym znak rysowany jest od drugiego bajtu definicji, a na dole dostawiane są linie według bajtów 0 i 1
7 6 5 4 3 2 1 0 bit 0 1 2 3 4 5 6 7 piksel 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 . o o . . o o . 2 0 1 1 0 0 1 1 0 3 . o o . . o o . 3 0 1 1 0 0 1 1 0 4 . o o . . o o . 4 0 1 1 0 0 1 1 0 5 . o o . . o o . 5 0 1 1 0 0 1 1 0 6 . o o . . o o . 6 0 1 1 0 0 1 1 0 7 . . o o o o o . 7 0 0 1 1 1 1 1 0 0 . . . . o o . . 8 0 0 0 0 1 1 0 0 1 . o o o o . . . 9 0 1 1 1 1 0 0 0 bajt linia
3. W trybach 12 i 13 OS para bitów odpowiada pojedynczemu pikselowi znaku, który jest jednak dwukrotnie szerszy.
76 54 32 10 para bitów 0 1 2 3 piksel 0 .. .. .. .. 0 00 00 00 00 1 .. .o o. .. 1 00 11 22 00 2 .. oo oo .. 2 00 33 33 00 3 .o o. .o o. 3 11 22 11 22 4 .o o. .o o. 4 11 22 11 22 5 .o oo oo o. 5 11 33 33 22 6 .o o. .o o. 6 11 22 11 22 7 .. .. .. .. 7 00 00 00 00 bajt linia
4. Po włączeniu trybu GTIA w rejestrze GTIACTL (dane obrazu interpretowane są wtedy analogicznie, jak w trybach graficznych 9, 10 i 11 OS) nibble odpowiada pojedynczemu pikselowi który jest tym razem czterokrotnie szerszy.
7654 3210 nibble 0 1 piksel 0 .... .... 0 0000 0000 1 ...o o... 1 1111 8888 2 ..oo oo.. 2 3333 CCCC 3 .oo. .oo. 3 6666 6666 4 .oo. .oo. 4 6666 6666 5 .ooo ooo. 5 7777 EEEE 6 .oo. .oo. 6 6666 6666 7 .... .... 7 0000 0000 bajt linia
Pełny zestaw znaków zawiera:
- definicje 128 znaków i liczy sobie 1024 bajty (128 znaków po 8 bajtów) dla trybów 0, 12 i 13 OS oraz 3 ANTIC-a,
- definicje 64 znaków i zajmuje 512 bajtów (64 znaki po 8 bajtów) dla trybów 1 i 2 OS.
Starszy bajt adresu zestawu znaków jest ustalany w rejestrze CHBASE ($D409) (cień CHBAS ($2F4) oraz CHSPTR ($26B)) z dokładnością do 1 KB (bity 2-7) lub 512 bajtów (bity 1-7).