Hello!

It looks like you're new here. If you want to get involved, click one of these buttons!

Doom 2016 / Doom 4

2

Comments

  • Hatti's cinetools definitely don't work anymore, the game hangs. The CT from DET also doesn't work anymore, except the FOV, but that's easily found anyway.
    I tried to find the camera but I suck at finding cameras of 1st person games, I always end up finding the coords for something else (like the weapon ;)).

    So I tried a different route: enable the photomode during normal gameplay (which is currently not possible). This turned out to be easy. It's a simple setting which is enabled (single byte) through the menu and they simply hide it in the normal gameplay menu. Enabling it in a CT did the trick.

    See: https://gist.github.com/FransBouma/52a0d505b1b7d02d36d4dc7d8e7b125b

    Press INS to enable the photomode during normal gameplay, shift-ins to disable. No idea if it works in multiplayer as well, I don't play multiplayer games so haven't tried it.

    It's indeed not the best photomode one would want, but alas, better than nothing. If I can find the camera coords, I can quickly create an injectable camera, but finding these isn't easy...
  • Man, I wish I had this during my first playthrough, great idea! Do you think a similar sort of approach might work for enabling the camera during cutscenes? This always bugged me that you could tantalisingly enable the photmode but the camera controllers were then locked.
  • One3rd said:

    Man, I wish I had this during my first playthrough, great idea! Do you think a similar sort of approach might work for enabling the camera during cutscenes? This always bugged me that you could tantalisingly enable the photmode but the camera controllers were then locked.

    I think that's not going to work with the photomode, unless I find the location of that. I simply found the value of the setting which enables the photomode, during a replay of a mission, then went back into the normal game and wrote a '1' to it: voila :) We developers are lazy people sometimes so I assumed (correctly) they simply hid the menu entry in the menu for certain situations like when you're playing through the campaign ;).

    Will try later again for the camera coords.
  • edited January 27
    Camera tools almost done. Camera itself works fine, everything is smooth. FoV is a pain, but have a way to get it working, will add that tomorrow, as well as timestop (which I have to find first, but I don't expect that to be much of a problem) and then a release hopefully later tomorrow (saturday). My first camera without using any CT. It was a pain to get the coords/matrix for this game, but learned a lot, and practice makes perfect, right?
  • edited January 28
    EDIT - Ah excellent otisinf! Cant wait to try your camera tool. Ive been trying to get the CET to work for capturing some more ingame video but just no luck. Ive been waiting ages for Hatti to update the free cam but it sounds like yours is coming along nice.

    Look forward to trying it! :)
    OtisInf said:

    Hatti's cinetools definitely don't work anymore, the game hangs. The CT from DET also doesn't work anymore, except the FOV, but that's easily found anyway.
    I tried to find the camera but I suck at finding cameras of 1st person games, I always end up finding the coords for something else (like the weapon ;)).

    So I tried a different route: enable the photomode during normal gameplay (which is currently not possible). This turned out to be easy. It's a simple setting which is enabled (single byte) through the menu and they simply hide it in the normal gameplay menu. Enabling it in a CT did the trick.

    See: https://gist.github.com/FransBouma/52a0d505b1b7d02d36d4dc7d8e7b125b

    Press INS to enable the photomode during normal gameplay, shift-ins to disable. No idea if it works in multiplayer as well, I don't play multiplayer games so haven't tried it.

    It's indeed not the best photomode one would want, but alas, better than nothing. If I can find the camera coords, I can quickly create an injectable camera, but finding these isn't easy...

    I must be missing something as I cant get this to work.

    Ive loaded Doom, alt-tabbed to load CE and the table, loaded the Doo64.exe process and alt-tabbed back ingame. Pressing INS does nothing, only a HUD message pops up at the bottom of the screen saying [\]Photmode. Nothing happens.
    Shift-INS disables the CET and the [\]Photomode message disappears.

    Any help?

    I really wish Hatti would update the free cam, such a great tool. Unfortunately ID keep breaking our mods every time they update the game :( So frustrating.



  • You should _then_ press \ to enable photomode :) The CT just enables the option, which is disabled in regular playthrough. Freecam is done. Just a sec
  • edited January 28
    Here they are: camera tools for DOOM x64 :) Everything is implemented, timestop, camera, tilt, etc.
    https://github.com/FransBouma/InjectableGenericCameraSystem/tree/master/Cameras/DOOM

    I did find out that there's a problem with Reshade and SRWE: DoF is gone when you resize the window (this is with reshade 3, latest build from source. Reshade 2 doesn't work with Doom at all, it keeps the screen black). This for me makes the camera already almost worthless, but still, for the people who want it, it's here :) It does work together with the photomode btw, (as they just implemented 1 camera) so you can use the dof from that. At one time I found the DoF setting instead of the timestop, which was nice, but as the game crashed I lost the address and didn't look for it anymore as I'm dead tired now.

    So! I hope this works for everybody, have fun :)
  • edited January 28
    Excellent work otisinf!

    Just tried it out and it works perfect. Interesting what you say about Reshade not working, I didnt even know Reshade had been updated to 3.0 and now working with Doom, I'll have to check this out.

    Now I can capture some more ingame video thanks to your camera tool.

    Massive thanks for taking the time to create it, really appreciate it. Lets hope the game does not get updated soon and break the camera tool.

    PS - I figured out your photo mode CET, it was the game not doing what it should. I play the game with keyboard and mouse and the default photo mode key apparently is the \ key, it was not working.
    It does however work fine when using a controller and pressing the left thumb stick in. So, your CET is working perfect, it was the game telling me lies about the \ key.
  • edited January 28
    Heh :) Glad you like it. One caveat: the camera doesn't seem to work during cinematics. I don't know why not, Perhaps they use a different camera altogether during cinematics. :/
  • edited February 3
    otisinf, does your camera tool use the same memory addresses as the cheat engine tables for Timestop and Slowmotion etc?
    The original - or updated - DET cheat table allows for camera movement in cinematics / cutscenes. Could this be implemented into your camera tool?

    Sorry for bad description, I'm still learning cheat engine and how it works.
  • neoglow said:

    otisinf, does your camera tool use the same memory addresses as the cheat engine tables for Timestop and Slowmotion etc?
    The original - or updated - DET cheat table allows for camera movement in cinematics / cutscenes. Could this be implemented into your camera tool?

    I don't think so, but I can't verify, the DET table I have doesn't work at all anymore (only the FOV works). I had to find the address again myself, and as this is the address that works in normal gameplay, I'm not sure if this has changed in later DOOM builds vs. in early doom builds. The photomode they've added also doesn't allow you to move during cutscenes, my guess is that they added code to block movement of the camera during cinematics and thus also when I move the camera. I have to do more testing though, but it looks like they simply swap to another camera when they play cinematics.

  • Thanks for reply otisinf.

    Im trying to find the Timestop in Doom again, mainly as an experiment to practice and learn more about CE so I can use it in other games.

    Where do you start to find the 'time' in a game in order to freeze / pause it? What clues can you use to find the correct memory address? I have experimented with finding values such as ammo count or player health and finding the camera axis, Y being the easiest by raising or lowering the player in the game but Im totally stuck with time, where do I start?

    Also, if I manage to find the time value and stop time, do I need to find more values to allow the player to move freely whilst the game is stopped or does the time value only effect the environment/game map and not the player?

    Thanks for all your help otisinf.
  • In fact, am I looking at this the wrong way round? Is a CE Speedhack script used to freeze / pause the game and then the value(s) has to be found to allow the player to still move?
  • Timestop can be found by triggering something that either slows down the game (e.g. 'focus' in some games where you press a key and the game goes slower) or when the game stops completely, e.g. when you alt-tab or bring up the menu. First you have to setup hotkeys in CE's settings for the various 'next scan' variants, so you can scan without alt-tabbing. The first kind of timestop, the slow down kind, is easily found by first running the game normally, and then do a first scan for Float, unknown initial value. Then in-game trigger the slow down and do a 'next scan, decreased value'. Then run the game normally again, do a 'next scan, increased value' and repeat that enough times till you have just a couple of values, e.g. 50. You can ignore values > 10 or so and negative values, so that will limit the values a bit. Most of the time, games use values between 0.5 and 2 for gamespeed. Select them all and click the red error at the lower right corner of the matches list to add them to your table. Now you can freeze them one by one. Do that by selecting them, and pressing SPACE. Go into the game and trigger the slow down again. If that doesn't work anymore, you've found timestop. You're not done then, see further down.

    DOOM doesn't contain this kind of timestop, so you have to find the other kind, the freeze kind. This is done by popping up the menu. Sometimes, alt-tabbing also freezes the game, but you can only be sure if the CPU usage of the game is still rather huge, e.g. above 10-20%. Modern games simply stop their message pump handling for rendering/game activity when alt-tab is detected so the game in these cases doesn't take any CPU usage or below 5%. If that's the case you can't find the timestop through alt-tabbing.

    First bring up the menu, then go to CE and do a first scan, byte, exact value: 1. Then alt-tab back to the game, still have the menu up!, and do a next scan (using the keybindings!), exact value (which is still 1). Do that a couple of times, then alt-tab to CE, change the 1 to 0 and alt-tab back. Bring the menu down, and do a next scan exact value (which is now 0). Do that a couple of times, bring up the menu again, alt-tab to CE, set it to 1, alt-tab back, and do a next scan exact value. Rinse repeat, till you have a small set of values, like 100, or lower. Go into the game, walk around and see which values quickly flip to another value than 0. You can ignore these. Then go to CE and select all which look promising and select them and with the red arrow bring them to the table list. Go into the game, this is important, and bring up the menu, and _then_ alt-tab. Select the addresses in the table list a couple at a time and freeze the values by pressing SPACE, and alt-tab back and close the menu. You should now have a frozen game if one of them is the timestop. Go back to CE and narrow it down to 1 from the selected values. If you find it then, you have the address but aren't done yet, see below. Finding timestop can be frustrating. You often find things which aren't timestop but seem to be timestop or worse: freezing the values will crash the game. Be prepared to do this a lot of times before you finally find it. :)

    Once you have the address in memory of the timestop, you have to know which code writes to it. This is essential as the address itself is useless: it will be different the next time you run your game. Right-click the address in the table list in CE, select 'find out what writes to this address' and CE will tell you it will attach its debugger. Click OK and a window will pop up. It will likely be empty. Alt-tab to the game and trigger the natural timestop/freeze, e.g. by opening the menu or triggering the slowdown. You should see an address and a counter popping up. Go back to CE, select one of them, and click 'Go to disassembler'. You'll now be brought to the code which actually writes to it. Right click that address and select 'Add to the code list'. For name to specify, say 'Writes timestop'. Click OK and now you have preserved the address which writes the timestop, as you can now always find it back.

    For DOOM specifically, this was tricky. I thought I found it first but it was 'freeze animation', which was kind of cool but wasn't useful as the game still moved the NPCs around the tracks they'd move around anyway. Took me a couple of hours but finally found it.

    With the animation camera, I think it's not that hard to find. The camera address can be located using the offsets I use in the camera tools: https://github.com/FransBouma/InjectableGenericCameraSystem/blob/master/Cameras/DOOM/InjectableGenericCameraSystem/GameConstants.h#L53 (ignore the comment, I should have removed that as I based the camera on the hitman camera source) that's the address within Doomx64.exe where the camera address is used, so you can pick it up there (attach CE as debugger, set breakpoint there, wait till it gets hit, read the register, remove breakpoint, continue). The camera is then at that address+0xC0.

    Once you have that, you can see who writes to that address. So you open that in CE and go into the game. Then play the game a bit and hit an enemy till he has the blue/orange glow. Then do a glory kill which triggers a small cinematic :). The 'writes to that address' window should then show that it briefly stopped (as another camera was used). If you timestop using the cameratools in a cinematic, it also should be that the writes to the camera address stopped. That should prove that there's a second camera in use.
  • Wow that is awesome otisinf, thank you so much for taking the time to write a really in depth reply, that gives me loads of info to use.

    I'm a huge fan of Doom and have focused more on capturing videos to edit rather than capturing screenshots with this game. The tools available like your latest camera tool have been a huge help to capture some interesting shots. Just need to edit it all now lol.

    Huge thanks for passing on the knowledge :)
Sign In or Register to comment.