memory access violation

Blitz3D Forums/Blitz3D Programming/memory access violation

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

Ok guys, here is my problem!
I'm getting a memory access violation! when i run my program. don't worry about not seeing anything, I know the program is not complete!. Another thing, I program in modules. This makes correcting mistakes a lot easier!!!

There are three files altogether

1. The main file
Include "Collisions.bb"
Include "Setup.bb"
Include "World.bb"
;Include "Player.bb"
;
; ===============================================
;
;   These files are not necessary for this particular game-script but they help out in coding
Include "key function.bb"



;
;        Main Routines
;

SetBuffer BackBuffer()
Setup
landscape("terrain-1.bmp", "water-2_mip.bmp", "sky", "heightmap_256.bmp")
Flip
UpdateWorld
RenderWorld
WaitKey()


2. A sub-program
;  SetUp file

Type MainCamera
		Field entity,camera,target,heading,sky
End Type
Type Player
	Field entity,model
	Field anim_speed#,player_y#,roll#
End Type


Function SetUp()
	Graphics3D 800, 600, 32, 0
	Player1.Player = CreatePlayer(0,10,0)
	Player1Camera.MainCamera = CreateMainCamera(Player1\entity)
End Function

Function CreateMainCamera.MainCamera(entity)
	c.MainCamera=New MainCamera
	c\entity=entity
	c\camera=CreateCamera()
	
	c\target=CreatePivot( entity )
	PositionEntity c\target,0,3,-10
	EntityType c\target,TYPE_TARGET
	
	c\heading=CreatePivot( entity )
	PositionEntity c\heading,0,0,20
	c\sky=CopyEntity( sky )
	Return c
	
End Function
Function UpdateMainCamera ( c.MainCamera)
	If KeyDown(200)
		TranslateEntity c\heading,0,-3,0
	Else If KeyDown(208)
		TranslateEntity c\heading,0,+3,0
	EndIf
	
	dx#=EntityX(c\target,True)-EntityX(c\camera,True)
	dy#=EntityY(c\target,True)-EntityY(c\camera,True)
	dz#=EntityZ(c\target,True)-EntityZ(c\camera,True)
	
	TranslateEntity c\camera,dx*.1,dy*.1,dz*.1
	
	PointEntity c\camera,c\heading
		
	PositionEntity c\target,0,0,0
	ResetEntity c\target
	PositionEntity c\target,0,3,-10

	PositionEntity c\sky,EntityX(c\camera),EntityY(c\camera),EntityZ(c\camera)
	
End Function

Function CreatePlayer.Player(x#, y#, z#)
	
	p.Player=New Player
	p\entity=CreatePivot()
	p\model=CopyEntity( player_model,p\entity )
	p\player_y=y
	PositionEntity p\entity,x,y,z
	EntityType p\entity,TYPE_PLAYER
	EntityRadius p\entity,1.5
	ResetEntity p\entity
	Return p

End Function


3. Another sub-program
Function skybox(file$)
	
	m=CreateMesh()
	;front face
	b=LoadBrush( file$+"_FR.jpg",49 )
	s=CreateSurface( m,b )
	AddVertex s,-1,+1,-1,0,0:AddVertex s,+1,+1,-1,1,0
	AddVertex s,+1,-1,-1,1,1:AddVertex s,-1,-1,-1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	;right face
	b=LoadBrush( file$+"_LF.jpg",49 )
	s=CreateSurface( m,b )
	AddVertex s,+1,+1,-1,0,0:AddVertex s,+1,+1,+1,1,0
	AddVertex s,+1,-1,+1,1,1:AddVertex s,+1,-1,-1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	;back face
	b=LoadBrush( file$+"_BK.jpg",49 )
	s=CreateSurface( m,b )
	AddVertex s,+1,+1,+1,0,0:AddVertex s,-1,+1,+1,1,0
	AddVertex s,-1,-1,+1,1,1:AddVertex s,+1,-1,+1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	;left face
	b=LoadBrush( file$+"_RT.jpg",49 )
	s=CreateSurface( m,b )
	AddVertex s,-1,+1,+1,0,0:AddVertex s,-1,+1,-1,1,0
	AddVertex s,-1,-1,-1,1,1:AddVertex s,-1,-1,+1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	;top face
	b=LoadBrush( file$+"_UP.jpg",49 )
	s=CreateSurface( m,b )
	AddVertex s,-1,+1,+1,0,1:AddVertex s,+1,+1,+1,0,0
	AddVertex s,+1,+1,-1,1,0:AddVertex s,-1,+1,-1,1,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	;bottom face	
	b=LoadBrush( file$+"_DN.jpg",49 )
	s=CreateSurface( m,b )
	AddVertex s,-1,-1,-1,1,0:AddVertex s,+1,-1,-1,1,1
	AddVertex s,+1,-1,+1,0,1:AddVertex s,-1,-1,+1,0,0
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	ScaleMesh m,100,100,100
	FlipMesh m
	EntityFX m,1

End Function
Function landscape(land$,water$,sky$,heightmap$)
	
	light=CreateLight()
	TurnEntity light,45,45,0
	
	land_tex=LoadTexture( land$,1 )
	ScaleTexture land_tex,10,10

	land=LoadTerrain( heightmap$ )
	EntityTexture land,land_tex
	
	TerrainShading land,True
	PositionEntity land,-1000,-100,-1000
	ScaleEntity land,2000.0/256,100,2000.0/256
	EntityType land,TYPE_TERRAIN
	TerrainDetail land,750,True
	
	For k=1 To n_trees
		Repeat
			tx#=Rnd(-70,70)-150
			tz#=Rnd(-70,70)+400
			ty#=TerrainY( land,tx,0,tz )
		Until ty>water_level
		t=CopyEntity( tree_sprite )
		PositionEntity t,tx,ty,tz
		ScaleSprite t,Rand(2,3),Rand(4,6)
	Next
	
	ground=CreatePlane()
	EntityTexture ground,land_tex
	PositionEntity ground,0,-100,0
	EntityOrder ground,9
	
	water_tex=LoadTexture( water$,3 )
	ScaleTexture water_tex,20,20
	
	water=CreatePlane()
	EntityTexture water,water_tex
	PositionEntity water,0,water_level,0
		
	sky=skybox( sky$ )
	EntityOrder sky,10
	HideEntity sky

End Function