DBC doesn't support more than one camera, but as with most problems there's a way around it. Unfortunately there's always a cost - and with this, it's speed.
Programs with multiple screens always run very slowly. I've had 4 screens working before (posted on here a long, long time ago), but more than that is unusable on the majority of machines.
Here's my old code for a two camera horizontally split display. Use the cursor keys for the top view and W, A and D for the bottom view. Just don't expect blinding speed!
Rem Example Of Two Camera Views
Rem By TDK_Man March 2003
Gosub Setup
rem Program loop
Do
rem Player 1 controls
if leftkey()=1
position camera CamPos1X,200,CamPos1Z
YRotate Camera CamYAngle1
CamYAngle1 = WrapValue(CamYAngle1-1)
Endif
if rightkey()=1
position camera CamPos1X,200,CamPos1Z
YRotate Camera CamYAngle1
CamYAngle1 = WrapValue(CamYAngle1+1)
Endif
if upkey()=1
position camera CamPos1X,200,CamPos1Z
YRotate Camera CamYAngle1
Move Camera 25
CamPos1X = Camera Position X()
CamPos1Z = Camera Position Z()
Endif
rem Player 2 controls (A, W and D)
if KeyState(30)=1
position camera CamPos2X,200,CamPos2Z
YRotate Camera CamYAngle2
CamYAngle2 = WrapValue(CamYAngle2-1)
Endif
if KeyState(32)=1
position camera CamPos2X,200,CamPos2Z
YRotate Camera CamYAngle2
CamYAngle2 = WrapValue(CamYAngle2+1)
Endif
if KeyState(17)=1
position camera CamPos2X,200,CamPos2Z
YRotate Camera CamYAngle2
Move Camera 25
CamPos2X = Camera Position X()
CamPos2Z = Camera Position Z()
Endif
rem Refresh the screen
Gosub CamViews
loop
CamViews:
Rem Camera '1'
position camera CamPos1X,200,CamPos1Z
YRotate Camera CamYAngle1
Set Camera View 0,0,800,300
Rem Camera '2'
position camera CamPos2X,200,CamPos2Z
YRotate Camera CamYAngle2
Set Camera View 0,300,800,600
Sync
Return
Setup:
rem Activate manual sync and hide mouse
Set Display Mode 800,600,16
Backdrop On
Autocam off
Sync on: Sync Rate 0
CLS 0
Hide mouse
Set Camera Range 1.0, 100000.0
Make Matrix 1,5000,5000,50,50
Create Bitmap 1,256,256
CLS RGB(0,100,0)
Get Image 1,0,0,256,256
Prepare Matrix Texture 1,1,1,1
Delete Bitmap 1
Set Camera View 0,0,1,1
Randomize Matrix 1,5
For N=0 To 50
Set Matrix Height 1,N,0,(Rnd(10)+5)*50
Set Matrix Height 1,N,50,(Rnd(10)+5)*50
Set Matrix Height 1,0,N,(Rnd(10)+5)*50
Set Matrix Height 1,50,N,(Rnd(10)+5)*50
Next N
Normalise(1)
Update Matrix 1
Rem Camera Settings
CamPos1X = 2500: CamPos1Z = 500: CamYAngle1 = 0
CamPos2X = 2500: CamPos2Z = 4500: CamYAngle2 = 180
Return
Function Normalise(MatrixNum)
Rem By Lee Bamber From DB Example - Adds shaded areas to matrix to give depth
For z=1 to 50
For x=1 to 50
h8#=get matrix height(MatrixNum,x,z-1)
h4#=get matrix height(MatrixNum,x-1,z)
h#=get matrix height(MatrixNum,x,z)
h2#=get matrix height(MatrixNum,x,z)
x1#=(x-1)*25.0
y1#=h#
x2#=(x+0)*25.0
y2#=h4#
dx#=x2#-x1#
dy#=y2#-y1#
ax#=atanfull(dx#,dy#)
ax#=wrapvalue(90-ax#)
z1#=(z-1)*25.0
y1#=h2#
z2#=(z+0)*25.0
y2#=h8#
dz#=z2#-z1#
dy#=y2#-y1#
az#=atanfull(dz#,dy#)
az#=wrapvalue(90-az#)
nx#=sin(ax#)
ny#=cos(ax#)
nz#=sin(az#)
Set matrix normal MatrixNum,x,z,nx#,ny#,nz#
next x
next z
Update Matrix MatrixNum
EndFunction
TDK_Man