Jump to content
COMBATSIM Forum

Some Observations on the FOV mods added in TAW 2.10


Home Fries
 Share

Recommended Posts

As you may know, The addition of Fullscreen and Widescreen versions of TAW in version 2.10 were made possible by mlracing's great discoveries in this thread. However, I came across some minor side effects when using the mods (Fullscreen in 800x600, Widescreen in 1024x768). The purpose here is not to belittle mlracing's great contributions, but rather to pursue the ideal solution.

Known Issue:

The only one really worth addressing shows itself in the campaign loadout menu when selecting armaments for non-F22 aircraft. Here is an example of a Su-25 loaded for bear, as the screen should look:

good_loadout.jpg

And how it looks with a FOV modded EXE enabled (note the ellipses where armament should be displayed):

bad_loadout.jpg

Observations:

Observation 1:

I did some testing and realized that this issue is not present in the original 1024x768 version of TAW, which was actually done from a patch (written by Manteau) that hex-edits the D3D 800x600 version of the TAW EXE. However, the FOV for 1024x768 is ideal for a 3:4 (fullscreen) monitor, unlike the 800x600 version, which is actually stretched vertically.

This is a screenshot taken in 1024x768 (as the aspect ratio should look):

1024x768HW.jpg

and one from 800x600 (note the vertical stretch):

image005.jpg

Note the differences in FOV. It is worth noting that the regular 1024x768 version does not exhibit the corrupted loadout screen. Also worth noting is that Manteau's patch works on both original and TrackIR modified versions of the D3D EXE.

Conclusion: Manteau's patch hex-edits values different from those discovered by mlracing.

Observation 2:

When hex-editing an EXE using methods described in this thread, only the normal FOVs are affected (including external views). The aspect ratio while zoomed into an MFD remains stretched vertically. However, the zoomed MFDs from Manteau's patch display as squares (as they should). Additionally, Manteau's patch corrects the aspect ratio of the HUD symbology, whereas mlracing's hex edits do not.

This is a screenshot taken in 1024x768 (again, as the aspect ratio should be)

1024x768MFD.jpg

and one from 800x600 with FOV edits made (though you still get vertical stretch):

image021.jpg

Hypothesis: Manteau's patch does not stretch, shrink, or otherwise distort FOV, but rather sets a consistent aspect value of some sort.

Observation 3:

While running the 1024x768 EXE, I went into software mode to take some screenshots at different resolutions (I could not get hardware mode screenshots in other than 1024x768 due to modern D3D cards not supporting the 640x400 resolution). The 640x400 software mode created a black bar at the bottom of the screen in order to allow for the pixels to display with the proper aspect. This gives the 640x400 display a widescreen effect, which is accurate given the pixel/aspect ratio (640x400 is actually a 16:10 ratio, not 4:3). Running 800x600 in software mode gave me the stretched vertical present in the normal 800x600 hardware FOV. However, despite using the same EXE file, neither of these resolutions displayed with the FOV shown in the 1024x768 screenshot at the top of this post!

640x400 in Software Mode (1024x768 D3D EXE):

640x400SW.jpg

800x600 in Software Mode (same EXE):

800x600SW.jpg

Hypothesis: The FOV variable alluded to in the previous hypothesis is directly related to the selected resolution, and not the display output as a whole.

Proposed Solution:

Reverse engineering Manteau's patch seems to be the key to this. The patch itself is actually included with TAW 2.0, and can be found in the \F-22 Total Air War 2.0 - Dev\!ADP\utilities\D3D_1024x768_Patch folder, and is called TAW_RES.com.

Running the patch allows you to set the D3D version of f22.dat to 1024x768, or return it to 800x600. During both of these operations, it must change the allowable resolution and the FOV, and I'm sure they are separate operations.

If we can determine which values are being edited, this would go a long way to creating an ideal FOV for fullscreen Glide users as well as widescreen D3D 1024 users. Additionally, determining this method would apply to both TrackIR and non-TIR variants, further increasing the pool of potential users.

Reverse engineering binary code isn't my strong suit, so any assistance you all can provide would be greatly appreciated, as well as properly credited in the next TAW 2.0 release.

Link to comment
Share on other sites

  • 2 months later...
  • Replies 75
  • Created
  • Last Reply

Top Posters In This Topic

I inspected the hex edits of Manteau's patch:

Observation 1: Manteau's patch only modifies the D3D display device resolution parameter, nothing else. Any fov or aspect change is incidental, due to an internal dependency on the resolution (a strange one at that).

Observation 2: mlracing's patch modifies the D3D camera's aspect parameters, the MFD is rendered independently and would have its own parameters that need to be changed. These are most likely static values which would make them very difficult to find.

Observation 3: The stretching at 800x600 appears to be a bug, or an oversight, or a very strange feature. The aspect is meant to be locked to the resolution to avoid this kind of thing.

The code that is responsible for the larger fov for 800x600 appears to do it the ideal way over the camera parameters, this would need to be located and tricked into thinking the resolution is 800x600 when it is really 1024x768. There are probably many interdependencies though, when it comes to hacking there is rarely an ideal solution.

Link to comment
Share on other sites

Thanks for the input, zencloud. You are contributing in an area where I know scarcely enough to be dangerous.

If it is possible to find the fov code, that would make the MFD issue moot. I would ideally like to address the aspect ratio to provide solutions for both widescreen and fullscreen users.

Link to comment
Share on other sites

To summarize, the intended aspect ratio of F22 is 16:10 widescreen 640x400, 800x600 is just a squashed version of it. 1024x768 is a resolution hack that strangely causes the image to be cropped instead of squashed, making it the correct aspect for 4:3 but sacrificing fov. It sounds like some kind of hard coded limit is responsible for the cropping, which is not surprising since it was never meant to run at this resolution.

Personally I use the 800x600 Glide version with dgVoodoo taking it up to 1920x1080 widescreen with only a small amount of horizontal stretch (16:10 upscaled to 16:9 monitor).

Link to comment
Share on other sites

Personally I use the 800x600 Glide version with dgVoodoo taking it up to 1920x1080 widescreen with only a small amount of horizontal stretch (16:10 upscaled to 16:9 monitor).

Very nice. That's a great way to view the game.

Link to comment
Share on other sites

  • 2 weeks later...

I agree... nice resolution choice.

How about a playing TAW in a multi-monitor setup?

I can launch TAW using dgvoodoo in multi-monitor in windowed mode. Unfortunately the horizonal stretching is very bad.

Would it be possible to create one more hex edited version with the right proportions (FOV?) for... lets' say... (800x3)x600 resolution? That seems wide enough for three regular aspect monitors , and it would equally work with a mix of regular and widescreen monitors, or an all-widescreen setup.

Wishful thinking?

I was trying to make sense of the editing from mlracing and I got completely lost.

I only came to the conclusion that the "infinite monkey theorem" could also be applied to hex editing ;)

http://en.wikipedia.org/wiki/Infinite_monkey_theorem

Link to comment
Share on other sites

While I'll be the first to admit that hex-editing is not my strength, I did look into this and came up short.

The reason is that the maximum non-wide FOV puts these hex values at 00 00, and increasing the values only zooms in the FOV. With a 3 monitor set up, you want a way to zoom out your FOV; getting the right aspect for a 2400x600 would require that your top and bottom parts of the FOV be severely cropped.

Since you can only hex edit what already exists, the closest analogy to the infinite monkey theorem would be to have the monkey recreate the complete works of Shakespeare, but with only the left half of the keyboard.

Link to comment
Share on other sites

Yeah, the works of Shakespeare in Octal instead of Hexadecimal :)))

Talking of monkeys...

I must have had my brain monkeys write my posts because I would not ever imply you did a poor job.

I don't agree that you came up short. On the contrary, you have done a hell of a job.

I agree that multi monitor requires some sort of zooming out, and I did my tests with the "Wideview" ("K" keyboard shortcut). It helps.

Link to comment
Share on other sites

Talking of monkeys...

I must have had my brain monkeys write my posts because I would not ever imply you did a poor job.

I don't agree that you came up short. On the contrary, you have done a hell of a job.

Don't sweat it; I didn't interpret your comments as any personal or professional slight. I just take things here at face value; I have a thick skin, and I want an open forum to help put out the best sim possible.

Link to comment
Share on other sites

Good,

Here is what I have found today... I can run a very large dgvoodoo window of TAW at 2040x1280, and display it across three monitors set at 600 pixels height each.

The result is positive. The aspect ratio is preserved because 2040x1280 is ~16:10.

Using TrackIR it is easy to pan as needed to see what is out of the immediate field of view.

In Wide View ("k" shortcut), here is the visual field, looking ahead.

2040x600view1.jpg

Also in Wide mode here is a shot of the MFDs

2040x600shotwidemfds.jpg

Now in "normal" mode, a closer view of the MFDs (at this cropped resolution Normal acts more like a ZOOM)

2040x600shotnormalmfds.jpg

And finally, here is a shot of the side view, using the WIDE mode.

2040x600shotsideview.jpg

Obvious problems are, low framerate (dgvoodoo at 2040x1280 is slow), a few artifacts on the textures (mesh-like stretching I guess)

and the HUD is cropped so it is not possible to read the weapon selection, (info is out of the visual field)

Other than that, I think it looks promising.

To set dgvoodoo at such high res I had to use dgvoodoo in directx9 mode with a modified d3d9.dll where I could add "custom" resolutions. I used the d3d9.dll from Kegetys SoftTH. Kegetys SoftTH

I had tried to use SoftTH itself for multi monitor without success, but in this case, I can use their dll to add the custom resolution mode to dgvoodoo.

One final issue is that the TAW launcher crashed in the background while trying to dismiss the warning from SoftTH about the ID of the displays.

Nonetheless, after dismissing the SoftTH errors, dgvoodoo kicks in in the high resolution mode with the results shown.

Link to comment
Share on other sites

Looking good, PeterPan.

Here's the $1M question: if you don't have that special d3d9.dll installed and don't use a custom glide resolution (though you should still force 800x600), will the image stretch across the three screens? I agree that upconverting resolutions can cause a huge performance hit, but if the image still spans 3 screens, you should be OK.

Also, the good news is that the HUD position/resolution on the screen is unaffected by the FOV edits, so you won't lose that. However, you may get some overlap between the helmet mounted HUD and the pitch ladder on the actual HUD itself.

Thanks for the good work. I'll try to play with the numbers to create a TH2G setting. Of course, this also means I'll have to make some more edits to the TAW 2.0 launcher...this could be fun.

Link to comment
Share on other sites

I got a new resolution that works without the SoftTH complaining about it. 2360x1280. It is 18.5:10, but I had not noticed the vertical stretch until I wrote this post.The good news is that I gain a bit of horizontal real estate.

I have turned on 8xS AA and 16x Anisotropic, and it is starting to look pretty good. Framerate needs a new video card I guess. My GF7900 is maxed out.

Unfortunately the "window" generated by dgvoodoo, does not appear to have a frame and it cannot be moved nor re-sized. The dgvoodoo window will be displayed on the desktop at 0,0 of the PRIMARY monitor, or the adapter that is chosen in the dgvoodoosetup window. The portion of the window that does not fit on the three desktops, remains out of the field of view. The limit of 600 in the vertical resolution of the monitors produces a cropping of about half of the rendered frame.

The vertical resolution of the monitors needs to be fixed at 600, otherwise there is a misalignment of the images. The TAW interface sets the primary monitor at 800x600, and the others need to follow, the vertical size. The horizontal resolution of the monitors needs to be 960 for the widescreen monitors and 800 for the non-widescreen to keep aspect ratio. Using a 19" regular monitor and two 21,5" widescreens, I get approximately 42 inches of horizontal field of view. Using the regular monitor on the left (narrower), a widescreen in the center and a widescreen on the right. This leaves the HUD almost at the center of the central monitor.

The pitch ladder and the compass are just fine. Eventually I have to slightly move the head up to be able to read the heading. The NORMAL view, acts now like a ZOOM. It is actually pretty handy when trying to line up the runway. Otherwise I use the wideview quite comfortably. (although it has a framerate impact)

I can actually read all the MFDs from the virtual cockpit, no need to look at them one by one with the NUMPAD keys. Using the NUMPAD views of the MFDs is useless in this mode, because the bottom half of them are not visible.

I still need to figure out if I can survive this.

Link to comment
Share on other sites

Ok, I have revised the Config menu in the Launcher to take advantage of additional settings (which now includes TripleHead2Go), so that part is done. What is left is modifying the f22.dat via hex edit in order to make this work.

I have to admit that I know nothing about SoftTH, and my insight on TH2G is also quite limited. That said, if you are on a single monitor and you run TAW in 800x600, the image will stretch to the dimensions of the monitor regardless of your desktop resolution.

I also know that TH2G uses a virtual monitor driver so that Windows sees a monitor that can do (for example) 3072x768, and that TAW in 800x600 will also extend to the limits of that "monitor". (Neph, feel free to contribute any time here!)

Without knowing exactly how SoftTH works, I'm assuming that it also uses a single virtual monitor, and that you should also be able to run in 800x600 and still stretch the boundaries.

Please fill in the blanks.

Link to comment
Share on other sites

Forget SoftTH and TH2G for a moment. I think we are moving a bit too fast in the direction of Hex Editing. (I admit I originally suggested this).

ALL AND ALL I think that we already have a solution for Multi-monitor TAW, withouth THG, for anybody who has three monitors with similar vertical sizes, enough video cards outputs to attach them all, and trackir.

Here is why...

The Very good news, it is possible to run TAW with dgvoodoo "windowed" in an arbitrarily large window, (for example 2400x1200 - just tested it successfully).

This window will span across several monitors over a regular extended desktop. Only the portion of the window that fits in the visual area of the desktops will be visible.

For this however, it is necessary to "convince" dgvoodoo that such arbitrarily large resolution is somewhat possible, otherwise the resolution will not show up in dgvoodoosetup.

I have accomplished this in two different ways:

Option #1 placing SoftTH modified d3d9.dll in the program's folder and doing proper configuration.

(Notice that I don't use SoftTH for the widescreen effect, I just use its dll to trick dgvoodoo)

(Notice that I don't use THG either, I just have an extra video card for the extra third monitor and have extended the windows desktop to it)

Option #2 using Nvidia's ability to create a virtual single monitor, by joining the two outputs of a single video card (this is called a horizontal span, and it shows in dgvoodoo).

IMHO Option #2 is a no-go because is limited to two monitors only, and you end up looking at the bezel, in between the two monitors, while trying to lineup the plane for landing.

Because TAW stretches the image to fit the arbitrary window size used by dgvoodoo, the resolution of the dgvoodoo window has to be carefully chosen to keep the proportions.

My guideline is the "circleness" of the rings in the MFDs. I think 2400x1200 is an OK resolution, because it can fill up to three monitors at 800 pixels wide each.

I don't know what is the perfect aspect ratio of the widescreen version of TAW, but the vertical at 1200 looks just fine. It can be changed.

Therefore the problem is not how to fill the screens, nor how to keep the proportion nor how zoomed-in or not the cockpit looks.

The zoom factor actually looks acceptable to me in a 22" set of monitors, using the WIDE view from TAW ("k" keyboard shortcut).

The visor at the front of the cockpit shows at 9" wide or so.

Here is however the minor problem that I still see... The cropping of onscreen info (Engine level, some hud info, time, etc), and the cropping of the standalone MFD views.

Because in this display mode, only the top 600 pixel lines will be visible. (at 1200 vertical, 600 is 50% of the TAW screen)

To migigate this, it is possible reduce the vertical resolution to lets say... 1024... which allows to see again the weapon choice, fire mode and perhaps the waypoint data...

(600/1024 ~ 60% of the TAW screen), but it still misses engine levels, AirBrake status, which you HAVE now to check by looking at the bottom MFD. Some might argue that this adds to the realism ;)

Clearly it is not good to reduce the vertical size, as it starts to become noticeable on the aspect.

So the two half a million dollar questions are...

can we MOD the onscreen info at the bottom to appear a bit higher on the screen? If not, it should be noted that it is still possible to glance at the bottom MFD with TrackIR to get the data.

and/or perhaps can the HUD be modded to look smaller while still centered? If not, I use the original TAW HUD which puts more info in the upper portion of the screen at is FPS friendly.

If the mods are possible, they would need to be FPS friendly, because at this resolution dgvoodoo is already struggling.

If not...

ALL AND ALL I think that AS-IS this is still a viable Multi-monitor setup of TAW, for TRACKIR users willing to glance/zoom at the bottom MFD as needed.

I won't promise a video, but I'll see what I can do to show the proof of concept in action.

Link to comment
Share on other sites

PeterPan,

What you say makes sense, but I think we're passing each other in the night.

Doing a hex-edit is much simpler than all of this. Bottom line: you could get a serviceable aspect ratio by tricking dgVoodoo. That tells us that we can hex-edit the EXE to crop the top and bottom views without losing too much; you just proved that with your screenshots.

The proper hex-edits for Glide are documented at the TAW Wiki. It's just a matter of finding the proper zoom value for the Y axis, while leaving the X axis at 00. Hex-editing the FOV will not affect the HUD in any way, so that point becomes moot.

Bottom line: your find has inspired me, and this ship has sailed. There will be hex edits and TH2G compatible EXEs. I have already modified the Launcher to allow for these new EXEs, and I would like to be able to do the same thing with the D3D 800x600 (I'm not sure we can make it work with 1024, but we can try). This way, you can get the wideview without having to overstress your video card.

Link to comment
Share on other sites

Great news! I think I have not fully understood the way the hex edits work, but I will be glad to test the results of your magic.

First, I want to be sure that when you set dgvoodoo to 800x600, you still see the image across all three monitors. that's our baseline, from which we can develop. Also, if you could tell me exactly how far the HUD extends to the side monitors (number of characters is fine), I would greatly appreciate it, as we will likely have to compress the HUD to make it fit.

Without having three monitors myself, I will be relying upon you and others with 3-monitor systems to provide feedback.

Link to comment
Share on other sites

Houston we might have a problem. Good thing you asked.

if I set dgvoodoo at 800x600, it cannot span across three monitors. The dgvoodoo window cannot be resized. (stretched).

The dgvoodoo window does not have a frame or a title bar or anything. It's pinned at 0,0.

What I meant is that the dgvoodoo can be arbitrarily large. But it has to be configured in dgvoodoosetup at that specific size.

I used a 2400x1200 resolution in dgvoodosetup, so the dgvoodoo window overflows horizontally onto the second and third monitors.

The bottom part of the image is "discarded" below the monitors.

--------------

About the size of the HUD...

The TAW 2.12 hud extends onto the left monitor (which is a 800x600 normal aspect ratio) about two and a half characters, using a 2400 resolution

To get and idea of what I am looking at, you can set TAW in wideview mode ("K" shortcut) and cover the bottom half of the screen.

You can divide vertically the remaining portion of the image in thirds, and that is what each monitor displays. (at 800x600 each)

You will also immediately realize what part of the HUD is not visible any more.

---------------

Just let me know if you want me to test something.

Link to comment
Share on other sites

Here's what I was able to do with the EXE:

TAW_TH2G.jpg

I inserted the vertical lines myself to designate where the monitors split. The TAW 2.0 HUD is way too busy, so I reverted to the original 1998 TAW HUD for this test. We can do further work on the HUD later, but at least we have something usable.

There's still some horizontal stretch; I couldn't zoom anymore in the vertical. However, it looks pretty good IMHO.

You should be able to set a custom resolution of 2400x600 to get this to stretch across monitors.

Link to comment
Share on other sites

Looking good... and moving fast :)

I am trying to understand what you are seeing on the regular800x600 screen...

Did you capture the shots at 800x600 and stretched them horizontally to 2400?

Did you cut the bottom half of the captured shot or did the image render on the upper half of the 800x600 of the screen and you stretched it out vertically?

My top concern, from my testing experience... is that the aspect ratio of the 3D world has to be correct. (I take that the aspect of HUD can be changed separately)

If there is a too much zooming in one axis... the moment you roll the plane, a one mile wide runway turns into a one and a half mile wide runway.

In a small monitor it might be annoying, but across three monitors, it is a formula for motion sickness.

I am glad to see that you can play with the position of the HUD.

I am not so concerned about keeping the HUD or the data in the center monitor, as long as it is visible on a monitor.

For example, the radio menus will always appear on the left monitor. I think that is just fine.

Because the HUD moves with the pilot view, I can glance left or right in case part of the HUD is partially obscured by the BEZEL. Not an issue.

Problem is if the HUD or the data are cropped outside of the view window.

Are the stand alone MFD views usable with you Hex Edit?

Link to comment
Share on other sites

I don't know what I was thinking.

I cannot glance left or right to read the HUD.

This means it can be obscured by the BEZEL.

This leads to yet one more issue.

if you use a widescreen monitor on the side and a regular 4:3 aspect monitor in the center, the hud has to be even smaller, because the dgvoodoo window is not centered.

the dgvoodoo window is pinned at 0,0

Link to comment
Share on other sites

Looking good... and moving fast :)

I am trying to understand what you are seeing on the regular800x600 screen...

Did you capture the shots at 800x600 and stretched them horizontally to 2400?

Did you cut the bottom half of the captured shot or did the image render on the upper half of the 800x600 of the screen and you stretched it out vertically?

What I did was hex-edit the f22.dat to crop the top and bottom as much as possible, while leaving the sides uncropped. This created an image that was scrunched from side to side, which I then adjusted to 2400x600 (3x 800x600) to simulate what the image would look like with 800x600 stretched across 3 monitors. To my knowledge, this is how TH2G works.

My top concern, from my testing experience... is that the aspect ratio of the 3D world has to be correct. (I take that the aspect of HUD can be changed separately)

If there is a too much zooming in one axis... the moment you roll the plane, a one mile wide runway turns into a one and a half mile wide runway.

In a small monitor it might be annoying, but across three monitors, it is a formula for motion sickness.

I saw that effect while looking at the view on a single monitor. Based on how it stretches in the X axis, though, I'm hoping that the effect is minimized.

I am glad to see that you can play with the position of the HUD.

I am not so concerned about keeping the HUD or the data in the center monitor, as long as it is visible on a monitor.

For example, the radio menus will always appear on the left monitor. I think that is just fine.

Because the HUD moves with the pilot view, I can glance left or right in case part of the HUD is partially obscured by the BEZEL. Not an issue.

Problem is if the HUD or the data are cropped outside of the view window.

I can play with the HUD positioning and data; this is all in an ASCII file. What I haven't figured how to do is readjust the weapons circles. Looking at the routine in the hud file, I expect that this is hardcoded.

The other side effect is that the HUD text itself is stretched. This is not a factor of the game, but a factor of being stretched across the monitors. As such it will likely be more readable on a monitor than it would be with an image stretched (like I have done). I'll look around for a tall/narrow font in the game, but no promises.

Are the stand alone MFD views usable with you Hex Edit?

Unfortunately, I haven't figured out how to do that yet. That's one of the reasons why I was asking if the zoomed MFDs were useful when stretched across 3 monitors.

Link to comment
Share on other sites

if you use a widescreen monitor on the side and a regular 4:3 aspect monitor in the center, the hud has to be even smaller, because the dgvoodoo window is not centered.

the dgvoodoo window is pinned at 0,0

I'm not sure what to do here. I have already brought the information in as much as I can without cluttering the HUD itself. My assumption for the TH2G exe is that people will use the same monitor aspect/resolution across all three, otherwise there are too many combinations to account for.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share


×
×
  • Create New...