GDV.H 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. //
  2. // GDV.H
  3. //
  4. // Structures/types/defines for compresser and player
  5. //
  6. // Versions 3 and 4 (8 and 15 bit colour)
  7. //
  8. // Audio/Video data types
  9. #define NO_SOUND 0
  10. #define A_STANDARD_SOUND (1<<0)
  11. #define A_STEREO (1<<1)
  12. #define A_16_BIT (1<<2)
  13. #define A_COMPRESSED (1<<3)
  14. #define NO_VIDEO 0
  15. #define V_256_VIDEO (1<<0)
  16. #define V_32K_VIDEO (1<<1)
  17. // Sound and video parameters
  18. #define SOUNDSIZE (sample_rate/fps)
  19. #define FRAMESIZE (videosize+SOUNDSIZE)
  20. // Filenames
  21. #define CONFIG_FILE "config.ini" // } Unless overridden by env. var.
  22. #define SOS_PATH ".\\" // } settings
  23. #define file_type "gdv"
  24. #define VERSION "4.0"
  25. // Frame types within animation file
  26. #define FRM_PALETTE 0 // New palette only (used for fades)
  27. #define FRM_JOINER 1 // Blank screen
  28. #define FRM_DELTA1 2 // Complete frame differences from last frame
  29. #define FRM_HOLD 3 // Hold frame; Do nothing.
  30. #define FRM_PALETTE_DELTA1 4 // New palette and frame data (in that order)
  31. // Token types within packed data
  32. #define TKN_PIXEL 0 // 16 bit colour value (No match possible)
  33. #define TKN_STRING 1 // 16 bit string (position and length)
  34. #define TKN_SAME8 2 // 8 bit 'no change' length
  35. #define TKN_END 3 // Token signifying end of frame or block
  36. // Standard VGA screen stats
  37. #define VGA_256 0x13
  38. #define VGA_256_WIDTH 320
  39. #define VGA_256_HEIGHT 200
  40. #define VGA_256_BANKS 1
  41. // Super VGA mode 101h stats
  42. #define SVGA_256 0x101
  43. #define SVGA_256_WIDTH 640
  44. #define SVGA_256_HEIGHT 480
  45. #define SVGA_256_BANKS 5
  46. // Super VGA mode 110h stats
  47. #define SVGA_32K 0x110
  48. #define SVGA_32K_WIDTH 640
  49. #define SVGA_32K_HEIGHT 480
  50. #define SVGA_32K_BANKS 10
  51. #ifdef VGA_SCREEN
  52. #undef VGA_SCREEN
  53. #define VGA_SCREEN (unsigned short *)0xa0000
  54. #endif
  55. // Compression stuff
  56. #define DICT_BITS 12
  57. #define BUFF_BITS 4
  58. #define DICT_SIZE (1<<DICT_BITS)
  59. #define BUFF_SIZE (1<<BUFF_BITS)
  60. #define TOTAL_SIZE (DICT_SIZE+BUFF_SIZE)
  61. // Magic numbers for headers
  62. #define FRM_MAGIC 0x1305
  63. #define GDV_MAGIC 0x29111994
  64. // gl_shutdown error codes
  65. #define GL_READ_ERROR 1<<0
  66. #define GL_MAGIC_ERROR 1<<1
  67. #define GL_FRAME_ERROR 1<<2
  68. #define GL_TOKEN_ERROR 1<<3
  69. #define GL_STOPPED 1<<4
  70. // Main header for animation file [24 bytes]
  71. struct gdv_header
  72. {
  73. unsigned long magic; // Magic number for GDV files
  74. unsigned short dimensions; // Image dimension code
  75. unsigned short no_frames; // Total number of frames
  76. unsigned short fps; // Frames per second
  77. unsigned short audio_type; // Type of audio data
  78. unsigned short sample_rate; // Sound sample rate
  79. unsigned short video_type; // Type of video data
  80. unsigned short video_size; // (Max.) Size of video/frame
  81. unsigned char version; // Version number
  82. unsigned char lossyness; // Quality
  83. unsigned char reserved[4]; // For later... UNUSED
  84. };
  85. // Header for each frame of the animation [8 bytes]
  86. struct frame_header
  87. {
  88. unsigned short magic; // Magic frame number
  89. unsigned short frame_size; // Size of DATA in bytes
  90. unsigned char type; // Type of frame
  91. unsigned char reserved[3]; // For later UNUSED
  92. };
  93. #define GAMMA_CORRECT 1.4
  94. #define DIMENSIONS 32
  95. #define MAX_256 16
  96. #ifdef CGDV
  97. #ifndef GLOBAL
  98. unsigned short widths[DIMENSIONS]=
  99. {
  100. 320,
  101. 640,
  102. 320,
  103. 320,
  104. 320,
  105. 320,
  106. 160,
  107. 160,
  108. 160,
  109. 280,
  110. 320,
  111. 320,
  112. 0,0,0,0,
  113. 640,
  114. 640,
  115. 640,
  116. 640,
  117. 640,
  118. 320,
  119. 0,0,0,0,0,0,0,0,0,0
  120. };
  121. unsigned short heights[DIMENSIONS]=
  122. {
  123. 200,
  124. 200,
  125. 167,
  126. 180,
  127. 400,
  128. 170,
  129. 85,
  130. 83,
  131. 90,
  132. 128,
  133. 240,
  134. 201,
  135. 0,0,0,0,
  136. 400,
  137. 200,
  138. 180,
  139. 167,
  140. 170,
  141. 240,
  142. 0,0,0,0,0,0,0,0,0,0
  143. };
  144. #else
  145. extern unsigned short widths[],heights[];
  146. #endif
  147. #endif
  148.