The New Load Remover by PLA - My 2 Cents
8 months ago

Hey everyone,

For a while, Yakuza 0's load remover has been plagued by an unfortunate bug. DrTChops' load remover was a great step forward in making the run more competitive across hardware, but sadly, it not-infrequently fails to remove certain loads. The result is runners losing time through completely meta-game reasons, and of course, the worse your loads were, the harder you got hit.

Luckily, fellow community member PlayingLikeAss came up with a new load remover that, building on DrT's work, uses a better pointer path that seems to avoid this problem completely. I spent my last stream testing that load remover, and you can see the results in this highlight of the entire stream:

As explained in the vod, I use two instances of LiveSplit here - the one on top titled Any% Debug uses PLA's load remover, while the bottom one uses the old load remover.

The results mostly speak for themselves. The timers, for the most part, behave the same. There are some decimal differences which I believe are inconsequential, but maybe this should be looked into more (it would be interesting to see if this happens even if two instances use the same load remover - the differences could be down simply to differences in polling intervals).

But the important part is, of course, the loads themselves. You can see the first load fail to be removed by the old timer at around 53:38, and several more following up. Note that it's not simply that the new load remover stops in more places: every place where it stops is a place where the old load remover usually stops, except for when it fails due to a bug. These are loads that should be removed, and worse, it fails on different loads each run.

The meatiest part of the vod starts around 2:39:49. where I started a (sigh) no-reset run of the game. Here are the time stamps for the instances where the old timer fails to remove significant load times:

  1. 2:49:30 Entering Toko Credit
  2. 3:07:44 Exiting Hakua Building
  3. 3:19:44 Oda Fight End
  4. 3:21:35 Leaving Majima's Office
  5. 3:26:45 Taxi Ride
  6. 3:43:30 Leaving Dragon & Tiger
  7. 4:12:47 After Shibusawa Watch Cutscene
  8. 4:51:03 Taxi Ride

There may be others I missed due to them being very small, but I believe this accounts for all the time losses worth at least 1 second. As you can see, these are all instances where the old load remover would usually remove the loads, but fails randomly. Again, these failures will occur at different places depending on your run, and will cost different amounts of time; for me, the average seems to be around 18 seconds.

Personally, I think PLA's new load remover works exactly as expected and should be adopted as our new timer. But that's up to the community, naturally. This is just information I've collected that I hope will help in reaching a conclusion.

Thanks for reading, and many thanks to DrTChops and PLA for their invaluable work.

EDIT: Just to clarify, given how similar the timers are, there is no need to change anything in the leaderboards if the new timer is accepted. All the old times would remain valid. All that would be needed is to switch the timer used for runs going forward.

Edited by the author 8 months ago
FireLighT likes this
Canada

I'd only add that I'm checking the same four bytes in memory that DrT found in order to determine loads. The only thing changing is that it's being accessed consistently. The old pointer would sometimes be overwritten (at the 0xA38 offset, specifically) at random intervals (it's part of a collection of 30 pointers in that particular region, all of which can change during any given load). The new pointer hasn't been overwritten once in the many hours we've looked at it.

FireLighT and BigNoNo like this