┏┓ ┏┓ ┓ ┣┫┓┏┏┓┓┏┏╋┏┓ ┃┓┏┓┓┏┃┏┓┏┓╋ ┛┗┗┻┗┫┗┻┛┗┗┛ ┗┛┗┛┗┻┗┗┻┛ ┗ 3tr54eh7o (at) mozmail dot com ┛ (dev. ⋀ maker) → 🕶

this \\ this->analyses_ \\ this->rambles_ \\ *(this->pgp_)

Game::K2T26JXDQ38ENGHE33T

t. 2024/09/23 15:07:00 -0300

"Shadow Watch is a turn-based, isometric game of stealth, intrigue and combat. You have been given command of a team of six highly trained operatives with orders to find out who is behind the attacks against those working on the ISS." - Red Storm Entertainment

▚▚▚ Quick Reference Sheet ▞▞▞

KEY VALUE NOTES
s_Title “Shadow Watch”  
s_Devs “Red Storm Entertainment” see <http://www.redstorm.com>
e_Crm GOG  
s_EntryFile “ShadowWatch.exe” 8D91F16BC60A8A9DA5B3C0F7A68999EE231D6753
d_LinkTime 944417248 at December 5, 1999 6:07:28 PM GMT
d_LinkerVersion 2.50  
d_TargetOs 4.0 known as Windows 95
e_TargetArch INTEL_386  
e_RunTime JRE version 1.1.8 (1999-04-08)
s_Engine “York” proprietary Java engine
v_Imports @0: KERNEL32.DLL
@1: USER32.DLL
from the import table of s_EntryFile, not all loaded libraries

system::MinRequired()

CPU: Pentium 133Mhz Memory: 32 MB RAM required Video: DirectX compatible 2D video card with 2MB VRAM capable of 16bit colors HD: ~700 MB uncompressed space DirectX: 6.1

fs::DirTree()

╭─ NOTE ────────────────────────────╮ │ not all files/folders are shown │ ╰───────────────────────────────────╯
root/ ├── Dx.dll // loaded in rse.ge.ui.RSEUIMgr.loadUIFactory() ├── GameuxInstallHelper.dll ├── readme.txt ├── ShadowWatch.exe // PE file, entry │ ⋮ ├── sw.dat // PE file, its own JREW (1.1.8) │ ⋮ ├── york.res // loaded in rse.ge.ui.VRootContainer.workLoop() ├── york.rsc // JAR file, contains the game and engine ├── art/ ├── cfg/ ├── jre/ ├── save/ ├── scores/ ├── sound/ ├── strings/ └── video/

entry::CallStack()

ShadowWatch.exe ┌────────┬───────────────────────┐ │ 402b80 ┆ entry() │ │ 401000 ┆ WinMain() │ // all params are unused │ 401580 ┆ LaunchProgram("sw") │ │ 4015bd ┆ CreateProcessA()─ ─ ─ ┼ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─┐ │ 4015cf ┆ WaitForSingleObject() │ ╷ └────────┴───────────────────────┘ sw.dat ▼ ┌────────┬────────────────────────┐ │ 402cd0 ┆ entry() │ │ 401000 ┆ WinMain() │ │ 4010c0 ┆ main() │ ┌─────────────────────┼ 401230 ┆ CallStaticVoidMethod() │ ▼ york.rsc └────────┴────────────────────────┘ ┌──────────────────────────┐ │ rse.york.YorkMain.main() │ └──────────────────────────┘

Remarks:

  1. In ShadowWatch.exe, checks for valid CD-ROM volume “SHDWWTCH” (bypassed in this version), then renames “sw.dat” into “sw.exe”, calls it and when “sw.exe” returns (after it is terminated) renames it back into “sw.dat”.
  2. Game can be launched from the JRE (that’s basically what sw.dat is), tested with my own built JRE (1.1.8_010), which allows for debugging with JDK-provided interface javai_g.dll (if linked with javai_g.lib).
  3. Both executables’ malloc/calloc use GlobalAlloc for heap allocation, it also does small block heap (sbh) allocations (but using GlobalAlloc regardless). Very early (i.e. old) Visual C++ definitions.
  4. In sw.dat, at WinMain, user-defined (not CRT) argv = malloc(argc*sizeof(char*)) and cmdln = malloc(strlen(lpCmdLine)) are not free()’ed before program termination.
  5. Only supports 4:3 aspect ratios [{ 640, 480 }, { 800, 600 }, { 1024, 768 }] (will be streched on widescreen since it only runs on fullscreen).
  6. Documentation mentions not allowing Alt+Tab, does not seem to be the case on Windows 11 (maybe GOG fixed it?).

DISCLAIMER: Any and all intellectual property referenced, included, or utilized in this site that is not owned by the author of the site is used strictly for commentary, criticism, and educational purposes under the doctrine of fair use. No copyright infringement is intended. Copyright notices should be sent to the electronic mail at the top of this page.