Flamewarder of Hypothermia
Presents
∙──────────────────────────∙
│ G D Z Algorithm │
∙──────────────────────────∙
Hey! Who needs yet another graphics storage format? Well,
I do, for instance. And every other guy who wants to make
games without giving everyone access to their artwork by
saving it in PCX or RAW format. Well, the best way to pro-
tect your data is to compress it like nobody has ever done.
And that's why I bring you GDZ.
And aside from that, GDZ beats PCX more often than not in
data compression and decoding speed. The biggest difference
I have recorded is a 320x200 raster of colors 254 and 255,
which was 128kb in PCX and about 500 bytes as GDZ. The best
possible advantage for PCX is about 64kb vs 96kb.
If your data has gradients, ornamentals or such, GDZ bests
PCX hands down. GDZ saving might take a while, but loading
is fast like any other format.
Files included:
FILE_ID.DIZ
GFXCONV.EXE
GFXCONV.CPP C++ 3.0 Source code of GFXCONV.EXE
GFXIOL.H C++ 3.0 Header file for the LIB
GFXIOL.LIB C++ 3.0 LIB to load and save graphics (Large Model)
README.TXT This file
*.PCX PCX files
*.GDZ GDZ files
*.GDT GDT files
*.RAW RAW files
*.PAL Palette data files for GDT and GDZ
I have included 2 pictures in all formats for you to compare.
They are drawn before I coded GDZ, so they are not GDZ optimized.
You might ask how to use the LIB in your productions. Well,
look GFXCONV through. It was quite hastily done, and there
are few comments. Anyhow, it should be pretty self-explaining.
Let's make it simple: to load a picture you need 64000 bytes
allocated memory (or screen adapter). There are four functions
to load graphics and three to save them:
load_pcx(char near*filename,char far*data)
load_gdt(char near*filename,char far*data)
load_gdz(char near*filename,void far*data)
load_raw(char near*filename,char far*data)
save_gdt(char near*filename,char far*data)
save_gdz(char near*filename,void far*data)
save_raw(char near*filename,char far*data)
These functions return 0 when succesful.
In addition, there are palette handling functions:
loadpalette(char near*filename);
savepalette(char near*filename);
setpal(int);
fadein();
fadeout();
There is an external table:
char palette[768]
which has all R G B values stored in it. load- and savepalette
load and save this table with specified name. setpal outputs
the palette into VGA DAC, parameter being a brightness factor.
255 is the normal setting.
So, if you'd like to display a PCX image on screen:
char far*screen=(char far*)MK_FP(0xa000,0);
load_pcx("pcx.pcx",screen);
setpal(255); // or fadein();
The same goes for GDT and GDZ files. They do not have a palette
specified in their own files, so if you have many pics of same
palette you'll only need one palette file. All functions assume
their format's logical extension, so you do not need to type
PICTURE.PCX. PICTURE is enough. All loaders load from current
directory only. GDZ and GDT loaders try to load a palette file
with the same name (except for the extension). File not founds
are ignored with palette loading. If you have one global palette
file, you can name it as PALETTE.DAT (for example), load it
after you've changed your screen mode, and you don't need any
more palette files. Note! When saving GDT and GDZ files, the
converter automatically saves palette file with the same name
as the GDT/GDZ file and extension .PAL
And the legal stuff.. IMPORTANT!!
I grant you a license to use GFXIO library in your productions
in any way you want as long as you credit me for GFX packing (if
you use my formats, GDT or GDZ) or GFX loader (if you use RAW
or PCX). Note that PCX is (C) by ZSoft. If you are making a
shareware game, I would appreciate a free registration. That is
only fair, since all guys who have done something in the making
of the game get at least a free copy.. you can keep the profit
for yourself for all I care. At least EMail me, if possible:
vnorilo@netti.fi (At the time being)
Address where you can send cars, money and SGI supercomputers:
Vesa Norilo
Hiidenkivent. 17C
04200 Kerava
BTW! If you are interested in my graphic routines, email or snail
me and ask.. Oh. I almost forgot. Graphics are drawn in DeluxePaint
][ Enchanted. And code written in Borland C++ 3.0 and Borland TASM
4.0.