Page 1 of 2 12 LastLast
Results 1 to 25 of 42

Thread: True widescreen support for Soul Reaver 1

  1. #1
    Join Date
    Nov 2015
    Location
    France
    Posts
    59

    Smile True widescreen support for Soul Reaver 1

    Hello

    I'm French and new on this forum, I would like to know, if someone knows if it's possible to put Soul Reaver in widescreen, but without the zoom effect and without the glitches ?


    In fact, I know how to convert the "kain2.exe" in widescreen.

    We must modify it with an hexadecimal editor and go to the offset "000EB350", column 8 and replace "AB AA AA 3F" (1.333334 in float) by "3B 8E E3 3F" (1.777778 in float) for a 16/9 aspect ratio.



    This is for the widescreen, but zoomed, in Vert-.

    Screenshot 4/3 stretched to 16/9 : http://image.noelshack.com/fichiers/...ov-de-base.png

    Screenshot 16/9 Vert- : http://image.noelshack.com/fichiers/...ov-de-base.png



    Next, I found the offset (it was near the precedent offset) to change to obtain an Hor+ image.

    We need to be in float mode and go to the lign "000eb364", column 9 and replace "1.000" by "0.750".

    Know we have a image of type Hor+.

    Screenshot 16/9 Hor+ : http://image.noelshack.com/fichiers/...et-modifie.png



    But as you can see, there are some glitches with the decor and the soul reaver which is not aligned.

    Screenshot here : http://image.noelshack.com/fichiers/...bug-reaver.png

    So, it's for that I'm here, to ask if an expert in hexa and who has the game would know if it's possible to have the same image, but without the glitches

    Because I only rummaged in the EXE without have real knowledges. But maybe someone who has knowledges could do miracles



    Thanks for your help !

  2. #2
    Try asking Wrace from Nosgothica.org. He's the technical wizard who made the patches that allow Soul Reaver to work on modern systems.
    AKA RT on Steam and Count D on old Eidos forums

  3. #3
    Join Date
    Nov 2015
    Location
    France
    Posts
    59
    OK. Thank you ! I will try.

  4. #4
    Join Date
    Nov 2015
    Location
    France
    Posts
    59
    Do you know how I can join him please ? The site is in Russian.

  5. #5
    Quote Originally Posted by SuperLumberjack View Post
    Do you know how I can join him please ? The site is in Russian.
    Try PMing him here:
    http://forums.eu.square-enix.com/member.php?u=189147
    "If events are matched closely enough to course, they have a way of restructuring themselves to familiar outcomes." ~ Scorpius, Farscape

  6. #6
    Join Date
    Nov 2015
    Location
    France
    Posts
    59
    Thanks Vampmaster !

  7. #7
    Join Date
    Sep 2007
    Location
    Russia
    Posts
    293
    It was talking about something like this here, so - as I understand - it is needed help of Vampmaster.
    I can't see any large (enough) differences in the game with or without WideScreen Hook (on my own PC; I don't know why).
    Support of LOK-games is the duty of Square Enix and Crystal Dynamics.

  8. #8
    Join Date
    Nov 2015
    Location
    France
    Posts
    59
    Hello,

    Thanks for your answer I already tried SR1-Hook, but there isn't true widescreen with this patch It's only vert- widescreen.

    But as I said, I found the value for the FOV in the "kain2.exe" with an hexadecimal editor to put the game in hor+ widescreen.

    We need to be in float mode and go to the lign "000eb364", column 9 and replace "1.000" by "0.750".

    But as you can see, there are glitches in the game :

    Screenshot 16/9 Hor+ : http://image.noelshack.com/fichiers/...et-modifie.png

    It's why I thought you could help me to find the origin of the problem because you created some patchs for Soul Reaver

    Do you think you can do this ? I know it's not easy and if you can't, no problem. I just tried

    Thank you very much !

  9. #9
    Join Date
    Nov 2015
    Location
    France
    Posts
    59
    I did a video to explain the problem :



    It's hard to control with the keyboad I usually use a gamepad but I wanted to do this video quickly
    Last edited by SuperLumberjack; 29th Nov 2015 at 17:41.

  10. #10
    Join Date
    Nov 2015
    Location
    France
    Posts
    59
    Somebody ?

  11. #11
    Is this the problem with the length of the wraith blade? I have so many projects on the go at the moment as well as my current job and finding a new one. I just can't find the time. The code in my trainer on www.thelostworlds.net has some lines that make the reaver narrower in compensation for the transparency not working properly. That's the part of the game you need to debug.
    "If events are matched closely enough to course, they have a way of restructuring themselves to familiar outcomes." ~ Scorpius, Farscape

  12. #12
    Join Date
    Nov 2015
    Location
    France
    Posts
    59
    Hi,

    Thanks for your answer. I understand for the lack of time. It's not always easy

    In fact, the problem is not for the length of the wraith blade. It's that the blade is not aligned with Raziel. Watch the video in 3:18 for example.

    But I precise that it's for widescreen Hor+, not Vert-. Generally we find on the web how to put the game in widescreen Vert-. I would like to test Hor+, but I have no competences in hexadecimal edition.

    The other problem it's the glitches that it generates.

    It's why I came here to ask somebody who could be better than me

  13. #13
    Quote Originally Posted by SuperLumberjack View Post
    Hi,

    Thanks for your answer. I understand for the lack of time. It's not always easy

    In fact, the problem is not for the length of the wraith blade. It's that the blade is not aligned with Raziel. Watch the video in 3:18 for example.

    But I precise that it's for widescreen Hor+, not Vert-. Generally we find on the web how to put the game in widescreen Vert-. I would like to test Hor+, but I have no competences in hexadecimal edition.

    The other problem it's the glitches that it generates.

    It's why I came here to ask somebody who could be better than me
    Well maybe the widescreen patch stretches everything horizontally except the wraith blade. That would cause it to look slightly off to one side, since the centre of the blade should be pulled away from the screen.

    What happens is the randomly generated polygon corner positions get copied into a vertex buffer at the end of the function and the person fixing the bug has to scale the x coordinate up before it gets copied to the buffer. It should work, but needs someone who knows what they're doing.
    "If events are matched closely enough to course, they have a way of restructuring themselves to familiar outcomes." ~ Scorpius, Farscape

  14. #14
    Join Date
    Nov 2015
    Location
    France
    Posts
    59
    Quote Originally Posted by Vampmaster View Post
    Well maybe the widescreen patch stretches everything horizontally except the wraith blade. That would cause it to look slightly off to one side, since the centre of the blade should be pulled away from the screen.
    Yeah, I thought the same thing

    Quote Originally Posted by Vampmaster View Post
    What happens is the randomly generated polygon corner positions get copied into a vertex buffer at the end of the function and the person fixing the bug has to scale the x coordinate up before it gets copied to the buffer. It should work, but needs someone who knows what they're doing.
    OK. I think I understood It seams not easy to do

  15. #15
    Does anyone know what the hex changes for the latest version of the SR1 widescreen patch are? I mean if it's SRHook or something, what does that do to the game's code?
    "If events are matched closely enough to course, they have a way of restructuring themselves to familiar outcomes." ~ Scorpius, Farscape

  16. #16
    Join Date
    Sep 2007
    Location
    Russia
    Posts
    293
    All existing information about this patch are here (post #3, for example).
    Or you can analyze this dll by disassembler - at this moment I found the code for all hooks in it excepting this one (widescreen-support). For example, for added hotkeys this dll used hook for ViewportG2_Init.
    Support of LOK-games is the duty of Square Enix and Crystal Dynamics.

  17. #17
    Quote Originally Posted by wrace0 View Post
    All existing information about this patch are here (post #3, for example).
    Or you can analyze this dll by disassembler - at this moment I found the code for all hooks in it excepting this one (widescreen-support). For example, for added hotkeys this dll used hook for ViewportG2_Init.
    Do you mean this part? Is this definitely the hex used in newest SRHook?

    Quote Originally Posted by Tos View Post
    It's only compatible with the one included in the .zip, which is the same as the unofficial XP/Vista compatibility patch on The Lost Worlds but has been modified to load the hook .dll at startup. You'll probably need the English 1.2 version of the game as well.

    If you don't want to replace the executable for whatever reason and are handy with a hex editor, here are the offsets to change in the 1.2 exe for widescreen support:

    Offset 0x000EB358: Change AB AA AA 3F (1.333334 as a float) to CD CC CC 3F for 16:10 widescreen or 00 00 00 40 for 16:9.

    Offset 0x00384F7 and 0x038509: Change the 21 (33 in decimal) at these locations to the milliseconds between frames of the framerate you want. You can figure this out by dividing 1000 by the framerate (1000 / 30 is 33, for instance).
    I'm probably going to want remove the hook because I expect there's a better way that includes both the world space and screen space objects in one place that would fix the wraith blade issue. It helps to see what Tos did though, so I can start testing alternatives. I can add extra items in the aspect ratio list for a start.
    Last edited by Vampmaster; 6th Jan 2016 at 10:30.
    "If events are matched closely enough to course, they have a way of restructuring themselves to familiar outcomes." ~ Scorpius, Farscape

  18. #18
    Join Date
    Sep 2007
    Location
    Russia
    Posts
    293
    Vampmaster
    Do you mean this part? Is this definitely the hex used in newest SRHook?
    There is only one version of SRHook.dll - which was created by TOS (link on his thread above).

    Vampmaster
    I'm probably going to want remove the hook because I expect there's a better way that includes both the world space and screen space objects in one place that would fix the wraith blade issue. It helps to see what Tos did though, so I can start testing alternatives. I can add extra items in the aspect ratio list for a start.
    Yep, I also think that it is needed to find in the SRHook.dll the appropriate place (patch) which did this WideScreen-support.
    As I said above, I can't find this place yet.

    About all other patches (with hotkeys):
    SR_HOOK.dll: addresses of patches - 10001200, call from 10001162.

    10001150 (call from 1000113A):
    mov eax, [ebp+10]
    add eax, -4D
    cmp eax, 73
    ja ret
    movzx eax, byte loc_1001214[eax]
    jmp dword ptr [loc_10001200][eax*4]

    10001130 (call from 1000137C - jump to here from 47B804 of the game, where 47b7e0 - ViewportG2_Init):
    push ebp
    mov ebp, esp
    cmp dword ptr [ebp+0C],100
    jz 10001150
    push dword ptr [ebp+14]
    push dword ptr [ebp+10]
    push dword ptr [ebp+0C]
    push dword ptr [ebp+08]
    call dword ptr [loc_1000168] = dd offset 47B8B0
    further goes 1000114E

    1000117F - speed up:
    497AF0 - EB (74) { 497a20 - EVENT_DoGameAction }
    497B21 - EB (74)
    eax = 05 (01)
    imul eax,eax,3E8
    cdq
    4D7312 - eax (4d72f0 - TIMER_GetTimeMS)
    mov ecx, 4D86F0 (VOICEXA_Stop)
    jmp ecx

    10001169 - exit:
    push 00
    call dword ptr [ExitProcess]

    100011F6 - possess:
    mov edx, 40C470 (MONAPI_PossessNext)
    jmp edx

    10001171 - debug menu:
    mov eax, dword ptr [loc_1000C0F4]
    mov byte ptr [eax+172], 04

    1000114E
    just ret
    In my opinion, adding hotkeys through hook of ViewportG2_Init - very interesting idea (instead of call GetASyncKeyState added into the GAMELOOP_Process).
    Support of LOK-games is the duty of Square Enix and Crystal Dynamics.

  19. #19
    Do you mean you never had the source code for SRHook? That would explain a lot of what we were discussing privately.

    Why would you need this?
    "In my opinion, adding hotkeys through hook of ViewportG2_Init - very interesting idea (instead of call GetASyncKeyState added into the GAMELOOP_Process)."

    Kain2.exe handles all its own input on it's own main thread and probably has a dedicated function for it. Doesn't it make sense to have the new functions the input system that's already inside? There's no need for more and more dlls. I'd like to one day patch in analog controls for the XBox 360 controller. I know there are tools on the web, but that way would work much better.

    Like I said as well, websites all across the internet already have documentation for the cheats designed by Crystal Dynamics. Swapping them out for your own makes all those places out of date. Even though the debug menu does make them redundant, it's not out place to remove featured that Crystal Dynamics put there.

    I did a binary compare of the exe you sent me and the one from www.thelostworlds.net and the changes you've shown shown be are still too small to account for what showed in the compare tool. Didn't you say you used a a "better" NoSafeDisk tool before any of the patches were applied?
    "If events are matched closely enough to course, they have a way of restructuring themselves to familiar outcomes." ~ Scorpius, Farscape

  20. #20
    Join Date
    Sep 2007
    Location
    Russia
    Posts
    293
    Vampmaster
    Do you mean you never had the source code for SRHook? That would explain a lot of what we were discussing privately.
    Yes. I wrote about this fact right away + here also is written about this (About SR1-Hook).
    I just created the patch (for kain2.exe) which allows to run this dll with any version of kain2.exe (initially TOS just placed modified by him kain2.exe into the archive with his dll) and later (when link on the SRHook.dll became broken) included this dll into zip.

    Vampmaster
    Why would you need this?
    "In my opinion, adding hotkeys through hook of ViewportG2_Init - very interesting idea (instead of call GetASyncKeyState added into the GAMELOOP_Process)."
    You said early that, for example, running Debug Menu by one key is better that running it by the code 16443.
    Running the features like Possession or "Teleport to possessed" also is better by one key, not through the debug menu.
    It is interesting for me to have such feature. And it is better to add reaction on input instead of adding reaction on main GAMELOOP_Process.

    Vampmaster
    Like I said as well, websites all across the internet already have documentation for the cheats designed by Crystal Dynamics. Swapping them out for your own makes all those places out of date. Even though the debug menu does make them redundant, it's not out place to remove featured that Crystal Dynamics put there.
    With SRHook.dll all cheats work as before. For example, I also use the code 52364 (Imbue Reaver with Fire).
    It does not corrupt the input.

    Vampmaster
    I did a binary compare of the exe you sent me and the one from www.thelostworlds.net and the changes you've shown shown be are still too small to account for what showed in the compare tool. Didn't you say you used a a "better" NoSafeDisk tool before any of the patches were applied?
    Binary comparison shows 19 differences: artefacts at the initial offsets + garbage at 0x280 and 0x3D0, strange relocations at 0xEAFF8 to 0xEB310, garbage at 0xED8B8 to 0xEDC30, different order of functions through 0xEDC30 to 0xEE878, again relocations at 0x106618 to 0x106768, and garbage at the end.
    It is like sr2.exe with removed protection by tools in the internet and one without protection (by official creators).
    The fixed kain2.exe on the thelostworlds.net (Unofficial Soul Reaver Patch for XP and Vista) was obtained by using very old tool for removing safedisk-protection, which leaves too many garbage.
    Yes, I correcly removed this protection (using files from the official patch) and after that I applied any patches (hm, at this moment there are no patches in kain2.exe excepting one text replacement - I'm about the version I sent for you in the last PM).

    Vampmaster
    Kain2.exe handles all its own input on it's own main thread and probably has a dedicated function for it. Doesn't it make sense to have the new functions the input system that's already inside?
    You have another way?

    Vampmaster
    There's no need for more and more dlls. I'd like to one day patch in analog controls for the XBox 360 controller. I know there are tools on the web, but that way would work much better.
    There's no need for more and more patches for kain2.exe - because there are too many versions of it (hm, just for english version is not too much, of course).
    At this moment there is possibility to place all of them (with control flags) into winplay.dll, which is loaded and used by kain2.exe already.
    Hm, "more and more dlls": I already said that SRHook.dll is running at this moment only by one reason - it was created and there is patch for kain2.exe just for loading this dll into the memory. When it was created the same (or better) code and included into winplay.dll, it remains only one dll.
    And I like the feature that there is possibility to run this dll if it is in the folder and do not run it if there are no such dll, instead of patching kain2.exe for this purpose.
    And I like the another feature - instead of having many patches and trainers (hm, "more and more exe's running simultaneously with the game"?) just have all of them as part of this game (with auto-features in some cases - I am about choosing text-language in the game or another voices.dat - and opportunity to choose ones that is needed for the current player).
    Support of LOK-games is the duty of Square Enix and Crystal Dynamics.

  21. #21
    "You have another way?"
    Maybe. I know where to look, but I haven't checked how difficult it is yet.

    "Hm, "more and more dlls": I already said that SRHook.dll is running at this moment only by one reason - it was created and there is patch for kain2.exe just for loading this dll into the memory. When it was created the same (or better) code and included into winplay.dll, it remains only one dll."
    I'm struggling to understand your english here. Are you saying the patch to load SRHook can be removed if the code is moved into winplay.dll? I can easily write code to make kain2.exe load dlls. I just need to find an empty space.
    "If events are matched closely enough to course, they have a way of restructuring themselves to familiar outcomes." ~ Scorpius, Farscape

  22. #22
    Join Date
    Sep 2007
    Location
    Russia
    Posts
    293
    Vampmaster
    I know where to look, but I haven't checked how difficult it is yet.
    ^This.

    Vampmaster
    Are you saying the patch to load SRHook can be removed if the code is moved into winplay.dll? I can easily write code to make kain2.exe load dlls. I just need to find an empty space.
    Something like is already written by TOS and I moved such code just into the patch that you can find at the link in my signature (hm, initial marker inside kain2.exe just moved above to organize call of LoadLibraryA before performing the usual for kain2.exe instructions). It is needed for any earlier versions of winplay.dll (like one that is used on Steam, for example).
    BUT! It is again the physical patch of kain2.exe.
    In the version of the winplay.dll that I sent you this dll is loaded by using the same code:
    LoadLibraryA(Hook_dll);
    in the function DllMain of the winplay.dll (i.e. when this dll is loaded into the memory by kain2.exe it also loaded SRHook.dll too - if it is found, of course). I.e. the same feature but without any manipulations with kain2.exe (neither with the file kain2.exe nor with its memory).

    Vampmaster
    Are you saying the patch to load SRHook can be removed if the code is moved into winplay.dll?
    Yep. It is not needed to load SRHook if the appropriate fixes will be already applied through winplay.dll.
    When I read here
    Vampmaster
    There's no need for more and more dlls.
    I thought that you dont like the idea of creating and loading "more and more dll's" at the start of the game, so I repeated again that SRHook.dll is loaded now (automatically through the newest winplay.dll or after the patching kain2.exe for the version on Steam) only by the reason that now there is not the appropriate code inside winplay.dll for the features that SRHook has (WideScreen Hook, Hotkeys and Speeding Up cutscenes).
    BTW, the last one fix (Speeding Up cutscenes) is not needed (I think) with the properly worked options of the Debug Menu "Skip All Puppet Shows" and "Skip First Puppet Show". Now they dont work neither for bink-movies (hm, it is not needed such fix for them - they (as rpl-movies before) are skipped by Esc and some other keys) nor for cutscenes. May be better to have another option - to skip cutscenes (like bink- or rpl-movies) by Esc (instead of speeding up them).
    Support of LOK-games is the duty of Square Enix and Crystal Dynamics.

  23. #23
    Sorry if I keep asking the same questions. Your english isn't very good and I get confused sometimes.
    "If events are matched closely enough to course, they have a way of restructuring themselves to familiar outcomes." ~ Scorpius, Farscape

  24. #24
    Join Date
    Sep 2007
    Location
    Russia
    Posts
    293
    No problems. I know well only technical English (higher mathematics).
    Support of LOK-games is the duty of Square Enix and Crystal Dynamics.

  25. #25
    BTW, I don't think puppet shows refers to the pre-rendered cutscenes (rpl/bink). I remember seeing a NOMOVIES option somewhere (in ProcessArgs, maybe) perhaps that's what you need.
    "If events are matched closely enough to course, they have a way of restructuring themselves to familiar outcomes." ~ Scorpius, Farscape

Page 1 of 2 12 LastLast

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •