@Brazos
I think that when DBC was written, wide screen displays weren't that common - especially not on PCs. From what I'm observing, the 3d area is only refreshed based on a .75 height to width ratio (600/800 or 480/640 etc.) Though the screen will be sized to what you want, the 3d area will keep the ratio leaving 'slits' on either side of the 3d area displayed.
I tried adjusting the camera view, the FOV etc. to no avail.
One solution I came up with which works pretty well is to copy the 3d from bitmap 0 BACK to itself but expanded to the whole screen. The main problem is you'd loose a bit of the resolution.
Here's the code. Steer with the mouse, move with the up and down arrows:
rem adjust wide screen view for DBC
rem by latch
rem 07/04/2011
remstart
In the subroutine _adjust_camera_view, the screen resolution is checked.
If the ratio of height to width <> .75 (based on 3:4 ) then find the
area of the 3d display based on a 3:4 ratio and capture the coordinates
from the center area of the screen.
In _copy_screen_0 , use the coordinates to copy bitmap 0 onto itself
except with an expanded view to eliminate the non refreshed bands that
appear on either side of the 3d area when the screen resolution is set to
Wide Screen
remend
SelectScreenMode() : rem Choose desired resolution function by TDK_Man
sync on
sync rate 0
make matrix 1,1000,1000,25,25
rem check the ratio of width to height of the screen and
gosub _adjust_camera_view
do
gosub _move_camera
gosub _copy_screen_0
text 0,0,"Screen width = "+str$(screen width())
text 0,20,"Screen height = "+str$(screen height())
text 0,40,"FPS = "+str$(screen fps())
sync
loop
end
`----------------------------------------------------------------
_adjust_camera_view:
rem check if the ratio of height to width is .75
scratio#=bitmap height(0)/(bitmap width(0)+0.0)
if scratio# ! .75
tempwd=(bitmap height(0)*1.333333333)+.5 : rem round up
dif=bitmap width(0)-tempwd
if dif <=1 then dif=2
scx1=(dif/2)
scx2=scx1+(tempwd-1)
scy1=0
scy2=bitmap height(0)-1
endif
return
`----------------------------------------------------------------
_copy_screen_0:
if scratio# ! .75
rem copy the 3d area to a larger area on bitmap 0
copy bitmap 0,scx1,scy1,scx2,scy2,0,0,0,bitmap width(0)-1,bitmap height(0)-1
endif
return
`----------------------------------------------------------------
_move_camera:
move camera (upkey()-downkey())*5
xang#=wrapvalue(camera angle x()+mousemovey())
yang#=wrapvalue(camera angle y()+mousemovex())
rotate camera xang#,yang#,0
return
`----------------------------------------------------------------
Function SelectScreenMode()
rem by TDK
position mouse 0,0
oldfont$=text font$()
oldsize=text size()
Set Text Font "Arial",1 : Set Text Size 14 : sync
Perform Checklist For Display Modes
t=checklist quantity()
ct=0
for n=1 to t
if right$(checklist string$(n),2)="32" then inc ct
next n
dim chkstring$(ct)
ct=0
for n=1 to t
if right$(checklist string$(n),2)="32"
inc ct
chkstring$(ct)=checklist string$(n)
endif
next n
`ListNum = Checklist Quantity()
ListNum = ct
TRows = ListNum/4+1: TColumns = 4: THeight = Text Height("X")
BoxHeight = THeight*TRows+40: BoxWidth = TColumns*90
X=(Screen Width() - BoxWidth)/2: Y=(Screen Height() - BoxHeight)/2
Ink RGB(255,255,255),0: Box X,Y,X+BoxWidth,Y+BoxHeight
Ink RGB(180,180,180),0: Box X+1,Y+1,X+BoxWidth,Y+BoxHeight
Ink RGB(220,220,220),0: Box X+1,Y+1,X+BoxWidth-1,Y+BoxHeight-1
Ink RGB(255,255,255),0: Center Text Screen Width() / 2,Y+5,"Please Select The Required Screen Mode:"
Ink 0,0: Center Text Screen Width() / 2-1,Y+4,"Please Select The Required Screen Mode:"
TextLPos = X+10: TextTPos = Y+30: RowCount=0: Ink 0,0
For N=1 To ListNum
`Text TextLPos,TextTPos,CHECKLIST STRING$(N)
text TextLPos,TextTPos,chkstring$(N)
Inc TextTPos,THeight: Inc RowCount
If RowCount = TRows
RowCount=0: TextTPos = Y+30
Inc TextLPos,90
Endif
Next N
Get Image 10000,X,Y,X+BoxWidth,Y+BoxHeight
Ink RGB(120,120,220),0: Set Text Transparent
Repeat
Mx=MouseX(): My=MouseY(): Mc=MouseClick()
If Mx>(X+10) and Mx<(X+BoxWidth-10) and My>(Y+30) and My<(Y+BoxHeight-10)
OverColumn = (Mx-(X+10))/90: OverRow = (My-(Y+30))/THeight
ItemNum = OverColumn* TRows +OverRow+1
If OldItemNum <> ItemNum And ItemNum >= 0 And ItemNum <= ListNum
Paste Image 10000,X,Y
`Text OverColumn*90+X+10,OverRow*THeight+30+Y,CHECKLIST STRING$(ItemNum)
Text OverColumn*90+X+10,OverRow*THeight+30+Y,chkstring$(ItemNum)
OldItemNum = ItemNum
Endif
Endif
Until Mc=1 And ItemNum >0 and itemnum <= ListNum
`Mode$ = CHECKLIST STRING$(ItemNum)
Mode$ = chkstring$(ItemNum)
Delete Image 10000
BitDepth = VAL(Right$(Mode$,2))
NewMode$=Left$(Mode$,Len(Mode$)-3)
For N=1 To Len(Mode$)
If Mid$(NewMode$,N)="x"
XRez = VAL(Left$(NewMode$,N-1))
YRez = VAL(Right$(NewMode$,Len(NewMode$)-N))
Exit
Endif
Next N
`ScreenParams(0)=XRez
`ScreenParams(1)=YRez
`ScreenParams(2)=BitDepth
Set Display Mode XRez, YRez, BitDepth
Ink RGB(255,255,255),0
Set Text Font oldfont$,1 : Set Text Size oldsize : sync
EndFunction Mode$
Enjoy your day.