EMU618社区

 找回密码
 立即注册
搜索
查看: 686|回复: 11

[求助] 【讨论】关于FC&SFC&MD游戏的修复问题

[复制链接]

签到天数: 38 天

[LV.5]常住居民I

发表于 2020-10-26 16:16:04 | 显示全部楼层 |阅读模式
本帖最后由 xiong_online 于 2022-12-20 19:41 编辑

如果是高手,麻烦指点一二,谢谢

3楼,FC修复Header
4楼 & 6楼 & 7楼,SFC修复checksum(sfc格式,smc格式)
2楼,MD修复checksum(md格式,smd格式,bin格式)
10楼,GB修复checksum(gb格式,gbc格式)

相关工具:ucon64
使用命令:ucon64 --chk ROM文件名
相关链接:https://ucon64.sourceforge.io/

如何查看CRC32:
1、使用RAR查看


2、使用Hash查看


3、使用HashTab查看

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

签到天数: 38 天

[LV.5]常住居民I

 楼主| 发表于 2020-10-26 16:18:27 | 显示全部楼层
本帖最后由 xiong_online 于 2022-12-20 19:46 编辑

MD测试:
模拟器:Fusion v3.64
测试ROM:Tinhead (U)
Fusion 跳过红屏步骤:选项 → 设置 → Genesis → 自动修正校验(红屏是由ROM文件实现的

checksum是通过将每两个字节(16位,从$200到ROM末尾)相加得出的。
然后将其与存储在 $18E 中的值进行比较,如果值不同,游戏将显示红色屏幕并停止运行。

MD格式是将BIN格式的数据进行了插值排列,GEN格式等于MD格式
SMD格式就是在MD格式上添加了512字节的Header数据,每16KB为一组进行了插值排列

相关链接:https://en.wikibooks.org/wiki/Genesis_Programming
相关链接:http://2006.emu618.org:6180/thread-95773-1-1.html
修复工具:FixCheckSum(多重保护的没效
修复步骤:单击“Load MD/32x ROM”按钮选择文件,点击“Fix CheckSum”,直到按钮变成灰色




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

签到天数: 38 天

[LV.5]常住居民I

 楼主| 发表于 2020-10-26 16:21:24 | 显示全部楼层
本帖最后由 xiong_online 于 2022-12-20 19:49 编辑

FC测试:
模拟器:VirtuaNES v0.0.6.7
测试ROM:缺省
【FC文件前十六字节(16 bytes)内容】
(字节0到3必须为以下内容,用来识别文件)
0 = 4E(N)
1 = 45(E)
2 = 53(S)
3 = 1A(字符中断,必要!)
(字节4到8或15,可以修改)
4 = PRG(=ROM的大小 / 16)
5 = CHR(=VROM的大小 / 8,0表示卡带板子使用了VROM)
6 = D0:1=垂直镜像,0=水平镜像
       D1:1=有电池记忆,SRAM地址$6000-$7FFF
       D2:1=在$7000-$71FF有一个512字节的trainer
       D3:1=4屏幕VRAM布局
       D4-D7:ROM Mapper的低4位
7 = D0-D3:保留,必须是0
       D4-D7:ROM Mapper的高4位
8 = PRG-RAM的大小(很少使用的扩展)
9 = 电视系统(很少使用的扩展)
10 = 电视系统,PRG-RAM的存在(非官方的,很少使用的扩展)
11到15 = 未使用,应全部为零(部分ripper会把他们的名字放在7-15之间)

相关链接:http://wiki.nesdev.com/w/index.php/INES

【例子】
[ROM信息] PRG:128K,CHR:128K,MAPPER:4
PRG = 128 / 16 = 8,十六进制为 08
CHR = 128 / 8 = 16,十六进制为 10
MAPPER = 4,十六进制为 04
则FC文件前十六字节内容为:4E 45 53 1A 08 10 40 00 00 00 00 00 00 00 00 00


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

签到天数: 1567 天

[LV.Master]伴坛终老

发表于 2020-10-26 17:03:39 | 显示全部楼层
MD有的MD游戏有多重checksum保护,对于有多重checksum保护的游戏FixCheckSum工具是没效的。

SFC修复checksum比较麻烦,因为SFC ROM HEADER存放位置并不是固定,不同SFC ROM的HEADER存放位置不一样。

SFC HEADER结构看附件文档。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

点评

谢谢,请问FC呢?  发表于 2020-10-26 20:22
回复 支持 反对

使用道具 举报

签到天数: 1567 天

[LV.Master]伴坛终老

发表于 2020-10-26 22:46:44 | 显示全部楼层
回xiong_online:
FC HEADER修复建议去NESBBS问老龙。
回复 支持 反对

使用道具 举报

签到天数: 38 天

[LV.5]常住居民I

 楼主| 发表于 2020-10-26 22:58:18 | 显示全部楼层
本帖最后由 xiong_online 于 2022-12-20 19:53 编辑

SFC测试:
模拟器:snes9x v1.43
测试ROM:无人岛物语未修复版(CRC32:5DC5BD2A),无人岛物语修复版(CRC32:FBB7BCB0)
校验不通过,游戏开始会有bad checksum提示
Check Sum是通过将每个字节(8位)相加得出的;Complement Check是Check Sum的位逆。
Complement Check + Check Sum = FFFFh
SMC格式就是在SFC格式上添加了512字节的Header数据,转换工具:SNESTool、GoodSNES、inSNESt

相关链接:https://en.wikibooks.org/wiki/Super_NES_Programming/SNES_memory_map
相关链接:https://sneslab.net/wiki/SNES_ROM_Header
修复工具:IPSandSUM
修复步骤:
1.使用十六进制编辑器查看前200h数据是否有大量的00(可选)
2.使用SNESTool移除Header(SMC转SFC,新文件比之前小512字节)
3.使用IPSandSUM修复一下(修复checksum,有时候需要扩容)
4.使用模拟器运行(测试是否正常)









本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

签到天数: 1567 天

[LV.Master]伴坛终老

发表于 2020-10-26 23:42:41 | 显示全部楼层
xiong_online 发表于 2020-10-26 22:58
核实一下,SFC的修复checksum有没有工具?ChecksumFixer吗?

相关链接:https://www.ppxclub.com/fo ...

uCON64有个--chk参数可修复ROM checksum,你可以试试

注意:uCON64是个命令行工具

uCON64 SOURCEFORGE页面:https://sourceforge.net/projects/ucon64/
回复 支持 反对

使用道具 举报

签到天数: 38 天

[LV.5]常住居民I

 楼主| 发表于 2020-11-16 14:28:54 | 显示全部楼层
本帖最后由 xiong_online 于 2022-12-20 19:55 编辑

SFC详细修复教程(删除文件头&修复checksum)

1、使用模拟器运行ROM(重装机兵Returns (v0.95) (简) (狼组&willzyj),CRC32:1D70F60E,带Header的),有bad checksum提示


2、观察文件大小:4194816字节,不能被1024整除,可以判断为有Header

3、使用十六进制编辑器查看前200h数据,有大量的00


4、使用SNESTool移除Header


5、使用IPSandSUM修复(最终CRC32:B8E36EDF)


6、使用模拟器运行,OK




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

签到天数: 38 天

[LV.5]常住居民I

 楼主| 发表于 2020-11-16 14:56:13 | 显示全部楼层
本帖最后由 xiong_online 于 2022-12-20 19:56 编辑

SFC详细修复教程(修改中间文件头&修复checksum)

1、使用模拟器运行ROM(神奇J计划 (v20180510) (美简) (hlken),CRC32:94F1E44F),有bad checksum提示


2、观察文件大小:3.12 MB (3,276,800 字节),使用CT扩容到4 MB,填充00


3、使用十六进制编辑器查看前200h数据,没有大量的00,判断为sfc文件

4、修改FFC0h中间文件头(ROM标题修改为:WONDERPROJECT J,其余填充20;HiROM,30修改为31;美版,00修改为01


5、使用IPSandSUM修复(最终CRC32:1CEA842D)


6.使用模拟器运行,OK



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

签到天数: 38 天

[LV.5]常住居民I

 楼主| 发表于 2022-12-7 16:49:30 | 显示全部楼层
本帖最后由 xiong_online 于 2022-12-20 19:57 编辑

GB测试:
模拟器:BGB v1.5.6
测试ROM:缺省
014D:Header Checksum
通过将每个字节(8位,从0x134到0x14C)相加得出的。

014E-014F:Global Checksum
通过将每两个字节(16位,除了0x14E和0x14F)相加得出的。

相关链接:https://gbdev.gg8.se/wiki/articles/The_Cartridge_Header
修复工具:BGB
修复步骤:加载ROM → 打开调试器(ESC) → 文件 → 修复校验码 → 保存ROM到...



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

签到天数: 61 天

[LV.6]常住居民II

发表于 2022-12-8 16:54:19 | 显示全部楼层
学到了新知识
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|国治模拟精品屋 ( 沪ICP备15012945号-1 )

GMT+8, 2024-4-27 06:13 , Processed in 1.093750 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表