doomgeneric
doom-sokol
doomgeneric | doom-sokol | |
---|---|---|
19 | 4 | |
1,068 | 44 | |
- | - | |
6.9 | 4.5 | |
8 days ago | 2 months ago | |
C | C | |
GNU General Public License v3.0 only | GNU General Public License v3.0 only |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
doomgeneric
-
Doom-htop: The classic DOOM game over htop
But as was written somewhere else in the comments and as I wrote myself in the README, the hard work of making Doom more portable was done by the incredible project doom-generic which I forked: https://github.com/ozkl/doomgeneric
- What functions need to be changed when porting?
- Doomgeneric: Make porting Doom easier
- Doomgeneric: Make Porting Doom Easier
-
Retrogame INSIDE a Godot game?
It can surely be implemented with a GDNative add-on (3.x) or GDExtension (4.0). Someone on the Godot Contributors Chat is looking into integrating doomgeneric with GDNative, so you can play Doom within Godot :)
-
Just picked these up from sams club, I will try to get Doom running on it
You also could alternatively start from https://github.com/ozkl/doomgeneric and all you'd have to do is feed it functions for drawing to the display and getting inputand
-
Is there a way i can convert DooM it to lua?
Another alternative is to compile Doom to an intermediate representation and a corresponding virtual machine in Lua. Then you build something like https://github.com/ozkl/doomgeneric where you only need to implement a handful of platform specific functions.
doom-sokol
-
Let's compile like it's 1992
Doom is actually quite easy to build because the source code is already structured to keep the platform-specific parts isolated (Doom was developed on NeXT workstations and then 'downported' to DOS.
For instance here's my WASM port of the Doom shareware version. This is a fork of doomgeneric, which itself is a fork of fbDoom - but midway through I noticed that all the abstractions added by fbDoom and doomgeneric are actually not very helpful for a WASM port that should run in browsers, and that I probably would have been better off forking the original source instead):
Github repo: https://github.com/floooh/doom-sokol
Hosted version: https://floooh.github.io/doom-sokol/
-
WASM Instructions
Here are a couple of real-world examples, these are all C/C++ code bases which run across Linux, macOS, Windows, iOS, Android and in browsers without porting:
Home computer emulators: https://floooh.github.io/tiny8bit/
CPU simulators for Z80 and 6502:
https://floooh.github.io/visualz80remix/
https://floooh.github.io/visual6502remix/
The shareware version of Doom:
https://floooh.github.io/doom-sokol/
Samples for the cross-platform libraries this stuff is built on top: https://floooh.github.io/sokol-html5/
WASM (and asm.js before it) turn the web into "just another platform" for cross-platform code bases written in any language that can compile to WASM, and that's pretty great.
-
Doomgeneric: Make Porting Doom Easier
I started my WASM DOOM port (https://floooh.github.io/doom-sokol/) from doomgeneric which was helpful at first, but since I had to 'slice' the various modal loops in Doom in order to make it work in a frame-callback app model it wasn't all that helpful in the end unfortunately.
My porting notes for anyone interested: https://github.com/floooh/doom-sokol#porting-notes
What are some alternatives?
esp32-doom - A proof-of-concept port of PrBoom to the ESP32. Needs psram hardware.
wasm4 - Build retro games using WebAssembly for a fantasy console.
Craft - A simple Minecraft clone written in C using modern OpenGL (shaders).
DOOM - DOOM Open Source Release
bareDOOM - DOOM ported to run within the barebox bootloader
TI-84-CE-DooM - A version of DooM for the TI-84 CE written in C.
nanoprintf - The smallest public printf implementation for its feature set.
MicroPython - MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems
crispy-doom - Crispy Doom is a limit-removing enhanced-resolution Doom source port based on Chocolate Doom.
st7789_mpy - Fast MicroPython driver for ST7789 display module written in C
coreDOOM - Doomgeneric port as a coreboot payload, using libpayload
doom-tidal - DOOM for the #emfcamp TiDAL badge :)