Loads Removal is here Bois
6 years ago
Victoria, Australia

OK GUYS, after about 3-4 hours or getting help and literally dying from multitasking at 3am i finally got us an autosplitter, courtesy of a few people ofc, (cos i cant code for jack), @Fatalis, @Shiftweave, @Sphere, @Spiraster, @0Seren, @Souzooka from the Speedrun tools development discord. Especially Shiftweave who basically spoon fed me the creation of the asl notepad file. also i cant forget Lukemodi for his moral support whilst i was slowly losing life essence over using cheat engine :D Rip console PC 4 Life (Side Note) To see it on livesplit u need to type the game name as exactly "Star Wars Battlefront II" and it will come up as made by lako3000 Time removed is exactly as we have already done so there is no need to change any current runs. it removes the time as soon as victory pops up untill the next level starts. which means it also removes time in the stats screen in instant action. I guess they are now break screens because real time still goes? so if someone needs a break from instant action% I'm guessing they can just keep it on real time whilst on stats screen as it keeps counting because it wont effect the in game time in the end. i do believe that by using this the quitting out in campaign when victory pops up is now not needed? if that is still done. i will say though i havnt tested the loads removal with campaign so if someone could do that it would be great, i tested it with instant action and it was amazing :D

EDIT: Load remover only works for a few levels atm, in the process of fixing it

EDIT: FIXED THE LOADS REMOVER. Conditions of it are as follows:

  • Does not remove the initial load time of the first level of the splits.
  • After the first level is completed it removes game time from the 'Victory" untill the start of next level (CAMPAIGN ASWELL). This means u can sit on stats menu or on the attack screen before campaign mission with no loss of game time.
  • Timer will pause on final split so you can get accurate end time
  • Disclaimer: ALL LEVELS HAVE BEEN TESTED EXCEPT FOR SPACE MISSIONS. NOTIFY ME IF YOU ENCOUNTER ANY PROBLEMS Thanks all
Edited by the author 6 years ago
DunyOfGont and rakv like this
Victoria, Australia

If you want to add the code as a scriptable autosplitter in livesplit here it is

state ("BattlefrontII") { int negativeWhenLoading: 0x49CFA4; } isLoading { return current.negativeWhenLoading != 0; }

Otherwise just use the "activate" with game name "Star Wars Battlefront II"

Sweden

I tried it out and it works very well for campaign, good job! (didn't get autosplitter to work but that's another story)

However, the current loads removal in full-game seems to be different from instant action:

"To take out loading times, you must only take out the times where you have lost control over the game due to loading. There are 2 between every mission.

The first is from clicking "Attack" to when the screen turns black for the pre-mission cutscene. The second is after a mission, from clicking "Yes" to "Quit Game" (to skip the end cutscene and leaderboard) up to when the "Save Game?" dialogue appears."

My interpretation of this is that the time between the loading screens (the menuing where you see a spinning planet) counts toward the final time and can't be removed. With that said, I would gladly ditch that part of the rule if it means we could this tool. At the same time one could say that menuing is an important aspect of speedrunning.

Québec

That issue has been on my mind as well, I have not yet replied to this thread yet because I was still thinking about.

The first problem is that we always been removing load time from when pressing "Quit" for RotE , not as soon as victory screen appears. And the second thing like Rakv said, the menu with the spinning planet does count toward your overall gametime since inputs are required by player to proceed.

I have been used to running this game this way for years now and removing load time manually does not take me too much time anymore. However, it really seems that the loading time removal rule has been turning down many new players from running the game. I have always wanted to be more people involve in speed running this game (especially for the any%w/bonuses category) so I think a change in the ruleset could be worthwhile to make the category more accessible.

Here is the changes I could do to the rules:

1-Load time is removed from the first frame that "Victory" appears.

2-Time spent on the planet screen does not need to be added anymore, timer will resume on the first black screen frame of the start of the next mission.

The time spent on the planet screen is so short and can be skipped through so fast with the help of keyboard inputs that I think ignoring it would be a good idea for everyone sake. Menuing is very important part of speed running I think as well, but if removing that time for everyone else is pain we better just remove that rule.

I still need some thinking about a few minor details but this is what I am thinking right now. Let me know what you guys think or if you have any other ideas. Thanks.

rakv likes this
Victoria, Australia

Right, so the loads remover is not an autosplitter, it just removes loads @rakv.

Also, it is probably possible to make it so that game time still runs through the spinning planets Menu'ing except its probably too much for me to do because simply getting the loads remover took like 8 hours+. (Cheat engine is hard XD)

Indeed manually removing loading times is really time consuming for most people and some may not even know how to do it so i would agree that it is a turn off and the load remover is an effort to negate that.

Given that i have literally 0 experience in coding i dont think i could do much more with the loads remover other than get it to remove other 'loading times' or fix it if need be.

Victoria, Australia

the game was updated to work with steam multiplayer so for now the load remover is broken with the steam version of the game, im currently working on a way to fix it :D

Québec

Damn, the update broke your load remover? That is unfornate lol. Hopefully you can manage to fix it. Kind of weird that a small update like that would break it when the update is not even campaign related.

Victoria, Australia

yea the problem was that the update didnt seem to change anything however it did change the addresses of the game memory. for example; when i made the original load remover i used cheat engine to pinpoint an address in the memory of the game which would change values from 0 to higher or lower than 0 whilst 'loading' or 'not in game'. the address was like 0xFC something, except now that the update has gone through that address is missing, and if i remember correctly none of these addresses look like the ones before the update.

so i think ive fixed the problem by finding a new address (or maybe the same one just renamed or something) which changes from 0 to higher or lower than 0 whilst 'loading'. it appears to work for the few levels ive tested it on however i havnt gone through a full run. i will upload the .asl file into resources and the code for the asl file below this comment. feel try to test it and let me know if its not working or anything and ill try some more ways to fix it :D

state ("BattlefrontII") { int negativeWhenLoading: 0x1AB1FD8; } isLoading { return current.negativeWhenLoading != 0; }

Edited by the author 6 years ago
Minnesota, USA

WIll this just detect my steam version and then remove loads???

Victoria, Australia

if you add the load remover .asl code as a 'scriptable autosplitter' in livesplits layout feature, then yes it will. just make sure its set up properly with comparison against game time, and the latest steam version of the game

Québec

@Anyone who wants to install the load remover with livesplit

A lot of people are still having issues with this so here's a step by step reminder on how install the load remover for steam:

1.Download the file

  • The file can be downloaded from our ressources section here on speedrun.com "Load Remover Steam Version 12/01/2018"
  • Extract the file from the .zip folder somewhere on your computer (you probably want to keep near your splits folder or something but it is up to you).
  • Current file name is "Working SWBF2 LR.asl"

2.Write the specific "correct" name of the game in livesplit

  • Official name of the game is "Star Wars: Battlefront II" BUT YOU DON'T WANT TO USE THAT.

  • Right Click --> Edit Splits... Write the game name as so:"Star Wars Battlefront II" (notice of the ":" is not there).

-If done correctly you should see a message above the Real Time and Game Time tabs:"Load Removal is available. (By lako3000)"

3.Install the file downloaded from speedrun.com

  • Still in the "Edit Splits..." window, you want to press the Activate button. Then press Settings.

  • A new window will pop up when pressing Settings. Click "Browse..." and select the Working SWBF2 LR.asl you previously downloaded

  • Once that is done, press OK to close out the Component Settings tab (ignore the options that are under Script Path)

  1. Set livesplit to Game Time
  • By default livesplit is set to Real Time. We need it to be set to Game Time for the script to work.

  • Right Click --> Compare Against --> Game Time

So there you go, if everything here is done right the load remover should work for you. Remember that the only thing the script does is pausing the timer for you, so you will need to start the timer on your own and also press the split button when you reach a victory screen.

Make sure the steam version of this game is to the lastest version.

Happy speed running, may the RNG be with you.

Québec

Hey o/

An update to anyone looking to install the load remover script. I made a new and improved tutorial on how to install it. There is actually 2 ways to install it and this tutorial shows you the best way to install it because there can be some issues with one of the methods.

Here it is: