
|
Screen 10-12 M.Dekker, 13-07-94
- Area: (NL ) MSX ------------------------------------------------------------
Msg#: 1659 Date: 13 Jul 94 11:17
From: Martijn Dekker Read: Yes Replied: No
To: Folkert van Heusden Mark:
Subj: screen 10 - 12
------------------------------------------------------------------------------
-=> Quoting Martijn Dekker to Folkert van Heusden <=-
MD> Op 11 Jul 94 schreef Folkert van Heusden het volgende aan hullie:
FH> Hoe zitten screen 10 t/m 12 in elkaar? enneh, hoe zit dat met die yjk
FH> ofzoiets?
MD> Onderstaand tekstje slingerde toevallig nog op mijn HD rond. Ooit eens
MD> gedownd van InfoDrome (die nu al weken off-line is :-(((). De "ik" in
MD> dat tekstje ben ik dus niet, en ik weet niet wie het wel is want er
MD> staat geen naam onder. De naam Alex Wulms is echter een hele bekende
MD> in het MSX-wereldje.
MD> Kleine aanvulling vooraf: screen 10 t/m 12 nemen per scherm evenveel
MD> ruimte in als screen 8. In screen 12 zijn per groepje van 4 pixels 4
MD> bytes gereserveerd, met voor die vier pixels samen de kleur in YJK
MD> codering, en daarnaast per pixel de helderheid (0-31).
MD> In screen 10 en 11 (dat is voor de machine hetzelfde, alleen voor
MD> BASIC is er verschil) is de helderheid niet 0-31, maar 0-16. Het bit
MD> dat zo vrijkomt wordt gebruikt om te vlaggen of deze pixel een screen
MD> 5-style pixel (16 uit 512 kleuren) of een screen 12-style pixel (met
MD> groffere helderheid) is.
MD> Overigens wordt in dit tekstje het eigenlijke opslagformaat (wat zit
MD> in welke bits) van de screen 10-12 pixels niet beschreven. In MSX
MD> Computer Magazine nr. 47 (juni 1991) is echter een uitstekend artikel
MD> verschenen dat dat allemaal haarfijn uitlegt. Het staat op pagina's 37
MD> tot 41. Heb je MCM 47 niet, bestel hem dan na bij de MCCM
MD> LezersService. Kost je een beetje geld, maar dan heb je ook een _goed_
MD> artikel.
MD> Dan nu het tekstje van mijn HD, over conversie van RGB naar YJK en
MD> vice versa (deze informatie staat _niet_ in dat MCM artikel).
MD> -------------------<<<CUT HERE>>>---------------------
MD> (Ik heb deze tekst eens van Alex Wulms gekregen, als reaktie op een
MD> vraag van mij)
MD> 4 horizontale pixels zijn in screen 12 als volgt gecodeerd:
MD> |C7 C6 C5 C4 C3|C2 C1 C0|
MD> ------+--------------+--------+
MD> 1 dot | Y1 | Kl |
MD> 1 dot | Y2 | Kh |
MD> 1 dot | Y3 | Jl |
MD> 1 dot | Y4 | Jh |
MD> ------+--------------+--------+
MD> K = KhKl is een 6-bits 2 complement getal
MD> J = JhJl is een 6-bits 2 complement getal
MD> Y1..Y4 zijn 5-bits unsigned getallen
MD> K en J zijn dus getallen met een sign (bit 6 is het sign bit). Dit
MD> houdt dus in dat de volgende conventie wordt gebruikt:
MD> K = 32 -> -32 wordt bedoeld
MD> K = 33 -> -31 wordt bedoeld
MD> . . . . . .
MD> K = 63 -> -1 wordt bedoeld
MD> K = 0 -> 0 wordt bedoeld
MD> K = 1 -> 1 wordt bedoeld
MD> . . . . . .
MD> K = 31 -> 31 wordt bedoeld
MD> Dezelfde conventie wordt bij J gebruikt.
MD> In basic kan daarom de volgende 'conversie' formule worden gebruikt
MD> (om 6-bits 2-complement om te zetten in 16 bits 2-complement ofwel
MD> integers):
if k>32 then k=k-64
MD> En op de Z80 (in assembler, neem aan: K zit in de Accu)
MD> mk8bits: cp 32 ; is het getal positief ?
MD> ret c ; ja => alles is goed
MD> sub 64 ; nee => zet om in 8-bits 2-complement
MD> ret
MD> Als je dit eenmaal hebt, kun je de volgende formules gebruiken:
MD> -Voor conversie van YJK naar RGB:
MD> R = Y+J
MD> G = Y+K
MD> B = (5/4)*Y - (J/2) - (K/4)
MD> Let op: R, G en B zijn in principe allemaal 5 bits. De uitkomsten
MD> kunnen echter te groot of te klein worden! Daarom dient hierop
MD> gecontroleerd te worden. Dit kan bijvoorbeeld als volgt (in basic):
if r>31 then r=31 else if r<0 then r=0
if g>31 then g=31 else if g<0 then g=0
if b>31 then b=31 else if b<0 then b=0
MD> -Voor de conversie van RGB naar YJK
MD> Y = B/2 + R/4 + G/8
MD> J = R - Y (= (3/4)*R - B/2 - G/8, dus hier zit alles in gecodeerd)
MD> K = G - Y (= (7/8)*G - B-2 - R/4, dus ook hier zit alles in)
MD> In J en K zit dus alles (R, G em B) gecodeerd, alleen in andere
MD> verhoudingen!! -------------------<<<CUT HERE>>>---------------------
MD> Hopelijk heb je hier wat aan.
MD> Groeten & zo, |\/| a r t ij |\|
MD> -!- Alice4Mac 2.4.4 E T2 Eval:12Jun94
MD> ! Origin: Point 2 of Paninaro BBS, +31-50-772840 (2:282/525.2)
|