bruh.21.09.20

我似乎有点高估我接受辣味食物的能力了🤔那个什么鱼香肉丝料理包,连续吃了三天之后果然开始急性腹泻,草🤔

但和去年相比,今年买的总感觉有点索然无味🤔不清楚它本来就是这种味道,还是我的味觉其实退化了,还是它开始偷工减料了🤔但无论如何,这几天貌似马上就有临期鲜肉月饼了,我寻思做个月饼炒意面(大嘘)都比这垃圾玩意好吃114514倍🤔

另外一方面cuties impact这游戏也越来越接近索然无味了,在我把the catch拉到了90级之后,哪怕元素精通雷电将军都能打出一万九的爆发伤害,所以我一不小心又乳了一次刻晴🤔我估计等精炼材料集齐、dps套刷好之后五六万应该没啥问题,但这样总感觉没啥意思🤔

fischlthonk

kawaii fischl chan一丝不挂的时候都要thonk,然后就被我做成了表情包:

我发现喜欢fischl chan完全是因为小乳房,所以按照那群cancel小将的说法,我大概是一个一个一个一个炼铜术士啊啊啊啊啊🤔

与此同时我以某种申必方式发现了illusion的老游戏将屏幕分辨率藏在哪个配置文件,以及如何将其修改成4k🤔至于那些用了unity的新游戏,它就在注册表里啊,随便修改🤔

具体来说,答案分别是data目录下面的gsd.cfg,以及二进制修改🤔但发现这玩意的过程极其有意思🤔

首先人工学园2有一个神奇的魔改版本,叫做AA2MiniPPX,它从头实现了一种可以压缩的封包格式,叫做ppx,这样它就能从原来的可能有12GB直接压缩到2.82GB🤔这个版本也可以加载一大堆mod,比如之前没有的第一人称视角mod,当然,它也可以用任何分辨率运行,比如4k🤔所以,我看了下它是怎么将4k分辨率写入配置文件的🤔

它具体来说用一大堆lua脚本来实现魔改操作,比如按照它的mod载入逻辑第一个mod永远是叫做launcher的mod,打开\AAUnlimited\mod\launcher\dlg.lua,可以看到里面有一个函数是和分辨率有关的:

local function update_res(text)
    text = text or "1280x720"
    local x,y = text:match("^([0-9]+)x([0-9]+).*$")
    if not x or not y then return end
    x = tonumber(x)
    y = tonumber(y)
    if x< 100 or y < 100 or x > 10000 or y > 10000 then return end

    local function gcd(m, n)
        while m ~= 0 do
            m, n = n%m, m
        end
        return n
    end

    local factor
    local ax
    local ay

    factor = x / y
    if math.abs(factor - 16/9) < 0.1 then
        ax = 16
        ay = 9
    elseif math.abs(factor - 16/10) < 0.1 then
        ax = 16
        ay = 10
    elseif math.abs(factor - 4/3) < 0.1 then
        ax = 4
        ay = 3
    elseif math.abs(factor - 9/16) < 0.01 then
        ax = 9
        ay = 16
    elseif math.abs(factor - 10/16) < 0.01 then
        ax = 10
        ay = 16
    else
        factor = gcd(x,y)
        ax = x/factor
        ay = y/factor

        if ax > 128 or ay > 128 then return end
    end

    gsdconfig.aspectx = ax
    gsdconfig.aspecty = ay
    gsdconfig.x = x
    gsdconfig.y = y
    gsdlib.save_gsd(gsdconfig)
    _CONFIG["res_"..exe_type] = x .. "x" .. y
    Config.save()
end

这个函数的输入参数是一个AAAAxBBBB格式的字符串,分别代表横向和纵向分辨率,所以也有这么一个变量

local reslist = {
    "800x480","854x480","960x600","1024x600","1280x720","1280x800","1280x854","1280x960","1366x768",
    "1440x900","1440x960","1600x900","1680x1050","1920x1080","1920x1200","2048x1080","2048x1536",
    "2560x1600","2560x2048","3840x2160","3840x1600","4096x1716","4096x2160"
}

里面是所有可以在那个魔改版本launcher里面选择的分辨率🤔但它最重要的功能是暗示了一个叫做gsd的东西,在拆分了AAAA和BBBB并且算出宽高比之后它调用一个和gsd相关的玩意将它们写入配置文件,而且同目录里刚好有个叫做gsd.lua的脚本,这个脚本刚好规定了如何读取和写入一个叫做gsd.cfg的配置文件🤔

其中format一栏规定了人工学园2的gsd.cfg应该是什么格式:

local format = {
    --"\x03\x00\x00\x00\x00",
    "\x03\x00\x00\x00\x00",
    { x=int },
    { y=int },

    { zoom=bool },

    { aspectx=byte },
    { aspecty=byte },

    "\xdf\xff\xff\xff\x00\x00", -- mandatory

    { fullscreen=bool },
    { mipmap=byte },

    --"\x00\x00\x00",
    "\x01\x00\x02",

    { sharp=bool },
    { bilinear=bool },
    "\x00",
    { fastrender=bool },
    { svp=bool },

    "\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00",
    --zero:rep(10),

    { blur=bool },
    "\x00",
    { shadowmap=byte },
    "\x00",
    { rim=bool },

    "\x01", -- shadowmap for body enable?
    { dynlight=bool },
     "\x00\x00",
    { outline=bool },

    zero:rep(1046),

    { aa=byte }
}

我反正没有看懂它是怎么将分辨率的数值转换为二进制的,但我至少明白怎么将人工学园2的gsd.cfg中和分辨率相关的几个字节替换到另外一款illusion游戏里了🤔貌似它将分辨率的数值和0xFFFFFFFF做了一次应该是xor运算,然后写了进去,但实在不行直接从人工学园2的gsd.cfg里复制过去就完事了🤔

我需要修改的游戏是一款叫做Wakeari的游戏,它的gsd.cfg和人工学园2还是不太一样的,比如开头是01 00 00 00 00而不是03 00 00 00 00,而且在DF FF FF FF之前比人工学园2少了两个字节,少的刚好是aspectx和aspecty🤔复制过去之后它真的便乘了4k,问题是感觉有些按钮没有显示🤔接下来我发现了DF前面的那个字节在Wakeari里面是干什么的了,它是用来规定宽高比的,取值00时是4:3,取值01时是16:10,取值02时是16:9🤔改成02之后一切正常,外加dgVoodoo也被我配置好了,终于可以impact 4k cuties(大嘘)了🤔

tankeqing

https://cyberdrop.me/a/BecVgIku

现在除了thonkeqing外还有tankeqing,说不定哪天还会有fuckeqing,keqing这名字梗浓度实在是太高了🤔

发表评论