Sunday, 9 January 2011

Xenos

As you probably already know, I added support for Jasper EDRAM init in libxenon not long ago.

Next was adding support for more display resolutions. To add one in libxenon, you basically need 2 things: one ana chip registers dump and one xenos GPU registers dump. From the GPU dumps, you can guess video timings. So you add those timings to libxenon along with the ana dump and I thought it was supposed to work.
It turns out it wasn't that easy, you have to edit ana dumps a bit before they work in libxenon. I had to do some reverse engineering on the official kernel to find out exactly how.
Anyway I was able to add 1280x720, 1440x900 and 1280x1024 (all VGA). 1440x900 is rendered as 1440x896 because EDRAM isn't big enough to render it. This is the highest resolution I can add for now because unlike the official games, libxenon doesn't render 3d as 1280x720 and then scale it up, instead it renders to the native resolution directly.

Next was adding HDMI support. I quickly had an idea for this: logging I2C/SMbus and GPIOs accesses inside an official kernel (I thought that was the 3 ways of talking to HDMI hardware). I need to thank cOz for doing the kernel patching and logging. From those logs I was able to guess which registers I needed to write to activate HDMI output.

So we now have jasper support, HDMI, and more available resolutions in libxenon :)

Now I think I'll work on updating Xell a bit, so my next post will probably be about it.

12 comments:

  1. Hello,

    Thank you for continuing the development of both Xell in particular and the N64 environment. I have for a long time wanted to use HDMI and 1280x720 as my resolution. This is definately a good step in this direction. Keep up the good work!!

    Chris

    ReplyDelete
  2. Awesome job! Thank you for all these improvements and for explaining them in this way :)
    It would be really interesting to know where is libxenon right now (potential wise) and how far it could go (if there are limits to it).
    Thanks again!

    ReplyDelete
  3. Great to see HDMI working :) and im really looking forward to see a new hdmi compatible XELL :)
    btw, a graphical Xell interface would be awesome too ;)

    about the limits, the only limits i thin are the ones the hardware of the 360 sets.

    ReplyDelete
  4. You rock man keep it up were all behind you. If i could code i would be helping you right now, but sadly I cannot. What i can do is cheer for the sidelines. GO GliGli

    ReplyDelete
  5. Thx GliGli, you rock :)

    ReplyDelete
  6. One question if I may, and this may/may not be related to Xell, so apologies if there is nothing you can do about this.

    If you boot Linux via Xell whilst you have an external USB HDD connected during the boot process it hangs as it cannot find the correct USB Mass Storage Driver.

    I have read this relates to Xell and it's lack of support for properly detecting USB drives.

    Are you able to take a look at this also? As at present I need to remove the USB HDD every time I boot Linux.

    Many Thanks and if you cannot help here, no worries :)

    Chris

    ReplyDelete
  7. Thank you! Especially HDMI support in Xell sounds very good!

    Some games claim they use real FullHD 1920x1080 mode. For example Virtua Tennis 3. How would that be possible if EDRAM isn't big enough. Are they cheating somehow?

    ReplyDelete
  8. Yep they are upscaling from 720p to 1080p afaik

    ReplyDelete
  9. but there are homebrew apps that claim 1080p too...

    ReplyDelete
  10. nice work need any help testing ? happy_bunny you can find me on http://www.xboxhacker.org/. I would really like to ask you some questions if thats ok regarding xell gpu setup

    ReplyDelete
  11. There is lot of articles on the web about this. But I like yours more, although i found one that’s more descriptive.
    recent technology

    ReplyDelete
  12. Hi, This is a good post, indeed a great job. You must have done good research for the work, i appreciate your efforts.. Looking for more updates from your side. Thanks

    ReplyDelete