查看: 3773|回复: 4
金手指(Gameshark)机制原理
[复制链接]
puro0304
puro0304
当前离线
UID179300 繁华都市的喧闹
积分211
主题11
注册时间2024-10-8
在线时间76 小时
50
回帖1041
现金3
勋章券
繁华都市的喧闹
繁华都市的喧闹, 积分 211, 距离下一级还需 89 积分
繁华都市的喧闹, 积分 211, 距离下一级还需 89 积分
积分211
发消息
火恐龙 Lv:17
电梯直达
1#
发表于 2024-10-10 23:23:39
|
只看该作者
|倒序浏览
|阅读模式
本帖最后由 puro0304 于 2024-10-10 23:23 编辑
这是我从一个介绍GB(C)的网站里面看到的,这个网站看下去真的是收获了一堆GB(C)知识。
看到这里好多使用金手指的玩家,所以就想告诉各位GB(C)金手指是怎么工作的?
以下是该网站地址连接:
https://gbdev.io/pandocs/Specifications.html
金手指都是8位16进制的一串数字/字母,比如美版红蓝的穿墙金手指010138CD这种。
从左到右:
1和2位代表SRAM bank,即使用此金手指会将SRAM切换到bank1,对于宝可梦游戏的SRAM,简单来说就是存档RAM。但金手指一般不会直接修改存档。
3和4位代表新数据,即使用此金手指会在对应的RAM位置写下01.
5678位代表位置,注意GB(C)记录位置都是先小后大的,38CD代表的是CD38。一般金手指写的都是WRAM(工作RAM)区域,也就是C000-DFFF这个区域。
所以总体的来说,就是切换SRAM的bank为01,并把01写入RAM的CD38位置上。
据了解,金手指的机理是通过挂钩原始的VBlank中断处理程序并每帧重写RAM数据来实现的。(或者你可以简单理解为每次GB(C)更新完所有RAM原本的数据就马上被金手指更新为规定的数据)
所以金手指有一个缺点,就是会占用GB(C)的CPU时间。(但现在我们都是用模拟器的,可以忽略这个缺点)还有它不能去修改ROM的程序,因为ROM在RAM里面是无法更改的。
收藏1
分享
淘帖0
顶0
踩0
回复
使用道具
举报
提升卡
变色卡
htxx34zyx
htxx34zyx
当前离线
UID178683 口袋学堂外的努力
积分38
主题1
注册时间2024-8-27
在线时间6 小时
15
回帖79
现金0
勋章券
口袋学堂外的努力
口袋学堂外的努力, 积分 38, 距离下一级还需 12 积分
口袋学堂外的努力, 积分 38, 距离下一级还需 12 积分
积分38
发消息
2#
发表于 2024-10-11 13:09:47
|
只看该作者
其实跟外挂一个原理:直接修改内存,而大多数游戏不能通过内存进行对游戏直接修改,所以不能改游戏资源(rom)
有需求发邮箱:htxx34zyx@126.com
什么资源都有
回复
支持
反对
使用道具
举报
htxx34zyx
htxx34zyx
当前离线
UID178683 口袋学堂外的努力
积分38
主题1
注册时间2024-8-27
在线时间6 小时
15
回帖79
现金0
勋章券
口袋学堂外的努力
口袋学堂外的努力, 积分 38, 距离下一级还需 12 积分
口袋学堂外的努力, 积分 38, 距离下一级还需 12 积分
积分38
发消息
3#
发表于 2024-10-11 13:10:48
|
只看该作者
先小后大...也就是说我先输入密码再开机?
有需求发邮箱:htxx34zyx@126.com
什么资源都有
回复
支持
反对
使用道具
举报
leoxxx
leoxxx
当前离线
UID180112 与恶势力的交锋
积分475
主题23
注册时间2024-11-10
在线时间541 小时
127
回帖412
现金3
勋章券
与恶势力的交锋
与恶势力的交锋, 积分 475, 距离下一级还需 25 积分
与恶势力的交锋, 积分 475, 距离下一级还需 25 积分
积分475
发消息
毒刺水母 Lv:47
4#
发表于 2024-11-10 11:47:09
|
只看该作者
本帖最后由 leoxxx 于 2024-11-10 12:26 编辑
htxx34zyx 发表于 2024-10-11 13:10
先小后大...也就是说我先输入密码再开机?
其实是他这个表述有问题。
这里的地址是以小端字节序(Little-Endian)表示。
举例代码:010138CD
01:SRAM bank,通常为01。
01:值。
38CD:地址,以小端字节序(Little-Endian)表示,即CD38。
Big-Endian(大端):高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
Little-Endian(小端):低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
举个例子:12345678
大端:12 34 56 78
小端:78 56 34 12
个人猜想:整条代码都是以小端字节序表示,即大端字节序的CD380101
在My OldBoy!中Cheat type默认为Auto dectect。输入CD38 01会被自动识别为RAW码,并改为CD3801。
回复
支持
反对
使用道具
举报
leoxxx
leoxxx
当前离线
UID180112 与恶势力的交锋
积分475
主题23
注册时间2024-11-10
在线时间541 小时
127
回帖412
现金3
勋章券
与恶势力的交锋
与恶势力的交锋, 积分 475, 距离下一级还需 25 积分
与恶势力的交锋, 积分 475, 距离下一级还需 25 积分
积分475
发消息
毒刺水母 Lv:47
5#
发表于 2024-11-10 12:29:04
|
只看该作者
htxx34zyx 发表于 2024-10-11 13:09
其实跟外挂一个原理:直接修改内存,而大多数游戏不能通过内存进行对游戏直接修改,所以不能改游戏资源(rom)
https://gbdev.io/pandocs/Shark_Cheats.htm
这里提到了Game Genie说是ROM patches。大概类似IPS。
回复
支持
反对
使用道具
举报