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)