Tool used to convert DOS LPF files to UQM .ani + presentations
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@1477 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
########################################################################
|
||||
# This is a GNU makefile - tested on CYGWIN and Linux
|
||||
#
|
||||
# You may need to compile or install libpng and/or zlib before
|
||||
# compiling this.
|
||||
#
|
||||
|
||||
TARGET = lpf2ani
|
||||
# These flags are needed to get it to compile with libpngX.dll on CYGWIN
|
||||
# CYGWINFLAGS = -DPNG_USE_DLL
|
||||
CYGWINFLAGS =
|
||||
PNGFLAGS = -I.
|
||||
|
||||
CC = gcc
|
||||
CFLAGS = -W -Wall -O0 # -g
|
||||
LIBS = -L/usr/local/lib -lpng -lm -lz
|
||||
LDFLAGS=
|
||||
|
||||
BINS = $(TARGET) $(TARGET).exe
|
||||
SRCS = lpf2ani.c
|
||||
OBJS = lpf2ani.o
|
||||
|
||||
.SUFFIXES: .c .o
|
||||
|
||||
.c.o:
|
||||
$(CC) -c $(CFLAGS) -o $@ $*.c $(PNGFLAGS) $(CYGWINFLAGS)
|
||||
|
||||
all: $(TARGET)
|
||||
|
||||
$(TARGET): $(OBJS)
|
||||
$(CC) -o $(TARGET) $(OBJS) $(LIBS) $(LDFLAGS)
|
||||
|
||||
clean:
|
||||
rm -f $(BINS) *.o
|
||||
@@ -0,0 +1,15 @@
|
||||
/* Dummy compile-time configuration options
|
||||
* Only used when compiling in MS VC++ using UQM's getopt.c
|
||||
*/
|
||||
|
||||
#ifndef _CONFIG_H
|
||||
#define _CONFIG_H
|
||||
|
||||
/* Define if words are stored with the most significant byte first */
|
||||
#undef WORDS_BIGENDIAN
|
||||
|
||||
/* Defined if your system has getopt.h */
|
||||
#undef HAVE_GETOPT_H
|
||||
|
||||
#endif /* _CONFIG_H */
|
||||
|
||||
@@ -0,0 +1,161 @@
|
||||
#include <stdint.h>
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
# define PACKED
|
||||
# pragma pack(push, 1)
|
||||
#elif defined(__GNUC__)
|
||||
# define PACKED __attribute__ ((packed))
|
||||
#endif
|
||||
|
||||
// LPF file layout
|
||||
//
|
||||
// header (0x40)
|
||||
// padding (?)
|
||||
// palette (0x400) - get offset from header
|
||||
// 4 bytes/color)
|
||||
// usually 0x100 colors
|
||||
// framepackinfos (?) - get offset from header
|
||||
// get number if packs from header
|
||||
// 1st pack
|
||||
// immediatelly follows framepackinfos
|
||||
// 2nd pack
|
||||
// offset = offset(1st pack) + 0x10000
|
||||
// ...
|
||||
// last pack
|
||||
// end
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t PACKED magic; // "LPF "
|
||||
uint16_t PACKED cpackslots; // frame-pack slots
|
||||
uint16_t PACKED cpacks; // frame-pack count
|
||||
uint32_t PACKED cframes; // frame count
|
||||
uint16_t PACKED opal; // offset of palette
|
||||
uint16_t PACKED opacks; // offset of framepack infos
|
||||
uint32_t PACKED type; // "ANIM"
|
||||
uint16_t PACKED w; // animation width
|
||||
uint16_t PACKED h; // animation height
|
||||
uint16_t PACKED stuff1[0x14]; // who knows?
|
||||
uint32_t PACKED cframes2; // again?
|
||||
uint32_t PACKED fps; // frames/second
|
||||
} header;
|
||||
|
||||
#define PAL_COLORS 0x100
|
||||
|
||||
typedef union
|
||||
{
|
||||
struct {
|
||||
uint8_t b, g, r, a;
|
||||
} bchan;
|
||||
uint8_t channels[4];
|
||||
uint32_t rgba;
|
||||
} lpfpalcolor;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint16_t PACKED frame; // first frame in this pack
|
||||
uint16_t PACKED cframes; // count of frames in this pack
|
||||
uint16_t PACKED datasize; // size of data in this pack
|
||||
} framepackinfo;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
framepackinfo PACKED info; // pack info
|
||||
uint16_t PACKED za; // 0 word
|
||||
uint16_t PACKED sizes[1]; // frame-size array
|
||||
} framepack;
|
||||
|
||||
#define FRAMEPACK_SIZE(fpi) \
|
||||
(sizeof(framepack) + sizeof(uint16_t) * (fpi.cframes - 1))
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint16_t PACKED flags; // 0x0042 - frame flags?
|
||||
uint16_t PACKED csubs; // 0x0001 - count of subframes?
|
||||
// packed frame data follows
|
||||
} frameheader;
|
||||
|
||||
|
||||
// Frame Data
|
||||
// Everything is stored LSB first unless otherwise specified.
|
||||
//
|
||||
// The data is processed and dumped into the frame buffer linearly. If not
|
||||
// all of the frame buffer is covered by the data packets, the remaining
|
||||
// pixels are copied from the previous frame.
|
||||
//
|
||||
// Data Packet (typed packets follow and include the data described here):
|
||||
// length meaning
|
||||
// 1 type and count
|
||||
// - bit 7: type flag (FD_EXT_FLAG)
|
||||
// - bits 0-6: count
|
||||
// flag=0:
|
||||
// count=0: pixel repeat; Repeat Packet
|
||||
// count=N: quote next N; Quote Packet
|
||||
// flag=1:
|
||||
// count=0: 16-bit counts; Extended Packet
|
||||
// count=N: skip next N; Skip Packet
|
||||
//
|
||||
// Repeat Packet:
|
||||
// 1 type and count, always 0x00 for this packet type
|
||||
// 1 Repeat count
|
||||
// 1 Repeated pixel
|
||||
//
|
||||
// Quote Packet:
|
||||
// 1 type and count
|
||||
// - bit 7: type flag; always 0 for this packet type
|
||||
// - bits 0-6: Quoted pixel count
|
||||
// ? Quoted pixels; count specified by previous byte
|
||||
//
|
||||
// Skip Packet:
|
||||
// 1 type and count
|
||||
// - bit 7: type flag; always 1 for this packet type
|
||||
// - bits 0-6: Skipped pixel count; the pixels are copied
|
||||
// from the same location in the previous frame
|
||||
//
|
||||
// Extended Packet (typed packets follow and include the data described here):
|
||||
// 1 type and count, always 0x80 for this packet type
|
||||
// 2 extended type and count
|
||||
// - bit 15: type flag1 (FD_EXT_FLAG1)
|
||||
// when 0: Extended Skip Packet
|
||||
// - bits 0-14: Skipped pixel count
|
||||
// when 1:
|
||||
// - bit 14: type flag2 (FD_EXT_FLAG2)
|
||||
// when 0: Extended Quote Packet
|
||||
// when 1: Extended Repeat Packet
|
||||
// - bits 0-13: Repeat/Quote pixel count
|
||||
//
|
||||
// Extended Skip Packet:
|
||||
// 1 type and count, always 0x80 for this packet type
|
||||
// 2 extended type and count
|
||||
// - bit 15: type flag1 (FD_EXT_FLAG1), always 0
|
||||
// - bits 0-14: Skipped pixel count; the pixels are copied
|
||||
// from the same location in the previous frame
|
||||
//
|
||||
// Extended Quote Packet:
|
||||
// 1 type and count, always 0x80 for this packet type
|
||||
// 2 extended type and count
|
||||
// - bit 15: type flag1 (FD_EXT_FLAG1), always 1
|
||||
// - bit 14: type flag2 (FD_EXT_FLAG2), always 0
|
||||
// - bits 0-13: Quoted pixel count
|
||||
// ? Quoted pixels; count specified by previous word
|
||||
//
|
||||
// Extended Repeat Packet:
|
||||
// 1 type and count, always 0x80 for this packet type
|
||||
// 2 extended type and count
|
||||
// - bit 15: type flag1 (FD_EXT_FLAG1), always 1
|
||||
// - bit 14: type flag2 (FD_EXT_FLAG2), always 1
|
||||
// - bits 0-13: Repeat count
|
||||
// 1 Repeated pixel
|
||||
//
|
||||
#define FD_EXT_FLAG 0x0080
|
||||
#define FD_COUNT_MASK 0x007f
|
||||
#define FD_EXT_FLAG1 0x8000
|
||||
#define FD_EXT_FLAG2 0x4000
|
||||
#define FD_EXT_SCOUNT_MASK 0x7fff
|
||||
#define FD_EXT_RCOUNT_MASK 0x3fff
|
||||
#define FD_EXT_QCOUNT_MASK FD_EXT_RCOUNT_MASK
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
# pragma pack(pop)
|
||||
#endif
|
||||
#undef PACKED
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,110 @@
|
||||
# Microsoft Developer Studio Project File - Name="lpf2ani" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=lpf2ani - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "lpf2ani.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "lpf2ani.mak" CFG="lpf2ani - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "lpf2ani - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "lpf2ani - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=xicl6.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "lpf2ani - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\src\getopt" /I "." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "PNG_USE_DLL" /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib libpng10.lib libz.lib /nologo /subsystem:console /machine:I386
|
||||
|
||||
!ELSEIF "$(CFG)" == "lpf2ani - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MD /W3 /Gm /GX /ZI /Od /I "..\..\src\getopt" /I "." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "PNG_USE_DLL" /YX /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=xilink6.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib libpng10.lib libz.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "lpf2ani - Win32 Release"
|
||||
# Name "lpf2ani - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\config.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\src\getopt\getopt.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\src\getopt\getopt.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\lpf.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\lpf2ani.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "lpf2ani"=.\lpf2ani.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Reference in New Issue
Block a user