When a shader gets a _bmap variable, its texture is updated once per frame from the bitmap. This is not a bug, but just the purpose of the _bmap variable. Just as _var or _flt variables that are also updated once per frame.
Code:
if(once_per_frame) {
if (paramDesc.Type == D3DXPT_TEXTURE) {
char* found = MAT_FindParam(paramDesc,PID_BMAP);
if (found) {
BMAP_T* bmap = (BMAP_T*)CS->GetObject(found,BMAP_IDX);
if (bmap)
m->d3deffect->SetTexture(hParam,D3D_Tex(bmap));
else
m->d3deffect->SetTexture(hParam,NULL);
}
}
}