| 赞 | 87 |
| VIP | |
| 好人卡 | |
| 积分 | 136 |
| 经验 | |
| 最后登录 | 2021-1-24 |
| 在线时间 | 2753 小时 |
- 梦石
- 0
- 星屑
- 13562
- 在线时间
- 2753 小时
- 注册时间
- 2014-10-4
- 回帖
- 705

|
发表于 2019-12-9 01:39:35
|
显示全部楼层
本帖最后由 SixRC 于 2020-3-3 00:35 编辑
汇编模块
下个这个
把里面 ExtraFunc 文件夹复制到你游戏目录
ExtraFunc 代码页复制到游戏代码 随便什么地方
因为我懒 用了这个
2020.3.2 bugfix
旧的做法是用 bitmap 去替换
导致若 F12 则 bitmap 被释放 rm在对其进行clear时爆炸
新的做法是调用了 rm 内部申请位图的函数
也就是它本来怎么来的 就让它再来一次
[fold]
[pre lang="ruby"]class << Graphics
# 渐变修正 用于 103J
FXTN_dll = Win32API.new("kernel32","GetModuleHandleA","p","l").call("RGSS103J")
gdi = Win32API.new("kernel32","GetModuleHandleA","p","l").call("gdi32")
delo = Win32API.new("kernel32","GetProcAddress","lp","l").call(gdi, "DeleteObject")
# pass width, height
FXTN_rep = ExtraFunc.parse %Q{
mov edi,#{FXTN_dll}
mov esi,[edi + 0x12B6C4]
mov esi,[esi + 0x144]
push dword [esi + 0x2C]
mov eax, #{delo}
call eax
mov dword[esi + 0x20], 0x20
mov ecx,esi
push dword[esp + 8]
push dword[esp + 8]
lea eax,[edi+0x86540]
call eax
mov edi,[edi + 0x12B6C4]
mov edi,[edi + 0x148]
mov eax,[esp + 4]
mov [edi + 0x10],eax
mov [edi + 0xC8],eax
mov eax,[esp + 8]
mov [edi + 0x14],eax
mov [edi + 0xCC],eax
ret 8
}
# 修正为 w * h 可以重复调用
def fix_trans(width, height)
ExtraFunc.run FXTN_rep, width, height
end
end[/pre]
[/fold]
然后复制上面的代码 复制到 ExtraFunc 代码页下面的随便什么地方
然后 修正渐变问题方法
Graphics.fix_trans(width, height) 新的宽高
在渐变前调用一次即可 是全局的 修正为新的渐变分辨率
无特殊情况 只需要调用一次
就和改分辨率一样 是一次性的!
适用于 RGSS103J 别的不好说
有需求我另外改
原理在 4楼
那个帖子有个bug的.. |
评分
-
查看全部评分
|