An example of what I am doing.
SetShadowMappingMode( 3 )
SetShadowSmoothing( 2 )
setshadowrange( 8.0 )
SetShadowMapSize( 512, 512 )
SetShadowBias( 0.0012 )
home_grd = CreateObjectPlane( area_sizex, area_sizez )
SetObjectCollisionMode( home_grd, 0 )
SetObjectRotation( home_grd, 90, 0, 0)
SetObjectReceiveShadow( home_grd, 0 ) // receive is off yet its still overwriting the texture stages I have set
SetObjectCastShadow( home_grd, 0 )
shadow_grd = CreateObjectPlane( area_sizex, area_sizez )
SetObjectCollisionMode( shadow_grd, 0 )
SetObjectRotation( shadow_grd, 90, 0, 0)
SetObjectReceiveShadow( shadow_grd, 1 )
SetObjectCastShadow( shadow_grd, 0 )
SetObjectTransparency( shadow_grd, 1 )
SetObjectColor( shadow_grd, 255, 255, 255, 0 )
SetObjectPosition( shadow_grd, .025, .025, .025 )