Skip to content

Commit d9af389

Browse files
committed
Add switch table count check
1 parent aea647d commit d9af389

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

OpcodeExtractorVTable.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ internal unsafe static Dictionary<int, string> Extract(JsonNode opcodeMapData, b
4747

4848
if (!ReadJSONInt(opcodeMapData, "switchTableOffset_offset", out var switchTableOffset_offset)) return [];
4949
if (!ReadJSONInt(opcodeMapData, "switchTableCount_offset", out var switchTableCount_offset)) return [];
50+
if (!ReadJSONInt(opcodeMapData, "expectedSwitchTableCount", out var expectedSwitchTableCount)) return [];
5051
if (!ReadJSONInt(opcodeMapData, "defaultCaseAddr_offset", out var defaultCaseAddr_offset)) return [];
5152
if (!ReadJSONInt(opcodeMapData, "imageBaseOffset_offset", out var imageBaseOffset_offset)) return [];
5253
if (!ReadJSONInt(opcodeMapData, "switchTableDataOffset_offset", out var switchTableDataOffset_offset)) return [];
@@ -63,6 +64,11 @@ internal unsafe static Dictionary<int, string> Extract(JsonNode opcodeMapData, b
6364

6465
var switchTableOffset = *(sbyte*)(funcPtr + switchTableOffset_offset);
6566
var switchTableCount = *(int*)(funcPtr + switchTableCount_offset);
67+
Console.WriteLine($"Expected {expectedSwitchTableCount} entries, found {switchTableCount}");
68+
if (expectedSwitchTableCount != switchTableCount) {
69+
Console.WriteLine("Switch table count mismatch, press any key to continue anyways");
70+
Console.ReadKey(true);
71+
}
6672
var defaultCaseAddr = offset + defaultCaseAddr_offset + Common.ExtractRIPOffsetFromPtr(funcPtr + defaultCaseAddr_offset);
6773
var imageBaseOffset = offset + imageBaseOffset_offset + Common.ExtractRIPOffsetFromPtr(funcPtr + imageBaseOffset_offset);
6874
var switchTableDataOffset = *(int*)(funcPtr + switchTableDataOffset_offset);

resources/global.jsonc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
"defaultCaseAddr_offset": 23,
3333
"imageBaseOffset_offset": 30,
3434
"switchTableDataOffset_offset": 40,
35+
"expectedSwitchTableCount": 897,
3536
"FFXIV_ACT_Plugin": {
3637
"StatusEffectList": 207,
3738
"StatusEffectList2": 209,

0 commit comments

Comments
 (0)