PPSSPP 作弊教程:3 步启用 CwCheat,一次搞懂 PSP 模拟器作弊码
【免费下载链接】ppssppA PSP emulator for Android, Windows, Mac, Linux and iOS, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues.项目地址: https://gitcode.com/GitHub_Trending/pp/ppsspp
打 Boss 卡关想改个血量?钱不够用想直接拉满?PPSSPP 内置了 CwCheat 作弊引擎,可以定期向游戏内存写入数值,实现无限生命、满金币这类效果,整个过程不需要装任何第三方插件。本教程面向刚接触 PSP 模拟器作弊码的玩家,从打开开关到手写第一条码,跟着做就能上手。
快速上手:6 步让作弊码生效
第一次用 CwCheat 使用流程,照着做即可,全程不超过 2 分钟:
- 打开作弊开关。进入游戏后按返回键呼出菜单,进入"设置" → "系统",勾选"启用作弊"(对应源码里的 EnableCheats 配置项)。
- 确认刷新间隔。在"设置" → "系统"里找到"作弊刷新间隔",默认 77 ms,一般不用动。
- 查游戏 ID。菜单里打开"系统信息"页面,找到当前游戏的 GameID(形如
ULUS12345),或直接从游戏 ISO 文件名里看。 - 进入作弊界面。菜单里点"作弊",右侧会列出本游戏的作弊码清单。
- 导入或新建。点"从 PSP/Cheats/cheat.db 导入"批量导入;或点"编辑作弊文件"打开 ini 文件,自己粘贴作弊码。
- 勾选启用。回到作弊界面,把想要生效的作弊前面的勾选框打勾,按确认返回游戏。
💡 作弊文件实际存放在 MemStick 的
cheats/游戏ID.ini,界面里每次勾选/取消勾选,都会直接改写这个文件(见 CwCheat 界面源码)。
作弊码语法一张表
CwCheat 的 ini 文件里,所有有效行都以_开头,//或#开头是注释。常见标记含义如下,看懂这张表基本能读懂任何一份作弊文件:
| 标记 | 写法示例 | 含义 | 生效说明 |
|---|---|---|---|
_S | _S ULUS-12345 | 声明这段作弊属于哪个游戏 ID | 与当前游戏 ID 不匹配时整段跳过 |
_G | _G 某游戏名称 | 游戏名备注 | 纯注释,可省略 |
_C0 | _C0 无限生命 | 定义一条作弊,初始关闭 | 需要手动勾选启用 |
_C1 | _C1 无限生命 | 定义一条作弊,初始启用 | 导入即生效 |
_L | _L 0x088A1B20 0x000002DC | 一条具体的内存指令行 | 紧跟在所属_C0/_C1之后 |
_M | _M 0x088A1B20 0x02DC | TempAR 老格式指令 | 当前版本不支持,遇到会报解析错误 |
几个要点:
_C1和_C0唯一的区别是初始开关状态,后续都可以在界面里自由切换。- 每条作弊 = 一行
_C+ 其后的若干行_L,_C是"帽子",_L是"内容"。 - 一条
_L就是"地址 + 数值"两个十六进制数,具体含义取决于数值的高位编码(下节展开)。 - 写错格式不会让模拟器崩溃,只会记录一条 CwCheat 解析错误并跳过该行。
实战:手写第一条无限生命码
以一款假想的 RPG《星尘冒险 ULUS90999》为例,演示"找地址 → 写码 → 验证"三步。文中所有地址和数值均为自拟示例。
第一步:用调试器找地址
- 打开游戏菜单里的"调试器",切换到内存查看/搜索功能。
- 记下当前血量数值(比如 1000 =
0x3E8),按该值做一次精确搜索。 - 回游戏故意挨一下打,血量变成 760(
0x2F8),再按新值搜索一次。 - 结果里只剩一个候选地址:
0x088B3A40——它就是血量所在的内存位置。
第二步:写码
用文本编辑器打开cheats/ULUS90999.ini(或在作弊界面点"编辑作弊文件"),粘贴:
_S ULUS-90999 _G 星尘冒险 _C1 无限生命 _L 0x088B3A40 0x000012C说明:_L行第一个数是目标地址,第二个数是要写入的值0x12C(即 300,你期望的血量上限)。
第三步:进游戏验证
- 保存文件,回模拟器作弊界面,确认"无限生命"前面已打勾。
- 回游戏主动受击,观察血量不再下降,或每次受击后很快被拉回设定值。
- 如果想临时关掉,把
_C1改成_C0保存,或在界面里取消勾选即可。
🎯 小技巧:受击后血量"慢慢爬回"说明作弊在正常工作——它是按刷新间隔(默认 77 ms)周期性写入的,不是瞬时生效。
进阶:条件执行 _D0 与指针命令
场景一:只在低血量时触发
有些效果只在特定状态下才有意义,比如"血量低于 100 时自动补满"。CwCheat 用_D0开头的行做条件判断,条件不满足就跳过下一行。
写法(接上文示例,地址自拟):
_C1 低血量自动回满 _D0 0x088B3A40 0x0000064 _L 0x088B3A40 0x000012C_D0行表示"当地址0x088B3A40的值等于0x64(100)时,才执行下一条_L"。条件比较类型(等于/大于/小于)由第二参数的高位编码决定。
注意:
- 条件行只影响紧跟它的那一行,不是整条作弊的开关。
- 比较类型用错(比如本意"大于"写成"等于")会导致作弊看起来完全没反应。
场景二:指针命令定位动态地址
部分游戏每次进存档时,角色数据都分配在不同的内存位置,固定地址的作弊码会失效。指针命令的作用是先读一个固定位置里的"指针值",再顺着它找到真正的数据地址。
写法:
_C1 动态金币 _L 0x688B0000 0x00000004 _L 0x00000000 0x00000A30 _L 0x00000000 0x000D1840第一行的0x6开头(高位0x68...)声明这是一条指针命令,随后两行描述"先按指针走,再按偏移取"的寻址过程,最后落到目标位置写值。
注意:
- 指针命令必须整段照抄来源文件的行数和格式,少一行或改一个位段都会解析失败。
- 如果你只是普通玩家,绝大多数现成作弊码都是固定地址写法,指针命令主要出现在少数 RPG 的数据库里,遇到照抄即可,不必自己推导。
- 想理解完整编码规则,可以直接读 InterpretNextCwCheat 的解析逻辑,每种高位类型(
0x0写值、0x3增减、0x4多写、0x6指针等)都有独立分支。
排障速查:作弊码无效这样查
| 现象 | 可能原因 | 解法 |
|---|---|---|
| 整个作弊界面一条码都列不出来 | ini 文件里的_S游戏 ID 和当前游戏对不上 | 打开系统信息页核对 GameID,改文件名和_S行保持一致 |
| 界面列出了码,勾选后游戏里没反应 | 码写在了_C0下却以为已启用,或刷新间隔被拉得过长 | 确认勾选框打勾;把刷新间隔改回 77 ms 附近 |
| 刚改完 ini 文件不生效 | 模拟器在运行中检测文件变更,但你可能改错了目录 | 用"编辑作弊文件"打开的那个文件才是正确文件,别在系统盘乱找 |
| 导入数据库提示"未找到新的作弊" | cheat.db 里确实没有这个游戏的条目 | 换一个数据库来源,或自己手写(见上文实战节) |
| 游戏画面卡顿、偶发闪退 | 启用的码过多,或码本身写错了地址 | 先点"禁用全部"确认恢复,再逐条勾选定位问题码 |
| 保存档读取后作弊状态异常 | 读档会重播作弊事件序列 | 读档后重新进一次作弊界面确认勾选状态 |
🛠️ 定位"是哪一条码出问题"最快的方法:全部禁用 → 逐条启用 → 每启用一条就进游戏试一下。
动手前的几条建议
- 只启用需要的码。每多一条码就多一份内存写入开销,全部禁用是排查问题的第一步。
- 改 ini 前先备份。
cheats/目录下的 ini 文件就是唯一的数据源,界面勾选本质是在改它。 - 多盘游戏注意
_S行。一个 ini 里可以有多个_S段落,模拟器只取与当前光盘 ID 匹配的那一段。 - 单人模式里放心用,联机别用。Adhoc 联机时修改数值可能直接影响对战公平性。
- 遇到问题:把现象、游戏 ID、作弊文件内容整理清楚后,到项目仓库提 issue;平时可以浏览 docs/ 目录下的构建与调试文档,配合本教程使用。
【免费下载链接】ppssppA PSP emulator for Android, Windows, Mac, Linux and iOS, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues.项目地址: https://gitcode.com/GitHub_Trending/pp/ppsspp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考