UnofficialCrusaderPatch / UnofficialCrusaderPatch2

Unofficial balancing patch installer for Stronghold Crusader 1
MIT License
429 stars 59 forks source link

Add option to disable border scrolling #765

Open TheRedDaemon opened 3 years ago

TheRedDaemon commented 3 years ago

The idea for this comes mostly from the way I am using Crusader together with DxWnd, where how the game handles it's scrolling borders causes issues, but maybe others may find that handy, too.

Technical stuff Crusader seems to constantly pull the physical cursor position, compares the coordinates to a border value (likely set at game start) and if the position is at a border, it moves a +1 in a memory address, that is then likely used to initiate the scrolling. The address where the coordinates are pulled is Stronghold Crusader.exe+681B9 (1.41) and the ifs follow a bit after that. If I set every mov inside the ifs to NOP, it stops the border scolling. Key scrolling still works. But maybe the devs are able to come up with a more elegant method. :smiley:

GRhin commented 3 years ago

Just lock mouse to window in dxwnd

TheRedDaemon commented 3 years ago

The issue stems mostly from the configuration I created. I created a config that keeps the game running, despite being out of focus or minimized. Additionally, if it is not minimized, my game keeps rendering, so I can, for example, do stuff in CheatEngine and watch the effects. I just found no true solution for Crusader's scroll borders, and my hacky solutions did not work for others with multiple monitors for example. I know that's a rather specific issue, but I thought it might also be a "nice to have"-feature in general.

Outside of this, I should have clarified the issue, sorry.

LeSpec commented 3 years ago

I created a config that keeps the game running, despite being out of focus or minimized.

Ah, i want that too 😃 How can i do this?

Technical stuff

Nice findings! If you wanna keep it a little shorter you can also just jump over that part. (4681CF: jmp 468209)

TheRedDaemon commented 3 years ago

How can i do this?

You need to use DxWnd and activate the expert mode (for more options). Then you need three options for the behaviour I described (game keeps running and rendering):

The real issue are the games "We are inevitable" -scroll-borders.

If you wanna keep it a little shorter you can also just jump over that part. (4681CF: jmp 468209)

Ah, nice. Any chance to get this as a little convenience feature for "Other"? 😁

LeSpec commented 3 years ago

Ah, nice. Any chance to get this as a little convenience feature for "Other"? 😁

Sure, you want this to be a game setting or a permanent ucp option? First could be done by selecting one of the two cursors.

TheRedDaemon commented 3 years ago

I actually never thought about this as an in-game option... It would either be only an UCP option, or an UCP option that allows me to configure something in-game. (And based on your discription would bind this function to a specific cursor? But that part is likely negligible).

I'm not sure. In the end, for my peculiar reasons, a permanent option would be more than enough. The other control options (quick save, wasd) are also not configureable in-game (yet). So, the question is more on what the drive of the dev tells them. 😅

I mean, should the cursor configuration be a lot more complicated than a simple hardcoded "jump"... then I would have another request, that is likely a bit more involved, where I would like to see this time rather spend on. 🙃

LeSpec commented 3 years ago

Created pr #777 with download link.

Yeah you're right, it's probably a bit too fancy 😄 I just thought you might use the same version for playing and investigating.