[Oberon] FPGA - Screen.Mod
Tomas Kral
thomas.kral at email.cz
Wed Oct 24 11:47:20 CEST 2018
> You already reached a lot.
Thank you for your encouragement. This is an improved version, that
seems having correct header. Colours are still shifted both in palette
and indices.
I store BGR as is in little endian, so as BMP expects. I fear instead of
byte reversal, I may need nibble reversal which would be terribly
slow, unless some magic mask and lookup used.
(*Windows Bitmap File Header*)
Files.Write(R, "B"); Files.Write(R, "M");
Files.WriteInt(R, 14+40+8+128*(*7*)68*4); (*file size 768 real, 68 for faster testing*)
Files.WriteInt(R, 0); (*reserved*)
Files.WriteInt(R, 14+40+(*2*)16*4); (*offset of bits, 2*4 - mono, 16*4 - 4bit*)
(*Windows Bitmap WinHeader*)
Files.WriteInt(R, 40); (*header size*)
Files.WriteInt(R, 1024); Files.WriteInt(R, 768); (*w,h*)
Files.WriteInt(R, 00040001H); (*planes, bpp, should really be 0001 0004, but 0001 0004 makes oversized palette*)
Files.WriteInt(R, 0); (*no compression*)
Files.WriteInt(R, 0); (*size of bitmap - can be 0 if uncompressed*)
Files.WriteInt(R, 15000); Files.WriteInt(R, 15000); (*h&vres in ppm*)
Files.WriteInt(R, 16); Files.WriteInt(R, 16); (*colours used, important, 2/2 - mono, 16/16 - 4bit*)
(*fixed colour table `00BBGGRRH' 00padded rgb little endian*)
Files.WriteInt(R, 0000000H); Files.WriteInt(R, 0000080H) (*red*);
Files.WriteInt(R, 0008000H); Files.WriteInt(R, 0008080H);
Files.WriteInt(R, 0800000H);(*blue*) Files.WriteInt(R, 0800080H);
Files.WriteInt(R, 0808000H);(*green*) Files.WriteInt(R, 0808080H);
Files.WriteInt(R, 0C0C0C0H); Files.WriteInt(R, 00000FFH);
Files.WriteInt(R, 000FF00H); Files.WriteInt(R, 000FFFFH);
Files.WriteInt(R, 0FF0000H); Files.WriteInt(R, 0FF00FFH);
Files.WriteInt(R, 0FFFF00H); Files.WriteInt(R, 0FFFFFFH);
(*actual colour table*)
(*FOR a := ms TO me BY 4 DO SYSTEM.GET(a, m); Files.WriteInt(R, m) END;*)
--
Tomas Kral <thomas.kral at email.cz>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Screen.Grab.png
Type: image/png
Size: 26601 bytes
Desc: not available
URL: <http://lists.inf.ethz.ch/pipermail/oberon/attachments/20181024/abb1caea/attachment.png>
More information about the Oberon
mailing list