
|










|
By SEAV
Libraries like DirectQB and Dash certainly help take off some of the work
from QB programming. But, I would have to point out some disadvantages of
using any library compiled in QLB and LIB form. First, even if you don't
use all the routines contained within the library, especially if the
library has little granularity (routines are compiled together from the
same source module), the routines you don't use will still be included in
your final compiled program. This means bigger programs and less available
memory for data use.
I have experienced
getting an Out of String Space Error when I had DQB 1.2 loaded in my game.
Second, specifically
for ASM-libraries like DQB, Dash, and some other shareware libraries, I've
noticed that the routines themselves do not really run very fast when
compared to using assembly routines called using CALL ABSOLUTE.
To prove this point,
download my benchmark program that
pits my own 8086 assembly sprite put routine called using CALL ABSOLUTE
against DirectQB's 386 assembly code from the 1.2 version. The algorithms
used were similar, with DirectQB's being the more efficient. Yet, my
routine runs faster. It even becomes faster when compiled while DirectQB
did not become faster significantly.
Last, since these
libraries are for general use they tend to be a bit flexible, which would
certainly be not efficient for your program. Unless you have a way of
customizing the libraries, you're out of luck if you want tight, fast, and
efficient code.
Now, don't get me
wrong here. I totally approve of libraries especially if you don't have the
know-how of making your own. I, myself, might even use QMidi or BWSB since
my knowledge of SB music programming is limited. And I would use DirectQB
for some of my other projects.
If you do know
assembly and you have the time, then I would suggest that you make your own
routines. It will certainly make your programs more efficient, plus you
can costumize the routines to any degree of flexibility and reusability.
Also, it's good programming experience.
In my part, I have
made my own collection of assembly routines using DEBUG and QB subroutines.
This includes sprite routines, a keyboard handler, EMS routines, and
palette routines. And since I made them, it's very easy for me to customize
them for each project. And DEBUG is my assembler of choice (since it is the
only assembler I have) =)

|