diff --git a/modules/doom/.gitignore b/modules/doom/.gitignore new file mode 100644 index 0000000..28b6195 --- /dev/null +++ b/modules/doom/.gitignore @@ -0,0 +1,2 @@ +PureDOOM.h +*.wad \ No newline at end of file diff --git a/modules/doom/build.sh b/modules/doom/build.sh new file mode 100644 index 0000000..f734441 --- /dev/null +++ b/modules/doom/build.sh @@ -0,0 +1,20 @@ +#/bin/sh +echo "Название: DOOM" +echo "Лицензия: Публичное достояние" + +CC=${CC:-gcc} +ARCH_FLAGS="-fno-stack-protector -ffreestanding -O0 -g -fPIC -static -nostdlib " + +if [ -d "../../sdk" ]; then + CC="../../sdk/bin/x86_64-elf-gcc" +fi + +wget https://github.com/Daivuk/PureDOOM/raw/refs/heads/master/PureDOOM.h +wget https://github.com/Daivuk/PureDOOM/raw/refs/heads/master/doom1.wad + +$CC $ARCH_FLAGS -I../../modlib -finput-charset=UTF-8 -fexec-charset=cp1251 -c main.c -o doom.o +$CC $ARCH_FLAGS -Wl,--entry=init,--build-id=none -T ../link.ld doom.o -L../../modlib/lib/ -lmod -o doom.ko + +cp doom.ko ../bin/ +cp doom1.wad ../bin/ +echo "Сборка завершена, файл: doom.ko" diff --git a/modules/doom/main.c b/modules/doom/main.c new file mode 100644 index 0000000..b37c8d3 --- /dev/null +++ b/modules/doom/main.c @@ -0,0 +1,27 @@ +#include "PureDOOM.h" +#include + +static const char name[] = "[APP]DOOM"; +static const char message[] = "DOOM :)"; + +static int app_main( ) { + log_printf("[%s]\n", message); + return 2 + 2; +} + +void __attribute__((section(".minit"))) init(env_t *env) { + init_env(env); + env->ret = &((module_info_t){ .name = (char *)&name, + .message = (char *)&message, + .type = 0, + .data_size = 0, + .data = (void *)&app_main, + .err_code = 0, + .module_id = 0, + .irq = 0, + .irq_handler = 0, + .get_func = 0, + .after_init = 0 }); + mod_update_info(env); + delete_thread( ); +}