WORLDNEWS
ISSUE 19
16777216 szín HAM8 módban
Egy
(amúgy elég cool) kerdőív során felmerült a kérdés, hogy pontosan
mennyi színt is lehet kirakni HAM8-ban a képernyőre.
Elvi
kérdésről lévén szó, nem foglalkozunk a képméretből származó,
illetve ahhoz kapcsolódó korlátokkal, mint:
-
az AGA által megengedett maximális képméret,
- a CHIP RAM mennyiség vagy
- a mai monitorok által megjeleníthető kép maximális mérete.
(Már
csak azért sem kell foglalkoznunk vele, mert a BPL1MOD
és a BPL2MOD word méretû, valamint az így
létrehozott vízszintesen is iszonyú méretû
autoscroll képernyõ függõleges méretének
valóban csak a chipram mérete szab határt
- így egy rengeteg chiprammal rendelkezõ gépen
elvileg minden további nélkül megvalósítható
a dolog. Boxeren tehát nem kizárható, hogy
még láthatnánk is.-Emeric SH)
Mivel
a képmérettel nem fogalkozunk, elég ha leírom hogy kell egy tetszőleges
színű 24 bites pixelt előállítani.
A
dologhoz nem kell más, mint a 64 színű paletta megfelelő beállítása,
amellyel a HAM8-ban mindenféle "trükk" nélkül előállítható 64x64x64,
azaz 262144 szint "finomszabályozzuk".
Ez
paletta lehet a következő:
színregiszter |
|
r
g b |
0: |
|
$000000
|
1: |
|
$000001
|
2: |
|
$000002
|
3: |
|
$000003
|
4: |
|
$000100
|
5: |
|
$000101
|
6: |
|
$000102
|
7: |
|
$000103
|
8: |
|
$000200
|
9: |
|
$000201
|
10: |
|
$000202
|
11: |
|
$000203
|
12: |
|
$000300
|
13: |
|
$000301
|
14: |
|
$000302
|
15: |
|
$000303
|
|
|
|
16: |
|
$010000
|
17: |
|
$010001
|
18: |
|
$010002
|
19: |
|
$010003
|
20: |
|
$010100
|
21: |
|
$010101
|
22: |
|
$010102
|
23: |
|
$010103
|
24: |
|
$010200
|
25: |
|
$010201
|
26: |
|
$010202
|
27: |
|
$010203
|
28: |
|
$010300
|
29: |
|
$010301
|
30: |
|
$010302
|
31: |
|
$010303
|
|
|
|
32: |
|
$020000
|
33: |
|
$020001
|
34: |
|
$020002
|
35: |
|
$020003
|
36: |
|
$020100
|
37: |
|
$020101
|
38: |
|
$020102
|
39: |
|
$020103
|
40: |
|
$020200
|
41: |
|
$020201
|
42: |
|
$020202
|
43: |
|
$020203
|
44: |
|
$020300
|
45: |
|
$020301
|
46: |
|
$020302
|
47: |
|
$020303
|
|
|
|
48: |
|
$030000
|
49: |
|
$030001
|
50: |
|
$030002
|
51: |
|
$030003
|
52: |
|
$030100
|
53: |
|
$030101
|
54: |
|
$030102
|
55: |
|
$030103
|
56: |
|
$030200
|
57: |
|
$030201
|
58: |
|
$030202
|
59: |
|
$030203
|
60: |
|
$030300
|
61: |
|
$030301
|
62: |
|
$030302
|
63: |
|
$030303
|
Tehát
minden szín eléggé sötét, de a felső 6 bit teljesen lényegtelen
céljaink elérése érdekében, mivel később amúgy is átállítjuk azt.
A kívánt 24 bites szín előhozásához ezzel, vagy ehhez hasonló
palettával 4 pixel kell:
lépés |
|
aktuális
színbitek |
|
grafikus
memóriába kerülő |
|
|
vörös |
zöld |
kék |
|
8
bites érték |
0 |
|
???????? |
???????? |
???????? |
|
- |
1 |
|
000000RR |
000000GG |
000000BB |
|
RRGGBB00
|
2 |
|
rrrrrrRR |
000000GG |
000000BB |
|
rrrrrr10
|
3 |
|
rrrrrrRR |
ggggggGG |
000000BB |
|
gggggg11
|
4 |
|
rrrrrrRR |
ggggggGG |
bbbbbbBB |
|
bbbbbb01
|
A
táblázatban minden bitet egy karakter jelöl, a kivánt truecolor
színt a bináris rrrrrrRRggggggGGbbbbbbBB érték írja le. Persze
pl. a különböző helyiértéken szereplő azonos betűk nem cserelhetők
fel. Az alsó helyiértékeket csak azért írtam nagybetűvel, hogy
egyértelmű (...) legyen a fenti tábálzat.
A
0. lépés a mindenféle állítgatás előtti állapotot jelöli.
1.
pixel: a fenti palettából egy szín, amelynek alsó 2 bitje mind
az r, g, b komponensből megfelel a kívánt pixelének. A táblázat
szín oszlopában a 0-k lényegtelenek, úgyis átállítódnak később,
és bármi állhatna a helyükön. Hogy ténylegesen mi kerül a 0-k
helyére, azt a paletta határozza meg.
2.
pixel: vörös komponens felső 6 bitjének átállítása
3.
pixel: zöld komponens felső 6 bitjének átállítása
4.
pixel: kék komponens felső 6 bitjének átállítása
A
4. pixelünk a képernyőn már pontosan olyan színű lesz, amilyet
eredetileg akartunk. Amúgy a grafikus memóriába kerülő értekek
"végén" szereplő 0-k és 1-k a HAM8 kontroll bitek, ezek HAM8 esetén
az alsó 2 bitplanén vannak.
Mégegyszer:
ez egy elmeleti rágódás volt. Gyakorlati haszna nincs a 16.8 millio
szín ilyetén megvalósításának 262 ezerrel szemben, mivel pl. a
fenti paletta nagyon sötétté tenne egy képet, hogy más bajáról
ne is beszéljek. De tessék megjegyezni, hogy egy HAM8-as képernyőn
tetszőleges színû pixel megjeleníthető ugyanazzal a megfontoltan
beállított palettával, tehát elvileg egy képernyőn bármilyen színû
pixel (a 16.8 millióból!) szerepelhet, ha azt a kép mérete lehetővé
teszi.
Att1s SH
(Idézet
a TFH AGA.Guide-ból:
Since
only 6 bitplanes are available for modify data, the data is placed
in 6 MSB. The 2 LSB are left unmodified, which allows creation
of all 16,777,216 colors simultaneously, assuming one had a large
enough screen and picked one`s base registers judiciously. This
HAM mode also works in HIRES and SHRES modes.
Fentiekben
épp ezt valósítottuk meg. -Emeric SH)