无忧启动论坛

标题: graphicsmode会清除掉已加载的字体、背景图 [打印本页]

作者: xianglang    时间: 2023-9-24 12:46
标题: graphicsmode会清除掉已加载的字体、背景图
早在三两年前,graphicsmode 是不会清除掉已加载的字体、背景图的,但是昨日我下载了2023-9-22的 G4D 后试了下以前写的很少用到的调用另一个菜单文件的菜单项时,发现了这个问题——我追溯到2022-9-15版,还是存在这样的问题。如果主菜单不使用 graphicsmode -1 600:800 480:600 24:32 指定显示模式的话,G4D加载菜单后会只显示一个莫明其妙的符号后不断滚屏。而要解决 graphicsmode 会清除掉已加载的字体、背景图的问题,我现在是重新加载;另外似乎也可以检测是否使用过 graphicsmode 而决定是否使用,不过我不知道如何检测它。

主菜单 MENU.LST 头部相关内容如下:

default 3
timeout 15
graphicsmode -1 600:800 480:600 24:32
## 下面前一句旧判断是否加载了字库,后一句2023.9.22版本修改后
##font --font-high=24 --simp= /24.hex 内置字库非16*16字体,头部需声明:DotSize=24,simp
#read 0x1800820 || font /GRUB/U51.LZMA
calc *0x8312&4 > nul || font /GRUB/U51.LZMA
## 下面前两句判断是否加载了图形,后一句2023.9.22版本修改后
#calc 46<<2+*0x8304
#read %@retval% || splashimage /GRUB/XL_MOON_800.LZMA
calc *0x8312&2 > nul || splashimage /GRUB/XL_MOON_800.LZMA
.
.
.
title  Test and Other (Menu) \n 备份、检测、维护及其他菜单
  configfile /GRUB/MENU-TEST.LST

子菜单 MENU-TEST.LST 头部相关内容如下:

write 0x8274 0x3E01   ##汗,这语句什么用,我现在竟然忘记了。
title  Reuturn MENU.LST \n 返回 MENU.LST 菜单
  ##configfile /GRUB/MENU.LST || find --set-root /GRUB/MENU.LST && configfile /GRUB/MENU.LST
  write   0x307ff8   1   &&   configfile



作者: a66    时间: 2023-9-24 17:21
高大上
作者: yc2428    时间: 2023-9-24 20:26
学习一下
作者: 2011yaya2007777    时间: 2023-9-26 17:21
早在三两年前,graphicsmode 是不会清除掉已加载的字体、背景图的

已经修正。看看还有没有问题。

G4D_G4E.rar

320.65 KB, 下载次数: 21, 下载积分: 无忧币 -2


作者: xianglang    时间: 2023-9-27 10:44
2011yaya2007777 发表于 2023-9-26 17:21
已经修正。看看还有没有问题。

这个版本,已经解决了清除背景图的问题,但是仍然会清除已经加载的字库,导致文字显示花屏(进命令行加载字库返回能正常显示)。

作者: 2011yaya2007777    时间: 2023-9-27 11:01
本帖最后由 2011yaya2007777 于 2023-9-27 12:33 编辑
2011yaya2007777 发表于 2023-9-26 17:21
已经修正。看看还有没有问题。

这个版本,已经解决了清除背景图的问题,但是仍然会清除已经加载的字库,导致文字显示花屏(进命令行加载字库返回能正常显示)



是使用1#的菜单吗?是g4d还是g4e?我反复测试没有问题呀!是第一次加载主菜单就没有中文,还是从子菜单返回中文消失?
作者: xianglang    时间: 2023-9-28 14:03
2011yaya2007777 发表于 2023-9-27 11:01
是使用1#的菜单吗?是g4d还是g4e?我反复测试没有问题呀!是第一次加载主菜单就没有中文,还是从子菜 ...

是1#的菜单。G4D和G4E都是一样,就是在主菜单选择了子菜单,再由子菜单调用主菜单后,字库就被清除了,菜单显示变成了乱码争块。
作者: 2011yaya2007777    时间: 2023-9-28 15:03
是1#的菜单


主菜单:
default 3
timeout 15

graphicsmode -1 600:800 480:600 24:32
calc *0x8312&4 > nul || font /GRUB/U51.LZMA
calc *0x8312&2 > nul || splashimage /GRUB/XL_MOON_800.LZMA

title  Test and Other (Menu) \n 备份、检测、维护及其他菜单
  configfile /GRUB/MENU-TEST.LST



子菜单::

write 0x8274 0x3E01   ##汗,这语句什么用,我现在竟然忘记了。  01:显示自动菜单;3e:使用‘>' 分隔符

title  Reuturn MENU.LST \n 返回 MENU.LST 菜单
write   0x307ff8   1   &&   configfile

我使用以上菜单没有问题呀。
试一试子菜单:
title  Reuturn MENU.LST \n 返回 MENU.LST 菜单
find --set-root /GRUB/MENU.LST
configfile /GRUB/MENU.LST
作者: xianglang    时间: 2023-9-29 13:55
刚才在至强5110的台式机上试过了,还是不行。难道是我的电脑都太老、集成显卡的原因?或者是加载SLIC造成的?我将完整的MENU.LST相关的文件,都打包了,看看你那有没有问题?

GRUB-MENU.rar

613.53 KB, 下载次数: 10, 下载积分: 无忧币 -2


作者: 2011yaya2007777    时间: 2023-9-30 11:54
好隐秘的问题。
是由于主菜单的注释里面含有‘DotSize=’字符串,引起了误会。已经修正。

G4D_G4E.rar

320.63 KB, 下载次数: 7, 下载积分: 无忧币 -2


作者: xianglang    时间: 2023-10-1 16:29
2011yaya2007777 发表于 2023-9-30 11:54
好隐秘的问题。
是由于主菜单的注释里面含有‘DotSize=’字符串,引起了误会。已经修正。

我的菜单中,‘DotSize=语句已经被注释掉了啊,居然也会影响?实在是够隐蔽的。不过这次修改的版本,已经解决问题了。

只是在用 QEMU 测试时,子菜单使用 write   0x307ff8   1   &&   configfile 返回主菜单时,第一次成功。但是只要执行了一次 write   0x307ff8   1   &&   configfile 或者 configfile /GRUB/MENU.LST 后,再执行 write   0x307ff8   1   &&   configfile会出错(如图),可能是 QEMU 的问题,完全不用理会。



作者: 2011yaya2007777    时间: 2023-10-1 16:45
使用常规方法为好。configfile /GRUB/MENU.LST




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3