Fixed Audio Timing breaks RNG in PJ64. I have been reading that people are saying FAT is more accurate but this is just not true.
Tested Games with FAT = 0
SSB64 - Character pulled from the toy box will always remain the same every load of the game.
MK64 - Items boxes are not random, a high amount of shrink items given during multi player sessions. (investigating)
SWE1R - Sebulba is in the intro cut scene each boot, instead of Anikin.
I have a feeling that using FAT is just nonsense when it comes to RNG, and a disclaimer should warn its users. FAT on by default is bad for the uninformed.
FAT has been made worse by optimizations since FAT was first introduced, Now, it's no benefit. Because timing has been changed by optimizations.
Latest 2.4, I cannot play Body Harvest at all. It slows down to 30-40VI's and crackles like hell. My 2.3 build with #984 reverted is ok. It runs full speed mostly. I don't know why my latest 2.4 build performs so bad. Not much changed.
Have you gone back to check this claim with prebuilds? or is this an assumption.. The fact is optimizations are beneficial to performance.
FAT is just an inaccurate hack that is only needed for net play or debugging , and should not be a default setting because of this RNG error. I hope that we can we start looking at audio solutions that don't rely on hacks.
You clearly have no idea what you are talking about. FAT is actually _more accurate_ emulation.
The benefits it brings are innumerable, for instance, games actually being in sync with graphics (without resorting to actual hacks like Sync-to-audio from Jabo's or the core option), and it stops games like SimCity and Re-Volt from crashing. Tons of bugs were closed due to FAT implementation.
@oddMLan you clearly do.. enjoy accuracy..
But instead of arguing please see that RNG is killed when FAT is enabled, and that is a deal breaker. If you still think that this isn't an issue I would love to debate this. I want to hear how you come out looking like I'm not correct..
I would expect FAT fantasies to stop being reverential to accuracy or audio emulation goals.
I have tested, and I am sure with testing you will have to agree that RNG is needed to function properly for enjoyable game play in MK64 MP.
Sure I do see your points in the OP, but correlation doesn't always equal causation. There are many timing hacks in the core that prevent proper diagnosis of these issues. For intance, I'm not saying FAT is _entirely_ accurate, but it is definitely more accurate than no FAT cause it fixes so many timing issues. I'm thinking a game could change the AI value at a particular moment, or that the AI value is "close enough" but off by some margin that causes differences in emulation than in the console. This seems to be a more sound hypothesis on why the RNG seems to be affected by it.
Maybe the AI value shouldn't be constant 100% of the time, just like Counter Factor being fixed to a single multiple isn't accurate emulation of the COUNT register of a real N64, thus causing so many "off by one" timing issues, such as the DK64 intro/rap sequence/when DK jumps the vines. But partial emulation is better than no emulation of those.
@Frank-74 was your comment stating that optimizations broke FAT and then FAT broke RNG? Just want to make sure that I get what you are saying.
I noticed a few issues with RNG and what I thought was Azimer's Audio plugin, but since I always used FAT with his plugin because of the conversations here supporting how good FAT was, I linked the problem to the plugin and not that FAT was enabled causing the issue.
I still believe that PJ64 had some timing issues that are causing the audio problems that are getting reported. Please see example. https://www.youtube.com/watch?v=NNJo_U8hc4A
Trying to fix these issue with finding magic numbers, and FAT are only wasting your time.
@oddMLan
I agree that I could be wrong about FATs accuracy, but the RNG has nothing to do with the problems you guys are having with audio.
My claim is accurate, and I hope that your observations lead to better audio emulation in the future. I use a private audio plugin and this week I learned that the default setting of FAT is a horrendous mistake, and can confuse end users who don't know the ins and outs of our efforts.
I hope that someone will complete a PR request and close this thread.
I updated the topic to reflect that this is more of an issue where no input is captured to generate the RNG seed.
I think that FAT may have other portions in games that may not be impacted by inputs, and strict timing may break the RNG mid game.
zilmar has stated that there could be an option to generate random timing with FAT each boot, but this may only mask the issue..
FAT is important but is not accurate solution in its current state.
The fact is optimizations are beneficial to performance.
@theboy181
Not always. For example, if a function is optimized to be much faster, it can result in timing getting ahead of where it should be.
And performance of my 2.4 build is worse with FAT on or off. And crackles bad with FAT on or off.
Azimer has said that he needs to fix FAT in PJ64, as the timing is off now. Hence, why I said FAT has no benefit currently.
I had a problem a while back with Monopoly occasionally freezing (and Monaco Grand Prix after race). I made a savestate between every move, so I could provide a savestate just before the freeze happened and find out what went wrong. However, on reloading the savestate, the next move was random, and the freeze never occured. Bloody nuisance. And that was with FAT = 0.
The freezing never occurs now though. Haven't had it happen for months.
FAT needs work. PJ64's timing in general needs work. But the reason FAT was enabled was that without FAT, a number of games are unstable (Sim City, Castlevania, etc) or have clearly incorrect timings. And when I say "clearly incorrect timings", I mean that in the first level of Turok 3, a crashed police car seen from the edge of the building clearly lands about a metre or so from where it lands on real N64 hardware without FAT. Enabling FAT fixes this.
It also fixes games that use MusyX or MORT speech audio, and has been the ONLY viable fix for those games.
PJ64's audio will never be fixed until Jabo's audio plugin is removed, anyway.
FAT is better timing and only affects audio lengths and audio interrupts. In a nutshell it takes the number of COUNTs per VI Interrupt and uses that information to time the AI DMA transfer rate. There are some things that could be improved and could use a once over. It's not code I've looked at since it was merged.
this canbe closed
Most helpful comment
@oddMLan
I agree that I could be wrong about FATs accuracy, but the RNG has nothing to do with the problems you guys are having with audio.
My claim is accurate, and I hope that your observations lead to better audio emulation in the future. I use a private audio plugin and this week I learned that the default setting of FAT is a horrendous mistake, and can confuse end users who don't know the ins and outs of our efforts.
I hope that someone will complete a PR request and close this thread.