From 22ed62008497e3184dce9201e2071709d0e1f6db Mon Sep 17 00:00:00 2001 From: Wanne Date: Fri, 3 Oct 2014 10:29:19 +0000 Subject: [PATCH] Essence XWnd Shell - Tool (Version: (2014.09.28) ver 0.01 rev 011 build 14271) (by StaticZ) - This tool can upscale and use different graphic filters to display JA2 1.13 with better graphics - For more infos see "Tools\ExShell\read_me.txt" - Additional infos and screenshot results (for different filters) on the Bears Pit: http://www.ja-galaxy-forum.com/ubbthreads.php/topics/336350/1 - INFO: Using upscaling and filters improves the graphics, but on the other side slows down the game!! git-svn-id: https://ja2svn.mooo.com/source/ja2_v1.13_data@2160 4f8fa57e-7814-0410-bad4-adc449f26b7c --- gamedir/Tools/ExShell/exshell.ecd | 166 ++++++++++++++++++++++++++++++ gamedir/Tools/ExShell/read_me.txt | 141 +++++++++++++++++++++++++ 2 files changed, 307 insertions(+) create mode 100644 gamedir/Tools/ExShell/exshell.ecd create mode 100644 gamedir/Tools/ExShell/read_me.txt diff --git a/gamedir/Tools/ExShell/exshell.ecd b/gamedir/Tools/ExShell/exshell.ecd new file mode 100644 index 000000000..a6c68d455 --- /dev/null +++ b/gamedir/Tools/ExShell/exshell.ecd @@ -0,0 +1,166 @@ +~ EssenceUCS: uoconfig.ecd ===== +~ Encoding: only UTF-8 without BOM !!! ===== +$unknown: OFF ~ !! Don't remove this... ===== +~ ===================================================================================== + +~ Using sections (exshell will look for walues in this sections in left-to right order) +$LoadProfile: { "ShellOptions", "EXSProfile01", "DefaultConf" } +~$LoadProfile: { "ShellOptions", "EXSProfile02", "DefaultConf" } + +~ WARNING: This version supported only DirectDraw2 with screen mode 16 bpp (555 or 565). + +~ ===================================================================================== +[EXSProfile01] ~ Jagged Alliance 2: 1.13 ===== +~ ===================================================================================== + +$StartPEPath: "C:\Jagged Alliance 2 1.13\ja2.exe" +$StartPEArgs: "" + + +~ ===================================================================================== +[DefaultConf] ~ Default configuration for all profiles ===== +~ ===================================================================================== + +$StartPEPath: "game.exe" +$StartPEArgs: "-nomovie" + +~ 0 - OFF, value is bit mask for allowed CPU cores, use to solve problems with multi core. +~ (i.e. #0001 - 1st core, #0002 - 2nd core, #0004 - 3rd core, #0008 - 4yh core and so on) +$CPUAffinity: #0001 + +~ Offset to application entry point (WinMain procedure, it's not same for PE entry point) +~ use "no" or #00000000 value to allow exshell found it itself. Using incorrect offset will +~ cause problems with exshell loading or application crashing. If you get such problems +~ try to set offset manually (it's rather easy to find it throw disassembler, like IDA). +~ Note: take attention that this offset usually differs for each executable file, so if +~ you get it from somewhere check executable version and checksum to be sure that it's +~ really extracted from same executable file. +$WinMainOffs: NO + +~ By default exshell capture image from 1st created window. But as few applications create +~ several windows (notice that they can be invisible) you possibly will be required to use +~ another one. To do this you will need caption text. Notice, that it can be not constant +~ value, so in this case better use window class name. 1st argument - window class name, +~ 2nd - window caption. If both of them are defined then exshell will search window that +~ satisfy both conditions. You can set 1st or\and 2rd parameter to NO to disable filter. +~ 3rd parameter - new window caption, if you want to replace original one. To keep original +~ one use value NO. +~ NOTE: To get list of creating window classes and captions run your application and look +~ in console output (See keys $UseDebugMod, $ShowConsole, $ConsoleWPal, $ConsoleWait). +$ApplCaption: { NO, NO, NO } + +~ 0 - OFF, value in ms for pause (normally values more 1 ms not recommended to use, though +~ in some cases can be used for slowing game). Use it if application always load 100% cpu. +$MainLoopLow: 1 + +~ If true use mouse cursor clipper inside game window client area. This means that it will +~ be impossible to move cursor out of window until it has focus. +$ClipMCursor: YES ~ NOTE: NOT IMPLEMENTED !! + +~ Set limit for screen update, use this to reduce CPU usage. Value NO or 0 means that there +~ are no limitation in exshell, but notice that running application can have own FPS limit. +~ Set value to YES to use VSYNC (Only for DirectDraw, for GDI it will be same as NO value) +$FPSMaxLimit: 60 + +~ 1st and 2nd parameters - Original full screen game mode (it's not real window size) +~ 3rd parameter - color mode (for 16 bit commonly used 555 or 565, for 24\32 - 888, +~ for 256 color mode use value 0). +$FScreenMode: { 800, 600, 555 } ~ NOTE: 8\24\32 BIT MODES NOT IMPLEMENTED !! + +~ Real window settings (it can be larger then application resolution): +~ 1st parameter - if TRUE window will have border, if FALSE then it will be created without it. +~ 2nd and 3rd parameters - window client area size (width and height). NOTE: if you use border, +~ real window sizes will be larger. Exactly border sizes depending on OS version and used theme. +~ 4th and 5th parameters - initial position for top-left corner of a window (X, Y) +~ 6th parameter - window background color (in R8G8B8 format) +$WindowFrame: { YES, 1600, 1200, 0, 0, #008080 } + +~ 1st parameter - Bliter type (render method): +~ 1 - GDI +~ 2 - Direct2D ~ NOTE: NOT IMPLEMENTED !! +~ 2nd parameter - Interpolation method: +~ 0 - None +~ 3rd parameter - Image position (in case if it occupies only part of the screen) +~ 1 - draw image at bottom-left corner of the screen +~ 2 - draw image at screen bottom, on the center for width +~ 3 - draw image at bottom-right corner of the screen +~ 4 - draw image at screen left, on the center for height +~ 5 - align image on screen center (recommended) +~ 6 - draw image at screen right, on the center for height +~ 7 - draw image at top-left corner of the screen +~ 8 - draw image at screen top, on the center for width +~ 9 - draw image at top-right corner of the screen +~ 4th parameter - Output source image scaling type: +~ 0 - don't change size (it doesn't influence size change by the scaletype filter) +~ 1 - stretch with saving aspect ratio. +~ 2 - stretch to window size with saving aspect ratio (cutting sides). +~ 3 - stretch to window size. +$UsingBliter: { 1, 0, 5, 1 } + +~ Using filters for capture image. You can use any number of filters you want, they will be +~ applied in order they are declared. The output result of filter will become input data for +~ next filter. At least one filter must be declared (if you want get original image use "None" +~ filter). Note: all filters must be declare in one section, otherwise they will be skipped. +~ Don't declare filters before $UsingBliter key, otherwise they will be skipped. +~ 1st parameter - upscale type (add #2000 for 2x, #3000 for 3x, #4000 for 4x, if supported): +~ #00 - None [ ] - don't use upscale filter (1x) +~ #01 - Simple [2x 3x 4x] - fastest, no smoothing, no filtering +~ #02 - Pixelate [2x 3x 4x] - retro style +~ #03 - Scanlines [2x ] - retro style +~ #04 - ScanlinesTV [2x ] - retro style +~ #05 - MotionBlur [2x ] - blur effect for screen update +~ #10 - 2xSaI [2x ] +~ #11 - SuperEagle [2x ] +~ #12 - Super2xSaI [2x ] +~ #13 - AdMame [2x ] - RECOMENDED! (best speed for good quality) +~ #20 - lq [2x ] +~ #21 - hq [2x ] +~ #22 - xbra [2x 3x 4x] +~ #23 - xbrb [2x 3x 4x] +~ #24 - xbrc [2x 3x 4x] +~ #01 - GrayScale [- - - ] - Convert colors to gray tons. +~ ??? - Scale2xSaI, Bilinear, BilinearPlus +~ NOTE: keys can contain addition parameters, depending on using filter (see description above). +~ $ImageFilter: #0001 +$ImageFilter: #2022 + + +~ ===================================================================================== +[ShellOptions] ~ EXShell global options ===== +~ ===================================================================================== + +$UseLanguage: "RU" ~ LangCode from entries in Localisation section + +$UseDebugMod: YES ~ Disable all debug staff (OSD, console and other) + +~ enable, toffx, toffy, font, lfWeight [1..9, 4 -default, 7 - bold], lfHeight, texth, tcolr, fsize, fcolr +$ShowOSDMenu: { YES, 30, 60, "Courier", 7, 18, 20, #B4B4B4, TRUE, #000000 } + +~ enable, x, y, width, height, buggerW, buggerH, font, family, fontW, fontH, CP +$ShowConsole: { YES, 0, 0, #C0DE, 1006, 87, 4096, "Consolas", #00, 9, 26, 1251 } + +$ConsoleWPal: { ~ 16 color RGB palette +~ #000000, #000080, #008000, #008080, #800000, #800080, #808000, #C0C0C0, ~ Default Windows +~ #808080, #0000FF, #00FF00, #00FFFF, #FF0000, #FF00FF, #FFFF00, #FFFFFF + + #000000, #000080, #008000, #008080, #800000, #800080, #808000, #C0C0C0, ~ Essence Theme + #808080, #0000FF, #00FF00, #00FFFF, #FF0000, #FF00FF, #FFFF00, #FFFFFF +} + +$ConsoleWait: NO ~ Pause console log at process termination + + +~ ===================================================================================== +[Localisation] ~ List for known locals ===== +~ ===================================================================================== +~ Note: Don't rename this section and never use localised strings here!!! +~ format: LangCode (2 chars only), ANSI_CP, OEM_CP, Charset +~ for default values, 1st argument is missed. + +$elangcodepage:{ 1251, 850, 0 } ~ Default +$elangcodepage:{ "EN", 1250, 850, 0 } ~ English +$elangcodepage:{ "RU", 1251, 866, 204 } ~ Русский +$elangcodepage:{ "SP", 1252, 850, 0 } ~ Espanol +$elangcodepage:{ "GE", 1252, 850, 0 } ~ Deutsch +$elangcodepage:{ "IT", 1253, 850, 0 } ~ Italiano +$elangcodepage:{ "FR", 1253, 850, 0 } ~ Francais diff --git a/gamedir/Tools/ExShell/read_me.txt b/gamedir/Tools/ExShell/read_me.txt new file mode 100644 index 000000000..4b405a666 --- /dev/null +++ b/gamedir/Tools/ExShell/read_me.txt @@ -0,0 +1,141 @@ + ______ ______ ______ ______ __ __ ______ ______ + /\ ___\ /\ ___\ /\ ___\ /\ ___\ /\ "-.\ \ /\ ___\ /\ ___\ + \ \ __\ \ \___ \ \ \___ \ \ \ __\ \ \ \-. \ \ \ \____ \ \ __\ + \ \_____\ \/\_____\ \/\_____\ \ \_____\ \ \_\\"\_\ \ \_____\ \ \_____\ + \/_____/ \/_____/ \/_____/ \/_____/ \/_/ \/_/ \/_____/ \/_____/ + __ __ __ __ __ __ _____ ______ __ __ ______ __ __ + /\_\_\_\ /\ \ _ \ \ /\ "-.\ \ /\ __-. /\ ___\ /\ \_\ \ /\ ___\ /\ \ /\ \ + \/_/\_\/_\ \ \/ ".\ \\ \ \-. \\ \ \/\ \ \ \___ \\ \ __ \\ \ __\ \ \ \____\ \ \____ + /\_\/\_\\ \__/".~\_\\ \_\\"\_\\ \____- \/\_____\\ \_\ \_\\ \_____\\ \_____\\ \_____\ + \/_/\/_/ \/_/ \/_/ \/_/ \/_/ \/____/ \/_____/ \/_/\/_/ \/_____/ \/_____/ \/_____/ + + + 2014 (c) StaticZ +________________________________________________________________________________________ + + + CONTENT + + 1.0 About ExShell + 2.0 Install and Running + 3.0 Requirements + 4.0 Perfomance + 5.0 Tested Games + 6.0 Change Log + + + +------------------- +(1.0) About ExShell +------------------- + +"Essence XWnd Shell" aka ExShell is hook based application for force running old +games (or ant other full screen applications) in windowed mode with different +graphic filters (for example upscalers like 2xSaI). ExShell also provide some other +abilities, like setting FPS limit or lowing CPU usage (see config for more details). + + + +------------------------- +(2.0) Install and Running +------------------------- + +For installing copy ExShell to any directory you whant and open exshell.ecd config +file in any text editor (recomended Notepad++, you can import to it syntax higlight +from *.xml file that are distributed with ExShell). To lunch your application you +have to set path to it and it's screen resolution. The application you whant to run +must be set in fullscreen mode (ja2.ini: SCREEN_MODE_WINDOWED = 0), otherwise you +get many problems and errors. +Check other options and see comments there for more details. + +Important exshell.ecd entries: +- Set $StartPEPath for profile [EXSProfile01] to the ja2.exe file (full path). +- Set $FScreenMode to the same resoultion like JA2 1.13 (see: ja2.ini -> SCREEN_RESOLUTION) + -> Also set SCREEN_MODE_WINDOWED = 0 in ja2.ini +- Set $WindowFrame to the double size (if you use 2x upscaling filters) of your JA2 1.13 screen resolution +- Set $ImageFilter to your liking. For best image quality set the filter to #2022 + -> This means 2x upscaling the screen resolution and using xbra filter + +Be carefully, while saving +config file, check that you use UTF8 (without BOM) encoding. Otherwise ExShell will +have problems with reading it. + +To start the JA2 1.13 with the exShell tool, just run the exshell.exe + +Additional informations can be found on the Bears Pit Forum: +http://www.ja-galaxy-forum.com/ubbthreads.php/topics/336350/1 + + +------------------ +(3.0) Requirements +------------------ + +ExShell supports only windows x86 applications, that are based on DirectDraw or GDI. + +System requirements: + + Windows(R) XP/Vista/7 + DirectX 9.0 + Monitor, keybord, mouse, cheese, beer + + + +---------------- +(4.0) Perfomance +---------------- + +For compare speed of different filters, see table below. There values are average +number of processor ticks for proccesing each pixel. All values were got by filtering +screen 640x480 and dividing result for pixels count. As procesor ticks are very +small values and exaclty value depends on many things, like current CPU loading +the result where get as avarage for several minutes. + _______________________ + | Filter Type | Speed | + |---------------+-------| + | None* | <1 | + | Simple | 5 | + | Pixelate | 10 | + | Scanlines | 10 | + | ScanlinesTV | 17 | + | AdMame | 17 | + | Super2xSaI | 117 | + | 2xSaI | 121 | + | HQ | 680 | + | LQ | 685 | + | XBR | 696 | + *---------------^-------* + + * According to exshell architecture "None filter" is real filter, that simply copy + screen from one memmory block to other. So infact it's speed more depends on RAM + speed then on CPU. + +As you can see ower winner is AdMame, it is very fast and give nice result, close to +smth similar for Super2xSaI. + + + +------------------ +(5.0) Tested Games +------------------ + +ExShell was tested for compatibility with this games: + + 1. Jagged Alliance 2: Feeding Ground [OK] + 2. Jagged Alliance 2: 1.13 [OK] + 3. Jagged Alliance 2: Metavira [OK] + + + +---------------- +(6.0) Change Log +---------------- + + +(2014.09.28) ver 0.01 rev 011 build 14271 +------------------------------------------ + + * Intial realise + + + + \ No newline at end of file