Putting the 'role' back in role-playing games since 2002.
Donate to Codex
Good Old Games
  • Welcome to rpgcodex.net, a site dedicated to discussing computer based role-playing games in a free and open fashion. We're less strict than other forums, but please refer to the rules.

    "This message is awaiting moderator approval": All new users must pass through our moderation queue before they will be able to post normally. Until your account has "passed" your posts will only be visible to yourself (and moderators) until they are approved. Give us a week to get around to approving / deleting / ignoring your mundane opinion on crap before hassling us about it. Once you have passed the moderation period (think of it as a test), you will be able to post normally, just like all the other retards.

Interstate '76 no-cd!

SCO

Arcane
In My Safe Space
Joined
Feb 3, 2009
Messages
16,320
Shadorwun: Hong Kong
Edit: this no-cd is pointless since the in-game music is still missing doh!


So all the interstate '76 no-cd's floating around on the net are shit. I thought something stinked when none of them asked to copy anything from cd 2, that has, you know, the movies. So naturally the movies don't play unless you mount cd 2. Some "no-cd". This aims to make the game somewhat portable (as good as i can make it).

Besides that the registry entries are needed otherwise a crash happens, probably purposefully - naturally the "hacker" missed it. I think i have created a portable version of the game - I don't claim to be certain that this works, since i'm still to play it beyond the first mission, i don't know much of anything about assembly - and the programmers were obviously 'tricky' - i would appreciate some confirmations.

1) install the game, you need to use Britain language settings, in wine it is
export LANG='en_GB.utf8'
in a terminal before
wine SETUP.EXE (same terminal).
On windows it is a setting somewhere.
recommended install, don't install directx5 obviously.
2) install the gold patch (i76gpat16.exe)
3) unzip the database fix in the game dir: http://www.localditch.com/interstate-76/database.zip
4) copy the cutscene folder on cd 2 to the game dir.
5) if you want, install some glide emulator to the game dir: http://dege.freeweb.hu/ is the best because it can be used from the game dir (portable). Limit memory to 4mb like they say on the net. Play around with the other settings if you want (resolution).
6) edit the executable
i76.exe md5sum : 968c4e5a1ad753f64d900e38518cebb3


At 70130 there are the bytes
A0 2C D9 58 00
change them to
B0 2E 90 90 90 (this would return the drive letter of the cd-drive, we changed it to '.')

At 704D6 there are the bytes
3B C3
change them to
B0 01 (it's the cd check, copied from one of the cracks)

At FCE94 there are the bytes
20 3A 5C 63 75 74 73 63 65 6E 65 5C
change them to
2E 5C 63 75 74 73 63 65 6E 65 5C 00 (" :\cutscene\" to ".\cutscene\" duh)


edited i76.exe md5sum : 6b681f44f3bfd577234efc57c57bae91
The hacked exe has to have the same name, but save the original with another name.

7) Export the activision registry entry to the game folder so you can register it when you need to (naturally, you only need the interstate entries - you can delete others manually if there are any by treating the file as text.
It will look like this:
REGEDIT4



[HKEY_LOCAL_MACHINE\Software\Activision]



[HKEY_LOCAL_MACHINE\Software\Activision\Interstate '76]

"EXE"="i76.exe

[HKEY_LOCAL_MACHINE\Software\Activision\Interstate '76\1.2]



[HKEY_LOCAL_MACHINE\Software\Activision\Interstate '76 Gold Edition]

"Minimum"="0"
Name it add_game_entries.reg.

Also do a copy named "delete_game_entries.reg and edit it by adding a - to each key thus:
REGEDIT4



[-HKEY_LOCAL_MACHINE\Software\Activision]



[-HKEY_LOCAL_MACHINE\Software\Activision\Interstate '76]

"EXE"="i76.exe

[-HKEY_LOCAL_MACHINE\Software\Activision\Interstate '76\1.2]



[-HKEY_LOCAL_MACHINE\Software\Activision\Interstate '76 Gold Edition]

"Minimum"="0"

8) create a shortcut to launch the game that calls either "i76.exe -glide" or "i76.exe -d3d" if you did 5) or not.
Like this this Start.bat here:
regedit /s add_game_entries.reg
i76.exe
regedit /s delete_game_entries.reg

9) Set the compatibility of the game to windows 98
NOTE: i haven't been able to find a way to enable compatibility mode for a executable from the command line. If you know of a way please tell!

The splash executable wont allow you to play. I've not hacked it. But the i76.exe will and you can pass the -glide or -d3d arguments to play with that.

Copy the game somewhere else, uninstall, run the batch file to see if works.
You can create a batch file one folder up and put the game folder inside another created folder with the batch file to make it obvious.


Fucking copy protections. I'm not sure if anything is missing, or this is stable. Does the melee options have movies?
 

SCO

Arcane
In My Safe Space
Joined
Feb 3, 2009
Messages
16,320
Shadorwun: Hong Kong
Right. Fuck. The ingame music appears to be cd music, so t is missing. Oh well, back to non-portable iso mounts. Sorry to waste time people (the exe is still better than the no-cd cracks. In fact as the game has cd music, using no-cd cracks doesn't seem advisable, maybe that one that added new software resolutions).
 

spekkio

Arcane
Joined
Sep 16, 2009
Messages
8,288
I really don't get this "portable versions" idea for pc games.
Extract images from the archive, mount, install, use cracks/patches/fixes, play. You do everything yourself, so you know what you're doing.
Portable version are for consolefags too stupid to run old PC games on their own.
Or even worse: lunix-fags (lol I can play DOS/Windows games on linux, I'm awesome)... Well, nobody cares, boot to Windows you morans.

:rpgcodex:

tl;dr

Thanks for the effort, I appreciate it actually...
More tips about running I'76 on modern systems (I post this every time somebody mentions this game):
http://www.ntcompatible.com/compatdb/de ... ndows.html
 

SCO

Arcane
In My Safe Space
Joined
Feb 3, 2009
Messages
16,320
Shadorwun: Hong Kong
It's very simple. You can't mount where you have no permission to install a cd driver - i have a portable hardrive - capisce?.
 

BethesdaLove

Arbiter
Joined
Aug 7, 2008
Messages
1,998
Cant be that many tracks on the cd. 20 tops. Find all references. Patch to play from root directory.
 

spekkio

Arcane
Joined
Sep 16, 2009
Messages
8,288
SCO said:
You can't mount where you have no permission to install a cd driver
And where would that be?

:M

BethesdaLove said:
Patch to play from root directory
And how would he play CD-Audio tracks from the HD directory? Game should use .wav files or something?

:M
 

Texas Red

Whiner
Joined
Sep 9, 2006
Messages
7,044
I had a dream about this game yesterday. I was thinking about it today but couldn't remember the name. Curious.
 

BethesdaLove

Arbiter
Joined
Aug 7, 2008
Messages
1,998
spekkio said:
SCO said:
You can't mount where you have no permission to install a cd driver
And where would that be?

:M

BethesdaLove said:
Patch to play from root directory
And how would he play CD-Audio tracks from the HD directory? Game should use .wav files or something?

:M

First question. Not your concern. He wants it.

Second question. Yeah. Play the wav files. Since the cd tracks had no seeking, it will work.

push pszSound
push 0
push fdwSound
call PlaySound

Profit.

This is from my google-fu. The function is used to play cd tracks. 4 vars.
http://msdn.microsoft.com/en-us/library/dd757161(VS.85).aspx

PlaySound is 3 vars and if he is lucky, they all will fit. If not, fuck around with the PE file to get some free space at the end. jmp there, execute commands.
http://msdn.microsoft.com/en-us/library/dd743680(VS.85).aspx
 

SCO

Arcane
In My Safe Space
Joined
Feb 3, 2009
Messages
16,320
Shadorwun: Hong Kong
That's very interesting - i might even do it. Unfortunately my master plan has another flaw - the game needing the registry - while on wine editing the registry is not a privileged operation, on windows it is, so the game wouldn't work anyway on windows (without massive editing that i'm sure to fuck up).

Oh well installing cdemu kernel module.
 

SCO

Arcane
In My Safe Space
Joined
Feb 3, 2009
Messages
16,320
Shadorwun: Hong Kong
Yes cdemu works (and is needed on linux - prehistoric mount command).
 

commie

The Last Marxist
Patron
Joined
May 12, 2010
Messages
1,865,249
Location
Where one can weep in peace
Divinity: Original Sin Project: Eternity Divinity: Original Sin 2
Suchy said:
Is there any other game like this? Except I'82 which was shit.

I-82 was about the first example of consoletardation of a game, without it being made for consoles. This alone should seal it's place in infamy.

The music was good though.

I-76 was the dogs bollocks though. They were a good few years for Activision from the mid to late 90's what with this, Battlezone, MechWarrior.
 

SCO

Arcane
In My Safe Space
Joined
Feb 3, 2009
Messages
16,320
Shadorwun: Hong Kong
What is this shit about replacing a dll file in mission 13?

Does anyone that played this when the gold version came out had to do this, or is it a compatibility bug?
GoG could hire some starving assembly artists so they don't release not working games.
 

SCO

Arcane
In My Safe Space
Joined
Feb 3, 2009
Messages
16,320
Shadorwun: Hong Kong
This is just a investigation, as we have knowledgeable people here, maybe we can brainstorm this fucking bug.

Naturally, i don't know shit of assembly, but i can handle a streamlined dissasembler.
(for some reason it's really hard to debug in wine real time - the game window corrupts the debugger one).

Wine tells me where the exception originates. It's a simple move (the one before ret). It also tells me why
CPU Disasm
Address Hex dump Command
Comments
00467470 /$ 8B4424 04 MOV EAX,DWORD PTR SS:[ARG.1] ; i76_without_cd_music.00467470(guessed Arg1)

00467474 |. 8B88 BC030000 MOV ECX,DWORD PTR DS:[EAX+3BC]

0046747A |. 8B41 70 MOV EAX,DWORD PTR DS:[ECX+70]

0046747D \. C3 RETN
I'm talking out of my ass from now on
ECX is a counter register, but google tells me that in object oriented languages it can also hold the "this" pointer. The mov fails because:
"Unhandled page fault on read access to 0x00000070 at address"
So ECX is zero, a impossible position for a object reference to be, unless it is null ofcourse. This with the highly suggestive 'No Salvage' part of the mission 13 conclusion is probably why it's not working.
It's difficult to tell because of no debugger.

Now there is another example of a no-salvage situation in the game, the dream mission 3 or 4. If the code could be transplanted...
 

SCO

Arcane
In My Safe Space
Joined
Feb 3, 2009
Messages
16,320
Shadorwun: Hong Kong
What exactly does the gold patch add? I'm thinking of reverting to 1.08. The gold version has no notes.
 

BethesdaLove

Arbiter
Joined
Aug 7, 2008
Messages
1,998
SCO said:
This is just a investigation, as we have knowledgeable people here, maybe we can brainstorm this fucking bug.

Naturally, i don't know shit of assembly, but i can handle a streamlined dissasembler.
(for some reason it's really hard to debug in wine real time - the game window corrupts the debugger one).

Wine tells me where the exception originates. It's a simple move (the one before ret). It also tells me why
CPU Disasm
Address Hex dump Command
Comments
00467470 /$ 8B4424 04 MOV EAX,DWORD PTR SS:[ARG.1] ; i76_without_cd_music.00467470(guessed Arg1)

00467474 |. 8B88 BC030000 MOV ECX,DWORD PTR DS:[EAX+3BC]

0046747A |. 8B41 70 MOV EAX,DWORD PTR DS:[ECX+70]

0046747D \. C3 RETN
I'm talking out of my ass from now on
ECX is a counter register, but google tells me that in object oriented languages it can also hold the "this" pointer. The mov fails because:
"Unhandled page fault on read access to 0x00000070 at address"
So ECX is zero, a impossible position for a object reference to be, unless it is null ofcourse. This with the highly suggestive 'No Salvage' part of the mission 13 conclusion is probably why it's not working.
It's difficult to tell because of no debugger.

Now there is another example of a no-salvage situation in the game, the dream mission 3 or 4. If the code could be transplanted...

Just forget it.
MOV EAX,DWORD PTR SS:[ARG.1] ; i76_without_cd_music.00467470(guessed Arg1) // moves the addr from stack into eax
MOV ECX,DWORD PTR DS:[EAX+3BC] // eax+3bc into ecx, which is used as a general register for anything
MOV EAX,DWORD PTR DS:[ECX+70] // ecx+70 to eax

The error say that there is a 0 in ecx, meaning the previous mov moved it there, meaning the eax+3bc is wrong, meaning the previous mov to eax could be wrong and the stack contains something wrong. And so on.
 

SCO

Arcane
In My Safe Space
Joined
Feb 3, 2009
Messages
16,320
Shadorwun: Hong Kong
I managed to put the debugger window working. I just had to use the glide version ("-glide" argument) & found where the game is loading that function from.

I found something interesting setting the breakpoint on the function that calls the function above. It is called many times before it crashes. First time appears to have correct arguments (or so it seems) - then there is a lot of code, and then ( i didn't step through it all) - it is called again, (11 times in total counting the first), all it correct values except the last, wauto_somesuffix until it crashes. Stinks of missing data or corrupted data files or off by one or something.
 

Sceptic

Arcane
Patron
Joined
Mar 2, 2010
Messages
10,872
Divinity: Original Sin
You gotta take the good with the bad and all that...

Incidentally the Glide version only went to 640x480 if I recall. Unless using a wrapper allows higher resolutions, you may want to use software rendering anyway to get to the higher resolutions. Then again at the time I got the game I had a crap CPU and a Voodoo 2 so Glide gave much better FPS. Does the game look any different visuallyÉ
 

As an Amazon Associate, rpgcodex.net earns from qualifying purchases.
Back
Top Bottom