From: <wjp...@us...> - 2007-02-26 22:03:16
|
Revision: 4499 http://gemrb.svn.sourceforge.net/gemrb/?rev=4499&view=rev Author: wjpalenstijn Date: 2007-02-26 14:03:04 -0800 (Mon, 26 Feb 2007) Log Message: ----------- remove .cvsignore files Removed Paths: ------------- gemrb/trunk/.cvsignore gemrb/trunk/gemrb/.cvsignore gemrb/trunk/gemrb/Config/.cvsignore gemrb/trunk/gemrb/GUIScripts/.cvsignore gemrb/trunk/gemrb/GUIScripts/bg1/.cvsignore gemrb/trunk/gemrb/GUIScripts/bg2/.cvsignore gemrb/trunk/gemrb/GUIScripts/how/.cvsignore gemrb/trunk/gemrb/GUIScripts/iwd/.cvsignore gemrb/trunk/gemrb/GUIScripts/iwd2/.cvsignore gemrb/trunk/gemrb/GUIScripts/pst/.cvsignore gemrb/trunk/gemrb/GUIScripts/test1/.cvsignore gemrb/trunk/gemrb/GUIScripts/tob/.cvsignore gemrb/trunk/gemrb/docs/.cvsignore gemrb/trunk/gemrb/docs/en/.cvsignore gemrb/trunk/gemrb/docs/en/Engine/.cvsignore gemrb/trunk/gemrb/docs/en/GUIScript/.cvsignore gemrb/trunk/gemrb/docs/en/Tables/.cvsignore gemrb/trunk/gemrb/docs/en/doxygen/.cvsignore gemrb/trunk/gemrb/includes/.cvsignore gemrb/trunk/gemrb/override/.cvsignore gemrb/trunk/gemrb/override/bg1/.cvsignore gemrb/trunk/gemrb/override/bg2/.cvsignore gemrb/trunk/gemrb/override/how/.cvsignore gemrb/trunk/gemrb/override/iwd/.cvsignore gemrb/trunk/gemrb/override/iwd2/.cvsignore gemrb/trunk/gemrb/override/pst/.cvsignore gemrb/trunk/gemrb/override/test1/.cvsignore gemrb/trunk/gemrb/override/tob/.cvsignore gemrb/trunk/gemrb/plugins/.cvsignore gemrb/trunk/gemrb/plugins/2DAImporter/.cvsignore gemrb/trunk/gemrb/plugins/ACMImporter/.cvsignore gemrb/trunk/gemrb/plugins/AREImporter/.cvsignore gemrb/trunk/gemrb/plugins/BAMImporter/.cvsignore gemrb/trunk/gemrb/plugins/BIFImporter/.cvsignore gemrb/trunk/gemrb/plugins/BMPImporter/.cvsignore gemrb/trunk/gemrb/plugins/CHUImporter/.cvsignore gemrb/trunk/gemrb/plugins/CREImporter/.cvsignore gemrb/trunk/gemrb/plugins/Core/.cvsignore gemrb/trunk/gemrb/plugins/DLGImporter/.cvsignore gemrb/trunk/gemrb/plugins/EFFImporter/.cvsignore gemrb/trunk/gemrb/plugins/FXOpcodes/.cvsignore gemrb/trunk/gemrb/plugins/GAMImporter/.cvsignore gemrb/trunk/gemrb/plugins/GUIScript/.cvsignore gemrb/trunk/gemrb/plugins/IDSImporter/.cvsignore gemrb/trunk/gemrb/plugins/INIImporter/.cvsignore gemrb/trunk/gemrb/plugins/ITMImporter/.cvsignore gemrb/trunk/gemrb/plugins/IWDOpcodes/.cvsignore gemrb/trunk/gemrb/plugins/KEYImporter/.cvsignore gemrb/trunk/gemrb/plugins/MOSImporter/.cvsignore gemrb/trunk/gemrb/plugins/MUSImporter/.cvsignore gemrb/trunk/gemrb/plugins/MVEPlayer/.cvsignore gemrb/trunk/gemrb/plugins/NullSound/.cvsignore gemrb/trunk/gemrb/plugins/PLTImporter/.cvsignore gemrb/trunk/gemrb/plugins/PNGImporter/.cvsignore gemrb/trunk/gemrb/plugins/PROImporter/.cvsignore gemrb/trunk/gemrb/plugins/PSTOpcodes/.cvsignore gemrb/trunk/gemrb/plugins/SDLVideo/.cvsignore gemrb/trunk/gemrb/plugins/SPLImporter/.cvsignore gemrb/trunk/gemrb/plugins/STOImporter/.cvsignore gemrb/trunk/gemrb/plugins/TISImporter/.cvsignore gemrb/trunk/gemrb/plugins/TLKImporter/.cvsignore gemrb/trunk/gemrb/plugins/WEDImporter/.cvsignore gemrb/trunk/gemrb/plugins/WMPImporter/.cvsignore gemrb/trunk/gemrb/plugins/ZLibMgr/.cvsignore ie_shell/trunk/.cvsignore ie_shell/trunk/formats/.cvsignore ie_shell/trunk/plugins/.cvsignore Deleted: gemrb/trunk/.cvsignore =================================================================== --- gemrb/trunk/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,23 +0,0 @@ -Makefile -Makefile.in -aclocal.m4 -autom4te.cache -autoscan*.log -config.guess -config.h -config.h.in -config.log -config.status -configure -configure.scan -depcomp -libtool -ltmain.sh -missing -mkinstalldirs -py-compile -stamp-h -stamp-h.in -stamp-h1 -setup.sh -compile.log Deleted: gemrb/trunk/gemrb/.cvsignore =================================================================== --- gemrb/trunk/gemrb/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,5 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -gemrb Deleted: gemrb/trunk/gemrb/Config/.cvsignore =================================================================== --- gemrb/trunk/gemrb/Config/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/Config/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,5 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -config Deleted: gemrb/trunk/gemrb/GUIScripts/.cvsignore =================================================================== --- gemrb/trunk/gemrb/GUIScripts/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/GUIScripts/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,3 +0,0 @@ -*.pyc -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/GUIScripts/bg1/.cvsignore =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg1/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/GUIScripts/bg1/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,3 +0,0 @@ -*.pyc -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/GUIScripts/bg2/.cvsignore =================================================================== --- gemrb/trunk/gemrb/GUIScripts/bg2/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/GUIScripts/bg2/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,3 +0,0 @@ -*.pyc -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/GUIScripts/how/.cvsignore =================================================================== --- gemrb/trunk/gemrb/GUIScripts/how/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/GUIScripts/how/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,3 +0,0 @@ -*.pyc -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/GUIScripts/iwd/.cvsignore =================================================================== --- gemrb/trunk/gemrb/GUIScripts/iwd/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/GUIScripts/iwd/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,3 +0,0 @@ -*.pyc -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/GUIScripts/iwd2/.cvsignore =================================================================== --- gemrb/trunk/gemrb/GUIScripts/iwd2/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/GUIScripts/iwd2/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,3 +0,0 @@ -*.pyc -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/GUIScripts/pst/.cvsignore =================================================================== --- gemrb/trunk/gemrb/GUIScripts/pst/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/GUIScripts/pst/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,3 +0,0 @@ -*.pyc -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/GUIScripts/test1/.cvsignore =================================================================== --- gemrb/trunk/gemrb/GUIScripts/test1/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/GUIScripts/test1/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,3 +0,0 @@ -*.pyc -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/GUIScripts/tob/.cvsignore =================================================================== --- gemrb/trunk/gemrb/GUIScripts/tob/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/GUIScripts/tob/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,3 +0,0 @@ -*.pyc -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/docs/.cvsignore =================================================================== --- gemrb/trunk/gemrb/docs/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/docs/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/docs/en/.cvsignore =================================================================== --- gemrb/trunk/gemrb/docs/en/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/docs/en/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/docs/en/Engine/.cvsignore =================================================================== --- gemrb/trunk/gemrb/docs/en/Engine/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/docs/en/Engine/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/docs/en/GUIScript/.cvsignore =================================================================== --- gemrb/trunk/gemrb/docs/en/GUIScript/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/docs/en/GUIScript/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/docs/en/Tables/.cvsignore =================================================================== --- gemrb/trunk/gemrb/docs/en/Tables/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/docs/en/Tables/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/docs/en/doxygen/.cvsignore =================================================================== --- gemrb/trunk/gemrb/docs/en/doxygen/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/docs/en/doxygen/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -html -latex Deleted: gemrb/trunk/gemrb/includes/.cvsignore =================================================================== --- gemrb/trunk/gemrb/includes/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/includes/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/override/.cvsignore =================================================================== --- gemrb/trunk/gemrb/override/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/override/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/override/bg1/.cvsignore =================================================================== --- gemrb/trunk/gemrb/override/bg1/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/override/bg1/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/override/bg2/.cvsignore =================================================================== --- gemrb/trunk/gemrb/override/bg2/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/override/bg2/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/override/how/.cvsignore =================================================================== --- gemrb/trunk/gemrb/override/how/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/override/how/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/override/iwd/.cvsignore =================================================================== --- gemrb/trunk/gemrb/override/iwd/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/override/iwd/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/override/iwd2/.cvsignore =================================================================== --- gemrb/trunk/gemrb/override/iwd2/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/override/iwd2/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/override/pst/.cvsignore =================================================================== --- gemrb/trunk/gemrb/override/pst/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/override/pst/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/override/test1/.cvsignore =================================================================== --- gemrb/trunk/gemrb/override/test1/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/override/test1/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/override/tob/.cvsignore =================================================================== --- gemrb/trunk/gemrb/override/tob/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/override/tob/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/2DAImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/2DAImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/2DAImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/ACMImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/ACMImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/ACMImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/AREImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/AREImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/AREImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/BAMImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/BAMImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/BAMImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/BIFImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/BIFImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/BIFImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/BMPImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/BMPImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/BMPImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/CHUImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/CHUImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/CHUImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/CREImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/CREImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/CREImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/Core/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/Core/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/Core/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/DLGImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/DLGImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/DLGImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/EFFImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/EFFImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/EFFImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/FXOpcodes/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/FXOpcodes/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/FXOpcodes/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/GAMImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/GAMImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/GAMImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/GUIScript/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/GUIScript/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/GUIScript/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/IDSImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/IDSImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/IDSImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/INIImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/INIImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/INIImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/ITMImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/ITMImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/ITMImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/IWDOpcodes/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/IWDOpcodes/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/IWDOpcodes/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/KEYImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/KEYImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/KEYImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/MOSImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/MOSImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/MOSImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/MUSImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/MUSImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/MUSImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/MVEPlayer/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/MVEPlayer/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/MVEPlayer/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/NullSound/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/NullSound/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/NullSound/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/PLTImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/PLTImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/PLTImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/PNGImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/PNGImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/PNGImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/PROImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/PROImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/PROImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/PSTOpcodes/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/PSTOpcodes/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/PSTOpcodes/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/SDLVideo/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/SDLVideo/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/SDLVideo/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/SPLImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/SPLImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/SPLImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/STOImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/STOImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/STOImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/TISImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/TISImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/TISImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/TLKImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/TLKImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/TLKImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/WEDImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/WEDImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/WEDImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/WMPImporter/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/WMPImporter/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/WMPImporter/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: gemrb/trunk/gemrb/plugins/ZLibMgr/.cvsignore =================================================================== --- gemrb/trunk/gemrb/plugins/ZLibMgr/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ gemrb/trunk/gemrb/plugins/ZLibMgr/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,6 +0,0 @@ -*.lo -*.la -.deps -.libs -Makefile -Makefile.in Deleted: ie_shell/trunk/.cvsignore =================================================================== --- ie_shell/trunk/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ ie_shell/trunk/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -*.pyc - Deleted: ie_shell/trunk/formats/.cvsignore =================================================================== --- ie_shell/trunk/formats/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ ie_shell/trunk/formats/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -*.pyc - Deleted: ie_shell/trunk/plugins/.cvsignore =================================================================== --- ie_shell/trunk/plugins/.cvsignore 2007-02-26 19:46:20 UTC (rev 4498) +++ ie_shell/trunk/plugins/.cvsignore 2007-02-26 22:03:04 UTC (rev 4499) @@ -1,2 +0,0 @@ -*.pyc - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <edh...@us...> - 2008-02-27 12:40:55
|
Revision: 5096 http://gemrb.svn.sourceforge.net/gemrb/?rev=5096&view=rev Author: edheldil Date: 2008-02-27 04:41:00 -0800 (Wed, 27 Feb 2008) Log Message: ----------- Changed directory structure to allow iesh installation to system-wide dirs. Not yet complete Added distutil setup script. Modified Paths: -------------- ie_shell/trunk/ie_shell/formats/bam.py ie_shell/trunk/ie_shell/formats/biff.py ie_shell/trunk/ie_shell/formats/chui.py ie_shell/trunk/ie_shell/formats/cre.py ie_shell/trunk/ie_shell/formats/dlg.py ie_shell/trunk/ie_shell/formats/ids.py ie_shell/trunk/ie_shell/formats/itm.py ie_shell/trunk/ie_shell/formats/key.py ie_shell/trunk/ie_shell/formats/pro.py ie_shell/trunk/ie_shell/formats/spl.py ie_shell/trunk/ie_shell/formats/stream.py ie_shell/trunk/ie_shell/formats/tis.py ie_shell/trunk/ie_shell/formats/tlk.py ie_shell/trunk/ie_shell/formats/vvc.py ie_shell/trunk/ie_shell/formats/wfx.py ie_shell/trunk/ie_shell/formats/wmap.py Added Paths: ----------- ie_shell/trunk/ie_shell/ ie_shell/trunk/ie_shell/__init__.py ie_shell/trunk/ie_shell/builtins.py ie_shell/trunk/ie_shell/core.py ie_shell/trunk/ie_shell/formats/ ie_shell/trunk/ie_shell/formats/__init__.py ie_shell/trunk/ie_shell/formats/are.py ie_shell/trunk/ie_shell/formats/dtypes.py ie_shell/trunk/ie_shell/formats/format.py ie_shell/trunk/ie_shell/formats/wed.py Removed Paths: ------------- ie_shell/trunk/ie_shell/formats/__init__.py ie_shell/trunk/ie_shell/formats/format.py ie_shell/trunk/ie_shell/formats/wed.py Added: ie_shell/trunk/ie_shell/__init__.py =================================================================== --- ie_shell/trunk/ie_shell/__init__.py (rev 0) +++ ie_shell/trunk/ie_shell/__init__.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -0,0 +1 @@ + Copied: ie_shell/trunk/ie_shell/builtins.py (from rev 5094, ie_shell/trunk/plugins/builtins.py) =================================================================== --- ie_shell/trunk/ie_shell/builtins.py (rev 0) +++ ie_shell/trunk/ie_shell/builtins.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -0,0 +1,148 @@ +#-*-python-*- + +import os.path + +from ie_shell import core +from ie_shell.formats.stream import ResourceStream, FileStream + +################################################### +def load_game (game_dir, chitin_file = core.chitin_file, dialog_file = core.dialog_file): + """Loads key and dialog files from the specified directory. + The directory parameter is mandatory, the others are optional. + Most of the other commands assume that these two files are + already loaded. The loaded objects are stored in core.keys and + core.strrefs.""" + + core.game_dir = game_dir + core.chitin_file = chitin_file + core.dialog_file = dialog_file + + # Load RESREF index file (CHITIN.KEY) + core.keys = core.get_format ('KEY') (os.path.join (game_dir, chitin_file)) + core.keys.decode_header () + print "Loading %d file refs and %d RESREFs. This may take ages" %(core.keys.header['num_of_bifs'], core.keys.header['num_of_resrefs']) + core.keys.decode_file () + + + # LOAD STRREF index file (DIALOG.TLK) + core.strrefs = core.get_format ('TLK') (os.path.join (game_dir, dialog_file)) + core.strrefs.decode_header () + print "Loading %d STRREFs. This may take eternity" %(core.strrefs.header['num_of_strrefs']) + core.strrefs.decode_file () + + +################################################### +def load_object (name, type = None): + + try: + fh = open (name) + except: + fh = None + + if fh: + fh.close () + return FileStream(name).load_object () + else: + return ResourceStream(name, type).load_object () + + +################################################### +def find_str (text): + """Finds all strings in loaded DIALOG.TLK file matching regular expression + and prints their STRREFs""" + + for o in core.strrefs.get_strref_by_str_re(text): + print core.strrefs.strref_list.index(o), o['string'] + +################################################### +def export_obj (name, filename, type = None, index = 0): + """Exports resource `name' into file `filename'. If the `name' is not + unique, specify resource type with `type' and eventually `index' if + there's still more than one""" + + oo = core.keys.get_resref_by_name_re(name) + if type != None: + oo = filter (lambda o: o['type'] == type, oo) + + if len (oo) > 1 and type == None: + print "More than one result" + return + + o = oo[index] + + src_file = core.keys.bif_list[o['locator_src_ndx']] + b = core.formats['BIFF'] (os.path.join (core.game_dir, src_file['file_name'])) + b.decode_file () + b.save_file_data (filename, b.file_list[o['locator_ntset_ndx']]) + + +################################################### +def iterate_objects_by_type (type, fn): + + # FIXME: this function opens and decodes a bif file EACH time some + # object from it is accessed, so it's slow as hell. It should use + # some caching + + #def resref_to_obj (res): + # print res['resref_name'] + # return ResourceStream (res['resref_name'], type).load_object () + + for res in filter (lambda res: res['type'] == type, core.keys.resref_list): + print res['resref_name'] + obj = ResourceStream (res['resref_name'], type).load_object () + fn (obj) + + +################################################### +def sprintf (format_str, params): + return format_str %(params) + +def printf (format_str, params): + print sprintf (format_str, params) + +def loaded_object (obj): + obj.decode_file () + return obj + +################################################### +def pok(): + def p (obj): + obj.decode_file () + obj.print_file () + + iterate_objects_by_type (0x03ed, p) + +################################################### +def load_ids (): + def p (obj): + obj.decode_file () + print obj.stream.resref + #obj.print_file () + + iterate_objects_by_type (0x03f0, p) + +################################################### +def get_restype_stats (): + stats = {} + for o in core.keys.resref_list: + if not stats.has_key (o['type']): + stats[o['type']] = 1 + else: + stats[o['type']] = stats[o['type']] + 1 + + return stats + + +################################################### +def print_restype_stats (): + stats = get_restype_stats () + for s in stats.keys (): + if core.restype_hash.has_key (s): + type = core.restype_hash[s] + else: + type = '??' + print "0x%04x (%s):\t%5d" %(s, type, stats[s]) + + +################################################### +# End of file builtins.py Copied: ie_shell/trunk/ie_shell/core.py (from rev 5094, ie_shell/trunk/plugins/core.py) =================================================================== --- ie_shell/trunk/ie_shell/core.py (rev 0) +++ ie_shell/trunk/ie_shell/core.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -0,0 +1,177 @@ +# -*-python-*- + +import string + + +global formats +formats = {} + +global strrefs +strrefs = None + +global keys +keys = None + +global options +options = {} + +# Loaded IDS files +global ids +ids = {} + +game_dir = None +chitin_file = 'CHITIN.KEY' +dialog_file = 'dialog.tlk' + +xor_key = "\x88\xa8\x8f\xba\x8a\xd3\xb9\xf5\xed\xb1\xcf\xea\xaa\xe4\xb5\xfb\xeb\x82\xf9\x90\xca\xc9\xb5\xe7\xdc\x8e\xb7\xac\xee\xf7\xe0\xca\x8e\xea\xca\x80\xce\xc5\xad\xb7\xc4\xd0\x84\x93\xd5\xf0\xeb\xc8\xb4\x9d\xcc\xaf\xa5\x95\xba\x99\x87\xd2\x9d\xe3\x91\xba\x90\xca" + + +global slash_trans +slash_trans = string.maketrans ('\\', '/') + +t_cp1250 = '\xE1\xE8\xEF\xE9\xEC\xED\xF2\xF3\xF8\x9A\x9D\xFA\xF9\xFD\x9E\xC1\xC8\xCF\xC9\xCC\xCD\xD2\xD3؊\x8D\xDA\xD9ݎ' +t_iso8859_2 = '\xE1\xE8\xEF\xE9\xEC\xED\xF2\xF3\xF8\xB9\xBB\xFA\xF9\xFD\xBE\xC1\xC8\xCF\xC9\xCC\xCD\xD2\xD3ة\xAB\xDA\xD9ݮ' + +global lang_trans +lang_trans = string.maketrans (t_cp1250, t_iso8859_2) + +def translate_to_iso (s): + return string.translate (s, lang_trans) + +def cond (c, a, b): + if c: return a + else: return b + +def translate_to_ord (s): + return map (lambda c: (cond (ord (c) < 128, c, "\\x%02X" %(ord (c))), s)) + +restype_list = [ + [0x0001, 'BMP', ''], + [0x0002, 'MVE', ''], + [0x0004, 'WAV', ''], + [0x0004, 'WAVC', ''], + [0x0005, 'WFX', ''], + [0x0006, 'PLT', ''], + [0x03e8, 'BAM', ''], + [0x03e8, 'BAMC', ''], + [0x03e9, 'WED', ''], + [0x03ea, 'CHUI', ''], + [0x03eb, 'TIS', ''], + [0x03ec, 'MOS', ''], + [0x03ec, 'MOSC', ''], + [0x03ed, 'ITM', ''], + [0x03ee, 'SPL', ''], + [0x03ef, 'BCS', ''], + [0x03f0, 'IDS', ''], + [0x03f1, 'CRE', ''], + [0x03f2, 'ARE', ''], + [0x03f3, 'DLG', ''], + [0x03f4, '2DA', ''], + [0x03f5, 'GAME', ''], + [0x03f6, 'STOR', ''], + [0x03f7, 'WMAP', ''], + [0x03f8, 'CHR', ''], + [0x03f8, 'EFF', ''], + [0x03f9, 'BS', ''], + [0x03fa, 'CHR', ''], + [0x03fb, 'VVC', ''], + [0x03fc, 'VEF', ''], + [0x03fd, 'PRO', ''], + [0x03fe, 'BIO', ''], + [0x044c, 'BAH', ''], + [0x0802, 'INI', ''], + [0x0803, 'SRC', ''], + ] + +restype_hash = { + 0x0001 : 'BMP', + 0x0002 : 'MVE', + 0x0004 : 'WAV', # also WAVC + 0x0005 : 'WFX', + 0x0006 : 'PLT', + 0x03e8 : 'BAM', # also BAMC + 0x03e9 : 'WED', + 0x03ea : 'CHUI', + 0x03eb : 'TIS', + 0x03ec : 'MOS', # also MOSC + 0x03ed : 'ITM', + 0x03ee : 'SPL', + 0x03ef : 'BCS', + 0x03f0 : 'IDS', + 0x03f1 : 'CRE', + 0x03f2 : 'ARE', + 0x03f3 : 'DLG', + 0x03f4 : '2DA', + 0x03f5 : 'GAME', + 0x03f6 : 'STOR', + 0x03f7 : 'WMAP', + 0x03f8 : 'CHR', # also EFF + 0x03f9 : 'BS', + 0x03fa : 'CHR', + 0x03fb : 'VVC', + 0x03fc : 'VEF', + 0x03fd : 'PRO', + 0x03fe : 'BIO', + 0x044c : 'BAH', + 0x0802 : 'INI', + 0x0803 : 'SRC', + } + +restype_rev_hash = { + '2DA' : 0x03f4, + 'ARE' : 0x03f2, + 'BAH' : 0x044c, + 'BAM' : 0x03e8, + 'BAMC' : 0x03e8, + 'BCS' : 0x03ef, + 'BIO' : 0x03fe, + 'BMP' : 0x0001, + 'BS' : 0x03f9, + 'CHR' : 0x03fa, + #'CHR' : 0x03f8, + 'CHUI' : 0x03ea, + 'CRE' : 0x03f1, + 'DLG' : 0x03f3, + 'EFF' : 0x03f8, + 'GAME' : 0x03f5, + 'IDS' : 0x03f0, + 'INI' : 0x0802, + 'ITM' : 0x03ed, + 'MOS' : 0x03ec, + 'MOSC' : 0x03ec, + 'MVE' : 0x0002, + 'PLT' : 0x0006, + 'PRO' : 0x03fd, + 'SPL' : 0x03ee, + 'SRC' : 0x0803, + 'STOR' : 0x03f6, + 'TIS' : 0x03eb, + 'VEF' : 0x03fc, + 'VVC' : 0x03fb, + 'WAV' : 0x0004, + 'WAVC' : 0x0004, + 'WED' : 0x03e9, + 'WFX' : 0x0005, + 'WMAP' : 0x03f7, + } + + +def register_format (signature, version, klass): + #core.formats[(signature, version)] = klass + formats[signature] = klass + + +def get_format (signature, version = None): + try: + return formats[signature] + except: + return None + + +def get_format_by_type (type): + try: + signature = restype_hash[type] + return get_format (signature) + except: + return None + Copied: ie_shell/trunk/ie_shell/formats (from rev 5094, ie_shell/trunk/formats) Deleted: ie_shell/trunk/ie_shell/formats/__init__.py =================================================================== --- ie_shell/trunk/formats/__init__.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/ie_shell/formats/__init__.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -1,20 +0,0 @@ -# -*-python-*- - -import format - -import bam -import biff -import chui -import cre -import dlg -import ids -import itm -import key -import pro -import spl -import tis -import tlk -import vvc -import wed -import wfx -import wmap Copied: ie_shell/trunk/ie_shell/formats/__init__.py (from rev 5095, ie_shell/trunk/formats/__init__.py) =================================================================== --- ie_shell/trunk/ie_shell/formats/__init__.py (rev 0) +++ ie_shell/trunk/ie_shell/formats/__init__.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -0,0 +1,21 @@ +# -*-python-*- + +import format + +import are +import bam +import biff +import chui +import cre +import dlg +import ids +import itm +import key +import pro +import spl +import tis +import tlk +import vvc +import wed +import wfx +import wmap Copied: ie_shell/trunk/ie_shell/formats/are.py (from rev 5095, ie_shell/trunk/formats/are.py) =================================================================== --- ie_shell/trunk/ie_shell/formats/are.py (rev 0) +++ ie_shell/trunk/ie_shell/formats/are.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -0,0 +1,258 @@ +# -*-python-*- +# ie_shell.py - Simple shell for Infinity Engine-based game files +# Copyright (C) 2004 by Jaroslav Benkovsky, <edh...@us...> +# +# 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. + +# RCS: $Id: pro.py,v 1.1 2006/07/08 14:29:26 edheldil Exp $ + +from ie_shell.formats.format import Format, register_format, core + +class ARE_Format (Format): + def __init__ (self, filename): + Format.__init__ (self, filename) + self.expect_signature = 'AREA' + + + self.header_desc = ( + { 'key': 'signature', + 'type': 'STR4', + 'off': 0x0000, + 'label': 'Signature' }, + + { 'key': 'version', + 'type': 'STR4', + 'off':0x0004, + 'label': 'Version'}, + + { 'key': 'wed', + 'type': 'RESREF', + 'off': 0x0008, + 'label': 'Corresponding WED file' }, + + { 'key': 'unsaved_time', + 'type': 'DWORD', + 'off': 0x0010, + 'label': 'Seconds since last save' }, + + + { 'key': 'area_flag', + 'type': 'DWORD', + 'off': 0x0014, + 'mask': { + 0x01: 'can save', + 0x02: 'tutorial', + 0x04: 'dead magic', + 0x08: 'dream' + }, + 'label': 'Area flag (AREAFLAG.IDS)'}, + + { 'key': 'north_area', + 'type': 'RESREF', + 'off': 0x0018, + 'label': 'Area to the North'}, + + { 'key': 'unknown_20', + 'type': 'DWORD', + 'off': 0x0020, + 'label': 'Unknown north 20'}, + + { 'key': 'east_area', + 'type': 'RESREF', + 'off': 0x0024, + 'label': 'Area to the East'}, + + { 'key': 'unknown_2C', + 'type': 'DWORD', + 'off': 0x002C, + 'label': 'Unknown east 20'}, + + { 'key': 'south_area', + 'type': 'RESREF', + 'off': 0x0030, + 'label': 'Area to the South'}, + + { 'key': 'unknown_38', + 'type': 'DWORD', + 'off': 0x0038, + 'label': 'Unknown south 38'}, + + { 'key': 'west_area', + 'type': 'RESREF', + 'off': 0x003C, + 'label': 'Area to the West'}, + + { 'key': 'unknown_44', + 'type': 'DWORD', + 'off': 0x0044, + 'label': 'Unknown west 44'}, + + + { 'key': 'flags', + 'type': 'WORD', + 'off': 0x0048, + 'mask': { + 0x01: 'outdoor', + 0x02: 'day/night', + 0x04: 'weather', + 0x08: 'city', + 0x10: 'forest', + 0x20: 'dungeon', + 0x40: 'extended night', + 0x80: 'can rest inddors', + }, + 'label': 'Flag (AREATYPE.IDS)'}, + + + { 'key': 'rain_chance', + 'type': 'WORD', + 'off': 0x004A, + 'label': 'Rain chance'}, + + { 'key': 'snow_chance', + 'type': 'WORD', + 'off': 0x004C, + 'label': 'Snow chance'}, + + { 'key': 'fog_chance', + 'type': 'WORD', + 'off': 0x004E, + 'label': 'Fog chance (unimpl)'}, + + { 'key': 'lightning_chance', + 'type': 'WORD', + 'off': 0x0050, + 'label': 'Lightning chance'}, + + { 'key': 'unknown_52', + 'type': 'WORD', + 'off': 0x0052, + 'label': 'Unknown 52'}, + + + { 'key': 'actor_off', + 'type': 'DWORD', + 'off': 0x0054, + 'label': 'Actors offset'}, + + { 'key': 'actor_cnt', + 'type': 'WORD', + 'off': 0x0058, + 'label': '# of actors'}, + + { 'key': 'infopoint_cnt', + 'type': 'WORD', + 'off': 0x005A, + 'label': '# of infopoints, triggerpoints and exits'}, + + { 'key': 'infopoint_off', + 'type': 'DWORD', + 'off': 0x005C, + 'label': 'Offset of infopoints, triggerpoints and exits'}, + + { 'key': 'spawnpoint_off', + 'type': 'DWORD', + 'off': 0x0060, + 'label': 'Spawnpoint offset'}, + + { 'key': 'spawnpoint_cnt', + 'type': 'DWORD', + 'off': 0x0064, + 'label': '# of spawnpoints'}, + + { 'key': 'entrance_off', + 'type': 'DWORD', + 'off': 0x0068, + 'label': 'Entrances offset'}, + + { 'key': 'entrance_cnt', + 'type': 'DWORD', + 'off': 0x006C, + 'label': '# of entrances'}, + + { 'key': 'container_off', + 'type': 'DWORD', + 'off': 0x0070, + 'label': 'Containers offset'}, + + { 'key': 'container_cnt', + 'type': 'WORD', + 'off': 0x0074, + 'label': '# of containers'}, + + { 'key': 'item_cnt', + 'type': 'WORD', + 'off': 0x0076, + 'label': '# of items'}, + + { 'key': 'item_off', + 'type': 'DWORD', + 'off': 0x0078, + 'label': 'Item offset'}, + + { 'key': 'vertex_off', + 'type': 'DWORD', + 'off': 0x007C, + 'label': 'Vertices offset'}, + + { 'key': 'vertex_cnt', + 'type': 'WORD', + 'off': 0x0080, + 'label': '# of vertices'}, + + { 'key': 'ambient_cnt', + 'type': 'WORD', + 'off': 0x0082, + 'label': '# of ambient sounds'}, + + { 'key': 'ambient_off', + 'type': 'DWORD', + 'off': 0x0084, + 'label': 'Ambients offset'}, + + ) + + + + + def decode_file (self): + self.decode_header () +# if self.header['projectile_type'] == 3: +# self.decode_area_header () + + + def print_file (self): + self.print_header () +# if self.header['projectile_type'] == 3: +# self.print_area_header () + + + def decode_header (self): + self.header = {} + self.decode_by_desc (0x0000, self.header_desc, self.header) + + def print_header (self): + self.print_by_desc (self.header, self.header_desc) + + +# def decode_area_header (self): +# self.area_header = {} +# self.decode_by_desc (0x0000, self.area_header_desc, self.area_header) + +# def print_area_header (self): +# self.print_by_desc (self.area_header, self.area_header_desc) + + +register_format ('AREA', 'V1.0', ARE_Format) Modified: ie_shell/trunk/ie_shell/formats/bam.py =================================================================== --- ie_shell/trunk/formats/bam.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/ie_shell/formats/bam.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -21,8 +21,8 @@ import struct import sys -from format import Format, register_format -from stream import CompressedStream +from ie_shell.formats.format import Format, register_format +from ie_shell.formats.stream import CompressedStream class BAM_Format (Format): Modified: ie_shell/trunk/ie_shell/formats/biff.py =================================================================== --- ie_shell/trunk/formats/biff.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/ie_shell/formats/biff.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -19,7 +19,7 @@ # RCS: $Id: biff.py,v 1.3 2006/07/08 14:29:26 edheldil Exp $ import gzip -from format import Format, register_format +from ie_shell.formats.format import Format, register_format class BIFF_Format (Format): def __init__ (self, filename): Modified: ie_shell/trunk/ie_shell/formats/chui.py =================================================================== --- ie_shell/trunk/formats/chui.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/ie_shell/formats/chui.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -18,7 +18,7 @@ # RCS: $Id: chui.py,v 1.1 2005/03/02 20:44:22 edheldil Exp $ -from format import Format, register_format +from ie_shell.formats.format import Format, register_format class CHUI_Format (Format): def __init__ (self, filename): Modified: ie_shell/trunk/ie_shell/formats/cre.py =================================================================== --- ie_shell/trunk/formats/cre.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/ie_shell/formats/cre.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -18,7 +18,7 @@ # RCS: $Id: cre.py,v 1.3 2006/07/03 18:15:35 edheldil Exp $ -from format import Format, register_format +from ie_shell.formats.format import Format, register_format # FIXME: incomplete! Modified: ie_shell/trunk/ie_shell/formats/dlg.py =================================================================== --- ie_shell/trunk/formats/dlg.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/ie_shell/formats/dlg.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -18,7 +18,7 @@ # RCS: $Id: dlg.py,v 1.1 2006/07/03 18:15:35 edheldil Exp $ -from format import Format, register_format, core +from ie_shell.formats.format import Format, register_format, core class DLG_Format (Format): def __init__ (self, filename): Copied: ie_shell/trunk/ie_shell/formats/dtypes.py (from rev 5095, ie_shell/trunk/formats/dtypes.py) =================================================================== --- ie_shell/trunk/ie_shell/formats/dtypes.py (rev 0) +++ ie_shell/trunk/ie_shell/formats/dtypes.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -0,0 +1,19 @@ +# -*-python-*- + +dtypes = {} + + +class DescItem: + def __init__ (self): + pass + + def printme (self, desc): + pass + + def load (self, desc, stream): + pass + + def save (self, desc, stream): + pass + + Deleted: ie_shell/trunk/ie_shell/formats/format.py =================================================================== --- ie_shell/trunk/formats/format.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/ie_shell/formats/format.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -1,236 +0,0 @@ -# -*-python-*- -# ie_shell.py - Simple shell for Infinity Engine-based game files -# Copyright (C) 2004 by Jaroslav Benkovsky, <edh...@us...> -# -# 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. - -# RCS: $Id: format.py,v 1.5 2006/07/08 14:29:26 edheldil Exp $ - -import os.path -import re -import string -import struct -import types - -from plugins import core -from stream import Stream, FileStream, ResourceStream - -PAGE_SIZE = 4096 - -TICK_SIZE = 100 -TACK_SIZE = 5000 - -def ResolveFilePath (filename): - if os.path.isfile (filename): - return filename - - - - -class Format: - - default_options = {} - - def __init__ (self, source): - self.header_size = 0 - self.bitmask_cache = {} - self.options = {} - - if not isinstance (source, Stream): - source = FileStream (source) - - self.stream = source - self.stream.open () - - def get_masked_bits (self, value, mask, bl): - return (value & mask) >> bl - - # FIXME: cache it globally ... - def bits_to_mask (self, bits): - try: - return self.bitmask_cache[bits] - except: - bh, bl = map (int, string.split (bits, '-')) - if bl > bh: - print "warning: bh < bl:", bits - bh, bl = bl, bh - - mask = 0L - for i in range (bl, bh + 1): - mask = mask | (1L << i) - - #print "MASK: 0x%08x\n" %mask - - self.bitmask_cache[bits] = (mask, bl) - return mask, bl - - -# { 'key': '', 'type': '', 'off': 0x00, 'label': '' }, - - def decode_by_desc (self, offset, desc, obj): - for d in desc: - key = d['key'] - type = d['type'] - local_offset = d['off'] - - stream = self.stream - - if self.get_option ('debug_decode'): - print d - - if type == 'BYTE': - value = ord (stream.get_char (offset + local_offset)) - elif type == 'CTLTYPE': - value = ord (stream.get_char (offset + local_offset)) - elif type == 'WORD': - value = stream.decode_word (offset + local_offset) - elif type == 'DWORD': - value = stream.decode_dword (offset + local_offset) - elif type == 'CTLID': - value = stream.decode_dword (offset + local_offset) - elif type == 'RGBA': - value = stream.decode_dword (offset + local_offset) - elif type == 'STR2': - value = stream.decode_sized_string (offset + local_offset, 2) - elif type == 'STR4': - value = stream.decode_sized_string (offset + local_offset, 4) - elif type == 'STR32': - value = stream.decode_sized_string (offset + local_offset, 32) - elif type == 'RESREF': - value = stream.decode_resref (offset + local_offset) - value = string.translate (value, core.slash_trans, '\x00') - elif type == 'STRREF': - value = stream.decode_dword (offset + local_offset) - elif type == 'RESTYPE': - value = stream.decode_word (offset + local_offset) - elif type == 'STROFF': - stroff = stream.decode_dword (offset + local_offset) - value = stream.decode_asciiz_string (stroff) - value = string.translate (value, core.slash_trans, '\x00') - elif type == 'STRSIZED': - length = stream.decode_dword (offset + local_offset) - # FIXME: asciiz or sized??? - value = stream.decode_asciiz_string (offset + local_offset + 4) - elif type == 'BYTES': - value = stream.decode_blob (offset + local_offset, d['size']) - elif type == '_STRING': - value = '' - elif type == '_BYTE': - value = '?' - else: - raise "Unknown data type `%s'" %type - #value = '' - - if d.has_key ('bits'): - mask, bl = self.bits_to_mask (d['bits']) - value = self.get_masked_bits (value, mask, bl) - - obj[key] = value - - if self.get_option ('debug_decode'): - self.print_date_by_desc (obj, d) - - - def print_by_desc (self, obj, desc): - for d in desc: - self.print_date_by_desc (obj, d) - print - - def print_date_by_desc (self, obj, d): - key = d['key'] - rec_type = d['type'] - label = d['label'] - - try: enum = d['enum'] - except: enum = None - - try: mask = d['mask'] - except: mask = None - - value = obj[key] - value2 = '' - - if rec_type == 'RESTYPE': - try: value2 = '(' + core.restype_hash[value] + ')' - except: pass - elif rec_type == 'CTLTYPE': - try: value2 = '(' + ctltype_hash[value] + ')' - except: pass - elif rec_type == 'CTLID': - try: value2 = '(' + '0x%08x' %value + ')' - except: pass - elif rec_type == 'STRREF' and core.strrefs: - try: value2 = '(' + core.strrefs.strref_list[value]['string'] + ')' - except: pass - elif rec_type == 'RGBA': - try: value2 = '(' + '%08x' %value + ')' - except: pass - elif enum != None: - if type (enum) == types.DictType: - try: value2 = '(' + enum[value] + ')' - except: pass - - elif type (enum) == types.StringType: - if not core.ids.has_key (enum): - try: - # FIXME: ugly & should use 'IDS' instead of 0x3F0 - ids = ResourceStream (enum, 0x03F0).load_object () - ids.decode_file () - core.ids[enum] = ids - except: - pass - - try: value2 = '(' + core.ids[enum].ids[value] + ')' - except: pass - - - elif mask != None: - value2 = '(' + string.join (map (lambda m, mask=mask: mask[m], filter (lambda m, v=value: (m & v) == m, mask.keys ())), '|') + ')' - - print label + ':', value, value2 - - - def set_option_default (key, value): - Format.default_options[key] = value - - def set_option (self, key, value): - self.options[key] = value - - def get_option (self, key): - if self.options.has_key (key): - return self.options[key] - elif core.options.has_key (key): - return core.options[key] - else: - return Format.default_options[key] - - -Format.default_options['debug_decode'] = 0 - - - -ctltype_hash = { - 0 : 'button/pixmap', - 2 : 'slider', - 3 : 'textedit', - 5 : 'textarea', - 6 : 'label?', - 7 : 'scrollbar', - } - - - -def register_format (signature, version, klass): - core.register_format (signature, version, klass) Copied: ie_shell/trunk/ie_shell/formats/format.py (from rev 5095, ie_shell/trunk/formats/format.py) =================================================================== --- ie_shell/trunk/ie_shell/formats/format.py (rev 0) +++ ie_shell/trunk/ie_shell/formats/format.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -0,0 +1,238 @@ +# -*-python-*- +# ie_shell.py - Simple shell for Infinity Engine-based game files +# Copyright (C) 2004 by Jaroslav Benkovsky, <edh...@us...> +# +# 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. + +# RCS: $Id: format.py,v 1.5 2006/07/08 14:29:26 edheldil Exp $ + +import os.path +import re +import string +import struct +import types + +from ie_shell import core +from ie_shell.formats.stream import Stream, FileStream, ResourceStream + +PAGE_SIZE = 4096 + +TICK_SIZE = 100 +TACK_SIZE = 5000 + +def ResolveFilePath (filename): + if os.path.isfile (filename): + return filename + + + + +class Format: + + default_options = {} + + def __init__ (self, source): + self.header_size = 0 + self.bitmask_cache = {} + self.options = {} + + if not isinstance (source, Stream): + source = FileStream (source) + + self.stream = source + self.stream.open () + + def get_masked_bits (self, value, mask, bl): + return (value & mask) >> bl + + # FIXME: cache it globally ... + def bits_to_mask (self, bits): + try: + return self.bitmask_cache[bits] + except: + bh, bl = map (int, string.split (bits, '-')) + if bl > bh: + print "warning: bh < bl:", bits + bh, bl = bl, bh + + mask = 0L + for i in range (bl, bh + 1): + mask = mask | (1L << i) + + #print "MASK: 0x%08x\n" %mask + + self.bitmask_cache[bits] = (mask, bl) + return mask, bl + + +# { 'key': '', 'type': '', 'off': 0x00, 'label': '' }, + + def decode_by_desc (self, offset, desc, obj): + for d in desc: + key = d['key'] + type = d['type'] + local_offset = d['off'] + + stream = self.stream + + if self.get_option ('debug_decode'): + print d + + if type == 'BYTE': + value = ord (stream.get_char (offset + local_offset)) + elif type == 'CTLTYPE': + value = ord (stream.get_char (offset + local_offset)) + elif type == 'WORD': + value = stream.decode_word (offset + local_offset) + elif type == 'DWORD': + value = stream.decode_dword (offset + local_offset) + elif type == 'CTLID': + value = stream.decode_dword (offset + local_offset) + elif type == 'RGBA': + value = stream.decode_dword (offset + local_offset) + elif type == 'STR2': + value = stream.decode_sized_string (offset + local_offset, 2) + elif type == 'STR4': + value = stream.decode_sized_string (offset + local_offset, 4) + elif type == 'STR8': + value = stream.decode_sized_string (offset + local_offset, 8) + elif type == 'STR32': + value = stream.decode_sized_string (offset + local_offset, 32) + elif type == 'RESREF': + value = stream.decode_resref (offset + local_offset) + value = string.translate (value, core.slash_trans, '\x00') + elif type == 'STRREF': + value = stream.decode_dword (offset + local_offset) + elif type == 'RESTYPE': + value = stream.decode_word (offset + local_offset) + elif type == 'STROFF': + stroff = stream.decode_dword (offset + local_offset) + value = stream.decode_asciiz_string (stroff) + value = string.translate (value, core.slash_trans, '\x00') + elif type == 'STRSIZED': + length = stream.decode_dword (offset + local_offset) + # FIXME: asciiz or sized??? + value = stream.decode_asciiz_string (offset + local_offset + 4) + elif type == 'BYTES': + value = stream.decode_blob (offset + local_offset, d['size']) + elif type == '_STRING': + value = '' + elif type == '_BYTE': + value = '?' + else: + raise "Unknown data type `%s'" %type + #value = '' + + if d.has_key ('bits'): + mask, bl = self.bits_to_mask (d['bits']) + value = self.get_masked_bits (value, mask, bl) + + obj[key] = value + + if self.get_option ('debug_decode'): + self.print_date_by_desc (obj, d) + + + def print_by_desc (self, obj, desc): + for d in desc: + self.print_date_by_desc (obj, d) + print + + def print_date_by_desc (self, obj, d): + key = d['key'] + rec_type = d['type'] + label = d['label'] + + try: enum = d['enum'] + except: enum = None + + try: mask = d['mask'] + except: mask = None + + value = obj[key] + value2 = '' + + if rec_type == 'RESTYPE': + try: value2 = '(' + core.restype_hash[value] + ')' + except: pass + elif rec_type == 'CTLTYPE': + try: value2 = '(' + ctltype_hash[value] + ')' + except: pass + elif rec_type == 'CTLID': + try: value2 = '(' + '0x%08x' %value + ')' + except: pass + elif rec_type == 'STRREF' and core.strrefs: + try: value2 = '(' + core.strrefs.strref_list[value]['string'] + ')' + except: pass + elif rec_type == 'RGBA': + try: value2 = '(' + '%08x' %value + ')' + except: pass + elif enum != None: + if type (enum) == types.DictType: + try: value2 = '(' + enum[value] + ')' + except: pass + + elif type (enum) == types.StringType: + if not core.ids.has_key (enum): + try: + # FIXME: ugly & should use 'IDS' instead of 0x3F0 + ids = ResourceStream (enum, 0x03F0).load_object () + ids.decode_file () + core.ids[enum] = ids + except: + pass + + try: value2 = '(' + core.ids[enum].ids[value] + ')' + except: pass + + + elif mask != None: + value2 = '(' + string.join (map (lambda m, mask=mask: mask[m], filter (lambda m, v=value: (m & v) == m, mask.keys ())), '|') + ')' + + print label + ':', value, value2 + + + def set_option_default (key, value): + Format.default_options[key] = value + + def set_option (self, key, value): + self.options[key] = value + + def get_option (self, key): + if self.options.has_key (key): + return self.options[key] + elif core.options.has_key (key): + return core.options[key] + else: + return Format.default_options[key] + + +Format.default_options['debug_decode'] = 0 + + + +ctltype_hash = { + 0 : 'button/pixmap', + 2 : 'slider', + 3 : 'textedit', + 5 : 'textarea', + 6 : 'label?', + 7 : 'scrollbar', + } + + + +def register_format (signature, version, klass): + core.register_format (signature, version, klass) Modified: ie_shell/trunk/ie_shell/formats/ids.py =================================================================== --- ie_shell/trunk/formats/ids.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/ie_shell/formats/ids.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -20,7 +20,7 @@ import re import sys -from format import Format, register_format +from ie_shell.formats.format import Format, register_format class IDS_Format (Format): def __init__ (self, filename): Modified: ie_shell/trunk/ie_shell/formats/itm.py =================================================================== --- ie_shell/trunk/formats/itm.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/ie_shell/formats/itm.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -18,7 +18,7 @@ # RCS: $Id: itm.py,v 1.1 2005/03/02 20:44:23 edheldil Exp $ -from format import Format, register_format +from ie_shell.formats.format import Format, register_format class ITM_Format (Format): def __init__ (self, filename): Modified: ie_shell/trunk/ie_shell/formats/key.py =================================================================== --- ie_shell/trunk/formats/key.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/ie_shell/formats/key.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -20,8 +20,9 @@ import re import sys -from format import Format, register_format, TICK_SIZE, TACK_SIZE +from ie_shell.formats.format import Format, register_format, TICK_SIZE, TACK_SIZE + class KEY_Format (Format): def __init__ (self, filename): Format.__init__ (self, filename) Modified: ie_shell/trunk/ie_shell/formats/pro.py =================================================================== --- ie_shell/trunk/formats/pro.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/ie_shell/formats/pro.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -18,7 +18,7 @@ # RCS: $Id: pro.py,v 1.1 2006/07/08 14:29:26 edheldil Exp $ -from format import Format, register_format, core +from ie_shell.formats.format import Format, register_format, core class PRO_Format (Format): def __init__ (self, filename): Modified: ie_shell/trunk/ie_shell/formats/spl.py =================================================================== --- ie_shell/trunk/formats/spl.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/ie_shell/formats/spl.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -18,7 +18,7 @@ # RCS: $Id: spl.py,v 1.1 2005/03/02 20:44:23 edheldil Exp $ -from format import Format, register_format +from ie_shell.formats.format import Format, register_format class SPL_Format (Format): def __init__ (self, filename): Modified: ie_shell/trunk/ie_shell/formats/stream.py =================================================================== --- ie_shell/trunk/formats/stream.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/ie_shell/formats/stream.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -24,7 +24,7 @@ import string import struct -from plugins import core +from ie_shell import core class Stream: def __init__ (self): Modified: ie_shell/trunk/ie_shell/formats/tis.py =================================================================== --- ie_shell/trunk/formats/tis.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/ie_shell/formats/tis.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -18,7 +18,7 @@ # RCS: $Id: tis.py,v 1.1 2006/07/08 14:29:27 edheldil Exp $ -from format import Format, register_format, core +from ie_shell.formats.format import Format, register_format, core class TIS_Format (Format): def __init__ (self, filename): Modified: ie_shell/trunk/ie_shell/formats/tlk.py =================================================================== --- ie_shell/trunk/formats/tlk.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/ie_shell/formats/tlk.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -22,8 +22,8 @@ import string import sys -from plugins import core -from format import Format, register_format, TICK_SIZE, TACK_SIZE +from ie_shell import core +from ie_shell.formats.format import Format, register_format, TICK_SIZE, TACK_SIZE class TLK_Format (Format): Modified: ie_shell/trunk/ie_shell/formats/vvc.py =================================================================== --- ie_shell/trunk/formats/vvc.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/ie_shell/formats/vvc.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -18,7 +18,7 @@ # RCS: $Id: vvc.py,v 1.1 2006/07/08 14:29:27 edheldil Exp $ -from format import Format, register_format, core +from ie_shell.formats.format import Format, register_format, core class VVC_Format (Format): def __init__ (self, filename): Deleted: ie_shell/trunk/ie_shell/formats/wed.py =================================================================== --- ie_shell/trunk/formats/wed.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/ie_shell/formats/wed.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -1,145 +0,0 @@ -# -*-python-*- -# ie_shell.py - Simple shell for Infinity Engine-based game files -# Copyright (C) 2004 by Jaroslav Benkovsky, <edh...@us...> -# -# 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. - -# RCS: $Id: wed.py,v 1.1 2006/07/08 14:29:27 edheldil Exp $ - -from format import Format, register_format, core - -class WED_Format (Format): - def __init__ (self, filename): - Format.__init__ (self, filename) - self.expect_signature = 'WED' - - self.overlay_list = [] - - self.header_desc = ( - { 'key': 'signature', - 'type': 'STR4', - 'off': 0x0000, - 'label': 'Signature' }, - - { 'key': 'version', - 'type': 'STR4', - 'off':0x0004, - 'label': 'Version'}, - - { 'key': 'overlay_cnt', - 'type': 'DWORD', - 'off': 0x0008, - 'label': '# of overlays' }, - - { 'key': 'door_cnt', - 'type': 'DWORD', - 'off': 0x000C, - 'label': '# of doors' }, - - { 'key': 'overlay_off', - 'type': 'DWORD', - 'off': 0x0010, - 'label': 'Overlay offset' }, - - { 'key': 'secondary_header_off', - 'type': 'DWORD', - 'off': 0x0014, - 'label': 'Secondary headers offset' }, - - { 'key': 'door_off', - 'type': 'DWORD', - 'off': 0x0018, - 'label': 'Doors offset' }, - - { 'key': 'door_tile_cell_indices_off', - 'type': 'DWORD', - 'off': 0x001C, - 'label': 'Door tile cell indices offset' }, - - ) - - self.overlay_desc = ( - { 'key': 'width', - 'type': 'WORD', - 'off': 0x0000, - 'label': 'Width'}, - - { 'key': 'height', - 'type': 'WORD', - 'off': 0x0002, - 'label': 'Height'}, - - { 'key': 'tileset', - 'type': 'RESREF', - 'off': 0x0004, - 'label': 'Tileset'}, - - { 'key': 'unknown_0C', - 'type': 'DWORD', - 'off': 0x000C, - 'label': 'Unknown 0C'}, - - { 'key': 'tilemap_off', - 'type': 'DWORD', - 'off': 0x0010, - 'label': 'Offset to tilemap'}, - - { 'key': 'tile_index_lookup_off', - 'type': 'DWORD', - 'off': 0x0014, - 'label': 'Offset to tile index lookup'}, - - ) - - - - def decode_file (self): - self.decode_header () - - off = self.header['overlay_off'] - for i in range (self.header['overlay_cnt']): - obj = {} - self.decode_overlay (off, obj) - self.overlay_list.append (obj) - off = off + 24 - - - - def print_file (self): - self.print_header () - - i = 0 - for obj in self.overlay_list: - print 'Overlay #%d' %i - self.print_overlay (obj) - i = i + 1 - - - def decode_header (self): - self.header = {} - self.decode_by_desc (0x0000, self.header_desc, self.header) - - def print_header (self): - self.print_by_desc (self.header, self.header_desc) - - - def decode_overlay (self, offset, obj): - self.decode_by_desc (offset, self.overlay_desc, obj) - - def print_overlay (self, obj): - self.print_by_desc (obj, self.overlay_desc) - - -register_format ('WED', 'V1.3', WED_Format) Copied: ie_shell/trunk/ie_shell/formats/wed.py (from rev 5095, ie_shell/trunk/formats/wed.py) =================================================================== --- ie_shell/trunk/ie_shell/formats/wed.py (rev 0) +++ ie_shell/trunk/ie_shell/formats/wed.py 2008-02-27 12:41:00 UTC (rev 5096) @@ -0,0 +1,418 @@ +# -*-python-*- +# ie_shell.py - Simple shell for Infinity Engine-based game files +# Copyright (C) 2004 by Jaroslav Benkovsky, <edh...@us...> +# +# 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. + +# RCS: $Id: wed.py,v 1.1 2006/07/08 14:29:27 edheldil Exp $ + +from ie_shell.formats.format import Format, register_format, core + +class WED_Format (Format): + def __init__ (self, filename): + Format.__init__ (self, filename) + self.expect_signature = 'WED' + + self.secondary_header = {} + self.overlay_list = [] + self.door_list = [] + + self.header_desc = ( + { 'key': 'signature', + 'type': 'STR4', + 'off': 0x0000, + 'label': 'Signature' }, + + { 'key': 'version', + 'type': 'STR4', + 'off':0x0004, + 'label': 'Version'}, + + { 'key': 'overlay_cnt', + 'type': 'DWORD', + 'off': 0x0008, + 'label': '# of overlays' }, + + { 'key': 'door_cnt', + 'type': 'DWORD', + 'off': 0x000C, + 'label': '# of doors' }, + + { 'key': 'overlay_off', + 'type': 'DWORD', + 'off': 0x0010, + 'label': 'Overlay offset' }, + + { 'key': 'secondary_header_off', + 'type': 'DWORD', + 'off': 0x0014, + 'label': 'Secondary headers offset' }, + + { 'key': 'door_off', + 'type': 'DWORD', + 'off': 0x0018, + 'label': 'Doors offset' }, + + { 'key': 'door_tile_cell_indices_off', + 'type': 'DWORD', + 'off': 0x001C, + 'label': 'Door tile cell indices offset' }, + + ) + + self.overlay_desc = ( + { 'key': 'width', + 'type': 'WORD', + 'off': 0x0000, + 'label': 'Width'}, + + { 'key': 'height', + 'type': 'WORD', + 'off': 0x0002, + 'label': 'Height'}, + + { 'key': 'tileset', + 'type': 'RESREF', + 'off': 0x0004, + 'label': 'Tileset'}, + + { 'key': 'unknown_0C', + 'type': 'DWORD', + 'off': 0x000C, + 'label': 'Unknown 0C'}, + + { 'key': 'tilemap_off', + 'type': 'DWORD', + 'off': 0x0010, + 'label': 'Offset to tilemap'}, + + { 'key': 'tile_index_lookup_off', + 'type': 'DWORD', + 'off': 0x0014, + 'label': 'Offset to tile index lookup'}, + + ) + + self.secondary_header_desc = ( + { 'key': 'polygon_cnt', + 'type': 'DWORD', + 'off': 0x0000, + 'label': '# of polygons'}, + + { 'key': 'polygon_off', + 'type': 'DWORD', + 'off': 0x0004, + 'label': 'Polygons offset'}, + + { 'key': 'vertex_off', + 'type': 'DWORD', + 'off': 0x0008, + 'label': 'Vertices offset'}, + + { 'key': 'wallgrp_off', + 'type': 'DWORD', + 'off': 0x000C, + 'label': 'Wall groups offset'}, + + { 'key': 'polygon_lut_off', + 'type': 'DWORD', + 'off': 0x0010, + 'label': 'Polygon indices LUT offset'}, + + ) + + self.door_desc = ( + { 'key': 'door_name', + 'type': 'STR8', + 'off': 0x0000, + 'label': 'Door name'}, + + { 'key': 'unknown_08', + 'type': 'WORD', + 'off': 0x0008, + 'label': 'Unknown 08'}, + + { 'key': 'door_tile_cell_ndx', + 'type': 'WORD', + 'off': 0x000A, + 'label': 'First door tile cell index'}, + + { 'key': 'door_tile_cell_cnt', + 'type': 'WORD', + 'off': 0x000C, + 'label': 'Door tile cell count'}, + + { 'key': 'open_door_poly_cnt', + 'type': 'WORD', + 'off': 0x000E, + 'label': '# of open door polygons'}, + + { 'key': 'closed_door_poly_cnt', + 'type': 'WORD', + 'off': 0x0010, + 'label': '# of closed door polygons'}, + + { 'key': 'open_door_poly_off', + 'type': 'DWORD', + 'off': 0x0012, + 'label': 'Offset of open door polygons'}, + + { 'key': 'closed_door_poly_off', + 'type': 'DWORD', + 'off': 0x0016, + 'label': 'Offset of closed door polygons'}, + + ) + + self.tilemap_desc = ( + { 'key': 'tile_index_lut_ndx', + 'type': 'WORD', + 'off': 0x0000, + 'label': 'Primary tile index LUT start index'}, + + { 'key': 'tile_index_lut_cnt', + 'type': 'WORD', + 'off': 0x0002, + 'label': '# of tiles in primary tile index LUT'}, + + { 'key': 'secondary_tis_index', + 'type': 'WORD', + 'off': 0x0004, + 'label': 'Index from TIS (secondary)'}, + + { 'key': 'overlay_mask', + 'type': 'BYTE', + 'off': 0x0006, + 'label': 'Mask of drawn overlays'}, + + { 'key': 'unknown_07', + 'type': 'BYTES', + 'off': 0x0007, + 'size': 3, + 'label': 'Unknown 07'}, + + ) + + # Door tile cells desc + + # Tile index lookup table desc + + self.wallgroup_desc = ( + { 'key': 'polygon_ndx', + 'type': 'WORD', + 'off': 0x0000, + 'label': 'Start polygon index'}, + + { 'key': 'polygon_cnt', + 'type': 'WORD', + 'off': 0x0002, + 'label': '# of Polygon'}, + + ) + + self.polygon_desc = ( + { 'key': 'vertex_ndx', + 'type': 'DWORD', + 'off': 0x0000, + 'label': 'Start vertex index'}, + + { 'key': 'vertex_cnt', + 'type': 'DWORD', + 'off': 0x0004, + 'label': '# of vertices'}, + + { 'key': 'flags', + 'type': 'BYTE', + 'off': 0x0008, + 'mask': { + 0x01: 'shade wall', + 0x02: 'hovering', + 0x04: 'cover anims', + 0x08: 'cover anims 2', + 0x10: 'unknown 4', + 0x20: 'unknown 5', + 0x40: 'unknown 6', + 0x80: 'door?', + }, + 'label': 'Passability flags'}, + + { 'key': 'unknown_09', + 'type': 'BYTE', + 'off': 0x0009, + 'label': 'Unknown 09'}, + + { 'key': 'bbox_x1', + 'type': 'WORD', + 'off': 0x000A, + 'label': 'Bounding box X min'}, + + { 'key': 'bbox_x2', + 'type': 'WORD', + 'off': 0x000C, + 'label': 'Bounding box X max'}, + + { 'key': 'bbox_y1', + 'type': 'WORD', + 'off': 0x000E, + 'label': 'Bounding box Y min'}, + + { 'key': 'bbox_y2', + 'type': 'WORD', + 'off': 0x0010, + 'label': 'Bounding box Y max'}, + + ) + + # Polygon index LUT desc + + self.vertex_desc = ( + { 'key': 'x', + 'type': 'WORD', + 'off': 0x0000, + 'label': 'X'}, + + { 'key': 'y', + 'type': 'WORD', + 'off': 0x0002, + 'label': 'Y'}, + + ) + + def decode_file (self): + self.decode_header () + self.decode_secondary_header (self.header['secondary_header_off'], self.secondary_header) + + off = self.header['overlay_off'] + for i in range (self.header['overlay_cnt']): + obj = {} + self.decode_overlay (off, obj) + self.overlay_list.append (obj) + off = off + 24 + + off = self.header['door_off'] + for i in range (self.header['door_cnt']): + obj = {} + self.decode_door (off, obj) + self.door_list.append (obj) + off = off + 26 + + + + def print_file (self): + self.print_header () + self.print_secondary_header () + + i = 0 + for obj in self.overlay_list: + print 'Overlay #%d' %i + self.print_overlay (obj) + i = i + 1 + + i = 0 + for obj in self.door_list: + print 'Door #%d' %i + self.print_door (obj) + i = i + 1 + + + def decode_header (self): + self.header = {} + self.decode_by_desc (0x0000, self.header_desc, self.header) + + def print_header (self): + self.print_by_desc (self.header, self.header_desc) + + + def decode_secondary_header (self, offset, obj): + self.decode_by_desc (offset, self.secondary_header_desc, obj) + + def print_secondary_header (self): + self.print_by_desc (self.secondary_header, self.secondary_header_desc) + + + def decode_overlay (self, offset, obj): + self.decode_by_desc (offset, self.overlay_desc, obj) + + def print_overlay (self, obj): + self.print_by_desc (obj, self.overlay_desc) + + + def decode_door (self, offset, obj): + self.decode_by_desc (offset, self.door_desc, obj) + + obj['open_door_poly_list'] = [] + off = obj['open_door_poly_off'] + for i in range (obj['open_door_poly_cnt']): + obj2 = {} + self.decode_polygon (off, obj2) + obj['open_door_poly_list'].append (obj2) + off = off + 3... [truncated message content] |
From: <edh...@us...> - 2008-02-27 13:07:05
|
Revision: 5097 http://gemrb.svn.sourceforge.net/gemrb/?rev=5097&view=rev Author: edheldil Date: 2008-02-27 05:07:05 -0800 (Wed, 27 Feb 2008) Log Message: ----------- Added Paths: ----------- ie_shell/trunk/examples/ Removed Paths: ------------- ie_shell/trunk/examples/builtins.py ie_shell/trunk/examples/core.py Copied: ie_shell/trunk/examples (from rev 5094, ie_shell/trunk/plugins) Deleted: ie_shell/trunk/examples/builtins.py =================================================================== --- ie_shell/trunk/plugins/builtins.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/examples/builtins.py 2008-02-27 13:07:05 UTC (rev 5097) @@ -1,148 +0,0 @@ -#-*-python-*- - -import os.path - -from plugins import core -from formats.stream import ResourceStream, FileStream - -################################################### -def load_game (game_dir, chitin_file = core.chitin_file, dialog_file = core.dialog_file): - """Loads key and dialog files from the specified directory. - The directory parameter is mandatory, the others are optional. - Most of the other commands assume that these two files are - already loaded. The loaded objects are stored in core.keys and - core.strrefs.""" - - core.game_dir = game_dir - core.chitin_file = chitin_file - core.dialog_file = dialog_file - - # Load RESREF index file (CHITIN.KEY) - core.keys = core.get_format ('KEY') (os.path.join (game_dir, chitin_file)) - core.keys.decode_header () - print "Loading %d file refs and %d RESREFs. This may take ages" %(core.keys.header['num_of_bifs'], core.keys.header['num_of_resrefs']) - core.keys.decode_file () - - - # LOAD STRREF index file (DIALOG.TLK) - core.strrefs = core.get_format ('TLK') (os.path.join (game_dir, dialog_file)) - core.strrefs.decode_header () - print "Loading %d STRREFs. This may take eternity" %(core.strrefs.header['num_of_strrefs']) - core.strrefs.decode_file () - - -################################################### -def load_object (name, type = None): - - try: - fh = open (name) - except: - fh = None - - if fh: - fh.close () - return FileStream(name).load_object () - else: - return ResourceStream(name, type).load_object () - - -################################################### -def find_str (text): - """Finds all strings in loaded DIALOG.TLK file matching regular expression - and prints their STRREFs""" - - for o in core.strrefs.get_strref_by_str_re(text): - print core.strrefs.strref_list.index(o), o['string'] - -################################################### -def export_obj (name, filename, type = None, index = 0): - """Exports resource `name' into file `filename'. If the `name' is not - unique, specify resource type with `type' and eventually `index' if - there's still more than one""" - - oo = core.keys.get_resref_by_name_re(name) - if type != None: - oo = filter (lambda o: o['type'] == type, oo) - - if len (oo) > 1 and type == None: - print "More than one result" - return - - o = oo[index] - - src_file = core.keys.bif_list[o['locator_src_ndx']] - b = core.formats['BIFF'] (os.path.join (core.game_dir, src_file['file_name'])) - b.decode_file () - b.save_file_data (filename, b.file_list[o['locator_ntset_ndx']]) - - -################################################### -def iterate_objects_by_type (type, fn): - - # FIXME: this function opens and decodes a bif file EACH time some - # object from it is accessed, so it's slow as hell. It should use - # some caching - - #def resref_to_obj (res): - # print res['resref_name'] - # return ResourceStream (res['resref_name'], type).load_object () - - for res in filter (lambda res: res['type'] == type, core.keys.resref_list): - print res['resref_name'] - obj = ResourceStream (res['resref_name'], type).load_object () - fn (obj) - - -################################################### -def sprintf (format_str, params): - return format_str %(params) - -def printf (format_str, params): - print sprintf (format_str, params) - -def loaded_object (obj): - obj.decode_file () - return obj - -################################################### -def pok(): - def p (obj): - obj.decode_file () - obj.print_file () - - iterate_objects_by_type (0x03ed, p) - -################################################### -def load_ids (): - def p (obj): - obj.decode_file () - print obj.stream.resref - #obj.print_file () - - iterate_objects_by_type (0x03f0, p) - -################################################### -def get_restype_stats (): - stats = {} - for o in core.keys.resref_list: - if not stats.has_key (o['type']): - stats[o['type']] = 1 - else: - stats[o['type']] = stats[o['type']] + 1 - - return stats - - -################################################### -def print_restype_stats (): - stats = get_restype_stats () - for s in stats.keys (): - if core.restype_hash.has_key (s): - type = core.restype_hash[s] - else: - type = '??' - print "0x%04x (%s):\t%5d" %(s, type, stats[s]) - - -################################################### -# End of file builtins.py Deleted: ie_shell/trunk/examples/core.py =================================================================== --- ie_shell/trunk/plugins/core.py 2008-02-27 01:46:25 UTC (rev 5094) +++ ie_shell/trunk/examples/core.py 2008-02-27 13:07:05 UTC (rev 5097) @@ -1,177 +0,0 @@ -# -*-python-*- - -import string - - -global formats -formats = {} - -global strrefs -strrefs = None - -global keys -keys = None - -global options -options = {} - -# Loaded IDS files -global ids -ids = {} - -game_dir = None -chitin_file = 'CHITIN.KEY' -dialog_file = 'dialog.tlk' - -xor_key = "\x88\xa8\x8f\xba\x8a\xd3\xb9\xf5\xed\xb1\xcf\xea\xaa\xe4\xb5\xfb\xeb\x82\xf9\x90\xca\xc9\xb5\xe7\xdc\x8e\xb7\xac\xee\xf7\xe0\xca\x8e\xea\xca\x80\xce\xc5\xad\xb7\xc4\xd0\x84\x93\xd5\xf0\xeb\xc8\xb4\x9d\xcc\xaf\xa5\x95\xba\x99\x87\xd2\x9d\xe3\x91\xba\x90\xca" - - -global slash_trans -slash_trans = string.maketrans ('\\', '/') - -t_cp1250 = '\xE1\xE8\xEF\xE9\xEC\xED\xF2\xF3\xF8\x9A\x9D\xFA\xF9\xFD\x9E\xC1\xC8\xCF\xC9\xCC\xCD\xD2\xD3؊\x8D\xDA\xD9ݎ' -t_iso8859_2 = '\xE1\xE8\xEF\xE9\xEC\xED\xF2\xF3\xF8\xB9\xBB\xFA\xF9\xFD\xBE\xC1\xC8\xCF\xC9\xCC\xCD\xD2\xD3ة\xAB\xDA\xD9ݮ' - -global lang_trans -lang_trans = string.maketrans (t_cp1250, t_iso8859_2) - -def translate_to_iso (s): - return string.translate (s, lang_trans) - -def cond (c, a, b): - if c: return a - else: return b - -def translate_to_ord (s): - return map (lambda c: (cond (ord (c) < 128, c, "\\x%02X" %(ord (c))), s)) - -restype_list = [ - [0x0001, 'BMP', ''], - [0x0002, 'MVE', ''], - [0x0004, 'WAV', ''], - [0x0004, 'WAVC', ''], - [0x0005, 'WFX', ''], - [0x0006, 'PLT', ''], - [0x03e8, 'BAM', ''], - [0x03e8, 'BAMC', ''], - [0x03e9, 'WED', ''], - [0x03ea, 'CHUI', ''], - [0x03eb, 'TIS', ''], - [0x03ec, 'MOS', ''], - [0x03ec, 'MOSC', ''], - [0x03ed, 'ITM', ''], - [0x03ee, 'SPL', ''], - [0x03ef, 'BCS', ''], - [0x03f0, 'IDS', ''], - [0x03f1, 'CRE', ''], - [0x03f2, 'ARE', ''], - [0x03f3, 'DLG', ''], - [0x03f4, '2DA', ''], - [0x03f5, 'GAME', ''], - [0x03f6, 'STOR', ''], - [0x03f7, 'WMAP', ''], - [0x03f8, 'CHR', ''], - [0x03f8, 'EFF', ''], - [0x03f9, 'BS', ''], - [0x03fa, 'CHR', ''], - [0x03fb, 'VVC', ''], - [0x03fc, 'VEF', ''], - [0x03fd, 'PRO', ''], - [0x03fe, 'BIO', ''], - [0x044c, 'BAH', ''], - [0x0802, 'INI', ''], - [0x0803, 'SRC', ''], - ] - -restype_hash = { - 0x0001 : 'BMP', - 0x0002 : 'MVE', - 0x0004 : 'WAV', # also WAVC - 0x0005 : 'WFX', - 0x0006 : 'PLT', - 0x03e8 : 'BAM', # also BAMC - 0x03e9 : 'WED', - 0x03ea : 'CHUI', - 0x03eb : 'TIS', - 0x03ec : 'MOS', # also MOSC - 0x03ed : 'ITM', - 0x03ee : 'SPL', - 0x03ef : 'BCS', - 0x03f0 : 'IDS', - 0x03f1 : 'CRE', - 0x03f2 : 'ARE', - 0x03f3 : 'DLG', - 0x03f4 : '2DA', - 0x03f5 : 'GAME', - 0x03f6 : 'STOR', - 0x03f7 : 'WMAP', - 0x03f8 : 'CHR', # also EFF - 0x03f9 : 'BS', - 0x03fa : 'CHR', - 0x03fb : 'VVC', - 0x03fc : 'VEF', - 0x03fd : 'PRO', - 0x03fe : 'BIO', - 0x044c : 'BAH', - 0x0802 : 'INI', - 0x0803 : 'SRC', - } - -restype_rev_hash = { - '2DA' : 0x03f4, - 'ARE' : 0x03f2, - 'BAH' : 0x044c, - 'BAM' : 0x03e8, - 'BAMC' : 0x03e8, - 'BCS' : 0x03ef, - 'BIO' : 0x03fe, - 'BMP' : 0x0001, - 'BS' : 0x03f9, - 'CHR' : 0x03fa, - #'CHR' : 0x03f8, - 'CHUI' : 0x03ea, - 'CRE' : 0x03f1, - 'DLG' : 0x03f3, - 'EFF' : 0x03f8, - 'GAME' : 0x03f5, - 'IDS' : 0x03f0, - 'INI' : 0x0802, - 'ITM' : 0x03ed, - 'MOS' : 0x03ec, - 'MOSC' : 0x03ec, - 'MVE' : 0x0002, - 'PLT' : 0x0006, - 'PRO' : 0x03fd, - 'SPL' : 0x03ee, - 'SRC' : 0x0803, - 'STOR' : 0x03f6, - 'TIS' : 0x03eb, - 'VEF' : 0x03fc, - 'VVC' : 0x03fb, - 'WAV' : 0x0004, - 'WAVC' : 0x0004, - 'WED' : 0x03e9, - 'WFX' : 0x0005, - 'WMAP' : 0x03f7, - } - - -def register_format (signature, version, klass): - #core.formats[(signature, version)] = klass - formats[signature] = klass - - -def get_format (signature, version = None): - try: - return formats[signature] - except: - return None - - -def get_format_by_type (type): - try: - signature = restype_hash[type] - return get_format (signature) - except: - return None - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <edh...@us...> - 2008-02-27 13:09:27
|
Revision: 5098 http://gemrb.svn.sourceforge.net/gemrb/?rev=5098&view=rev Author: edheldil Date: 2008-02-27 05:09:29 -0800 (Wed, 27 Feb 2008) Log Message: ----------- Moved things a bit Added Paths: ----------- ie_shell/trunk/examples.py ie_shell/trunk/iesh ie_shell/trunk/setup.py Removed Paths: ------------- ie_shell/trunk/plugins/ Added: ie_shell/trunk/examples.py =================================================================== --- ie_shell/trunk/examples.py (rev 0) +++ ie_shell/trunk/examples.py 2008-02-27 13:09:29 UTC (rev 5098) @@ -0,0 +1 @@ +iterate_objects_by_type(0x03f1, lambda obj: printf("%04x", loaded_object(obj).header['animation_id'])) Copied: ie_shell/trunk/iesh (from rev 5094, ie_shell/trunk/ie_shell.py) =================================================================== --- ie_shell/trunk/iesh (rev 0) +++ ie_shell/trunk/iesh 2008-02-27 13:09:29 UTC (rev 5098) @@ -0,0 +1,220 @@ +#!/usr/bin/env python +# iesh / ie_shell.py - Simple shell for Infinity Engine-based game files +# Copyright (C) 2004-2008 by Jaroslav Benkovsky, <edh...@us...> +# +# 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. + +# RCS: $Id: ie_shell.py,v 1.5 2006/07/03 18:15:34 edheldil Exp $ + +import atexit +import os +import os.path +import rlcompleter +import readline +import sys +import traceback + +from ie_shell import core +from ie_shell.builtins import * + +from ie_shell.formats import * +from ie_shell.formats.stream import * + +################################################### +## list of commands to be executed before eventual user's input +commands = [] + +## current indentation for compound commands +indent = "" + +## current comound command if non-empty +compound_command = "" + +################################################### +def help_on_shell (): + print """ + This is basically a python shell, meaning that the commands you enter + are mostly python commands and statements. Compound commands have + to be terminated by an empty line. + + Use TAB to complete commands, object, attribute or method names, etc. + Use UP or DOWN cursor keys to navigate in command history + Use LEFT or RIGHT cursor keys to edit current command + Use ^R to search in command history + + Some notable commands: + load_game ("/home/ed/pst", "CHITIN.KEY", "dialog.tlk") + Loads key and dialog files from the specified directory. + The directory parameter is mandatory, the others are optional. + Most of the other commands assume that these two files are + already loaded. The loaded objects are stored in core.keys and + core.strrefs. + + load_object ("data/AGOODY.itm") + load_object ("AGOODY") + tries to find and load object from a file or resources. + Returns format object, so the object type has to be supported + + find_str ("^(?i)gemrb") + List strrefs for all strings starting with word GemRB, regardless + of case + + export_obj ("GUICG", "GUICG.chu") + Try to find resource GUICG and export it to file GUICG.chu. + If the name is not unique, add third parameter, + e.g. type=0x03ea to restrict the resource type + + c = chui.CHUI_Format ("GUISAVE.chu") + c.decode_file () + c.print_file () + loads file GUISAVE.chu from the current dir, decodes it + and prints its contents + + key.KEY_Format + tlk.TLK_Format + biff.BIFF_Format + + bam.BAM_Format + chui.CHUI_Format + cre.CRE_Format (only parts) + ids.IDS_Format + itm.ITM_Format + spl.SPL_Format (NOT WORKING!) + wmap.WMAP_Format + + core.keys.print_bif_record (core.keys.bif_list[0]) + core.strrefs.print_strref_record (core.strrefs.strref_list[0]) + print first records from chitin.key or dialog.tlk file + + !shell_cmd + Runs command shell_cmd in your native shell. Useful to list + files on disk, for example. + + quit + Exit the shell. + + """ + + +################################################### +def read_command_file (filename, add_quit = False): + try: fh = open (filename) + except: return False + + commands.extend (map (lambda s: s.rstrip ("\n\r"), fh.readlines ())) + + if add_quit: + commands.append ("quit") + + return True + +################################################### +def read_command (prompt): + if len (commands) != 0: + return commands.pop (0) + else: + return raw_input (prompt) + +################################################### +def readline_init (): + # Just enable history and tab completion for the command line + readline.parse_and_bind ("tab: complete") + histfile = os.path.join (os.environ["HOME"], ".iesh_history") + try: + readline.read_history_file (histfile) + except IOError: + pass + + atexit.register (readline.write_history_file, histfile) + del histfile + readline.set_pre_input_hook (readline_hook) + +################################################### +def readline_hook (): + readline.insert_text (indent) + readline.redisplay () + + +################################################### +################################################### +# main +################################################### + +# +# If the program is run with a file parameter, the contents of +# the file are executed and the program quits. +# If it's run without arguments, the program loads and executes +# profile file and starts interactive command prompt +# + +if len (sys.argv) > 1: + res = read_command_file (sys.argv[1], True) + if not res: + print "Can't read input file: %s" %sys.argv[1] + sys.exit (1) +else: + readline_init () + read_command_file (os.path.join (os.environ["HOME"], ".iesh_profile")) + print "\n\nType `help' to print a short help, `quit' or ^D to exit the shell\n" + +# +# Main command processing loop +# + +while 1: + prompt = "Cmd: " + if compound_command != '': + prompt = ".... " + + #s = raw_input (prompt) + s = read_command (prompt) + + indent = s[0:(len (s) - len (s.lstrip ()))] + + if s.endswith (":"): + indent = indent + " " + + if (s != '' and compound_command != '') or s.endswith (":"): + compound_command = compound_command + "\n" + s + continue + + # zero-length input ends compound commands + if s == '' and compound_command != '': + s = compound_command + compound_command = '' + + + if s == 'q' or s == 'quit': + break + + if s == '?' or s == 'help': + help_on_shell () + continue + + if s.startswith ('!'): + os.system (s[1:]) + continue + + try: + exec (s) + except: + print "\n*** Exception in command ***\n" + traceback.print_exc () + print + + +################################################### +# End of file iesh + Added: ie_shell/trunk/setup.py =================================================================== --- ie_shell/trunk/setup.py (rev 0) +++ ie_shell/trunk/setup.py 2008-02-27 13:09:29 UTC (rev 5098) @@ -0,0 +1,21 @@ +#!/usr/bin/env python + +from distutils.core import setup +import glob + +setup (name = 'ie_shell', + version = '0.0.3', + description = """ +Python shell and modules for exploration, searching and processing +of data files of Infinity Engine-based games +(Baldur's Gate, Icewind Dale, Planescape: Torment)""", + author = 'Jarda Benkovsky', + author_email = 'edh...@us...', + url = 'http://www.eowyn.cz/ie_shell', + scripts = ['iesh'], + packages = ['ie_shell', 'ie_shell.formats'], + data_files = [ + ('share/doc/ie_shell', ['README', 'COPYING']), + ('share/doc/ie_shell/examples', glob.glob ('examples/*.py')), + ]) + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |