www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/12/29/19:37:08

Message-ID: <386A9193.124D022D@ozemail.com.au>
From: QarnoS <qarnos AT ozemail DOT com DOT au>
Organization: Anti-Conservation Foundation of Australia
X-Mailer: Mozilla 4.7 [en] (Win98; I)
X-Accept-Language: en
MIME-Version: 1.0
Newsgroups: comp.os.msdos.djgpp
Subject: Very fast allegro blitting
Lines: 40
NNTP-Posting-Host: slmlb36p59.ozemail.com.au
X-Trace: ozemail.com.au 946508021 210.84.138.60 (Thu, 30 Dec 1999 09:53:41 EST)
NNTP-Posting-Date: Thu, 30 Dec 1999 09:53:41 EST
Distribution: world
Date: Thu, 30 Dec 1999 09:56:20 +1100
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Hi all!

It seems that the allegro blit function is the bottleneck in my current
project, so I'm trying to create a faster allegro blit for a memory ->
screen bitmap in 640x480x256 resolution. Since I know what the bitmap
types are, and the resolution, I should be able to cut back on the
overhead of checking bitmap type, etc. This is what I have, so far, but
it crashes with no useful traceback info.

Firstly, this is the function call I'm trying to emulate (buffer is a
620x440x256 memory bitmap):

blit(buffer, screen, 0, 0, 10, 10, 620, 440);

Here's the code:

void fast_blit(BITMAP * buffer) {
     bmp_select(screen);
     for (int y = 10; y < 450; y++) {
         unsigned long address = bmp_write_line(screen, y) + 10;
         memcpy((void *)(address), buffer->line[y], 620);
         }
     bmp_unwrite_line(screen);
     }


Thanks in advance.

-- QarnoS

{ Insert witty comment here }

-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GO d- s:+ a--- c++(++++) UL P+ L+ E W+++ N++ o--
K---- w-- O? M-- V? PS PE Y-- PGP- t+(+++)
5-- X+(++) R* tv b DI-- D+ G-(--) e(*) h! !r(---) m
------END GEEK CODE BLOCK------


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019