I believe the issues you're seeing are due to wrong types and format specifiers on 64-bit systems. They disappear if you compile to a 32-bit executable or if you use the proper types from stdint.h. This game is from 2002, it is likely expecting long to be a 32-bit type and not a 64-bit type and hence has buffer sizes for sprintf that correspond to that. At least for me locally, after getting past dozens of compiler warnings, changing the code to use int32_t where appropriate fixes these bugs.

