
  MEGALZ PC REINCARNATION

 
 I. What the f*ck that all is about?

 From  the  ancient times I was using nice MegaLZ speccy packer.
But there were two problems - first, it wasn't released publicly
(available  only to mayHem members), second, it has somewhat not
perfect  packing in comparison with other packers available.  On
the other hand, I like MegaLZ depacker, which is 110 bytes long,
fully relocatable and just looks nice =) That's why I decided to
improve  packing  ratio while keeping original nice 110-byte Z80
depacker  (and thus remaining original packed file format).  For
the  simplicity  and  for  memory  consumption  & speed reasons,
packer  was re-written from scratch in C in portable manner.  Up
to now console MegaLZ packer was successfully built under win32,
amigaos, linux-i586 and ARM.


 II. Some words about packing efficiency.

 While  the  original  Speccy  MegaLZ  (old  MegaLZ)  was  quite
straightforward in selection of LZ codes, this new MegaLZ does a
nice  thing:  it selects the best LZ codes chain through all the
file,  using  smart  algorithm,  which  is close to the Dijkstra
algorithm  for  searching  a shortest path.  As a result, packed
file  sizes  decrease  up  to  5%,  which  is equivalent to size
decrease  about 1000 bytes on 20kB packed file.  Some comparison
of packing ratio with other packers available on Speccy was also
done.


 III. How to use it.

 First,  take suitable executable file from "Exe" directory, and
then  put  it to the comfortable place you can call it from.  Up
to  now, there are 3 executables:  for amigaos (built on SAS/C),
for  win32  console (built on MSVS 6), for linux (built for i586
on   gcc3.2.3   under  linux  redhat7.3).   If  for  some  cases
executables  do  not fit your needs, you have then to build from
sources your own one...
 Then, invoke it with no arguments and follow tips.
 If  you prefer reading instructions first, you have to remember
simple  pattern:   "MegaLZ  [options]  <input filename> [<output
filename>]",  where  options  could  be -h, -g and -d.  -h means
just  printing  some  help.   -g  means using simple (greedy) LZ
codes  selection instead of advanced (optimal).  In greedy mode,
files  get bigger yet their size coincide with the size given by
original Speccy MegaLZ packer.  -d means doing depacking instead
of  packing.   If  you  do  not  specify  output filename, input
filename will be used with addition of suitable extension.


 IV. Depacking back.

 First  way  to  recover  files  from  packed  ones is to use -d
option.   The  second  and  the  most  natural way is to use Z80
depacker,  which  is  in "Z80" directory, given as Z80 assembler
source  code,  easily  adaptable  to  any  particular assembler.
Detailed usage instructions are given in the source file itself.
Third  way  - using universal C depacker, which is the part of C
source code of overall MegaLZ packer.


 V. Where is that all?

 Distributive  is  divided  in three parts:  basic part contains
only  executables  and  Z80  depacker, development part contains
complete  C  sources  and  benchmark  part  contains thoroughful
comparison of packing abilities with other Speccy packers.


 VI. Copy right?

 The original MegaLZ Speccy packer, Z80 depacker and packed file
format  (C) fyrex^mhm.

 Advanced C MegaLZ packer  (C) lvd^mhm.

 This  product  is  supplied  "as-is",  without any explicit and
implicit   warranties   of   any  kind.   The  authors  are  not
responsible  for  any  kind  of  problems,  losses, injuries and
deceases resulting anyhow from using, not using or misusing this
product.
 The  product can be spread freely as original archives provided
no changes are made to it.





 04.01.2006       mayHem          lvd^mhm


mailto: lvd@dgap.mipt.ru
