payloads/external: Add support for coreDOOM payload
coreDOOM is a port of DOOM to libpayload, based on the doomgeneric source port. It renders the game to the coreboot linear framebuffer, and loads WAD files from CBFS. Tested with QEMU i440fx/q35 and a Dell Latitude E6400 using the libgfxinit provided linear framebuffer. Project page: https://github.com/nic3-14159/coreDOOM Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com> Change-Id: Ice0403b003a4b2717afee585f28303c2f5abea5d Reviewed-on: https://review.coreboot.org/c/coreboot/+/57222 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Paul Menzel <paulepanter@mailbox.org> Reviewed-by: Martin L Roth <gaumless@tutanota.com>
This commit is contained in:
parent
c217f31d0b
commit
8d885577ce
|
@ -165,6 +165,16 @@ config TINT_SECONDARY_PAYLOAD
|
||||||
tint can be loaded as a secondary payload under SeaBIOS, GRUB,
|
tint can be loaded as a secondary payload under SeaBIOS, GRUB,
|
||||||
or any other payload that can load additional payloads.
|
or any other payload that can load additional payloads.
|
||||||
|
|
||||||
|
config COREDOOM_SECONDARY_PAYLOAD
|
||||||
|
bool "Load coreDOOM as a secondary payload"
|
||||||
|
default n
|
||||||
|
depends on ARCH_X86
|
||||||
|
help
|
||||||
|
coreDOOM can be loaded as a secondary payload under SeaBIOS, GRUB,
|
||||||
|
or any other payload that can load additional payloads. Requires a
|
||||||
|
linear framebuffer. If built as a secondary payload for SeaBIOS, the
|
||||||
|
generated VGA BIOS option rom is also required.
|
||||||
|
|
||||||
source "payloads/external/*/Kconfig.secondary"
|
source "payloads/external/*/Kconfig.secondary"
|
||||||
|
|
||||||
endmenu # "Secondary Payloads"
|
endmenu # "Secondary Payloads"
|
||||||
|
|
|
@ -29,6 +29,7 @@ payloads/external/GRUB2 \
|
||||||
payloads/external/LinuxBoot \
|
payloads/external/LinuxBoot \
|
||||||
payloads/external/Yabits \
|
payloads/external/Yabits \
|
||||||
payloads/external/skiboot \
|
payloads/external/skiboot \
|
||||||
|
payloads/external/coreDOOM \
|
||||||
|
|
||||||
force-payload:
|
force-payload:
|
||||||
|
|
||||||
|
|
|
@ -372,3 +372,19 @@ payloads/external/skiboot/build/skiboot.elf:
|
||||||
$(MAKE) -C payloads/external/skiboot all \
|
$(MAKE) -C payloads/external/skiboot all \
|
||||||
CONFIG_SKIBOOT_GIT_REPO=$(CONFIG_SKIBOOT_GIT_REPO) \
|
CONFIG_SKIBOOT_GIT_REPO=$(CONFIG_SKIBOOT_GIT_REPO) \
|
||||||
CONFIG_SKIBOOT_REVISION=$(CONFIG_SKIBOOT_REVISION)
|
CONFIG_SKIBOOT_REVISION=$(CONFIG_SKIBOOT_REVISION)
|
||||||
|
# COREDOOM
|
||||||
|
|
||||||
|
payloads/external/coreDOOM/coredoom/doomgeneric/coredoom.elf coredoom:
|
||||||
|
$(MAKE) -C payloads/external/coreDOOM
|
||||||
|
|
||||||
|
cbfs-files-$(CONFIG_COREDOOM_SECONDARY_PAYLOAD) += img/coreDOOM
|
||||||
|
img/coreDOOM-file := payloads/external/coreDOOM/coredoom/doomgeneric/coredoom.elf
|
||||||
|
img/coreDOOM-type := payload
|
||||||
|
img/coreDOOM-compression := $(CBFS_SECONDARY_PAYLOAD_COMPRESS_FLAG)
|
||||||
|
# WAD file
|
||||||
|
ifneq ($(strip $(CONFIG_COREDOOM_WAD_FILE)),)
|
||||||
|
cbfs-files-y += doom.wad
|
||||||
|
doom.wad-file := $(strip $(CONFIG_COREDOOM_WAD_FILE))
|
||||||
|
doom.wad-type := raw
|
||||||
|
doom.wad-compression := $(CBFS_SECONDARY_PAYLOAD_COMPRESS_FLAG)
|
||||||
|
endif
|
||||||
|
|
|
@ -74,6 +74,7 @@ config SEABIOS_HARDWARE_IRQ
|
||||||
config SEABIOS_VGA_COREBOOT
|
config SEABIOS_VGA_COREBOOT
|
||||||
prompt "Include generated option rom that implements legacy VGA BIOS compatibility"
|
prompt "Include generated option rom that implements legacy VGA BIOS compatibility"
|
||||||
default y if !VENDOR_EMULATION
|
default y if !VENDOR_EMULATION
|
||||||
|
default y if COREDOOM_SECONDARY_PAYLOAD
|
||||||
depends on !VGA_ROM_RUN && (VGA_TEXT_FRAMEBUFFER || LINEAR_FRAMEBUFFER)
|
depends on !VGA_ROM_RUN && (VGA_TEXT_FRAMEBUFFER || LINEAR_FRAMEBUFFER)
|
||||||
bool
|
bool
|
||||||
help
|
help
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
if COREDOOM_SECONDARY_PAYLOAD
|
||||||
|
|
||||||
|
config COREDOOM_WAD_FILE
|
||||||
|
string "DOOM WAD file"
|
||||||
|
depends on COREDOOM_SECONDARY_PAYLOAD
|
||||||
|
default "doom.wad"
|
||||||
|
help
|
||||||
|
Add a WAD file to be loaded by coreDOOM.
|
||||||
|
|
||||||
|
A WAD file contains all the game data for the Doom-engine, and
|
||||||
|
is required to play the game.
|
||||||
|
|
||||||
|
A list of the WAD files included in the official games can be
|
||||||
|
found here: https://doomwiki.org/wiki/IWAD
|
||||||
|
These WADs can be extracted from copies of the game that you
|
||||||
|
own, and the shareware WADs may be freely downloaded from the
|
||||||
|
internet.
|
||||||
|
|
||||||
|
For a completely free (as in freedom) experience, the Freedoom
|
||||||
|
project (https://freedoom.github.io) provides original game
|
||||||
|
content under the BSD license. Other WADs not mentioned here are
|
||||||
|
also available and may be found from various sources such as
|
||||||
|
the internet and copies of other games using the Doom engine.
|
||||||
|
|
||||||
|
endif
|
|
@ -0,0 +1,34 @@
|
||||||
|
## SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
project_git_repo=https://github.com/nic3-14159/coreDOOM.git
|
||||||
|
project_dir=coredoom
|
||||||
|
|
||||||
|
unexport KCONFIG_AUTOHEADER
|
||||||
|
unexport KCONFIG_AUTOCONFIG
|
||||||
|
unexport KCONFIG_DEPENDENCIES
|
||||||
|
unexport KCONFIG_SPLITCONFIG
|
||||||
|
unexport KCONFIG_TRISTATE
|
||||||
|
unexport KCONFIG_NEGATIVES
|
||||||
|
|
||||||
|
all: coredoom
|
||||||
|
|
||||||
|
checkout:
|
||||||
|
test -d coredoom || \
|
||||||
|
git clone $(project_git_repo) $(project_dir)
|
||||||
|
cd $(project_dir) && \
|
||||||
|
git checkout libpayload_port
|
||||||
|
|
||||||
|
coredoom: libpayload
|
||||||
|
$(MAKE) -C $(project_dir)/doomgeneric
|
||||||
|
|
||||||
|
libpayload: checkout
|
||||||
|
cp libpayload-config ../../libpayload/.config && \
|
||||||
|
cd ../../libpayload && $(MAKE) olddefconfig && $(MAKE) && \
|
||||||
|
$(MAKE) DESTDIR=../external/coreDOOM/coredoom/doomgeneric install
|
||||||
|
|
||||||
|
clean:
|
||||||
|
test -d coredoom && $(MAKE) -C coredoom/doomgeneric clean || exit 0
|
||||||
|
|
||||||
|
distclean:
|
||||||
|
rm -rf coredoom
|
||||||
|
|
||||||
|
.PHONY: checkout coredoom clean distclean
|
|
@ -0,0 +1,13 @@
|
||||||
|
# CONFIG_LP_MULTIBOOT is not set
|
||||||
|
CONFIG_LP_HEAP_SIZE=67108864
|
||||||
|
CONFIG_LP_STACK_SIZE=16384
|
||||||
|
CONFIG_LP_BASE_ADDRESS=0x00100000
|
||||||
|
# CONFIG_LP_CURSES is not set
|
||||||
|
CONFIG_LP_SERIAL_IOBASE=0x3f8
|
||||||
|
CONFIG_LP_COREBOOT_VIDEO_CONSOLE=y
|
||||||
|
# CONFIG_LP_PCI is not set
|
||||||
|
# CONFIG_LP_NVRAM is not set
|
||||||
|
CONFIG_LP_TIMER_GENERIC_REG=0x0
|
||||||
|
CONFIG_LP_TIMER_GENERIC_HIGH_REG=0x0
|
||||||
|
# CONFIG_LP_STORAGE is not set
|
||||||
|
# CONFIG_LP_USB_MSC is not set
|
|
@ -421,6 +421,7 @@ config WANT_LINEAR_FRAMEBUFFER
|
||||||
bool
|
bool
|
||||||
default y if CHROMEOS
|
default y if CHROMEOS
|
||||||
default y if PAYLOAD_TIANOCORE
|
default y if PAYLOAD_TIANOCORE
|
||||||
|
default y if COREDOOM_SECONDARY_PAYLOAD
|
||||||
|
|
||||||
choice
|
choice
|
||||||
prompt "Framebuffer mode"
|
prompt "Framebuffer mode"
|
||||||
|
|
Loading…
Reference in New Issue