To put this in context:
// Flat Poly
// +0 int id
// +4 int size
// +8 vec3d normal
// +20 vec3d center
// +32 float radius
// +36 int nverts
// +40 byte red
// +41 byte green
// +42 byte blue
// +43 byte pad
// +44 nverts*int vertlist
void model_collide_flatpoly(ubyte * p) {
...
mc_check_sphereline_face(nv, points, vp(p+20), fl(p+32), vp(p+8), NULL, -1, p);
...
modelcollide.cpp is a mess, and one that is not going to be fixable with the way things are currently set up (think compiler structure alignments for starters - if everything is 4 byte aligned, not so bad, but this doesn't appear to be the case everywhere - not to mention the single letter macros all over the place).
Additionally, in modelread.cpp in read_model_file, we find:
cfread(pm->submodel[n].bsp_data,1,pm->submodel[n].bsp_data_size,fp);
i.e. bsp_data is stored within the POF file itself (if this is wrong, someone correct me). Which is additional badness because the structure of bsp_data cannot under any circumstances be changed without breaking everything.
I'd love to see an updated roadmap posted (even if it's only Kazans internal roadmap), based on what we've currently got, 3.6.11 doesn't look remotely like the roadmap currently.