Hello @ll
I'm a Gamer (most oldgames) and Hobby programmer and Adminstrator (at work).
In my free time i try to fix old games to run on modern Systems. Now it is one of them,
the updates of old games to fix to run without CD. The most updates for the German
Versions from the Old Games era are forgot.
Hidden NoCD from the Developer, Lonbows 1 & 2, all versionI searched the inet for Infos about Longbow but the NoCD's doesn't Play janes Book and
Movies. So i tried self. At my research with Longbow 1 i discovered a 'CDEMU.ini' in
the Code. This tells me 'CD-Emulation'. Then i had to figure out what in this text file
is available.
The Result: The Header of the Ini says CDEmulate and the Content is CD00[num].
Solution - Create a textfile CDEmu.ini in the Longbow 1 Game Directory.
Snip -----:
[CDEmulate]
CD001=C:\Janes\Longbow1 (<- No backslash at the end)
CD002=C:\Janes\Longbow1
CD003=C:\Janes\Longbow1 (<- only if you have the Gold Version)
Snip -----:
Thats all i copied the last files (Movies, etc.. to the Game Directory)
and voila Longbow 1 plays without erros full from HD. Janes book and Movies are working.
This works with the 3CD Version (adding CD003= in the ini) and with the Anthology/Gold,
3DFX and ... the same technic works with Longbow 2
This info was well hidden in the code. Not even the Process Monitor has notified about
the file is missing.
Memory Problem: Lonbows 1, all versionThe Problem with Longbow 1 on Modern Maschines with more as 365,72MB Ram. It's a Memory
bug. LB1 says 'Not enough Memory' 0x000008.
Edit:
I found a Ini command named [Backdoors] with a value HEAP_PERCENT in combination
with GlobalMemoryStatus for the ini CA.ini.
It exists a few GlobalMemoryStatus Messages in:
- LBWin.exe (Only the DirectDraw Version)
- wrap.dle
- tutor.dle
Source of the Memory Bug:
.text:10002DD0 push ebp
.text:10002DD1 mov ebp, esp
.text:10002DD3 sub esp, 6Ch
.text:10002DD6 mov [ebp+Buffer.dwLength], 20h
.text:10002DDD lea eax, [ebp+Buffer]
.text:10002DE0 push eax ; lpBuffer
.text:10002DE1 call ds:GlobalMemoryStatus
.text:10002DE7 push offset FileName ; ".\\ca.ini"
.text:10002DEC push 7 ; nDefault
.text:10002DEE push offset KeyName ; "HEAP_PERCENT" (< Heap Size in Percent?)
.text:10002DF3 push offset AppName ; "Backdoors"
.text:10002DF8 call ds:GetPrivateProfileIntA
.text:10002DFE mov ecx, 0Ah
.text:10002E03 sub edx, edx
.text:10002E05 mov [ebp+var_C], eax
.text:10002E08 mov eax, [ebp+Buffer.dwTotalPhys]
.text:10002E0B imul eax, [ebp+var_C] (Integer Multiply)
.text:10002E0F div ecx
.text:10002E11 push eax ; dwMaximumSize
.text:10002E12 call sub_10008590
call sub_10008590
.text:10008590 dwMaximumSize = dword ptr 4
.text:10008590
.text:10008590 push esi
.text:10008591 push edi
.text:10008592 mov esi, 0C00000h
.text:10008597 call sub_100085E0
.text:1000859C test eax, eax
.text:1000859E jnz short loc_100085A5
.text:100085A0 xor eax, eax
.text:100085A2 pop edi
.text:100085A3 pop esi
.text:100085A4 retn
If i set dwMaximumSize (Heap_Percent to 0 or 70 in the ini) the game works without Crash.
Other Values e.q. 32, 64 or 80 Crash the Game
Solution - Memory Bug Fix Lonbows 1, all version:Add this to the CA.ini (Gold Version and Anthology 3DFX Version)
Snip -----:
[Backdoors]
HEAP_PERCENT=0
Snip -----:
Add this to the CA.ini (Anthology DirectDraw Version)
Snip -----:
[Backdoors]
HEAP_PERCENT=70
Snip -----:
I have both version Gold and Anthology, both patched to 3DFX and 1.04F and the Executable Files are different
from Gold 1.04F <-> Anthology 1.04F and the 3DFX Version too. The Gold Version has problems with Movies.
Alternate for the Memory Bug you can use 'Thorium's Gamefixer' if the solution not work for you
CG Baord for InfosThe Download link is offline.
you can get here Run Longbow 1 with GameFixer "C:\Janes\Longbow1\lbwin.exe" -memoryfix TotalPhys=33554432.
This works, i have 16GB. For 3DFX, put the the nglide.dll's in the game Directory and set the Compatibility to
WinXPSP2.
If any has the skill to remove or Bypass the Memory bug , search for the 'GlobalMemoryStatus'greetings Marty