[Scummvm-cvs-logs] SF.net SVN: scummvm: [32707] residual/trunk
aquadran at users.sourceforge.net
aquadran at users.sourceforge.net
Sun Jun 15 14:56:19 CEST 2008
Revision: 32707
http://scummvm.svn.sourceforge.net/scummvm/?rev=32707&view=rev
Author: aquadran
Date: 2008-06-15 05:56:19 -0700 (Sun, 15 Jun 2008)
Log Message:
-----------
added tools for builds from configure
Modified Paths:
--------------
residual/trunk/Makefile
residual/trunk/Makefile.common
residual/trunk/engine/lua/liolib.cpp
residual/trunk/engine/lua/lua.h
residual/trunk/tools/delua.cpp
residual/trunk/tools/int2flt.cpp
residual/trunk/tools/unlab.cpp
residual/trunk/tools/vima.cpp
Added Paths:
-----------
residual/trunk/tools/module.mk
Removed Paths:
-------------
residual/trunk/tools/Makefile
residual/trunk/tools/util.cpp
residual/trunk/tools/util.h
Modified: residual/trunk/Makefile
===================================================================
--- residual/trunk/Makefile 2008-06-15 11:09:22 UTC (rev 32706)
+++ residual/trunk/Makefile 2008-06-15 12:56:19 UTC (rev 32707)
@@ -7,7 +7,7 @@
srcdir ?= .
-DEFINES := -DHAVE_CONFIG_H
+DEFINES := -DHAVE_CONFIG_H -DLUA_ADD_CUSTOM_FOPEN
LDFLAGS :=
INCLUDES := -I. -I$(srcdir)
LIBS :=
Modified: residual/trunk/Makefile.common
===================================================================
--- residual/trunk/Makefile.common 2008-06-15 11:09:22 UTC (rev 32706)
+++ residual/trunk/Makefile.common 2008-06-15 12:56:19 UTC (rev 32707)
@@ -15,7 +15,7 @@
# Module settings
######################################################################
-MODULES := $(MODULES)
+MODULES := tools $(MODULES)
# After the game specific modules follow the shared modules
MODULES += \
Modified: residual/trunk/engine/lua/liolib.cpp
===================================================================
--- residual/trunk/engine/lua/liolib.cpp 2008-06-15 11:09:22 UTC (rev 32706)
+++ residual/trunk/engine/lua/liolib.cpp 2008-06-15 12:56:19 UTC (rev 32707)
@@ -16,7 +16,7 @@
#include "luadebug.h"
#include "lualib.h"
-#ifdef ADD_CUSTOM_FOPEN
+#ifdef LUA_ADD_CUSTOM_FOPEN
#include "../resource.h"
#endif
@@ -141,7 +141,7 @@
current = popen(s+1, "r");
else {
current = fopen(s, "r");
-#ifdef ADD_CUSTOM_FOPEN
+#ifdef LUA_ADD_CUSTOM_FOPEN
if (current == NULL)
current = g_resourceloader->openNewStream(s);
#endif
Modified: residual/trunk/engine/lua/lua.h
===================================================================
--- residual/trunk/engine/lua/lua.h 2008-06-15 11:09:22 UTC (rev 32706)
+++ residual/trunk/engine/lua/lua.h 2008-06-15 12:56:19 UTC (rev 32707)
@@ -19,9 +19,6 @@
#define LUA_ANYTAG (-1)
-#define ADD_CUSTOM_FOPEN
-// this allow enable additionaly code in io_readfrom func
-
typedef void (*lua_CFunction) (void);
typedef unsigned int lua_Object;
Deleted: residual/trunk/tools/Makefile
===================================================================
--- residual/trunk/tools/Makefile 2008-06-15 11:09:22 UTC (rev 32706)
+++ residual/trunk/tools/Makefile 2008-06-15 12:56:19 UTC (rev 32707)
@@ -1,31 +0,0 @@
-CXX = g++
-CXXFLAGS = $(CPPFLAGS) -g -O2 -Wall -I../lua -I..
-CFLAGS = $(CPPFLAGS) -g -O2 -Wall
-#LDFLAGS =
-LIBS =
-
-all: bmtoppm delua imc2wav int2flt mat2ppm set2fig unlab vima
-
-bmtoppm: bmtoppm.c
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ bmtoppm.c -lppm -lpbm
-
-mat2ppm: mat2ppm.c
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ mat2ppm.c -lppm
-
-delua: delua.o ../localize.o ../registry.o ../debug.o
- $(CXX) $(LDFLAGS) -o $@ delua.o ../localize.o ../registry.o \
- ../lua/lapi.o ../lua/lauxlib.o ../lua/lbuffer.o ../lua/lbuiltin.o \
- ../lua/ldo.o ../lua/lfunc.o ../lua/lgc.o ../lua/liolib.o \
- ../lua/llex.o ../lua/lmathlib.o ../lua/lmem.o ../lua/lobject.o \
- ../lua/lparser.o ../lua/lrestore.o ../lua/lsave.o ../lua/lstate.o \
- ../lua/lstring.o ../lua/lstrlib.o ../lua/ltable.o ../lua/ltask.o \
- ../lua/ltm.o ../lua/lundump.o ../lua/lvm.o ../lua/lzio.o $(LIBS)
-
-unlab: unlab.o util.o
- $(CC) $(LDFLAGS) -o $@ $+
-
-.c.o:
- $(CC) $(CXXFLAGS) -c $<
-
-clean:
- -rm -f *.o bmtoppm delua imc2wav int2flt mat2ppm set2fig unlab vima
Modified: residual/trunk/tools/delua.cpp
===================================================================
--- residual/trunk/tools/delua.cpp 2008-06-15 11:09:22 UTC (rev 32706)
+++ residual/trunk/tools/delua.cpp 2008-06-15 12:56:19 UTC (rev 32707)
@@ -20,10 +20,13 @@
*
*/
-#include "lua.h"
-#include "lundump.h"
-#include "lopcodes.h"
-#include "lzio.h"
+#include <common/sys.h>
+
+#include <lua.h>
+#include <lundump.h>
+#include <lopcodes.h>
+#include <lzio.h>
+
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
@@ -36,7 +39,12 @@
#include <list>
#include <set>
-#include "localize.h"
+#include <engine/localize.h>
+#include <engine/resource.h>
+//hack below: shutup linker
+int g_flags = 0;
+ResourceLoader *g_resourceloader = 0;
+std::FILE *ResourceLoader::openNewStream(const char *filename) const { return NULL; }
// Provide debug.cpp functions which don't call SDL_Quit.
void warning(const char *fmt, ...) {
Modified: residual/trunk/tools/int2flt.cpp
===================================================================
--- residual/trunk/tools/int2flt.cpp 2008-06-15 11:09:22 UTC (rev 32706)
+++ residual/trunk/tools/int2flt.cpp 2008-06-15 12:56:19 UTC (rev 32707)
@@ -24,8 +24,8 @@
#include <stdlib.h>
int main(int argc, char *argv[]) {
- unsigned i = atoi(argv[1]);
- float *f = &i;
- printf("%g\n", *f);
- return 0;
+ unsigned i = atoi(argv[1]);
+ float *f = (float *)&i;
+ printf("%g\n", *f);
+ return 0;
}
Added: residual/trunk/tools/module.mk
===================================================================
--- residual/trunk/tools/module.mk (rev 0)
+++ residual/trunk/tools/module.mk 2008-06-15 12:56:19 UTC (rev 32707)
@@ -0,0 +1,81 @@
+# $URL$
+# $Id$
+
+MODULE := tools
+
+MODULE_DIRS += \
+ tools/
+
+
+#######################################################################
+# Tools directory
+#######################################################################
+
+TOOLS := \
+ tools/delua$(EXEEXT) \
+ tools/imc2wav$(EXEEXT) \
+ tools/int2flt$(EXEEXT) \
+ tools/set2fig$(EXEEXT) \
+ tools/unlab$(EXEEXT) \
+ tools/vima$(EXEEXT)
+
+# below not added as it depends for ppm, bpm library
+# tools/mat2ppm$(EXEEXT)
+# tools/bm2ppm$(EXEEXT)
+
+include $(srcdir)/tools/*/module.mk
+
+# Make sure the 'all' / 'clean' targets build/clean the tools, too
+#all:
+clean: clean-tools
+
+# Main target
+tools: $(TOOLS)
+
+clean-tools:
+ -$(RM) $(TOOLS)
+
+#
+# Build rules for the tools
+#
+
+tools/delua$(EXEEXT): $(srcdir)/tools/delua.cpp
+ $(MKDIR) tools/$(DEPDIR)
+ $(CXX) $(CFLAGS) $(DEFINES) -DHAVE_CONFIG_H -I. -Iengine -Iengine/lua -Wall \
+ engine/localize.o engine/registry.o \
+ engine/lua/lapi.o engine/lua/lauxlib.o engine/lua/lbuffer.o engine/lua/lbuiltin.o \
+ engine/lua/ldo.o engine/lua/lfunc.o engine/lua/lgc.o engine/lua/liolib.o \
+ engine/lua/llex.o engine/lua/lmathlib.o engine/lua/lmem.o engine/lua/lobject.o \
+ engine/lua/lparser.o engine/lua/lrestore.o engine/lua/lsave.o engine/lua/lstate.o \
+ engine/lua/lstring.o engine/lua/lstrlib.o engine/lua/ltable.o engine/lua/ltask.o \
+ engine/lua/ltm.o engine/lua/lundump.o engine/lua/lvm.o engine/lua/lzio.o -o $@ $<
+
+tools/mat2ppm$(EXEEXT): $(srcdir)/tools/mat2ppm.cpp
+ $(MKDIR) tools/$(DEPDIR)
+ $(CXX) $(CFLAGS) -Wall -lppm -o $@ $<
+
+tools/bmtoppm$(EXEEXT): $(srcdir)/tools/bmtoppm.cpp
+ $(MKDIR) tools/$(DEPDIR)
+ $(CXX) $(CFLAGS) -Wall -lppm -lpbm -o $@ $<
+
+tools/imc2wav$(EXEEXT): $(srcdir)/tools/imc2wav.cpp
+ $(MKDIR) tools/$(DEPDIR)
+ $(CXX) $(CFLAGS) -Wall -o $@ $<
+
+tools/int2flt$(EXEEXT): $(srcdir)/tools/int2flt.cpp
+ $(MKDIR) tools/$(DEPDIR)
+ $(CXX) $(CFLAGS) -Wall -o $@ $<
+
+tools/set2fig$(EXEEXT): $(srcdir)/tools/set2fig.cpp
+ $(MKDIR) tools/$(DEPDIR)
+ $(CXX) $(CFLAGS) -Wall -o $@ $<
+
+tools/unlab$(EXEEXT): $(srcdir)/tools/unlab.cpp
+ $(MKDIR) tools/$(DEPDIR)
+ $(CXX) $(CFLAGS) -Wall -o $@ $<
+
+tools/vima$(EXEEXT): $(srcdir)/tools/vima.cpp
+ $(MKDIR) tools/$(DEPDIR)
+ $(CXX) $(CFLAGS) -Wall -o $@ $<
+
+.PHONY: clean-tools tools
Property changes on: residual/trunk/tools/module.mk
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Date Revision Author URL Id
Name: svn:eol-style
+ native
Modified: residual/trunk/tools/unlab.cpp
===================================================================
--- residual/trunk/tools/unlab.cpp 2008-06-15 11:09:22 UTC (rev 32706)
+++ residual/trunk/tools/unlab.cpp 2008-06-15 12:56:19 UTC (rev 32707)
@@ -20,28 +20,31 @@
*
*/
-#include "util.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
struct lab_header {
- uint32 magic;
- uint32 magic2;
- uint32 num_entries;
- uint32 string_table_size;
+ uint32_t magic;
+ uint32_t magic2;
+ uint32_t num_entries;
+ uint32_t string_table_size;
};
struct lab_entry {
- uint32 fname_offset;
- uint32 start;
- uint32 size;
- uint32 reserved;
+ uint32_t fname_offset;
+ uint32_t start;
+ uint32_t size;
+ uint32_t reserved;
};
-uint16 READ_LE_UINT16(const void *ptr) {
- const byte *b = (const byte *)ptr;
+uint16_t READ_LE_UINT16(const void *ptr) {
+ const uint8_t *b = (const uint8_t *)ptr;
return (b[1] << 8) + b[0];
}
-uint32 READ_LE_UINT32(const void *ptr) {
- const byte *b = (const byte *)ptr;
+uint32_t READ_LE_UINT32(const void *ptr) {
+ const uint8_t *b = (const uint8_t *)ptr;
return (b[3] << 24) + (b[2] << 16) + (b[1] << 8) + (b[0]);
}
@@ -50,28 +53,33 @@
struct lab_header head;
struct lab_entry *entries;
char *str_table;
- uint i;
+ uint32_t i;
off_t offset;
infile = fopen(argv[1], "rb");
if (infile == 0)
{
- error("can't open source file: %s", argv[1]);
+ printf("can't open source file: %s\n", argv[1]);
+ exit(1);
}
fread(&head.magic, 1, 4, infile);
fread(&head.magic2, 1, 4, infile);
- head.num_entries = readUint32LE(infile);
- head.string_table_size = readUint32LE(infile);
+ uint32_t num, s_size;
+ fread(&num, 1, 4, infile);
+ fread(&s_size, 1, 4, infile);
+ head.num_entries = READ_LE_UINT32(&num);
+ head.string_table_size = READ_LE_UINT32(&s_size);
if (0 != memcmp(&head.magic, "LABN", 4))
{
- error("There is no LABN header in source file");
+ printf("There is no LABN header in source file\n");
+ exit(1);
}
entries = (struct lab_entry *)malloc(head.num_entries * sizeof(struct lab_entry));
fread(entries, 1, head.num_entries * sizeof(struct lab_entry), infile);
- str_table = (char *) malloc(head.string_table_size);
+ str_table = (char *)malloc(head.string_table_size);
fread(str_table, 1, head.string_table_size, infile);
for (i = 0; i < head.num_entries; i++) {
Deleted: residual/trunk/tools/util.cpp
===================================================================
--- residual/trunk/tools/util.cpp 2008-06-15 11:09:22 UTC (rev 32706)
+++ residual/trunk/tools/util.cpp 2008-06-15 12:56:19 UTC (rev 32707)
@@ -1,122 +0,0 @@
-/* Scumm Tools
- * Copyright (C) 2003-2006 The ScummVM Team
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * $URL$
- * $Id$
- *
- */
-
-#include "util.h"
-#include <stdarg.h>
-
-void error(const char *s, ...) {
- char buf[1024];
- va_list va;
-
- va_start(va, s);
- vsprintf(buf, s, va);
- va_end(va);
-
- fprintf(stderr, "ERROR: %s!\n", buf);
-
- exit(1);
-}
-
-void warning(const char *s, ...) {
- char buf[1024];
- va_list va;
-
- va_start(va, s);
- vsprintf(buf, s, va);
- va_end(va);
-
- fprintf(stderr, "WARNING: %s!\n", buf);
-}
-
-uint8 readByte(FILE *fp) {
- return fgetc(fp);
-}
-
-uint16 readUint16BE(FILE *fp) {
- uint16 ret = 0;
- ret |= fgetc(fp) << 8;
- ret |= fgetc(fp);
- return ret;
-}
-
-uint16 readUint16LE(FILE *fp) {
- uint16 ret = 0;
- ret |= fgetc(fp);
- ret |= fgetc(fp) << 8;
- return ret;
-}
-
-uint32 readUint32BE(FILE *fp) {
- uint32 ret = 0;
- ret |= fgetc(fp) << 24;
- ret |= fgetc(fp) << 16;
- ret |= fgetc(fp) << 8;
- ret |= fgetc(fp);
- return ret;
-}
-
-uint32 readUint32LE(FILE *fp) {
- uint32 ret = 0;
- ret |= fgetc(fp);
- ret |= fgetc(fp) << 8;
- ret |= fgetc(fp) << 16;
- ret |= fgetc(fp) << 24;
- return ret;
-}
-
-void writeByte(FILE *fp, uint8 b) {
- fwrite(&b, 1, 1, fp);
-}
-
-void writeUint16BE(FILE *fp, uint16 value) {
- writeByte(fp, (uint8)(value >> 8));
- writeByte(fp, (uint8)(value));
-}
-
-void writeUint16LE(FILE *fp, uint16 value) {
- writeByte(fp, (uint8)(value));
- writeByte(fp, (uint8)(value >> 8));
-}
-
-void writeUint32BE(FILE *fp, uint32 value) {
- writeByte(fp, (uint8)(value >> 24));
- writeByte(fp, (uint8)(value >> 16));
- writeByte(fp, (uint8)(value >> 8));
- writeByte(fp, (uint8)(value));
-}
-
-void writeUint32LE(FILE *fp, uint32 value) {
- writeByte(fp, (uint8)(value));
- writeByte(fp, (uint8)(value >> 8));
- writeByte(fp, (uint8)(value >> 16));
- writeByte(fp, (uint8)(value >> 24));
-}
-
-uint32 fileSize(FILE *fp) {
- uint32 sz;
- uint32 pos = ftell(fp);
- fseek(fp, 0, SEEK_END);
- sz = ftell(fp);
- fseek(fp, pos, SEEK_SET);
- return sz;
-}
-
Deleted: residual/trunk/tools/util.h
===================================================================
--- residual/trunk/tools/util.h 2008-06-15 11:09:22 UTC (rev 32706)
+++ residual/trunk/tools/util.h 2008-06-15 12:56:19 UTC (rev 32707)
@@ -1,132 +0,0 @@
-/* Scumm Tools
- * Copyright (C) 2002-2006 The ScummVM project
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * $URL$
- * $Id$
- *
- */
-
-#ifndef UTIL_H
-#define UTIL_H
-
-#include <assert.h>
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-
-#if !defined(_MSC_VER)
-#include <unistd.h>
-#endif
-
-#ifdef WIN32
-#include <io.h>
-#include <process.h>
-#endif
-
-
-/*
- * Some useful types
- */
-
-typedef unsigned char byte;
-typedef unsigned char uint8;
-typedef unsigned short uint16;
-typedef unsigned int uint32;
-typedef signed char int8;
-typedef signed short int16;
-typedef signed int int32;
-
-#if !defined(__cplusplus)
-typedef enum { false = 0, true = 1 } bool;
-
-/* If your C compiler doesn't support 'inline', please add a check for it. */
-#if defined(_MSC_VER)
-#define inline __inline
-#endif
-
-#endif
-
-
-/*
- * Various utility macros
- */
-
-#define ARRAYSIZE(x) ((int)(sizeof(x) / sizeof(x[0])))
-
-static inline uint32 SWAP_32(uint32 a) {
- return ((a >> 24) & 0xFF) | ((a >> 8) & 0xFF00) | ((a << 8) & 0xFF0000) |
- ((a << 24) & 0xFF000000);
-}
-
-static inline uint16 SWAP_16(uint16 a) {
- return ((a >> 8) & 0xFF) | ((a << 8) & 0xFF00);
-}
-
-#if defined(SYSTEM_BIG_ENDIAN)
-#define TO_BE_32(a) (a)
-#define TO_BE_16(a) (a)
-#define TO_LE_32(a) SWAP_32(a)
-#define TO_LE_16(a) SWAP_16(a)
-#else
-#define TO_BE_32(a) SWAP_32(a)
-#define TO_BE_16(a) SWAP_16(a)
-#define TO_LE_32(a) (a)
-#define TO_LE_16(a) (a)
-#endif
-
-#define MKID(a) (((a&0xff) << 8) | ((a >> 8)&0xff))
-
-#if defined(__GNUC__)
-#define NORETURN_PRE
-#define NORETURN_POST __attribute__((__noreturn__))
-#elif defined(_MSC_VER)
-#define NORETURN_PRE _declspec(noreturn)
-#define NORETURN_POST
-#else
-#define NORETURN_PRE
-#define NORETURN_POST
-#endif
-
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/* File I/O */
-uint8 readByte(FILE *fp);
-uint16 readUint16BE(FILE *fp);
-uint16 readUint16LE(FILE *fp);
-uint32 readUint32BE(FILE *fp);
-uint32 readUint32LE(FILE *fp);
-void writeByte(FILE *fp, uint8 b);
-void writeUint16BE(FILE *fp, uint16 value);
-void writeUint16LE(FILE *fp, uint16 value);
-void writeUint32BE(FILE *fp, uint32 value);
-void writeUint32LE(FILE *fp, uint32 value);
-uint32 fileSize(FILE *fp);
-
-/* Misc stuff */
-void NORETURN_PRE error(const char *s, ...) NORETURN_POST;
-void warning(const char *s, ...);
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif
Modified: residual/trunk/tools/vima.cpp
===================================================================
--- residual/trunk/tools/vima.cpp 2008-06-15 11:09:22 UTC (rev 32706)
+++ residual/trunk/tools/vima.cpp 2008-06-15 12:56:19 UTC (rev 32707)
@@ -134,289 +134,6 @@
}
}
-void decompressVima_asm() {
- asm("\tpush %esp\n"
- "\tpush %ebp\n"
- "\tpush %ebx\n"
- "\tpush %esi\n"
- "\tpush %edi\n"
- "\n"
- "\tmov sourceBuffer,%ecx\n"
- "\tmov $1,%esi\n"
- "\tmov (%ecx),%al\n"
- "\tinc %ecx\n"
- "\ttest %al,%al\n"
- "\tmov %al,sBytes\n"
- "\tjge .readWords\n"
- "\tnot %al\n"
- "\tmov %al,sBytes\n"
- "\tmov $2,%esi\n"
- "\n"
- ".readWords:\n"
- "\tmov (%ecx),%ax\n"
- "\txor %edx,%edx\n"
- "\tmov %al,%dh\n"
- "\tadd $2,%ecx\n"
- "\tmov %ah,%dl\n"
- "\tcmp $1,%esi\n"
- "\tmov %dx,sWords\n"
- "\tjbe .oneWord\n"
- "\tmov (%ecx),%al\n"
- "\tinc %ecx\n"
- "\tmov %al,sBytes+1\n"
- "\txor %edx,%edx\n"
- "\tmov (%ecx),%ax\n"
- "\tadd $2,%ecx\n"
- "\tmov %al,%dh\n"
- "\tmov %ah,%dl\n"
- "\tmov %dx,sWords+2\n"
- "\n"
- ".oneWord:\n"
- "\tmov decLength,%eax\n"
- "\tmovl $1,currTablePos\n"
- "\tmov %esi,entrySize\n"
- "\tadd %esi,%esi\n"
- "\txor %edx,%edx\n"
- "\tdiv %esi\n"
- "\tmov %eax,decsToDo\n"
- "\tmov %ecx,sourcePos\n"
- "\n"
- "\txor %ebx,%ebx\n"
- "\n"
- "\tmov %eax,currTablePos\n"
- "\txor %edi,%edi\n"
- "\tcmp %edi,%eax\n"
- "\tjnz .label1\n"
- "\tmovb $0,sBytes+1\n"
- "\tmovb $0,sBytes\n"
- "\tmov %di,sWords+2\n"
- "\tmov %di,sWords\n"
- "\n"
- ".label1:\n"
- "\tmov sourcePos,%esi\n"
- "\tmov entrySize,%edx\n"
- "\txor %ecx,%ecx\n"
- "\tmov (%esi),%ch\n"
- "\tlea 1(%esi),%eax\n"
- "\txor %esi,%esi\n"
- "\tmov (%eax),%cl\n"
- "\tinc %eax\n"
- "\tcmp %edi,%edx\n"
- "\tmov %ecx,tableEntry\n"
- "\tmov %eax,sourcePos\n"
- "\tmov %esi,sBytesPos\n"
- "\tjbe .exitMainDec\n"
- "\tmov destOffs,%edi\n"
- "\tlea sWords,%eax\n"
- "\tsub %eax,%edi\n"
- "\tmov %eax,sWordsPos\n"
- "\tmov %edi,destPos_sWordsPos\n"
- "\n"
- ".nextByte:\n"
- "\tlea (%edi,%eax,1),%ecx\n"
- "\tmov %ecx,destPos\n"
- "\tmovsbl sBytes(%esi),%ecx\n"
- "\tmov %ecx,currTablePos\n"
- "\tmovswl (%eax),%ecx\n"
- "\tmov %ecx,outputWord\n"
- "\tmov decsToDo,%ecx\n"
- "\ttest %ecx,%ecx\n"
- "\tjz .done\n"
- "\tadd %edx,%edx\n"
- "\tmov %ecx,decsLeft\n"
- "\tmov %edx,bytesToDec\n"
- "\n"
- ".nextDec:\n"
- "\tmov currTablePos,%eax\n"
- "\tmov $1,%edx\n"
- "\tmov imcTable2(%eax),%cl\n"
- "\tmov %cl,currTableVal\n"
- "\tmov currTableVal,%esi\n"
- "\tand $0xff,%esi\n"
- "\tadd %esi,%ebx\n"
- "\tlea -1(%esi),%ecx\n"
- "\tmov %ebx,destOffs\n"
- "\tshl %cl,%edx\n"
- "\tmov $0x10,%cl\n"
- "\tsub %bl,%cl\n"
- "\tmov %dl,%al\n"
- "\tdec %al\n"
- "\tmov %al,var40\n"
- "\tmov tableEntry,%eax\n"
- "\tmov var40,%edi\n"
- "\tand $0xffff,%eax\n"
- "\tshr %cl,%eax\n"
- "\tand $0xff,%edi\n"
- "\tmov %edx,%ecx\n"
- "\tor %edi,%ecx\n"
- "\tand %ecx,%eax\n"
- "\tcmp $7,%ebx\n"
- "\tjle .label2\n"
- "\tmov sourcePos,%ebx\n"
- "\txor %ecx,%ecx\n"
- "\tmov tableEntry,%ch\n"
- "\tmovzbw (%ebx),%bx\n"
- "\tor %ebx,%ecx\n"
- "\tmov sourcePos,%ebx\n"
- "\tinc %ebx\n"
- "\tmov %ecx,tableEntry\n"
- "\tmov %ebx,sourcePos\n"
- "\tmov destOffs,%ebx\n"
- "\tsub $8,%ebx\n"
- "\tmov %ebx,destOffs\n"
- "\tjmp .label3\n"
- "\n"
- ".label2:\n"
- "\tmov tableEntry,%ecx\n"
- "\n"
- ".label3:\n"
- "\ttest %edx,%eax\n"
- "\tjz .clearEDX\n"
- "\txor %edx,%eax\n"
- "\tjmp .noClear\n"
- "\n"
- ".clearEDX:\n"
- "\txor %edx,%edx\n"
- "\n"
- ".noClear:\n"
- "\tcmp %edi,%eax\n"
- "\tjnz .label4\n"
- "\tmov %ecx,%edx\n"
- "\tmov %ebx,%ecx\n"
- "\tshl %cl,%edx\n"
- "\tmov sourcePos,%ecx\n"
- "\tmovzbw (%ecx),%di\n"
- "\tpush %ecx\n"
- "\tmovswl %dx,%ecx\n"
- "\txor %edx,%edx\n"
- "\tand $0xffffff00,%ecx\n"
- "\tmov %ecx,outputWord\n"
- "\tpop %ecx\n"
- "\tmov tableEntry,%dh\n"
- "\tor %edi,%edx\n"
- "\tinc %ecx\n"
- "\tmov %ecx,sourcePos\n"
- "\tmov $8,%cx\n"
- "\tsub %bx,%cx\n"
- "\tmov %edx,%edi\n"
- "\tshr %cl,%di\n"
- "\txor %ecx,%ecx\n"
- "\tmov destOffs,%ebx\n"
- "\tmov %dl,%ch\n"
- "\tmov %ecx,%edx\n"
- "\tmov sourcePos,%ecx\n"
- "\tand $0xff,%edi\n"
- "\tpush %ecx\n"
- "\tmov outputWord,%ecx\n"
- "\tor %edi,%ecx\n"
- "\tmov %ecx,outputWord\n"
- "\tpop %ecx\n"
- "\tmovzbw (%ecx),%di\n"
- "\n"
- "\tor %edi,%edx\n"
- "\tinc %ecx\n"
- "\tmov %edx,tableEntry\n"
- "\tmov %ecx,sourcePos\n"
- "\tjmp .writeDec\n"
- "\n"
- ".label4:\n"
- "\tmov $7,%ecx\n"
- "\tmov %eax,%edi\n"
- "\tsub %esi,%ecx\n"
- "\tshl %cl,%edi\n"
- "\tmov currTablePos,%ecx\n"
- "\tshl $6,%ecx\n"
- "\tor %ecx,%edi\n"
- "\txor %ecx,%ecx\n"
- "\ttest %eax,%eax\n"
- "\tmov destTable(,%edi,2),%cx\n"
- "\tmov %ecx,destOffs\n"
- "\tjz .label5\n"
- "\tmov currTablePos,%edi\n"
- "\txor %ecx,%ecx\n"
- "\tmov imcTable1(,%edi,2),%cx\n"
- "\tmov %ecx,%edi\n"
- "\tlea -1(%esi),%ecx\n"
- "\tshr %cl,%edi\n"
- "\tmov destOffs,%ecx\n"
- "\tadd %edi,%ecx\n"
- "\n"
- ".label5:\n"
- "\ttest %edx,%edx\n"
- "\tjz .label6\n"
- "\tneg %ecx\n"
- "\n"
- ".label6:\n"
- "\tmov outputWord,%edx\n"
- "\tadd %ecx,%edx\n"
- "\tcmp $-0x8000,%edx\n"
- "\tjge .label7\n"
- "\tmov $-0x8000,%edx\n"
- "\tmov %edx,outputWord\n"
- "\tjmp .writeDec\n"
- "\n"
- ".label7:\n"
- "\tcmp $0x7fff,%edx\n"
- "\tmov %edx,outputWord\n"
- "\tjle .writeDec\n"
- "\tmov $0x7fff,%edx\n"
- "\tmov %edx,outputWord\n"
- "\n"
- ".writeDec:\n"
- "\tmov destPos,%ecx\n"
- "\tmov bytesToDec,%edx\n"
- "\tpush %eax\n"
- "\tmov outputWord,%eax\n"
- "\tmov %ax,(%ecx)\n"
- "\tadd %edx,%ecx\n"
- "\tmov offsets(,%esi,4),%edx\n"
- "\tmov %ecx,destPos\n"
- "\tmov currTablePos,%ecx\n"
- "\tpop %eax\n"
- "\tmovsbl (%edx,%eax,1),%eax\n"
- "\tadd %eax,%ecx\n"
- "\tmov %ecx,currTablePos\n"
- "\tjns .label8\n"
- "\tmovl $0,currTablePos\n"
- "\tjmp .done\n"
- "\n"
- ".label8:\n"
- "\tmov currTablePos,%ecx\n"
- "\tmov $0x58,%eax\n"
- "\tcmp %eax,%ecx\n"
- "\tjle .done\n"
- "\tmov %eax,currTablePos\n"
- "\n"
- ".done:\n"
- "\tmov decsLeft,%eax\n"
- "\tdec %eax\n"
- "\tmov %eax,decsLeft\n"
- "\tjnz .nextDec\n"
- "\tmov entrySize,%edx\n"
- "\tmov sBytesPos,%esi\n"
- "\tmov sWordsPos,%eax\n"
- "\tmov destPos_sWordsPos,%edi\n"
- "\tmov currTablePos,%cl\n"
- "\tadd $2,%eax\n"
- "\tmov %cl,sBytes(%esi)\n"
- "\tpush %ebx\n"
- "\tmov outputWord,%ebx\n"
- "\tmov %bx,-2(%eax)\n"
- "\tpop %ebx\n"
- "\tinc %esi\n"
- "\tmov %eax,sWordsPos\n"
- "\tcmp %edx,%esi\n"
- "\tmov %esi,sBytesPos\n"
- "\tjb .nextByte\n"
- "\n"
- ".exitMainDec:\n"
- "\tpop %edi\n"
- "\tpop %esi\n"
- "\tpop %ebx\n"
- "\tpop %ebp\n"
- "\tpop %esp\n");
-}
-
int eax, bit;
void decompressVima() {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list