Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Gokuma

Strife hacking has begun!

Recommended Posts

Using the offsets listed in dehacked's ini file I looked around in the ultimate doom.exe with a hex editor to see how the data dehacked edits is laid. out With those offsets as a general idea where to look around, I opened up Strife1.exe in the hex editor and figured out the offsets for every "thing." Unfortunately I have a bunch of unknown things. Anything with a map# number or hit points other than 1000 I figured out. That leaves projectiles, guts, shrapnel, teleport fog, and who knows what else.

So now using this hex editor I'm hacking around doing stuff like making Acolytes drop missile launchers instead of ammo clips, making the Bishop appear in deathmatch (Multiplayer is deathmatch only in Strife). I'll probably also raise the Bishop's hit points. 500 is way too low for what he is. Text changes are extremely easy.

I'm going to try to figure out some frames and make acolytes shoot a grappling hook.

Once I have the all the major data section offsets figured out, a dehacked type editor should be very feasable.

Share this post


Link to post

Well I figured out the major offsets as best as I could. Here's some of my notes. I'm using the editor hexposure you can probably find at zophar.net. The spacing is the number of arrow key presses to get to the same part of the next thing/sound/frame/etc.

# The size of the user-defined exe file.
# Ultimate Doom.exe            Strife1.exe
#size = 715493                 753215

# These are the offsets for the various data sections...
#             Ultimate Doom    Strife   Doom spacing     Strife spacing
#             dec      hex     hex
#thingoff   = 677472   A5660   ADF90                     Down 6
#soundoff   = 645924   9DB24   A5814    Down 2 Right 4   Down 1 Right 8
#frameoff   = 650396   9EC9C   A68F8    Down 2 Left 4    Down 1 Right 4
#spriteoff  = 649844   9EA70   A64D0
#ammooff    = 638872   9BF98   A4024
#weaponoff  = 638904   9BFB8   A405C (would be if like Doom but prolly wrong)
#                                     A30CD (maybe)
#textoff    = 691064   A8B78   8CE58 (not sure)
#cheatoff   = 642244   9CCC4   A1411, A2A70, A2EB1 (unlikely possibilities)
#textlength = 24072     5E08    5E22


#Strife
#sprite name text 91C44 
I have the offsets for each separate "thing" down as well. I'll probably put everything in text files on a new Strife page I'll probably add to my site.

Share this post


Link to post

Heh, I got Acolytes shooting the grappling hook and then blasting you with their assault guns once they pull you up close.

My brain hurts from converting so much decimal and hex back and forth.

Only drawback is the guy with grappling hook will turn into an acolyte since I used his attack frames. I tried changing code pointers but it didn't work. I remember in older versions of dehacked changing CP's didn't do anything, but in newer versions they're referenced differently. It's time I looked into dehacked's source.

Share this post


Link to post
Vegeta said:

Can you do that with Hexen?

There's a DeHackEd equivalent for Hexen, so that'd be kinda pointless :) HexHacked I think it's called.

Share this post


Link to post

Know where to find it and can it be used in zdoomhexen?

Share this post


Link to post

Just curious, are strife maps in the doom format? Or are they in their own similar to hexen's?

Share this post


Link to post
NiGHTMARE said:

There's a DeHackEd equivalent for Hexen, so that'd be kinda pointless :) HexHacked I think it's called.


Yes, but even Ichor (the wizard of Hexen), couldn't make it work :-)

Share this post


Link to post

I can't get it to work. I have all of the paths in the .ini file right, and still gives me the same error:

Checkfiles: NOT successful.

Share this post


Link to post
Ralphis said:

Just curious, are strife maps in the doom format? Or are they in their own similar to hexen's?

They're in the regular Doom format. Even some of the linedef and sector types seem to be the same (e.g. doors and lifts).

Share this post


Link to post

I swear this is like looking at the Matrix in encoded form, especially when scrolling quickly with page up/down to look for something. I can also do crazy flips and stuff, except in reality, not some virtual reality movie crap. Now if only Hexposure had a green color scheme instead of blue and purple, maybe if I adjust my monitor's tint.


I'm pretty sure I had the Hexen Hack Editor working. There's three different versions available on the net and you could try each once with Hexen versions 1.0 and 1.1 until you find a combination that works if they don't all work.

You can get Hex versions 0.53p and 0.84f here

You can get version 0.82pb at the DeHackEd homepage.

There's also HHE v1.1, the Heretic Hack Editor. There's corrected offsets on the DeHackEd homepage to get it to work with newer versions of Heretic.

Of course Hex and HHE only work with vanilla Hexen and Heretic, no source ports.

EDIT: Damn, no version of Hex will run on a Win98SE machine, whether in Windows, restarted in dos mode, or booted straight to command prompt. v0.82 and v0.84's crappy installer wouldn't run so I tried it on a Win95 comp and copied the files back to my Win98 comp, but Hex itself won't run. It just immediately gives a runtime error.

On an old Win95B machine, Hex runs just fine though, even while in windows. But if you don't have an old dos or Win95 machine to work with, I guess you'll have to use something like Hexposure which I use for Strife. Just for the hell of it, I repackaged Hex versions .82 and .84 so people don't have to deal with the installer. Its inifile.txt and .dat files should help in hacking with Hexposure. At Least HHE for Heretic works fine.

Next task to try in Strife: Make a player weapon shoot a grappling hook, whether to pull other players or enemies (not sure if it'll work being a monster weapon), or shoot a projectile that shoots the hook back at the player to grab them and pull them up (definately possible).

BTW, Deepsea supports Strife and I fixed up DETH's strife.cfg (available on my site). Unfortunately Strife's texture1 and texture2 resources are a different format causing DETH to crash often and it can't display them. I grouped the linedefs in a way you can really see what's old, new, and changed though. Also Jack Vermeulen actually has the official Strife specs from Rogue, but seems to be a bit uncooperative. He lost the original files but has them all printed out. All he has to do is scan them. I even offered to entirely retype them then. Give me a little while more to see if I can get him to release them. They would contain useful info on scripting, making a script compiler, the texture format, and all the linedefs whose descriptions are too truncated to understand in any editor. If anyone wants to send him an e-mail (jack @ sbsoftware.com) to politely encourage him to release the specs or send them to me to prepare them for release, please go right ahead. If you ask me, I think they belong in the docs directory on 3darchives right next to the Doom, Heretic, and Hexen official specs.

Share this post


Link to post

I LOVE STRIFE! I LOVE GOKUMA! Dude, with this, it'd be immensely helpful for somebody who wanted to reverse engineer the Strife engine.

Share this post


Link to post
NiGHTMARE said:

They're in the regular Doom format. Even some of the linedef and sector types seem to be the same (e.g. doors and lifts).


Doesnt that mean it's possible for strife to be edited in Wadauthor?

Share this post


Link to post
BBG said:

I LOVE STRIFE! I LOVE GOKUMA! Dude, with this, it'd be immensely helpful for somebody who wanted to reverse engineer the Strife engine.



Fuckin swheet! I just reloaded Strife on my comp the other day and it kicks a ton of ass. I forgot how much I loved this game. This is awesome stuff your doing Gokuma! I hope this does lead to smebody reverse engineering the Strife engine like BBG suggested.....

Share this post


Link to post

Who knows machine code?

Gokuma, can the pointers easily be found for the text strings? I always hated the length limit in Dehacked.

Share this post


Link to post

Text to change is pretty easy to find in the exe. Look at the offsets 8DAF6, 8E3D3, 8EFB8, 8CE58, 91C44 for stuff. In hexpose, press tab to switch to the box showing the text to easily type your own, instead of entering hex values for chars.

But as far as I know you can't replace text with longer text (maybe a char or two like DeHackEd).

I'm glad what I'm doing is so well received. But I suggest trying to get Rogue's official editing specs and trying to find people who worked on the game, to ask about the sources and stuff, before going through the trouble of reverse engineering.

BTW, I added an animated gif of the grappling hook in use to my update. I also added a screenshot of the aftermath of a war between two players' opposing rebel armies in my lamasery.wad.

Share this post


Link to post

Oh, if someone was to make texture wad, of just the texture1 and texture2 entries of Strife in Doom's texture format... Then any level editor with customizable game support files could support Strife perfectly except for the lack of script support by loading this wad in the editor But you wouldn't use it with Strife itself). You can get all the thing, linedef, and sector types, from the DETH.CFG I fixed up, (but I'm going to upload a newer more accurate version soon). I got the info from Deepsea, but its files with them must hidden in some binary file.

Of course making this said texture wad would be a rather large undertaking. Exporting the pnames entry and all the texture graphics to the wad to work with while making it would probably be a good idea and they could be deleted later.

Share this post


Link to post
Gokuma said:

Oh, if someone was to make texture wad, of just the texture1 and texture2 entries of Strife in Doom's texture format... Then any level editor with customizable game support files could support Strife perfectly except for the lack of script support by loading this wad in the editor But you wouldn't use it with Strife itself). You can get all the thing, linedef, and sector types, from the DETH.CFG I fixed up, (but I'm going to upload a newer more accurate version soon). I got the info from Deepsea, but its files with them must hidden in some binary file.

Of course making this said texture wad would be a rather large undertaking. Exporting the pnames entry and all the texture graphics to the wad to work with while making it would probably be a good idea and they could be deleted later.


Heh, I was gonna do that for a "ZStrife" mod for ZDoom, but then Randy supported the Strife texture format in ZDoom.

EDIT: My method was to have DeepSea open, showing the Strife texture entries, and having WinTex (fastest IMO for just creating new textures, although in XWE you can just type in the offsets instead of nudging the patches around) open with a seperate wad containing all the patches. I rebuilt a bunch of textures one by one, and as many as I did I still didn't get halfway through.

Share this post


Link to post

Even if you only got a quarter or 10% done it's still a good start and should stop DETH from crashing.

Share this post


Link to post
Gokuma said:

Even if you only got a quarter or 10% done it's still a good start and should stop DETH from crashing.

I was closer to half... I think. I was working from the BOTTOM of the texture list in Deepsea up. Uh... I don't suppose you want the wad to try and finish work yourself, do you?

Share this post


Link to post
Ultraviolet said:

EDIT: My method was to have DeepSea open, showing the Strife texture entries, and having WinTex (fastest IMO for just creating new textures, although in XWE you can just type in the offsets instead of nudging the patches around) open with a seperate wad containing all the patches. I rebuilt a bunch of textures one by one, and as many as I did I still didn't get halfway through.

This is the fast way to do this (if there's a typo, you'll find out<g>):

Export all the PNAMES entries. Press F7, Export and select all the graphics that belong to the PNAMES - turn on Grouping. Note: Open up another copy of DeePsea for reference and use F7, TEXTUREx name edit with -SORTED- turned on to easily catch all the patch names.

Manually add exactly the lumps you want (avoid getting extra). Just go the start of the patches and shift+down arrow to select. Then export all at once as BMPs into some empty directory.

There are a few ways to do the next step. First go back into a DOOM type project. These steps ADD the STRIFE textures to the DOOM ones. FLATs are easier - but basically the same steps, except change references to FLATs.

Method 1:
---------

F7 and AutoTextures from BMPs. Press Add Files. Now select ALL the BMPs. If you put them in a unique directory, just press Shift+END and you have them all. You should be able to do them all at once, but you can Add files more than once just in case the limit is reached.

Now having the STRIFE version still open, rename the TEXTURE name as required, since the default name is the patch name.

Ok, now you have some textures that are not complete and some that aren't STRIFE textures. For those you need to do a final edit recomposing using whatever suits you.

You could also just DELETE all the textures (easy to do in DeePsea) and then all you have is a list of PNAMES and the lumps that go with them.

Method 2
--------

Export as above, but use the F7/Merge-Import Tool and select all the BMPs. Leave the Textures radio button as is. Press Save All Files to make a file with all the graphics in DOOM format.

Now OPEN that file in the editor. Nothing will show of course.

Press F7/AutoTextures from Graphics. Check "External Files" only and uncheck "Auto Textures" and Select All. Now save this into the file with all the graphics and now you have a file with all the control stuff you need.

Again Use the F7/TEXTUREx tool to fix or whatever you want.

Copyrights
----------

Either way, it does not take very long to finish. Now you are left with one big problem. These textures are copyrighted and you can NOT distribute them. Something skimmed over in all this. You can't assume anything here, otherwise you'd find the registered STRIFE iwad in the wild - and that's not true.

So maybe the way to do this is to use Deutex (convert the format to GIF), build a control file and let people use that to build their own textures from their STRIFE1.WAD. Or maybe Fred can rig up something using his little tool. Or I just might build a text file input tool since it's pretty simple to do and there are some occasions where this comes in handy dandy.

Share this post


Link to post

Thanks for the tips.

Once the new texture1 and texture2 resources are made, there's no need for having any actual texture gfx in the wad, since they're still going to be read from the IWAD. So I don't see any copyright problems there.

I'm busy hacking around with the exe, so if anyone wants try any of those methods, please go right ahead.

Ultraviolet, if you're not going to finish it, it would be cool if you posted your wad here. It's already useful and someone else might want to finish it.

Share this post


Link to post

My gosh, Gokuma, You are God! Maybe if you work hard enough, you can crack the source code, and then Zdoom will be able to have Strife Support! Yay!

Share this post


Link to post
Xaser said:

Zdoom will be able to have Strife Support! Yay!

It already does, it's just that it supports around 5% rather than 100% of Strife's features ;)

Share this post


Link to post
deep said:

This is the fast way to do this

Great, then you do it. :P I'm not interested in finishing it myself anymore because ZDoom now supports the Strife texture format and I don't need to do all that.

Gokuma said:

Ultraviolet, if you're not going to finish it, it would be cool if you posted your wad here. It's already useful and someone else might want to finish it.

I've got no way to post it. It seems to me, though, that if you use deep's method, you'll get it done more quickly than by using my method, but you also won't be able to use what I've done so far as a base to continue from because deep's method seems to involve starting from nothing... or at least it might be easier that way, anyway, what with the instructions involving selecting everything, and you probably won't want duplicates. Anyway, I didn't read the instructions completely because I'm not interested because I don't have to do it, as I said above.

If you still could use it, contact me (via PM?) and we can discuss options for a file transfer... it won't be done via e-mail though, heh, that's for sure. I'm using Hotmail...

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  
×