grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Xbox vesa-like framebuffer


From: Vesa Jääskeläinen
Subject: Re: Xbox vesa-like framebuffer
Date: Mon, 31 Dec 2007 22:04:23 +0200
User-agent: Thunderbird 2.0.0.9 (Windows/20071031)

Robert Millan wrote:
> It seems the Xbox (hacked) firmware, Cromwell, sets up a vesa-like framebuffer
> with predefined 640x480x32 RGBX settings at addr *(0xfd600800) [1]
> 
> I just gave a quick look at vbe.c to see how hard would it be to adapt it to
> use default settings rather than BIOS calls.  Can someone provide a bit of
> advice on what those settings would be?  In particular, I wonder about:
> 
>   `mode' (as returned by grub_vbe_get_video_mode_info())
>   `active_mode_info.memory_model' (and in case of 
> GRUB_VBE_MEMORY_MODEL_PACKED_PIXEL,
>   do we have to setup vga palette?)
>   `framebuffer.bytes_per_scan_line'
>   `framebuffer.bytes_per_pixel'  --> 4, right?
> 
> Anything else I could have missed ?  Also, is there an easy way to get 
> debugging
> output printed somewhere (before we have to care about font stuff) in the form
> of raw pixels ?  This thing doesn't seem to have a serial port or any other
> simple debugging interface.
> 
> [1] from 
> http://www.xbox-linux.org/wiki/Porting_an_Operating_System_to_the_Xbox_HOWTO#Video_Driver
> 

If you are just making a new video driver just use vbe*.c as advice and
get specs from VideoSubsystem section on wiki :). You can most likely
re-use software blitter code from vbe*.c codes. Most of the vbe specific
information comes from VBE 3.0 specification.

About grub_video_get_info:
http://grub.enbug.org/VideoSubsystem#head-eecc170736caecf422b56260e1bacc5e5a7fb12a

Basicly it just describes dimensions of the screen and color settings.

bytes_per_pixel means how many bytes one pixel takes. Eg. how many times
I have to multiply X to get correct X coordinate on screen.
bytes_per_scan_line is same for Y coordinate. If you have larger
scanline than visual width then this must match that. Eg. if you have
display width of 1024 pixels and scanline width of 2048 pixels then you
must multiply Y coordinate with 2048 pixels (* bytes_per_pixel).

If you need some more info just ping me on IRC or on this list.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]