Wednesday 18 March 2009

Resident Evil 5 - screen tearing fix (Xbox 360)

Like many others, I've been looking forward to Resident Evil 5 since being introduced to Resident Evil 4 on the Gamecube! I bought it last Friday (the 13th - ooh, scary!) and have been enjoying it ever since.
The graphics are, in the main, great, but there's one big thing that spoils it for me. Screen tearing. And judging by the number of results when I google for it, it's bothering quite a few other people too!

What is screen tearing?
It's what you get when your TV is trying to display two frames at the same time, overlapping each other. It manifests itself as a jagged line, which stretches across the whole screen and is most noticeable in fast-moving action.

When does it happen?
For me, it only happens in Resident Evil 5, and only when displaying in 1080p (on either 50 or 60Hz). It's most noticeable in some of the (frequent) cut scenes, but also while playing the game. It only seems to happen in the Xbox 360 version of the game.

How can I fix it?
You can't fix it per se, at least not unless Capcom release a patch, but what you can do is implement a work-around. In the Xbox Settings, under video, you can set your console to output at 1080i or 720p (assuming your TV/monitor supports this). This results in a minor decrease in graphical quality, but not a noticeable one (at least for me), and removes the tearing completely!

Further background...
Does this happen on the PS3?
No - the PS3 uses a technique called V-sync (vertical synchronisation) to stop the issue at the expense of showing fewer frames per second. Personally, I would love the option to turn this on on the Xbox - even just to try it out!

Has this problem been around for long?
Well, some people noticed it in the demo (myself included), but put it down to the fact that it was pre-release code. So it's been around for a while.

Is 1080i better or 720P?
Well, its down to preference. 720P is better for faster moving games. 1080i has fewer updates per second, but is at a higher resolution, so looks nicer for still objects.
I have read that the Xbox 360 mainly outputs in 720P anyway and scales-up to other resolutions, but haven't been able to verify that.
It could well depend on your display - my TV has 1920 x 1080 pixels, so at 1080i there's a 1-1 mapping, which means it looks great. At 720P, it would be scaling some of the pixels so it might not look so fantastic. Your display might be different.
Personally, I haven't decided yet! I'd advise to try both

What other games does this happen in?
I haven't noticed tearing on any of the other games I've played on the Xbox 360. I've heard that Dead Rising had it (another Capcom game), and maybe Ghost Recon Advanced Warfare (GRAW). I have GRAW, and haven't noticed it, but that may be because it doesn't display at 1080p, or maybe it's just more noticeable in RE5.

Why does this happen in RE5?
Well ... lazy programming/product quality. The console is being pushed past its limits in terms of how much graphical information to process, and as a result has not finished processing one frame before another comes along. However, other games have comparable graphics in 1080p without screen tearing.

Is it still worth buying Resident Evil 5?
Hell yeah. Look around for the cheapest price though. It was available for £29.99 (UK) but now the cheapest is £32.99.

Saturday 7 March 2009

Taskbar shows in full screen applications

I have a few applications that show the Windows taskbar when they are supposed to be running in full-screen. A couple of these applications are VLC media player, and Hauppauge WinTV.

I'm running Windows Vista (Home Premium), and have found a couple of workarounds, like auto-hiding the taskbar, or running the programs in a compatibility mode, but these solutions are not ideal, as they either compromise other functionality, or I have to switch them off again afterwards.

The under-lying problem seems to be a bug with Windows (possibly just Vista, possibly other versions too) where if you are running in Large Fonts mode (i.e. DPI-scaling is set to a non-standard value), then the call that gets by certain programs to put the application in full-screen mode does not hook into the functionality to hide the taskbar.
I can "prove this" by setting my DPI-scaling to standard (96DPI), rebooting (changing the DPI-scaling requires a reboot annoyingly) and then observing that full-screen mode (e.g. for WinTV) hides the taskbar ... and then changing it back to 120DPI (large) and doing the same - the taskbar is not hidden.

I did look briefly into how to file a bug report with Windows, but 10 minutes of Googling left me without many options (install Microsoft OneCare or pay $35 to report the issue over the phone - no thanks!).

One interesting thing is that although some applications display this behaviour, not all do. So Media Player Classic displays in full-screen correctly, where VLC does not. I can watch full-screen television in Windows Media Center without the taskbar, but not in WinTV.

I may look further into it later. Perhaps I can use the SysInternals Process Monitor to figure out which Windows API call is being used and figure out a way to patch it. Then I can try to badger someone at Microsoft to listen. Most likely I'll keep using the work-arounds and being mildly annoyed about it every time that I have to...

How do you check the cost of a BT call?

(For anyone reading this outside the United Kingdom, this doesn't really apply - it's only for UK telephone users on a British Telecom line!).

I recently had to make a call to an 0844 number to renew some insurance. I looked it up on SayNoTo0870 and obtained the equivalent national prefix number (0292 something), but wasn't sure which would be cheaper.
I found this tariff guide on the BT website, which mentions that 0845 and 0870 numbers are free for me at weekends. 0844 numbers are generally cheaper than 0870 numbers, so I thought that the 0844 number might be best.

Well, it turns out I was wrong, and I was charged 47 pence for a 10 minute call (grr!). I found this out not by waiting for my bill, but by using a technique I found on this page.

Basically, by entering a special code into the phone before the number you're calling, the call is made and you are immediately called back by the telephone exchange with the duration of the call and the cost.
The code is: *40*number#
(where number is the actual number you are calling - e.g. 084400000000).

This service appears to be free. There are a number of other "access codes" for BT exchanges listed on that page, most of which cost money. I guess there's a chance that even this service costs money, since the list is over 10 years old!