I changed the code to use effect_load(), but it makes no difference, the decal is still one big black square:
function shader_road()
{
my.material = road_shader;
//if(lightmap_level == 1){road_shader.effect = "multitex4_ps1_0sha.fx";}
//if(lightmap_level != 1){road_shader.effect = "multitex4_ps1_0ans.fx";}
effect_load(road_shader,"multitex4_ps1_0sha.fx");
road_shader.ambient_red = road_ambient.x;
road_shader.ambient_blue = road_ambient.y;
road_shader.ambient_green = road_ambient.z;
road_shader.diffuse_red = road_diffuse.x;
road_shader.diffuse_blue = road_diffuse.y;
road_shader.diffuse_green = road_diffuse.z;
}