I just tried this on my brother's XP without issue -- does something actually have to collide (I get the impression that's not necessary from your description)...? Does this code crash too?
; CreateNewCube: only first parameter is required, must be a brush (eg. loaded via LoadBrush). If
; other parameters are not supplied, or left as 0, the first brush is used.
Function CreateNewCube (nearBrush, farBrush = 0, leftBrush = 0, rightBrush = 0, topBrush = 0, bottomBrush = 0)
; -------------------------------------------------------------
; Default brush for all is the first parameter supplied...
; -------------------------------------------------------------
If farBrush = 0 Then farBrush = nearBrush
If leftBrush = 0 Then leftBrush = nearBrush
If rightBrush = 0 Then rightBrush = nearBrush
If topBrush = 0 Then topBrush = nearBrush
If bottomBrush = 0 Then bottomBrush = nearBrush
; -------------------------------------------------------------
; Create a mesh for the cube (empty)...
; -------------------------------------------------------------
newMesh = CreateMesh ()
; -------------------------------------------------------------
; Create a surface for one face...
; -------------------------------------------------------------
cNear = CreateSurface (newMesh, nearBrush)
; -------------------------------------------------------------
; Add vertices (corner points)...
; -------------------------------------------------------------
v1 = AddVertex (cNear, 0, 0, 0, 0, 0)
v2 = AddVertex (cNear, 1, 0, 0, 1, 0)
v3 = AddVertex (cNear, 1, -1, 0, 1, 1)
v4 = AddVertex (cNear, 0, -1, 0, 0, 1)
; -------------------------------------------------------------
; Add 2 triangles, defined by above vertices, to surface...
; -------------------------------------------------------------
AddTriangle (cNear, v1, v3, v4)
AddTriangle (cNear, v1, v2, v3)
; -------------------------------------------------------------
; Repeat for rest...
; -------------------------------------------------------------
cFar = CreateSurface (newMesh, farBrush)
v1 = AddVertex (cFar, 1, 0, 1, 0, 0)
v2 = AddVertex (cFar, 0, 0, 1, 1, 0)
v3 = AddVertex (cFar, 0, -1, 1, 1, 1)
v4 = AddVertex (cFar, 1, -1, 1, 0, 1)
AddTriangle (cFar, v1, v3, v4)
AddTriangle (cFar, v1, v2, v3)
cLeft = CreateSurface (newMesh, leftBrush)
v1 = AddVertex (cLeft, 0, 0, 1, 0, 0)
v2 = AddVertex (cLeft, 0, 0, 0, 1, 0)
v3 = AddVertex (cLeft, 0, -1, 0, 1, 1)
v4 = AddVertex (cLeft, 0, -1, 1, 0, 1)
AddTriangle (cLeft, v1, v3, v4)
AddTriangle (cLeft, v1, v2, v3)
cRight = CreateSurface (newMesh, rightBrush)
v1 = AddVertex (cRight, 1, 0, 0, 0, 0)
v2 = AddVertex (cRight, 1, 0, 1, 1, 0)
v3 = AddVertex (cRight, 1, -1, 1, 1, 1)
v4 = AddVertex (cRight, 1, -1, 0, 0, 1)
AddTriangle (cRight, v1, v3, v4)
AddTriangle (cRight, v1, v2, v3)
cTop = CreateSurface (newMesh, topBrush)
v1 = AddVertex (cTop, 0, 0, 1, 0, 0)
v2 = AddVertex (cTop, 1, 0, 1, 1, 0)
v3 = AddVertex (cTop, 1, 0, 0, 1, 1)
v4 = AddVertex (cTop, 0, 0, 0, 0, 1)
AddTriangle (cTop, v1, v3, v4)
AddTriangle (cTop, v1, v2, v3)
cBottom = CreateSurface (newMesh, bottomBrush)
v1 = AddVertex (cBottom, 1, -1, 1, 0, 0)
v2 = AddVertex (cBottom, 0, -1, 1, 1, 0)
v3 = AddVertex (cBottom, 0, -1, 0, 1, 1)
v4 = AddVertex (cBottom, 1, -1, 0, 0, 1)
AddTriangle (cBottom, v1, v3, v4)
AddTriangle (cBottom, v1, v2, v3)
; -------------------------------------------------------------
; Centre the mesh (easier than doing it via vertices ;)
; -------------------------------------------------------------
PositionMesh newMesh, -0.5, 0.5, -0.5
; -------------------------------------------------------------
; Update the mesh's normals (lighting information, basically)
; -------------------------------------------------------------
UpdateNormals newMesh
Return newMesh
End Function
; Demo...
Graphics3D 640, 480
cam = CreateCamera ()
MoveEntity cam, 0, 0, -5
; Load two brushes...
logo1 = LoadBrush ("b3dlogo.jpg")
logo2 = LoadBrush ("logowhite.bmp")
; Apply them to near (first parameter, REQUIRED) and far sides...
cube = CreateNewCube (logo1, logo2)
EntityType cube, 1
Collisions 1, 1, 1, 1
MoveMouse 320, 240
a = Input ("UpdateWorld on or off (1 or 0)? ")
Repeat
TurnEntity cube, -MouseYSpeed () / 2.0, 0, 0
TurnEntity cube, 0, MouseXSpeed () / 2.0, 0, 1
If a Then UpdateWorld
RenderWorld
Text 20, 20, "Move mouse..."
Flip
Until KeyHit (1)
End