alandtse/skyrim_vr_address_library
GitHub: alandtse/skyrim_vr_address_library
这是一个用于将《上古卷轴5:天际特别版》SKSE模组移植到VR版本的地址映射数据库,解决了跨平台内存地址不一致的兼容性问题。
Stars: 21 | Forks: 26
# Skyrim VR 地址库
[][releases]


[][commits]
[][license]

[][buymecoffee]
用于将 Skyrim SSE skse mod 转换为 VR 的工具。
## 描述
本代码库包含含有各种数据的 CSV 文件。这些文件旨在由 https://github.com/alandtse/vr_address_tools 处理。
### CSV 文件
#### database.csv
一个 CSV 文件,用于生成在 CommonLibVR 中加载的发布版 CSV 文件,以替代 [addresslib][addresslib]。这旨在作为一个数据库,用于识别代表 SkyrimSSE 地址的 addresslib id,并将其转换为相应的 VR 地址。此文件可手动编辑,旨在作为社区资源。可以使用 [vr_address_tools.py generate](#generate) 将 database.csv 转换为发布版 CSV。
|id|sse|vr|status|name|
|---|--|--|--|----|
|10878|0x1400f7210|0x1401077c0|3|RE::Offset::BGSDefaultObjectManager::GetSingleton
* id - Addresslib id
* sse - 带基址的 SSE 地址 (e.g., 0x1400f7210)
* vr - 带基址的 VR 地址 (e.g., 0x1401077c0)
* status - VR 地址的可信度等级。
* 0 - 未知
* 1 - 由自动工具建议
* 2 - 手动输入且假定已手动验证
* 3 - 手动输入并经建议的自动工具验证
* 4 - 逐位相同 (偏移量和补丁应该工作方式相同)
* name (可选) - 用于描述 id 的友好名称
#### 发布版 CSV
由最终用户安装在 `data/skse/plugins/` 目录下的非标准 CSV。这遵循 addresslib 的命名规则 `version-{skyrim version}.csv`。第一行数据是 CSV 表头,第二行是元数据,第三行及之后是实际数据:
| id | offset |
|-----|--------|
| total entries | version |
| 10878 | 01077c0 |
* id - Addresslib id
* offset - 作为偏移量的 VR 地址 (e.g., 01077c0)
* total entries - 要预留空间的条目数量。**警告**:如果 **total entries** 少于实际条目数量,可能会发生 CTD,因为它正在为内存映射分配空间。
* version - 发布版本,这是一个 [语义版本](https://semver.org/)。
#### 分析用 CSV
这些 CSV 旨在辅助分析。
##### offsets-1.5.97.0.csv
SkyrimSSE 1.5.97.0 的 addresslib 转储。这应被视为 id -> sse 映射的权威来源。
|id|sse|
|--|--|
2|10d0
* id - Addresslib id
* sse - SSE 偏移量 (e.g., 10d0)
##### addrlib.csv
由 bakou 使用 ida 生成的映射文件。部分自动化。
|vr|sse|id|
|--|--|--|
0x1400010d0|0x1400010d0|2
* vr - 带基址的 VR 地址 (e.g., 0x1401077c0)
* sse - 带基址的 SSE 地址 (e.g., 0x1400f7210)
* id - Addresslib id
##### sse_vr.csv
由 meh321 使用 IDADiffCalculator 生成的映射文件,该脚本用于计算 SSE 偏移量。部分自动化。
|sse|vr|
|--|--|
|0x141992C10|0x141A33D38|
* sse - 带基址的 SSE 地址 (e.g., 0x1400f7210)
* vr - 带基址的 VR 地址 (e.g., 0x1401077c0)
##### offsets-1.6.318.0.csv
SkyrimSSE 1.6.318.0 (AE) 的 addresslib 转储。这应被视为 aeid -> ae_addr 映射的权威来源。
|aeid|ae_addr|
|--|--|
1|140001022
* aeid - Anniversary Edition 的 Addresslib id
* ae_addr - AE 偏移量 (e.g., 140001022)
##### 1.5.97_comments.csv
Ultra 提供的一些 1.5.97.0 映射,用于 IDA/ghidra。这包含一些命名信息(但应被视为比 AddressLibraryDatabase 更不当前)
|sse_addr|comments|
|--|--|
140001258|anonymous_namespace__MonitorAPO::Func9_140001258
* sse_addr - SSE 偏移量 (e.g., 140001022)
* comments - 潜在名称 (e.g., anonymous_namespace__MonitorAPO::Func9_140001258)
##### se-ae-attempted-match.csv
SSE 到 AE 地址的算法映射。这是 [address library](https://www.nexusmods.com/skyrimspecialedition/mods/32444?tab=files) 杂项文件下可用内容的 CSV 版本。
|sse_addr|ae_addr|
|--|--|
140001022|140001022
* sse_addr - SSE 偏移量 (e.g., 140001022)
* ae_addr - AE 偏移量 (e.g., 140001022)
##### se-ae_offsets.csv
[merge.py] 的输出。这尝试将各种注释与 offsets* 文件进行映射。这仅是算法映射,旨在作为 `vr_address_tools` 的输入。
|sseid|sse_addr|ae_addr|aeid|comments
|--|--|--|--|--|
5|140001258|140001258|11.0|MonitorAPO::Func9_*
* sseid - SSE ID
* sse_addr - SSE 偏移量 (e.g., 140001022)
* ae_addr - AE 偏移量 (e.g., 140001022)
* aeid - AE ID
* comments - 名称
##### se-ae.csv
[vr_address_tools.py] 的输出。这获取 se_ae_offsets 中的自动化项,并将其与 se-ae.csv 以及 vr_address_tools 扫描的任何内容结合。
|sseid|aeid|confidence|name
|--|--|--|--|
5|11|1|MonitorAPO::Func9_*
* sseid - SSE ID
* aeid - AE ID
* confidence - 映射的可信度等级。
* 0 - 未知
* 1 - 由自动工具建议
* 2 - 手动输入且假定已手动验证
* 3 - 手动输入并经建议的自动工具验证
* 4 - 逐位相同 (偏移量和补丁应该工作方式相同)
* name - 名称
## 地址 ID
地址 ID 是以 SSE 为键的。但是,偶尔 SSE 地址不会有地址 ID。在这种情况下,仍然可以通过获取 SkyrimSSE 地址的整数值来输入它们。
|id|sse|vr|status|name|
|---|--|--|--|----|
|5370397616|0x14019c3b0|0x1401ac0e0|3|RE::BSShaderProperty::InvalidateMaterial
## 欢迎贡献!
如果您想为此做出贡献,请阅读 [贡献指南](CONTRIBUTING.md)
标签:C++, CommonLibVR, CSV 数据处理, Python, SKSE 插件, Skyrim SSE, Skyrim VR, SOC Prime, VR 适配, 内存地址映射, 地址库, 开发工具, 数据擦除, 数据收集, 无后门, 模组转换, 游戏修改, 游戏增强, 游戏逆向, 逆向工具