@MonsterIestyn from what I saw the x86 asm code didn't get included on 64 bit builds on general due to an ifdef in the header, but I'm talking about Linux builds at least.
It's also not necessarily about accuracy but about what the existing builds use for netplay.

With this, 64 bit Linux builds can play just fine against others without desyncing and disconnecting.

@toaster I have not, but I assumed that because it multiplies, and because it didn't have netplay issues, that it doesn't have this issue. I'll check later to confirm and report back.

@MonsterIestyn from what I saw the x86 asm code didn't get included on 64 bit builds on general due to an ifdef in the header, but I'm talking about Linux builds at least.
It's also not necessarily about accuracy but about what the existing builds use for netplay.
With this, 64 bit Linux builds can play just fine against others without desyncing and disconnecting.
@toaster I have not, but I assumed that because it multiplies, and because it didn't have netplay issues, that it doesn't have this issue. I'll check later to confirm and report back.
@Alam I will once I get back home.
Thanks

Yeah, was just learning via Wikipedia that divide != right bit shift precisely because of rounding of negative numbers, funnily enough. The ASM version evidently has been using bit-shifting all this time as far as I can tell, so yeah.

Yeah, was just learning via Wikipedia that divide != right bit shift precisely because of rounding of negative numbers, funnily enough. The ASM version evidently has been using bit-shifting all this time as far as I can tell, so yeah.
But if this really does fix the netgame issues, that would be great.

Apologies for the delay. Thanks to light2yellow, it was pointed out that shifting negative integers was undefined behaviour in C.
I have worked around that, and after 3 hours of playing on a 64 bit server with 32 bit clients using the asm code with quite a few people, I can confirm that this fix does indeed work.

Apologies for the delay. Thanks to light2yellow, it was pointed out that shifting negative integers was undefined behaviour in C.
I have worked around that, and after 3 hours of playing on a 64 bit server with 32 bit clients using the asm code with quite a few people, I can confirm that this fix does indeed work.
Github PR is here https://github.com/STJr/SRB2/pull/259
EDIT: I have also kept the old commit/code for reference in the `fixedmul-c-fix-undefined` branch