fredmayor88/pedal-curve-lab
GitHub: fredmayor88/pedal-curve-lab
一款为 Simagic 赛车踏板提供精确数值化曲线编辑的桌面工具,弥补原厂软件只能粗略拖拽调节的不足。
Stars: 0 | Forks: 0
# Pedal Curve 实验室
**一款专为 Simagic 踏板设计的精准曲线编辑器——填补了 SimPro Manager 缺失的功能。**
SimPro Manager 只能让你在一个小图表上*拖动*控制点。
你无法输入具体的数值。你无法记录下自己的设置。你无法在事后检查踏板实际的表现。你也无法将你的曲线直接发给其他人。
当然,你可以保存它。但你无法说明里面具体有什么——也无法有意地复现它,或者按照已知的幅度去修改它。
因此,调校就变成了“微调、驾驶、盲猜”。
Pedal Curve Lab 补齐了这三个环节。它会读取和写入 SimPro Manager 自带的预设数据库,因此你在这里构建的曲线会作为常规预设显示在那里。

*Pivot 模式,编辑过程中。红线是正在编辑的曲线。青色线是事先从踏板记录下来的扫描曲线——也就是我之前一直在使用的响应——将其留在图表上作为参考,这样我就能清楚地看到我改了什么以及改了多少。将鼠标悬停在任意位置,你都能得到两者的数据:在 60.56% 行程处,新曲线给出了 42.87% 的输出,而旧曲线测量的结果为 48.97%。*
**▶ 快速入门视频 (7 分钟):** https://www.youtube.com/watch?v=39lVrCCBohg
## 你将获得什么
**精确的数值。** 输入你想要的值即可。无需拖拽,无需目测,拒绝“差不多就行”。
预设会以 float64 格式存储——而 SimPro 的编辑器只会捕捉到你放置点的那个像素。
**可重现的设置——或发送给他人。** 一条曲线就是三个数值。把它们记下来,你就可以随时重现它:几个月后、在全新安装的电脑上、或者在固件更新之后。把它们粘贴给别人,他们就能得到和你完全一致的曲线,而不是一个近似的版本。
**对应不同需求的模式。** 有时你想平缓过于敏感的中心段。有时你想在不改变曲线形状的情况下整体降低曲线。这些是不同的需求。因此这里有三种方式供你选择,你可以挑选最符合你思路的那一种。
**效果验证。** 踩下踏板。Live / Verify 标签页会读取踏板自身的 HID 报告,并在你设计的曲线之上绘制出踏板真实的响应。无需再猜测保存是否成功。在编辑*之前*记录一段扫描曲线,该轨迹就会成为你的参考——你是在改变一个已知的响应,而不是面对一张空白的图表。
**安全保障。** 每次保存前都会先备份 `user.db`。只有你修改过的轴会被重新编码——预设中的其他每一个字节都会原封不动地复制过去。
## 为什么你需要它
最典型的情况就是 **Assetto Corsa Rally 过于敏感的油门**。
在砂石和雪地路面上,默认的油门模型在关键区间几乎没有可用的分辨率。尤其是后驱车(RWD),很容易直接导致后轮打滑甩尾。
这个工具可以让你在动力急剧增加的节点(大约在 44% 输出附近)平缓油门响应——从而让你在给油和收油时都能获得更好的控制感。*Pivot* 模式正是专门为此打造的。
它同样适用于刹车曲线。或者任何你想要特定响应的场景,而不是手绘的近似曲线。
## 获取软件
从 [Releases](https://github.com/fredmayor88/pedal-curve-lab/releases) 下载 zip 压缩包,解压到任意位置,运行 `pedal-curve-lab.exe`。
无需安装程序,无需 Python,无需任何依赖。它写入的所有内容——设置、数据库备份——都保留在该文件夹内。移动或删除该文件夹,一切就会恢复原样。
有两个习惯值得保持:
- **保存前请先关闭 SimPro Manager。** 它会保留一份自己的预设副本,并在退出时覆盖你的修改。本工具会对此发出警告,并提议帮你关闭它。
- **保存后请在 SimPro Manager 中重新选择预设。** 这样才能将其推送到踏板上。
## 在依赖它之前
基于 **P1000** 构建并测试。没有任何硬编码绑定,因此诸如 **P2000** 等其他 Simagic 套件也应该可以正常工作——但我还没机会亲自尝试。请参阅[硬件支持](#hardware-support),了解这里所说的“没有硬编码”究竟意味着什么。
**仅限 Windows。** 它会读取 SimPro Manager 的 SQLite 数据库,并通过 Windows HID API 与踏板进行通信。
本工具与 Simagic 没有任何关联、认可或支持。它会直接写入 SimPro Manager 的数据库。虽然每次写入前都会进行备份,但风险需由你自行承担。
# 技术文档
## 三种编辑模式
这三种模式最终决定的都是同样的三个数值。它们的区别在于你工作时固定了哪些条件。
- **3-point** — 直接设定 25/50/75% 行程处的输出值。
- **Pivot** — 放置一个点并设置曲线穿过该点时的陡峭程度。曲线离开支点(Pivot)的两端会保持同样陡峭,随后弯曲以达到 0 和 100。最适合用来修复 Assetto Corsa Rally 中油门过于敏感的问题。
- **Slope** — 设定每一段的梯度(1.00 = 线性,数值越低 = 增长越慢)。
**死区(低/高行程微调)** 在所有模式中都可以与曲线一起进行编辑。
### 为什么标签页显示的是点实际传递的值
Simagic 预设只包含三个点:分别在 25%、50% 和 75% 行程处的一个输出值。
行程位置是固定的,两端始终为 0 和 100%。
这是它们的数据格式,而不是本工具强加的限制。这里的每种模式都只是决定这三个数值的不同方式,而踏板会在这些点之间进行插值。
正因如此,Pivot 和 Slope 标签页会把你要求的数值与存储点*实际传递*出的数值并列显示。在上面的截图中,要求的支点斜率是 0.59,但实际可存储的三个点传递出的是 0.79。
然而,这些读数仅仅是基于这三个点的算术计算。最终的解释权属于踏板本身——在 *Live / Verify* 上记录一段扫描曲线,测量到的轨迹才是踏板真实传递的结果,这是直接从硬件读取的,而不是通过预设推算出来的。
## 测量踏板的实际表现
Live / Verify 标签页会读取踏板的 HID 报告。该报告既包含了原始的曲线前输入,也包含了游戏所看到的曲线后输出。
记录一次“踩下并松开”的扫描过程,测量到的响应就会覆盖在你设计的曲线上。
你必须先识别踏板——点击 *identify this pedal*,然后踩下踏板,这样工具才知道该监听哪些字节。
该标签页带有与编辑器相同的预设和踏板下拉菜单,并且这四个下拉菜单会保持在同一条曲线上:在任意一处选择一个预设,其他菜单也会同步更新。但测量轨迹则不然——它属于踏板本身,因此在更改预设和切换标签页时依然会保留,只有在你选择了不同的踏板或按下 *Clear* 时才会被清除。
这种叠加显示适用于两种不同的用途:
- **验证。** 保存一条曲线,将其推送到踏板,扫描踏板,确认踏板是否真正执行了你的设定。
- **参考。** 在进行任何修改*之前*先扫描,然后在编辑时将该轨迹留在图表上。现在你不是在面对一张空白图表进行编辑——而是针对你实际驾驶时的响应进行编辑,并且你可以读取在行程任意一点上的差异。上面那张截图展示的正是这种情况。
当测量轨迹失去参考价值并开始遮挡视线时,*Clear* 会将其移除。
在 Chart display 下,*Hide the stored curve* 执行的是反向操作——它会从每个图表中移除红线并保留点,适用于红线遮挡了你想读取的轨迹时的情况。
## 硬件支持
设备会被自动检测(并且可以被覆盖)。报告布局是从设备自身的描述符中读取的。而曲线前输入的字节则是通过观察踏板的移动来找到的。
因此,没有任何内容是与特定型号绑定的。但是,在我从未接触过的硬件上能否成功检测,这只是一个合理的预期,而不是经过验证的事实——如果它找到了你的踏板,或者没有找到,欢迎[提交 issue](https://github.com/fredmayor88/pedal-curve-lab/issues)。
## 从源码运行
需要 Python 3.8+,此外无任何其他要求——仅使用标准库、tkinter 和 ctypes。如果不需要以下任何内容,只需直接运行:`python pedal-curve-lab.py`。
在 Windows 上,`make` 目标需要两样东西:**Git for Windows**(其 shell 用于执行命令——Makefile 会自动为你找到它,因此任何终端都可以)和 **`make`** 本身,它*不*包含在 Git 中。你可以通过 GnuWin32、`choco install make`、Scoop 或 MSYS2 来安装它。
```
make run # run it
make test # round-trip checks on your own presets
make setup # venv + PyInstaller, only needed for building
make build # -> dist/pedal-curve-lab-vX.Y.Z-win64.zip
```
## 遇到了问题?
程序旁边有一个 `pedal-curve-lab.log` 文件,记录了它的所有操作——包含每次保存写入的值、备份存放的位置、找到的设备以及任何失败的记录。
Live / Verify 标签页上的 *Open log file* 可以将其打开。将其附加到 issue 中,远比单纯的文字描述更有说服力。
如果想深入挖掘,有两个命令行标志可以在程序旁生成一个 `-report.txt` 文件:
- `--selftest` — 你的预设数据库能否正确解析?
- `--hidtest` — 踏板实际上汇报了什么内容?
## 许可证
[AGPL-3.0](LICENSE)
标签:Simagic, 曲线编辑, 游戏外设, 漏洞挖掘, 赛车模拟, 逆向工具, 配置工具