Thursday, 7 August 2014

Add graphics adapter resolution auto-detection into Easy2Boot

You may want to display your E2B menu in the highest/best resolution possible.
For instance, some odd systems may not support 800x600 mode.

I always advise you to use the most common display resolution so that the menu will appear correctly on all systems. However, you can arrange E2B so that it will cope with a variety of different systems.

You will need a range of wallpaper bitmaps for each resolution (though in some cases the largest bitmap may work for smaller resolution displays).

Auto-Detect highest resolution and use correct wallpaper

The code below can be used in a \_ISO\MyE2B.cfg menu to auto-detect the highest resolution available and then set the graphicsmode and wallpaper for that resolution. 

Note that the position of the menu will remain the same (unless you also add extra code - e.g. if "%GMODE%"=="1024 768 24" set rstart=5) and so will the text colours, etc. See the Sample MyE2B.cfg file for an example.

So each wallpaper bitmap should be similar in colour and content because the menu position and text colours will not change.

# allow vbeprobe command to output text
debug 1
# list all available BIOS graphics adpapter modes
vbeprobe > (md)0x220+5
# turn off text output for future commands
debug off
# look for 640, 800 and 1024 modes - be careful to only use x24 or x32 modes for full colour bitmaps
cat --locate=", 640x480x24"  (md)0x220+5 > nul && set GMODE=640 480 24 && set MYWBMPGZ=/_ISO/nice640.bmp.gz
cat --locate=", 800x600x24"  (md)0x220+5 > nul && set GMODE=800 600 24 && set MYWBMPGZ=/_ISO/nice800.bmp.gz
cat --locate=", 1024x768x24" (md)0x220+5 > nul && set GMODE=1024 768 24 && set MYWBMPGZ=/_ISO/nice1024.bmp.gz

# DELETE THESE TWO LINES ONCE IT IS WORKING
cat (md)0x220+5
echo GMODE=%GMODE%  MYWBMPGZ=%MYWBMPGZ% && pause