How to get a 4:3 scale on FBA ?
  • Context
    I run CPS / CPS2 games on FBA. The RPi is hdmi plugged on a 16:9 lcd screen.

    Issue
    Games are displayed in 16:9 scale.

    Reason (aka "why it's complicated")
    CPS / CPS2 games got a native resolution of 384x224 (ratio 1,71:1 wich is very close to 16:9) instead of 320x240.
    The image was then scale with the monitor setup to be correctly displayed on a 4:3 screen.
    The problem is that on a 16:9 hdmi screen you don't got these type of verticaly and horizontaly scale setup and seriously it's 2k14 here so i want to fix it with a software solution instead of a hardware solution.

    I already tried hdmi and sdtv setup in /boot/config.txt. But it seems that FBA just ignore the RPi display conf and follow it's own configuration. Maybe i missed something ?

    I didn't try to play with overscan-left and overscan-right parameter in config.txt. I should probably give a try, but i was more looking for a solution in fba2x.cfg or capex.cfg (this one doesn't seem logical to me, but why not) but i have any clue wich parameters i could use to get à 4:3 scale or add black line on the sides to "manually make" a 4:3 scale.


  • Not sure what settings you've tried in boot/config.txt, but try doing this before starting PiFBA:

    tvservice -e "CEA 1"
    fbset -xres 640 -yres 480 -vxres 640 -vyres 480
    sync

    This was the only technique I've found that seemed to affect the video output of PiFBA, though I didn't end up using it because it put black bars on the top/bottom and left/right. It was definitely seemed sharper but I didn't like how small the image had gotten.

    I never got the overscan parameters to do what I wanted.
  • I didn't thought about tvservice, i'm gonna check the man about it and try your solution expecting that the PiFBA won't ignore that to display its own resolution.
    If it doesn't work, i'll give a try modifying capex.c and recompiling.
    What do you think about changing that

    "
    //sq vc_dispmanx_rect_set( &dst_rect, 0, 0, display_width, display_height);
    vc_dispmanx_rect_set( &dst_rect, options.display_border, options.display_border,
    display_width-(options.display_border*2), display_height-(options.display_border*2));
    "

    To

    //sq vc_dispmanx_rect_set( &dst_rect, 0, 0, display_width, display_height);
    vc_dispmanx_rect_set( &dst_rect, options.display_border, options.display_border,
    display_width-(options.display_border*2), display_height);

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!