[转]DS汉化破解技术之 Zelda DS PH NFTR字库扩容 by Crystal

经典街机射击游戏《合金弹头8700G》下载与体验 Tiled是一款广泛使用的开源地图编辑器,支持多图层管理与自定义属性绑定。在《合金弹头8700G》开发中,标准图层结构如下:图层名称类型用途BackgroundTile Layer背景装饰(天空、山脉)ForegroundTile Layer前景遮挡(树木、铁丝网)Collision碰撞体定义(墙壁、地板)Entities敌人出生点、道具位置Triggers事件触发区域(镜头切换、音乐变更) 阅读详情

注:这个是Crystal(白总)写的教程。

 

 

Crystal破解技术:
可以破解Zelda首先少不了的NO$GBA Debugger
这里先感谢某人提供此调试器(至于是谁,对方要求保密,这里就不说出来了)
这里先说声谢谢orz。

由于NFTR字库是放在内存的,所以无法直接扩大
她的CGLP段,否则在游戏载入字库到内存时,
会导致内存溢出,结果当然是黑屏的啦。
所以就要跟踪看看游戏到底怎么处理这个字库的。
小白就以 zeldaDS_15.nftr 文件为例子
扩容到了3xxx多字,够用的了,而且没降低字模位数、大小。

1。中断首地址(用来计算字库的字模偏移量)
这个字库的大小是14x16 4色 2BPP的,字库的结构下面会说明
和GBA一样,要中断当然要字库的首地址了,她的首地址就是
字库的CGLP段+0x10就是rom0x00A1303C
(rom地址以rom开始,以便和内存地址区分)
这个地址是无法直接中断的,以为她是被复制到内存的
所以要先跟踪游戏载入NFTR字库的过程,看看她载入到了哪个
内存地址里面,首先下地毯式内存中断(小白的常用方法)
r0=0x00A13000,r1=0x00A13000,r2=0x00A13000,r3=0x00A13000
一般下r0-r3这四个通用寄存器就可以了,中断失败才尝试其他的寄存器
结构在02040608中断,分析发现是载入FAT表
一般第一次中断到的都会是载入FAT(文件分配表的地址可以无视)
按下F9继续跟踪,结果中断在02007BCC处,但是发现还是不是载入代码
一般要中断在ASM处理B7aaaaaaaa000000设置文件地址时才是载入过程
继续中断吧。改为中断[40001a8]=0xb7,结果中断在02040374里面
按几下F7,发现[40001a8]=B7 00 A1 30 00 00 00 00(嘿嘿,字库地址)
出来后在02040608里面就开始复制到内存023C9540
记住了,字库在内存的首地址呀,可以按几下F7,会发现数据不断复制到内存
载入完毕后,首地址和ROM地址一样+CGLP+0x10定位到真正的首地址
就是023C957C,到了这里首地址的工作就结束了
2。 字模在内存字库的偏移量
首先先计算某字模在rom的偏移量,至于是哪个字模,当然是游戏要显示的那个了
如ファイル的フ这个字在模拟器里面一般都是第一次出现的了
用ct2在字库CGLP段查看字模在rom0x00A1778C,注意这个是rom的地址
不能直接中断(汝想中断也不可能-v-),首先计算她在rom首地址的偏差
rom0x00A1778C(フ)-rom0x00A1303C(首地址)=0x4750
将这个值和内存的首地址相加自然就是内存字库里面的字模(フ)偏移量了
简单的数学运算:0x023C957C+0x4750-0x38(字模大小)=0x23CDC94
中断这个要显示的文字吧。r0=0x23CDC94,r1=0x23CDC94,r2=0x23CDC94,r3=0x23CDC94
结果在02029738>mla r1,r4,r1,r2 中断
r4=字模索引,r2=字模大小,r2=内存首地址,就是 r1=r4 X r1 + r2
3。破解上面的偏移计算ASM
首先在rom里面查找这些代码,以便在rom里面修改她,发现怎么也找不到(-_,-~~~)
复位游戏,中断[02029738]!,结果发现这些代码是SDK集:rom0x4B87(ARM9.bin)
![SDK+NINTENDO:BACKUP],不了解这个部分。
不行,改为在ARM9.bin搜索单条指令 94 21 21 E0,结果知道rom0x1F8E0。
试试修改她,重新载入游戏,发现指令改变了,可惜只有一条指令-_,-~~~
这怎么破解嘛~,打算放弃的了,后来想到字库的CGLP段是载入内存的
而且要扩容原本的字库肯定不够大的了,要开辟新的字库空间,她放着也是没用
而且是在内存里面的;想到这里就突然灵光一闪(嘿嘿)
由于Rom地址是不可执行的,小白就将代码写在CGLP+0x10就是首地址里面
反正这个字库是不能扩大的(导致内存溢出),干脆用来做ASM看见好了
嘎嘎,这样就有大量的asm空间了不用怕找不到地方放asm代码了
(PS:同志们在找不到内存ASm时就用小白这个办法吧)

将上面的02029738>mla r1,r4,r1,r2 改为 blx r2
就是pc跳到内存的字库首地址里面执行,我们只要将破解指令放在那里就可以了。
下面粘贴小白的破解代码(代码使用goldroad ARM编译):
将她编译后放到字库CGLP段+0x10的首地址上。

上面的代码将会计算到的字模偏移量对应于rom的地址数据载入到指定内存
这里将计算到的数据也是载入到这个可以让大家发挥的鸡肋字库里面(汝不会用完整个字库吧?)
然后将这个地址放到r1返回,这样游戏画字时就从r1读取了。
4。NFTR字库文件结构
之前小白破解了字库CGLP段,但是这种字库时通过CMAP段将字符编码转换成索引号的
就是字模在字库的第几个Tile上。字库扩容了,这个索引表也要同时扩大。
由于NFTR字库文件的大小不能变大。所以CMAP段也是和上面一样,将CGLP这个废弃的段
分一部分给CMAP用(CWDH段也是如此,这个是字符的属性值,如字符宽度等等)
CMAP结构

地址    大小    作用
00000000  4     标记 “PAMC”
00000004  4     结构大小
00000008  2     开始编码(0000)
0000000A  2     结束编码(FFFF)
0000000C  2     CMAP类型
0000000E  2     未知
00000010  4     指向下一个CMAP的 00000008(开始编码(0000)),地址相对字库文件
00000014  2     当类型是 2 时 此处是编码(索引)项目数量
00000016  2     第一个字符编码
00000018  2     第一个字符编码对应字库的索引号
nnnnnnnn  2     第n个字符编码
nnnnnnnn  2     第n个字符编码对应字库的索引号
当类型段为 0 时计算字模索引号的方法:
字符编码-开始编码(0x00000008)+wCount(0x00000014)=字模索引号
当类型段为 2 时 0x00000016 开始为 字符编码、字符索引号的数组表
字符编码(0x00000016)是从小到大排序的,用来 /2 快速查找
如果汝新添加的CMAP数据没排序,就有可能无法显示(找不到编码对应的索引号)
上面是在跟踪Zelda时发现的

CWDH段:

地址    大小    作用
00000000  4     标记 “HDWC”
00000004  4     结构大小
00000008  2     开始编码(0000)
0000000A  2     结束编码(FFFF)
0000000C  4     未知
00000010  1     第一个字符属性 未知
00000011  1     第一个字符属性 未知
00000012  1     第一个字符属性 宽度
nnnnnnnn  1     第n个字符属性 未知
nnnnnnnn  1     第n个字符属性 未知
nnnnnnnn  1     第n个字符属性 宽度
这个段很简单就是通过字模索引号找到字符对应的字模属性
字模索引号X3+0x00000010就是指定字模的属性位置

FINF段:这个段很重要,汝在调整上面的段时整理的指针也要改,不然游戏无法找到上面的段

地址    大小    作用
00000000  4     标记 “FNIF”
00000004  4     结构大小
00000008  4     未知
0000000C  4     未知
00000010  4     未知
00000014  4     指向CWDH段
00000018  4     指向第一个CMAP段的 开始编码(0x00000008)处
小白在开始改这个NFTR字库时就是因为没改FINF指向的第一个CMAP、CMAP执行的下一个CMAP
数据段,导致显示不正常,这个也是在跟踪时发现的。

NFTR文件头:

地址    大小    作用
00000000  4     标记 “RTFN”
00000004  4     未知
00000008  4     文件大小
0000000C  2     本结构大小
0000001E  2     附加段的数量(CWDH、CMAP。。。)
00000010  n     FINF结构

Foxit_Phantom 绿色免安装版 Foxit_Phantom 绿色免安装版。让你随时可以使用。 立即下载

相关推荐

Foxit Phantom破解版

软件大小: 9.94MB 软件语言: 汉化 授权方式: 破解版 软件简介: Foxit Phantom是一个商业级的PDF应用软件,是一个集创建,阅读和编辑PDF为一体的新工具.

安卓反汇编工具 APK 改之理 Apk IDE 3.5.0 中文绿色免费版.zip

小米人APK改之理(原Mandarava APK改之理)是一款可视化的用于修改安卓Apk程序文件的工具,集成了ApkTool、Dex2jar、JD-GUI等Apk修改工具,集Apk反编译、Apk打包、Apk签名,支持语法高亮的代码编辑器,基于文件内容的关键字(支持单行代码或多行代码段)搜索、替换引擎,打造成可视的、一体化的APK修改工具,从而大大简化Apk修改过程中的繁琐操作,修改更轻松。 APK 改之理 Apk IDE 中文版APK 改之理 Apk IDE 中文版 APK改之理详细介绍 可视化操作,全自动的反编译、编译、签名Apk。 以树目录管理全部反编译得到的Apk资源文件,方便操作。 内置代码编辑器,支持语法高亮显示,根据文件格式自动匹配相应语法;支持多文档同时编辑;也支持使用系统编辑器来编辑代码文件。 内置基于文件内容的关键字或多行代码段的搜索、替换引擎,一键搜索替换,搜索结果以标签的形式分门别类;允许在指定搜索范围(整个工程或选中的文件或文件夹内搜索),支持正则表达式搜索和替换。搜索功能是Apk修改的一个重要工具,从此你不必借助其它第三方搜索工具。 内置Google在线翻译引擎,支持实时翻译,支持所有Google支持的几十国语言对译,汉化更轻松。 支持使用自己的keystore文件签名。 自动识别图像资源,并提供该类资源的快捷替换功能,方便修改这类图片资源。 内嵌Unicode、AscII互转工具,以方便硬编码的文字(如汉字)的搜索和汉化类修改。 内置类似于系统cmd.exe的命令窗口,高手也可以手动直接输入各种命令来手动操作。 所有操作步骤、操作结果都以良好的阅读格式输出在日志窗口,方便查看修改的历史记录。 内置adb功能,包括使用adb向设备(或模拟器)安装、卸载修改后的apk进行测试,并嵌入adb log、ddms等功能监测修改apk的运行状况,以便于分析和查找错误。 支持多国语言界面,支持界面换肤。

Foxit PhantomPDF Business 6.1 破解

Foxit PhantomPDF Business 6.1 破解,直接安装官方文件,然后运行注册文件即可。

GBA编程和汉化常用软件汇总

内容来自GBA吧中的痴狂小黑,本人只是做个汇总和搬运。 1.简易图片导入导出套装(PicSimpleImEx & AutoPicRock)Ver1.0 这两个软件是用C#写的,想要用,先装dotNetFx40_Full_x86_x64.exe,然后重启主机; 这两个软件目前只支持GBA,格式为GBA(4BPP),今后打算支持SFC和GBA(2BPP)格式,如果想支持其他格式,可自行改

二哈的世界你永远不懂! 1万+

NO$GBA debug 版

NDS模拟器 可以DEBUG,密码veta 查看3D建模,设置断点

Foxit Phantom v2.2 破解

Foxit Phantom v2.2 破解版 , 可作为PDF阅读器,创建PDF,修改PDF,加密PDF...

GBA反汇编(烈火之剑<中文版>查找字库)

其实,反汇编很简单,但最好还是看一下每个功能 第一步,下载 No$GBA debug版,注意是后缀是debug; 第二步,ROM,烈火之剑的ROM. 这两样东西,都能用搜索引擎搜索到 第三步 ① 注意绿色方框的地址,写断点("调试"→"设置带条件的断点"或 ctrl + B)设置成  "[06013000..06013020]!"(注:不包括双引号,因为每个Tile 20字节大

yami的专栏 6292

No$gba_2.6a.rar

拥有较强的DS游戏兼容性的NDS模拟器No$gba前段时间推出了目前最稳定的版本2.6a版。新的版本中加入了DS游戏存档检测功能,玩家不需要在手动调整DS游戏的存档。   这次放出来的版本是一个合集包,里面包含DS模拟器详细的使用教程。喜欢用模拟器来尝试游戏的玩家,可以下载尝试。

phpstorm2017.3.6的激活、样式设置和汉化

一:安装phpstorm2017.3.6,并激活、设置样式。(1)先在phstorm官网里www.jetbrains.com下载phpstorm2017.3.6,按照步骤安装即可。下面开始激活!(2)进入http://idea.lanyus.com/网站(3)使用前先请将“0.0.0.0 account.jetbrains.com”添加到hosts文件中(hosts文件在C盘,windows/sy...

TZ504848510的博客 3467

no$gba2.6a 任天堂NDS模拟器

no$gba2.6a 任天堂NDS模拟器 可以玩任天堂口袋怪兽游戏

NDS模拟器NDS模拟器NDS模拟器NDS模拟器

NDS模拟器NDS模拟器NDS模拟器NDS模拟器NDS模拟器NDS模拟器NDS模拟器NDS模拟器NDS模拟器NDS模拟器

自己动手丰衣足食-自己动手修改GBA ROM游戏文件

经过一天的努力终于琢磨出怎么修改GBA的游戏文件也就是俗称的ROM文件,起因是因为偶然看到二手GBM,顿时抑制不住买了一台,可惜买得晚了,完美运行游戏又带金手指功能的烧录卡买不到了。SUPERCARD烧录卡看评论说费电,玩游戏会拖慢什么的,最后权衡再三买了个EZ4烧录卡,缺点就是不能开金手指。但是我这种从小开惯金手指的人没有金手指怎么驰骋游戏?好了废话不多说开始进入正题,看本文最好有80x86汇编

l198738655的博客 6万+

普汉ph5.60

界面唯美,操作简便。易操作。专业的程序员编译而成,本软件在不断的更新中,现跟新到5.60版本。

模拟器游戏修改之教你如何修改gba rom里的程序!用TaoToken统一Key打通调试链路

用No$gba在03002C60下写入断点,定位《魂斗罗Advance》生命值指令,把Thumb机器码3801改成3001即可实现死亡加命。配合TaoToken统一Key管理调试脚本,官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 可创建Key并统一Base URL,让GBA ROM修改链路更稳定可复用。

weixin_30995917的博客 15

phMyAdmin-4.1.13

可在服务器上运行的MySQL管理工具,可在有Apache+PHP+MySQL的服务器上运行

FontCreator4.1中文版

可用的、绿色的、中文的、没毒的FontCreator4.1中文版,之前下到好多有毒的,真是气愤啊!!

探索游戏开发的新利器:gbasm

探索游戏开发的新利器:gbasm 在游戏开发的广阔天地中,每一个细节都至关重要。今天,我们将介绍一款强大的工具——gbasm,这是一款基于JavaScript的Gameboy z80汇编代码编译器,它将为你的游戏开发之旅带来前所未有的便捷与高效。 项目介绍 gbasm 是一个专为Gameboy z80汇编语言设计的编译器,它使用JavaScript编写,旨在为开发者提供一个高效、灵活的编译环境。g...

gitblog_00014的博客 532

Crossover-21-免费版-Mac版本(Mac上运行Windows软件)

使 Mac 操作系统的用户可以运行 Windows 系统的应用,从办公软件、实用工具、游戏到设计软件, 您都可以在 Mac 程序和 Windows 程序之间随意切换。

上一篇: NDS《凉宫春日的直列》的一些破解信息
下一篇: 【转】GBA_0688_炸弹人破解过程
LuckilyYu
博客等级 码龄20年 72粉丝 89原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值