The following contains no subjective commentary, and is an objective review of technical facts.
Sea Dogs: To Each His Own offers absolutely no improvements/fixes to the original COAS 2.8 Storm engine, despite any contrary claims.
File listing of TEHO:
File listing of AoP2 City of Abandoned Ships:
They are virtually the same, with every module the exact same number of bytes, except battle_interface.dll, DX8RENDER.dll and sea_ai.dll (excluding net.dll since it pertains only to the non-existent online mode).
I can only surmise to achieve this, the same source code, with virtually no changes, except for those few modules, was compiled under the same, old Visual Studio version (circa 2005-2008?), with default compiler options. Else, a newer VS version, with a newer compiler would undoubtedly result in different binary sizes. I also suspect, but can't confirm or deny, that program optimizations for the release build were actually disabled for TEHO, because my own experience in first attempting optimization for faster processing, resulted in immediate and numerous crashes, whereas disabling them allowed the program to run. This is because unoptimized builds often create some variable/array allocations to contain extra stack/buffer space and "temporaries" to remain in scope, that sometimes allows poor programming practices to "get away" with those types of bugs. See here for a brief explanation: Compiler optimization makes program crash
I eventually worked all those out for myself, and now compile/run the program with full speed optimization, but that required much code revamping, that is clearly not done in TEHO, because again, the line numbers for errors that are output to the logs are identical to the original.
Support for this can be seen a comparison of system.log files for TEHO vs. COAS. Here is my latest TEHO log:
A glance at a recent COAS log shows the same memory leaks, with the EXACT same source files, with the EXACT same line numbers, for xiutil.cpp, string.h, file_service.cpp; the TEHO developers have changed nothing.
Play long enough, with rain in the picture, and that other old error will surface and crash the game:
Undefined error
Assert failed in .\WaterRings.cpp line 144, expression string _iPointer
A review of the TEHO Steam forum confirms this is a known, long-standing problem among TEHO users...well, it's been around since COAS too, and since the source appears to be 99.9% identical and unchanged, would be expected.
Upon further review of the TEHO Steam forum and other, various crashes of unkown origin, are met with suggestion to perhaps try removing the options file, to allow recreation. I know why this sometimes "resolves"...it can sometimes temporarily relieve a situation where the option file read methods that contain a memory heap corruption error; heap corruption is insidious, and often does not result in immediate failure/bugs, but much further down the process, when a memory block that got inadvertently stomped, is needed for something else, and boom! Crash.
So, it's built with an outdated VS/compiler version, the source is unchanged and still contains all the old bugs, heap corruptions, index out-of-bounds problems, leaks, null/bad pointer dereferencing and a host of other issues that have always existed -- no improvement.
A curious thing noted in the system log pertaining to FMOD. The log displays FMOD 00040805. That is the version that the source code header files for the fmodex API; this matches original fmodex.dll, shipped with COAS, version 4.8.5 (circa 2006, 12 years ago). Curiously, TEHO ships with fmodex.dll, version 4.20.6. Again, the TEHO log output indicating 4.8.5, is from the source FMOD header file version, not a detection of the actual .dll version, resident in the app directory. Since the major version number is identical, FMOD has a tendencey to be binary compatible among major version numbers for even a slightly older set of header/api source files than the actual .dll used. This often allows a program to be compiled with 4.8.5, but simply dropping in 4.20.6 binary .dll into use, still works. The "curious" part is why that one? Apparently, version 4.20.6 introduced a bunch of crashes for other games, when it came out. See here: fmodex.dll error
One game in particular had frequent crashing with 4.20.6 -- Half Life:
Why not simply update both the FMOD binary and source files to a newer version? Because FMOD has changed their APIs and one has to do some rework to the source? Isn't that what you are charging users money for?
There are of course the "solutions" given to the users: "don't quick-save, it's evil," "don't enable rain, we have an option to disable because crashes," and, " DX9 implementation was botched, there will be a rollback to DX8," from the developers in their forum, but one would presume a "developer" would hunt down the culprits in the code and just fix them...but maybe that's just me thinking too much.
Sea Dogs: To Each His Own offers absolutely no improvements/fixes to the original COAS 2.8 Storm engine, despite any contrary claims.
File listing of TEHO:
Code:
Directory of E:\SteamLibrary\steamapps\common\Sea Dogs To Each His Own\modules
07/01/2018 10:09 AM <DIR> .
07/01/2018 10:09 AM <DIR> ..
01/18/2018 12:06 PM 90,112 animals.dll
01/18/2018 12:06 PM 167,936 Animation.dll
01/18/2018 12:06 PM 69,632 artifact.dll
01/18/2018 12:06 PM 49,152 BackgroundShipTask.dll
01/18/2018 12:06 PM 61,440 BallSplash.dll
01/18/2018 12:06 PM 217,088 battle_interface.dll
01/18/2018 12:06 PM 77,824 blade.dll
01/18/2018 12:06 PM 77,824 Blot.dll
01/18/2018 12:06 PM 61,440 CameraDialog.dll
01/18/2018 12:06 PM 53,248 COLLIDE.dll
01/18/2018 12:06 PM 86,016 DIALOG.dll
07/01/2018 10:09 AM 0 dir.txt
01/18/2018 12:05 PM 454,656 DX8RENDER.dll
01/18/2018 12:06 PM 86,016 GAMEUTILS.dll
01/18/2018 12:06 PM 77,824 GEOMETRY.dll
01/18/2018 12:06 PM 126,976 ISLAND.dll
01/18/2018 12:06 PM 151,552 Lighter.dll
01/18/2018 12:05 PM 413,696 Location.dll
01/18/2018 12:06 PM 73,728 locator.dll
01/18/2018 12:06 PM 81,920 MAST.dll
01/18/2018 12:06 PM 73,728 MODEL.dll
01/18/2018 12:05 PM 675,840 net.dll
01/18/2018 12:06 PM 151,552 PARTICLES.dll
01/18/2018 12:06 PM 65,536 PCS_CONTROLS.dll
01/18/2018 12:06 PM 94,208 PEOPLES_ON_SHIP.dll
01/18/2018 12:06 PM 229,376 rigging.dll
01/18/2018 12:06 PM 118,784 Sailors.dll
01/18/2018 12:06 PM 49,152 SCRIPT_LIBRIARY.dll
01/18/2018 12:06 PM 204,800 sea.dll
01/18/2018 12:06 PM 69,632 SeaCreatures.dll
01/18/2018 12:06 PM 90,112 seafoam.dll
01/18/2018 12:06 PM 192,512 sea_ai.dll
01/18/2018 12:06 PM 90,112 SEA_CAMERAS.dll
01/18/2018 12:06 PM 212,992 SEA_OPERATOR.dll
01/18/2018 12:06 PM 90,112 shadow.dll
01/18/2018 12:06 PM 139,264 ship.dll
01/18/2018 12:06 PM 73,728 sink_effect.dll
01/18/2018 12:06 PM 57,344 SOUND.dll
01/18/2018 12:06 PM 102,400 SoundService.dll
01/19/2018 11:31 AM <DIR> techniques
01/18/2018 12:06 PM 61,440 Teleport.dll
01/18/2018 12:06 PM 98,304 Tornado.dll
01/18/2018 12:06 PM 65,536 touch.dll
01/18/2018 12:06 PM 57,344 WaterRings.dll
01/18/2018 12:06 PM 208,896 WEATHER.dll
01/18/2018 12:05 PM 278,528 WorldMap.dll
01/18/2018 12:05 PM 544,768 XINTERFACE.dll
46 File(s) 6,574,080 bytes
Code:
Directory of E:\Playlogic\Age of Pirates 2\modules
07/01/2018 10:10 AM <DIR> .
07/01/2018 10:10 AM <DIR> ..
10/25/2008 01:50 PM 90,112 animals.dll
10/25/2008 01:50 PM 167,936 Animation.dll
10/25/2008 01:50 PM 69,632 artifact.dll
10/25/2008 01:41 PM 49,152 BackgroundShipTask.dll
10/25/2008 11:33 AM 61,440 BallSplash.dll
10/25/2008 01:50 PM 212,992 battle_interface.dll
10/25/2008 01:43 PM 77,824 blade.dll
10/25/2008 01:49 PM 77,824 Blot.dll
10/25/2008 01:49 PM 61,440 CameraDialog.dll
10/25/2008 01:49 PM 53,248 COLLIDE.dll
10/25/2008 01:49 PM 86,016 DIALOG.dll
07/01/2018 10:10 AM 0 dir.txt
10/25/2008 01:49 PM 450,560 DX8RENDER.dll
10/25/2008 01:41 PM 86,016 GAMEUTILS.dll
10/25/2008 01:48 PM 77,824 GEOMETRY.dll
10/25/2008 01:48 PM 126,976 ISLAND.dll
10/25/2008 01:48 PM 151,552 Lighter.dll
10/25/2008 01:47 PM 413,696 Location.dll
10/25/2008 01:48 PM 73,728 locator.dll
10/25/2008 01:47 PM 81,920 MAST.dll
10/25/2008 01:47 PM 73,728 MODEL.dll
10/25/2008 01:43 PM 671,744 net.dll
10/25/2008 01:47 PM 151,552 PARTICLES.dll
10/25/2008 01:46 PM 65,536 PCS_CONTROLS.dll
10/25/2008 01:46 PM 94,208 PEOPLES_ON_SHIP.dll
10/25/2008 01:46 PM 217,088 rigging.dll
10/25/2008 01:41 PM 118,784 Sailors.dll
10/25/2008 01:46 PM 49,152 SCRIPT_LIBRIARY.dll
10/25/2008 01:46 PM 204,800 sea.dll
10/25/2008 01:45 PM 69,632 SeaCreatures.dll
10/25/2008 01:41 PM 90,112 seafoam.dll
07/09/2008 11:10 PM 188,416 sea_ai.dll
10/25/2008 01:45 PM 90,112 SEA_CAMERAS.dll
10/10/2008 03:56 PM 212,992 SEA_OPERATOR.dll
10/25/2008 01:43 PM 90,112 shadow.dll
10/25/2008 01:45 PM 131,072 ship.dll
10/25/2008 01:45 PM 73,728 sink_effect.dll
10/25/2008 01:45 PM 57,344 SOUND.dll
10/25/2008 01:43 PM 102,400 SoundService.dll
03/13/2017 11:25 PM <DIR> techniques
10/25/2008 01:45 PM 61,440 Teleport.dll
10/25/2008 01:45 PM 98,304 Tornado.dll
10/25/2008 01:45 PM 65,536 touch.dll
10/25/2008 01:45 PM 57,344 WaterRings.dll
10/25/2008 01:43 PM 208,896 WEATHER.dll
10/25/2008 01:42 PM 278,528 WorldMap.dll
10/25/2008 01:45 PM 544,768 XINTERFACE.dll
46 File(s) 6,537,216 bytes
I can only surmise to achieve this, the same source code, with virtually no changes, except for those few modules, was compiled under the same, old Visual Studio version (circa 2005-2008?), with default compiler options. Else, a newer VS version, with a newer compiler would undoubtedly result in different binary sizes. I also suspect, but can't confirm or deny, that program optimizations for the release build were actually disabled for TEHO, because my own experience in first attempting optimization for faster processing, resulted in immediate and numerous crashes, whereas disabling them allowed the program to run. This is because unoptimized builds often create some variable/array allocations to contain extra stack/buffer space and "temporaries" to remain in scope, that sometimes allows poor programming practices to "get away" with those types of bugs. See here for a brief explanation: Compiler optimization makes program crash
I eventually worked all those out for myself, and now compile/run the program with full speed optimization, but that required much code revamping, that is clearly not done in TEHO, because again, the line numbers for errors that are output to the logs are identical to the original.
Support for this can be seen a comparison of system.log files for TEHO vs. COAS. Here is my latest TEHO log:
Code:
Scanning modules\
Loading modules...
Loaded 45
Reset...
Initializing CORE...
Creating atoms space: 128
done
initializing complete
Initializing DirectX 8
ERROR: Techniques: Find duplicate technique name: rain
Techniques: 22 shaders compiled.
Techniques: 231 techniques compiled.
Techniques: compiled by 133029214 ticks.
Using FMOD 00040805
Sound inited ok !!!
FMOD: Speaker mode STEREO
isDLCActive 0
DLCcount 7
iDLC 0 app_id 240480 isAvailable 1 name Sea Dogs: To Each His Own - The Caleuche
isDLCActive 0
bDisableHyperThreading: 0
Total logical: 4, Total cores: 2, Total physical: 1
Intel CPU: Yes, SSE: On, HyperThreading: On
Can't load texture resource\textures\MAINMENU\RUSSIAN\GUADELOUPEMASK.TGA.tx
Can't load texture resource\textures\.tx
Can't load texture resource\textures\.tx
Can't load texture resource\textures\.tx
bDisableHyperThreading: 0
Total logical: 4, Total cores: 2, Total physical: 1
Intel CPU: Yes, SSE: On, HyperThreading: On
Incorrect data in action [idle_11] of animation file man_B.ani
User data repeated
Can't load texture resource\textures\AMMO\NOTEXTURE.TGA.tx
Can't load texture resource\textures\AMMO\NOTEXTURE.TGA.tx
Can't load texture resource\textures\AMMO\NOTEXTURE.TGA.tx
Warning: NPCharacter <Carrier_420>-> trace node not found
Warning: NPCharacter <Carrier_421>-> trace node not found
Warning: NPCharacter <Carrier_422>-> trace node not found
Warning: NPCharacter <Carrier_420>-> trace node not found
Warning: NPCharacter <Carrier_421>-> trace node not found
Warning: NPCharacter <Carrier_422>-> trace node not found
Can't sound resume -2 !!!! Sound is not playig !!!!
Warning: NPCharacter <Carrier_420>-> trace node not found
Warning: NPCharacter <Carrier_422>-> trace node not found
Warning: NPCharacter <Carrier_421>-> trace node not found
Warning: NPCharacter <Carrier_420>-> trace node not found
Warning: NPCharacter <Carrier_422>-> trace node not found
Warning: NPCharacter <Carrier_421>-> trace node not found
Warning: NPCharacter <Carrier_420>-> trace node not found
Warning: NPCharacter <Carrier_422>-> trace node not found
Warning: NPCharacter <Carrier_422>-> trace node not found
Warning: NPCharacter <Carrier_421>-> trace node not found
Warning: NPCharacter <Carrier_420>-> trace node not found
Warning: NPCharacter <Carrier_421>-> trace node not found
Can't load texture resource\textures\.tx
Can't sound resume -2 !!!! Sound is not playig !!!!
Can't load texture resource\textures\.tx
bDisableHyperThreading: 0
Total logical: 4, Total cores: 2, Total physical: 1
Intel CPU: Yes, SSE: On, HyperThreading: On
Incorrect data in action [idle_11] of animation file man_B.ani
User data repeated
Can't load texture resource\textures\AMMO\NOTEXTURE.TGA.tx
Can't load texture resource\textures\AMMO\NOTEXTURE.TGA.tx
Can't load texture resource\textures\AMMO\NOTEXTURE.TGA.tx
Can't sound resume -2 !!!! Sound is not playig !!!!
Can't load texture resource\textures\.tx
Can't sound resume -2 !!!! Sound is not playig !!!!
Can't load texture resource\textures\.tx
bDisableHyperThreading: 0
Total logical: 4, Total cores: 2, Total physical: 1
Intel CPU: Yes, SSE: On, HyperThreading: On
Can't load texture resource\textures\AMMO\NOTEXTURE.TGA.tx
Can't load texture resource\textures\AMMO\NOTEXTURE.TGA.tx
Can't load texture resource\textures\AMMO\NOTEXTURE.TGA.tx
Can't sound resume -2 !!!! Sound is not playig !!!!
DLCcount 7
iDLC 0 app_id 240480 isAvailable 1 name Sea Dogs: To Each His Own - The Caleuche
isDLCActive 0
iDLC 1 app_id 452520 isAvailable 1 name Sea Dogs: To Each His Own - The Final Lesson
isDLCActive 0
iDLC 2 app_id 452521 isAvailable 1 name Sea Dogs: To Each His Own - Flying the Jolly Roger
isDLCActive 0
iDLC 3 app_id 452522 isAvailable 1 name Sea Dogs: To Each His Own - Hero of the Nation
isDLCActive 0
iDLC 4 app_id 0 isAvailable 0 name
iDLC 5 app_id 0 isAvailable 0 name
iDLC 6 app_id 0 isAvailable 0 name
Release d3d8
Undefined error
Release d3d
Undefined error
Unloading
System exit and cleanup:
Mem state: User memory: 2231 MSSystem: 2032 Blocks: 127
Leak: '.\xiutil.cpp' line 77, size 11
Leak: '.\xiutil.cpp' line 77, size 11
Leak: '.\xiutil.cpp' line 77, size 11
Leak: '.\xiutil.cpp' line 77, size 11
Leak: '.\xiutil.cpp' line 77, size 11
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: 'd:\data\work\storm 2.8 vs 7.1\xinterface\questfilereader\..\..\common_h\templates\string.h' line 38, size 16
Leak: '.\Sources\file_service.cpp' line 338, size 168
Leak: '.\Sources\file_service.cpp' line 338, size 88
Play long enough, with rain in the picture, and that other old error will surface and crash the game:
Undefined error
Assert failed in .\WaterRings.cpp line 144, expression string _iPointer
A review of the TEHO Steam forum confirms this is a known, long-standing problem among TEHO users...well, it's been around since COAS too, and since the source appears to be 99.9% identical and unchanged, would be expected.
Upon further review of the TEHO Steam forum and other, various crashes of unkown origin, are met with suggestion to perhaps try removing the options file, to allow recreation. I know why this sometimes "resolves"...it can sometimes temporarily relieve a situation where the option file read methods that contain a memory heap corruption error; heap corruption is insidious, and often does not result in immediate failure/bugs, but much further down the process, when a memory block that got inadvertently stomped, is needed for something else, and boom! Crash.
So, it's built with an outdated VS/compiler version, the source is unchanged and still contains all the old bugs, heap corruptions, index out-of-bounds problems, leaks, null/bad pointer dereferencing and a host of other issues that have always existed -- no improvement.
A curious thing noted in the system log pertaining to FMOD. The log displays FMOD 00040805. That is the version that the source code header files for the fmodex API; this matches original fmodex.dll, shipped with COAS, version 4.8.5 (circa 2006, 12 years ago). Curiously, TEHO ships with fmodex.dll, version 4.20.6. Again, the TEHO log output indicating 4.8.5, is from the source FMOD header file version, not a detection of the actual .dll version, resident in the app directory. Since the major version number is identical, FMOD has a tendencey to be binary compatible among major version numbers for even a slightly older set of header/api source files than the actual .dll used. This often allows a program to be compiled with 4.8.5, but simply dropping in 4.20.6 binary .dll into use, still works. The "curious" part is why that one? Apparently, version 4.20.6 introduced a bunch of crashes for other games, when it came out. See here: fmodex.dll error
One game in particular had frequent crashing with 4.20.6 -- Half Life:
faulting module fmodex.dll, version 0.4.20.6, fault address 0x000346a1.
Fault Module Name: fmodex.dll
Fault Module Version: 0.4.20.6
Faulting application hl.exe,
version 1.1.1.1,
time stamp 0x48feaf5a,
faulting module fmodex.dll,
version 0.4.20.6,
time stamp 0x4949daf9
Problem Event Name: APPCRASH
Application Name: hl.exe
Application Version: 1.1.1.1
Application Timestamp: 48feaf5a
Fault Module Name: fmodex.dll
Fault Module Version: 0.4.20.6
Fault Module Timestamp: 4949daf9
This happens way too frequently (50+ times).
Why not simply update both the FMOD binary and source files to a newer version? Because FMOD has changed their APIs and one has to do some rework to the source? Isn't that what you are charging users money for?
There are of course the "solutions" given to the users: "don't quick-save, it's evil," "don't enable rain, we have an option to disable because crashes," and, " DX9 implementation was botched, there will be a rollback to DX8," from the developers in their forum, but one would presume a "developer" would hunt down the culprits in the code and just fix them...but maybe that's just me thinking too much.