原帖由 WHITESHIP 于 2012-3-11 11:34 发表
呜呜!不可能吧……头像是、是、是用程序画的!?18年前的暗荣……这么苦逼……
那要怎么改头像啊……咬牙用体力活试试…………
---------------
对了:
第一,人物能改兵种吗?
第二,R场景里能和人 ...
英杰传的显示方式是640×480×16色。在显示卡内存中分为4个显示页,每个显示页的大小是640×80字节,用一个bit表示屏幕上的一个像素,地址由系统显存地址A000:000开始。屏幕上的每个像素由4个bit表示,每个显示页存储了一个bit,4个bit合在一起可以表示16色。光荣编写了一个tfded.com作为直接写系统显存地址的驱动程序,这个程序为了节省空间大小使用了许多小技巧,有兴趣的人可以反汇编这个程序分析一下,很有意思。
光荣使用FACE.DAT存放了画人物头像的指令信息,包括指令头和指令内容。指令头部指定了头像的大小等信息,指令内容由若干能被tfded.com识别的指令构成。英杰传显示头像时,读取FACE.DAT中的指令内容,然后调用INT62中断,驱动tfded.com直接写系统显存完成头像绘制。
人物的头像为64列80行大小。光荣在写系统显存是按照如下顺序:先由上到下写第1列,再由下向上写第2列,再由上向下写第3列,由下向上写第4列,依次类推,直到由下向上写第64列。指令共有32种,大约如以下几类:
重复写X字节,内容为Y(X字节表示8X个像素)。
将第X个显示页中某块区域的内容拷贝到第Y个显示页的某个区域。
等等等等......
tfded.com读取存储在facedat.r3文件中的显示指令,逐一执行指令,将头像的像素写入系统显存,直到64×80的位图全部写完为止。
具体指令的内容仍然在分析中,不过最近比较忙,进度缓慢。我将目前反汇编tfded.com的分析结果贴在附件中,由兴趣的可以参考一下。(补充说明:系统调用TFDED时,主功能号是0,子功能号是1,
另外:确实可以修改人物的初始兵种,不过目前编辑器的版本还没有增加这个功能。人物对话触发的确需要主控人物触发(似乎只能控制刘备行动)。
[ 本帖最后由 龙吟 于 2012-3-11 12:50 编辑 ]