首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
Pinyon Shift MOD开发指南:用C API与mid-asm Hook打造你的第一个原生模组
📅 2026/11/6 3:30:37
✍️ 爱科研究院
👁 阅读 3,247
【免费下载链接】pinyon-shiftA playable preview of Forza Horizon static recompilation项目地址https://gitcode.com/gh_mirrors/pi/pinyon-shift点击查看免费下载Pinyon Shift 是一款基于静态重编译运行的 Forza Horizon 1 可玩预览项目它内置了一套完整的 MOD 系统你可以用纯 C API 编写原生模组借助 mid-asm Hook 钩住游戏主循环、车辆姿态、存档加解密等关键时刻实现遥测显示、按键绑定、HUD 标签等功能。本指南带你从零搭建第一个原生模组。Pinyon Shift 的 MOD 分为哪两类Pinyon Shift 支持两种模组都放在状态目录state/mods/name/下永远不会触碰游戏原文件类型内容适合人群资源模组asset modgame/下整文件替换、members/单档替换、merge/按键合并、db/*.sql数据库补丁换图、改数值零代码原生模组native mod一个针对 pinyon_mod.h 编译的 DLL通过 C API 与宿主交互想写逻辑、读内存、调函数的开发者本文聚焦原生模组。完整契约见 docs/MODDING.md官方站点摘要见 site/pages/modding.md。mid-asm Hook 是如何工作的Pinyon Shift 的核心是静态重编译器它把游戏PowerPC 架构的代码提前翻译成 C而不是运行时模拟。所谓 mid-asm Hook就是在生成的函数内部、某个确定的 guest 地址处插入一条直接调用——宿主代码可以在游戏逻辑执行到那一刻被精确触发。这些钩子点全部以[[midasm_hook]]条目声明在分析配置中例如 config/rexglue/analysis/main-xex.toml 里登记了上百个钩子站点。对模组作者来说你不需要关心具体地址每个钩子站点会以hook.name进入符号表语义化符号统一登记在 config/mod/fh1-symbols.toml如frame.tick主循环、vehicle.pose_written车辆姿态、save.before_encrypt存档加密前模组内通过find_symbol(frame.tick)按名字查询地址严禁硬编码地址。 正因为重编译后的代码是直接调用其他函数模组只能观察钩子点、调用函数不能替换 guest 函数——这是设计边界写方案时先记住。第一步搭好模组目录与 mod.toml一个原生模组的最小结构state/mods/my_mod/ mod.toml code/my_mod.dll # 你编译出的原生模组mod.toml的关键字段参考官方示例 mods_src/samples/hello_telemetry/mod.tomlname my_mod # 必须等于目录名 version 1.0.0 abi 1 # PINYON_MOD_ABI_VERSION library code/my_mod.dll requires [] conflicts []然后在state/config/pinyon_shift.toml里按加载顺序启用enabled_mods my_mod每次加载成功或失败都会记录mod.loaded/mod.rejected事件含原因排查问题先看日志。第二步实现两个导出函数原生模组是一个 DLL只需导出两个 C 函数这是 ABI 的全部入口定义见 include/pinyon_mod.hPINYON_MOD_EXPORT uint32_t rex_mod_abi_version(void) { return PINYON_MOD_ABI_VERSION; } PINYON_MOD_EXPORT int rex_mod_create(const PinyonModApi* api, PinyonMod* mod);在rex_mod_create里保存api指针、订阅钩子、注册设置与按键并把生命周期回调填进modon_create_dialogs界面就绪、on_module_launched游戏即将启动、on_shutdown关闭。ABI 只增不减api-size会告诉你宿主提供了哪些成员。第三步认识六个 Hook 点通过api-subscribe可以订阅以下钩子完整字段说明见头文件注释Hook 枚举触发时机你能拿到什么PINYON_HOOK_FRAME_TICK每帧一次主线程适合计帧、刷 HUDPINYON_HOOK_VEHICLE_POSE玩家车辆姿态确定时floats[0..2] x, y, z 坐标PINYON_HOOK_SAVE_BEFORE_ENCRYPT存档即将加密前明文存档地址与大小可原地编辑PINYON_HOOK_SAVE_AFTER_DECRYPT存档解密后、游戏读取前同上PINYON_HOOK_FILE_OPEN游戏打开文件时小写 guest 路径PINYON_HOOK_PAUSE_BUTTON_CONSTRUCTED暂停菜单构建按钮时按钮 guest 地址⚠️ 两个线程规则务必遵守钩子回调运行在触发它的 guest 线程上保持简短只有enqueue_guest_task排入的 guest 任务里才能调用call_guest去调用游戏函数最多 6 个整型参数返回r3。第四步编译与安装仓库已内置构建目标pinyon_shift_mod_hello_telemetry见 CMakeLists.txt官方示例模组 hello_telemetry.c 演示了设置项、F9 按键绑定、遥测 HUD、guest 调用和弹窗的完整用法建议直接对照阅读。# 编译示例模组 cmake --build out/build/win-amd64-release --target pinyon_shift_mod_hello_telemetry # 安装到你的私有状态目录切勿覆盖 AppData 存档 python tools/install-sample-mod.py state hello_telemetry启动游戏后按 F6 打开设置SETTINGS 页面会列出mods/下发现的模组模组注册的设置出现在 “Mods” 分类下add_menu_action添加的行位于暂停菜单 SETTINGS MOD ACTIONSHUD 标签建议放在 1280×720 布局的 90% 安全区内x 64–1216y 36–684。新手避坑清单存档隔离只要启用了模组游戏会自动使用独立档案user-modded首次为你的存档复制关闭所有模组即回到原档案只改外观/声音的模组可设shares_save true。大端序guest 内存是游戏视角的大端字节序read_guest/write_guest只是拷贝字节。别写 GPU 读内存纹理、顶点缓冲等 GPU 会读的数据不支持写入。改存档选对时机要改数值请编辑解密后SAVE_AFTER_DECRYPT的数据加密前写入的值游戏自己还持有旧副本活不过下一次存档。跨版本只依赖符号名与钩子名的模组可同时支持基础版与 v4 标题更新在game_version里列两个 SHA-256 前缀即可依赖裸地址或字段偏移的模组必须单一目标版本。继续深入C API 完整契约include/pinyon_mod.h模组文档资源/数据库/纹理/电台模组全覆盖docs/MODDING.md官方示例源码mods_src/samples/hello_telemetry/语义符号表config/mod/fh1-symbols.toml安装工具tools/install-sample-mod.py从零跑通 hello_telemetry 之后你就能理解 Pinyon Shift 模组系统的全部机制——剩下的只是发挥创意。赞分享【免费下载链接】pinyon-shiftA playable preview of Forza Horizon static recompilation项目地址https://gitcode.com/gh_mirrors/pi/pinyon-shift点击查看免费下载相关推荐LeviLaunchroid原生模组开发教程创建、构建并打包你的第一个C .levipack模组LeviLaunchroid原生模组开发教程创建、构建并打包你的第一个C .levipack模组 LeviLaunchroid 是一款专为 AndroidAI_NovelGenerator 完全指南零门槛用 AI 写出 10 万部长篇3 小时版AI_NovelGenerator 完全指南零门槛用 AI 写出 10 万部长篇3 小时版 AI_NovelGenerator 是一款基于大语言模型的 AAI 应用大模型RAGAI 写作桌面应用libxposed API 快速上手10 分钟打造你的第一个 Xposed Hook 模块新手教程libxposed API 快速上手10 分钟打造你的第一个 Xposed Hook 模块新手教程 libxposed API 是新一代现代 Xpo上一篇让多个AI代理在同一代码库并行工作MonoCode Git Worktrees多工作树实战指南下一篇dsh-deep-whale 必玩的 10 个定制选项指南字体、角色位置、输入框显示方式与工作区横幅高度设置创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/11/6 3:30:37
海报尺寸适配教程:1080x1920改成方形和横版,一图多用Canva实操
2026/11/6 3:30:37
【Runtime推理引擎⑥】Runtime特性开发实战:从IO契约到多租户隔离的正确顺序
2026/11/6 3:30:37
0成本搞定课设毕设!源码免费分享-基于微信小程序的校园点餐系统设计与实现12476
2026/11/6 5:20:45
【freertos】
2026/11/6 5:20:45
Java 基础综合练习:经典编程题详解
2026/11/6 5:20:45
一块中小批量PCB的72小时:Gerber评审、工艺卡点与出货验收全流程拆解
2026/11/6 5:20:45
【md文档】 Windows 11系统md文档右键新建以及默认打开方式
2026/11/6 5:20:45
企业文印管控系统落地:身份认证、策略配额与审计报表的技术实现
2026/11/6 5:15:45
Susanne Brenner and Ridgway Scott, The Mathematical Theory of Finite Element Methods, Springer, 20
2026/11/6 1:05:27
一键开关机芯片选型指南:功耗、逻辑、封装与供应链四大维度
2026/11/6 1:05:28
FSoE白通道:EtherCAT功能安全通信的信任模型与工程实践
2026/11/6 1:05:28
单片机控制板异常排查六步法:从供电到环境的系统化故障定位指南
2026/11/6 4:33:35
面向复杂光照与角度的宠物面部识别鲁棒性增强策略
2026/11/6 4:33:28
DRV8818PWPR与R7FA8M1AHECBD工业步进驱动实战指南
2026/11/6 4:33:20
STM32与DRV8818双极步进电机驱动方案:从选型到调试全流程解析
2026/11/6 4:33:35
面向复杂光照与角度的宠物面部识别鲁棒性增强策略
2026/11/6 4:33:28
DRV8818PWPR与R7FA8M1AHECBD工业步进驱动实战指南
2026/11/6 4:33:20
STM32与DRV8818双极步进电机驱动方案:从选型到调试全流程解析