A FreeDoom fork of DoomHacks port of prBoom to the Nintendo GBA.

Devin f760f41e89 Actually Merge d_main.c 2 years ago
GbaWadUtil 401ba0d6e1 Fix wad compression mistake sorry 2 years ago
include 8b49f3550e Merge remote-tracking branch 'upstream/master' 2 years ago
licenses 276916db33 License info 2 years ago
music 2781a7f99a Fix The newly enabled music 2 years ago
source f760f41e89 Actually Merge d_main.c 2 years ago
.gitignore f760f41e89 Actually Merge d_main.c 2 years ago
CodeProphet.lib 06dbd2f511 More memory savings. 3 years ago
GBADoom.pro 12c4f58cad Code tidy 2 years ago
GBADoomMemory.xlsx 12c4f58cad Code tidy 2 years ago
Makefile 257a8e5874 Add screen wipe segue. 2 years ago
README.md aa3fe99a0b Edits to spelling, grammar, etc 2 years ago
msys2.bat 0b52eb2bac Initial release! 4 years ago

README.md

GBAFreedoom

The Freedoom IWAD was made thanks to the Freedoom team, a free and open-source game based on the Doom engine.

A port of prBoom to the GBA.

This is a result of me, Devin "RetroGamer02", messing around, it works but it's not great. With some help maybe it could be.

What's hot?

  • Supports Freedoom IWAD.

  • Renderer is largely intact. Z-Depth lighting is gone and there is mip-mapping but it's otherwise complete.

  • Monster behaviour is all intact. (i.e. sound propagation etc.)

  • Framerate is pretty variable. Simple areas run at ~35FPS. Complex areas (e.g.: C4M2) chug along at about 10 FPS. It's running around the same as the original GBA Doom I and Doom II ports. Doom I Episodes 1-3 are all completely playable. Episode 4 chugs.

  • Sound and music support. Big thanks to BloodShedder for his Chiptune Doom MOD files.

What's not?

  • My Markdown skills.

  • Demo compatibility is broken.

  • General optimisation. We're never going to get a perfect 35FPS, but I think there is still another 25% left without changing the visual quality/correctness/game behaviour. For reference, the first time I ran a build under the emulator it ran at about 3FPS.

  • Although it is based on prBoom, most of the engine enhancements (DeHackEd, limit removing etc) have been reverted back to vanilla. This is either for memory or performance reasons. Sadly, NUTS.wad and Okuplok are right out!

  • No multiplayer.

KippyKip is maintaining an upstream fork of DoomHacks GBADoom with new features and fixes. KippyKip GBA fork

Cheats:

Chainsaw: L, UP, UP, LEFT, L, SELECT, SELECT, UP
God mode: UP, UP, DOWN, DOWN, LEFT, LEFT, RIGHT, RIGHT
Ammo & Keys: L, LEFT, R, RIGHT, SELECT,UP, SELECT, UP
Ammo: R, R, SELECT,R, SELECT,UP, UP, LEFT
No Clipping: UP, DOWN, LEFT, RIGHT, UP, DOWN, LEFT, RIGHT
Invincibility: A, B, L, R, L, R, SELECT, SELECT
Berserk: B, B, R, UP, A, A, R, B
Invisibility: A, A, SELECT,B, A, SELECT, L, B
Auto-map: L, SELECT,R, B, A, R, L, UP
Lite-Amp Goggles: DOWN,LEFT, R, LEFT, R, L, L, SELECT
Exit Level: LEFT,R, LEFT, L, B, LEFT, RIGHT, A
Enemy Rockets (Goldeneye): A, B, L, R, R, L, B, A
Toggle FPS counter: A, B, L, UP, DOWN, B, LEFT, LEFT

Controls:

Fire: B
Use / Sprint: A
Walk: D-Pad
Strafe: L & R
Automap: SELECT
Weapon up: A + R
Weapon down: A + L
Menu: Start

Building:

To build the GBA version, you will need DevKitArm. The easiest way to get up and running for Windows users is to download the installer from here and install the GBA dev components.

You will also need to use GBAWadUtil, included in the "GBAWadUtil\" directory. Alternatively, download the latest build from the main source Windows (x64) users can download the binary release from the releases page.

1) Download or Clone GBAFreedoom source code. Extract the contents to a folder: (e.g.: C:\DevKitPro\Projects\GBAFreedoom)

2) Use GBAWadUtil to create a header file with the WAD data. Open a command prompt. Type the following: GbaWadUtil.exe -in Freedoom1.wad -cfile Freedoom.wad.c And copy it to the source\\iwad\\ directory. Alternatively, just run the build_XXXX.bat files and it'll create it in the source\iwad\ path.

3) Open C:\DevKitPro\Projects\GBADoom\source\doom_iwad.h in text editor or code editor of your choice. 4) Change the first line to #include "iwad/yourfile.c" e.g. #include "iwad/Freedoom1.c" #include "iwad/Freedoom2.c"

5) Run msys2.bat and type make You may need to edit the msys2.bat with notepad and change the path to go to your real msys2\msys2_shell.bat file within it if it doesn't work.

6) The project should build GBAFreedoom.gba and GBAFreedoom.elf. You may see a lot of warning messages on the screen. These are normal.

7) Copy GBAFreedoom.gba (this is the ROM file) to your flash cart or run in an emulator.

Developers:

For development, this project also builds for Windows with Qt. Use the MingW 32bit version or MSVC 32bit. The .pro file at the root of the source tree can be opened in Qt Creator.