aboutsummaryrefslogtreecommitdiff
path: root/modules/mod_flic/mod_flic.h
diff options
context:
space:
mode:
Diffstat (limited to 'modules/mod_flic/mod_flic.h')
-rw-r--r--modules/mod_flic/mod_flic.h173
1 files changed, 173 insertions, 0 deletions
diff --git a/modules/mod_flic/mod_flic.h b/modules/mod_flic/mod_flic.h
new file mode 100644
index 0000000..65f4eb7
--- /dev/null
+++ b/modules/mod_flic/mod_flic.h
@@ -0,0 +1,173 @@
+/*
+ * Copyright © 2006-2013 SplinterGU (Fenix/Bennugd)
+ * Copyright © 2002-2006 Fenix Team (Fenix)
+ * Copyright © 1999-2002 José Luis Cebrián Pagüe (Fenix)
+ *
+ * This file is part of Bennu - Game Development
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty. In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ * claim that you wrote the original software. If you use this software
+ * in a product, an acknowledgment in the product documentation would be
+ * appreciated but is not required.
+ *
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software.
+ *
+ * 3. This notice may not be removed or altered from any source
+ * distribution.
+ *
+ */
+
+#ifndef __FLIC_H
+#define __FLIC_H
+
+#include "libgrbase.h"
+#include "files.h"
+#include "xstrings.h"
+
+#include <SDL_types.h>
+
+#ifndef __GNUC__
+#define __PACKED
+#define inline __inline
+#else
+#define __PACKED __attribute__ ((packed))
+#endif
+
+#ifdef _MSC_VER
+#pragma pack(push, 1)
+#endif
+
+/* Reproducción de FLI */
+/* ------------------- */
+
+typedef struct
+{
+ uint32_t size; /* Size of FLIC including this header */
+ uint16_t type; /* File type 0xAF11, 0xAF12, 0xAF30, 0xAF44, ... */
+ uint16_t frames; /* Number of frames in first segment */
+ uint16_t width; /* FLIC width in pixels */
+ uint16_t height; /* FLIC height in pixels */
+ uint16_t depth; /* Bits per pixel (usually 8) */
+ uint16_t flags; /* Set to zero or to three */
+ uint32_t speed; /* Delay between frames */
+ uint16_t reserved1; /* Set to zero */
+ uint32_t created; /* Date of FLIC creation (FLC only) */
+ uint32_t creator; /* Serial number or compiler id (FLC only) */
+ uint32_t updated; /* Date of FLIC update (FLC only) */
+ uint32_t updater; /* Serial number (FLC only), see creator */
+ uint16_t aspect_dx; /* Width of square rectangle (FLC only) */
+ uint16_t aspect_dy; /* Height of square rectangle (FLC only) */
+ uint16_t ext_flags; /* EGI: flags for specific EGI extensions */
+ uint16_t keyframes; /* EGI: key-image frequency */
+ uint16_t totalframes; /* EGI: total number of frames (segments) */
+ uint32_t req_memory; /* EGI: maximum chunk size (uncompressed) */
+ uint16_t max_regions; /* EGI: max. number of regions in a CHK_REGION chunk */
+ uint16_t transp_num; /* EGI: number of transparent levels */
+ uint8_t reserved2[24]; /* Set to zero */
+ uint32_t oframe1; /* Offset to frame 1 (FLC only) */
+ uint32_t oframe2; /* Offset to frame 2 (FLC only) */
+ uint8_t reserved3[40]; /* Set to zero */
+}
+__PACKED
+FLIC_HEADER;
+
+typedef union
+{
+ struct
+ {
+ uint32_t size; /* Size of the chunk */
+ uint16_t type; /* Chunk type */
+ }
+ header ;
+
+ struct
+ {
+ uint32_t size; /* Size of the chunk */
+ uint16_t type; /* Chunk type: 12 */
+ uint16_t first_line; /* First line */
+ uint16_t line_count; /* Number of lines in the chunk */
+ uint8_t data[0];
+ }
+ delta_fli ;
+
+ struct
+ {
+ uint32_t size; /* Size of the chunk */
+ uint16_t type; /* Chunk type: 15, 12, etc. */
+ uint8_t data[0];
+ }
+ raw ;
+}
+FLIC_CHUNK ;
+
+typedef struct
+{
+ uint32_t size; /* Size of the frame, including subchunks */
+ uint16_t type; /* Chunk type: 0xF1FA */
+ uint16_t chunks; /* Number of subchunks */
+ uint8_t expand[8];
+}
+FLIC_FRAME ;
+
+typedef struct
+{
+ FLIC_HEADER header ;
+ FLIC_CHUNK * chunk ;
+ FLIC_FRAME * frame ;
+ uint32_t frame_reserved ;
+
+ GRAPH * bitmap ;
+
+ file * fp ;
+
+ int objid;
+
+ int current_frame ;
+ int speed_ms ;
+ int last_frame_ms ;
+ int finished ;
+
+ int x;
+ int y;
+ int z;
+ int angle;
+ int size;
+ int flags;
+
+ int saved_x;
+ int saved_y;
+ int saved_z;
+ int saved_angle;
+ int saved_size;
+ int saved_flags;
+
+}
+FLIC ;
+
+/* Tipos de chunk */
+
+#define CHUNK_COLOR_256 4
+#define CHUNK_COLOR_64 11
+#define CHUNK_DELTA_FLI 12
+#define CHUNK_DELTA_FLC 7
+#define CHUNK_BLACK 13
+#define CHUNK_BYTE_RUN 15
+#define CHUNK_FLI_COPY 16
+#define CHUNK_STAMP 18
+#define CHUNK_PREFIX 0xF100
+#define CHUNK_FRAME 0xF1FA
+
+#ifdef _MSC_VER
+#pragma pack(pop)
+#endif
+
+#endif