金庸群侠传吧 关注:136,605贴子:1,033,864
  • 28回复贴,共1

Mac 安装 Dos 原版以及存档修改讲解

只看楼主收藏回复

近来疫情原因,一直在家办公,实在无聊想玩玩老游戏了。无奈公司发的是 Mac 电脑,搜了一下资源发现并没有人发布过类似的经验,遂补充如下,希望得到大家的鼓励~
因为我比较喜欢 Dos 原版,所以首先要下载的就是 DosBox 软件(https://www.dosbox.com/download.php?main=1):


将其拷贝到应用程序目录(command+c,command+v):

没有问题的话,点击启动台就可以看到 DosBox 图标了:

点击打开会显示如下:

因为我将下载好的金庸原版目录放置在名为 dos 的目录中,所以使用 MOUNT 命令将该目录挂在为 C 盘~

cd 到金庸目录(LEGEND)下,运行 Z.COM 可执行文件(直接 z 回车就行)!

大功告成!庆祝!!!
下面说一说关于游戏修改的东西。
原版金庸因为年代久远,根本没有加密或者游戏运行防篡改等机制,修改十分简单。我们可以在运行期修改内存,也可以修改存档。如果你做过这个事情,会发现它的存档几乎就是内存内容的一份镜像,是没有任何加密或者防篡改校验的……
在 legend 目录中,你可以看到 R1.GRP、R2.GRP 和 R3.GRP 三个文件,分别对应三个存档。每一个存档的内容格式都是相同的。你可以找任何一个 16 进制编辑器来修改它们。我这里使用 vim 编辑器(因为这个一般都是 Mac 自带的,不需要安装什么)给大家演示一下:
首先我们点击启动台,找到一个叫 “其他” 的目录

找到并点击 “终端” 程序:

使用命令 “vim -b {存档文件位置}”:

将这个存档文件向 “终端” 上拖拽即可!然后回车:

一开始打开是一片乱码,没有关系,我们使用命令 “:%!xxd” 然后回车,就会变成熟悉的 16 进制内容显示了:

好了,这里我们已经可以开始修改之旅了~我们先来一个开胃菜 —— 将野球拳修改为 10 级!
我们快速定位到 “000003d0:” 这一行:

将光标处内容修改为 “e703”(在 vim 普通模式下,先键入字母 i 变成插入模式,然后在修改):

然后按下 esc 键退出 vim 的插入模式,再输入 “:%!xxd -r” 命令,将 16 进制变回 2 进制模式,然后输入 “:wq” 按下回车,退出 vim 程序!
我们看一下修改成果吧:

这里,我们使用任何一款 16 进制编辑器都可以进行修改。vim 程序对于初学者不是很友好,大家可以选择简单一点的,比如 sublime text3 或者其他软件。


1楼2020-02-26 23:34回复
    下面说一下 “e703” 这个数字的来源
    首先,计算机 cpu 存在一个处理内存字节顺序的问题。我们知道,单独一个字节如果不考虑符号位,只能表示 0~255 这 256 个数字。如果想要使用超过 255 的数字则至少要动用 2 个或 2 个以上的字节。这样就出现了一个问题,我们假设要处理的数字就是 256 占用两个字节,按照人类对数字的常规认知,它的 16 进制写法应该为 0x100,即数字高位在前,低位在后(就好比我们认识十进制数,十位在个位的前面,百位在十位的前面……)
    咱们的 Dos 环境模拟的是早期的 8086 架构机器,它们的 cpu 一直都是小端的字节序,即 “低位在前,高位在后”,正好和我们人类的通常认知相反。就拿上个 256 数字来说,它的 16 进制是 0x100,拆成两个字节分别是 0x01(高位)和 0x00(低位),按照低位在前高位在后的写法,在内存中这个数字存储的时候应该为 “0001” 这样。好了,我们在回过头看 “e703” 这个内存字节序列,它实际上是数字 0x3e7,换算成 10 进制就是 999 这个数
    实际上我们可以这样总结金庸原版武功升级的路数,武功分为 1 ~ 10 这 10 个级别,经验值从 0 ~ 999 一共 1000 个点。我们假设这个点数为 N,则武功级别(Level)的公式为:
    Level = N/100 + 1
    学过计算机编程的人都知道,整型数字的除法实际上只取整数部分结果,即 99/100 = 0,101/100 = 1 这样。我们可以总结出这样一个列表:
    武功1级 0~99
    武功2级 100~199
    ……
    武功9级 800~899
    武功10级 900及以上
    所以实际上我们不需要将武功经验设置为 999,只要设置成 900 以上任何数值都可以达到武功 10 级的效果
    另外,学习武功秘籍应该是成功一次增加 100 点数;挥拳一次增加 1 或 2 点;因此二者不会影响可以累加 —— 假如我们单靠挥拳将经验点数刷到 99(再增加 1 就会升级),此时恰好武功秘籍升级了,那么经验点数一下子变成 99 + 100 = 199,下次战斗时再次挥拳又会升一级了
    挥拳一次增加 1 或 2 点是我测试的结果,会不会超过 2 点以及是不是随机的我都不太清楚。假设这个结论是正确的,那么单靠挥拳升 1 级的话至少需要 50 次(每次都加 2 点),最多需要 100 次(每次都加 1 点)。至于为什么大家普遍感觉似乎是挥动 60 下左右升一级,我怀疑是每次加 2 点的概率比每次加 1 点的要大一点导致的。


    3楼2020-02-27 10:48
    回复
      2026-01-08 20:06:23
      广告
      不感兴趣
      开通SVIP免广告
      为楼主点赞!请问资质的代码是多少呢?还有就是这些代码楼主是怎么知道的呢?


      IP属地:重庆5楼2020-03-10 23:33
      收起回复
        楼主!这个技能代码怎么看的?


        IP属地:浙江来自iPhone客户端6楼2020-06-18 14:25
        收起回复
          求dos原版下载地址,谢谢


          IP属地:广东7楼2020-06-23 16:20
          收起回复
            常见问题:
            1、金庸原版下载地址:https://pan.baidu.com/s/1sjqFUHn#list/path=%2F

            2、DosBox 下载安装后打不开怎么办
            首先打开系统偏好设置:

            选择安全性与隐私:

            选择 “通用”,然后点击 “仍要打开”:

            点击 “打开”:

            即可:


            8楼2020-08-29 22:16
            回复
              常见问题
              3、如何优化 DosBox 在 Mac 上的体验?
              打开 /Users/xxx/Library/Preferences/DOSBox 0.74-3-1 Preferences 文件,可以使用 vim 命令:
              > vim '/Users/xxx/Library/Preferences/DOSBox 0.74-3-1 Preferences'
              上面的 xxx 是你的用户名:

              我主要修改了
              cycles=auto 修改为 cycles=30000
              注意:30000 只是我个人感觉比较习惯的数值,你可以自己调节(数字越高,Mac CPU耗费越多)
              文件最后 [autoexec] 部分自动添加 MOUNT 命令,链接 Mac 目录,例如:


              9楼2020-08-29 22:16
              回复
                楼主太厉害了,成功玩到了!有办法可以放大游戏窗口嘛


                IP属地:美国10楼2020-11-21 12:40
                收起回复
                  2026-01-08 20:00:23
                  广告
                  不感兴趣
                  开通SVIP免广告
                  安卓可以玩?


                  IP属地:广东来自Android客户端11楼2021-02-04 11:13
                  收起回复
                    老哥,为啥我按照你输入的,一直都弄不到啊


                    IP属地:广东来自iPhone客户端12楼2021-09-29 07:59
                    收起回复
                      怎么运行老哥。。。放目录那块没搞懂


                      IP属地:福建13楼2021-10-01 15:07
                      收起回复
                        到最后一步显示比如要在win32下。。。怎么弄呢 我是M1的电脑


                        IP属地:广东14楼2022-03-28 11:20
                        收起回复
                          转换16进制的命令附在哪里输入?


                          IP属地:北京15楼2023-03-04 20:58
                          回复
                            楼主,怎么缩小地图呢


                            IP属地:马来西亚16楼2023-12-23 23:43
                            回复
                              2026-01-08 19:54:23
                              广告
                              不感兴趣
                              开通SVIP免广告
                              挂到c盘那一步把我卡住了 文件位置不知道怎么输入


                              IP属地:广东17楼2025-08-16 17:26
                              回复