Jump to content
Search In
  • More options...
Find results that contain...
Find results in...


  • Content count

  • Joined

  • Last visited

Everything posted by jval

  1. FPCDoom is a source port of Doom developed in Free Pascal / Lazarus. Downloads: version ( November 12, 2019 - source code tested with Lazarus 1.6.2 and 2.0.4 ) version ( October 29, 2019 - source code tested with Lazarus 1.6.2 and 2.0.4 ) version ( January 28, 2018 - source code tested with Lazarus 1.6.2 and 1.8 ) version ( January 14, 2018 - source code tested with Lazarus 1.6.2 and 1.8 ) Source code repository https://github.com/jval1972/FPCDoom Features: High screen resolutions with accurate software rendering True color output with optional usage of external textures (pk3 files containing png, tga or bmp images) Mirror mode with demo compatibility Palette post processing effects (grayscale & standard palettes) Multiple CPU cores utilization Uncapped framerate Automap rotation and overlay DEH/BEX support Raised vanilla static limits The purpose of the project: Provide a solid code-base of Doom in the popular (among Pascal programmers) Free Pascal Compiler. Demonstrate a minimalistic true color software renderer without the complexity of it's bigger brother (DelphiDoom). Fix bugs of vanilla source code.
  2. Thank you for your feedback! @kaleb. I will work next days on screen resolution/performance issues. In fact I had done some test on stretching a low-res screen on full/native screen resolution, but the results were not as expected (maybe performance problem with the built-in Intel GPU). I'm thinking of an extra option that will change the render quality, similar to vanilla low-res and will be probably implemented in next release. If your fps is low (e.g. lower that 60) you could benefit from turning off the uncapped frame-rate from the "Options/Display/Advanced/Uncapped frame-rate" menu item. This also could eliminate the mouse lag you've noticed. Current development and tests are performed in 4c/4t & 4c/8t CPUs. I have access to 2c/4t (like g4560) and 2c/2t CPUs and I will perform some tests to tune the multi-core rendering also. Medium 8bit detail is not much benefit compared to 32bit according to my tests. Post-processing effects like gray-scale mode & palette reduction (Options/Display/Colors menu) and mirror mode (Options/Display/Advanced menu) could also affect performance, especially if you enable more than one of these at the same time. @okbuddy Currently disk loading icon can not be turned off, I'll put an option to the next release. Indeed, due to a naive error, the mouse x/y sensitivities are not saved correctly to the defaults file. This has been already corrected to the git repository, so there will be no problem in future releases. For aspect ratio there are the "Options/Display/Advanced/Widescreen Support" and "Options/Display/Advanced/Player Sprites Stretch" menu commands. You can also use the "forcedaspect" console command (press "~" to activate the console). With this command you can force the aspect ratio to be in range from 1.0 to 2.0 (float values). Nice to mention this, I'll make a separate sub-menu that will encapsulate, in a user-friendly way, all the settings and probably enrich the options with more parameters (e.g. HUD aspect, intermission screen aspect etc). I can make some presets for the full-screen HUD, or even add some config options (eg show ammo/armor/keys). Currently 2560x1440 resolution is not supported. Maximum width and height resolution is 2048x1536. I suppose that in 2560x1440 the engine "goes" at 2048x1440 resolution. I'll raise the limits to 4K resolution, but I don't have access to a monitor with resolution higher than 1920x1080 to make some tests. But just with raising the upper static limits should work with no problem, since the engine already use, in critical tasks, 64 bit integer or even floating point arithmetic to correct fixed point artifacts in high resolutions.
  3. Version (Updated Nov 12, 2019) is available.  FPCDoom is a source port of Doom developed in Free Pascal / Lazarus. Donwloads: Executable: https://sourceforge.net/projects/fpcdoom/files/FPCDoom_1.12.2.100/FPCDoom_1.12.2.100_bin.zip/download Source code: https://sourceforge.net/projects/fpcdoom/files/FPCDoom_1.12.2.100/FPCDoom_1.12.2.100_src.zip/download Source code Repository: https://github.com/jval1972/FPCDoom  New features since latest release: Rendering Speed optimizations to the light effects code. This achieved, mostly, by complete changing the depth-buffer code (also new source file r_zbuffer.pas, replaced the old r_depthbuffer.pas). The new method gives depth buffer accuracy for every pixel without the overwhelming for the CPU & memory method of processing each pixel. Instead it keeps an elegant structure built by spanfuncs & colfuncs. For example at 1920x1080 full-hd resolution, the previous method had to process 1920x1080x12 =~ 23 MB (!) at each rendering frame at maximum accuracy. Now we only need to process a couple of huntrend KBs. Change screen resolution from the menu (Options/Display/Detail) File paths Support for DOOMWADPATH (besides DOOMWADDIR) enviroment variable. Search for installed games to the Steam folder for WADs. Screenshots Screenshots now are saved in png format by default. We can change the format to bmp from the menu (Options/System/Screenshot format) Automap Fixed automap grid rotation. Grid on/off can now be enabled from the menu (Options/Display/Automap) and will be preserved in the defaults file. Fixed problem with automap overlay when changed from the menu. Doom Engine Removed limit on intercepts. Now intercepts are allocated dynamically. Fixed the "stairs create unknown sector types" bug (https://doomwiki.org/wiki/Stairs_create_unknown_sector_types) Preserve target & tracer in saved games. Added loadtracerfromsavedgame & loadtargetfromsavedgame console variables (BOOL). We can enable or disable this feature from the menu (Menu/compatibility). Note that disabling affects only the load game procedure, it will still save both target & tracer while saving a game. New wipe styles Fade - Fades the screen (like strife) Slide down - Slides the old screen down. Fizzle - This effect originates at Wolf3d, code adapted from Fabien Sanglard's Website You can change the wipe style from the menu (Options/Display/Appearence) and the setting will be preserved in the defaults file. Menu Mouse sensitivity removed from Options/General and moved along with individual x-axis & y-axis sensitivity to a new sub-menu under Options/Controls/Mouse sensitivity
  4. jval

    Eternity uncapped framerate issue

    I have the same problem with DelphiDoom. It can be corrected by setting off the interpolate flag of the sectors with tags 1000..1011 in your example. Maybe there is a similar method with Eternity. This is the fix for DelphiDoom: rottest_dd_fix.zip
  5. jval

    Eureka with OpenGL, please test

    A minor issue I've noticed: When you open from the same IWAD another map (File/Open Map), the caption on main window displays the previous map. OS: Windows 7 professional SP1.
  6. TGA can be uncompressed. If you convert them to PNG they will occupy less storage without loosing quality. Also TGA images can also be compressed & uncrompressed.
  7. In DelphiDoom there is an option at 32 bit software rendering that emulates colomaps. For Boom effects like 242 deep water I calculate the difference that the custom colormap does for each standard palette entries, and then calculate the 32bit texture (dc_source & ds_source equivalents of the clasic 8 bit renderer) applying to the source the difference that the colormap makes to it's nearest palette entry. During the process the 32bit source texture is reduced to 15 bits depth (for performance and memory usage purposes).
  8. DelphiDoom 2.0 has been released. Notable new features Sloped floors and ceilings 3d Middle Floors (currently only one per sector) Advanced PascalScript to customize levels and actors Ladder special Support for V5 glnodes Teleport zoom effect Per individual actor dropitems More accurate fake3d effect Long filename aliases inside WADs (using PK3ENTRY) Support for HI_START & HI_END namespace inside PWADs New Tools DelphiDoom Script IDE (DD_IDE.exe) PascalScript command line compiler (ddc.exe) Downloads https://sourceforge.net/projects/delphidoom/files/DelphiDoom%202.0.4/ Editing Examples Custom Actors using ACTORDEF scripting - download Simple 3d Floor - download Floating Sectors - download Mahjong game - download Custom dropitem - download DLL function call within PascalScript - download Slopes and ladder - download Script DLL inside WAD - donwload Procedural Models (Created with DD_MODEL tool) - download Sprites with 32 rotations (Created with DD_VOXEL tool) - download OpenGL model rendering using external DLL - download THINKER keyword - download Configuration files for DoomBuilder can be downloaded here. Acknowledgements/Thanks idSoftware for Doom Raven for Heretic & Hexen source code TeamTNT for BOOM Entryway for PrBoom-Plus (base for the OpenGL renderer) Andrew J. Apted for glbsp Randy Heit and Graf Zahl for zDoom (always inspiring) Fraggle, Quasar & Kaiser for Chocolate Strife RemObjects for PascalScript Angus Johnson for Bala Vatti's clipping algorithm Gertjan Schouten for image library Screenshots
  9. Thanks! Aside of the "General/Mouse sensitivity" menu item there are also the "Contols/Mouse x axis sensitivity" & "Controls/Mouse y axis sensitivity". I'll group them under a new menu in next release.
  10. Caching lightmaps to a texture is somehow something that already the engine does, it uses precalculated texture with light intensity information and during draw adds the color (which can dynamically change to another color). GL-nodes are not necessary since the depthbuffer structure can hold information about floor and ceilings (actually the depthbuffer holds information about segs in screen space, so null segs are floors/ceilings). I'm currently working on speed optimizations. I'm focusing on a solution of variable depthbuffer resolution depending on screen content (only columns that are created from masked mid textures and have gaps must be calculated on a per column basis, plus screen columns that have more that one segs present). As a bonus this method also eliminates artifacts on low resolution. Also I've realized that the lighmap is pointless to be calculated for each pixel, since the engine will use dephtbuffer to do the appropriate adjustments. A new version will come soon with good speed optimizations.
  11. jval

    What is the first fps game you have played?

    Wolf3d dos (1992)
  12. Such an approach will work only with point-lights with unmovable, indestructible and unpickable parent mobjs, that casts in a static wall or floor. Will not work for pulse or flicker lights, movable floor/ceilings/doors/stairs etc This could be a good approach for wall/enviroment lights without a "parent" mobj. Lightmaps is a (precalculated) structure that adds illumination content to a scene. This is a good solution for static light sources. This is the lightmap: This is the scene without lights: This is the scene with lights:
  13. It's indeed very CPU hungry, especially in high accuracy modes. Using multiple cpu cores offsets the fps-drop in low and medium lightmap accuracy. I'm currently exploring possibilities to speed up the procedure on high accurasy modes. I'm focusing on finding a working solution that has variable accuracy depending on screen content.
  14. Thanks! The first clipping is performed using the R_PointOnSegSide for each seg in the screen space the light occupy. The second clipping and the and the blend factor (strength of the effect) are calculated using z-buffer values. There are 4 different lightmap quality settings: Low (Lightmap is calculated at 5x5 squares in screen space and depthbuffer in 1x5 rects in screen space) Medium (Lightmap is calculated at 3x3 squares in screen space and depthbuffer in 1x3 rects in screen space) High (Lightmap is calculated for each pixel in screen space and depthbuffer in 1x2 rects in screen space) Very high and very slow (Lightmap and depth buffer are calculated for each pixel in screen space plus render lights on masked mid textures with accurate clipping) Unfortunatelly this method needs lightmap and depth buffer to be calculated for each pixel in screen to avoid artifacts on masked mid textures.
  15. To compile on Linux all the system specific calls (located at d_fpc.pas and i_xxxx.pas units) must be replaced with Linux equivelants (or maybe use SDL for multi-platform compile ?). At the moment I don't even have access to a Linux enviroment (I don't know if running Linux on virtual machine will provide an appropriate solution). I'll try to get Lazarus in Linux and make some efforts to this direction . I've uploaded the repository at https://github.com/jval1972/FPCDoom
  16. Thanks fabian! The dynamic lights are defined inside LIGHTDEF lump at FPCDoom.wad. It's the same definition that DelphiDoom uses in OpenGL mode for lightmap, and originates at the light definitions of an old version of (G)ZDoom. Each dynamic light affects one or more sprites and it is strictly emitted by a map object (mobj). There are not dynamic lights without a parent mobj. The parameters of a dynamic light are: type of light (point, flicker, pulse) color1 & color2 (r,g,b) - change the color from color1 to color2 depending on color interval offset1 & offset2 (x,y,z) - change randomly offset from offset1 to offset2 size1 & size2 - change size from size1 to size2 depending on size interval In each frame we calculate the color, offset and size parameters of each dynamic light that will be (possibly) rendered. The rendering has various steps, as described below. The actual step order may not in that particular order, but it's easier to visualize them this way: Step 1 - Calculate the shape of the light Step 2 - Calculate the color of the light Step 3 - Blending the light with background - no clipping so far. Step 4 - Clip the lights Step 5 - Use depthbuffer information to change the strength of the effect at the affected regions on screen
  17. Version (Updated Oct 30, 2019) is available. FPCDoom is a source port of Doom developed in Free Pascal / Lazarus. Donwloads: Executable: https://sourceforge.net/projects/fpcdoom/files/FPCDoom_1.12.1.76/FPCDoom_1.12.1.76_bin.zip/download Source code: https://sourceforge.net/projects/fpcdoom/files/FPCDoom_1.12.1.76/FPCDoom_1.12.1.76_src.zip/download New features since latest release: Rendering: Improved dynamic lights (using ZDoom light definitions) Multiple CPU cores utilization Palette post processing effects (grayscale modes & standard palettes) Mirror mode with demo compatibility Add-On content: Fixes to the PNG texture loading (re-using code from DelphiDoom) Better support for midi files (re-using code from DelphiDoom) User Interface: X-Axis & Y-Axis mouse sensitivity Key bindings for player control Menu improvements Screenshots: Dynamic lights: Palette post processing - Standard palette RGB444: Palette post processing - Standard palette RGB444: Palette post processing - Grayscale: Key bindings menu: Mirror modes:
  18. Actually that was easy:
  19. key bindings menu is in my near future plans. I think I can use some ideas from prboom+/boom m_menu.c . (Some times I regret that I used the original linux C source as a base and not boom). About mouse I think I can put a sensitivity multiplier for both X & Y axis (eg from 0% to 200%).
  20. Version is available. DOWNLOAD LINKS: Executable (Also includes launcher, the DD_IDE tool and the script command line compiler - ddc) Source Code Latest improvements: Voxels: Added support for slab6 VOX voxels. Now recornizes kvx voxels inside the VX_START/VX_END namespace. For debugging purposes added vox_exportlightmap console command (OpenGL version only). Exports the current lightmap into a ddvox voxel. OpenGL Rendering: Limit OpenGL framerate to monitor refresh rate is now preserved and executed right from defaults. Lower memory utilization for OpenGL renderer (visplane declaration does not include the unneeded for the gl renderer visindex arrays). Game Logic: Added 'CANPASS' alias for 'PASSMOBJ' flag in ACTORDEF definitions. Added pushfactor mobjinfo field. It determines how much a PUSHABLE mobj can be pushed. Default is FRACUNIT div 4 (25% of pusher speed) Added PS_GetMobjInfoPushFactor PascalScript function. Returns the PushFactor of mobjinfo. Parse SNDINFO & SNDINFO.txt entries from PK3 files. Fixes to SNDINFO parsing. A_Jump* mobjinfo functions will check if parameter is a label and jump to it. We can now define interval for THINKERs inside ACTORDEF lumps. Example using the THINKER keyword can be downloaded here. Added A_RandomGoto & A_ResetHealth ACTORDEF functions. User Interface: We can use PG_UP & PG_DOWN keys in the console to view the previous messages. New Tools: PK3ENTRY: This is a command line tool that encapsulates multiple PK3 files inside a WAD file. (Download: Binary Executable, Source Code) Download at sourceforge: https://sourceforge.net/projects/delphidoom/files/DelphiDoom%202.0.4/
  21. Version 1.6.3 is available. What's new slab6 *.VOX files support. Both importing and exporting. Convert voxel to Doom, Heretic, Hexen or Strife palette. Change working palette. Quantize voxel pixels to 256 color palette. Batch convertion of ddvox files to slab6 *.VOX files. Lowest CPU utilization when idle. Fixes to mouse control movement. Fixed export sprite in PK3/ZIP file, it generated WAD file instead. Speed optimizations in export sprite using multiple CPU cores. Downloads Windows Executable and source code: https://sourceforge.net/projects/delphidoom-voxel-editor/files/DD_VOXEL_1.6.3/ Screenshots
  22. DD_VOXEL is a tool for creating voxels. Voxels created by DD_VOXEL can be used by DelphiDoom or any source port that can read slab6 VOX files. Downloads: Latest version: version 1.6.3: https://sourceforge.net/projects/delphidoom-voxel-editor/files/DD_VOXEL_1.6.3/ Examples: https://sourceforge.net/projects/delphidoom-voxel-editor/files/Examples/ Older versions: version 1.6.2: https://sourceforge.net/projects/delphidoom-voxel-editor/files/DD_VOXEL_1.6.2/ version 1.6.1: https://sourceforge.net/projects/delphidoom-voxel-editor/files/DD_VOXEL_1.6.1/ version 1.5.2: https://sourceforge.net/projects/delphidoom-voxel-editor/files/DD_VOXEL_1.5.2/ version 1.5.1: https://sourceforge.net/projects/delphidoom-voxel-editor/files/DD_VOXEL_1.5.1/ version 1.3.1: https://sourceforge.net/projects/delphidoom-voxel-editor/files/DD_VOXEL_1.3.1/ Features Simple editing (like a paint program) Imports *.KVX voxels & slab6 *.VOX files Exports *.DDMESH voxels (optimized mesh for DelphiDoom's OpenGL renderer), slab6 *.VOX files Heighmap and terrain importing Copy/Paste front, back, left, right, top and down views Optimized OpenGL rendering Sprite export (8, 16 or 32 angles) Advanced scripting (PascalScript) Screenshots: (using the Voxel Vehicles Pack 1.0) Screenshot with Height map and terrain example:
  23. jval

    Chocolate Doom

  24. jval

    PrBoom-Plus, ver.

    I suspect that textured automap need GL-Nodes.
  25. Version is available. Latest improvements include: Fixes to PNG textures, faster loading, fixed problems with latest DHDP ZLib updated to version 1.2.8 Corrected some issues with PK3ENTRY lump (long filename aliases inside WADs) OpenGL model rendering using external DLLs. Example here. This feature may be used as a loader for unsupported model formats, and it's functionality will be enriched in future releases. ACTORDEF functions parameters/declaration appear to the DD_IDE tool for all branches (Heretic, Hexen & Strife), not only Doom. Download link at sourceforge: https://sourceforge.net/projects/delphidoom/files/DelphiDoom%202.0.4/