Doom - Mayhem Edition (#2570)

* Doom - Mini Mayhem version

* Update ui_doom.cpp

* Update ui_doom.cpp

* Update ui_doom.cpp

* Update ui_doom.cpp

* Update ui_doom.cpp

* Update ui_doom.cpp

* Update ui_doom.cpp

* Update ui_doom.cpp

* Doom - Mayhem Edition

Made the Doom - Mayhem Edition game. Some little bugs but good enough for nightly.

* Code formatting. Forgot like always.

* give more initial ammo until i put ammo around the maze to collect
This commit is contained in:
RocketGod 2025-03-18 23:16:12 -07:00 committed by GitHub
parent 4aa5fc1fbe
commit 40cf2b3f8c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 1397 additions and 0 deletions

View file

@ -0,0 +1,29 @@
/*
* Copyright (C) 2024 Mark Thompson
*
* This file is part of PortaPack.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street,
* Boston, MA 02110-1301, USA.
*/
// dummy include file to avoid changing original source
#ifndef __UI_Arial12x12_H__
#define __UI_Arial12x12_H__
#define Arial12x12 (0)
#endif /*__UI_Arial12x12_H__*/

View file

@ -0,0 +1,30 @@
#ifndef __UI_SPI_TFT_ILI9341_H__
#define __UI_SPI_TFT_ILI9341_H__
ui::Painter painter;
enum {
White,
Blue,
Yellow,
Purple,
Green,
Red,
Maroon,
Orange,
Black,
};
static const Color pp_colors[] = {
Color::white(),
Color::blue(),
Color::yellow(),
Color::purple(),
Color::green(),
Color::red(),
Color::magenta(),
Color::orange(),
Color::black(),
};
#endif /*__UI_SPI_TFT_ILI9341_H__*/

View file

@ -0,0 +1,67 @@
/*
* ------------------------------------------------------------
* | Made by RocketGod |
* | Find me at https://betaskynet.com |
* | Argh matey! |
* ------------------------------------------------------------
*/
#include "ui_doom.hpp"
#include "ui_navigation.hpp"
#include "external_app.hpp"
namespace ui::external_app::doom {
void initialize_app(ui::NavigationView& nav) {
nav.push<DoomView>();
}
} // namespace ui::external_app::doom
extern "C" {
__attribute__((section(".external_app.app_doom.application_information"), used)) application_information_t _application_information_doom = {
(uint8_t*)0x00000000,
ui::external_app::doom::initialize_app,
CURRENT_HEADER_VERSION,
VERSION_MD5,
"Doom",
{
0x00,
0x00,
0x00,
0x00,
0x27,
0xDA,
0x59,
0xAD,
0x89,
0xA8,
0x89,
0xA8,
0x89,
0xA8,
0x89,
0x88,
0x89,
0x88,
0x89,
0x88,
0x59,
0x8D,
0x29,
0x8A,
0x05,
0x80,
0x03,
0x80,
0x00,
0x00,
0x00,
0x00,
},
ui::Color::red().v,
app_location_t::GAMES,
-1,
{0, 0, 0, 0},
0x00000000,
};
}

View file

@ -0,0 +1,81 @@
#ifndef __UI_mbed_H__
#define __UI_mbed_H__
using Callback = void (*)(void);
#define wait_us(x) (void)0
#define wait(x) chThdSleepMilliseconds(x * 1000)
#define PullUp 1
#include "ui_navigation.hpp"
enum {
dp0,
dp1,
dp2,
dp3,
dp4,
dp5,
dp6,
dp7,
dp8,
dp9,
dp10,
dp11,
dp12,
dp13,
dp14,
dp15,
dp16,
dp17,
dp18,
dp19,
dp20,
dp21,
dp22,
dp23,
dp24,
dp25,
};
class Timer {
public:
Timer() { (void)0; };
void reset() { (void)0; };
void start() { (void)0; }
uint32_t read_ms() { return 1000; };
private:
};
static Callback game_update_callback;
static uint32_t game_update_timeout;
class Ticker {
public:
Ticker() { (void)0; };
void attach(Callback func, double delay_sec) {
game_update_callback = func;
game_update_timeout = delay_sec * 60;
}
void detach() {
game_update_callback = nullptr;
}
private:
};
static Callback button_callback;
class InterruptIn {
public:
InterruptIn(int reg) {
(void)reg;
};
void fall(Callback func) { button_callback = func; };
void mode(int v) { (void)v; };
private:
};
#endif /*__UI_mbed_H__*/

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,42 @@
/*
* ------------------------------------------------------------
* | Made by RocketGod |
* | Find me at https://betaskynet.com |
* | Argh matey! |
* ------------------------------------------------------------
*/
#ifndef __UI_DOOM_H__
#define __UI_DOOM_H__
#include "ui_widget.hpp"
#include "ui_navigation.hpp"
#include "message.hpp"
namespace ui::external_app::doom {
class DoomView : public View {
public:
DoomView(NavigationView& nav);
void on_show() override;
std::string title() const override { return "Doom"; }
void focus() override { dummy.focus(); }
void paint(Painter& painter) override;
void frame_sync();
bool on_key(const KeyEvent key) override;
private:
NavigationView& nav_;
Button dummy{{240, 0, 0, 0}, ""};
bool initialized{false};
bool prev_velocity_moving{false};
MessageHandlerRegistration message_handler_frame_sync{
Message::ID::DisplayFrameSync,
[this](const Message* const) {
this->frame_sync();
}};
};
} // namespace ui::external_app::doom
#endif /*__UI_DOOM_H__*/

View file

@ -8,6 +8,9 @@ set(EXTCPPSRC
external/breakout/main.cpp external/breakout/main.cpp
external/breakout/ui_breakout.cpp external/breakout/ui_breakout.cpp
#doom
external/doom/main.cpp
external/doom/ui_doom.cpp
#snake #snake
external/snake/main.cpp external/snake/main.cpp
external/snake/ui_snake.cpp external/snake/ui_snake.cpp
@ -205,6 +208,7 @@ set(EXTAPPLIST
keyfob keyfob
tetris tetris
breakout breakout
doom
snake snake
extsensors extsensors
foxhunt_rx foxhunt_rx

View file

@ -38,6 +38,8 @@ MEMORY
ram_external_app_keyfob(rwx) : org = 0xADBD0000, len = 32k ram_external_app_keyfob(rwx) : org = 0xADBD0000, len = 32k
ram_external_app_tetris(rwx) : org = 0xADBE0000, len = 32k ram_external_app_tetris(rwx) : org = 0xADBE0000, len = 32k
ram_external_app_extsensors(rwx) : org = 0xADBF0000, len = 32k ram_external_app_extsensors(rwx) : org = 0xADBF0000, len = 32k
ram_external_app_breakout(rwx) : org = 0xADE00000, len = 32k
ram_external_app_doom(rwx) : org = 0xADE20000, len = 32k
ram_external_app_foxhunt_rx(rwx) : org = 0xADC00000, len = 32k ram_external_app_foxhunt_rx(rwx) : org = 0xADC00000, len = 32k
ram_external_app_audio_test(rwx) : org = 0xADC10000, len = 32k ram_external_app_audio_test(rwx) : org = 0xADC10000, len = 32k
ram_external_app_wardrivemap(rwx) : org = 0xADC20000, len = 32k ram_external_app_wardrivemap(rwx) : org = 0xADC20000, len = 32k
@ -168,6 +170,12 @@ SECTIONS
*(*ui*external_app*snake*); *(*ui*external_app*snake*);
} > ram_external_app_snake } > ram_external_app_snake
.external_app_doom : ALIGN(4) SUBALIGN(4)
{
KEEP(*(.external_app.app_doom.application_information));
*(*ui*external_app*doom*);
} > ram_external_app_doom
.external_app_extsensors : ALIGN(4) SUBALIGN(4) .external_app_extsensors : ALIGN(4) SUBALIGN(4)
{ {
KEEP(*(.external_app.app_extsensors.application_information)); KEEP(*(.external_app.app_extsensors.application_information));