UEFI Shell 下的俄罗斯方块游戏
最近移植了几个基于ncurses/pdcurses库的游戏到EFI环境下。
以下记录以下俄罗斯方块游戏的移植步骤。
0.必备知识
- 会使用C语言编写程序
- 了解UEFI的基本概念
- 懂得如何在EDK2里编译Module
- 会使用StdLib包来写Application
1.找到tetris的源代码
https://github.com/brenns10/tetris
截图如下:
2.写inf文件
# @tetris.inf
# Author : Gao Ling
# Date : 2019-09-20
# Original Src if from https://github.com/brenns10/tetris
[Defines]
INF_VERSION = 0x00010006
BASE_NAME = tetris
FILE_GUID = 7C368543-4801-4915-A179-569A71C4D1AA
MODULE_TYPE = UEFI_APPLICATION
VERSION_STRING = 0.1
ENTRY_POINT = ShellCEntryLib
#
# VALID_ARCHITECTURES = IA32 X64 IPF
#
[Sources]
main.c
tetris.c
tetris.h
util.c
util.h
[Packages]
StdLib/StdLib.dec
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
ShellPkg/ShellPkg.dec
PdCursesPkg/PdCursesPkg.dec
[LibraryClasses]
ShellCEntryLib
EzCursesLib
LibC
[BuildOptions]
MSFT:*_*_*_CC_FLAGS = /wd4244 /wd4267 /wd4428
其中EzCursesLib是efi下的curses库,基于PdCurses。
3.编译运行
把inf路径放到dsc里编译。运行结果如下:
4.应用场景
闲来无聊时可以玩玩。或者可以在POST时先执行这个application,必须玩到超过特定的分数才允许启动OS。