Jump to content


Photo

True Low-res Video Output On Xbox


  • Please log in to reply
13 replies to this topic

#1 Tom M.

Tom M.

    X-S Senior Member

  • Members
  • PipPip
  • 173 posts

Posted 29 September 2008 - 07:38 AM

Hi,

I have been playing with this idea for a long time. As you know, Xbox is using a special video encoder chip that creates the signal for the TV. Unfotunately, if I understand, there is no choice in SDK to output anything like 320x224, 256x224 @ 60 Hz, simply nothing that would exactly match good NON-INTERLACED video modes. Obviously I am talking about 15 kHz non-interlaced CRT display, since this is the technology that video games were written for. Forget about fuzzy blurred plazmas, slow LCDs etc.

Just imagina how good the emulators would like providing them with correct, sharp, fullscreen video output of SNES, Mega Drive, Spectrum etc.

Looking at the documentation around the encoders, specifically the good old Conexant CX25871, IT IS apparently possible to PROGRAM the chip for specific video output, assuming the chip can handle such a resolution and refresh rate. Conexant even state that the chip supports any input starting from 320x200.

Apparently, Linux on Xbox is using that.

Also, there is a project called Advance MAME, now not being updated, that is using standard VGA cards to produce 15 kHz video modes on the VGA port. Obviously Xbox is not using VGA output but I believe the encoders, as shown in Linux, can be forced to specific display timings.

Another problem, Xbox SDK. This is what the emulators use, and there is no low res 15 kHz output in SDK. So, somebody would have to add it somehow.

And then, Xcalibur encoder in the latest series of the machine. Nobody knows the documentation.

Anyway, I DO believe, we CAN somehow, assuming there is a huge amount of work to be done, force the good old Xbox to become a true non-interlaced emulation beast.

Edited by Tom M., 29 September 2008 - 07:43 AM.


#2 ldotsfan

ldotsfan

    X-S Messiah

  • Dev/Contributor
  • PipPipPipPipPipPipPip
  • 3,100 posts
  • Xbox Version:v1.1
  • 360 version:unknown

Posted 29 September 2008 - 03:04 PM

http://forums.xbox-s...&...t&p=4290173
Will this do what you want? You manipulate the xbox video memory and timing directly.

#3 _zlinky

_zlinky

    X-S Member

  • Members
  • Pip
  • 75 posts

Posted 30 September 2008 - 06:09 AM

Wouldn't it be better to just render to a surface/texture of the same size, then stretch it to fill the screen?

#4 Tom M.

Tom M.

    X-S Senior Member

  • Members
  • PipPip
  • 173 posts

Posted 03 October 2008 - 07:53 AM

QUOTE(_zlinky @ Sep 30 2008, 05:45 AM) View Post

Wouldn't it be better to just render to a surface/texture of the same size, then stretch it to fill the screen?



Stretching is involved in todays games. You see it on DVDs as well. That is because the resolution of TV screens has increased several times, whereas the resolution of the entertainment video signal has not. Stretching looks awful compared to pixel perfect graphical presentation. It is like painting a precise portrait and then sweeping it with a wet cloth, turning off the fine details.

Another problem is flickering on the Xbox standard signal. Remember that the lowest factory resolution Xbox can use is 640x480 INTERLACED. In fact Xbox cannot do NON-INTERLACED low resolution video modes at all, unlike the PS2, which has, due to BC with PSX, low res capabilities.

Take any old school game, for instance, Miner 2049 on C64, and send it to the 480i screen. If you set the flicker filter to let's say "3" it is acceptable, but the flickering is still noticable, since the lines are "too thick" for the 480i modes. If you turn the flicker filter off completely, you cannot watch it since it flickers all over the screen. Obviously by turning the FF on, you introduce blurr to the graphics, it is far from crisp and clear, just plain ugly, washed out edges, like the portrait swept with the cloth, details lost. These games were programmed for the progressive 240 lines and similar resolutions.

Another problem is correct aspcet ration, 4:3. Take a SNES emulator on Xbox. If you want the display to be pixel perfect, you can achieve this by calibrating the texture around the screen, but still 256x224 (the SNES video resolution) is not the same aspect ration as the 640x480 of the Xbox, meaning you will not end up with correct aspect ration of the SNES, unless you want to stretch it, which is bad again. At least you will introduce artefacts to the graphics presentation, some pixels will be displayed twie, when you scroll such an image, you will introduce shivering, pixels will start to alternate between their 1 and 2-pixel stretched variations. Again, you can only hide this by adding blurr, again, pretty bad, quality degrading solution.

A good example is teletext built in in most modern CRTs. Teletext runs at low-res we are talking about. There you can see the huge difference in quality.

Apparently the video encoders in Xbox are capable of sending out true 15 kHz low resolution TV video modes, by programming their registers. The only thing I am a bit aware of if the XGPU is capable of sending lets say a 320x200 screen for instance, as you may know, the newer the graphics HW is, the less it likes old school stuff. But you an still increase the pclock by doubling the horizontal resolution (on behalf of performace unfortunately).

#5 openxdkman

openxdkman

    X-S Genius

  • Moderator
  • PipPipPipPip
  • 823 posts
  • Xbox Version:unk
  • 360 version:unknown

Posted 03 October 2008 - 01:41 PM

You can try openxdk.
We put only common resolution support, but you can dig in the big table of supported resolutions to pick up the resolution you want to try. Some are really silly resolutions, so I bet you will like them!

first value has many flags (50/60hz, region, adapter type, etc...)
second value is height and width
third value is what is to write in one of the chipset register to trigger that resolution at hw level

we converted a more friendly subpart of this table in openxdk source in home\OpenXDK\src\hal\video.c

I don't think you can play freely and directly with chipset under ms xdk.

CODE

            0x00400105,0x01e00280,0x88070701,
            0x00400105,0x01e002d0,0x88080801,
            0x00400105,0x02d00500,0x880b0a02,
            0x00400105,0x04380780,0x880e0c03,
            0x00480104,0x01e00280,0x88070701,
            0x00490104,0x01e00280,0x88070701,
            0x00480104,0x01e002d0,0x88080801,
            0x00490104,0x01e002d0,0x88080801,
            0x02480104,0x01e00280,0x88110f01,
            0x02490104,0x01e00280,0x88110f01,
            0x00430104,0x02d00500,0x880b0a02,
            0x00600104,0x01e00280,0x0801010d,
            0x00610104,0x01e00280,0x1801010d,
            0x00600104,0x01e002d0,0x0802020e,
            0x00610104,0x01e002d0,0x1802020e,
            0x01400104,0x00f00280,0x0801010d,
            0x01410104,0x00f00280,0x1801010d,
            0x01400104,0x00f002d0,0x0802020e,
            0x01410104,0x00f002d0,0x1802020e,
            0x02600104,0x01e00280,0x080f0d12,
            0x02610104,0x01e00280,0x180f0d12,
            0x03400104,0x00f00280,0x080f0d12,
            0x03410104,0x00f00280,0x180f0d12,
            0x00650104,0x04380780,0x880e0c03,
            0x01450104,0x021c0780,0x880e0c03,
            0x00600103,0x01e00280,0x20010101,
            0x00610103,0x01e00280,0x30010101,
            0x00600103,0x01e002d0,0x20020202,
            0x00610103,0x01e002d0,0x30020202,
            0x01400103,0x00f00280,0x20010101,
            0x01410103,0x00f00280,0x30010101,
            0x01400103,0x00f002d0,0x20020202,
            0x01410103,0x00f002d0,0x30020202,
            0x02600103,0x01e00280,0x200f0d0f,
            0x02610103,0x01e00280,0x300f0d0f,
            0x03400103,0x00f00280,0x200f0d0f,
            0x03410103,0x00f00280,0x300f0d0f,
            0x00600100,0x01e00280,0x04010101,
            0x00610100,0x01e00280,0x14010101,
            0x00600100,0x01e002d0,0x04020202,
            0x00610100,0x01e002d0,0x14020202,
            0x01400100,0x00f00280,0x04010101,
            0x01410100,0x00f00280,0x14010101,
            0x01400100,0x00f002d0,0x04020202,
            0x01410100,0x00f002d0,0x14020202,
            0x02600100,0x01e00280,0x040f0d0f,
            0x02610100,0x01e00280,0x140f0d0f,
            0x03400100,0x00f00280,0x040f0d0f,
            0x03410100,0x00f00280,0x140f0d0f,
            0x00400205,0x01e00280,0x88070701,
            0x00400205,0x01e002d0,0x88080801,
            0x00400205,0x02d00500,0x880b0a02,
            0x00400205,0x04380780,0x880e0c03,
            0x00480204,0x01e00280,0x88070701,
            0x00490204,0x01e00280,0x88070701,
            0x00480204,0x01e002d0,0x88080801,
            0x00490204,0x01e002d0,0x88080801,
            0x00430204,0x02d00500,0x880b0a02,
            0x00600204,0x01e00280,0x0801010d,
            0x00610204,0x01e00280,0x1801010d,
            0x00600204,0x01e002d0,0x0802020e,
            0x00610204,0x01e002d0,0x1802020e,
            0x01400204,0x00f00280,0x0801010d,
            0x01410204,0x00f00280,0x1801010d,
            0x01400204,0x00f002d0,0x0802020e,
            0x01410204,0x00f002d0,0x1802020e,
            0x02600204,0x01e00280,0x080f0d12,
            0x02610204,0x01e00280,0x180f0d12,
            0x03400204,0x00f00280,0x080f0d12,
            0x03410204,0x00f00280,0x180f0d12,
            0x00650204,0x04380780,0x880e0c03,
            0x01450204,0x021c0780,0x880e0c03,
            0x00600203,0x01e00280,0x20010103,
            0x00610203,0x01e00280,0x30010103,
            0x00600203,0x01e002d0,0x20020204,
            0x00610203,0x01e002d0,0x30020204,
            0x01400203,0x00f00280,0x20010103,
            0x01410203,0x00f00280,0x30010103,
            0x01400203,0x00f002d0,0x20020204,
            0x01410203,0x00f002d0,0x30020204,
            0x02600203,0x01e00280,0x200f0d10,
            0x02610203,0x01e00280,0x300f0d10,
            0x03400203,0x00f00280,0x200f0d10,
            0x03410203,0x00f00280,0x300f0d10,
            0x00600200,0x01e00280,0x04010103,
            0x00610200,0x01e00280,0x14010103,
            0x00600200,0x01e002d0,0x04020204,
            0x00610200,0x01e002d0,0x14020204,
            0x01400200,0x00f00280,0x04010103,
            0x01410200,0x00f00280,0x14010103,
            0x01400200,0x00f002d0,0x04020204,
            0x01410200,0x00f002d0,0x14020204,
            0x02600200,0x01e00280,0x040f0d10,
            0x02610200,0x01e00280,0x140f0d10,
            0x03400200,0x00f00280,0x040f0d10,
            0x03410200,0x00f00280,0x140f0d10,
            0x00400305,0x01e00280,0x88070701,
            0x00400305,0x01e002d0,0x88080801,
            0x00400305,0x02d00500,0x880b0a02,
            0x00400305,0x04380780,0x880e0c03,
            0x00a00304,0x01e00280,0x48030314,
            0x00a10304,0x01e00280,0x58030314,
            0x00a00304,0x01e002d0,0x48040415,
            0x00a10304,0x01e002d0,0x58040415,
            0x00a00304,0x02400280,0x48050516,
            0x00a10304,0x02400280,0x58050516,
            0x00a00304,0x024002d0,0x48060617,
            0x00a10304,0x024002d0,0x58060617,
            0x01800304,0x01200280,0x48050516,
            0x01810304,0x01200280,0x58050516,
            0x01800304,0x012002d0,0x48060617,
            0x01810304,0x012002d0,0x58060617,
            0x02a00304,0x01e00280,0x48100e18,
            0x02a10304,0x01e00280,0x58100e18,
            0x02a00304,0x02400280,0x4812101d,
            0x02a10304,0x02400280,0x5812101d,
            0x03800304,0x01200280,0x4812101d,
            0x03810304,0x01200280,0x5812101d,
            0x00600304,0x01e00280,0x08010119,
            0x00610304,0x01e00280,0x18010119,
            0x00600304,0x01e002d0,0x0802021a,
            0x00610304,0x01e002d0,0x1802021a,
            0x01400304,0x00f00280,0x08010119,
            0x01410304,0x00f00280,0x18010119,
            0x01400304,0x00f002d0,0x0802021a,
            0x01410304,0x00f002d0,0x1802021a,
            0x02600304,0x01e00280,0x080f0d1b,
            0x02610304,0x01e00280,0x180f0d1b,
            0x03400304,0x00f00280,0x080f0d1b,
            0x03410304,0x00f00280,0x180f0d1b,
            0x00a00303,0x01e00280,0x60030307,
            0x00a10303,0x01e00280,0x70030307,
            0x00a00303,0x01e002d0,0x60040408,
            0x00a10303,0x01e002d0,0x70040408,
            0x00a00303,0x02400280,0x60050509,
            0x00a10303,0x02400280,0x70050509,
            0x00a00303,0x024002d0,0x6006060a,
            0x00a10303,0x024002d0,0x7006060a,
            0x01800303,0x01200280,0x60050509,
            0x01810303,0x01200280,0x70050509,
            0x01800303,0x012002d0,0x6006060a,
            0x01810303,0x012002d0,0x7006060a,
            0x02a00303,0x01e00280,0x60100e13,
            0x02a10303,0x01e00280,0x70100e13,
            0x02a00303,0x02400280,0x6012101c,
            0x02a10303,0x02400280,0x7012101c,
            0x03800303,0x01200280,0x6012101c,
            0x03810303,0x01200280,0x7012101c,
            0x00600303,0x01e00280,0x2001010b,
            0x00610303,0x01e00280,0x3001010b,
            0x00600303,0x01e002d0,0x2002020c,
            0x00610303,0x01e002d0,0x3002020c,
            0x01400303,0x00f00280,0x2001010b,
            0x01410303,0x00f00280,0x3001010b,
            0x01400303,0x00f002d0,0x2002020c,
            0x01410303,0x00f002d0,0x3002020c,
            0x02600303,0x01e00280,0x200f0d11,
            0x02610303,0x01e00280,0x300f0d11,
            0x03400303,0x00f00280,0x200f0d11,
            0x03410303,0x00f00280,0x300f0d11,
            0x00a00300,0x01e00280,0x44030307,
            0x00a10300,0x01e00280,0x54030307,
            0x00a00300,0x01e002d0,0x44040408,
            0x00a10300,0x01e002d0,0x54040408,
            0x00a00300,0x02400280,0x44050509,
            0x00a10300,0x02400280,0x54050509,
            0x00a00300,0x024002d0,0x4406060a,
            0x00a10300,0x024002d0,0x5406060a,
            0x01800300,0x01200280,0x44050509,
            0x01810300,0x01200280,0x54050509,
            0x01800300,0x012002d0,0x4406060a,
            0x01810300,0x012002d0,0x5406060a,
            0x02a00300,0x01e00280,0x44100e13,
            0x02a10300,0x01e00280,0x54100e13,
            0x02a00300,0x02400280,0x4412101c,
            0x02a10300,0x02400280,0x5412101c,
            0x03800300,0x01200280,0x4412101c,
            0x03810300,0x01200280,0x5412101c,
            0x00600300,0x01e00280,0x0401010b,
            0x00610300,0x01e00280,0x1401010b,
            0x00600300,0x01e002d0,0x0402020c,
            0x00610300,0x01e002d0,0x1402020c,
            0x01400300,0x00f00280,0x0401010b,
            0x01410300,0x00f00280,0x1401010b,
            0x01400300,0x00f002d0,0x0402020c,
            0x01410300,0x00f002d0,0x1402020c,
            0x02600300,0x01e00280,0x040f0d11,
            0x02610300,0x01e00280,0x140f0d11,
            0x03400300,0x00f00280,0x040f0d11,
            0x03410300,0x00f00280,0x140f0d11,


#6 Tom M.

Tom M.

    X-S Senior Member

  • Members
  • PipPip
  • 173 posts

Posted 14 November 2008 - 09:15 PM

Are these modes linked to a particular video encoder model or do they work on any Xbox including Xcalibur 1.6? Anyway some of them appear to be low res indeed!


these seem to be 240p:

0x00f0xxxx

and 288p:

0x0120xxxx


At least we know there is a way to set the output to progressive 15 kHz without any custom video timing. The question is, what if one wants to build his own mode running at 55 Hz for instance :-)

I f this was available in Xbox SDK, emulators would look miles better on Xbox. (MS Virtual Console)

#7 openxdkman

openxdkman

    X-S Genius

  • Moderator
  • PipPipPipPip
  • 823 posts
  • Xbox Version:unk
  • 360 version:unknown

Posted 18 November 2008 - 12:24 PM

Unfortunately I can't answer your questions, because I don't have a wide knowledge about different hardware (xbox1 versions, TV compatibilites, etc...) or different software (dashboard versions, etc...)

All I can say is that you should keep in mind that low frequencies can damage TV's that don't support them.
So... becarefull.

#8 FlashKick

FlashKick

    X-S Genius

  • Members
  • PipPipPipPip
  • 803 posts
  • Xbox Version:v1.1
  • 360 version:v1 (xenon)

Posted 22 December 2008 - 09:21 PM

I am surprised not many people are interested in this! I used to think 480i output of of these emulators was acceptable, until I plugged in my old systems and played the wii virtual console. By the way, no display can be hurt by receiving a low res signal since no one I think complained about their tv breaking after hooking up an old system.
openxdk, huh? what would be needed to allow current emulators to support its multi res selection?
thanks

#9 XTecuterX73

XTecuterX73

    X-S Expert

  • Members
  • PipPipPip
  • 600 posts
  • Xbox Version:v1.3
  • 360 version:v1 (xenon)

Posted 17 February 2009 - 10:22 PM

I'm very interested in this. I hope somehow, someway, someday we can have this kind of output with our xbox and emulators. They have come a long way but i know they could be better.

XT-

#10 XTecuterX73

XTecuterX73

    X-S Expert

  • Members
  • PipPipPip
  • 600 posts
  • Xbox Version:v1.3
  • 360 version:v1 (xenon)

Posted 17 February 2009 - 11:06 PM

QUOTE(Tom M. @ Nov 14 2008, 03:51 PM) View Post

Are these modes linked to a particular video encoder model or do they work on any Xbox including Xcalibur 1.6? Anyway some of them appear to be low res indeed!
these seem to be 240p:

0x00f0xxxx

and 288p:

0x0120xxxx
At least we know there is a way to set the output to progressive 15 kHz without any custom video timing. The question is, what if one wants to build his own mode running at 55 Hz for instance :-)

I f this was available in Xbox SDK, emulators would look miles better on Xbox. (MS Virtual Console)


sorry for the double post, couldnt edit it. Is there a way to get this into sdk at all? Any conceivable way to "trick" the xbox into outputting 240p. Just to ask as well, what would you do with the value 0x00f0xxxx? Seems like a hex value....

XT-


#11 openxdkman

openxdkman

    X-S Genius

  • Moderator
  • PipPipPipPip
  • 823 posts
  • Xbox Version:unk
  • 360 version:unknown

Posted 05 March 2009 - 07:26 PM

the middle column is really height and width in pixel
it's the first column that has some flag telling if it's pal/ntsc etc...

the frequencies sent are hidden in the third column that is chipset related and hard to decipher

usually you select the line you want to try then output the third code to see what happens...
theoretically this third column shows all valid combination of bits the chipset will accept

just grab openxdk from sourceforge.net then try what you want
by extending the internal table (much shorter then the one I post here)

Edited by openxdkman, 05 March 2009 - 07:26 PM.


#12 xenepp

xenepp

    X-S Enthusiast

  • Members
  • 17 posts

Posted 27 April 2009 - 10:48 AM

I really think someone clever needs to take a good look at this, as amazing as these emulators are, it's a shame they can't look like the real consoles do, especially considering they are emulated on a console!

I tried Neogenesis on my old 4:3 CRT yesterday and the flickering gave me a headache which is a shame since I was looking forward to playing it as it was intended!

#13 openxdkman

openxdkman

    X-S Genius

  • Moderator
  • PipPipPipPip
  • 823 posts
  • Xbox Version:unk
  • 360 version:unknown

Posted 30 April 2009 - 02:21 PM

What can be immediately done is using Anti-Alisasing ability of xbox1 gpu (while rendering a sprite thru nvdia nv2a), and still remain in 480p.
It can stretch a smaller pixel area into full screen ultra fast through nvidia processor with nice anti-aliasing effect (think about it as a bluring effect).

For xdk, you are on your own
For openxdk, go to sourceforge.net, openxdk project, get pbkit and its samples.
The q*bert sample allows you to dynamically toggle between anti-aliasing rendering and straight bitblt (it's a dma ultra fast transfert, without effect).
There is also an even simpler example : anti-aliased pong

Edited by openxdkman, 30 April 2009 - 02:25 PM.


#14 DarthMingus

DarthMingus

    X-S Senior Member

  • Members
  • PipPip
  • 257 posts

Posted 08 March 2010 - 07:53 PM

Since it doesn't look like we'll be getting 240p output from the emulators in question anytime soon, I figured I would post this article:

http://scanlines.hazard-city.de/

The article explains that you can get an Extron Emotia scan converter to force the Xbox to output 240p.

1. You do need to either convert the Xbox's component signal to VGA or just get the Frosty VGA cables.

2. You then output the Xbox using VGA to the Emotia and select 480p output.

3. Flip a switch on the Emotia to "non-interlaced" and, boom, the flickering is gone and you now have scanlines, 240p.

This works great and Emotias are generally cheap, ranging from $50-$60 for the basic model and $120 for the new, "Super" version. Each does the same thing though, so try to get the cheaper one if you can.

Many thanks to Tobias!!!




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users