From: Shawn Hargreaves To: djgpp AT delorie DOT com MMDF-Warning: Parse error in original version of preceding line at punt-1.mail.demon.net Subject: Re: ALLEGRO internals Date: Tue, 13 May 1997 09:16:20 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Message-ID: <863528350.0521144.0@[194.129.18.166]> Precedence: bulk Krystyna de Heras writes: > I want to be able to write to the bitmap that ALLEGRO uses to blit to > screen. Is there a inline asm way to do this? And can I draw to the > bitmap even if it's target screen is a planar mode-x, in a similar way > as a 13h-mode for example? Read the section titled "video memory access" in allegro.txt. Basically, for a mode 13h or VBE 2.0 linear framebuffer screen, you can do something like: #include void linear_putpixel(BITMAP *bmp, int x, int y, int color) { _farpokeb(bmp->seg, (unsigned long)bmp->line[y]+x, color); } For a banked SVGA screen (this will also work in linear modes), do: void banked_putpixel(BITMAP *b, int x, int y, int color) { unsigned long address = bmp_write_line(bmp, y); _farpokeb(bmp->seg, address+x, color); } To use a planar mode-X screen, you'll have to also set the VGA plane registers, eg: #include #include void modex_putpixel(BITMAP *b, int x, int y, int color) { outportw(0x3C4, (0x100<<(x&3))|2); _farpokeb(bmp->seg, (unsigned long)bmp->line[y]+(x>>2), color); } -- Shawn Hargreaves - shawn AT talula DOT demon DOT co DOT uk - http://www.talula.demon.co.uk Beauty is a French phonetic corruption of a short cloth neck ornament