alandtse/skyrim_vr_address_library

GitHub: alandtse/skyrim_vr_address_library

这是一个用于将《上古卷轴5:天际特别版》SKSE模组移植到VR版本的地址映射数据库,解决了跨平台内存地址不一致的兼容性问题。

Stars: 21 | Forks: 26

# Skyrim VR 地址库 [![GitHub Release](https://img.shields.io/github/release/alandtse/skyrim_vr_address_library.svg?style=for-the-badge)][releases] ![GitHub all releases](https://img.shields.io/github/downloads/alandtse/skyrim_vr_address_library/total?style=for-the-badge) ![GitHub release (latest by SemVer)](https://img.shields.io/github/downloads/alandtse/skyrim_vr_address_library/latest/total?style=for-the-badge) [![GitHub Activity](https://img.shields.io/github/commit-activity/w/alandtse/vr_address_tools?style=for-the-badge)][commits] [![License](https://img.shields.io/github/license/alandtse/skyrim_vr_address_library.svg?style=for-the-badge)][license] ![Project Maintenance](https://img.shields.io/badge/maintainer-Alan%20Tse%20%40alandtse-blue.svg?style=for-the-badge) [![BuyMeCoffee](https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg?style=for-the-badge)][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 适配, 内存地址映射, 地址库, 开发工具, 数据擦除, 数据收集, 无后门, 模组转换, 游戏修改, 游戏增强, 游戏逆向, 逆向工具