Page 1 of 2
Wargasm
Posted: 2022-Nov-08, 18:12
by mikew
I came across my CD for this, so thought I'd try to see what makes this exquisitely named game tick.
Since the Installer is unlikely to work in Win64, I ran it using Wine on Linux and the result is the following files:
- warg_dir.PNG (45.33 KiB) Viewed 7046 times
That file 'access.log' stands out straight away. Are those the data filename hashes? That remains to be seen.
The main data archive 'wargasm.xfs' has an associated index file 'wargasm.ndx' and from that it would seem we have 23132 files to dig out.
I tried running 'tank.exe', but there's a CD check and I'd already put my USB CD/DVD player back in the cupboard.
To be continued...(maybe)
Re: Wargasm
Posted: 2022-Nov-08, 19:27
by mikew
The data structure isn't quite the same as TAW or Typhoon, but a slight modification of the Typhoon script from a few months back allows the files to be extracted. Apart from very small text files, they are all RA compressed except for a single BMP file.
- warg_bmp.PNG (50.79 KiB) Viewed 7042 times
I've suddenly got far more interested.
Re: Wargasm
Posted: 2022-Nov-08, 19:59
by Krishty
Please proceed 👀
Re: Wargasm
Posted: 2022-Nov-08, 21:27
by mikew
I haven't found anything similar so far
...but on the plus side, I might have found wargasm.xfs's Rosetta Stone.
After decompressing the RA files, some sorting was done to find text files etc.
The larger text files are usually the most interesting, so fairly quickly found the 919kB 'unk1089'
If we treat the first column of unk1089 as a 32bit signed integer, it matches up quite well with the hashes in the index file 'wargasm.ndx' which contains a 4 byte hash and a 4 byte offset into 'wargasm.xfs' for each entry.
- warg_rosetta.PNG (48.22 KiB) Viewed 7036 times
-2147173453=0x8004bbb3
-2146784464=0x800aab30 etc etc
So, while the offsets are wrong, and there's less entries in 'unk1089' (23122 instead of 23132), so they relate to different archive files, it should be possible to tie up most of the names with some cross referencing.
It can't be that easy, so it must be a trap...
Re: Wargasm
Posted: 2022-Nov-19, 22:24
by mikew
Well, it was that easy, so now I've extracted all 23131 files.
There were 10 without names, and 4 or 5 choked my RA decompressor, so left them compressed for now.
Now I've rezipped them to a 125MB file. Should I attach it here?
Re: Wargasm
Posted: 2022-Nov-19, 22:25
by Krishty
Sure, go ahead!
Re: Wargasm
Posted: 2022-Nov-19, 22:27
by mikew
I thought you'd answer quicker than that.
Here it is...
Re: Wargasm
Posted: 2022-Nov-20, 00:02
by Krishty
straw.bmp
wat
worlds\desert\desert8\mem.log
An artifact from memory debugging. Paths like
D:\cvs\hovis.win\HVMODELS\hmf.c(817) and
D:\cvs\enved.win\world.c(89) tell us:
- DID used CVS as source control system.
- They named their repositories projectname.platform. We also found ef2000.win in Super EF2000 and f22.win in ADF/TAW.
- The Wargasm engine was called Hovis, after the UK bread.
- They had a world editor enved as a separate project.
Re: Wargasm
Posted: 2022-Nov-20, 00:20
by Krishty
textures/tankdbg.ncb might be a big thing. It is a database file that was generated by Visual Studio for the purpose of syntax highlighting and quick project browsing. It contains the names of all types and variables used in a project, plus (eventually) source locations.
0.97 MiB is not as large as I’d expect for the whole engine, so it may just be about a sub-project.
If we found the closely related PDB, we’d be able to disassemble the game EXE with actual, real variable/type names. That’s what made
ReDriver2 possible in the first place: we found that someone had forgotten to delete the debug symbols from the Spanish version.
If you search the database for
.c (can be done with any hex editor), you’ll find that it’s about a project called
D:\cvs\TANK.WIN and there’s a
lot of variable names in there.
Edit: There are three files called
tank.aps in there. These are temporary Win32 MFC stuff from during development; I forgot what exactly.
Edit: tank.res are the compiled EXE resources for the game (or its prototype). With Visual Studio, you can look at the debug dialogs:
- image.png (2.82 KiB) Viewed 6982 times
- image.png (3.23 KiB) Viewed 6982 times
- image.png (4.09 KiB) Viewed 6982 times
… and more. Hey,
we’ve seen that in Typhoon, too!
Edit: How kind of them to include their Visual Studio project!
- image.png (30.68 KiB) Viewed 6980 times
Here’s the build output:
Code: Select all
--------------------Configuration: HovisLibs - Win32 Debug--------------------
Microsoft (R) Program Maintenance Utility Version 1.62.7022
Copyright (C) Microsoft Corp 1988-1997. All rights reserved.
--------------------Configuration: tank - Win32 Debug--------------------
Begining build with project "D:\cvs\TANK.WIN\tank.dsp", at root.
Active configuration is Win32 (x86) Console Application (based on Win32 (x86) Console Application)
Project's tools are:
"32-bit C/C++ Compiler for 80x86" with flags "/nologo /G5 /Zp1 /MTd /W3 /GX /Z7 /Od /Ob1 /I "\cvs\tank.win\hobj" /I "\cvs\tank.win\effects" /I "\cvs\tank.win\winstuff" /I "\cvs\tank.win\multplay" /I "\cvs\tank.win\genins" /I "\cvs\tank.win" /I "\cvs\hovis.win\hvGrph2d\direct3d" /I "\cvs\hovis.win\hvAud2d" /I "\cvs\hovis.win\hvAud3d" /I "\cvs\hovis.win\hvCoords" /I "\cvs\hovis.win\hvCore" /I "\cvs\hovis.win\hvCtrl" /I "\cvs\hovis.win\hvGrph2d" /I "\cvs\hovis.win\hvGrph3d" /I "\cvs\hovis.win\hvIo" /I "\cvs\hovis.win\hvLights" /I "\cvs\hovis.win\hvMath" /I "\cvs\hovis.win\hvModels" /I "\cvs\hovis.win\hvObjs" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Fp"obj\Debug/tank.pch" /YX /Fo"obj\Debug/" /Fd"obj\Debug/" /FD /c "
"Win32 Resource Compiler" with flags "/l 0x809 /fo"obj\Debug/Tank.res" /d "_DEBUG" "
"Browser Database Maker" with flags "/nologo /o"bin\Debug/tank.bsc" "
"COFF Linker for 80x86" with flags "dplayx.lib dxguid.lib winmm.lib dinput.lib ddraw.lib dsound.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /incremental:yes /pdb:"bin\Debug/tank.pdb" /debug /machine:I386 /out:"bin\Debug/tank.exe" "
"Custom Build" with flags ""
"<Component 0xa>" with flags ""
Creating temp file "C:\WINDOWS\TEMP\RSPE000.TMP" with contents </nologo /G5 /Zp1 /MTd /W3 /GX /Z7 /Od /Ob1 /I "\cvs\tank.win\hobj" /I "\cvs\tank.win\effects" /I "\cvs\tank.win\winstuff" /I "\cvs\tank.win\multplay" /I "\cvs\tank.win\genins" /I "\cvs\tank.win" /I "\cvs\hovis.win\hvGrph2d\direct3d" /I "\cvs\hovis.win\hvAud2d" /I "\cvs\hovis.win\hvAud3d" /I "\cvs\hovis.win\hvCoords" /I "\cvs\hovis.win\hvCore" /I "\cvs\hovis.win\hvCtrl" /I "\cvs\hovis.win\hvGrph2d" /I "\cvs\hovis.win\hvGrph3d" /I "\cvs\hovis.win\hvIo" /I "\cvs\hovis.win\hvLights" /I "\cvs\hovis.win\hvMath" /I "\cvs\hovis.win\hvModels" /I "\cvs\hovis.win\hvObjs" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Fp"obj\Debug/tank.pch" /YX /Fo"obj\Debug/" /Fd"obj\Debug/" /FD /c
"D:\cvs\TANK.WIN\Tracks.c"
>
Creating command line "cl.exe @C:\WINDOWS\TEMP\RSPE000.TMP"
Creating temp file "C:\WINDOWS\TEMP\RSPE001.TMP" with contents <dplayx.lib dxguid.lib winmm.lib dinput.lib ddraw.lib dsound.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib uuid.lib /nologo /subsystem:windows /incremental:yes /pdb:"bin\Debug/tank.pdb" /debug /machine:I386 /out:"bin\Debug/tank.exe"
.\obj\Debug\Hobj2bmf.obj
.\obj\Debug\Hobjbase.obj
.\obj\Debug\Hobjcol.obj
.\obj\Debug\Hobjdep.obj
.\obj\Debug\Hobjload.obj
.\obj\Debug\Hobjmove.obj
.\obj\Debug\Hobjphys.obj
.\obj\Debug\Hobjtemp.obj
.\obj\Debug\Dialogs.obj
.\obj\Debug\Winsim.obj
.\obj\Debug\Compass.obj
.\obj\Debug\Ladders.obj
.\obj\Debug\Chat.obj
.\obj\Debug\Dlgs.obj
.\obj\Debug\Hvdplay.obj
.\obj\Debug\Iobuff.obj
.\obj\Debug\Netgame.obj
.\obj\Debug\Allegian.obj
.\obj\Debug\Astar.obj
.\obj\Debug\envmap.obj
.\obj\Debug\Gunlogic.obj
.\obj\Debug\obstruct.obj
.\obj\Debug\scalemap.obj
.\obj\Debug\Sjmai.obj
.\obj\Debug\Sjmmis.obj
.\obj\Debug\Threat.obj
.\obj\Debug\Tlogic.obj
.\obj\Debug\Crater.obj
.\obj\Debug\Fxanim.obj
.\obj\Debug\Fxbase.obj
.\obj\Debug\Fxdef.obj
.\obj\Debug\Fxemit.obj
.\obj\Debug\Fxparse.obj
.\obj\Debug\Fxpart.obj
.\obj\Debug\Fxsound.obj
.\obj\Debug\Sunfx.obj
.\obj\Debug\Tracks.obj
.\obj\Debug\airdrop.obj
.\obj\Debug\Alt_at.obj
.\obj\Debug\Atmos.obj
.\obj\Debug\Attr.obj
.\obj\Debug\Bplane.obj
.\obj\Debug\Cameras.obj
.\obj\Debug\Chopper.obj
.\obj\Debug\Control.obj
.\obj\Debug\D3dsjm.obj
.\obj\Debug\Debug.obj
.\obj\Debug\Hud.obj
.\obj\Debug\JetModel.obj
.\obj\Debug\Options.obj
.\obj\Debug\Patch.obj
.\obj\Debug\Patchsam.obj
.\obj\Debug\Player.obj
.\obj\Debug\Rtpatch.obj
.\obj\Debug\Shadow.obj
.\obj\Debug\Sjm2d.obj
.\obj\Debug\Sjmairst.obj
.\obj\Debug\Sjmenv.obj
.\obj\Debug\Sjmgbv.obj
.\obj\Debug\Sjmintro.obj
.\obj\Debug\Sjmobj.obj
.\obj\Debug\Sjmsound.obj
.\obj\Debug\Sjmtank.obj
.\obj\Debug\Sjmtest.obj
.\obj\Debug\Special.obj
.\obj\Debug\Tga.obj
.\obj\Debug\Trkmod.obj
.\obj\Debug\Vertman.obj
.\obj\Debug\Weapdesc.obj
.\obj\Debug\Weapons.obj
.\obj\Debug\Worlddb.obj
.\obj\Debug\Zone.obj
.\obj\Debug\Tank.res
\cvs\hovis.win\bin\lib\hvAud2Dd.lib
\cvs\hovis.win\bin\lib\hvAud3Dd.lib
\cvs\hovis.win\bin\lib\hvCordsd.lib
\cvs\hovis.win\bin\lib\hvCored.lib
\cvs\hovis.win\bin\lib\hvCtrld.lib
\cvs\hovis.win\bin\lib\hvGr2Dd.lib
\cvs\hovis.win\bin\lib\hvGr3Dd.lib
\cvs\hovis.win\bin\lib\hvIod.lib
\cvs\hovis.win\bin\lib\hvLightd.lib
\cvs\hovis.win\bin\lib\hvMathd.lib
\cvs\hovis.win\bin\lib\hvModeld.lib
\cvs\hovis.win\bin\lib\hvObjsd.lib
\cvs\hovis.win\bin\lib\hvD3Dd.lib>
Creating command line "link.exe @C:\WINDOWS\TEMP\RSPE001.TMP"
Compiling...
Tracks.c
D:\cvs\TANK.WIN\Tracks.c(363) : warning C4244: '=' : conversion from 'float ' to 'int ', possible loss of data
D:\cvs\TANK.WIN\Tracks.c(459) : warning C4244: '=' : conversion from 'float ' to 'int ', possible loss of data
D:\cvs\TANK.WIN\Tracks.c(474) : warning C4020: 'TrackLanded' : too many actual parameters
Linking...
tank.exe - 0 error(s), 3 warning(s)
app.mak and
msdev.mak are the makefiles, in case you don’t want to use Visual Studio
They did use Linux in some places, as indicated by the
shit.sh shell script in the German sound effects.
Re: Wargasm
Posted: 2022-Nov-20, 00:27
by Krishty
iff/titel.iff uncovers more problems finding a proper name (unless this is some inside joke I don’t get):
- image.png (105.09 KiB) Viewed 6996 times
So we have
Wargasm,
Tank,
RRF 2025 …
Re: Wargasm
Posted: 2022-Nov-20, 00:34
by Krishty
bmf/cact2d.3ds is the actual source model for the according BMF file. Now we know they used 3D Studio for 3d modelling.
- cact2d.png (2.84 KiB) Viewed 6992 times
bmf/temp.dxf is probably the actual source model for one of the helicopters. Someone having AutoCAD ready? MGonzales?
- image.png (28.42 KiB) Viewed 6983 times
Re: Wargasm
Posted: 2022-Nov-20, 00:37
by Krishty
gui/interf~1.flc can be opened with Gimp. Looks like a source file for the main menu which was left in by accident.
- interf~1.png (273.66 KiB) Viewed 6992 times
Re: Wargasm
Posted: 2022-Nov-20, 00:40
by Krishty
mats/oldmats.zip is an actual backup of all materials in the game, from April 1998. If anyone ever wants to re-make an alpha version, this should be one of the first stops!
- image.png (17.64 KiB) Viewed 6991 times
Same for the animations backup in
hmf/anims.zip.
Re: Wargasm
Posted: 2022-Nov-20, 01:12
by Krishty
I could do this all night, but I’m risking trouble with my wife
This is quite a lot to sink in already. I better stop here before I cram out my copy of Visual C++ 6.0 and open their
tank.dsp project file …
Re: Wargasm
Posted: 2022-Nov-20, 09:02
by Krishty
Krishty wrote: ↑2022-Nov-20, 01:12I better stop here before I cram out my copy of Visual C++ 6.0 and open their
tank.dsp project file …
Visual Studio 2019 can still open it, BTW
- image.png (4.86 KiB) Viewed 6963 times
Re: Wargasm
Posted: 2022-Nov-20, 09:07
by Krishty
Krishty wrote: ↑2022-Nov-20, 00:27iff/titel.iff uncovers more problems finding a proper name (unless this is some inside joke I don’t get):
image.png
So we have
Wargasm,
Tank,
RRF 2025 …
I just happen to remember the other thread with developer quotes:
Krishty wrote: ↑2022-Oct-11, 22:00
Roger on Wargasm:
https://discord.com/channels/715120294918094858/715128081785946152/938554804576350258 wrote:Ah... Wargasm. The game with a name so terrible it almost killed the company.
[…]
Internally it was called "Tank". DID wanted to branch out from flight games and have a tank game (they had done a couple of space games, Epic and Inferno at that point). It struggled in terms of its direction for a while before becoming a more FPS and light sim game.
[…]
It had some pretty cool new tech and used the then new "Hovis" engine. Many of the programming team on it now work for D3T.
The multiplayer part was actually called
Multiple Wargasm internally
Re: Wargasm
Posted: 2022-Nov-20, 09:20
by mikew
Wow! That's a lot of insight is such a short time.
I've just gone back to the CD to see if installing with a different language changes anything, but I don't think it's anything significant.
The main data file wargasm.xfs is unchanged. So if there's a .pdb file, then it's already in there.
Re: Wargasm
Posted: 2022-Nov-23, 11:18
by mikew
The speech wav files, at least those in English, are stored in 'speech.xfs' with an index file 'speech.ndx' for the 174 files.
It looks like 'foo.txt' in the top folder of the extracted file set contains the names of these files. Something for when I've nothing better to do...
Re: Wargasm
Posted: 2022-Nov-23, 21:13
by mikew
I can't remember a game so difficult to get running.
It sort of works in Wine, but there's a font problem meaning I can't read anything. Some random mouse clicking gets me to some action:
- warg1.png (189.98 KiB) Viewed 6522 times
...but I got blown up seconds after taking that screenshot.
On Windows 10 it crashes immediately.
If I don't have the CD in the drive, it will complain so I know the exe does start running at least. But with the CD, the program just stops without any hint as to why. Changing compatibility modes didn't make any difference.
IDA complains about 'imports' if I try and open it in that, and fails to disassemble. That's probably because the exe is compressed by something called 'Petite 1.3'.
- cff_tank.PNG (20.26 KiB) Viewed 6522 times
So, next step is to decompress it somehow...
Re: Wargasm
Posted: 2022-Nov-23, 21:22
by Krishty
mikew wrote: ↑2022-Nov-23, 21:13That's probably because the exe is compressed by something called 'Petite 1.3'.
Wow, that’s old. Oldest version I find on the archive is
2.2 from 1999.
I hate executable compressors. Apart from prolonging the startup time, they prevent some optimizations from the OS. A waste of time, really.