{"id":24059756,"url":"https://github.com/pascalcorpsman/fpc_doom","last_synced_at":"2025-11-21T04:04:31.062Z","repository":{"id":270865939,"uuid":"911651263","full_name":"PascalCorpsman/FPC_DOOM","owner":"PascalCorpsman","description":"FPC Port of DOOM","archived":false,"fork":false,"pushed_at":"2025-08-16T07:23:49.000Z","size":28639,"stargazers_count":20,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-08-16T09:14:17.753Z","etag":null,"topics":["code-port","doom","doom-2","fpc","game","lazarus","retrogaming"],"latest_commit_sha":null,"homepage":"","language":"Pascal","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PascalCorpsman.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"license.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-03T14:20:19.000Z","updated_at":"2025-08-16T07:23:52.000Z","dependencies_parsed_at":"2025-01-03T17:24:24.819Z","dependency_job_id":"f3b12c0a-60c4-4358-b9e7-7c3802df3cb2","html_url":"https://github.com/PascalCorpsman/FPC_DOOM","commit_stats":null,"previous_names":["pascalcorpsman/fpc_doom"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/PascalCorpsman/FPC_DOOM","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PascalCorpsman%2FFPC_DOOM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PascalCorpsman%2FFPC_DOOM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PascalCorpsman%2FFPC_DOOM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PascalCorpsman%2FFPC_DOOM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PascalCorpsman","download_url":"https://codeload.github.com/PascalCorpsman/FPC_DOOM/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PascalCorpsman%2FFPC_DOOM/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285553649,"owners_count":27191359,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-21T02:00:06.175Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["code-port","doom","doom-2","fpc","game","lazarus","retrogaming"],"created_at":"2025-01-09T06:19:11.991Z","updated_at":"2025-11-21T04:04:31.057Z","avatar_url":"https://github.com/PascalCorpsman.png","language":"Pascal","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FPC DOOM\n\nIn this repository i try to port DOOM to Free-Pascal using OpenGL and therefore beeing platform indipendant.\n\n\u003e !! Attention !!\n\u003e \n\u003e This is a work in progress, the game is already playable, but not everything is ported.\n\u003e Its highly recommended to play with debugger and Lazarus-IDE. \n\u003e If you get a \"Port me.\" exception, you reached the end of the actual porting progress.\n\nThe original code was released by [id-Software](https://github.com/id-Software/DOOM) unfortunatunelly \ni was not able to get the code compiled, so i decided to use the \n[crispy-doom](https://github.com/fabiangreffrath/crispy-doom) version as base (as this one directly compiled \nand was able to start and play the .wad files i have had laying around).\n\nAlso i found some usefull documentations that try to explain the code:\n- https://fabiensanglard.net/doomIphone/doomClassicRenderer.php\n- https://doomwiki.org/wiki/Doom_source_code\n- https://doom.fandom.com/wiki/Doom_source_code\n- https://doom.fandom.com/wiki/Doom_source_code_files\n- https://www.youtube.com/watch?v=cqL3jvlU61c\u0026themeRefresh=1\n  \nThere is already a [FPC Doom](https://github.com/jval1972/FPCDoom) on the [List](https://doomwiki.org/wiki/Source_port) of \nports, but that version only supports DirectX and therefore only supports Windows platform.\n\n## What needs to be done to compile the code\n\n- install [Lazarus-IDE](https://www.lazarus-ide.org/)\n- install package LazOpenGLContext (is shipped with lazarus)\n- download [dglOpenGL.pas](https://github.com/saschawillems/dglopengl) and store it in the units folder\n- download [bass](https://www.un4seen.com) and store bass.pas in the units folder\n\n  o Windows users:\n    - copy bass.dll into root folder  \n  \n  o Linux users:\n    - copy libbass.so to /usr/lib \n    - chmod o+r it \n  \n## What needs to be done to play the game\n\n- get a valid .wad file and copy it where the binary is beeing created (or use this [shareware](https://www.doomworld.com/3ddownloads/ports/shareware_doom_iwad.zip) version)\n- read carefull the above hint and see section [progress](#progress)\n- Download and install bass (see [What needs to be done to compile the code](#what-needs-to-be-done-to-compile-the-code))\n- start the application (at best using the Lazarus IDE)\n\n## Lessons learned ?\n\nAs this section is not interesting for everyone i extracted this into a separate section [lessons learned](lessons_learned.md).\nFurthermore 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](doom_vs_lcl.md).\n\n## Difference to other source ports and key mappings\n\nAs 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](differences.md).\n\n## Known Bugs\n- Replaying of demo's does not work because the time is \"glichting\" away during simulation\n- not really a bug, but savegames are not onderstood, thus atm not available.\n\n## Progress:\n\u003c!-- \nHomepage used to create .gif images: https://ezgif.com/maker\n--\u003e\n- got crispy-doom compiled\n- created initial FPC_DOOM Lazarus project\n- (2025.01.03) stored everything on Github\n- able to extract icon from doom_icon.pas\n- w_wad.pas can now \"load\" the .wad file\n- (2025.01.09) able to store \"patches\" when drawn as .bmp files to harddisc, very first extracted image \"M_DOOM\" ![](documentation/doom.png)\n- (2025.01.10) activate OpenGL Rendering default upscale = 2 ![](documentation/first_app_rendering.png)\n- (2025.01.12) integrate keyboard event loop and main menu with quit button ![](documentation/Menu_first.gif)\n- (2025.01.13) finish part of menues necessary to actually start a game ![](documentation/Menu_til_start.gif)\n- (2025.01.20) finish wipe function ![](documentation/wipe.gif)\n- (2025.01.22) able to create very first screenrendering ![](documentation/very_first_screenrender.png) \u003cbr\u003e still missing flats..\n- (2025.01.23) finally was able to enable flats ![](documentation/with_flats.png)\n- (2025.01.24) add ability to rotate player, lets take a shy look around ;) ![](documentation/rotate.gif)\n- (2025.01.25) enable sprite rendering ![](documentation/sprites.png)\n- (2025.01.26) give the player a weapon ![](documentation/raise_pistol.gif) \u003cbr\u003e still not able to shoot or move :(\n- (2025.01.28) enable \"normal\" map preview ![](documentation/am_map_normal.gif)\n- (2025.01.29) enable am map cheats, and finished am functions ![](documentation/am_map_finished.gif)\n- (2025.01.30) enable forward walking and falling ![](documentation/walking.gif) \u003cbr\u003e still no strafe / clipping or interaction with the map\n- (2025.02.01) enable interaction with doors ![](documentation/open_door.gif)\n- (2025.02.03) able to shoot barrels ![](documentation/shoot_barrel.gif)\n- (2025.02.05) First version of .wad viewer ![](documentation/WAD_Viewer_001.png)\n- (2025.02.06) enable SFX engine [Video](documentation/DOOM_Sound.mp4)\n- (2025.02.08) reached finish screen of level 1 ![](documentation/Hanger_Finished.gif)\n- (2025.02.09) reached level 2 ![](documentation/e1m2.png) \u003cbr\u003e still no HUD and not all secrets in level 1 possible\n- (2025.02.11) finally ported everything to play e1m1 with 100% (kills, items, secret) without using cheat codes ![](documentation/e1m1_100.png)\n- (2025.02.12) enable HUD ![](documentation/HUD.png) \u003cbr\u003e mapsize not yet scaleable\n- (2025.02.18) enable \"invisible\" drawing ![](documentation/invisible.png)\n- (2025.02.28) reached finish screen ![](documentation/finish_screen.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpascalcorpsman%2Ffpc_doom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpascalcorpsman%2Ffpc_doom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpascalcorpsman%2Ffpc_doom/lists"}