unleashed-firmware/applications/plugins/doom
MX 28eb4d1060
Massive plugins refactoring
Not full refactoring, only small issues is fixed and moved all plugins to furi mutex instead of valuemutex

Many small issues was found and fixed due mutex upgrade

OFW removed 60 lines of code and it was painful
2023-03-08 00:18:23 +03:00
..
assets add new start screen for doom 2022-09-16 01:54:17 +03:00
compiled add new start screen for doom 2022-09-16 01:54:17 +03:00
application.fam rename apps to make it look a bit better in Apps tab in archive app 2022-09-29 08:20:00 +03:00
constants.h add some games, make DOOM somewhat playable 2022-09-15 04:42:17 +03:00
display.h add some games, make DOOM somewhat playable 2022-09-15 04:42:17 +03:00
doom.c Massive plugins refactoring 2023-03-08 00:18:23 +03:00
doom_10px.png fix nrfsniff log spam, add new icons 2022-09-15 18:27:27 +03:00
doom_music_player_worker.c Merge branch 'fz-dev' into dev 2022-12-17 07:25:49 +03:00
doom_music_player_worker.h add some games, make DOOM somewhat playable 2022-09-15 04:42:17 +03:00
entities.c add some games, make DOOM somewhat playable 2022-09-15 04:42:17 +03:00
entities.h add some games, make DOOM somewhat playable 2022-09-15 04:42:17 +03:00
level.h add some games, make DOOM somewhat playable 2022-09-15 04:42:17 +03:00
README.md add new start screen for doom 2022-09-16 01:54:17 +03:00
sound.h oh no 2022-10-05 21:27:13 +03:00
types.c add some games, make DOOM somewhat playable 2022-09-15 04:42:17 +03:00
types.h add some games, make DOOM somewhat playable 2022-09-15 04:42:17 +03:00

Doom Flipper Zero edition

Will it run Doom?

As tradition goes, Doom is being ported to almost every possible embedded electronic device. Therefore I did an attempt to come up with something close to Doom and still compatible on the Flipper Zero's hardware.
This is not the actual Doom game but a port made from yet another Doom port to the Arduino Nano (https://github.com/daveruiz/doom-nano/). This port is basically a raycasting engine, using Doom sprites.
This version is very basic and might be improved over time.

How to install on Flipper Zero

During the porting process, minor changes were made to the workings (and build options) of the current firmware. These changes are documented here and are necessary in order to get a working firmware build that contains this Doom port.

Modifying the firmware & build options

  • In the sites/cc.scons add the following values to the CCFLAGS section:
...
"-Wno-unused-parameter",
"-Wno-type-limits",
"-Wno-unused-variable",
...
  • In applications/gui/canvas_i.h comment out the following line:
    uint8_t* canvas_get_buffer(Canvas* canvas); --> //uint8_t* canvas_get_buffer(Canvas* canvas);

  • In applications/gui/canvas.h add the following lines:

uint8_t* canvas_get_buffer(Canvas* canvas);
void canvas_draw_icon_bitmap(Canvas* canvas, uint8_t x, uint8_t y, int16_t w, int16_t h, const Icon* icon);
  • In applications/gui/canvas.c add the following function:
void canvas_draw_icon_bitmap(Canvas* canvas, uint8_t x, uint8_t y, int16_t w, int16_t h, const Icon* icon){
    furi_assert(canvas);
    furi_assert(icon);

    x += canvas->offset_x;
    y += canvas->offset_y;
    uint8_t* icon_data = NULL;
    furi_hal_compress_icon_decode(icon_get_data(icon), &icon_data);
    u8g2_DrawXBM(&canvas->fb, x, y, w, h, icon_data);
}

Installing the plugin in the firmware

  • Make a folder called Doom in the applications folder. Add all the source files (also the compiled folder and it's files) in the Doom folder.
  • Make the applications/meta/application.fam look like the following:
App(
    appid="basic_plugins",
    name="Basic applications for plug-in menu",
    apptype=FlipperAppType.METAPACKAGE,
    provides=[
        ...
        "doom_game",
        ...

    ],
)

If all went well the only thing left to do is building the firmware and installing it to the Flipper.

Screenshots

Intro screen

Start screen

Imp

Medkit