UEFI Shell 下的数码雨/digitalrain
最近移植了几个基于ncurses/pdcurses库的游戏到EFI环境下。
以下记录一下数码雨的移植步骤。
0.必备知识
- 会使用C语言编写程序
- 了解UEFI的基本概念
- 懂得如何在EDK2里编译Module
- 会使用StdLib包来写Application
1.到github上找一个基于curses的digital rain的源代码。
https://github.com/DavidWKnight/Digital-Rain
2.写inf文件
[Defines]
INF_VERSION = 0x00010006
BASE_NAME = digitalrain
FILE_GUID = 355EF8B1-B042-44EF-86D4-8C42D2407115
MODULE_TYPE = UEFI_APPLICATION
VERSION_STRING = 0.1
ENTRY_POINT = ShellCEntryLib
#
# VALID_ARCHITECTURES = IA32 X64 IPF
#
[Sources]
droplets.c
matrix.c
[Packages]
StdLib/StdLib.dec
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
ShellPkg/ShellPkg.dec
EzCursesPkg/EzCursesPkg.dec
[LibraryClasses]
ShellCEntryLib
EzCursesLib
LibC
[BuildOptions]
MSFT:*_*_*_CC_FLAGS = /wd4244 /wd4267 /wd4428 /wd4018 /wd4146
其中EzCursesLib是efi下的curses库,基于PdCurses。
3.编译运行
把inf路径放到dsc里编译。运行结果如下:
4.应用场景
可以当做屏幕保护程序。