Skip to content

PascalCorpsman/FPC_DOOM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FPC DOOM

In this repository i try to port DOOM to Free-Pascal using OpenGL and therefore beeing platform indipendant.

!! Attention !!

This is a work in progress, the game is already playable, but not everything is ported. Its highly recommended to play with debugger and Lazarus-IDE. If you get a "Port me." exception, you reached the end of the actual porting progress.

The original code was released by id-Software unfortunatunelly i was not able to get the code compiled, so i decided to use the crispy-doom version as base (as this one directly compiled and was able to start and play the .wad files i have had laying around).

Also i found some usefull documentations that try to explain the code:

There is already a FPC Doom on the List of ports, but that version only supports DirectX and therefore only supports Windows platform.

What needs to be done to compile the code

  • install Lazarus-IDE

  • install package LazOpenGLContext (is shipped with lazarus)

  • download dglOpenGL.pas and store it in the units folder

  • download bass and store bass.pas in the units folder

    o Windows users:

    • copy bass.dll into root folder

    o Linux users:

    • copy libbass.so to /usr/lib
    • chmod o+r it

What needs to be done to play the game

Lessons learned ?

As this section is not interesting for everyone i extracted this into a separate section lessons learned. Furthermore there are some special points when porting a "old" DOS application to a modern "Linux/Windows" application, which i handle in the section DOOM vs. LCL.

Difference to other source ports and key mappings

As i am not doing a 100% source port but more a port for me and my education (or personal needs), FPC DOOM will not be like Vanilla DOOM and even not like Crispy DOOM. To See the differences look here.

Known Bugs

  • Replaying of demo's does not work because the time is "glichting" away during simulation
  • not really a bug, but savegames are not onderstood, thus atm not available.

Progress:

  • got crispy-doom compiled
  • created initial FPC_DOOM Lazarus project
  • (2025.01.03) stored everything on Github
  • able to extract icon from doom_icon.pas
  • w_wad.pas can now "load" the .wad file
  • (2025.01.09) able to store "patches" when drawn as .bmp files to harddisc, very first extracted image "M_DOOM"
  • (2025.01.10) activate OpenGL Rendering default upscale = 2
  • (2025.01.12) integrate keyboard event loop and main menu with quit button
  • (2025.01.13) finish part of menues necessary to actually start a game
  • (2025.01.20) finish wipe function
  • (2025.01.22) able to create very first screenrendering
    still missing flats..
  • (2025.01.23) finally was able to enable flats
  • (2025.01.24) add ability to rotate player, lets take a shy look around ;)
  • (2025.01.25) enable sprite rendering
  • (2025.01.26) give the player a weapon
    still not able to shoot or move :(
  • (2025.01.28) enable "normal" map preview
  • (2025.01.29) enable am map cheats, and finished am functions
  • (2025.01.30) enable forward walking and falling
    still no strafe / clipping or interaction with the map
  • (2025.02.01) enable interaction with doors
  • (2025.02.03) able to shoot barrels
  • (2025.02.05) First version of .wad viewer
  • (2025.02.06) enable SFX engine Video
  • (2025.02.08) reached finish screen of level 1
  • (2025.02.09) reached level 2
    still no HUD and not all secrets in level 1 possible
  • (2025.02.11) finally ported everything to play e1m1 with 100% (kills, items, secret) without using cheat codes
  • (2025.02.12) enable HUD
    mapsize not yet scaleable
  • (2025.02.18) enable "invisible" drawing
  • (2025.02.28) reached finish screen

Releases

No releases published

Packages

No packages published

Languages