From d2602bfa194d98c67769253d2ee558004dd0ee5d Mon Sep 17 00:00:00 2001 From: avolkov Date: Thu, 22 Dec 2005 01:16:02 +0000 Subject: [PATCH] Some long-pending updates and fixes git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@2100 8092fc87-c524-0410-9efc-e669fe64eaf9 --- tools/abx/abx2raw.h | 8 +++---- tools/ctconv/ctconv.dsp | 16 +++++++------- tools/ctconv/ctmap.sh | 3 +-- tools/dos-ani/undani.c | 46 +++++++++++++++++++++++++++++++++------ tools/dos-ani/undani.dsp | 4 ++-- tools/dos-fnt/unfont.dsp | 4 ++-- tools/lpf2ani/lpf2ani.dsp | 4 ++-- 7 files changed, 58 insertions(+), 27 deletions(-) diff --git a/tools/abx/abx2raw.h b/tools/abx/abx2raw.h index a75c3c687..a45caeafd 100644 --- a/tools/abx/abx2raw.h +++ b/tools/abx/abx2raw.h @@ -1,16 +1,16 @@ #include struct abx_header { - uint16_t num_frames; + uint16_t num_frames __attribute__ ((packed)); uint32_t tot_size __attribute__ ((packed)); uint16_t bufsize __attribute__ ((packed)); uint16_t freq __attribute__ ((packed)); }; struct frame_info { - uint32_t addr; - uint16_t fsize; // compressed file size - uint16_t usize; // uncompressed file size + uint32_t addr __attribute__ ((packed)); + uint16_t fsize __attribute__ ((packed)); // compressed file size + uint16_t usize __attribute__ ((packed)); // uncompressed file size }; #define SQLCH 0x40 // Squelch byte flag diff --git a/tools/ctconv/ctconv.dsp b/tools/ctconv/ctconv.dsp index fa79ba62c..1c049a6b7 100755 --- a/tools/ctconv/ctconv.dsp +++ b/tools/ctconv/ctconv.dsp @@ -42,7 +42,7 @@ RSC=rc.exe # 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 CPP /nologo /MD /W3 /GX /O2 /I "..\..\src\getopt" /I "." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -50,7 +50,7 @@ BSC32=bscmake.exe # 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 +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "ctconv - Win32 Debug" @@ -66,7 +66,7 @@ LINK32=xilink6.exe # 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 CPP /nologo /MD /W3 /Gm /GX /ZI /Od /I "..\..\src\getopt" /I "." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe @@ -74,7 +74,7 @@ BSC32=bscmake.exe # 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 +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF @@ -95,16 +95,16 @@ SOURCE=.\ctconv.c # End Source File # Begin Source File +SOURCE=.\ctres.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=.\strres.h -# End Source File # End Group # End Target # End Project diff --git a/tools/ctconv/ctmap.sh b/tools/ctconv/ctmap.sh index 736d5a73f..6d08da4c8 100755 --- a/tools/ctconv/ctmap.sh +++ b/tools/ctconv/ctmap.sh @@ -1,9 +1,8 @@ -#!/bin/bash +#!/bin/sh if [ $# -gt 1 ]; then echo "Syntax: ctmap.sh [indir] |sort [>map-file]" echo "Creates a map of colormaps used by various images" - echo "Creates a map of colormaps used by various images" exit 1 elif [ $# -ne 1 ]; then INDIR="." diff --git a/tools/dos-ani/undani.c b/tools/dos-ani/undani.c index 7926f05a9..6372a478a 100755 --- a/tools/dos-ani/undani.c +++ b/tools/dos-ani/undani.c @@ -126,6 +126,27 @@ typedef struct #define PAL_COLORS 0x100 +// Palette types +typedef uint8_t channel_t; + +typedef struct +{ + channel_t r, g, b; +} color_t; + +typedef struct +{ + uint8_t first; + uint8_t last; + union + { + color_t colors[1]; + channel_t chans[3]; + } pal; +} colormap_t; + +#define DOS_SIG_BITS 6 + #if defined(_MSC_VER) # pragma pack(pop) #endif @@ -163,6 +184,8 @@ int loadPalette(const char *filename); int decompressFrames(const index_header_t *); int cropFrames(const index_header_t *); +inline channel_t conv_chan(uint8_t c); + inline uint16_t get_16_le(uint16_t* val); inline uint32_t get_32_le(uint32_t* val); @@ -1328,7 +1351,9 @@ int loadPalette(const char *filename) { FILE* in; size_t inlen; - uint8_t *buf, *clr; + uint8_t *buf; + colormap_t* map; + color_t* clr; int i; in = fopen(filename, "rb"); @@ -1358,14 +1383,16 @@ int loadPalette(const char *filename) } fclose(in); + map = (colormap_t*)buf; + verbose(2, "%s contains %d palette entries\n", filename, (int)buf[1] - buf[0] + 1); - for (i = buf[0], clr = buf + 2; i <= (int)buf[1]; ++i, clr += 3) + for (i = map->first, clr = map->pal.colors; i <= (int)map->last; ++i, ++clr) { - palette[i].red = clr[0] << 2; - palette[i].green = clr[1] << 2; - palette[i].blue = clr[2] << 2; + palette[i].red = conv_chan(clr->r); + palette[i].green = conv_chan(clr->g); + palette[i].blue = conv_chan(clr->b); } free(buf); @@ -1373,12 +1400,17 @@ int loadPalette(const char *filename) return 0; } +inline channel_t conv_chan(uint8_t c) +{ // this uniformly distributes the lower 'unknown' bits + return (c << (8 - DOS_SIG_BITS)) | (c >> (DOS_SIG_BITS - (8 - DOS_SIG_BITS))); +} + inline uint16_t get_16_le(uint16_t* val) { - return (uint16_t)(((uint8_t*)val)[1]) << 8 | ((uint8_t*)val)[0]; + return (uint16_t)(((uint8_t*)val)[1] << 8) | ((uint8_t*)val)[0]; } inline uint32_t get_32_le(uint32_t* val) { - return (uint32_t)(((uint16_t*)val)[1]) << 16 | ((uint16_t*)val)[0]; + return (uint32_t)(get_16_le((uint16_t*)val + 1) << 16) | get_16_le((uint16_t*)val); } diff --git a/tools/dos-ani/undani.dsp b/tools/dos-ani/undani.dsp index 983c05ac3..437046123 100755 --- a/tools/dos-ani/undani.dsp +++ b/tools/dos-ani/undani.dsp @@ -50,7 +50,7 @@ BSC32=bscmake.exe # 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 /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib libpng.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "undani - Win32 Debug" @@ -74,7 +74,7 @@ BSC32=bscmake.exe # 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 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib libpng.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF diff --git a/tools/dos-fnt/unfont.dsp b/tools/dos-fnt/unfont.dsp index 252839179..8ac308966 100755 --- a/tools/dos-fnt/unfont.dsp +++ b/tools/dos-fnt/unfont.dsp @@ -50,7 +50,7 @@ BSC32=bscmake.exe # 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 /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib libpng.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "unfont - Win32 Debug" @@ -74,7 +74,7 @@ BSC32=bscmake.exe # 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 /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib libpng.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF diff --git a/tools/lpf2ani/lpf2ani.dsp b/tools/lpf2ani/lpf2ani.dsp index 562f25bc2..a1457ede9 100644 --- a/tools/lpf2ani/lpf2ani.dsp +++ b/tools/lpf2ani/lpf2ani.dsp @@ -50,7 +50,7 @@ BSC32=bscmake.exe # 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 +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib libpng.lib libz.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "lpf2ani - Win32 Debug" @@ -74,7 +74,7 @@ BSC32=bscmake.exe # 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 +# ADD LINK32 kernel32.lib user32.lib advapi32.lib shell32.lib libpng.lib libz.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF