Telliamed on 16/3/2013 at 20:51
Quote Posted by kdau
Thanks, good to know that's available---it should probably be listed in one of the stickies. But I actually mean one that checks the version of thief2.exe, not just one that checks versions of OSMs but is compatible with NewDark. Now that there is more than one NewDark version out there, we could potentially need to worry about both engine and OSM versions. I suppose it would make sense to just extend VersionCheck to accept a parameter such as GameVersion=1.20 in addition to script module names.
You should be able to give "thief2.exe=1.2" to VersionCheck.
Okay, proposal to the developers for integrating version checking and feature detection.
1. Add version information to ScrModules. The new struct will look like:
Code:
struct ScrModules2 {
char osm[32]; /* Name of the module, .OSM is optional */
boolean required; /* Fail to load the mission if the module isn't available */
char version[12]; /* required version of the OSM */
char homepage[80]; /* URI where you can get the OSM, for showing in an error message */
};
This is backward compatible (assuming the file writer properly zeroed-out the block).
2. Stop using "script_load" to edit modules. I hate that command. Make a dialog box that does everything.
3. Add a mission property "EngineFeat" that is a bitmask of things the engine needs to support to play the mission. (Should probably at least 128 bits for future expansion.) If the game sees an unfamiliar flag set, it doesn't load the mission. Obviously this should only be used for things that will break the mission if they aren't supported. Dromed can automagically set flags it knows are needed, but something like a new model format would have to be set manually.
4. Expose supported engine features in the Version script service. This includes optional flags that wouldn't be included in the above "EngineFeat" bitmask.
5. New property Script\VersionCheck that checks the version of the game, a script, or the presence of an engine feature and sends a script message to the object. It can either send TurnOn/TurnOff or it can delete the object. No additional script or linkage required like with the current script. Each object that has to change its behavior will have the property. The idea is so a mission can still function without the feature by acting differently or just deleting the objects that need it.
6. Namespaces in script names. When two OSMs with the same name are loaded, the game "randomly" picks which to use. Instead, script name could be given as "osm.script" to load it from a specific module. Internally, all names are fully-qualified. (I also thought about using ':' or '\' as the separator but '.' is more common and easiest to type I think.)
7. New property Script\OnSim that sends TurnOn to the object like TrigSim but without taking up a useless object. Has a flag to send the trigger once when the game starts, or every time the mission is loaded.
PinkDot on 17/3/2013 at 00:04
Quote Posted by LarryG
You tried going into video options with both DromEd and Thief separately and changed "Hardware Driver" to the other device? If you only tried one of the two, try the other and see what it does. Maybe multiple monitors only work in one?
Yes, I just tried with Thief2.exe - it seems to act identically to the Game Mode from Dromed - it launches on the other monitor.
I went into Hardware options - it gives me two identical options - two times name of my GFX card. No matter which one I choose - same thing happens.
I deleted the line 'd3d_driver_index 0' from cam.cfg file - it gets added whenever I run THief2.exe/Game Mode again.
I found some files called Thief2.txt in the main Thief2 folder, created whenever I run Thief, which might have some interesting info:
This is when I use DX6 (use_d3d_display commented out in cam_ext.cfg):
Code:
: PID: 5512
: CPU: arch=x86-64 , fam=586 , cpus=8
: SIMD: SSE=3 , 3DNow=0
: OS Version: 5.1.2600 Service Pack 3
: Desktop resolution: 1920 x 1200
: Virtual desktop resolution: 3200 x 1200
: -----------------------------------------------------------
: CWD: D:\Thief2119
: -----------------------------------------------------------
: App Version: Thief 2 Final 1.20
: --------------------- misc config -------------------------
: resname_base .\EP+.\FMs\Krzys+D:\Thief2119\res
: cd_path D:\
: load_path D:\Thief2119
: script_module_path D:\Thief2119
: movie_path D:\Thief2119\movies
: install_path D:\Thief2119
: language english
: game_screen_size 1280 1024
: game_screen_depth 32
: game_screen_flags 45
: game_full_screen 1
: d3d_driver_index 1
: game_hardware 1
: single_display_mode 3
: ui_scale_mode 2
: framerate_cap 100.0
: SlowFrame 4
: SlowFrameUI 10
: force_32bit
: force_32bit_textures
: mipmap_mode 2
: lm_mipmap_mode 0
: lm_init_texmem 2
: lm_filter_margin 1
: disable_lightmap_aniso
: tex_edge_padding 2
: alpha_test_as_opaque
: d3d_disp_enable_hdr 32
: multisampletype 8
: postprocess 1
: d3d_disp_enable_distortionfx
: sfx_device 1
: sfx_channels 12
: sfx_vol_music -474
: sfx_vol_2d 0
: sfx_vol_3d 0
: game dark
: obj_min -8192
: obj_max 2400
: max_refs 14000
: gui_font intrface\smalfont
: enhanced_sky 1
: skip_intro
: new_mantle
: z_far 512
: wr_render_zcomp
: render_weapon_particles
: legacy_force_match_unrefs 0
: dark_zcomp_arm
: edit_screen_size 1680, 1050
: edit_screen_depth 16
: -----------------------------------------------------------
: Enumerating DX6 adapters...
: Adapter "display"
: descr : Primary Display Driver
: Modes
: 640 x 480 x 32
: 720 x 480 x 32
: 720 x 576 x 32
: 800 x 600 x 32
: 1024 x 768 x 32
: 1152 x 864 x 32
: 1280 x 720 x 32
: 1280 x 768 x 32
: 1280 x 800 x 32
: 1280 x 960 x 32
: 1280 x 1024 x 32
: 1360 x 768 x 32
: 1366 x 768 x 32
: 1600 x 900 x 32
: unsupported mode 1600 x 1024 x 32 (not in mode table)
: 1600 x 1200 x 32
: 1680 x 1050 x 32
: 1920 x 1080 x 32
: 1920 x 1200 x 32
: 640 x 480 x 16
: 720 x 480 x 16
: 720 x 576 x 16
: 800 x 600 x 16
: 1024 x 768 x 16
: 1152 x 864 x 16
: 1280 x 720 x 16
: 1280 x 768 x 16
: 1280 x 800 x 16
: 1280 x 960 x 16
: 1280 x 1024 x 16
: 1360 x 768 x 16
: 1366 x 768 x 16
: 1600 x 900 x 16
: unsupported mode 1600 x 1024 x 16 (not in mode table)
: 1600 x 1200 x 16
: 1680 x 1050 x 16
: 1920 x 1080 x 16
: 1920 x 1200 x 16
: 640 x 480 x 8
: unsupported mode 720 x 480 x 8 (not in mode table)
: unsupported mode 720 x 576 x 8 (not in mode table)
: 800 x 600 x 8
: 1024 x 768 x 8
: unsupported mode 1152 x 864 x 8 (not in mode table)
: unsupported mode 1280 x 720 x 8 (not in mode table)
: unsupported mode 1280 x 768 x 8 (not in mode table)
: unsupported mode 1280 x 800 x 8 (not in mode table)
: unsupported mode 1280 x 960 x 8 (not in mode table)
: 1280 x 1024 x 8
: unsupported mode 1360 x 768 x 8 (not in mode table)
: unsupported mode 1366 x 768 x 8 (not in mode table)
: unsupported mode 1600 x 900 x 8 (not in mode table)
: unsupported mode 1600 x 1024 x 8 (not in mode table)
: 1600 x 1200 x 8
: unsupported mode 1680 x 1050 x 8 (not in mode table)
: unsupported mode 1920 x 1080 x 8 (not in mode table)
: unsupported mode 1920 x 1200 x 8 (not in mode table)
: Enumerating 3D devices...
: Device "RGB Emulation"
: descr : Microsoft Direct3D RGB Software Emulation
: device guid: A4665C60-2673-11CF-A31A-00AA00B9
: Device Validation
: ** failed, no HW support
: Device "Direct3D HAL"
: descr : Microsoft Direct3D Hardware acceleration through Direct3D HAL
: device guid: 84E63DE0-46AA-11CF-816F-0000C020
: Device Validation
: validated ok, device added (0, E790000)
: Enumeration done
: Enumeration done
: DDProvider: Enumerating modes
: 640 x 480 x 32
: 720 x 480 x 32
: 720 x 576 x 32
: 800 x 600 x 32
: 1024 x 768 x 32
: 1152 x 864 x 32
: 1280 x 720 x 32
: 1280 x 768 x 32
: 1280 x 800 x 32
: 1280 x 960 x 32
: 1280 x 1024 x 32
: 1360 x 768 x 32
: 1366 x 768 x 32
: 1600 x 900 x 32
: unsupported mode 1600 x 1024 x 32 (not in mode table)
: 1600 x 1200 x 32
: 1680 x 1050 x 32
: 1920 x 1080 x 32
: 1920 x 1200 x 32
: 640 x 480 x 16
: 720 x 480 x 16
: 720 x 576 x 16
: 800 x 600 x 16
: 1024 x 768 x 16
: 1152 x 864 x 16
: 1280 x 720 x 16
: 1280 x 768 x 16
: 1280 x 800 x 16
: 1280 x 960 x 16
: 1280 x 1024 x 16
: 1360 x 768 x 16
: 1366 x 768 x 16
: 1600 x 900 x 16
: unsupported mode 1600 x 1024 x 16 (not in mode table)
: 1600 x 1200 x 16
: 1680 x 1050 x 16
: 1920 x 1080 x 16
: 1920 x 1200 x 16
: 640 x 480 x 8
: unsupported mode 720 x 480 x 8 (not in mode table)
: unsupported mode 720 x 576 x 8 (not in mode table)
: 800 x 600 x 8
: 1024 x 768 x 8
: unsupported mode 1152 x 864 x 8 (not in mode table)
: unsupported mode 1280 x 720 x 8 (not in mode table)
: unsupported mode 1280 x 768 x 8 (not in mode table)
: unsupported mode 1280 x 800 x 8 (not in mode table)
: unsupported mode 1280 x 960 x 8 (not in mode table)
: 1280 x 1024 x 8
: unsupported mode 1360 x 768 x 8 (not in mode table)
: unsupported mode 1366 x 768 x 8 (not in mode table)
: unsupported mode 1600 x 900 x 8 (not in mode table)
: unsupported mode 1600 x 1024 x 8 (not in mode table)
: 1600 x 1200 x 8
: unsupported mode 1680 x 1050 x 8 (not in mode table)
: unsupported mode 1920 x 1080 x 8 (not in mode table)
: unsupported mode 1920 x 1200 x 8 (not in mode table)
: DDProvider: Enumeration done
: sw framerate cap requested (10000 us)
: DDProviderFixed StartMode: smode 1280x1024x32 ; mode 640x480x32 (5 9 0 2D)
This behaves normally - THief launches on the main, widescreen monitor in whatever resolution I want.
And this is when DX9 is on (use_d3d_display is active):
Code:
: PID: 2356
: CPU: arch=x86-64 , fam=586 , cpus=8
: SIMD: SSE=3 , 3DNow=0
: OS Version: 5.1.2600 Service Pack 3
: Desktop resolution: 1920 x 1200
: Virtual desktop resolution: 3200 x 1200
: -----------------------------------------------------------
: CWD: D:\Thief2119
: -----------------------------------------------------------
: App Version: Thief 2 Final 1.20
: --------------------- misc config -------------------------
: resname_base .\EP+.\FMs\Krzys+D:\Thief2119\res
: cd_path D:\
: load_path D:\Thief2119
: script_module_path D:\Thief2119
: movie_path D:\Thief2119\movies
: install_path D:\Thief2119
: language english
: game_screen_size 1280 1024
: game_screen_depth 32
: game_screen_flags 45
: game_full_screen 1
: game_hardware 1
: single_display_mode 3
: ui_scale_mode 2
: use_d3d_display
: framerate_cap 100.0
: SlowFrame 4
: SlowFrameUI 10
: force_32bit
: force_32bit_textures
: mipmap_mode 2
: lm_mipmap_mode 0
: lm_init_texmem 2
: lm_filter_margin 1
: disable_lightmap_aniso
: tex_edge_padding 2
: alpha_test_as_opaque
: d3d_disp_enable_hdr 32
: multisampletype 8
: postprocess 1
: d3d_disp_enable_distortionfx
: sfx_device 1
: sfx_channels 12
: sfx_vol_music -474
: sfx_vol_2d 0
: sfx_vol_3d 0
: game dark
: obj_min -8192
: obj_max 2400
: max_refs 14000
: gui_font intrface\smalfont
: enhanced_sky 1
: skip_intro
: new_mantle
: z_far 512
: wr_render_zcomp
: render_weapon_particles
: legacy_force_match_unrefs 0
: dark_zcomp_arm
: edit_screen_size 1680, 1050
: edit_screen_depth 16
: -----------------------------------------------------------
: Enumerating D3D9 adapters (2)...
: Adapter 0
: device name: \\.\DISPLAY1
: driver : nvd3dum.dll
: descr : NVIDIA GeForce GTX 285
: driver ver : 0x00090012-000D02B9
: vendor id : 0x000010DE
: device id : 0x000005E3
: subsys id : 0x82E81043
: device guid: D7B71E3E-46A3-11CF-4A71-E5A21CC2
: Modes
: 640 x 480 x 16
: 720 x 480 x 16
: 720 x 576 x 16
: 800 x 600 x 16
: 1024 x 768 x 16
: 1152 x 864 x 16
: 1280 x 720 x 16
: 1280 x 768 x 16
: 1280 x 800 x 16
: 1280 x 960 x 16
: 1280 x 1024 x 16
: 1360 x 768 x 16
: 1366 x 768 x 16
: 1600 x 900 x 16
: unsupported mode 1600 x 1024 x 16 (not in mode table)
: unsupported mode 1600 x 1024 x 16 (not in mode table)
: 1600 x 1200 x 16
: 1680 x 1050 x 16
: 1920 x 1080 x 16
: 1920 x 1200 x 16
: 640 x 480 x 32
: 720 x 480 x 32
: 720 x 576 x 32
: 800 x 600 x 32
: 1024 x 768 x 32
: 1152 x 864 x 32
: 1280 x 720 x 32
: 1280 x 768 x 32
: 1280 x 800 x 32
: 1280 x 960 x 32
: 1280 x 1024 x 32
: 1360 x 768 x 32
: 1366 x 768 x 32
: 1600 x 900 x 32
: unsupported mode 1600 x 1024 x 32 (not in mode table)
: unsupported mode 1600 x 1024 x 32 (not in mode table)
: 1600 x 1200 x 32
: 1680 x 1050 x 32
: 1920 x 1080 x 32
: 1920 x 1200 x 32
: Device Validation
: validated ok, device added (0, E390000)
: Adapter 1
: device name: \\.\DISPLAY2
: driver : nvd3dum.dll
: descr : NVIDIA GeForce GTX 285
: driver ver : 0x00090012-000D02B9
: vendor id : 0x000010DE
: device id : 0x000005E3
: subsys id : 0x82E81043
: device guid: D7B71E3E-46A3-11CF-4A71-E5A21CC2
: Modes
: 1280 x 1024 x 16
: 640 x 480 x 16
: 720 x 480 x 16
: 720 x 576 x 16
: 800 x 600 x 16
: 1024 x 768 x 16
: 1152 x 864 x 16
: 1280 x 720 x 16
: 1280 x 768 x 16
: 1280 x 800 x 16
: 1280 x 960 x 16
: 1280 x 1024 x 32
: 640 x 480 x 32
: 720 x 480 x 32
: 720 x 576 x 32
: 800 x 600 x 32
: 1024 x 768 x 32
: 1152 x 864 x 32
: 1280 x 720 x 32
: 1280 x 768 x 32
: 1280 x 800 x 32
: 1280 x 960 x 32
: Device Validation
: validated ok, device added (1, E390000)
: Enumeration done
: D3DProvider: Enumerating adapter 1 modes
: 1280 x 1024 x 16
: 640 x 480 x 16
: 720 x 480 x 16
: 720 x 576 x 16
: 800 x 600 x 16
: 1024 x 768 x 16
: 1152 x 864 x 16
: 1280 x 720 x 16
: 1280 x 768 x 16
: 1280 x 800 x 16
: 1280 x 960 x 16
: 1280 x 1024 x 32
: 640 x 480 x 32
: 720 x 480 x 32
: 720 x 576 x 32
: 800 x 600 x 32
: 1024 x 768 x 32
: 1152 x 864 x 32
: 1280 x 720 x 32
: 1280 x 768 x 32
: 1280 x 800 x 32
: 1280 x 960 x 32
: D3DProvider: Enumeration done
: sw framerate cap requested (10000 us)
: D3DProvider StartMode: smode 1280x1024x32 ; mode 640x480x32 (5 9 0 2D) ; 2d_surf_mode: 0
: CreateDevice: res = D3D_OK ; 1280x1024 fmt=22 zfmt=75 cnt=2 ms=8 swap=1 fs=1 hz=0 pres=1 flags=2
So for some reason, at the end it always enumerates adapter 1 modes (which is my secondary, 4:3 monitor), no matter what 'd3d_driver_index' command says. (I guess it refers to the same numbers of adapters/displays, as dumped in Thief2.txt file).