https://bugs.winehq.org/show_bug.cgi?id=39123
Bug ID: 39123 Summary: Fairy Fencer F - Large number of FIXME ntdll NtQuerySystemInformation calls Product: Wine Version: 1.7.49 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntdll Assignee: wine-bugs@winehq.org Reporter: chaos.kagami@gmail.com Distribution: ---
Created attachment 52131 --> https://bugs.winehq.org/attachment.cgi?id=52131 Replaces SYSTEM_INTERRUPT_INFORMATION returning zeroed array with rand() filled array
The following messages are repeated through the log during gameplay of Fairy Fencer F, over and over:
fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_INTERRUPT_INFORMATION fixme:ntdll:NtQuerySystemInformation (0x00000021,0x5dd43a80,0x00000010,0x6fcdd00) stub fixme:ntdll:NtQuerySystemInformation (0x0000002d,0x5dd43a80,0x00000020,0x6fcdd00) stub
Looking through WINE's source, as well as various internet resources - SYSTEM_INTERRUPT_INFORMATION and another two-ish unimplemented queries can be used to seed RNG, or just be used as random numbers. Wine returns a zero-filled array in all of these cases, which results in oddly crippled RNG ranges in Fairy Fencer F. I've observed a whole battle where every attach hit and as long as the same attack was used, it did exactly the same damage every time. Also, in general, the game appears to lack some randomness with these stubs versus windows. Replacing the zero-filled array with a rand() filled one improves the situation, but I'm rather sure it isn't what windows does.
A rather hackish patch is attached. The difference in random numbers in-game should be easily and immediately observable. I'm also aware the patch doesn't meet submission guidelines - it's not meant to be a real fix. I'm not entirely sure what the 'correct' fix is.