写些《魔塔大陆》以及一些引擎相关的吧

在整个PS2时代,GUST一直保留着往ELF里塞数据的做法。所以不管是字库还是战斗数据什么的都可以在ELF里面找到。

到PS3后字体倒是改成了TTF,然而卖身之后又是万恶的图片拼接……(雾)

字库

24*24,4bpp没什么好说的。有意思的是,GUST的引擎是支持至多10种字体的。

字库由两部分组成:字体描述字符串和字模。字体描述字符串由2字节的、SJIS编码的字符组成,排列顺序与字模顺序等同。

而指向这两部分的指针位于一个大小为10的数组里。虽然目前没有见到几个利用了多字体的程序。但是AT2里确实有两个字体存在(然而AT1,A6等中都无有发现)。

程序要显示文字时,就从字体描述字符串中找到文字所对应的编码的索引,并以此得出字模的位置。

然后把字模整体复制到一个缓冲区里:这里就是可以做文章的地方了。既然程序实际上是用缓冲区取字显示,字库是缓冲区未命中时取字的方案,那么只要修改取字例程就可以随意改动字库。

我选择了减色,将4bpp减为1bpp。于是,容量就从约2000字扩充到了约7000字——翻译绝对够用了。

绘制逻辑

对于任意的字符串显示,都是在每次渲染循环时绘制上去的。所以诸如控制符的解析原始字符串的扫描(确认自动换行点)等一直在进行。并且占用了为数不小的CPU时间:当有文字绘制时,中断程序十有五六能中断在文字解析例程里。

另外,美版的自动换行点在空格处,而日版则是非符号前。汉化美版(和欧版)时,还需要修改对应例程,否则程序会永无止境地寻找换行点。(AT2汉化的部分BUG原因)

QvMap

俯瞰视角地图(不就是二等轴测地图嘛,叫这么高端)。

其数据分作多个部分。

碰撞数据存于RPK中的gmd里。

卷轴滚动数据存于RPK中的qvb里。而卷轴的纹理位置数据存在ELF里。而纹理本身存于RPK中的fp中(读取优化用)且只接受奇葩的LZR压缩(LZ算法的一个变体,针对重复的数据给出额外的优化。)过的文件。

卷轴绘制起始坐标、摄像机起始坐标、BGM、脚步声效、NPC等数据则依然在ELF中。

Event(事件/剧情)

在早期(A6及之前),Event数据一律存在于ELF中。

自AT1开始,Event数据被独立到evd文件中。

EVD文件的详细描述不再赘述。它包含了对话数据和脚本。

不过要是想要修复一些BUG就必须动到EVD里的脚本。(比如在乱逛时触发阻止前行的剧情,角色向后跳跃卡进墙里的神奇问题(需要修复脚本指定的跳越终点坐标))

汉化本身

首先EVD是独立文件,分析完文件结构重新生成就好。

麻烦的是ELF里的文本。只能将指针表挑出来,然后做好对应。(再次恬不知耻地推销自己的EIS。(啊,好像还没写完,欸嘿= ̄ω ̄=))

另一个麻烦的是美版的字库太小,即使扩容也不到2000字。目前依然没有什么好办法(之前的一个构想是将字库移动到RPK中,运行时加载;但随后留意到了内存不足的问题(垃圾GUST把ELF做太大了啊啊啊))目前的想法是移动到host:中。不过这就会令普通玩家非常尴尬……

(另:有一个小聪明想法是用日版ELF直接盖掉美版的,一劳永逸……毕竟已经发现日美版存档数据一致)

其他

其实随着研究的深入有点想顺便做个Mod制作工具了……不过现在还太遥远了就是……

先写这些吧。ヾ(•ω•`)o

PS2汉化实例-《魔塔大陆》相关推荐

  1. PS2汉化1 字库处理

    引语 其实字库处理很难说有一个统一的方法,不同的程序都需要不同方法来处理. 关于常见位图字库的详细信息. 下面是字库存在于ELF/ERX文件时的处理思路. 字模替换 最天真朴素.最通用的处理方式.适用 ...

  2. 游戏汉化教程2-资源分析

    资源分析 之前已经介绍过了整个游戏的汉化流程,我也提到过其实汉化的流程虽然简单,但是每一个步骤里面都包含了许多细节,甚至于有时候一个细节就会让整个汉化宣布失败.今天主要讲的就是第一个步骤,资源分析(包 ...

  3. 使用Lingobit Localizer汉化.net程序(Translate .net program using Lingobit Localizer)

    作者:王先荣 前言     最近开始做给小朋友上机器人编程课的兼职,感概颇多:(1)小朋友的动手能力都很强:(2)"调皮"的小孩很多:(3)直面困难的小朋友不多.     由于采用 ...

  4. PS2 格兰蒂亚3 汉化研究

    关于资源压缩: 提取iso后没有发现需要的东西.查看主程序后发现字库读取SYS/GR3.MDZ里面.大部分资源都是MDZ格式,被压缩了.当时毫无头绪,因为没有见过 这种格式,后来在研究其他游戏中发现了 ...

  5. bootstrap之双日历时间段选择控件—daterangepicker(汉化版)

    jQuerybootstrapdaterangepicker汉化版 双日历时间段选择插件 - daterangepicker是bootstrap框架后期的一个时间控件,可以设定多个时间段选项,也可以自 ...

  6. 使用 SetCustomizedString汉化UltraWinGrid的筛选

    网上有 汉化UltraWinGrid筛选的代码不过没说明怎样使用(大概是觉得简单) Private Function GridFilter_Customizer()         Dim rc As ...

  7. tibco汉化包6.3.0_TIBCO BusinessWorks 6和Container Edition与BW5的比较

    tibco汉化包6.3.0 [本文已于一段时间前发布在TIBCO博客上 . 我还在适当的地方添加了一些有关BusinessWorks Container Edition(BW CE)的信息 . 下面定 ...

  8. Danfo.js专题 - 附:Dnotebook(Danfo Notebook)单机资源与汉化文档

    本文是汉化版的Danfo notebook对应修改的demo,与原版demo内容相比,请求csv的路径发生了变化,且部分文字汉化了.该汉化版本在博主发布的资源中可以找到. 由于G内网无法访问该文档,故 ...

  9. ant-design-vue中a-date-piker日期选择器的使用/全局汉化(详细)

    详细使用,踩坑后总结 一.安装moment.js 二.a-date-picker的使用 1.在页面中引入a-date-picker控件:需要注意的点都写在注释中了 2.查看打印结果 3.a-date- ...

最新文章

  1. spark编程基础--2.2scala基础知识
  2. CiscoIOUKeygen
  3. 这些贷款合同陷阱你知道多少?
  4. 无法打开包括文件:“mysql..h”: No such file or directory
  5. member pm.php,Dedecms 会员中心注入漏洞5
  6. Mac下Intellij IDea发布Web项目详解一
  7. android listview 分页
  8. node Koa框架+nunjucks模版开发简易的后台
  9. eureka集群 ha_SpringCloud如何实现Eureka集群、HA机制-百度经验
  10. NeatUpload 的使用
  11. 定期删除IIS日志文件
  12. 笔记本绝密内幕 你不知道的代工秘密
  13. 编辑表格用什么软件比较好?最好用的都在这了!
  14. 方舟非专用服务器稳定吗,方舟非专用服务器
  15. Nvidia GPU的浮点计算能力(FP64/FP32/FP16)
  16. 哲学家是如何思考问题的-2.0版
  17. “双碳”背景下 数据中心气体灭火技术演进方向
  18. 练琴时悟出的动态规划算法,帮我通关了《辐射4》
  19. vc++ cos 函数_cos()函数以及C ++中的示例
  20. GIS行业应用|智慧城市系列之智慧公安02

热门文章

  1. 图像超分辨率重建学习记录(一)
  2. python的脚本扩展名是什么_Python的脚本文件扩展名为()。
  3. 用户活跃、留存、增长分析,超全图解!
  4. APP自动化测试框架
  5. struts2 框架升级从2.3.*,升级到2.5.30
  6. MLOps:构建生产机器学习系统的最佳实践
  7. 针对某运维系统监测服务器SNMP及WMI对应硬件状态/性能指标/磁盘IO/日志/进程等相关信息的遇到问题的解决思路
  8. 会考flash中文字变形为三角形_会考Flash操作知识点
  9. simunlik.signal和mpt.signal区别
  10. 【AI案例】(二)搭建大数据Python生态知识体系