Jan 1, 2008

Fix '*mb of free virtual memory' on 'Director Player 6.0' and 'Director Player 5.0' programs on XP/Vista

I'm getting 100+ people look at this each month, seems like tons of people still use these old Director programs. If this doesn't help you, please leave a comment and let me know what you were looking for and maybe I can help.


I tried to play an old pool game today, when I ran it an error popped up saying 'Director Player 6.0', 'This program requires at least 3mb of free virtual memory to run.'


I did a search on the net and found that when Windows moved from 98 to XP the way it reported Virtual Memory amounts was changed from bytes to kilobytes, which leads Director 6.0 to think that there is less Virtual Memory than there really is.
Most fixes revolve around setting your Virtual Memory under 1GB or 4GB+, which is a lot of messing around just to play an old game.


I opened IDA Pro and had a squiz, found the culprit and disabled it, I am not sure if the byte I changed is in the same place on all Director 6.0 games, or if the calls made before the byte I changed are the same, so I can't make a patch to change this automatically until I know these things, if you have another Director 6.0 program that is reporting this error send me the exe and I will see if I can release a patcher to fix this in all Director 6.0 exes. The call before it seems to be the same for Director Player 5 and 6 so I have made a patcher that seems to work on both Director Player 5 and 6.

call ds:GlobalMemoryStatus
mov eax, [ebp+Buffer.dwAvailPageFile]
add eax, [ebp+Buffer.dwAvailPhys]
cmp eax, 387520h
jge short loc_40D3B2

or in a hex editor
FF 15 F4 AA 53 00 8B 45 84 03 85 7C FF FF FF 3D 20 75 38 00 7D 6E

I changed jge (0x7d) (Jump if Greater or Equal) to jle (0x7e) (Jump if Less or Equal) as Rene pointed out change it to jmp (0xEB)(Jump)
In my game it was located at 0xc742

To find 0xc742 in FRHED, look for the Offset in the bottom left.

Each set of double numbers/letters is a byte displayed in HEX, each byte adds 1 to the Offset

Thanks to Gerard for the comment about Director Player 5 having the same byte sequence.

Patch
I've made a new patch, should work on Director 5 and 6 programs, and from my limited testing it works. If you have a Director 5 or 6 program that this patch doesn't work with please send me just the exe file and I'll test it and try and update my patch to allow it to work. Some people have reported this patch get's falsely marked as a Trojan, it's not but uses a packing method that some Trojans use. If this happens to you and it you can't tell your anti-virus solution to ignore this file download the unpacked one, though this hasn't been tested, let me know if it works for you.

http://www.mediafire.com/file/acca0blw7tlr3gc/DirectorMemPatch.exe

http://www.mediafire.com/file/ltfik2pefd1ngrv/DirectorMemPatchUnPacked.exe

Edit:
Hex Editor I recommend - Frhed http://frhed.sourceforge.net/

23 comments:

Anonymous said...

Thanks!

I can confirm that your method also works for three Winnie the Pooh games (Baby, Toddler and Pre-school) I tried to run. (Well, actually they are called Dreumes, Peuter and Kleuter because I'm using the Dutch versions).

The call was on the exact same place (0xc742) on all three games!

Anonymous said...

Mate, u are an absolute genius! I've used this on several pieces of educational software & its been in the same place every time & has worked every time! I've written a small patcher program that patches the file for you and creates a copy of the original called [exe name]_old.exe (if it can, if it doesnt find the correct hex value in the correct place it doesnt change the file)

if anyone wants it, download it from: http://www.cat101.net/DirectorPatch.zip

Many thanks

Anonymous said...

Thanks a lot, the patch works perfectly, I realy needed this to work.

Anonymous said...

This didn't work for me, but I followed the same principle as you did and came to this conclusion:

Look for the HEX-string: 7D 6E BE 80 00 00 00 8D 85 E0 FD FF

Then change 7D to 7E
Save the file and try again!
This worked for me with the game Mulle Meck Bygger bilar, but thanks to original poster for the idea!!!!
/MP

mwooldri said...

This is the *real* solution to the problem. Patch works great. I did try fiddling around with the virtual memory settings and even the small size and huge sizes didn't work. This was it! I've saved it for future reference.

GeekNurse said...

I have been trying to get "I SPY Junior" to run for weeks now. Thank you so much for this patch program. It worked like a charm.

Anonymous said...

The patcher program didn't work for me, but using XVI to change the 7D to 7E like another poster said worked fine:
"Look for the HEX-string: 7D 6E BE 80 00 00 00 8D 85 E0 FD FF

Then change 7D to 7E"

This is for an obscure piece of software called "Barchowski Fluent Hand"

JBee said...

Hi all!

Great to see that many people are able to work around this. I am trying to get it working for Scholastic's I Spy School Day - so far, no joy.

I am a bit baffled because I first attempted a DP 6 patch program which said the patch was successful. When I still continued to get the error, I downloaded a hex editor (Hex Editor Neo) and confirmed that the byte at 0xc742 was changed from 7d to 7e. I figured perhaps that is the wrong location for this specific program so I searched for the hex string mentioned in this thread and indeed it indicates the patch should be done at 0xc742 as it follows with 6e be 80 00 ...".

Any idea why the program is still confused about the memory despite what seems to be the correct patch in place? hmmmm....


Thanks much for any help!
JB

JBee said...

After posting my last message I was able to get it working! However, I am completely confused about what happened.

After applying and verifying the patch (7e at 0xc742) I kept trying to launch the program file ISpy (ISpy.exe) which continued to fail.

As a last-ditch effort, I double-clicked on ISpy_old, which the patch program created, and to my surprise it launched. After discovering this, I renamed ISpy to ISpy_orig and ISpy_old to ISpy and now all is good.

Interestingly, the file that is now working contains 7d at said location, which seems to be the original version.

One last comment - no, I haven't been smoking anything :) I'm really puzzled by all this - but I'm happy it is working =)

Cheers,
JB

laverda3-1000 said...

Hi I have thi problem with several of my daughters games & have downloaded the patch but am unsure where to aply it! Can soemone please help with which a step by step explanation of how to use the patch please?

sacah said...

laverda3-1000: Once you run the 'DirectorPatch.exe', it will launch a new window. Click the 'Select File' button, navigate to where game is and select the .exe file. It will then bring up a progress bar and once it reaches 100% file will be patched.

JBee: I'm not sure why that happened. I haven't used the patch, but for anyone else if the original exe doesn't seem to work, try the _old version. Let us know if it did it to yours too.

Anonymous said...

Had an interesting experience with this problem. After patching the program it ran fine maybe once or twice. Then it reverted to its old error message. I confirmed the specified byte was changed to 7E. On a whim, I decided to try changing it back to 7D. The program now works (for how long we'll see..). Thanks for figuring out the patch!

Anonymous said...

The original patch link is dead.
Does anybody still have the file?
Thank you.

ZuriYahe said...

Holy Cow! It worked! I've been looking for a solution for running the old game "Zero Critical" and this solution worked! Thanks a million!

Rene said...

Nice job! It worked.
I removed the memory check completly by replacing 7D with EB.

"jge" will be a simple "jmp" then and will always continue.

My Bambino said...

Great Post.....

I found your site on stumbleupon and read a few of your other posts. Keep up the good work. I just added your RSS feed to my Google News Reader. Looking forward to reading more from you down the road!

Thanks for sharing....

Anonymous said...

The DirectorPatch does not seems to work in my hands (with the Winnie the Pooh games) under XP pro under VMware. Any idea why not?
Also I can not seem to find the location 0xc742 in the .exe files, probably due to my own lack of knowledge on hex editors (I was using frhed). How should I do this?

sacah said...

@Anonymous: I've updated the Post with a picture. The location is called the 'Offset', you'll find this down the bottom left of FRHED. If you're still having problems email me and we'll see if we can resolve it.

Victor e Reinaldo said...

Dear Friends

This really works. I manage to run very old 95 Kids games.
Now i was trying to test the patch, but , the link to the patch is not working. Can somebody get other working link?

Thanks again for this blog !!!!!

Reinaldo

Victor e Reinaldo said...
This comment has been removed by a blog administrator.
Gerard Sweeney said...

I found on PCs with 3Gb, I had to change 7d to EB as per your post at the top.

However, I also found that when running a particular application on a UNC share, that I'd get "Problem opening "C:\\username\LOCALS~1\Temp" with a -34 error flag.

If I mapped the share to a drive letter, then it'd work (after editing the hex)

Victor said...

I had the same problem except that playing around with the virtual memory settings didn't work for me, however the patch worked like a charm on my Winnie the Pooh Pre-school.

Thank you so much!!!

Anonymous said...

Patched an old Linguaphone language learning program.

The actual file patched was ARAALPHA.EXE

Now it works again! Thanks very much!