@horkrux: einfach genial wie Du Sachen fixen kannst
Vielleicht schaffst Du auch folgendes Problem zu lösen: die Siedler 3 Auflösung ändern. Das haben schon mehrere Leute versucht und paar Hebel gefunden - leider aber nicht genug von den Hebeln, um daraus etwas praktisches machen zu können
Was es schon gibt:
1. Die Auflösung selbst ändern mit der das Spiel läuft:
http://www.wsgf.org/forums/viewtopic.php?p=79822#p79822 . Das alleine fügt aber nur rechts und unten schwarze Balken hinzu...
Code
Repro steps:
1. Open s3.exe in any hex editor.
2. Find one of hex values:
2.1. "E0010000688002" for 640x480
2.2. "58020000682003" for 800x600
2.3. "00030000680004" for 1024x768
3. Replace found bytes with one of the following hex values:
3.1. "58020000680004" for 1024x600 (works)
3.2. "D0020000680005" for 1280x720 (direct draw error)
3.3. "20030000680005" for 1280x800 (works)
3.4. "00030000685605" for 1366x768 (direct draw error)
3.5. "8403000068A005" for 1440x900 (works)
3.6. "1A04000068A005" for 1440x1050 (direct draw error)
3.7. "1A040000689006" for 1680x1050 (works)
3.8. "38040000688007" for 1920x1080 (not tested)
3.9. "B0040000688007" for 1920x1200 (not tested)
4. Run SETUPS3.EXE, choose resolution you've modified and play the game.
2. Die Höhe des angezeigten Bereichs ändern:
http://www.wsgf.org/forums/viewtopic.php?p=160839#p160839
Code
I am able to change the height of the game window, but any height bigger then 864px causes the game to crash. Before I go into details about the crash, here is how to change the height of the game window:
Open s3.exe with a Hex-Editor of your choice
Increase the 1024x768 resolution of the game as described earlier in this thread
find the first occurence of B8 00 03 00 00 (starting at address 0x000C6EBF) Don't touch the B8, but the 00 03 00 00 can be set to any value (within limits).
Change to one of the values below for increased height:
768px: B800030000
800px: B820030000
864px: B860030000
A value of 880px or more results in a crash with one of the following error mesages:
Structured Exception c0000005 occured at 0x005225F9. Write to 728d00e failed.
Structured Exception c0000005 occured at 0x004288BF. Read from 14270f08 failed.
Further notes:
The second error only occurs if you increase the height just a little bit too much (e.g. to B8 80 03 00 00)
I only tried increasing the height in multiples of 16: A height of 864px works, while 880px crash the game. I have not tried the values in between, so it might be possible to get a few more px without crashing the game.
Is it possible that the game does not allocate enough memory to display a bigger game window? It would explain the exceptions if the game tries to access memory it didn't allocate first...
The white bar at the top of the screen appears even in an unmodified game, since I upgraded to Windows 10. It seems that starting with Windows 8, Windows tries to paint some kind of window around the game, even in fullscreen mode.
3. Die breite des angezeigten Bereichs ändern:
http://www.wsgf.org/forums/vie…04#p161021
Code
It is possible to change the screen resolution the game runs with, while the size of the game-area stays the same (as described by balver)
It is possible to change the height and width of the game-area, within the following limits:
The width of the game-area must be smaller than 1310px (0x51E in Hex)
The height of the game-area can only be increased above ~864px by decreasing the width
The width can only be increased above ~920px by decreasing the height (making some menus unaccessable)
By "game-area" I mean the area the game itself is played in, without the menu on the left side of the screen. When the game is running at 1024x768, it's default width is 808px (0x328 in Hex).
Before it is possible to increase the game-width, it is necessary to adjust two values:
Find 81 FF 00 04 00 00 at address 0x0002CEA0 and change the last four bytes to the width of your screen resolution (e.g. for 1680x1050 change to 81 FF 90 06 00 00)
Find C7 05 0C 0F 73 00 00 04 00 00 at address 0x000C6EDD and change the last four bytes to the width of your screen resolution (e.g. for 1680x1050 change to C7 05 0C 0F 73 00 90 06 00 00)
Now we can change the width of the game-window:
Find C7 05 18 0F 73 00 28 03 00 00 at address 0x000C6EF2 and change the last four bytes to your desired value (e.g. for the maximum width of 920px change to C7 05 18 0F 73 00 98 03 00 00)
By increasing the width too much, I got the following errors:
Structured Exception c0000005 occured at 0x0052243A. Write to 1488a580 failed.
Structured Exception c0000005 occured at 0x005FC4F2. Write to 593ef2a failed.
Further notes:
I'm not sure why the width-limit of 1310px is there, but if you search s3.exe for 1E 05 00 00, you will find the value more than 30 times. Also some of these occurences are near the addresses that are listed in the crash-error-messages
I won't try to fix the 1310px-limitation, until there is a way to increase the width that far, without decreasing the height.
I still believe that the game does not allocate enough memory to display a bigger game window. I will keep digging, but to be honest, I don't even know where to look at the moment...
Ich glaube aber nicht, dass das Problem an "the game does not allocate enough memory to display a bigger game window" liegt, da wenn man 32 Pixel Höhe hinzufügt, man nur 32 Pixel weniger Breite - insgesamt hat sich dadurch aber die Zahl der insgesamt gerenderten Pixel erhöht.
EDIT: Anhand von Fehlern die ich beim herumexperimentieren gesehen habe könnte folgendes eine Rolle spielen:
Code
A pointer to a RECT structure that defines the upper-left and lower-right points of the rectangle to bitblt from on the source surface. If this parameter is NULL, the entire source surface is used.
(aus:
IDirectDrawSurface7::Blt method)
Hinweis
Nach Klick auf "OK" wird eine Verbindung zu Facebook oder twitter hergestellt. Dadurch werden ggfs. Daten an diese Plattformen übermittelt.