Hi! Seeing that people complain about this issue in unrelated places, I've made the patch, which automatically switches to protocol 999 when map bounds exceed -16384 .. 16384 range (not sure this is a correct range, but that's easily fixable :) ).
The correct range is +/- 4096, but the range applies to entity positions, so checking the BSP bounds to determine whether to upgrade to protocol 999 is technically a heuristic that could have false negatives or positives.
The problematic thing are maps that barely fit in the signon buffer of QS when running in protocol 666, and won't load in 999:
- telefragged.bsp (RRP) - this one would cause false positives because it has geometry outside of +/- 4096 but no entities, and doesn't require protocol 999. And it will fail to load in 999 in QS due to the signon buffer overflowing.
- ad_sepulcher.bsp (AD)
The correct range is +/- 4096, but the range applies to entity positions, so checking the BSP bounds to determine whether to upgrade to protocol 999 is technically a heuristic that could have false negatives or positives.
The problematic thing are maps that barely fit in the signon buffer of QS when running in protocol 666, and won't load in 999:
- telefragged.bsp (RRP) - this one would cause false positives because it has geometry outside of +/- 4096 but no entities, and doesn't require protocol 999. And it will fail to load in 999 in QS due to the signon buffer overflowing.
- ad_sepulcher.bsp (AD)
It looks like vkQuake defaults to 999 + float coords + fte extensions: https://github.com/Novum/vkQuake/blob/master/Quake/sv_main.c#L32
Ironwail also just defaults to 999: https://github.com/andrei-drexler/ironwail/blob/master/Quake/sv_main.c#L32C29-L32C29 but I think it has the unlimited signon buffer fix.
IMO the best plan is to forget about the heuristic and backport what Ironwail did (default to 999 + unlimited signon buffer).
OK, closing as rejected in favor of https://github.com/sezero/quakespasm/issues/74