ballance吧 关注:9,742贴子:401,541
  • 5回复贴,共1

【脚本解读】 Ballance 内脚本解读——Synch to Screen

取消只看楼主收藏回复

一楼喂度娘


IP属地:上海1楼2021-03-11 08:45回复
    该脚本位于 base.cmo 中,是 Level Script:Default Level 中的一个子脚本,位于 ScreenModes 之后
    关于 ScreenModes 脚本的解读可以看这里:https://tieba.baidu.com/p/7255161804


    IP属地:上海2楼2021-03-11 08:46
    回复
      在开始之前,仍然是要感谢 bkt 团队对解密 cmo/nmo 脚本的努力
      所用到的工具:https://github.com/BearKidsTeam/VirtoolsScriptDeobfuscation
      或者也可以用已经解密的文件:https://github.com/BearKidsTeam/BallanceModding
      我用到的文件是经上述工具/文件直接理线而来


      IP属地:上海3楼2021-03-11 08:49
      回复
        贴伪代码


        IP属地:上海4楼2021-03-11 08:51
        回复
          观察这个脚本可以得出可以得出的结论有两个
          1. 确实在初始化的时候 Ballance 会将自身设定为 640*480 分辨率(楼下有验证)
          2. 原版设定下,无论如何设定 Synch to Screen 的值为何,都会使得其锁帧,但表现不同。
          Synch to Screen 打开会等待垂直同步(即锁定到显示器刷新率),关闭会锁定到 60fps(硬性限制)
          关于第二点的解释和验证在 https://tieba.baidu.com/p/7212893473 这里有


          IP属地:上海5楼2021-03-11 08:58
          回复
            现在开始验证第 5 楼的 1.
            根据 “遍历 ScreenModes 表格,如果 (1, x)(Width, 即分辨率宽度)等于 640” 这一指令
            如果表格中没有任何一项存在等于 640 的值,那这个循环便会变成死循环,导致卡死
            那么可以把这个值修改为一个不可能存在的值,比如这里将其修改为 639


            同样的,也可以获得 黑屏卡死 x1(同时我笔记本风扇狂转


            (lz:这怎么做的脚本(口吐芬芳


            IP属地:上海6楼2021-03-11 09:05
            回复