Ä 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> -------------------<<>>--------------------- 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!! -------------------<<>>--------------------- 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)