XFD Package - Release 1.10 ========================== COPYRIGHT --------- All parts of this software package are freely distributable for noncommercial use. If you redistribute XFD, you have to keep all files together. All programs are copyright by their authors. DISCLAIMER ---------- The authors are not liable for any changes made to any part of the package, or consequences thereof as they cannot be made responsible for damages or loss of data directly or indirectly caused by their software. AUTHORS ------- Georg Hörmann - Definition of XFD standard, xfdmaster.library, xfdLibInfo, xfdList, xfdDecrunch, Asm support, some external decrunchers. Anders Melchiorsen - 'C' includes, protos, pragmas. Dexter&Bartman/Abyss - External decruncher for FIRE. WEPL - External decrunchers for SSUR, TPWM & TSM. ? - External decrunchers for GraftGold and LZWH. A. Van Helsing/X-TraDe - External decrunchers for AXIS, LOB and SF. INTRODUCTION ------------ Almost every Amiga user has some crunched files on his/her disks, either Powerpacked docs or crunched demos, utilities or whatever. But what to do when you need the files to be uncrunched, and you don't call the cruncher your own (or it doesn't support decrunching)? Enters XFD. FEATURES -------- This software package allows you to decrunch almost every packed file known on the Amiga. It consists of the xfdmaster.library as the brain and a couple of programs that offer certain functions to the user. The xfdmaster.library is a standard Amiga shared, runtime library. It works with Kickstart V33+ and offers applications the possibility to directly support any crunched files. Other than the predecessor decrunch.library, the xfdmaster.library has a more flexible interface, offers the possibility to decrunch already loaded program segments, supports external decrunchers and is able to unlink so-called 4EB9-linked files. EXTERNAL DECRUNCHERS -------------------- External decrunchers can be easily written by any programmer who has knowledge about the inner workings of a new cruncher. That way almost everybody is able to keep the library up-to-date. External decrunchers are stored in "LIBS:xfd/" and xfdmaster.library loads them on startup. The following are available at the moment: AXIS - AXIS (PP20-Fake) data files FIRE - FIRE data files GraftGold - GraftGold data files LOB - Thalion (LOB) data files LZWH - LZ Warp Huffman data files SF - SF/SC data files SSUR - SSUR data files TPWM - TPWM data files TSM - TSM data files Old external decrunchers that are no longer required (please delete them from "LIBS:xfd/" to save diskspace AND memory): Chryseis - moved inside xfdmaster.library PMC - moved inside xfdmaster.library RNC - moved inside xfdmaster.library XPK - moved inside xfdmaster.library SUBMISSIONS ----------- You are a programmer who has - developed external decrunchers for xfdmaster.library? - written applications that support xfdmaster.library? You have new crunchers that are not supported yet? Please send anything of the above to the following address: Georg Hörmann Martinswinkelstraße 16c 82467 Garmisch-Partenkirchen Germany THANKS ------ Special thanks go out to all the people who sent me new crunchers, external decrunchers, bug reports or whatever. You will find your names somewhere in the history. HISTORY ------- XFD 1.10 [xfdmaster.library 36.3] - Added recognition and unlink code for Glue 2.2 and Glue 2.3 text linkers. You will get the text file and the original executable as a result after unlinking such files. Thanks to Markus Schmall and Dave Jones for the example files. - Finally fixed Imploder stuff to work 100% correctly. The new method is a bit slower, but doesn't waste any memory any longer. The length calculation of the old one was based on a rough guess, now it's counted byte by byte. Corrupted data is detected now and won't lead to a big crash any longer. The new code also recognizes if a hunk was originally data or code. - Added support for Imploder Overlay files. These have been only recognized, but not decrunched. Now the new length calculation made it easy to finally implement that stuff. Thanks to Axel Folley for all the example files. - Added new version of xfdDecrunch. XFD 1.09 [xfdmaster.library 36.1] - Oops! XPK slave set password length to 0. This caused some trouble when decrunching XPK encrypted files. I forgot to set MaxSpecialLen to -1 as XPK has unlimited password lengths. Thanks to the guy (sorry, forgot your name) who called me. - Fixed xfdTestHunkStructure[New]() and xfdRelocate(). Those two calls now only support hunk types that may really exist in load files and no longer any weird linker stuff. Added full support for hunk_reloc32short ($3f7/$3fc). - Added xfdTestHunkStructureFlags() with XFDTHB_NOOVERLAYS to force an error if a file is overlayed. - Added xfdStripHunks() as an easy possibility to remove hunk_name, hunk_symbol and/or hunk_debug from files. - Extended xfdSlave and xfdMasterBase structures. Internal slaves have an ID now and can be replaced by external slaves. Minimum buffer size to recognize a crunched file can be specified for every slave now. The largest buffer size is stored in xfdMasterBase and can be used as buffer size for recognition purposes. Thanks to Dave Jones and the other guy (see above) for the inspiration. - Added new versions of xfdDecrunch and xfdLibInfo. - Moved external Chryseis slave inside library. - Added new version of xfdList. - Fixed defines in xfdmaster.h from $XYZ to 0xXYZ. - Added external decrunchers: AXIS, LOB and SF written by A. Van Helsing/X-TraDe. Thanks to Holger Wessling for sending them to me. - Fixed ProPack slave. Recognizes another executable header now and doesn't crash with several hunk_bss any more. Thanks to Markus Schmall for reporting the problem. - Fixed StoneCracker 4.04 slave. Forgot to support empty code and data hunks as old compilers produce them. Thanks to Dave Jones for the example file. - Added StoneCracker 4.03 Data slave and replaced SC 4.04 decrunch code by the optimized version from 'Cozine'. - Added QuickPowerPacker 1.0 slave. Thanks to Dave again for sending this stuff. - Added xfdAllocObject() and xfdFreeObject() as a replacement for Alloc#?Info() and Free#?Info(). - Added xfdRecogLinker() and xfdUnlink() to support so-called 4EB9-Linkers and their clones. - Fixed problem with some PowerPacker 4.0 files. It might have happened in one special case that one byte of the processed reloc hunk was overwritten before it was reprocessed. Using a one-byte prefetch mechanism now fixes this bug. - Added xfdm_MinLinkerSize field in xfdMasterBase structure. - Added recognition for 4EB9, 4EF9, UFO and XLink linkers to the internal linker brain. - Added unlink code for 4EB9, 4EF9, UFO and XLink linkers. - Fixed another problem with PowerPacker 4.0 files. If hunks are located in chipmem, PP sets the qualifier in the hunk header AND in the hunks themselves. OS 2.0+ doesn't like this behaviour very much and crashes immediately. The flag will therefore be deleted in the hunks now. Thanks to Axel Folley for sending me an example file. - Fixed problem with SoundTracker songs. Some clever game coders use the same identifier (PACK) for their files, but certainly another algorithm. I use an enhanced recognition now that checks the uncrunched length for valid song sizes. Thanks again to Axel Folley for all the example files. - Added the tool xfdUnlink to the package. This is just a simple interface for unlinking linked files. - Added second type of 4EB9 linker and fixed recognition for UFO linker. - Fixed Imploder decrunch code to support modified files too. Some guys tried to prevent XFD and also the Imploder itself from unpacking files by changing a data to a code hunk. XFD 1.08 [xfdmaster.library 35.1] - Added new feature to xfdmaster.library (now version 35): Crunchers that require a 16/32 bit key for decrunching are supported now. Only neccessary for ProPack (RNC) at the moment. - Added new versions of xfdDecrunch and xfdLibInfo that support the new feature. - Added full support for ProPack, formerly called RNC. Now also decrunches executables and key-locked data files. Moved the external decruncher inside the library. - Added support for TetraPack 1.1. - Added support for HQC Compressor 1.00. - Added external decrunchers for LZWH and GraftGold. - Added support for TSK Cruncher, LightPack 1.5 and SoundTracker Cruncher 1.0 Exe/Data files. - Added new tool to the package: HackProPack. This makes it possible to decrunch key-locked ProPack data files. - Re-added Kickstart 1.2/1.3 support to xfdDecrunch. Hope everybody is happy now, so am I. - Added support for segment decrunching to the following slaves: DragPack 1.0, StoneCracker 4.00/4.01/4.04, CrunchMania Normal/Library/Simple, TNM Cruncher 1.1. - Revised XPK external decruncher and moved it inside xfdmaster.library. - Moved PMC external decruncher inside the library. - Debugged arp.library stuff in xfdDecrunch, xfdList and HackProPack. Some arp routines behave different from dos v37, but it wasn't documented anywhere. - Added segment support to IAM Packer 1.0 and PackIt 1.0. XFD 1.07 [xfdmaster.library 34.1] - Added new sublibs for SSUR, TPWM and TSM crunchers. Thanks to WEPL for sending them. - Added RNC2 support to the RNC external decruncher. Thanks to WEPL again for sending me the sourcecode. XFD 1.06 [xfdmaster.library 34.1] - Increased library version to 34 because of new features. The V34 library is fully downward compatible to V33 libraries. - Rewritten xfdGetErrorText() function with lots of new error codes. - Added xfdTestHunkStructureNew() routine that returns detailed error codes. - Added xfdRelocate() routine for better segment list support. - Extended xfdSegmentInfo structure for relocation mode support. - Overworked autodocs for more detailed information. - Overworked whole 'C' support stuff (includes, protos, pragmas). - Updated Assembler support files. - Added external decruncher for PMC files. - Added support for recognition and decrunching of segments to the following slaves: - PowerPacker 2.3 command files (all modes) - PowerPacker 3.0 command files (all modes) - PowerPacker 4.0 command files (all modes) - Added new version of xfdLibInfo with extended information. - Added external decrunchers for RNC and FIRE files. Thanks to Dexter&BartMan/Abyss for sending me this stuff. - Added ATN! support to xfdmaster.library. Dexter/Abyss sent me an external for this one, but it's just a FImp clone, so I added it to the internals. XFD 1.05 [xfdmaster.library 33.6] - Added decrunch support for StoneCracker 4.04 executables. - Added external decruncher for XPK files. XFD 1.04 [xfdmaster.library 33.4] - Added 'C' includes, protos, pragmas. Thanks to Anders Melchiorsen for typing all this stuff. Thanks to Brice Allenbrand too. He also typed some 'C' stuff, but Anders was 3 days faster. Sorry! - Removed arp.library from the package as everybody has it anyway. - Added decrunch support for StoneCracker 4.04 data & address files. XFD 1.03 [xfdmaster.library 33.3] - Added new version of xfdDecrunch with extended features. XFD 1.02 [xfdmaster.library 33.3] - Did astonishing speed optimization to CrunchMania decruncher. All files with lots of relocs will decrunch about 30 times faster. Thanks to Markus Schmall who sent me a file (GadToolsBox with over 8000 [!] reloc entries) that took 90 seconds (!) before that code cleanup and 3 seconds afterwards. Actually he thought XFD would crash, but who waits 90 seconds ??? ;-) - Added Chryseis 0.9 decruncher. This one is implemented as external decruncher including sourcecode as an example on how to code that kind of thing. - Added File Imploder (FImp) decruncher. - Added new version of xfdDecrunch with lots of new features. XFD 1.01 [xfdmaster.library 33.2] - Added asm includes, autodocs and fd files. - Final fixes in password code. - Added new versions of xfdDecrunch and xfdLibInfo. - Added support for external decrunchers. XFD 1.00 [xfdmaster.library 33.1] - First public release.