here the code, with which the tested one
Rem
Rem Simple BSP collision test using (PATCH 4)
Rem Author: Paul Millard - 15/04/03
Rem
Sync On
Sync Rate 100
Autocam Off
Hide Mouse
BackDrop On
Color BackDrop Rgb(255, 0, 0)
Set Camera Range 0, 0.1, 50000
Rem Predefine vars
fX As Float
fY As Float
fZ As Float
bFlag As Boolean
fSpeed As Float
fSpeed = 0.001
Rem Load a simple BSP file with a few square obstructions
Load Bsp "map.wad", "map.bsp"
Rem Create a simple sphere and position it above the world origin
Make Object Sphere 1, 1
Position Object 1, 0, 5, 0
Set Bsp Camera 0
Rem Setup sphere for BSP collision detection
Set Bsp Object Collision 1, 1, Object Size(1), 1
Repeat
Rem Position camera to look down from a 45deg angle above the sphere
Rem Note - camera does not use BSP collision
Point Camera 0, Object Position X(1), Object Position Y(1), Object Position Z(1)
Set Camera To Follow 0, Object Position X(1), Object Position Y(1), Object Position Z(1), 45, 4, Object Position Y(1) + 2, 50, 0
Rem
Rem Quick keyboard handler for moving sphere
Rem
If UpKey()
Inc fZ, fSpeed
Else
If fZ > 0 Then Dec fZ, fSpeed
EndIf
If DownKey()
Dec fZ, fSpeed
Else
If fZ < 0 Then Inc fZ, fSpeed
EndIf
If LeftKey()
Dec fX, fSpeed
Else
If fX < 0 Then Inc fX, fSpeed
EndIf
If RightKey()
Inc fX, fSpeed
Else
If fX > 0 Then Dec fX, fSpeed
EndIf
REM ***
REM Whether this is in or not, Bsp Collision Hit always returns false
REM irrispective of sphere collision with obstructions in the BSP Geometry
REM Process Bsp Collision 1
REM ***
bFlag = Bsp Collision Hit(1)
Rem Because this condition is always false, the gravity and speed
Rem factors for the sphere are never reset, but this besides point,
Rem BSP COLLISION HIT never returns TRUE
If bFlag
Text 0, 0, "Hit Occured" : REM @@@ Never shown @@@
fX = 0
fY = 0
fZ = 0
Position Object 1, Bsp Collision X(1), Bsp Collision Y(1), Bsp Collision Z(1)
Else
REM Simulate simple gravity, I know, not very elegant
Dec fY, 0.0001
Text 0, Text Size() * 1, Str$(fY)
Position Object 1, Object Position X(1) + fX, Object Position Y(1) + fY, Object Position Z(1) + fZ
Endif
REM This flag is always 0 when displayed as part of the test
Text 0, Text Size() * 2, Str$(bFlag)
Sync
Until ReturnKey()
End