@@ 11,6 11,8 @@ Cutscenes that cannot be skipped this way in the original game are not changed:
The only currently supported version is the version 1.05 of the NISA PC port.
French and Japanese languages have not been extensively tested.
+The mod is intended for speedrunning but not currently allowed on the leaderboards.
+
Usage
-----
@@ 23,6 25,13 @@ Usage
If your game is installed to a nonstandard location and you want to avoid manually choosing the game folder every time, you can copy the mod .exe to that game folder and it should be recognized automatically.
+Known issues
+------------
+
+- When auto fast-forward is enabled (L1), the skipped cutscenes will briefly flash instead of the screen staying black.
+ The flashes are likely slow enough to not trigger PSE since there tend to be ~1-2 s between flashes, but at the very least it's a bit annoying.
+ In runs, the only time this is likely to happen is in the chapter 4 end sequence where that one gate scene isn't implemented as a (skippable) cutscene.
+
Credits
-------
@@ 259,12 259,24 @@ pub fn run_and_patch(path: &std::path::Path, version: ExeVersion) -> anyhow::Res
replacement: Some(b"ToCS3 1.05 autoskip mod\0"),
},
Patch {
- description: "the part that resets the flag at the end of a skipped scene", // and probably at other times too because it seems we only need to patch this
+ description: "the part that resets the flag at the end of a skipped scene",
offset: 0x1403210a1,
expected: &[0xc6, 0x83, 0x3d, 0x3d, 0x00, 0x00, 0x00], // MOV byte ptr [RBX + 0x3d3d],0x00
replacement: Some(&[0xc6, 0x83, 0x3d, 0x3d, 0x00, 0x00, 0x01]), // MOV byte ptr [RBX + 0x3d3d],0x01
},
Patch {
+ description: "cutscene skip flag #2",
+ offset: 0x14030acda,
+ expected: &[0x48, 0xc7, 0x83, 0x3c, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], // MOV qword ptr [RBX + 0x3d3c],0x00; note that the offset is smaller by one
+ replacement: Some(&[0x48, 0xc7, 0x83, 0x3c, 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00]), // MOV qword ptr [RBX + 0x3d3c],0x100
+ },
+ Patch {
+ description: "cutscene skip flag #3",
+ offset: 0x1403d5943,
+ expected: &[0xc6, 0x80, 0x3d, 0x3d, 0x00, 0x00, 0x00], // MOV byte ptr [RAX + 0x3d3d],0x00
+ replacement: Some(&[0xc6, 0x80, 0x3d, 0x3d, 0x00, 0x00, 0x01]), // MOV byte ptr [RAX + 0x3d3d],0x01
+ },
+ Patch {
description: "skip flag",
offset: 0x1416af22d,
expected: &[0x00],