A repository of all known SWRSToys and SokuEngine mods and their frameworks for Touhou Hisoutensoku (12.3).
This repository was originally created from the original SWRSToys release by Anonymous Coward with the following goals:
- make sure the source code for SWRSToys is easy to find
- make a repository of all released modules and their source code, including ones that were not made by Anonymous Coward
- have up-to-date headers of the latest reverse-engineered addresses from the game, updated as new people find more addresses
- set up a CI for easy, reproducible builds and deployment of the latest release of SWRSToys.
The code in this repository comes from various contributors:
- this repository was originally forked off a source archive of SWRSToys, made by Anonymous Coward
- DPhoenix made shady-loader, UPnPNat, PaletteTrueColors
- FireSeal made SokuRoll
- fishshapedfish made DPadFix, ReplayReSync
- PinkySmile made DiscordIntegraton, SokuStreaming, InfiniteDecks, TrialMode, AdvancedPraticeMode, HostInBackground
- Ichirin made CharactersInForeground, NetGameScore, PracticeEx, SokuEngine, SWRSokuRoll, EasyDecks, AltFullscreen
- RhythmLunatic made WindowedFullscreen
- Shinki and PC_volt made ReplayInputView+
- PC_volt made LabTool
- S-len made SkipIntro and InGameHostlist
- Fear Nagae, PC_volt, PinkySmile, S-len made FixMeiling236
- PinkySmile made ReDelay, based on an original version by Nepoke
- mauve made th123e (and its loader, in
th123eloader/
) - delthas made Autopunch, GetIP, SokuReplays, as well as all the plumbing: adding CMake, CI, formatting, ...
If you have made an SWRSToys or SokuEngine module, do contact us either on GitHub or with a PM on Discord to cc#6439
so we can add it here, with proper credits!
There are two mod packs:
- the SokuEngine pack includes all mods, a simple in-game UI to enable and disable mods
- the SWRSToys pack includes only SWRSToys mods, and is only configurable from a text file outside of the game
For now it is recommended you use the SWRSToys pack.
- Download and install the Visual C++ 2019 x86 redistribuable
- Download the latest SokuEngine release and extract it to your game folder.
- Run the game as usual.
- To enable and disable mods, enter the ModConfig menu at the bottom of the main menu screen.
- To change the configuration of modules you enabled, modify their
.ini
configuration files (in themodules/
folder) while the game is turned off, then restart the game.
Any change made to a .ini file will require a restart.
- Download the latest SWRSToys release and extract it to your game folder.
- Open SWRSToys.ini in Notepad and enable some modules by deleting their
;
, then save the file. - Modify the
.ini
configuration files of modules you enabled (in themodules/
folder) while the game is turned off. - Run the game as usual.
Any change made to a .ini file will require a restart.
Automatically host without forwarding your ports, with any other Autopunch user.
This module does not have a configuration file.
Replace some of the game BGMs.
The only supported format is OGG Vorbis.
Draw characters over HP bars, for better clarity.
This module does not have a configuration file.
Automatically show your game status in Discord, send Soku invites and join games with one click on Discord.
The mod merely sends and receives IP addresses from Discord, you'll still need to forward your ports or use Autopunch.
See here for details.
Map the joystick DPad and trigger buttons to game inputs.
Edit your decks freely during a netplay session.
Fix a serious game bug regarding an underministic Meiling 236 recovery duration which could cause game desyncs.
This module is very lightweight; it is advised & good netplay etiquette to always enable it.
Automatically copy your IP and an optional host message to your clipboard when starting to host.
This replaces an old deprecated module of the same name that was SokuEngine-exclusive and buggy.
Overhauls the netplay menu by adding an in-game graphical lobby/hostlist connected to the Discord host list bot.
The mod is connected to Konni only, not Parvati. Hopefully your server will move to Konni soon.
Enhance practice mode by adding fast character position save/reset, character state colors, and frame data info.
Details
- Display of grazing in transparent, CH in red, invulnerability in blue (do not trust it for DP moves, as they are strangely hardcoded), guard unavailable in purple.
- Position management: 5 hardcoded positions + 1 position customizable with the save key, press 4, 1, 2, 3, 6 or 5 with the reset key. You can set your own keys in the .ini file.
- Gap time in a blockstring displays the number of idle frames the defender comes back to between the first and second hit. If nothing is displayed, the string is tight, else, it is safely mashable by the amount displayed on the console. "Xf gap gets beaten by Xf move, and trades with X+1f move" is how you should interpret it.
- Frame advantage: both characters must be on ground for the result to be displayed.
- Highjump cancel advantage: p2 remains on the ground while p1 must hjc for the result to be displayed.
- Skills reset with a key customizable in the .ini, reset the levels and the skills you used to default.
Do some misceallenous patches to the game, such as disallowing spectating by default.
Edit MemoryPatch.ini to enable/disable options.
Available patches:
- 16bitsColor: reduce rendering color depth from 32 bits to 16 bits
- InputFreedom: accept gamepad input even when the device is inactive
- DefaultDenyWatch: disallow spectating by default
- DefaultDenyBattle: spectate by default
- AllowMultiInstance: allow running multiple instances of the game at once
- DisableWeatherEffect: disable all weather effects
- AlwaysRandomMusic: always play random stage music regardless of in-game choice
- NativeDPadFix: use the gamepad DPad rather than the circle pad (use only if DPadFix does not work)
Display the number of consecutive online matches you play, and optionally play specific sounds on consecutive games played.
Change the game start bell sound for online matches.
Display profile name for players in a game with a specific formatting (color, font, ...) (spectating and/or playing).
Simulate game input delay in Practice mode.
Make sure to read the configuration file and set your game control keys properly for the mod to work.
Run replay files easily from Windows.
This associates .rep with Soku for easy watching in one click. You can also drag replays or folders containing replays to the th123.exe file.
Display keystrokes in game replays in real time, as well as hitboxes, ...
The replay speed can also be changed with configurable hotkeys: by default F10 speeds up; F9 slows down; F11 pauses and unpauses the game; F12 steps a single frame forward; F4 toggles hitboxes display; F6 displays additional debug information; F7 cycles through different game inputs display.
ReplayInputView+ replaces the dated ReplayInputView mod.
Work around a game bug causing desyncs by forcing the game state to Moutain Vapor or Normal.
By default, the game is in normal state. When ending a game/spectate/replay during mountain vapor, the game goes in Mountain Vapor state and stays this way until the next game starts. When joining, spectating, or watching a replay that does not correspond to your state, you will be desynced.
The mod allows you to automatically resync some replays (currently, those downloaded from sokureplays) and manually set your weather state if needed.
Simply load custom game resources (sprites, images, sounds, music, ...) to the game.
To add and remove mods, use the shady-manage program in modules/shady-loader/
or use the in-game ModConfig menu if you're using SokuEngine.
To create mods, refer to the official project documentation.
Skip the game intro screen, automatically enter a menu or a custom practice preset on start.
Helps SokuReplays track your games, even accross IP changes.
Automatically create an overlay with useful information for streaming, usable from a browser or from OBS Studio.
To use the mod, start playing or spectating, and in OBS Studio, add a Browser Capture at URL http://localhost
with resolution 1920 x 1080.
Load SokuRoll automatically.
This mod uses a configuration file in its module directory, not the SokuRoll.ini
in the main game folder. This mod does not require installing SokuRoll (does not require SokuRoll.dll
and SokuRoll.ini
).
Translate the game to English.
This mod translates the game from Japanese to English. It is a replacement for the legacy th123e.exe
loader file with identical functionality.
This module does not have a configuration file.
Automatically forward your ports every time the game runs.
This mod uses the UPnP NAT technology, which lets applications automatically request a port forwarding without user intervention. This technology is known to be disabled by default on most routers and might therefore not work for everyone.
Make the game window resizable, and change the game fullscreen mode to windowed fullscreen for fast switching and no stretching.
Details
This mod merges the previous functionality of WindowResizer, WindowedFullscreen, AltFullscreen in a single mod.
Display the current score (in won games) in network play.
This module is configured in-game in the ModConfig menu.
Greatly improve Practice mode by adding several game options and support for macros.
This module is configured in-game in Practice mode.
- Make a new folder in
modules/
. You can copy an existing module and adapt it. - Edit the root
CMakeLists.txt
file accordingly. - Your module will automatically be injected.
Clone the project, including its submodules:
git clone --recursive https://github.com/SokuDev/SokuMods.git
Or, if you have already cloned without pulling the submodules, download them:
git submodule update --init --recursive
Install Visual Studio (or CMake and the Visual C++ Build Tools).
If you're running Visual Studio 2017 or newer: import the directory in Visual Studio, the project will be recognized automatically.
If you're running Visual Studio 2015 or older: you will need to install CMake and run:
cmake -A Win32 .
MinGW and Cygwin are not supported (__thiscall
is needed in order to be compatible with the base game, which only the Visual C++ Build Tools supports).
After building, run the install target, which will create an install
folder with all the built files.
- Files in
include/directx/
are licensed according to their license header - Files named
bin/discord_*
,lib/discord_*
and those inDiscordSDK/
are copyrighted by Discord - Other files in
lib/
are pre-compiled archives copyrighted by Microsoft - All other files are licensed according to the
LICENSE
file