Is a network rollback mod for 東方非想天則 / Touhou 12.3 Hisoutensoku, which aims to significantly improve the responsiveness of netplay, as well as introducing other rollback related improvements to replay mode.
Currently this is an early version, and might slightly increase instability, but will still significantly improve the netplay experience for almost all connections.
This repository also contains a stripped down version version of the crate ilhook-rs, and a modified version of mininip, all rights remain with their respective authors.
For SWRSToys users
-
navigate to your Hisoutensoku folder;
-
You should see a subfolder called
modules
, and a file calledSWRSToys.ini
-
drop the giuroll folder from this zip into
modules
-
add the following line into your
SWRSTOYS.ini
giuroll=modules/giuroll/giuroll.dll
-
find the following line
SWRSokuRoll=modules/SWRSokuRoll/SWRSokuRoll.dll
-
add a
;
at the beginning of that line, making it; SWRSokuRoll=modules/SWRSokuRoll/SWRSokuRoll.dll
Mod can be loaded using the Injector.
The injector needs to be built from source, and placed alongside the dll and the ini, which can be found in official releases.
- Start th123.exe
- Run the injector
if sucessfull, you should see a message.
If the injector closes abruptly, contact me about it.
More information about the usage in game is available in the installation and usage.txt
file inside the distributed zip
In replay mode pressing q
will start rewinding, using keys that modify playback speed (A/S/D) will affect the rewind speed.
You can also pause the replay by pressing z
. When the replay is paused this way you can move frame by frame, backwards or forwards, by using s
and d
Use with Tsk
When used with Giuroll, Tsk may record one battle multiple times. A workaround is provided for it:
To apply the workaround, SWRSAddr.ini
of tsk should be edited: delete the original line which starts with SWRS_ADDR_PBATTLEMGR
, or make it a comment by add a semicolon ;
at the beginning of it, and then add the following line (also on the SWRSAddress
section):
SWRS_ADDR_PBATTLEMGR = 0x0047579c
Mod can be buit with cargo
using the nightly-i686-pc-windows-msvc
toolchain.
When building from source please remember to add the --release
/-r
flag.
- Game doesn't load: check if the ini is valid according to the example ini provided in this repository, and is placed alongside the mod without any changes to it's name, and check for mod conflicts by disabling all other mods, and adding them back one by one.
- Failed to connect: either player is using an incompatible version of giuroll, or is not using it at all.
- Game desynced: I'm planning on adding a desync detector to make debugging desyncs easier, but since desyncs also occur with SokuRoll there is no guarantee they are caused solely by the rollback. If the desyncs are common, persists between game restarts, and are not appearing with Sokuroll, you can contact me about it.
you can contact me about any issues through discord: @giufin
in DMs.
DPhoenix and PinkySmile - for advice and support with hisoutensoku modding
Ysaron - for majority of the testing
TStar, Barcode, Rouen, ChèvreDeFeu, Klempfer, LunaTriv, Aquatic, BIG BREWED and Sigets - for additional testing
Slavfox - for various help with reverse engineering and open source
Fireseal - for making the original rollback mod for hisoutensoku