packhead.h 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /******************************************************************************
  2. *
  3. * original project name: TIGCC Tools Suite
  4. * file name: packhead.h
  5. * initial date: 14/08/2000
  6. * authors: thomas.nussbaumer@gmx.net
  7. * Paul Froissart
  8. * description: header definition of compressed data
  9. *
  10. * $Id: packhead.h,v 1.3 2000/08/20 15:24:28 Thomas Nussbaumer Exp $
  11. *
  12. ******************************************************************************/
  13. #ifndef __PACKHEAD_H__
  14. #define __PACKHEAD_H__
  15. #ifndef EVEN_LZ
  16. #define MAGIC_CHAR1 'P'
  17. #define MAGIC_CHAR2 'k'
  18. #else
  19. #define MAGIC_CHAR1 'P'
  20. #define MAGIC_CHAR2 'x'
  21. #endif
  22. #define MAX_RLE_ENTRIES 31
  23. #define COMPACT
  24. //#define OLD_HDR
  25. #ifdef OLD_HDR
  26. // size = 8 bytes
  27. typedef struct {
  28. unsigned char origsize_hi; // original size lowbyte
  29. unsigned char origsize_lo; // original size highbyte
  30. // unsigned char magic1; // must be equal to MAGIC_CHAR1
  31. // unsigned char magic2; // must be equal to MAGIC_CHAR2
  32. // unsigned char compsize_lo; // compressed size lowbyte
  33. // unsigned char compsize_hi; // compressed size lowbyte
  34. unsigned char esc1; // escape >> (8-escBits)
  35. // unsigned char notused3;
  36. // unsigned char notused4;
  37. unsigned char esc2; // escBits
  38. unsigned char gamma1; // maxGamma + 1
  39. unsigned char gamma2; // (1<<maxGamma)
  40. unsigned char extralz; // extraLZPosBits
  41. // unsigned char notused1;
  42. // unsigned char notused2;
  43. unsigned char rleentries; // rleUsed
  44. } PackedHeader;
  45. #else
  46. // size = 12 bytes
  47. typedef struct {
  48. char magic[4];
  49. unsigned char origsize_hi; // original size lowbyte
  50. unsigned char origsize_lo; // original size highbyte
  51. unsigned char compsize_hi; // compressed size lowbyte
  52. unsigned char compsize_lo; // compressed size highbyte
  53. unsigned char esc2; // escBits
  54. unsigned char esc1; // escape >> (8-escBits)
  55. unsigned char extralz; // extraLZPosBits
  56. unsigned char rleentries; // rleUsed
  57. } PackedHeader;
  58. #endif
  59. #define GetUnPackedSize(p) (unsigned int)((p)->origsize_lo | ((p)->origsize_hi << 8))
  60. #define IsPacked(p) ((p)->magic1 == MAGIC_CHAR1 && (p)->magic2 == MAGIC_CHAR2)
  61. typedef struct {
  62. unsigned char value[MAX_RLE_ENTRIES];
  63. } RLEEntries;
  64. #endif
  65. //#############################################################################
  66. //###################### NO MORE FAKES BEYOND THIS LINE #######################
  67. //#############################################################################
  68. //
  69. //=============================================================================
  70. // Revision History
  71. //=============================================================================
  72. //
  73. // $Log: packhead.h,v $
  74. // Revision 1.4 2005/08/04 21:27:43 Paul Froissart
  75. // adapted for XPak
  76. //
  77. // Revision 1.3 2000/08/20 15:24:28 Thomas Nussbaumer
  78. // macros to get unpacked size and to check if packed added
  79. //
  80. // Revision 1.2 2000/08/16 23:08:55 Thomas Nussbaumer
  81. // magic characters changed to TP ... t(igcc tools) p(acked file)
  82. //
  83. // Revision 1.1 2000/08/14 22:49:57 Thomas Nussbaumer
  84. // initial version
  85. //
  86. //